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

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 (1102) 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 +1536 -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 +4450 -2226
  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 +294 -0
  811. package/skills/caching/SKILL.md +93 -23
  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 +403 -43
  822. package/skills/middleware/SKILL.md +171 -34
  823. package/skills/mime-routes/SKILL.md +15 -11
  824. package/skills/parallel/SKILL.md +204 -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 +257 -14
  829. package/skills/router-setup/SKILL.md +123 -30
  830. package/skills/theme/SKILL.md +9 -8
  831. package/skills/typesafety/SKILL.md +326 -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 +92 -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 +282 -557
  844. package/src/browser/navigation-client.ts +156 -73
  845. package/src/browser/navigation-store.ts +33 -50
  846. package/src/browser/navigation-transaction.ts +297 -0
  847. package/src/browser/network-error-handler.ts +61 -0
  848. package/src/browser/partial-update.ts +303 -310
  849. package/src/browser/prefetch/cache.ts +206 -0
  850. package/src/browser/prefetch/fetch.ts +144 -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 +160 -0
  854. package/src/browser/prefetch/resource-ready.ts +77 -0
  855. package/src/browser/rango-state.ts +112 -0
  856. package/src/browser/react/Link.tsx +190 -70
  857. package/src/browser/react/NavigationProvider.tsx +78 -11
  858. package/src/browser/react/context.ts +6 -0
  859. package/src/browser/react/filter-segment-order.ts +11 -0
  860. package/src/browser/react/index.ts +12 -12
  861. package/src/browser/react/location-state-shared.ts +95 -53
  862. package/src/browser/react/location-state.ts +60 -15
  863. package/src/browser/react/mount-context.ts +6 -1
  864. package/src/browser/react/nonce-context.ts +23 -0
  865. package/src/browser/react/shallow-equal.ts +27 -0
  866. package/src/browser/react/use-action.ts +29 -51
  867. package/src/browser/react/use-client-cache.ts +5 -3
  868. package/src/browser/react/use-handle.ts +29 -70
  869. package/src/browser/react/use-link-status.ts +6 -5
  870. package/src/browser/react/use-navigation.ts +22 -63
  871. package/src/browser/react/use-params.ts +65 -0
  872. package/src/browser/react/use-pathname.ts +47 -0
  873. package/src/browser/react/use-router.ts +63 -0
  874. package/src/browser/react/use-search-params.ts +56 -0
  875. package/src/browser/react/use-segments.ts +80 -97
  876. package/src/browser/response-adapter.ts +73 -0
  877. package/src/browser/rsc-router.tsx +188 -57
  878. package/src/browser/scroll-restoration.ts +117 -44
  879. package/src/browser/segment-reconciler.ts +221 -0
  880. package/src/browser/segment-structure-assert.ts +16 -0
  881. package/src/browser/server-action-bridge.ts +504 -599
  882. package/src/browser/shallow.ts +6 -1
  883. package/src/browser/types.ts +116 -47
  884. package/src/browser/validate-redirect-origin.ts +29 -0
  885. package/src/build/generate-manifest.ts +82 -21
  886. package/src/build/generate-route-types.ts +36 -752
  887. package/src/build/index.ts +6 -5
  888. package/src/build/route-trie.ts +39 -13
  889. package/src/build/route-types/ast-helpers.ts +25 -0
  890. package/src/build/route-types/ast-route-extraction.ts +98 -0
  891. package/src/build/route-types/codegen.ts +102 -0
  892. package/src/build/route-types/include-resolution.ts +411 -0
  893. package/src/build/route-types/param-extraction.ts +48 -0
  894. package/src/build/route-types/per-module-writer.ts +128 -0
  895. package/src/build/route-types/router-processing.ts +479 -0
  896. package/src/build/route-types/scan-filter.ts +78 -0
  897. package/src/build/runtime-discovery.ts +231 -0
  898. package/src/cache/background-task.ts +34 -0
  899. package/src/cache/cache-key-utils.ts +44 -0
  900. package/src/cache/cache-policy.ts +125 -0
  901. package/src/cache/cache-runtime.ts +342 -0
  902. package/src/cache/cache-scope.ts +167 -307
  903. package/src/cache/cf/cf-cache-store.ts +571 -17
  904. package/src/cache/cf/index.ts +13 -3
  905. package/src/cache/document-cache.ts +116 -77
  906. package/src/cache/handle-capture.ts +81 -0
  907. package/src/cache/handle-snapshot.ts +41 -0
  908. package/src/cache/index.ts +1 -15
  909. package/src/cache/memory-segment-store.ts +191 -13
  910. package/src/cache/profile-registry.ts +73 -0
  911. package/src/cache/read-through-swr.ts +134 -0
  912. package/src/cache/segment-codec.ts +256 -0
  913. package/src/cache/taint.ts +153 -0
  914. package/src/cache/types.ts +72 -122
  915. package/src/client.rsc.tsx +3 -1
  916. package/src/client.tsx +84 -126
  917. package/src/component-utils.ts +4 -4
  918. package/src/components/DefaultDocument.tsx +5 -1
  919. package/src/context-var.ts +156 -0
  920. package/src/debug.ts +19 -9
  921. package/src/errors.ts +77 -7
  922. package/src/handle.ts +15 -10
  923. package/src/handles/MetaTags.tsx +73 -20
  924. package/src/handles/breadcrumbs.ts +66 -0
  925. package/src/handles/index.ts +1 -0
  926. package/src/handles/meta.ts +30 -13
  927. package/src/host/cookie-handler.ts +21 -15
  928. package/src/host/errors.ts +8 -8
  929. package/src/host/index.ts +4 -7
  930. package/src/host/pattern-matcher.ts +27 -27
  931. package/src/host/router.ts +61 -39
  932. package/src/host/testing.ts +8 -8
  933. package/src/host/types.ts +15 -7
  934. package/src/host/utils.ts +1 -1
  935. package/src/href-client.ts +65 -45
  936. package/src/index.rsc.ts +133 -21
  937. package/src/index.ts +164 -52
  938. package/src/internal-debug.ts +11 -0
  939. package/src/loader.rsc.ts +25 -143
  940. package/src/loader.ts +27 -10
  941. package/src/network-error-thrower.tsx +3 -1
  942. package/src/outlet-provider.tsx +45 -0
  943. package/src/prerender/param-hash.ts +4 -2
  944. package/src/prerender/store.ts +158 -13
  945. package/src/prerender.ts +333 -26
  946. package/src/reverse.ts +184 -121
  947. package/src/root-error-boundary.tsx +41 -29
  948. package/src/route-content-wrapper.tsx +7 -4
  949. package/src/route-definition/dsl-helpers.ts +959 -0
  950. package/src/route-definition/helper-factories.ts +200 -0
  951. package/src/route-definition/helpers-types.ts +431 -0
  952. package/src/route-definition/index.ts +52 -0
  953. package/src/route-definition/redirect.ts +93 -0
  954. package/src/route-definition.ts +1 -1431
  955. package/src/route-map-builder.ts +162 -123
  956. package/src/route-name.ts +53 -0
  957. package/src/route-types.ts +48 -9
  958. package/src/router/content-negotiation.ts +116 -0
  959. package/src/router/debug-manifest.ts +72 -0
  960. package/src/router/error-handling.ts +9 -9
  961. package/src/router/find-match.ts +160 -0
  962. package/src/router/handler-context.ts +400 -84
  963. package/src/router/intercept-resolution.ts +26 -16
  964. package/src/router/lazy-includes.ts +237 -0
  965. package/src/router/loader-resolution.ts +222 -123
  966. package/src/router/logging.ts +251 -0
  967. package/src/router/manifest.ts +89 -32
  968. package/src/router/match-api.ts +118 -119
  969. package/src/router/match-context.ts +4 -2
  970. package/src/router/match-handlers.ts +440 -0
  971. package/src/router/match-middleware/background-revalidation.ts +108 -93
  972. package/src/router/match-middleware/cache-lookup.ts +394 -85
  973. package/src/router/match-middleware/cache-store.ts +91 -29
  974. package/src/router/match-middleware/intercept-resolution.ts +48 -21
  975. package/src/router/match-middleware/segment-resolution.ts +20 -9
  976. package/src/router/match-pipelines.ts +10 -45
  977. package/src/router/match-result.ts +55 -33
  978. package/src/router/metrics.ts +240 -15
  979. package/src/router/middleware-cookies.ts +55 -0
  980. package/src/router/middleware-types.ts +226 -0
  981. package/src/router/middleware.ts +327 -369
  982. package/src/router/pattern-matching.ts +197 -41
  983. package/src/router/prerender-match.ts +402 -0
  984. package/src/router/preview-match.ts +170 -0
  985. package/src/router/revalidation.ts +137 -38
  986. package/src/router/router-context.ts +41 -21
  987. package/src/router/router-interfaces.ts +452 -0
  988. package/src/router/router-options.ts +592 -0
  989. package/src/router/router-registry.ts +24 -0
  990. package/src/router/segment-resolution/fresh.ts +683 -0
  991. package/src/router/segment-resolution/helpers.ts +263 -0
  992. package/src/router/segment-resolution/loader-cache.ts +199 -0
  993. package/src/router/segment-resolution/revalidation.ts +1301 -0
  994. package/src/router/segment-resolution/static-store.ts +67 -0
  995. package/src/router/segment-resolution.ts +21 -1315
  996. package/src/router/segment-wrappers.ts +291 -0
  997. package/src/router/telemetry-otel.ts +299 -0
  998. package/src/router/telemetry.ts +300 -0
  999. package/src/router/timeout.ts +148 -0
  1000. package/src/router/trie-matching.ts +96 -29
  1001. package/src/router/types.ts +16 -9
  1002. package/src/router.ts +594 -1983
  1003. package/src/rsc/handler-context.ts +45 -0
  1004. package/src/rsc/handler.ts +661 -1015
  1005. package/src/rsc/helpers.ts +140 -6
  1006. package/src/rsc/index.ts +0 -20
  1007. package/src/rsc/loader-fetch.ts +209 -0
  1008. package/src/rsc/manifest-init.ts +86 -0
  1009. package/src/rsc/nonce.ts +14 -0
  1010. package/src/rsc/origin-guard.ts +141 -0
  1011. package/src/rsc/progressive-enhancement.ts +379 -0
  1012. package/src/rsc/response-error.ts +37 -0
  1013. package/src/rsc/response-route-handler.ts +347 -0
  1014. package/src/rsc/rsc-rendering.ts +237 -0
  1015. package/src/rsc/runtime-warnings.ts +42 -0
  1016. package/src/rsc/server-action.ts +348 -0
  1017. package/src/rsc/ssr-setup.ts +128 -0
  1018. package/src/rsc/types.ts +38 -11
  1019. package/src/search-params.ts +230 -0
  1020. package/src/segment-system.tsx +165 -17
  1021. package/src/server/context.ts +270 -56
  1022. package/src/server/cookie-store.ts +190 -0
  1023. package/src/server/fetchable-loader-store.ts +37 -0
  1024. package/src/server/handle-store.ts +94 -15
  1025. package/src/server/loader-registry.ts +15 -56
  1026. package/src/server/request-context.ts +474 -74
  1027. package/src/server.ts +35 -155
  1028. package/src/ssr/index.tsx +101 -31
  1029. package/src/static-handler.ts +114 -0
  1030. package/src/theme/ThemeProvider.tsx +21 -15
  1031. package/src/theme/ThemeScript.tsx +5 -5
  1032. package/src/theme/constants.ts +5 -2
  1033. package/src/theme/index.ts +4 -14
  1034. package/src/theme/theme-context.ts +4 -30
  1035. package/src/theme/theme-script.ts +21 -18
  1036. package/src/types/boundaries.ts +158 -0
  1037. package/src/types/cache-types.ts +198 -0
  1038. package/src/types/error-types.ts +192 -0
  1039. package/src/types/global-namespace.ts +100 -0
  1040. package/src/types/handler-context.ts +785 -0
  1041. package/src/types/index.ts +88 -0
  1042. package/src/types/loader-types.ts +183 -0
  1043. package/src/types/route-config.ts +170 -0
  1044. package/src/types/route-entry.ts +109 -0
  1045. package/src/types/segments.ts +150 -0
  1046. package/src/types.ts +1 -1757
  1047. package/src/urls/include-helper.ts +197 -0
  1048. package/src/urls/index.ts +53 -0
  1049. package/src/urls/path-helper-types.ts +339 -0
  1050. package/src/urls/path-helper.ts +329 -0
  1051. package/src/urls/pattern-types.ts +95 -0
  1052. package/src/urls/response-types.ts +106 -0
  1053. package/src/urls/type-extraction.ts +372 -0
  1054. package/src/urls/urls-function.ts +98 -0
  1055. package/src/urls.ts +1 -1282
  1056. package/src/use-loader.tsx +85 -77
  1057. package/src/vite/discovery/bundle-postprocess.ts +184 -0
  1058. package/src/vite/discovery/discover-routers.ts +344 -0
  1059. package/src/vite/discovery/prerender-collection.ts +385 -0
  1060. package/src/vite/discovery/route-types-writer.ts +258 -0
  1061. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1062. package/src/vite/discovery/state.ts +108 -0
  1063. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1064. package/src/vite/index.ts +11 -1963
  1065. package/src/vite/plugin-types.ts +48 -0
  1066. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1067. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1068. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1069. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -53
  1070. package/src/vite/plugins/expose-id-utils.ts +287 -0
  1071. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1072. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1073. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1074. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1075. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1076. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1077. package/src/vite/plugins/refresh-cmd.ts +65 -0
  1078. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1079. package/src/vite/plugins/version-injector.ts +83 -0
  1080. package/src/vite/plugins/version-plugin.ts +266 -0
  1081. package/src/vite/plugins/virtual-entries.ts +123 -0
  1082. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1083. package/src/vite/rango.ts +445 -0
  1084. package/src/vite/router-discovery.ts +777 -0
  1085. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1086. package/src/vite/utils/banner.ts +36 -0
  1087. package/src/vite/utils/bundle-analysis.ts +137 -0
  1088. package/src/vite/utils/manifest-utils.ts +70 -0
  1089. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1090. package/src/vite/utils/prerender-utils.ts +189 -0
  1091. package/src/vite/utils/shared-utils.ts +169 -0
  1092. package/CLAUDE.md +0 -43
  1093. package/src/browser/lru-cache.ts +0 -69
  1094. package/src/browser/request-controller.ts +0 -164
  1095. package/src/cache/memory-store.ts +0 -253
  1096. package/src/router.gen.ts +0 -6
  1097. package/src/urls.gen.ts +0 -8
  1098. package/src/vite/expose-handle-id.ts +0 -209
  1099. package/src/vite/expose-loader-id.ts +0 -426
  1100. package/src/vite/expose-location-state-id.ts +0 -177
  1101. package/src/vite/expose-prerender-handler-id.ts +0 -429
  1102. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -5,57 +5,190 @@
