@rangojs/router 0.0.0-experimental.debug-cache-fix → 0.0.0-experimental.df7974ff

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 (979) hide show
  1. package/README.md +188 -35
  2. package/dist/__internal.d.ts +83 -0
  3. package/dist/__internal.d.ts.map +1 -0
  4. package/dist/__internal.js +19 -0
  5. package/dist/__internal.js.map +1 -0
  6. package/dist/__mocks__/version.d.ts +7 -0
  7. package/dist/__mocks__/version.d.ts.map +1 -0
  8. package/dist/__mocks__/version.js +7 -0
  9. package/dist/__mocks__/version.js.map +1 -0
  10. package/dist/__tests__/client-href.test.d.ts +2 -0
  11. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  12. package/dist/__tests__/client-href.test.js +74 -0
  13. package/dist/__tests__/client-href.test.js.map +1 -0
  14. package/dist/__tests__/component-utils.test.d.ts +2 -0
  15. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  16. package/dist/__tests__/component-utils.test.js +51 -0
  17. package/dist/__tests__/component-utils.test.js.map +1 -0
  18. package/dist/__tests__/event-controller.test.d.ts +2 -0
  19. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  20. package/dist/__tests__/event-controller.test.js +538 -0
  21. package/dist/__tests__/event-controller.test.js.map +1 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  24. package/dist/__tests__/helpers/route-tree.js +374 -0
  25. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  26. package/dist/__tests__/match-result.test.d.ts +2 -0
  27. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  28. package/dist/__tests__/match-result.test.js +154 -0
  29. package/dist/__tests__/match-result.test.js.map +1 -0
  30. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  31. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  32. package/dist/__tests__/navigation-store.test.js +440 -0
  33. package/dist/__tests__/navigation-store.test.js.map +1 -0
  34. package/dist/__tests__/partial-update.test.d.ts +2 -0
  35. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  36. package/dist/__tests__/partial-update.test.js +1009 -0
  37. package/dist/__tests__/partial-update.test.js.map +1 -0
  38. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  39. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  40. package/dist/__tests__/reverse-types.test.js +656 -0
  41. package/dist/__tests__/reverse-types.test.js.map +1 -0
  42. package/dist/__tests__/route-definition.test.d.ts +2 -0
  43. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  44. package/dist/__tests__/route-definition.test.js +55 -0
  45. package/dist/__tests__/route-definition.test.js.map +1 -0
  46. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  47. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  48. package/dist/__tests__/router-helpers.test.js +377 -0
  49. package/dist/__tests__/router-helpers.test.js.map +1 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  52. package/dist/__tests__/router-integration-2.test.js +426 -0
  53. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  54. package/dist/__tests__/router-integration.test.d.ts +2 -0
  55. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  56. package/dist/__tests__/router-integration.test.js +1051 -0
  57. package/dist/__tests__/router-integration.test.js.map +1 -0
  58. package/dist/__tests__/search-params.test.d.ts +5 -0
  59. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  60. package/dist/__tests__/search-params.test.js +306 -0
  61. package/dist/__tests__/search-params.test.js.map +1 -0
  62. package/dist/__tests__/segment-system.test.d.ts +2 -0
  63. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  64. package/dist/__tests__/segment-system.test.js +627 -0
  65. package/dist/__tests__/segment-system.test.js.map +1 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  68. package/dist/__tests__/static-handler-types.test.js +63 -0
  69. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  70. package/dist/__tests__/urls.test.d.ts +2 -0
  71. package/dist/__tests__/urls.test.d.ts.map +1 -0
  72. package/dist/__tests__/urls.test.js +421 -0
  73. package/dist/__tests__/urls.test.js.map +1 -0
  74. package/dist/__tests__/use-mount.test.d.ts +2 -0
  75. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  76. package/dist/__tests__/use-mount.test.js +35 -0
  77. package/dist/__tests__/use-mount.test.js.map +1 -0
  78. package/dist/bin/rango.d.ts +2 -0
  79. package/dist/bin/rango.d.ts.map +1 -0
  80. package/dist/bin/rango.js +130 -47
  81. package/dist/bin/rango.js.map +1 -0
  82. package/dist/browser/event-controller.d.ts +191 -0
  83. package/dist/browser/event-controller.d.ts.map +1 -0
  84. package/dist/browser/event-controller.js +559 -0
  85. package/dist/browser/event-controller.js.map +1 -0
  86. package/dist/browser/index.d.ts +2 -0
  87. package/dist/browser/index.d.ts.map +1 -0
  88. package/dist/browser/index.js +14 -0
  89. package/dist/browser/index.js.map +1 -0
  90. package/dist/browser/link-interceptor.d.ts +38 -0
  91. package/dist/browser/link-interceptor.d.ts.map +1 -0
  92. package/dist/browser/link-interceptor.js +99 -0
  93. package/dist/browser/link-interceptor.js.map +1 -0
  94. package/dist/browser/logging.d.ts +10 -0
  95. package/dist/browser/logging.d.ts.map +1 -0
  96. package/dist/browser/logging.js +29 -0
  97. package/dist/browser/logging.js.map +1 -0
  98. package/dist/browser/lru-cache.d.ts +17 -0
  99. package/dist/browser/lru-cache.d.ts.map +1 -0
  100. package/dist/browser/lru-cache.js +50 -0
  101. package/dist/browser/lru-cache.js.map +1 -0
  102. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  103. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  104. package/dist/browser/merge-segment-loaders.js +102 -0
  105. package/dist/browser/merge-segment-loaders.js.map +1 -0
  106. package/dist/browser/navigation-bridge.d.ts +102 -0
  107. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  108. package/dist/browser/navigation-bridge.js +708 -0
  109. package/dist/browser/navigation-bridge.js.map +1 -0
  110. package/dist/browser/navigation-client.d.ts +25 -0
  111. package/dist/browser/navigation-client.d.ts.map +1 -0
  112. package/dist/browser/navigation-client.js +157 -0
  113. package/dist/browser/navigation-client.js.map +1 -0
  114. package/dist/browser/navigation-store.d.ts +101 -0
  115. package/dist/browser/navigation-store.d.ts.map +1 -0
  116. package/dist/browser/navigation-store.js +625 -0
  117. package/dist/browser/navigation-store.js.map +1 -0
  118. package/dist/browser/partial-update.d.ts +75 -0
  119. package/dist/browser/partial-update.d.ts.map +1 -0
  120. package/dist/browser/partial-update.js +426 -0
  121. package/dist/browser/partial-update.js.map +1 -0
  122. package/dist/browser/react/Link.d.ts +86 -0
  123. package/dist/browser/react/Link.d.ts.map +1 -0
  124. package/dist/browser/react/Link.js +128 -0
  125. package/dist/browser/react/Link.js.map +1 -0
  126. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  127. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  128. package/dist/browser/react/NavigationProvider.js +216 -0
  129. package/dist/browser/react/NavigationProvider.js.map +1 -0
  130. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  132. package/dist/browser/react/ScrollRestoration.js +57 -0
  133. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  134. package/dist/browser/react/context.d.ts +46 -0
  135. package/dist/browser/react/context.d.ts.map +1 -0
  136. package/dist/browser/react/context.js +10 -0
  137. package/dist/browser/react/context.js.map +1 -0
  138. package/dist/browser/react/index.d.ts +11 -0
  139. package/dist/browser/react/index.d.ts.map +1 -0
  140. package/dist/browser/react/index.js +22 -0
  141. package/dist/browser/react/index.js.map +1 -0
  142. package/dist/browser/react/location-state-shared.d.ts +63 -0
  143. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  144. package/dist/browser/react/location-state-shared.js +81 -0
  145. package/dist/browser/react/location-state-shared.js.map +1 -0
  146. package/dist/browser/react/location-state.d.ts +23 -0
  147. package/dist/browser/react/location-state.d.ts.map +1 -0
  148. package/dist/browser/react/location-state.js +29 -0
  149. package/dist/browser/react/location-state.js.map +1 -0
  150. package/dist/browser/react/mount-context.d.ts +24 -0
  151. package/dist/browser/react/mount-context.d.ts.map +1 -0
  152. package/dist/browser/react/mount-context.js +24 -0
  153. package/dist/browser/react/mount-context.js.map +1 -0
  154. package/dist/browser/react/use-action.d.ts +64 -0
  155. package/dist/browser/react/use-action.d.ts.map +1 -0
  156. package/dist/browser/react/use-action.js +134 -0
  157. package/dist/browser/react/use-action.js.map +1 -0
  158. package/dist/browser/react/use-client-cache.d.ts +41 -0
  159. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  160. package/dist/browser/react/use-client-cache.js +39 -0
  161. package/dist/browser/react/use-client-cache.js.map +1 -0
  162. package/dist/browser/react/use-handle.d.ts +31 -0
  163. package/dist/browser/react/use-handle.d.ts.map +1 -0
  164. package/dist/browser/react/use-handle.js +144 -0
  165. package/dist/browser/react/use-handle.js.map +1 -0
  166. package/dist/browser/react/use-href.d.ts +33 -0
  167. package/dist/browser/react/use-href.d.ts.map +1 -0
  168. package/dist/browser/react/use-href.js +39 -0
  169. package/dist/browser/react/use-href.js.map +1 -0
  170. package/dist/browser/react/use-link-status.d.ts +37 -0
  171. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  172. package/dist/browser/react/use-link-status.js +99 -0
  173. package/dist/browser/react/use-link-status.js.map +1 -0
  174. package/dist/browser/react/use-mount.d.ts +25 -0
  175. package/dist/browser/react/use-mount.d.ts.map +1 -0
  176. package/dist/browser/react/use-mount.js +30 -0
  177. package/dist/browser/react/use-mount.js.map +1 -0
  178. package/dist/browser/react/use-navigation.d.ts +27 -0
  179. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  180. package/dist/browser/react/use-navigation.js +87 -0
  181. package/dist/browser/react/use-navigation.js.map +1 -0
  182. package/dist/browser/react/use-segments.d.ts +38 -0
  183. package/dist/browser/react/use-segments.d.ts.map +1 -0
  184. package/dist/browser/react/use-segments.js +130 -0
  185. package/dist/browser/react/use-segments.js.map +1 -0
  186. package/dist/browser/request-controller.d.ts +26 -0
  187. package/dist/browser/request-controller.d.ts.map +1 -0
  188. package/dist/browser/request-controller.js +147 -0
  189. package/dist/browser/request-controller.js.map +1 -0
  190. package/dist/browser/rsc-router.d.ts +129 -0
  191. package/dist/browser/rsc-router.d.ts.map +1 -0
  192. package/dist/browser/rsc-router.js +195 -0
  193. package/dist/browser/rsc-router.js.map +1 -0
  194. package/dist/browser/scroll-restoration.d.ts +93 -0
  195. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  196. package/dist/browser/scroll-restoration.js +321 -0
  197. package/dist/browser/scroll-restoration.js.map +1 -0
  198. package/dist/browser/segment-structure-assert.d.ts +17 -0
  199. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  200. package/dist/browser/segment-structure-assert.js +59 -0
  201. package/dist/browser/segment-structure-assert.js.map +1 -0
  202. package/dist/browser/server-action-bridge.d.ts +26 -0
  203. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  204. package/dist/browser/server-action-bridge.js +668 -0
  205. package/dist/browser/server-action-bridge.js.map +1 -0
  206. package/dist/browser/shallow.d.ts +12 -0
  207. package/dist/browser/shallow.d.ts.map +1 -0
  208. package/dist/browser/shallow.js +34 -0
  209. package/dist/browser/shallow.js.map +1 -0
  210. package/dist/browser/types.d.ts +369 -0
  211. package/dist/browser/types.d.ts.map +1 -0
  212. package/dist/browser/types.js +2 -0
  213. package/dist/browser/types.js.map +1 -0
  214. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  216. package/dist/build/__tests__/generate-cli.test.js +237 -0
  217. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  218. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  220. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  221. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  222. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  224. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  225. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  226. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  228. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  230. package/dist/build/generate-manifest.d.ts +81 -0
  231. package/dist/build/generate-manifest.d.ts.map +1 -0
  232. package/dist/build/generate-manifest.js +276 -0
  233. package/dist/build/generate-manifest.js.map +1 -0
  234. package/dist/build/generate-route-types.d.ts +115 -0
  235. package/dist/build/generate-route-types.d.ts.map +1 -0
  236. package/dist/build/generate-route-types.js +740 -0
  237. package/dist/build/generate-route-types.js.map +1 -0
  238. package/dist/build/index.d.ts +21 -0
  239. package/dist/build/index.d.ts.map +1 -0
  240. package/dist/build/index.js +21 -0
  241. package/dist/build/index.js.map +1 -0
  242. package/dist/build/route-trie.d.ts +71 -0
  243. package/dist/build/route-trie.d.ts.map +1 -0
  244. package/dist/build/route-trie.js +175 -0
  245. package/dist/build/route-trie.js.map +1 -0
  246. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  248. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  249. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  250. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  252. package/dist/cache/__tests__/document-cache.test.js +345 -0
  253. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  258. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  260. package/dist/cache/__tests__/memory-store.test.js +367 -0
  261. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  262. package/dist/cache/cache-scope.d.ts +102 -0
  263. package/dist/cache/cache-scope.d.ts.map +1 -0
  264. package/dist/cache/cache-scope.js +440 -0
  265. package/dist/cache/cache-scope.js.map +1 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  270. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  272. package/dist/cache/cf/cf-cache-store.js +242 -0
  273. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  274. package/dist/cache/cf/index.d.ts +14 -0
  275. package/dist/cache/cf/index.d.ts.map +1 -0
  276. package/dist/cache/cf/index.js +17 -0
  277. package/dist/cache/cf/index.js.map +1 -0
  278. package/dist/cache/document-cache.d.ts +64 -0
  279. package/dist/cache/document-cache.d.ts.map +1 -0
  280. package/dist/cache/document-cache.js +228 -0
  281. package/dist/cache/document-cache.js.map +1 -0
  282. package/dist/cache/index.d.ts +19 -0
  283. package/dist/cache/index.d.ts.map +1 -0
  284. package/dist/cache/index.js +21 -0
  285. package/dist/cache/index.js.map +1 -0
  286. package/dist/cache/memory-segment-store.d.ts +110 -0
  287. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  288. package/dist/cache/memory-segment-store.js +117 -0
  289. package/dist/cache/memory-segment-store.js.map +1 -0
  290. package/dist/cache/memory-store.d.ts +41 -0
  291. package/dist/cache/memory-store.d.ts.map +1 -0
  292. package/dist/cache/memory-store.js +191 -0
  293. package/dist/cache/memory-store.js.map +1 -0
  294. package/dist/cache/types.d.ts +317 -0
  295. package/dist/cache/types.d.ts.map +1 -0
  296. package/dist/cache/types.js +12 -0
  297. package/dist/cache/types.js.map +1 -0
  298. package/dist/client.d.ts +248 -0
  299. package/dist/client.d.ts.map +1 -0
  300. package/dist/client.js +367 -0
  301. package/dist/client.js.map +1 -0
  302. package/dist/client.rsc.d.ts +26 -0
  303. package/dist/client.rsc.d.ts.map +1 -0
  304. package/dist/client.rsc.js +46 -0
  305. package/dist/client.rsc.js.map +1 -0
  306. package/dist/component-utils.d.ts +36 -0
  307. package/dist/component-utils.d.ts.map +1 -0
  308. package/dist/component-utils.js +61 -0
  309. package/dist/component-utils.js.map +1 -0
  310. package/dist/components/DefaultDocument.d.ts +13 -0
  311. package/dist/components/DefaultDocument.d.ts.map +1 -0
  312. package/dist/components/DefaultDocument.js +15 -0
  313. package/dist/components/DefaultDocument.js.map +1 -0
  314. package/dist/debug.d.ts +58 -0
  315. package/dist/debug.d.ts.map +1 -0
  316. package/dist/debug.js +157 -0
  317. package/dist/debug.js.map +1 -0
  318. package/dist/default-error-boundary.d.ts +11 -0
  319. package/dist/default-error-boundary.d.ts.map +1 -0
  320. package/dist/default-error-boundary.js +45 -0
  321. package/dist/default-error-boundary.js.map +1 -0
  322. package/dist/deps/browser.d.ts +2 -0
  323. package/dist/deps/browser.d.ts.map +1 -0
  324. package/dist/deps/browser.js +3 -0
  325. package/dist/deps/browser.js.map +1 -0
  326. package/dist/deps/html-stream-client.d.ts +2 -0
  327. package/dist/deps/html-stream-client.d.ts.map +1 -0
  328. package/dist/deps/html-stream-client.js +3 -0
  329. package/dist/deps/html-stream-client.js.map +1 -0
  330. package/dist/deps/html-stream-server.d.ts +2 -0
  331. package/dist/deps/html-stream-server.d.ts.map +1 -0
  332. package/dist/deps/html-stream-server.js +3 -0
  333. package/dist/deps/html-stream-server.js.map +1 -0
  334. package/dist/deps/rsc.d.ts +2 -0
  335. package/dist/deps/rsc.d.ts.map +1 -0
  336. package/dist/deps/rsc.js +4 -0
  337. package/dist/deps/rsc.js.map +1 -0
  338. package/dist/deps/ssr.d.ts +2 -0
  339. package/dist/deps/ssr.d.ts.map +1 -0
  340. package/dist/deps/ssr.js +3 -0
  341. package/dist/deps/ssr.js.map +1 -0
  342. package/dist/errors.d.ts +174 -0
  343. package/dist/errors.d.ts.map +1 -0
  344. package/dist/errors.js +241 -0
  345. package/dist/errors.js.map +1 -0
  346. package/dist/handle.d.ts +78 -0
  347. package/dist/handle.d.ts.map +1 -0
  348. package/dist/handle.js +82 -0
  349. package/dist/handle.js.map +1 -0
  350. package/dist/handles/MetaTags.d.ts +14 -0
  351. package/dist/handles/MetaTags.d.ts.map +1 -0
  352. package/dist/handles/MetaTags.js +136 -0
  353. package/dist/handles/MetaTags.js.map +1 -0
  354. package/dist/handles/index.d.ts +6 -0
  355. package/dist/handles/index.d.ts.map +1 -0
  356. package/dist/handles/index.js +6 -0
  357. package/dist/handles/index.js.map +1 -0
  358. package/dist/handles/meta.d.ts +39 -0
  359. package/dist/handles/meta.d.ts.map +1 -0
  360. package/dist/handles/meta.js +202 -0
  361. package/dist/handles/meta.js.map +1 -0
  362. package/dist/host/__tests__/errors.test.d.ts +2 -0
  363. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  364. package/dist/host/__tests__/errors.test.js +76 -0
  365. package/dist/host/__tests__/errors.test.js.map +1 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  370. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  372. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  374. package/dist/host/__tests__/router.test.d.ts +2 -0
  375. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  376. package/dist/host/__tests__/router.test.js +241 -0
  377. package/dist/host/__tests__/router.test.js.map +1 -0
  378. package/dist/host/__tests__/testing.test.d.ts +2 -0
  379. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  380. package/dist/host/__tests__/testing.test.js +64 -0
  381. package/dist/host/__tests__/testing.test.js.map +1 -0
  382. package/dist/host/__tests__/utils.test.d.ts +2 -0
  383. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  384. package/dist/host/__tests__/utils.test.js +29 -0
  385. package/dist/host/__tests__/utils.test.js.map +1 -0
  386. package/dist/host/cookie-handler.d.ts +34 -0
  387. package/dist/host/cookie-handler.d.ts.map +1 -0
  388. package/dist/host/cookie-handler.js +124 -0
  389. package/dist/host/cookie-handler.js.map +1 -0
  390. package/dist/host/errors.d.ts +56 -0
  391. package/dist/host/errors.d.ts.map +1 -0
  392. package/dist/host/errors.js +79 -0
  393. package/dist/host/errors.js.map +1 -0
  394. package/dist/host/index.d.ts +29 -0
  395. package/dist/host/index.d.ts.map +1 -0
  396. package/dist/host/index.js +32 -0
  397. package/dist/host/index.js.map +1 -0
  398. package/dist/host/pattern-matcher.d.ts +36 -0
  399. package/dist/host/pattern-matcher.d.ts.map +1 -0
  400. package/dist/host/pattern-matcher.js +172 -0
  401. package/dist/host/pattern-matcher.js.map +1 -0
  402. package/dist/host/router.d.ts +26 -0
  403. package/dist/host/router.d.ts.map +1 -0
  404. package/dist/host/router.js +218 -0
  405. package/dist/host/router.js.map +1 -0
  406. package/dist/host/testing.d.ts +36 -0
  407. package/dist/host/testing.d.ts.map +1 -0
  408. package/dist/host/testing.js +55 -0
  409. package/dist/host/testing.js.map +1 -0
  410. package/dist/host/types.d.ts +115 -0
  411. package/dist/host/types.d.ts.map +1 -0
  412. package/dist/host/types.js +7 -0
  413. package/dist/host/types.js.map +1 -0
  414. package/dist/host/utils.d.ts +21 -0
  415. package/dist/host/utils.d.ts.map +1 -0
  416. package/dist/host/utils.js +23 -0
  417. package/dist/host/utils.js.map +1 -0
  418. package/dist/href-client.d.ts +131 -0
  419. package/dist/href-client.d.ts.map +1 -0
  420. package/dist/href-client.js +64 -0
  421. package/dist/href-client.js.map +1 -0
  422. package/dist/href-context.d.ts +29 -0
  423. package/dist/href-context.d.ts.map +1 -0
  424. package/dist/href-context.js +21 -0
  425. package/dist/href-context.js.map +1 -0
  426. package/dist/index.d.ts +73 -0
  427. package/dist/index.d.ts.map +1 -0
  428. package/dist/index.js +91 -0
  429. package/dist/index.js.map +1 -0
  430. package/dist/index.rsc.d.ts +32 -0
  431. package/dist/index.rsc.d.ts.map +1 -0
  432. package/dist/index.rsc.js +40 -0
  433. package/dist/index.rsc.js.map +1 -0
  434. package/dist/internal-debug.d.ts +2 -0
  435. package/dist/internal-debug.d.ts.map +1 -0
  436. package/dist/internal-debug.js +5 -0
  437. package/dist/internal-debug.js.map +1 -0
  438. package/dist/loader.d.ts +14 -0
  439. package/dist/loader.d.ts.map +1 -0
  440. package/dist/loader.js +20 -0
  441. package/dist/loader.js.map +1 -0
  442. package/dist/loader.rsc.d.ts +19 -0
  443. package/dist/loader.rsc.d.ts.map +1 -0
  444. package/dist/loader.rsc.js +99 -0
  445. package/dist/loader.rsc.js.map +1 -0
  446. package/dist/network-error-thrower.d.ts +17 -0
  447. package/dist/network-error-thrower.d.ts.map +1 -0
  448. package/dist/network-error-thrower.js +14 -0
  449. package/dist/network-error-thrower.js.map +1 -0
  450. package/dist/outlet-context.d.ts +13 -0
  451. package/dist/outlet-context.d.ts.map +1 -0
  452. package/dist/outlet-context.js +3 -0
  453. package/dist/outlet-context.js.map +1 -0
  454. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  456. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  457. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  458. package/dist/prerender/param-hash.d.ts +16 -0
  459. package/dist/prerender/param-hash.d.ts.map +1 -0
  460. package/dist/prerender/param-hash.js +36 -0
  461. package/dist/prerender/param-hash.js.map +1 -0
  462. package/dist/prerender/store.d.ts +38 -0
  463. package/dist/prerender/store.d.ts.map +1 -0
  464. package/dist/prerender/store.js +61 -0
  465. package/dist/prerender/store.js.map +1 -0
  466. package/dist/prerender.d.ts +66 -0
  467. package/dist/prerender.d.ts.map +1 -0
  468. package/dist/prerender.js +57 -0
  469. package/dist/prerender.js.map +1 -0
  470. package/dist/reverse.d.ts +196 -0
  471. package/dist/reverse.d.ts.map +1 -0
  472. package/dist/reverse.js +78 -0
  473. package/dist/reverse.js.map +1 -0
  474. package/dist/root-error-boundary.d.ts +33 -0
  475. package/dist/root-error-boundary.d.ts.map +1 -0
  476. package/dist/root-error-boundary.js +165 -0
  477. package/dist/root-error-boundary.js.map +1 -0
  478. package/dist/route-content-wrapper.d.ts +46 -0
  479. package/dist/route-content-wrapper.d.ts.map +1 -0
  480. package/dist/route-content-wrapper.js +77 -0
  481. package/dist/route-content-wrapper.js.map +1 -0
  482. package/dist/route-definition.d.ts +421 -0
  483. package/dist/route-definition.d.ts.map +1 -0
  484. package/dist/route-definition.js +868 -0
  485. package/dist/route-definition.js.map +1 -0
  486. package/dist/route-map-builder.d.ts +155 -0
  487. package/dist/route-map-builder.d.ts.map +1 -0
  488. package/dist/route-map-builder.js +237 -0
  489. package/dist/route-map-builder.js.map +1 -0
  490. package/dist/route-types.d.ts +165 -0
  491. package/dist/route-types.d.ts.map +1 -0
  492. package/dist/route-types.js +7 -0
  493. package/dist/route-types.js.map +1 -0
  494. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  496. package/dist/router/__tests__/handler-context.test.js +65 -0
  497. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  502. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  503. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  504. package/dist/router/__tests__/match-context.test.js +92 -0
  505. package/dist/router/__tests__/match-context.test.js.map +1 -0
  506. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  508. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  509. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  510. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  511. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  512. package/dist/router/__tests__/match-result.test.js +457 -0
  513. package/dist/router/__tests__/match-result.test.js.map +1 -0
  514. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  515. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  516. package/dist/router/__tests__/on-error.test.js +678 -0
  517. package/dist/router/__tests__/on-error.test.js.map +1 -0
  518. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  520. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  521. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  526. package/dist/router/error-handling.d.ts +77 -0
  527. package/dist/router/error-handling.d.ts.map +1 -0
  528. package/dist/router/error-handling.js +202 -0
  529. package/dist/router/error-handling.js.map +1 -0
  530. package/dist/router/handler-context.d.ts +20 -0
  531. package/dist/router/handler-context.d.ts.map +1 -0
  532. package/dist/router/handler-context.js +198 -0
  533. package/dist/router/handler-context.js.map +1 -0
  534. package/dist/router/intercept-resolution.d.ts +66 -0
  535. package/dist/router/intercept-resolution.d.ts.map +1 -0
  536. package/dist/router/intercept-resolution.js +246 -0
  537. package/dist/router/intercept-resolution.js.map +1 -0
  538. package/dist/router/loader-resolution.d.ts +64 -0
  539. package/dist/router/loader-resolution.d.ts.map +1 -0
  540. package/dist/router/loader-resolution.js +284 -0
  541. package/dist/router/loader-resolution.js.map +1 -0
  542. package/dist/router/logging.d.ts +15 -0
  543. package/dist/router/logging.d.ts.map +1 -0
  544. package/dist/router/logging.js +99 -0
  545. package/dist/router/logging.js.map +1 -0
  546. package/dist/router/manifest.d.ts +22 -0
  547. package/dist/router/manifest.d.ts.map +1 -0
  548. package/dist/router/manifest.js +181 -0
  549. package/dist/router/manifest.js.map +1 -0
  550. package/dist/router/match-api.d.ts +35 -0
  551. package/dist/router/match-api.d.ts.map +1 -0
  552. package/dist/router/match-api.js +406 -0
  553. package/dist/router/match-api.js.map +1 -0
  554. package/dist/router/match-context.d.ts +206 -0
  555. package/dist/router/match-context.d.ts.map +1 -0
  556. package/dist/router/match-context.js +17 -0
  557. package/dist/router/match-context.js.map +1 -0
  558. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  560. package/dist/router/match-middleware/background-revalidation.js +75 -0
  561. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  562. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  564. package/dist/router/match-middleware/cache-lookup.js +257 -0
  565. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  566. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  567. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  568. package/dist/router/match-middleware/cache-store.js +108 -0
  569. package/dist/router/match-middleware/cache-store.js.map +1 -0
  570. package/dist/router/match-middleware/index.d.ts +81 -0
  571. package/dist/router/match-middleware/index.d.ts.map +1 -0
  572. package/dist/router/match-middleware/index.js +80 -0
  573. package/dist/router/match-middleware/index.js.map +1 -0
  574. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  576. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  577. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  578. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  580. package/dist/router/match-middleware/segment-resolution.js +53 -0
  581. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  582. package/dist/router/match-pipelines.d.ts +147 -0
  583. package/dist/router/match-pipelines.d.ts.map +1 -0
  584. package/dist/router/match-pipelines.js +82 -0
  585. package/dist/router/match-pipelines.js.map +1 -0
  586. package/dist/router/match-result.d.ts +126 -0
  587. package/dist/router/match-result.d.ts.map +1 -0
  588. package/dist/router/match-result.js +93 -0
  589. package/dist/router/match-result.js.map +1 -0
  590. package/dist/router/metrics.d.ts +20 -0
  591. package/dist/router/metrics.d.ts.map +1 -0
  592. package/dist/router/metrics.js +47 -0
  593. package/dist/router/metrics.js.map +1 -0
  594. package/dist/router/middleware.d.ts +249 -0
  595. package/dist/router/middleware.d.ts.map +1 -0
  596. package/dist/router/middleware.js +434 -0
  597. package/dist/router/middleware.js.map +1 -0
  598. package/dist/router/middleware.test.d.ts +2 -0
  599. package/dist/router/middleware.test.d.ts.map +1 -0
  600. package/dist/router/middleware.test.js +816 -0
  601. package/dist/router/middleware.test.js.map +1 -0
  602. package/dist/router/pattern-matching.d.ts +149 -0
  603. package/dist/router/pattern-matching.d.ts.map +1 -0
  604. package/dist/router/pattern-matching.js +349 -0
  605. package/dist/router/pattern-matching.js.map +1 -0
  606. package/dist/router/revalidation.d.ts +44 -0
  607. package/dist/router/revalidation.d.ts.map +1 -0
  608. package/dist/router/revalidation.js +147 -0
  609. package/dist/router/revalidation.js.map +1 -0
  610. package/dist/router/router-context.d.ts +135 -0
  611. package/dist/router/router-context.d.ts.map +1 -0
  612. package/dist/router/router-context.js +36 -0
  613. package/dist/router/router-context.js.map +1 -0
  614. package/dist/router/segment-resolution.d.ts +127 -0
  615. package/dist/router/segment-resolution.d.ts.map +1 -0
  616. package/dist/router/segment-resolution.js +919 -0
  617. package/dist/router/segment-resolution.js.map +1 -0
  618. package/dist/router/trie-matching.d.ts +40 -0
  619. package/dist/router/trie-matching.d.ts.map +1 -0
  620. package/dist/router/trie-matching.js +127 -0
  621. package/dist/router/trie-matching.js.map +1 -0
  622. package/dist/router/types.d.ts +136 -0
  623. package/dist/router/types.d.ts.map +1 -0
  624. package/dist/router/types.js +7 -0
  625. package/dist/router/types.js.map +1 -0
  626. package/dist/router.d.ts +753 -0
  627. package/dist/router.d.ts.map +1 -0
  628. package/dist/router.gen.d.ts +6 -0
  629. package/dist/router.gen.d.ts.map +1 -0
  630. package/dist/router.gen.js +6 -0
  631. package/dist/router.gen.js.map +1 -0
  632. package/dist/router.js +1304 -0
  633. package/dist/router.js.map +1 -0
  634. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  636. package/dist/rsc/__tests__/helpers.test.js +140 -0
  637. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  638. package/dist/rsc/handler.d.ts +45 -0
  639. package/dist/rsc/handler.d.ts.map +1 -0
  640. package/dist/rsc/handler.js +1172 -0
  641. package/dist/rsc/handler.js.map +1 -0
  642. package/dist/rsc/helpers.d.ts +16 -0
  643. package/dist/rsc/helpers.d.ts.map +1 -0
  644. package/dist/rsc/helpers.js +55 -0
  645. package/dist/rsc/helpers.js.map +1 -0
  646. package/dist/rsc/index.d.ts +22 -0
  647. package/dist/rsc/index.d.ts.map +1 -0
  648. package/dist/rsc/index.js +23 -0
  649. package/dist/rsc/index.js.map +1 -0
  650. package/dist/rsc/nonce.d.ts +9 -0
  651. package/dist/rsc/nonce.d.ts.map +1 -0
  652. package/dist/rsc/nonce.js +18 -0
  653. package/dist/rsc/nonce.js.map +1 -0
  654. package/dist/rsc/types.d.ts +206 -0
  655. package/dist/rsc/types.d.ts.map +1 -0
  656. package/dist/rsc/types.js +8 -0
  657. package/dist/rsc/types.js.map +1 -0
  658. package/dist/search-params.d.ts +103 -0
  659. package/dist/search-params.d.ts.map +1 -0
  660. package/dist/search-params.js +74 -0
  661. package/dist/search-params.js.map +1 -0
  662. package/dist/segment-system.d.ts +75 -0
  663. package/dist/segment-system.d.ts.map +1 -0
  664. package/dist/segment-system.js +336 -0
  665. package/dist/segment-system.js.map +1 -0
  666. package/dist/server/context.d.ts +245 -0
  667. package/dist/server/context.d.ts.map +1 -0
  668. package/dist/server/context.js +197 -0
  669. package/dist/server/context.js.map +1 -0
  670. package/dist/server/fetchable-loader-store.d.ts +18 -0
  671. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  672. package/dist/server/fetchable-loader-store.js +18 -0
  673. package/dist/server/fetchable-loader-store.js.map +1 -0
  674. package/dist/server/handle-store.d.ts +85 -0
  675. package/dist/server/handle-store.d.ts.map +1 -0
  676. package/dist/server/handle-store.js +142 -0
  677. package/dist/server/handle-store.js.map +1 -0
  678. package/dist/server/loader-registry.d.ts +55 -0
  679. package/dist/server/loader-registry.d.ts.map +1 -0
  680. package/dist/server/loader-registry.js +132 -0
  681. package/dist/server/loader-registry.js.map +1 -0
  682. package/dist/server/request-context.d.ts +226 -0
  683. package/dist/server/request-context.d.ts.map +1 -0
  684. package/dist/server/request-context.js +290 -0
  685. package/dist/server/request-context.js.map +1 -0
  686. package/dist/server/root-layout.d.ts +4 -0
  687. package/dist/server/root-layout.d.ts.map +1 -0
  688. package/dist/server/root-layout.js +5 -0
  689. package/dist/server/root-layout.js.map +1 -0
  690. package/dist/server.d.ts +15 -0
  691. package/dist/server.d.ts.map +1 -0
  692. package/dist/server.js +20 -0
  693. package/dist/server.js.map +1 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  698. package/dist/ssr/index.d.ts +98 -0
  699. package/dist/ssr/index.d.ts.map +1 -0
  700. package/dist/ssr/index.js +158 -0
  701. package/dist/ssr/index.js.map +1 -0
  702. package/dist/static-handler.d.ts +50 -0
  703. package/dist/static-handler.d.ts.map +1 -0
  704. package/dist/static-handler.gen.d.ts +5 -0
  705. package/dist/static-handler.gen.d.ts.map +1 -0
  706. package/dist/static-handler.gen.js +5 -0
  707. package/dist/static-handler.gen.js.map +1 -0
  708. package/dist/static-handler.js +29 -0
  709. package/dist/static-handler.js.map +1 -0
  710. package/dist/theme/ThemeProvider.d.ts +20 -0
  711. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  712. package/dist/theme/ThemeProvider.js +240 -0
  713. package/dist/theme/ThemeProvider.js.map +1 -0
  714. package/dist/theme/ThemeScript.d.ts +48 -0
  715. package/dist/theme/ThemeScript.d.ts.map +1 -0
  716. package/dist/theme/ThemeScript.js +13 -0
  717. package/dist/theme/ThemeScript.js.map +1 -0
  718. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  719. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  720. package/dist/theme/__tests__/theme.test.js +103 -0
  721. package/dist/theme/__tests__/theme.test.js.map +1 -0
  722. package/dist/theme/constants.d.ts +29 -0
  723. package/dist/theme/constants.d.ts.map +1 -0
  724. package/dist/theme/constants.js +48 -0
  725. package/dist/theme/constants.js.map +1 -0
  726. package/dist/theme/index.d.ts +31 -0
  727. package/dist/theme/index.d.ts.map +1 -0
  728. package/dist/theme/index.js +36 -0
  729. package/dist/theme/index.js.map +1 -0
  730. package/dist/theme/theme-context.d.ts +40 -0
  731. package/dist/theme/theme-context.d.ts.map +1 -0
  732. package/dist/theme/theme-context.js +60 -0
  733. package/dist/theme/theme-context.js.map +1 -0
  734. package/dist/theme/theme-script.d.ts +27 -0
  735. package/dist/theme/theme-script.d.ts.map +1 -0
  736. package/dist/theme/theme-script.js +147 -0
  737. package/dist/theme/theme-script.js.map +1 -0
  738. package/dist/theme/types.d.ts +163 -0
  739. package/dist/theme/types.d.ts.map +1 -0
  740. package/dist/theme/types.js +11 -0
  741. package/dist/theme/types.js.map +1 -0
  742. package/dist/theme/use-theme.d.ts +12 -0
  743. package/dist/theme/use-theme.d.ts.map +1 -0
  744. package/dist/theme/use-theme.js +40 -0
  745. package/dist/theme/use-theme.js.map +1 -0
  746. package/dist/types.d.ts +1479 -0
  747. package/dist/types.d.ts.map +1 -0
  748. package/dist/types.js +10 -0
  749. package/dist/types.js.map +1 -0
  750. package/dist/urls.d.ts +441 -0
  751. package/dist/urls.d.ts.map +1 -0
  752. package/dist/urls.gen.d.ts +8 -0
  753. package/dist/urls.gen.d.ts.map +1 -0
  754. package/dist/urls.gen.js +8 -0
  755. package/dist/urls.gen.js.map +1 -0
  756. package/dist/urls.js +443 -0
  757. package/dist/urls.js.map +1 -0
  758. package/dist/use-loader.d.ts +127 -0
  759. package/dist/use-loader.d.ts.map +1 -0
  760. package/dist/use-loader.js +237 -0
  761. package/dist/use-loader.js.map +1 -0
  762. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  766. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  770. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  774. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  778. package/dist/vite/ast-handler-extract.d.ts +49 -0
  779. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  780. package/dist/vite/ast-handler-extract.js +249 -0
  781. package/dist/vite/ast-handler-extract.js.map +1 -0
  782. package/dist/vite/expose-action-id.d.ts +19 -0
  783. package/dist/vite/expose-action-id.d.ts.map +1 -0
  784. package/dist/vite/expose-action-id.js +250 -0
  785. package/dist/vite/expose-action-id.js.map +1 -0
  786. package/dist/vite/expose-id-utils.d.ts +69 -0
  787. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  788. package/dist/vite/expose-id-utils.js +289 -0
  789. package/dist/vite/expose-id-utils.js.map +1 -0
  790. package/dist/vite/expose-internal-ids.d.ts +22 -0
  791. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  792. package/dist/vite/expose-internal-ids.js +886 -0
  793. package/dist/vite/expose-internal-ids.js.map +1 -0
  794. package/dist/vite/index.d.ts +149 -0
  795. package/dist/vite/index.d.ts.map +1 -0
  796. package/dist/vite/index.js +1884 -537
  797. package/dist/vite/index.js.bak +5448 -0
  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/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  805. package/dist/vite/virtual-entries.d.ts +25 -0
  806. package/dist/vite/virtual-entries.d.ts.map +1 -0
  807. package/dist/vite/virtual-entries.js +110 -0
  808. package/dist/vite/virtual-entries.js.map +1 -0
  809. package/package.json +7 -5
  810. package/skills/breadcrumbs/SKILL.md +3 -1
  811. package/skills/cache-guide/SKILL.md +32 -0
  812. package/skills/caching/SKILL.md +8 -0
  813. package/skills/handler-use/SKILL.md +364 -0
  814. package/skills/hooks/SKILL.md +54 -20
  815. package/skills/i18n/SKILL.md +276 -0
  816. package/skills/intercept/SKILL.md +45 -0
  817. package/skills/layout/SKILL.md +24 -0
  818. package/skills/links/SKILL.md +237 -17
  819. package/skills/loader/SKILL.md +123 -46
  820. package/skills/middleware/SKILL.md +36 -3
  821. package/skills/migrate-nextjs/SKILL.md +562 -0
  822. package/skills/migrate-react-router/SKILL.md +769 -0
  823. package/skills/parallel/SKILL.md +68 -0
  824. package/skills/prerender/SKILL.md +110 -68
  825. package/skills/rango/SKILL.md +26 -22
  826. package/skills/response-routes/SKILL.md +8 -0
  827. package/skills/route/SKILL.md +79 -0
  828. package/skills/router-setup/SKILL.md +87 -2
  829. package/skills/server-actions/SKILL.md +739 -0
  830. package/skills/streams-and-websockets/SKILL.md +283 -0
  831. package/skills/typesafety/SKILL.md +19 -1
  832. package/skills/view-transitions/SKILL.md +212 -0
  833. package/src/__internal.ts +1 -1
  834. package/src/browser/app-shell.ts +52 -0
  835. package/src/browser/app-version.ts +14 -0
  836. package/src/browser/event-controller.ts +44 -4
  837. package/src/browser/navigation-bridge.ts +156 -10
  838. package/src/browser/navigation-client.ts +128 -53
  839. package/src/browser/navigation-store.ts +68 -9
  840. package/src/browser/partial-update.ts +84 -16
  841. package/src/browser/prefetch/cache.ts +129 -21
  842. package/src/browser/prefetch/fetch.ts +156 -18
  843. package/src/browser/prefetch/queue.ts +92 -29
  844. package/src/browser/prefetch/resource-ready.ts +77 -0
  845. package/src/browser/rango-state.ts +53 -13
  846. package/src/browser/react/Link.tsx +72 -8
  847. package/src/browser/react/NavigationProvider.tsx +82 -21
  848. package/src/browser/react/context.ts +7 -2
  849. package/src/browser/react/filter-segment-order.ts +51 -7
  850. package/src/browser/react/index.ts +3 -0
  851. package/src/browser/react/use-handle.ts +9 -58
  852. package/src/browser/react/use-navigation.ts +22 -2
  853. package/src/browser/react/use-params.ts +17 -4
  854. package/src/browser/react/use-reverse.ts +99 -0
  855. package/src/browser/react/use-router.ts +29 -9
  856. package/src/browser/react/use-segments.ts +11 -8
  857. package/src/browser/rsc-router.tsx +60 -9
  858. package/src/browser/scroll-restoration.ts +38 -33
  859. package/src/browser/segment-reconciler.ts +36 -14
  860. package/src/browser/server-action-bridge.ts +8 -6
  861. package/src/browser/types.ts +46 -5
  862. package/src/build/generate-manifest.ts +6 -6
  863. package/src/build/generate-route-types.ts +3 -0
  864. package/src/build/route-trie.ts +52 -25
  865. package/src/build/route-types/include-resolution.ts +8 -1
  866. package/src/build/route-types/router-processing.ts +211 -72
  867. package/src/build/route-types/scan-filter.ts +8 -1
  868. package/src/cache/cache-scope.ts +12 -14
  869. package/src/cache/cf/cf-cache-store.ts +5 -7
  870. package/src/cache/taint.ts +55 -0
  871. package/src/client.rsc.tsx +3 -0
  872. package/src/client.tsx +89 -231
  873. package/src/context-var.ts +72 -2
  874. package/src/handle.ts +40 -0
  875. package/src/href-client.ts +4 -1
  876. package/src/index.rsc.ts +6 -1
  877. package/src/index.ts +49 -6
  878. package/src/outlet-context.ts +1 -1
  879. package/src/prerender/store.ts +5 -4
  880. package/src/prerender.ts +138 -77
  881. package/src/response-utils.ts +28 -0
  882. package/src/reverse.ts +62 -15
  883. package/src/route-definition/dsl-helpers.ts +210 -35
  884. package/src/route-definition/helpers-types.ts +73 -20
  885. package/src/route-definition/index.ts +3 -0
  886. package/src/route-definition/redirect.ts +9 -1
  887. package/src/route-definition/resolve-handler-use.ts +155 -0
  888. package/src/route-types.ts +18 -0
  889. package/src/router/content-negotiation.ts +100 -1
  890. package/src/router/handler-context.ts +77 -38
  891. package/src/router/intercept-resolution.ts +9 -4
  892. package/src/router/lazy-includes.ts +6 -6
  893. package/src/router/loader-resolution.ts +159 -21
  894. package/src/router/manifest.ts +22 -13
  895. package/src/router/match-api.ts +128 -192
  896. package/src/router/match-handlers.ts +1 -0
  897. package/src/router/match-middleware/cache-lookup.ts +28 -8
  898. package/src/router/match-middleware/segment-resolution.ts +53 -0
  899. package/src/router/match-result.ts +101 -4
  900. package/src/router/middleware-types.ts +20 -33
  901. package/src/router/middleware.ts +56 -12
  902. package/src/router/navigation-snapshot.ts +182 -0
  903. package/src/router/pattern-matching.ts +101 -17
  904. package/src/router/prerender-match.ts +110 -10
  905. package/src/router/preview-match.ts +30 -102
  906. package/src/router/request-classification.ts +310 -0
  907. package/src/router/revalidation.ts +15 -1
  908. package/src/router/route-snapshot.ts +245 -0
  909. package/src/router/router-interfaces.ts +36 -4
  910. package/src/router/router-options.ts +37 -11
  911. package/src/router/segment-resolution/fresh.ts +88 -9
  912. package/src/router/segment-resolution/helpers.ts +29 -24
  913. package/src/router/segment-resolution/revalidation.ts +219 -108
  914. package/src/router/substitute-pattern-params.ts +56 -0
  915. package/src/router/trie-matching.ts +18 -13
  916. package/src/router/types.ts +1 -0
  917. package/src/router/url-params.ts +49 -0
  918. package/src/router.ts +55 -7
  919. package/src/rsc/handler.ts +478 -374
  920. package/src/rsc/helpers.ts +69 -41
  921. package/src/rsc/loader-fetch.ts +23 -3
  922. package/src/rsc/manifest-init.ts +5 -1
  923. package/src/rsc/progressive-enhancement.ts +18 -2
  924. package/src/rsc/response-route-handler.ts +14 -1
  925. package/src/rsc/rsc-rendering.ts +20 -1
  926. package/src/rsc/server-action.ts +12 -0
  927. package/src/rsc/ssr-setup.ts +2 -2
  928. package/src/rsc/types.ts +15 -1
  929. package/src/segment-content-promise.ts +67 -0
  930. package/src/segment-loader-promise.ts +122 -0
  931. package/src/segment-system.tsx +71 -70
  932. package/src/server/context.ts +76 -4
  933. package/src/server/handle-store.ts +19 -0
  934. package/src/server/loader-registry.ts +9 -8
  935. package/src/server/request-context.ts +185 -57
  936. package/src/ssr/index.tsx +8 -1
  937. package/src/static-handler.ts +18 -6
  938. package/src/types/cache-types.ts +4 -4
  939. package/src/types/handler-context.ts +47 -56
  940. package/src/types/loader-types.ts +41 -15
  941. package/src/types/request-scope.ts +126 -0
  942. package/src/types/route-entry.ts +12 -1
  943. package/src/types/segments.ts +18 -1
  944. package/src/urls/include-helper.ts +24 -14
  945. package/src/urls/path-helper-types.ts +39 -6
  946. package/src/urls/path-helper.ts +47 -12
  947. package/src/urls/pattern-types.ts +12 -0
  948. package/src/urls/response-types.ts +18 -16
  949. package/src/use-loader.tsx +77 -5
  950. package/src/vite/debug.ts +184 -0
  951. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  952. package/src/vite/discovery/discover-routers.ts +36 -4
  953. package/src/vite/discovery/gate-state.ts +171 -0
  954. package/src/vite/discovery/prerender-collection.ts +175 -74
  955. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  956. package/src/vite/discovery/state.ts +13 -4
  957. package/src/vite/index.ts +4 -0
  958. package/src/vite/plugin-types.ts +60 -5
  959. package/src/vite/plugins/cjs-to-esm.ts +5 -0
  960. package/src/vite/plugins/client-ref-dedup.ts +16 -0
  961. package/src/vite/plugins/client-ref-hashing.ts +16 -4
  962. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  963. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  964. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  965. package/src/vite/plugins/expose-action-id.ts +52 -28
  966. package/src/vite/plugins/expose-id-utils.ts +12 -0
  967. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  968. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  969. package/src/vite/plugins/expose-internal-ids.ts +563 -316
  970. package/src/vite/plugins/performance-tracks.ts +96 -0
  971. package/src/vite/plugins/refresh-cmd.ts +88 -26
  972. package/src/vite/plugins/use-cache-transform.ts +56 -43
  973. package/src/vite/plugins/version-injector.ts +37 -11
  974. package/src/vite/rango.ts +63 -11
  975. package/src/vite/router-discovery.ts +732 -86
  976. package/src/vite/utils/banner.ts +1 -1
  977. package/src/vite/utils/package-resolution.ts +41 -1
  978. package/src/vite/utils/prerender-utils.ts +38 -5
  979. package/src/vite/utils/shared-utils.ts +3 -2
