@rangojs/router 0.0.0-experimental.9 → 0.0.0-experimental.a06372ef

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 (1101) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +884 -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 +1531 -155
  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/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +4440 -2170
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/index.named-routes.gen.ts +103 -0
  800. package/dist/vite/package-resolution.d.ts +43 -0
  801. package/dist/vite/package-resolution.d.ts.map +1 -0
  802. package/dist/vite/package-resolution.js +112 -0
  803. package/dist/vite/package-resolution.js.map +1 -0
  804. package/dist/vite/virtual-entries.d.ts +25 -0
  805. package/dist/vite/virtual-entries.d.ts.map +1 -0
  806. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  807. package/dist/vite/virtual-entries.js.map +1 -0
  808. package/package.json +69 -62
  809. package/skills/breadcrumbs/SKILL.md +250 -0
  810. package/skills/cache-guide/SKILL.md +262 -0
  811. package/skills/caching/SKILL.md +50 -21
  812. package/skills/composability/SKILL.md +172 -0
  813. package/skills/debug-manifest/SKILL.md +12 -8
  814. package/skills/document-cache/SKILL.md +18 -16
  815. package/skills/fonts/SKILL.md +6 -4
  816. package/skills/hooks/SKILL.md +333 -71
  817. package/skills/host-router/SKILL.md +218 -0
  818. package/skills/intercept/SKILL.md +131 -8
  819. package/skills/layout/SKILL.md +100 -3
  820. package/skills/links/SKILL.md +74 -15
  821. package/skills/loader/SKILL.md +388 -38
  822. package/skills/middleware/SKILL.md +171 -34
  823. package/skills/mime-routes/SKILL.md +15 -11
  824. package/skills/parallel/SKILL.md +78 -1
  825. package/skills/prerender/SKILL.md +405 -45
  826. package/skills/rango/SKILL.md +85 -21
  827. package/skills/response-routes/SKILL.md +144 -91
  828. package/skills/route/SKILL.md +226 -14
  829. package/skills/router-setup/SKILL.md +123 -30
  830. package/skills/theme/SKILL.md +9 -8
  831. package/skills/typesafety/SKILL.md +316 -87
  832. package/skills/use-cache/SKILL.md +324 -0
  833. package/src/__internal.ts +102 -4
  834. package/src/bin/rango.ts +312 -15
  835. package/src/browser/action-coordinator.ts +97 -0
  836. package/src/browser/action-response-classifier.ts +99 -0
  837. package/src/browser/event-controller.ts +87 -64
  838. package/src/browser/history-state.ts +80 -0
  839. package/src/browser/intercept-utils.ts +52 -0
  840. package/src/browser/link-interceptor.ts +24 -4
  841. package/src/browser/logging.ts +55 -0
  842. package/src/browser/merge-segment-loaders.ts +20 -12
  843. package/src/browser/navigation-bridge.ts +281 -554
  844. package/src/browser/navigation-client.ts +123 -73
  845. package/src/browser/navigation-store.ts +33 -50
  846. package/src/browser/navigation-transaction.ts +295 -0
  847. package/src/browser/network-error-handler.ts +61 -0
  848. package/src/browser/partial-update.ts +261 -309
  849. package/src/browser/prefetch/cache.ts +154 -0
  850. package/src/browser/prefetch/fetch.ts +135 -0
  851. package/src/browser/prefetch/observer.ts +65 -0
  852. package/src/browser/prefetch/policy.ts +48 -0
  853. package/src/browser/prefetch/queue.ts +88 -0
  854. package/src/browser/rango-state.ts +112 -0
  855. package/src/browser/react/Link.tsx +182 -70
  856. package/src/browser/react/NavigationProvider.tsx +51 -11
  857. package/src/browser/react/context.ts +6 -0
  858. package/src/browser/react/filter-segment-order.ts +11 -0
  859. package/src/browser/react/index.ts +12 -12
  860. package/src/browser/react/location-state-shared.ts +95 -53
  861. package/src/browser/react/location-state.ts +60 -15
  862. package/src/browser/react/mount-context.ts +6 -1
  863. package/src/browser/react/nonce-context.ts +23 -0
  864. package/src/browser/react/shallow-equal.ts +27 -0
  865. package/src/browser/react/use-action.ts +29 -51
  866. package/src/browser/react/use-client-cache.ts +5 -3
  867. package/src/browser/react/use-handle.ts +29 -70
  868. package/src/browser/react/use-link-status.ts +6 -5
  869. package/src/browser/react/use-navigation.ts +22 -63
  870. package/src/browser/react/use-params.ts +65 -0
  871. package/src/browser/react/use-pathname.ts +47 -0
  872. package/src/browser/react/use-router.ts +63 -0
  873. package/src/browser/react/use-search-params.ts +56 -0
  874. package/src/browser/react/use-segments.ts +80 -97
  875. package/src/browser/response-adapter.ts +73 -0
  876. package/src/browser/rsc-router.tsx +106 -27
  877. package/src/browser/scroll-restoration.ts +98 -38
  878. package/src/browser/segment-reconciler.ts +216 -0
  879. package/src/browser/segment-structure-assert.ts +16 -0
  880. package/src/browser/server-action-bridge.ts +504 -599
  881. package/src/browser/shallow.ts +6 -1
  882. package/src/browser/types.ts +107 -47
  883. package/src/browser/validate-redirect-origin.ts +29 -0
  884. package/src/build/generate-manifest.ts +82 -21
  885. package/src/build/generate-route-types.ts +36 -752
  886. package/src/build/index.ts +6 -5
  887. package/src/build/route-trie.ts +39 -13
  888. package/src/build/route-types/ast-helpers.ts +25 -0
  889. package/src/build/route-types/ast-route-extraction.ts +98 -0
  890. package/src/build/route-types/codegen.ts +102 -0
  891. package/src/build/route-types/include-resolution.ts +411 -0
  892. package/src/build/route-types/param-extraction.ts +48 -0
  893. package/src/build/route-types/per-module-writer.ts +128 -0
  894. package/src/build/route-types/router-processing.ts +469 -0
  895. package/src/build/route-types/scan-filter.ts +78 -0
  896. package/src/build/runtime-discovery.ts +231 -0
  897. package/src/cache/background-task.ts +34 -0
  898. package/src/cache/cache-key-utils.ts +44 -0
  899. package/src/cache/cache-policy.ts +125 -0
  900. package/src/cache/cache-runtime.ts +338 -0
  901. package/src/cache/cache-scope.ts +120 -301
  902. package/src/cache/cf/cf-cache-store.ts +119 -7
  903. package/src/cache/cf/index.ts +8 -2
  904. package/src/cache/document-cache.ts +101 -72
  905. package/src/cache/handle-capture.ts +81 -0
  906. package/src/cache/handle-snapshot.ts +41 -0
  907. package/src/cache/index.ts +0 -15
  908. package/src/cache/memory-segment-store.ts +191 -13
  909. package/src/cache/profile-registry.ts +73 -0
  910. package/src/cache/read-through-swr.ts +134 -0
  911. package/src/cache/segment-codec.ts +256 -0
  912. package/src/cache/taint.ts +98 -0
  913. package/src/cache/types.ts +72 -122
  914. package/src/client.rsc.tsx +3 -1
  915. package/src/client.tsx +84 -126
  916. package/src/component-utils.ts +4 -4
  917. package/src/components/DefaultDocument.tsx +5 -1
  918. package/src/context-var.ts +86 -0
  919. package/src/debug.ts +17 -7
  920. package/src/errors.ts +77 -7
  921. package/src/handle.ts +15 -10
  922. package/src/handles/MetaTags.tsx +73 -20
  923. package/src/handles/breadcrumbs.ts +66 -0
  924. package/src/handles/index.ts +1 -0
  925. package/src/handles/meta.ts +30 -13
  926. package/src/host/cookie-handler.ts +21 -15
  927. package/src/host/errors.ts +8 -8
  928. package/src/host/index.ts +4 -7
  929. package/src/host/pattern-matcher.ts +27 -27
  930. package/src/host/router.ts +61 -39
  931. package/src/host/testing.ts +8 -8
  932. package/src/host/types.ts +15 -7
  933. package/src/host/utils.ts +1 -1
  934. package/src/href-client.ts +65 -45
  935. package/src/index.rsc.ts +133 -21
  936. package/src/index.ts +164 -52
  937. package/src/internal-debug.ts +11 -0
  938. package/src/loader.rsc.ts +25 -143
  939. package/src/loader.ts +27 -10
  940. package/src/network-error-thrower.tsx +3 -1
  941. package/src/outlet-provider.tsx +45 -0
  942. package/src/prerender/param-hash.ts +4 -2
  943. package/src/prerender/store.ts +158 -13
  944. package/src/prerender.ts +333 -26
  945. package/src/reverse.ts +184 -121
  946. package/src/root-error-boundary.tsx +41 -29
  947. package/src/route-content-wrapper.tsx +7 -4
  948. package/src/route-definition/dsl-helpers.ts +934 -0
  949. package/src/route-definition/helper-factories.ts +200 -0
  950. package/src/route-definition/helpers-types.ts +430 -0
  951. package/src/route-definition/index.ts +52 -0
  952. package/src/route-definition/redirect.ts +93 -0
  953. package/src/route-definition.ts +1 -1431
  954. package/src/route-map-builder.ts +156 -123
  955. package/src/route-name.ts +53 -0
  956. package/src/route-types.ts +48 -9
  957. package/src/router/content-negotiation.ts +116 -0
  958. package/src/router/debug-manifest.ts +72 -0
  959. package/src/router/error-handling.ts +9 -9
  960. package/src/router/find-match.ts +158 -0
  961. package/src/router/handler-context.ts +374 -81
  962. package/src/router/intercept-resolution.ts +26 -16
  963. package/src/router/lazy-includes.ts +234 -0
  964. package/src/router/loader-resolution.ts +215 -122
  965. package/src/router/logging.ts +251 -0
  966. package/src/router/manifest.ts +83 -32
  967. package/src/router/match-api.ts +118 -119
  968. package/src/router/match-context.ts +4 -2
  969. package/src/router/match-handlers.ts +440 -0
  970. package/src/router/match-middleware/background-revalidation.ts +80 -93
  971. package/src/router/match-middleware/cache-lookup.ts +336 -84
  972. package/src/router/match-middleware/cache-store.ts +43 -24
  973. package/src/router/match-middleware/intercept-resolution.ts +45 -20
  974. package/src/router/match-middleware/segment-resolution.ts +17 -8
  975. package/src/router/match-pipelines.ts +10 -45
  976. package/src/router/match-result.ts +34 -28
  977. package/src/router/metrics.ts +235 -15
  978. package/src/router/middleware-cookies.ts +55 -0
  979. package/src/router/middleware-types.ts +222 -0
  980. package/src/router/middleware.ts +324 -367
  981. package/src/router/pattern-matching.ts +197 -41
  982. package/src/router/prerender-match.ts +402 -0
  983. package/src/router/preview-match.ts +170 -0
  984. package/src/router/revalidation.ts +137 -38
  985. package/src/router/router-context.ts +40 -21
  986. package/src/router/router-interfaces.ts +452 -0
  987. package/src/router/router-options.ts +592 -0
  988. package/src/router/router-registry.ts +24 -0
  989. package/src/router/segment-resolution/fresh.ts +570 -0
  990. package/src/router/segment-resolution/helpers.ts +263 -0
  991. package/src/router/segment-resolution/loader-cache.ts +198 -0
  992. package/src/router/segment-resolution/revalidation.ts +1242 -0
  993. package/src/router/segment-resolution/static-store.ts +67 -0
  994. package/src/router/segment-resolution.ts +21 -1315
  995. package/src/router/segment-wrappers.ts +291 -0
  996. package/src/router/telemetry-otel.ts +299 -0
  997. package/src/router/telemetry.ts +300 -0
  998. package/src/router/timeout.ts +148 -0
  999. package/src/router/trie-matching.ts +96 -29
  1000. package/src/router/types.ts +16 -9
  1001. package/src/router.ts +590 -1983
  1002. package/src/rsc/handler-context.ts +45 -0
  1003. package/src/rsc/handler.ts +652 -1015
  1004. package/src/rsc/helpers.ts +140 -6
  1005. package/src/rsc/index.ts +0 -20
  1006. package/src/rsc/loader-fetch.ts +209 -0
  1007. package/src/rsc/manifest-init.ts +86 -0
  1008. package/src/rsc/nonce.ts +14 -0
  1009. package/src/rsc/origin-guard.ts +141 -0
  1010. package/src/rsc/progressive-enhancement.ts +379 -0
  1011. package/src/rsc/response-error.ts +37 -0
  1012. package/src/rsc/response-route-handler.ts +347 -0
  1013. package/src/rsc/rsc-rendering.ts +237 -0
  1014. package/src/rsc/runtime-warnings.ts +42 -0
  1015. package/src/rsc/server-action.ts +348 -0
  1016. package/src/rsc/ssr-setup.ts +128 -0
  1017. package/src/rsc/types.ts +38 -11
  1018. package/src/search-params.ts +230 -0
  1019. package/src/segment-system.tsx +25 -13
  1020. package/src/server/context.ts +173 -48
  1021. package/src/server/cookie-store.ts +190 -0
  1022. package/src/server/fetchable-loader-store.ts +37 -0
  1023. package/src/server/handle-store.ts +94 -15
  1024. package/src/server/loader-registry.ts +15 -56
  1025. package/src/server/request-context.ts +430 -70
  1026. package/src/server.ts +35 -155
  1027. package/src/ssr/index.tsx +100 -31
  1028. package/src/static-handler.ts +114 -0
  1029. package/src/theme/ThemeProvider.tsx +21 -15
  1030. package/src/theme/ThemeScript.tsx +5 -5
  1031. package/src/theme/constants.ts +5 -2
  1032. package/src/theme/index.ts +4 -14
  1033. package/src/theme/theme-context.ts +4 -30
  1034. package/src/theme/theme-script.ts +21 -18
  1035. package/src/types/boundaries.ts +158 -0
  1036. package/src/types/cache-types.ts +198 -0
  1037. package/src/types/error-types.ts +192 -0
  1038. package/src/types/global-namespace.ts +100 -0
  1039. package/src/types/handler-context.ts +687 -0
  1040. package/src/types/index.ts +88 -0
  1041. package/src/types/loader-types.ts +183 -0
  1042. package/src/types/route-config.ts +170 -0
  1043. package/src/types/route-entry.ts +102 -0
  1044. package/src/types/segments.ts +148 -0
  1045. package/src/types.ts +1 -1757
  1046. package/src/urls/include-helper.ts +197 -0
  1047. package/src/urls/index.ts +53 -0
  1048. package/src/urls/path-helper-types.ts +339 -0
  1049. package/src/urls/path-helper.ts +329 -0
  1050. package/src/urls/pattern-types.ts +95 -0
  1051. package/src/urls/response-types.ts +106 -0
  1052. package/src/urls/type-extraction.ts +372 -0
  1053. package/src/urls/urls-function.ts +98 -0
  1054. package/src/urls.ts +1 -1282
  1055. package/src/use-loader.tsx +85 -77
  1056. package/src/vite/discovery/bundle-postprocess.ts +184 -0
  1057. package/src/vite/discovery/discover-routers.ts +344 -0
  1058. package/src/vite/discovery/prerender-collection.ts +385 -0
  1059. package/src/vite/discovery/route-types-writer.ts +258 -0
  1060. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1061. package/src/vite/discovery/state.ts +110 -0
  1062. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1063. package/src/vite/index.ts +11 -1963
  1064. package/src/vite/plugin-types.ts +131 -0
  1065. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1066. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1067. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1068. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -51
  1069. package/src/vite/plugins/expose-id-utils.ts +287 -0
  1070. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1071. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1072. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1073. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1074. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1075. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1076. package/src/vite/plugins/refresh-cmd.ts +65 -0
  1077. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1078. package/src/vite/plugins/version-injector.ts +83 -0
  1079. package/src/vite/plugins/version-plugin.ts +254 -0
  1080. package/src/vite/plugins/virtual-entries.ts +123 -0
  1081. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1082. package/src/vite/rango.ts +510 -0
  1083. package/src/vite/router-discovery.ts +785 -0
  1084. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1085. package/src/vite/utils/banner.ts +36 -0
  1086. package/src/vite/utils/bundle-analysis.ts +137 -0
  1087. package/src/vite/utils/manifest-utils.ts +70 -0
  1088. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1089. package/src/vite/utils/prerender-utils.ts +189 -0
  1090. package/src/vite/utils/shared-utils.ts +169 -0
  1091. package/CLAUDE.md +0 -43
  1092. package/src/browser/lru-cache.ts +0 -69
  1093. package/src/browser/request-controller.ts +0 -164
  1094. package/src/cache/memory-store.ts +0 -253
  1095. package/src/router.gen.ts +0 -6
  1096. package/src/urls.gen.ts +0 -8
  1097. package/src/vite/expose-handle-id.ts +0 -209
  1098. package/src/vite/expose-loader-id.ts +0 -426
  1099. package/src/vite/expose-location-state-id.ts +0 -177
  1100. package/src/vite/expose-prerender-handler-id.ts +0 -429
  1101. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -8,12 +8,93 @@ argument-hint: [middleware-name]