5
5
  */
6
6
 
7
7
  import type { HandlerContext, InternalHandlerContext } from "../types";
8
- import { getRequestContext } from "../server/request-context.js";
8
+ import { _getRequestContext } from "../server/request-context.js";
9
+ import { getSearchSchema, isRouteRootScoped } from "../route-map-builder.js";
10
+ import { parseSearchParams, serializeSearchParams } from "../search-params.js";
11
+ import {
12
+ contextGet,
13
+ contextSet,
14
+ isNonCacheable,
15
+ type ContextSetOptions,
16
+ } from "../context-var.js";
17
+ import { isInsideCacheScope } from "../server/context.js";
18
+ import { NOCACHE_SYMBOL, assertNotInsideCacheExec } from "../cache/taint.js";
19
+ import { isAutoGeneratedRouteName } from "../route-name.js";
20
+ import { PRERENDER_PASSTHROUGH } from "../prerender.js";
21
+
22
+ /**
23
+ * Strip internal _rsc* query params from a URL.
24
+ * Returns a new URL with only user-facing params.
25
+ */
26
+ export function stripInternalParams(url: URL): URL {
27
+ const clean = new URL(url);
28
+ for (const key of [...clean.searchParams.keys()]) {
29
+ if (key.startsWith("_rsc")) {
30
+ clean.searchParams.delete(key);
31
+ }
32
+ }
33
+ return clean;
34
+ }
9
35
 
