@rangojs/router 0.0.0-experimental.11 → 0.0.0-experimental.111

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