8
8
 
9
9
  Middleware runs before/after route handlers using the onion model.
10
10
 
11
+ ## Execution Model
12
+
13
+ Canonical semantics reference:
14
+ [docs/execution-model.md](../../docs/internal/execution-model.md)
15
+
16
+ There are two levels of middleware with different execution scopes:
17
+
18
+ ### Global middleware (`router.use()`)
19
+
20
+ Registered on the router instance. Wraps the **entire request**, including server actions, rendering, and progressive enhancement (PE) re-renders.
21
+
22
+ ```typescript
23
+ const router = createRouter<AppEnv>({})
24
+ .use(loggerMiddleware) // all routes
25
+ .use("/admin/*", authMiddleware) // pattern-scoped
26
+ .routes(urlpatterns);
27
+ ```
28
+
29
+ ### Route middleware (`middleware()` in `urls()`)
30
+
31
+ Registered inside `urls()` callback. Wraps **rendering only** -- it does NOT wrap server action execution. Actions run before route middleware, so when route middleware executes during post-action revalidation, it can observe state that the action set (cookies, context variables, headers).
32
+
33
+ ```
34
+ Request flow (with action):
35
+ global mw -> action executes -> route mw -> layout -> handler -> loaders
36
+
37
+ Request flow (no action):
38
+ global mw -> route mw -> layout -> handler -> loaders
39
+
40
+ Progressive enhancement (no-JS form POST):
41
+ global mw -> action executes -> route mw -> full page re-render
42
+ ```
43
+
44
+ The contract is: **route middleware wraps rendering regardless of transport** (JS-enabled RSC stream or no-JS HTML). During PE re-render, route middleware observes action-set state (cookies, context variables) the same way it does during JS-enabled post-action revalidation.
45
+
46
+ Revalidation is still partial. Route middleware wraps the render pass that
47
+ does happen, but it does not force unrelated outer segments to recompute.
48
+ If a child segment depends on data established by an outer handler/layout,
49
+ revalidate that outer segment too, or have the child guard/reload the
50
+ data itself.
51
+
52
+ ### Revalidation Contracts with Middleware-Backed Trees
53
+
54
+ Middleware can establish request-level context (`ctx.set`) for segments that
55
+ execute in the current render pass. It does not change partial revalidation
56
+ boundaries between handler/layout/parallel segments.
57
+
58
+ For shared segment data, use named revalidation contracts on both the producer
59
+ and consumer segments, even when middleware is present in the chain.
60
+
61
+ ```typescript
62
+ export const revalidateCartData = ({ actionId }) =>
63
+ actionId?.includes("src/actions/cart.ts#") ?? false;
64
+
65
+ layout(CartLayout, () => [
66
+ middleware(cartRenderMiddleware),
67
+ revalidate(revalidateCartData), // producer reruns
68
+ parallel(
69
+ { "@cart": CartSummary },
70
+ () => [revalidate(revalidateCartData)], // consumer reruns
71
+ ),
72
+ ]);
73
+ ```
74
+
75
+ You can package those contracts as importable helpers to avoid repeating
76
+ `revalidate(...)` at each segment:
77
+
78
+ ```typescript
79
+ import { revalidate } from "@rangojs/router";
80
+
81
+ export const revalidateCart = () => [revalidate(revalidateCartData)];
82
+
83
+ layout(CartLayout, () => [
84
+ middleware(cartRenderMiddleware),
85
+ revalidateCart(),
86
+ parallel({ "@cart": CartSummary }, () => [revalidateCart()]),
87
+ ]);
88
+ ```
89
+
90
+ Route middleware is the right place for per-route concerns that affect rendering (setting context variables for handlers, adding response headers, reading cookies set by actions). It is NOT the right place for action guards -- use global middleware for that.
91
+
11
92
  ## Basic Middleware