10
36
  /**
11
37
  * Resolve route name with namespace prefix support.
12
- * Supports local names, absolute names (dot notation), and path-based URLs.
38
+ * Supports local names (dot-prefixed) and absolute names (global lookup).
39
+ *
40
+ * @param rootScoped - Explicit override for root-scope check. When undefined,
41
+ * falls back to the global scope registry, then to a heuristic.
13
42
  */
14
43
  function resolveRouteName(
15
44
  name: string,
16
45
  routeMap: Record<string, string>,
17
- currentRoutePrefix?: string
46
+ currentRoutePrefix?: string,
47
+ rootScoped?: boolean,
18
48
  ): string | undefined {
19
- // 1. Path-based - starts with /
20
- if (name.startsWith("/")) {
21
- return name;
22
- }
23
-
24
- // 2. Absolute name - already has a dot (e.g., "shop.cart")
25
- if (name.includes(".")) {
26
- return routeMap[name];
27
- }
49
+ // 1. Dot-prefixed (".article", ".author.posts") local resolution only.
50
+ // Resolves within the current include() scope using the mount prefix.
51
+ if (name.startsWith(".")) {
52
+ const lookupName = name.slice(1);
53
+ if (!currentRoutePrefix) return undefined;
28
54
 
29
- // 3. Local name - try with current prefix first, then fall back to direct lookup
30
- if (currentRoutePrefix) {
31
- // Extract the prefix from current route name
32
- // e.g., "blog.posts.detail" → prefix is "blog.posts"
55
+ // Extract the include prefix from current route name
56
+ // e.g., "magazine.author" -> prefix is "magazine"
33
57
  const lastDot = currentRoutePrefix.lastIndexOf(".");
34
- const prefix = lastDot > 0 ? currentRoutePrefix.substring(0, lastDot) : currentRoutePrefix;
58
+ const prefix =
59
+ lastDot > 0
60
+ ? currentRoutePrefix.substring(0, lastDot)
61
+ : currentRoutePrefix;
35
62
 
36
- // Try prefixed name
37
- const prefixedName = `${prefix}.${name}`;
63
+ // Try prefixed name at current level
64
+ const prefixedName = `${prefix}.${lookupName}`;
38
65
  if (routeMap[prefixedName] !== undefined) {
39
66
  return routeMap[prefixedName];
40
67
  }
41
68
 
42
- // If current route is a nested include, try parent prefixes
43
- // e.g., for "blog.posts.detail", try "blog.posts.index", then "blog.index"
69
+ // Walk up parent prefixes for nested includes
44
70
  let currentPrefix = prefix;
45
71
  while (currentPrefix.includes(".")) {
46
72
  const parentDot = currentPrefix.lastIndexOf(".");
47
73
  currentPrefix = currentPrefix.substring(0, parentDot);
48
- const parentPrefixedName = `${currentPrefix}.${name}`;
74
+ const parentPrefixedName = `${currentPrefix}.${lookupName}`;
49
75
  if (routeMap[parentPrefixedName] !== undefined) {
50
76
  return routeMap[parentPrefixedName];
51
77
  }
52
78
  }
79
+
80
+ // Fallback: try bare name at root scope only.
81
+ // Routes inside { name: "" } mounts are at root scope — their dot-local
82
+ // names can fall back to bare names (e.g., "sub.detail" reaching "flatIndex").
83
+ // Routes inside named mounts (e.g., { name: "magazine" }) are NOT at root
84
+ // scope — dot-local must not leak into unrelated global names.
85
+ //
86
+ // Resolution order: explicit param > scope registry > heuristic.
87
+ const isRootScoped =
88
+ rootScoped ??
89
+ isRouteRootScoped(currentRoutePrefix) ??
90
+ !currentRoutePrefix.includes(".");
91
+ if (isRootScoped) {
92
+ if (routeMap[lookupName] !== undefined) {
93
+ return routeMap[lookupName];
94
+ }
95
+ }
96
+
97
+ return undefined;
53
98
  }
54
99
 
55
- // Fall back to direct lookup (route without prefix)
100
+ // 2. Unprefixed ("magazine.index", "blog.post") global resolution only.
101
+ // Direct lookup in the full named-routes map.
56
102
  return routeMap[name];
57
103
  }
58
104
 
105
+ function createPrerenderPassthroughFn(
106
+ build: boolean,
107
+ isPassthroughRoute: boolean,
108
+ ): () => typeof PRERENDER_PASSTHROUGH {
109
+ return () => {
110
+ if (!build) {
111
+ throw new Error(
112
+ "ctx.passthrough() can only be called during build-time prerendering.",
113
+ );
114
+ }
115
+ if (!isPassthroughRoute) {
116
+ throw new Error(
117
+ "ctx.passthrough() is only available on routes declared with " +
118
+ "{ passthrough: true }. Remove the passthrough() call or add " +
119
+ "{ passthrough: true } to the Prerender options.",
120
+ );
121
+ }
122
+ return PRERENDER_PASSTHROUGH;
123
+ };
124
+ }
125
+
126
+ /**
127
+ * Create a reverse function for URL generation from route names.
128
+ * Used by both HandlerContext and MiddlewareContext.
129
+ *
130
+ * When currentParams is provided, those params are used as defaults for URL
131
+ * generation. This enables auto-filling mount params from include() prefixes:
132
+ * inner handlers can call ctx.reverse(".sibling") without explicitly passing
133
+ * params that are already known from the current URL match.
134
+ * Explicitly passed hrefParams take priority over currentParams.
135
+ */
136
+ export function createReverseFunction(
137
+ routeMap: Record<string, string>,
138
+ currentRoutePrefix?: string,
139
+ currentParams?: Record<string, string>,
140
+ rootScoped?: boolean,
141
+ ): (
142
+ name: string,
143
+ hrefParams?: Record<string, string>,
144
+ search?: Record<string, unknown>,
145
+ ) => string {
146
+ return (name, hrefParams, search) => {
147
+ // Resolve route name with namespace support
148
+ const pattern = resolveRouteName(
149
+ name,
150
+ routeMap,
151
+ currentRoutePrefix,
152
+ rootScoped,
153
+ );
154
+
155
+ if (pattern === undefined) {
156
+ throw new Error(
157
+ `Unknown route: "${name}"${currentRoutePrefix ? ` (current route: ${currentRoutePrefix})` : ""}`,
158
+ );
159
+ }
160
+
161
+ let result = pattern;
162
+
163
+ // Merge current request params as defaults, explicit params override
164
+ const effectiveParams = currentParams
165
+ ? { ...currentParams, ...hrefParams }
166
+ : hrefParams;
167
+
168
+ // Substitute params (strip constraint and optional syntax: :param(a|b)? -> value)
169
+ if (effectiveParams) {
170
+ result = result.replace(
171
+ /:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?\??/g,
172
+ (_, key) => {
173
+ const value = effectiveParams[key];
174
+ if (value === undefined) {
175
+ throw new Error(`Missing param "${key}" for route "${name}"`);
176
+ }
177
+ return encodeURIComponent(value);
178
+ },
179
+ );
180
+ }
181
+
182
+ // Append search params as query string
183
+ if (search) {
184
+ const qs = serializeSearchParams(search);
185
+ if (qs) result += `?${qs}`;
186
+ }
187
+
188
+ return result;
189
+ };
190
+ }
191
+
59
192
  /**
60
193
  * Create HandlerContext with typed env/var/get/set
61
194
  */
@@ -65,49 +198,86 @@ export function createHandlerContext<TEnv>(
65
198
  searchParams: URLSearchParams,
66
199
  pathname: string,
67
200
  url: URL,
68
- bindings: any = {},
201
+ bindings: TEnv = {} as TEnv,
69
202
  routeMap: Record<string, string> = {},
70
- routeName?: string
203
+ routeName?: string,
204
+ responseType?: string,
205
+ isPassthroughRoute: boolean = false,
71
206
  ): InternalHandlerContext<any, TEnv> {
72
207
  // Get variables from request context - this is the unified context
73
208
  // shared between middleware and route handlers
74
- const requestContext = getRequestContext();
209
+ const requestContext = _getRequestContext();
75
210
  const variables: any = requestContext?.var ?? {};
76
211
 
77
- // Filter system parameters (starting with _rsc) from searchParams
78
- // This ensures handlers only see user-facing query params
79
- const cleanSearchParams = new URLSearchParams();
80
- searchParams.forEach((value, key) => {
81
- if (!key.startsWith("_rsc")) {
82
- cleanSearchParams.set(key, value);
83
- }
84
- });
85
-
86
- // Create clean URL without system params
87
- const cleanUrl = new URL(url);
88
- cleanUrl.search = cleanSearchParams.toString();
212
+ // If route has a search schema, parse URLSearchParams into typed object
213
+ const searchSchema = routeName ? getSearchSchema(routeName) : undefined;
214
+ const resolvedSearchParams = searchSchema
215
+ ? parseSearchParams(searchParams, searchSchema)
216
+ : searchParams;
89
217
 
90
218
  // Get stub response from request context for setting headers
91
- const stubResponse = requestContext?.res ?? new Response(null, { status: 200 });
219
+ const stubResponse =
220
+ requestContext?.res ?? new Response(null, { status: 200 });
92
221
 
93
- return {
222
+ // Guard mutating Headers methods so they throw inside "use cache" or cache() scope.
223
+ // Uses lazy `ctx` reference (assigned below) — only the specific handler ctx
224
+ // is stamped by cache-runtime, not the shared request context.
225
+ const MUTATING_HEADERS_METHODS = new Set(["set", "append", "delete"]);
226
+ let ctx: InternalHandlerContext<any, TEnv>;
227
+ const guardedHeaders = new Proxy(stubResponse.headers, {
228
+ get(target, prop, receiver) {
229
+ const value = Reflect.get(target, prop, receiver);
230
+ if (typeof value === "function") {
231
+ if (MUTATING_HEADERS_METHODS.has(prop as string)) {
232
+ return (...args: any[]) => {
233
+ assertNotInsideCacheExec(ctx, "headers");
234
+ if (isInsideCacheScope()) {
235
+ throw new Error(
236
+ `ctx.headers.${String(prop)}() cannot be called inside a cache() boundary. ` +
237
+ `On cache hit the handler is skipped, so this side effect would be lost. ` +
238
+ `Move header mutations to a middleware or layout outside the cache() scope.`,
239
+ );
240
+ }
241
+ return value.apply(target, args);
242
+ };
243
+ }
244
+ return value.bind(target);
245
+ }
246
+ return value;
247
+ },
248
+ });
249
+
250
+ ctx = {
94
251
  params,
252
+ build: false,
95
253
  request,
96
- searchParams: cleanSearchParams, // Filtered params
254
+ searchParams,
255
+ search: searchSchema ? resolvedSearchParams : {},
97
256
  pathname,
98
- url: cleanUrl, // Clean URL
257
+ url,
258
+ originalUrl: new URL(request.url),
99
259
  env: bindings,
100
260
  var: variables,
101
- get: ((key: string) => variables[key]) as HandlerContext<
102
- any,
103
- TEnv
104
- >["get"],
105
- set: ((key: string, value: any) => {
106
- variables[key] = value;
261
+ get: ((keyOrVar: any) => {
262
+ // Read-time guard: non-cacheable var inside cache() → throw.
263
+ // Works for both ContextVar tokens and string keys.
264
+ if (isNonCacheable(variables, keyOrVar) && isInsideCacheScope()) {
265
+ throw new Error(
266
+ `ctx.get() for a non-cacheable variable cannot be called inside a cache() boundary. ` +
267
+ `The variable was created with { cache: false } or set with { cache: false }, ` +
268
+ `and its value would be stale on cache hit. Move the read outside the cached scope.`,
269
+ );
270
+ }
271
+ return contextGet(variables, keyOrVar);
272
+ }) as HandlerContext<any, TEnv>["get"],
273
+ set: ((keyOrVar: any, value: any, options?: ContextSetOptions) => {
274
+ assertNotInsideCacheExec(ctx, "set");
275
+ // Write is dumb: store value + non-cacheable metadata.
276
+ // Enforcement happens at read time via ctx.get().
277
+ contextSet(variables, keyOrVar, value, options);
107
278
  }) as HandlerContext<any, TEnv>["set"],
108
- _originalRequest: request, // Raw request for advanced use
109
279
  res: stubResponse, // Stub response for setting headers
110
- headers: stubResponse.headers, // Shorthand for res.headers
280
+ headers: guardedHeaders, // Guarded shorthand for res.headers
111
281
  // Placeholder use() - will be replaced with actual implementation during request
112
282
  use: () => {
113
283
  throw new Error("ctx.use() called before loaders were initialized");
@@ -115,44 +285,190 @@ export function createHandlerContext<TEnv>(
115
285
  // Theme support (when enabled via router config)
116
286
  theme: requestContext?.theme,
117
287
  setTheme: requestContext?.setTheme,
118
- // Scoped reverse for URL generation
119
- reverse: (name: string, hrefParams?: Record<string, string>) => {
120
- // Path-based - return directly (optionally with param substitution)
121
- if (name.startsWith("/")) {
122
- if (hrefParams) {
123
- return name.replace(/:([^/]+)/g, (_, key) => {
124
- const value = hrefParams[key];
125
- if (value === undefined) {
126
- throw new Error(`Missing param "${key}" for path "${name}"`);
127
- }
128
- return encodeURIComponent(value);
129
- });
130
- }
131
- return name;
132
- }
133
-
134
- // Resolve route name with namespace support
135
- const pattern = resolveRouteName(name, routeMap, routeName);
136
-
137
- if (pattern === undefined) {
288
+ // Location state support (delegates to request context)
289
+ setLocationState(entries) {
290
+ if (!requestContext) {
138
291
  throw new Error(
139
- `Unknown route: "${name}"${routeName ? ` (current route: ${routeName})` : ""}`
292
+ "setLocationState() is not available outside a request context",
140
293
  );
141
294
  }
295
+ requestContext.setLocationState(entries);
296
+ },
297
+ routeName: (routeName && !isAutoGeneratedRouteName(routeName)
298
+ ? routeName
299
+ : undefined) as HandlerContext["routeName"],
300
+ // Scoped reverse for URL generation (auto-fills current request params).
301
+ // Resolve rootScoped eagerly so the reverse function is self-contained
302
+ // and does not depend on the global rootScopeRoutes registry at call time.
303
+ reverse: createReverseFunction(
304
+ routeMap,
305
+ routeName,
306
+ params,
307
+ routeName ? isRouteRootScoped(routeName) : undefined,
308
+ ),
309
+ passthrough: createPrerenderPassthroughFn(false, isPassthroughRoute),
310
+ _responseType: responseType,
311
+ _routeName: routeName,
312
+ };
313
+ // Brand with taint symbol so "use cache" excludes ctx from cache keys
314
+ (ctx as any)[NOCACHE_SYMBOL] = true;
315
+ return ctx;
316
+ }
142
317
 
143
- // If no params, return pattern directly
144
- if (!hrefParams) {
145
- return pattern;
146
- }
318
+ /**
319
+ * Create a PrerenderContext for Prerender() handlers at build time.
320
+ *
321
+ * Returns an InternalHandlerContext where params, pathname, url, searchParams,
322
+ * search, reverse, and use(handle) work. Request-time properties
323
+ * (request, env, headers, cookies, var, get, set, res) throw with a clear error.
324
+ */
325
+ export function createPrerenderContext<TEnv>(
326
+ params: Record<string, string>,
327
+ pathname: string,
328
+ routeMap: Record<string, string>,
329
+ routeName?: string,
330
+ buildVars?: Record<string, any>,
331
+ isPassthroughRoute?: boolean,
332
+ ): InternalHandlerContext<any, TEnv> {
333
+ const syntheticUrl = new URL(`http://prerender${pathname}`);
334
+ const variables = buildVars ?? {};
147
335
 
148
- // Substitute params
149
- return pattern.replace(/:([^/]+)/g, (_, key) => {
150
- const value = hrefParams[key];
151
- if (value === undefined) {
152
- throw new Error(`Missing param "${key}" for route "${name}"`);
153
- }
154
- return encodeURIComponent(value);
155
- });
336
+ function throwUnavailable(prop: string): never {
337
+ throw new Error(
338
+ `Property "${prop}" is not available during pre-rendering. ` +
339
+ `Fetch data directly in the handler or use a passthrough prerender handler.`,
340
+ );
341
+ }
342
+
343
+ return {
344
+ params,
345
+ build: true,
346
+ get request(): Request {
347
+ return throwUnavailable("request");
156
348
  },
157
- };
349
+ searchParams: syntheticUrl.searchParams,
350
+ search: {},
351
+ pathname,
352
+ url: syntheticUrl,
353
+ originalUrl: syntheticUrl,
354
+ get env(): TEnv {
355
+ return throwUnavailable("env");
356
+ },
357
+ get var(): any {
358
+ return throwUnavailable("var");
359
+ },
360
+ get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
361
+ set: ((keyOrVar: any, value: any) => {
362
+ contextSet(variables, keyOrVar, value);
363
+ }) as any,
364
+ get res(): Response {
365
+ return throwUnavailable("res");
366
+ },
367
+ get headers(): Headers {
368
+ return throwUnavailable("headers");
369
+ },
370
+ // Placeholder use() - replaced by setupBuildUse
371
+ use: () => {
372
+ throw new Error("ctx.use() called before build context was initialized");
373
+ },
374
+ theme: undefined,
375
+ setTheme: undefined,
376
+ routeName: (routeName && !isAutoGeneratedRouteName(routeName)
377
+ ? routeName
378
+ : undefined) as HandlerContext["routeName"],
379
+ setLocationState: () => {
380
+ throwUnavailable("setLocationState");
381
+ },
382
+ reverse: createReverseFunction(
383
+ routeMap,
384
+ routeName,
385
+ params,
386
+ routeName ? isRouteRootScoped(routeName) : undefined,
387
+ ),
388
+ passthrough: createPrerenderPassthroughFn(
389
+ true,
390
+ isPassthroughRoute === true,
391
+ ),
392
+ _routeName: routeName,
393
+ } as InternalHandlerContext<any, TEnv>;
394
+ }
395
+
396
+ /**
397
+ * Create a StaticContext for Static() handlers at build time.
398
+ *
399
+ * Returns an InternalHandlerContext where only reverse and use(handle) work.
400
+ * Static handlers have no URL, no params, no pathname — everything else throws.
401
+ */
402
+ export function createStaticContext<TEnv>(
403
+ routeMap: Record<string, string>,
404
+ routeName?: string,
405
+ ): InternalHandlerContext<any, TEnv> {
406
+ const variables: Record<string, any> = {};
407
+
408
+ function throwUnavailable(prop: string): never {
409
+ throw new Error(
410
+ `Property "${prop}" is not available in Static() handlers. ` +
411
+ `Static handlers render content without request context.`,
412
+ );
413
+ }
414
+
415
+ return {
416
+ get params(): any {
417
+ return throwUnavailable("params");
418
+ },
419
+ build: true,
420
+ get request(): Request {
421
+ return throwUnavailable("request");
422
+ },
423
+ get searchParams(): URLSearchParams {
424
+ return throwUnavailable("searchParams");
425
+ },
426
+ get search(): any {
427
+ return throwUnavailable("search");
428
+ },
429
+ get pathname(): string {
430
+ return throwUnavailable("pathname");
431
+ },
432
+ get url(): URL {
433
+ return throwUnavailable("url");
434
+ },
435
+ get originalUrl(): URL {
436
+ return throwUnavailable("originalUrl");
437
+ },
438
+ get env(): TEnv {
439
+ return throwUnavailable("env");
440
+ },
441
+ get var(): any {
442
+ return throwUnavailable("var");
443
+ },
444
+ get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
445
+ set: ((keyOrVar: any, value: any) => {
446
+ contextSet(variables, keyOrVar, value);
447
+ }) as any,
448
+ get res(): Response {
449
+ return throwUnavailable("res");
450
+ },
451
+ get headers(): Headers {
452
+ return throwUnavailable("headers");
453
+ },
454
+ // Placeholder use() - replaced by setupBuildUse
455
+ use: () => {
456
+ throw new Error("ctx.use() called before build context was initialized");
457
+ },
458
+ theme: undefined,
459
+ setTheme: undefined,
460
+ routeName: (routeName && !isAutoGeneratedRouteName(routeName)
461
+ ? routeName
462
+ : undefined) as HandlerContext["routeName"],
463
+ setLocationState: () => {
464
+ throwUnavailable("setLocationState");
465
+ },
466
+ reverse: createReverseFunction(
467
+ routeMap,
468
+ routeName,
469
+ undefined,
470
+ routeName ? isRouteRootScoped(routeName) : undefined,
471
+ ),
472
+ _routeName: routeName,
473
+ } as InternalHandlerContext<any, TEnv>;
158
474
  }
@@ -15,8 +15,11 @@ import type { HandlerContext, ResolvedSegment } from "../types";
15
15
  import { evaluateRevalidation } from "./revalidation.js";
16
16
  import { getRequestContext } from "../server/request-context.js";
17
17
  import { executeInterceptMiddleware } from "./middleware.js";
18
+ import { createReverseFunction } from "./handler-context.js";
19
+ import { getGlobalRouteMap } from "../route-map-builder.js";
18
20
  import { handleHandlerResult } from "./segment-resolution.js";
19
21
  import type { SegmentResolutionDeps } from "./types.js";
22
+ import { debugLog } from "./logging.js";
20
23
 
21
24
  /**
22
25
  * Check if an intercept's when conditions are satisfied.
@@ -132,6 +135,7 @@ export async function resolveInterceptEntry<TEnv>(
132
135
  params,
133
136
  context.var as Record<string, any>,
134
137
  requestCtx.res,
138
+ createReverseFunction(getGlobalRouteMap()),
135
139
  );
136
140
  if (middlewareResponse) throw middlewareResponse;
137
141
  }
@@ -184,17 +188,19 @@ export async function resolveInterceptEntry<TEnv>(
184
188
  context,
185
189
  actionContext,
186
190
  stale,
191
+ traceSource: "intercept-loader",
187
192
  });
188
193
 
189
194
  if (!shouldRevalidate) {
190
- console.log(
191
- `[Router] Intercept loader ${loader.$$id} skipped (revalidation=false)`,
192
- );
195
+ debugLog("intercept.loader", "skipped revalidation", {
196
+ loaderId: loader.$$id,
197
+ });
193
198
  continue;
194
199
  }
195
- console.log(
196
- `[Router] Intercept loader ${loader.$$id} revalidating (stale=${stale})`,
197
- );
200
+ debugLog("intercept.loader", "revalidating", {
201
+ loaderId: loader.$$id,
202
+ stale,
203
+ });
198
204
  }
199
205
  }
200
206
 
@@ -350,17 +356,19 @@ export async function resolveInterceptLoadersOnly<TEnv>(
350
356
  context,
351
357
  actionContext,
352
358
  stale,
359
+ traceSource: "intercept-loader",
353
360
  });
354
361
 
355
362
  if (!shouldRevalidate) {
356
- console.log(
357
- `[Router] Intercept loader ${loader.$$id} skipped (cache hit, revalidation=false)`,
358
- );
363
+ debugLog("intercept.loader", "skipped on cache hit", {
364
+ loaderId: loader.$$id,
365
+ });
359
366
  continue;
360
367
  }
361
- console.log(
362
- `[Router] Intercept loader ${loader.$$id} revalidating on cache hit (stale=${stale})`,
363
- );
368
+ debugLog("intercept.loader", "revalidating on cache hit", {
369
+ loaderId: loader.$$id,
370
+ stale,
371
+ });
364
372
  }
365
373
 
366
374
  loaderIds.push(loader.$$id);
@@ -378,10 +386,12 @@ export async function resolveInterceptLoadersOnly<TEnv>(
378
386
  return null;
379
387
  }
380
388
 
381
- const loaderDataPromise =
382
- interceptEntry.loading !== undefined
383
- ? Promise.all(loaderPromises)
384
- : await Promise.all(loaderPromises);
389
+ // Match fresh-path semantics: only defer (no await) when loading is truthy.
390
+ // `loading: false` means "no loading UI, await loaders before render" —
391
+ // same as the fresh path's `if (interceptEntry.loading && ...)` check.
392
+ const loaderDataPromise = interceptEntry.loading
393
+ ? Promise.all(loaderPromises)
394
+ : await Promise.all(loaderPromises);
385
395
 
386
396
  return { loaderDataPromise, loaderIds };
387
397
  }