@@ -6,7 +6,10 @@ argument-hint: [loader]
6
6
 
7
7
  # Data Loaders with loader()
8
8
 
9
- Loaders fetch data on the server and stream it to the client.
9
+ Loaders fetch data on the server and stream it to the client. For mutations
10
+ (writes triggered by forms or buttons), use server actions instead — see
11
+ `/server-actions`. Loaders re-resolve after an action runs, so the typical
12
+ flow is _action mutates → loader re-reads → UI updates_.
10
13
 
11
14
  ## Creating a Loader
12
15
 
@@ -65,24 +68,10 @@ export const urlpatterns = urls(({ path, loader }) => [
65
68
 
66
69
  ## Consuming Loader Data
67
70
 
68
- Loaders are the **live data layer** they resolve fresh on every request.
69
- The way you consume them depends on whether you're in a server component
70
- (route handler) or a client component.
71
-
72
- > **IMPORTANT: Prefer consuming loaders in client components.** Keeping data
73
- > fetching in loaders and consumption in client components creates a clean
74
- > separation: the server-side handler renders static markup that can be
75
- > freely cached with `cache()`, while loader data stays fresh on every
76
- > request. When you consume loaders in server handlers via `ctx.use()`, the
77
- > handler output depends on the loader data, which means caching the handler
78
- > also caches the data — defeating the purpose of the live data layer.
79
-
80
- ### In Client Components (Preferred)
81
-
82
- Client components use `useLoader()` from `@rangojs/router/client`.
83
- The loader **must** be registered with `loader()` in the route's DSL
84
- segments so the framework knows to resolve it during SSR and stream
85
- the data to the client:
71
+ Register loaders with `loader()` in the DSL and consume them in client
72
+ components with `useLoader()`. This is the recommended pattern it keeps
73
+ data fetching on the server and consumption on the client, with a clean
74
+ separation that works correctly with `cache()`.
86
75
 
87
76
  ```typescript
88
77
  "use client";
@@ -96,44 +85,86 @@ function ProductDetails() {
96
85
  ```
97
86
 
98
87
  ```typescript
99
- // Route definition — loader() registration required for client consumption
88
+ // Route definition — loader() registration required
100
89
  path("/product/:slug", ProductPage, { name: "product" }, () => [
101
- loader(ProductLoader), // Required for useLoader() in client components
90
+ loader(ProductLoader),
102
91
  ]);
103
92
  ```
104
93
 
105
- ### In Route Handlers (Server Components)
94
+ DSL loaders are the **live data layer** — they resolve fresh on every
95
+ request, even when the route is inside a `cache()` boundary. The router
96
+ excludes them from the segment cache at storage time and re-resolves them
97
+ on retrieval. This means `cache()` gives you cached UI + fresh data by
98
+ default.
106
99
 
107
- In server components, use `ctx.use(Loader)` directly in the route handler.
108
- This doesn't require `loader()` registration in the DSL — it works
109
- standalone. **However**, prefer client-side consumption when possible (see
110
- note above).
100
+ ### Cache safety
111
101
 
112
- ```typescript
113
- import { ProductLoader } from "./loaders/product";
102
+ DSL loaders can safely read `createVar({ cache: false })` variables
103
+ because they are always resolved fresh. The read guard is bypassed for
104
+ loader functions — they never produce stale data.
105
+
106
+ ### ctx.use(Loader) — escape hatch
114
107
 
115
- // Route handler server component
108
+ For cases where you need loader data in the server handler itself (e.g.,
109
+ to set ctx variables or make routing decisions), use `ctx.use(Loader)`:
110
+
111
+ ```typescript
116
112
  path("/product/:slug", async (ctx) => {
117
113
  const { product } = await ctx.use(ProductLoader);
118
- return <h1>{product.name}</h1>;
119
- }, { name: "product" })
114
+ ctx.set(Product, product); // make available to children
115
+ return <ProductPage />;
116
+ }, { name: "product" }, () => [
117
+ loader(ProductLoader), // still register for client consumption
118
+ ])
120
119
  ```
121
120
 
122
- When you do register with `loader()` in the DSL, `ctx.use()` returns the
121
+ When you register with `loader()` in the DSL, `ctx.use()` returns the
123
122
  same memoized result — loaders never run twice per request.
124
123
 
124
+ **Limitations of ctx.use(Loader):**
125
+
126
+ - The handler output depends on the loader data. If the route is inside
127
+ `cache()`, the handler is cached with the loader result baked in —
128
+ defeating the live data guarantee.
129
+ - Non-cacheable variable reads (`createVar({ cache: false })`) inside the
130
+ handler still throw, even if the data came from a loader.
131
+ - Prefer DSL `loader()` + client `useLoader()` for data that depends on
132
+ non-cacheable context variables.
133
+
125
134
  **Never use `useLoader()` in server components** — it is a client-only API.
126
135
 
127
136
  ### Summary
128
137
 
129
- | Context | API | `loader()` DSL required? |
130
- | ---------------------------- | ------------------- | ------------------------ |
131
- | Client component (preferred) | `useLoader(Loader)` | **Yes** |
132
- | Route handler (server) | `ctx.use(Loader)` | No |
138
+ | Pattern | API | Cache-safe | Recommended |
139
+ | ---------------------- | ------------------- | ---------- | ----------- |
140
+ | DSL + client component | `useLoader(Loader)` | Yes | Yes |
141
+ | Handler escape hatch | `ctx.use(Loader)` | No | When needed |
133
142
 
134
143
  ## Loader Context
135
144
 
136
- Loaders receive the same context as route handlers:
145
+ Loaders receive the same context shape as route handlers.
146
+
147
+ ### Full field surface
148
+
149
+ | Field | Type | Notes |
150
+ | -------------- | ------------------------------ | --------------------------------------------------------------------------------------------------- |
151
+ | `params` | `TParams` | Merged route + explicit loader params; overridable by fetchable `load({ params })`. |
152
+ | `routeParams` | `Record<string, string>` | Server-trusted route params from URL pattern matching; cannot be overridden. |
153
+ | `request` | `Request` | The incoming `Request` (headers, method, body, `signal` for abort). |
154
+ | `url` | `URL` | Parsed request URL. |
155
+ | `pathname` | `string` | URL pathname (shortcut for `ctx.url.pathname`). |
156
+ | `searchParams` | `URLSearchParams` | Shortcut for `ctx.url.searchParams`. |
157
+ | `search` | `ResolveSearchSchema<TSearch>` | Typed query params when a search schema is declared on the route; `{}` otherwise. |
158
+ | `env` | `TEnv` | Plain bindings from `createRouter<TEnv>()` (DB, KV, secrets, etc.). |
159
+ | `get` | `(key \| ContextVar) => value` | Reads variables/context-vars set by middleware. |
160
+ | `use` | `(loader \| handle) => T` | Access another loader's data (Promise) or a handle's collected data (after `await ctx.rendered()`). |
161
+ | `rendered` | `() => Promise<void>` | **Experimental.** DSL loaders only — waits for non-loader segments before reading handle data. |
162
+ | `method` | `string` | HTTP method. `"GET"` for SSR loader runs; reflects real method for fetchable loaders. |
163
+ | `body` | `TBody \| undefined` | Parsed request body for fetchable POST/PUT/PATCH/DELETE calls. |
164
+ | `formData` | `FormData \| undefined` | Present when a fetchable loader is invoked via form submission. |
165
+ | `reverse` | `ScopedReverseFunction` | Generate type-checked URLs from route names (same scoped semantics as route handlers). |
166
+
167
+ ### Example
137
168
 
138
169
  ```typescript
139
170
  export const ProductLoader = createLoader(async (ctx) => {
@@ -157,10 +188,21 @@ export const ProductLoader = createLoader(async (ctx) => {
157
188
  // Variables set by middleware (from RSCRouter.Vars augmentation)
158
189
  const user = ctx.get("user");
159
190
 
160
- return { product: await fetchProduct(slug) };
191
+ // Type-checked URLs for payloads. `.name` resolves within the current
192
+ // include() scope; a bare `name` resolves globally. See /route and
193
+ // /typesafety for scope rules and route-name autocomplete.
194
+ const detailUrl = ctx.reverse(".detail", { slug });
195
+
196
+ return {
197
+ product: await fetchProduct(slug),
198
+ links: { self: detailUrl },
199
+ };
161
200
  });
162
201
  ```
163
202
 
203
+ See `/route` for the full handler-context contract (shared with loaders) and
204
+ `/typesafety` for route-name typing that powers `ctx.reverse` autocomplete.
205
+
164
206
  ### params vs routeParams
165
207
 
166
208
  - `ctx.params` — merged route params + explicit loader params. For fetchable
@@ -209,6 +251,37 @@ path("/product/:slug", ProductPage, { name: "product" }, () => [
209
251
  ]);
210
252
  ```
211
253
 
254
+ ### `revalidate()` return shapes
255
+
256
+ A `revalidate(fn)` callback can return one of four shapes. The chain
257
+ processes revalidators in order; each call's return controls how the
258
+ chain continues:
259
+
260
+ ```typescript
261
+ // 1) Hard decision — short-circuits the chain, used as the final answer.
262
+ revalidate(() => true);
263
+ revalidate(({ actionId }) => actionId?.includes("Cart") ?? false);
264
+
265
+ // 2) Soft decision — updates the running suggestion for downstream
266
+ // revalidators on the same segment, chain continues.
267
+ revalidate(({ defaultShouldRevalidate }) => ({
268
+ defaultShouldRevalidate: !defaultShouldRevalidate,
269
+ }));
270
+
271
+ // 3) Defer (no opinion) — leaves the running suggestion unchanged and
272
+ // continues to the next revalidator. Implicit return / null /
273
+ // undefined are all equivalent and consumer-friendly.
274
+ revalidate(({ actionId }) => {
275
+ if (actionId?.includes("Cart")) return true; // hard for this branch only
276
+ // implicit return — let downstream revalidators or the segment default decide
277
+ });
278
+ revalidate(() => undefined); // explicit defer
279
+ revalidate(() => null); // explicit defer
280
+ ```
281
+
282
+ If every revalidator on a segment defers, the segment-type default
283
+ (e.g. params-changed for routes, `false` for parallels) is used.
284
+
212
285
  ### Revalidation Contracts for Loader Dependencies
213
286
 
214
287
  If a loader reads `ctx.get()` data produced by an outer handler/layout, share
@@ -548,7 +621,7 @@ export const ProductLoader = createLoader(async (ctx) => {
548
621
  .first();
549
622
 
550
623
  if (!product) {
551
- throw new Response("Product not found", { status: 404 });
624
+ notFound("Product not found");
552
625
  }
553
626
 
554
627
  return { product };
@@ -564,10 +637,9 @@ export const CartLoader = createLoader(async (ctx) => {
564
637
  return { cart };
565
638
  });
566
639
 
567
- // urls.tsx
640
+ // urls.tsx — register loaders in the DSL
568
641
  export const urlpatterns = urls(({ path, layout, loader, loading, cache, revalidate }) => [
569
642
  layout(<ShopLayout />, () => [
570
- // Shared cart loader for all shop routes
571
643
  loader(CartLoader, () => [
572
644
  revalidate(({ actionId }) => actionId?.includes("Cart") ?? false),
573
645
  ]),
@@ -579,17 +651,22 @@ export const urlpatterns = urls(({ path, layout, loader, loading, cache, revalid
579
651
  ]),
580
652
  ]);
581
653
 
582
- // pages/product.tsx — server component (route handler)
654
+ // components/ProductDetails.tsx — consume in client component
655
+ "use client";
656
+ import { useLoader } from "@rangojs/router/client";
583
657
  import { ProductLoader, CartLoader } from "./loaders/shop";
584
658
 
585
- async function ProductPage(ctx) {
586
- const { product } = await ctx.use(ProductLoader);
587
- const { cart } = await ctx.use(CartLoader);
659
+ function ProductDetails() {
660
+ const { data: { product } } = useLoader(ProductLoader);
661
+ const { data: { cart } } = useLoader(CartLoader);
588
662
 
589
663
  return (
590
664
  <div>
591
665
  <h1>{product.name}</h1>
592
- <AddToCartButton productId={product.id} inCart={cart?.items.includes(product.id)} />
666
+ <AddToCartButton
667
+ productId={product.id}
668
+ inCart={cart?.items.includes(product.id)}
669
+ />
593
670
  </div>
594
671
  );
595
672
  }
@@ -26,10 +26,14 @@ const router = createRouter<AppEnv>({})
26
26
  .routes(urlpatterns);
27
27
  ```
28
28
 
29
+ When the router has a `basename`, pattern-scoped `.use()` patterns are automatically prefixed. For example, with `basename: "/app"`, `.use("/admin/*", mw)` matches `/app/admin/*`.
30
+
29
31
  ### Route middleware (`middleware()` in `urls()`)
30
32
 
31
33
  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
34
 
35
+ > **Implication for auth:** route middleware cannot guard server actions. Use `router.use("/admin/*", requireAuth)` (global, scoped) for action protection, or check inside the action body. See `/server-actions` for action-side auth patterns.
36
+
33
37
  ```
34
38
  Request flow (with action):
35
39
  global mw -> action executes -> route mw -> layout -> handler -> loaders
@@ -135,17 +139,46 @@ export const urlpatterns = urls(({ path, layout, middleware }) => [
135
139
  ## Middleware with Multiple Handlers
136
140
 
137
141
  ```typescript
138
- // Spread multiple middleware from a single export
142
+ // Group multiple middleware in an array
139
143
  export const shopMiddleware = [loggerMiddleware, mockAuthMiddleware];
140
144
 
141
- // In routes
145
+ // In routes — pass the array directly
142
146
  layout(<ShopLayout />, () => [
143
- middleware(...shopMiddleware),
147
+ middleware(shopMiddleware),
144
148
 
145
149
  path("/shop", ShopIndex, { name: "shop" }),
146
150
  ])
147
151
  ```
148
152
 
153
+ ## Wrapping Middleware (Scoped to Children)
154
+
155
+ Use the wrapping form to scope middleware to a subset of routes without
156
+ introducing a visible layout:
157
+
158
+ ```typescript
159
+ urls(({ path, middleware }) => [
160
+ // authMw only applies to /admin and /admin/settings
161
+ middleware(authMw, () => [
162
+ path("/admin", AdminPage, { name: "admin" }),
163
+ path("/admin/settings", SettingsPage, { name: "settings" }),
164
+ ]),
165
+
166
+ // Public route — no authMw
167
+ path("/", HomePage, { name: "home" }),
168
+ ]);
169
+ ```
170
+
171
+ Multiple middleware with wrapping:
172
+
173
+ ```typescript
174
+ middleware([authMw, loggingMw], () => [
175
+ path("/admin", AdminPage, { name: "admin" }),
176
+ ]);
177
+ ```
178
+
179
+ This creates a transparent layout (`<Outlet />`) that carries the middleware.
180
+ The middleware does not affect sibling routes outside the callback.
181
+
149
182
  ## Middleware Context
150
183
 
151
184
  ```typescript