12
93
 
13
94
  ```typescript
14
- import { createMiddleware } from "@rangojs/router";
95
+ import type { Middleware } from "@rangojs/router";
15
96
 
16
- export const authMiddleware = createMiddleware(async (ctx, next) => {
97
+ export const authMiddleware: Middleware = async (ctx, next) => {
17
98
  const token = ctx.request.headers.get("Authorization");
18
99
 
19
100
  if (!token) {
@@ -21,10 +102,10 @@ export const authMiddleware = createMiddleware(async (ctx, next) => {
21
102
  }
22
103
 
23
104
  const user = await verifyToken(token);
24
- ctx.env.Variables.user = user;
105
+ ctx.set("user", user);
25
106
 
26
107
  await next();
27
- });
108
+ };
28
109
  ```
29
110
 
30
111
  ## Using Middleware in Routes
@@ -68,42 +149,98 @@ layout(<ShopLayout />, () => [
68
149
  ## Middleware Context
69
150
 
70
151
  ```typescript
71
- export const myMiddleware = createMiddleware(async (ctx, next) => {
152
+ export const myMiddleware: Middleware = async (ctx, next) => {
72
153
  // Access request
73
- ctx.request; // Request object
74
- ctx.url; // Parsed URL
75
- ctx.params; // Route parameters
154
+ ctx.request; // Request object
155
+ ctx.url; // Parsed URL
156
+ ctx.params; // Route parameters
76
157
 
77
- // Access environment
78
- ctx.env.Bindings.DB; // Cloudflare bindings
79
- ctx.env.Variables; // Mutable variables
158
+ // Access platform bindings (plain bindings from createRouter<TEnv>())
159
+ ctx.env.DB; // D1Database
160
+ ctx.env.KV; // KVNamespace
80
161
 
81
- // Set variables for downstream handlers
82
- ctx.env.Variables.user = { id: "123", name: "John" };
162
+ // Set variables for downstream handlers (typed via RSCRouter.Vars)
163
+ ctx.set("user", { id: "123", name: "John" });
83
164
 
84
165
  // Continue to next middleware/handler
85
166
  await next();
86
167
 
87
168
  // After handler (response intercepting)
88
169
  console.log("Handler completed");
170
+ };
171
+ ```
172
+
173
+ ### Typed context variables in middleware
174
+
175
+ Use `createVar<T>()` for type-safe data sharing between middleware and handlers:
176
+
177
+ ```typescript
178
+ import { createVar } from "@rangojs/router";
179
+ import type { Middleware } from "@rangojs/router";
180
+
181
+ interface AuthUser { id: string; email: string; role: string }
182
+ export const CurrentUser = createVar<AuthUser>();
183
+
184
+ export const authMiddleware: Middleware = async (ctx, next) => {
185
+ const token = ctx.request.headers.get("Authorization");
186
+ if (!token) throw new Response("Unauthorized", { status: 401 });
187
+
188
+ const user = await verifyToken(token);
189
+ ctx.set(CurrentUser, user); // type-checked
190
+ await next();
191
+ };
192
+
193
+ // In a handler -- typed read
194
+ import { CurrentUser } from "./middleware";
195
+
196
+ const Dashboard: Handler<"dashboard"> = (ctx) => {
197
+ const user = ctx.get(CurrentUser); // typed as AuthUser | undefined
198
+ return <DashboardPage user={user!} />;
199
+ };
200
+ ```
201
+
202
+ This works alongside `ctx.get("key")` / `ctx.set("key", value)` (global typing
203
+ via RSCRouter.Vars augmentation). Use `createVar` for route-local or feature-scoped
204
+ data; use RSCRouter.Vars for app-wide middleware state.
205
+
206
+ ## Redirect with State in Middleware
207
+
208
+ ```typescript
209
+ import { redirect, createLocationState } from "@rangojs/router";
210
+ import type { Middleware } from "@rangojs/router";
211
+
212
+ export const FlashMessage = createLocationState<{ text: string }>({
213
+ flash: true,
89
214
  });
215
+
216
+ export const requireAuthMiddleware: Middleware = async (ctx, next) => {
217
+ const token = ctx.request.headers.get("Authorization");
218
+ if (!token) {
219
+ return redirect("/login", {
220
+ state: [FlashMessage({ text: "Please log in to continue" })],
221
+ });
222
+ }
223
+ await next();
224
+ };
90
225
  ```
91
226
 
227
+ Read the flash on the target page with `useLocationState(FlashMessage)`. The `{ flash: true }` option makes it auto-clear after first render. See `/hooks`.
228
+
92
229
  ## Authentication Middleware
93
230
 
94
231
  ```typescript
95
- export const requireAuthMiddleware = createMiddleware(async (ctx, next) => {
96
- const user = ctx.env.Variables.user;
232
+ export const requireAuthMiddleware: Middleware = async (ctx, next) => {
233
+ const user = ctx.get("user");
97
234
 
98
235
  if (!user) {
99
236
  throw new Response("Unauthorized", { status: 401 });
100
237
  }
101
238
 
102
239
  await next();
103
- });
240
+ };
104
241
 
105
- export const permissionsMiddleware = createMiddleware(async (ctx, next) => {
106
- const user = ctx.env.Variables.user;
242
+ export const permissionsMiddleware: Middleware = async (ctx, next) => {
243
+ const user = ctx.get("user");
107
244
  const requiredPermission = "admin";
108
245
 
109
246
  if (!user?.permissions?.includes(requiredPermission)) {
@@ -111,13 +248,13 @@ export const permissionsMiddleware = createMiddleware(async (ctx, next) => {
111
248
  }
112
249
 
113
250
  await next();
114
- });
251
+ };
115
252
  ```
116
253
 
117
254
  ## Logger Middleware
118
255
 
119
256
  ```typescript
120
- export const loggerMiddleware = createMiddleware(async (ctx, next) => {
257
+ export const loggerMiddleware: Middleware = async (ctx, next) => {
121
258
  const start = Date.now();
122
259
 
123
260
  console.log(`[${ctx.request.method}] ${ctx.url.pathname}`);
@@ -126,54 +263,54 @@ export const loggerMiddleware = createMiddleware(async (ctx, next) => {
126
263
 
127
264
  const duration = Date.now() - start;
128
265
  console.log(`[${ctx.request.method}] ${ctx.url.pathname} - ${duration}ms`);
129
- });
266
+ };
130
267
  ```
131
268
 
132
269
  ## Rate Limiting Middleware
133
270
 
134
271
  ```typescript
135
- export const rateLimitMiddleware = createMiddleware(async (ctx, next) => {
272
+ export const rateLimitMiddleware: Middleware = async (ctx, next) => {
136
273
  const ip = ctx.request.headers.get("CF-Connecting-IP") ?? "unknown";
137
274
  const key = `rate-limit:${ip}`;
138
275
 
139
- const count = await ctx.env.Bindings.KV.get(key);
276
+ const count = await ctx.env.KV.get(key);
140
277
  const requests = count ? parseInt(count) : 0;
141
278
 
142
279
  if (requests > 100) {
143
280
  throw new Response("Too Many Requests", { status: 429 });
144
281
  }
145
282
 
146
- await ctx.env.Bindings.KV.put(key, String(requests + 1), {
283
+ await ctx.env.KV.put(key, String(requests + 1), {
147
284
  expirationTtl: 60,
148
285
  });
149
286
 
150
287
  await next();
151
- });
288
+ };
152
289
  ```
153
290
 
154
291
  ## Complete Example
155
292
 
156
293
  ```typescript
157
294
  // middleware/index.ts
158
- import { createMiddleware } from "@rangojs/router";
295
+ import type { Middleware } from "@rangojs/router";
159
296
 
160
- export const loggerMiddleware = createMiddleware(async (ctx, next) => {
297
+ export const loggerMiddleware: Middleware = async (ctx, next) => {
161
298
  console.log(`[${ctx.request.method}] ${ctx.url.pathname}`);
162
299
  await next();
163
- });
300
+ };
164
301
 
165
- export const mockAuthMiddleware = createMiddleware(async (ctx, next) => {
302
+ export const mockAuthMiddleware: Middleware = async (ctx, next) => {
166
303
  // Mock user for development
167
- ctx.env.Variables.user = { id: "1", name: "Demo User" };
304
+ ctx.set("user", { id: "1", name: "Demo User" });
168
305
  await next();
169
- });
306
+ };
170
307
 
171
- export const requireAuthMiddleware = createMiddleware(async (ctx, next) => {
172
- if (!ctx.env.Variables.user) {
308
+ export const requireAuthMiddleware: Middleware = async (ctx, next) => {
309
+ if (!ctx.get("user")) {
173
310
  throw new Response("Unauthorized", { status: 401 });
174
311
  }
175
312
  await next();
176
- });
313
+ };
177
314
 
178
315
  // urls.tsx
179
316
  import { urls } from "@rangojs/router";
@@ -18,14 +18,18 @@ Declare the same URL pattern with both an RSC route and one or more response-typ
18
18
  Order within the `urls()` array does not matter — the trie merges them at build time.
19
19
 
20
20
  ```typescript
21
- import { urls } from "@rangojs/router/server";
21
+ import { urls } from "@rangojs/router";
22
22
 
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
@@ -8,6 +8,9 @@ argument-hint: [@slot-name]
8
8
 
9
9
  Parallel routes render multiple components simultaneously in named slots.
10
10
 
11
+ Canonical semantics reference:
12
+ [docs/execution-model.md](../../docs/internal/execution-model.md)
13
+
11
14
  ## Basic Parallel Routes
12
15
 
13
16
  ```typescript
@@ -54,6 +57,41 @@ parallel({
54
57
  })
55
58
  ```
56
59
 
60
+ ## Reading Handler Data
61
+
62
+ Parallels can read `ctx.set()` values from their parent handler or layout
63
+ via `ctx.get()`. The handler always executes before its parallels
64
+ (handler-first).
65
+
66
+ Visibility follows tree structure:
67
+
68
+ - Layout-level parallels see layout data, but not path handler data
69
+ (the path is a separate entry).
70
+ - Parallels inside a path (or its orphan layouts) see both layout and
71
+ path handler data.
72
+
73
+ This applies to full render passes. During partial action revalidation,
74
+ only revalidated segments are recomputed. If a parallel depends on data
75
+ set by an outer handler or layout, revalidate that outer segment too, or
76
+ have the parallel reload/guard the data itself.
77
+
78
+ ```typescript
79
+ path("/dashboard/:id", (ctx) => {
80
+ const user = await getUser(ctx.params.id);
81
+ ctx.set("user", user);
82
+ return <DashboardPage user={user} />;
83
+ }, { name: "dashboard" }, () => [
84
+ layout(DashboardLayout, () => [
85
+ parallel({
86
+ "@sidebar": (ctx) => {
87
+ const user = ctx.get("user");
88
+ return <Sidebar role={user?.role} />;
89
+ },
90
+ }),
91
+ ]),
92
+ ])
93
+ ```
94
+
57
95
  ## Parallel Routes with Loaders
58
96
 
59
97
  Add loaders and loading states to parallel routes:
@@ -97,7 +135,7 @@ Render different content based on context:
97
135
  ```typescript
98
136
  parallel({
99
137
  "@sidebar": (ctx) => {
100
- const user = ctx.env.Variables.user;
138
+ const user = ctx.get("user");
101
139
  return user ? <UserSidebar user={user} /> : <GuestSidebar />;
102
140
  },
103
141
  })
@@ -120,6 +158,45 @@ parallel(
120
158
  )
121
159
  ```
122
160
 
161
+ Revalidating only the parallel does not re-run outer handlers/layouts.
162
+ If the slot reads `ctx.get()` data established above it, opt the outer
163
+ segment into revalidation as well.
164
+
165
+ ### Revalidation Contracts for Parallel Dependencies
166
+
167
+ Prefer named revalidation contracts shared by both the upstream producer and
168
+ the parallel consumer:
169
+
170
+ ```typescript
171
+ // revalidation-contracts.ts
172
+ export const revalidateCartData = ({ actionId }) =>
173
+ actionId?.includes("src/actions/cart.ts#") ?? false;
174
+
175
+ layout(CartLayout, () => [
176
+ revalidate(revalidateCartData), // producer reruns
177
+ parallel(
178
+ { "@cart": CartSummary },
179
+ () => [revalidate(revalidateCartData)], // consumer reruns
180
+ ),
181
+ ]);
182
+ ```
183
+
184
+ If the slot consumes multiple upstream domains, compose the contracts on both
185
+ segments.
186
+
187
+ Handoff helper style also works:
188
+
189
+ ```typescript
190
+ import { revalidate } from "@rangojs/router";
191
+
192
+ export const revalidateCart = () => [revalidate(revalidateCartData)];
193
+
194
+ layout(CartLayout, () => [
195
+ revalidateCart(),
196
+ parallel({ "@cart": CartSummary }, () => [revalidateCart()]),
197
+ ]);
198
+ ```
199
+
123
200
  ## Named Outlets
124
201
 
125
202
  Use `ParallelOutlet` to render slots in layouts: