@rangojs/router 0.0.0-experimental.6 → 0.0.0-experimental.60

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 (1105) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +889 -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 +1688 -0
  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 +4778 -770
  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} +16 -18
  807. package/dist/vite/virtual-entries.js.map +1 -0
  808. package/package.json +78 -59
  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 +167 -0
  816. package/skills/hooks/SKILL.md +334 -72
  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 +92 -31
  821. package/skills/loader/SKILL.md +404 -44
  822. package/skills/middleware/SKILL.md +173 -34
  823. package/skills/mime-routes/SKILL.md +128 -0
  824. package/skills/parallel/SKILL.md +204 -1
  825. package/skills/prerender/SKILL.md +643 -0
  826. package/skills/rango/SKILL.md +85 -16
  827. package/skills/response-routes/SKILL.md +411 -0
  828. package/skills/route/SKILL.md +257 -14
  829. package/skills/router-setup/SKILL.md +210 -32
  830. package/skills/tailwind/SKILL.md +129 -0
  831. package/skills/theme/SKILL.md +9 -8
  832. package/skills/typesafety/SKILL.md +328 -89
  833. package/skills/use-cache/SKILL.md +324 -0
  834. package/src/__internal.ts +102 -4
  835. package/src/bin/rango.ts +321 -0
  836. package/src/browser/action-coordinator.ts +97 -0
  837. package/src/browser/action-response-classifier.ts +99 -0
  838. package/src/browser/app-version.ts +14 -0
  839. package/src/browser/event-controller.ts +92 -64
  840. package/src/browser/history-state.ts +80 -0
  841. package/src/browser/intercept-utils.ts +52 -0
  842. package/src/browser/link-interceptor.ts +24 -4
  843. package/src/browser/logging.ts +55 -0
  844. package/src/browser/merge-segment-loaders.ts +20 -12
  845. package/src/browser/navigation-bridge.ts +296 -558
  846. package/src/browser/navigation-client.ts +179 -69
  847. package/src/browser/navigation-store.ts +73 -55
  848. package/src/browser/navigation-transaction.ts +297 -0
  849. package/src/browser/network-error-handler.ts +61 -0
  850. package/src/browser/partial-update.ts +328 -313
  851. package/src/browser/prefetch/cache.ts +206 -0
  852. package/src/browser/prefetch/fetch.ts +150 -0
  853. package/src/browser/prefetch/observer.ts +65 -0
  854. package/src/browser/prefetch/policy.ts +48 -0
  855. package/src/browser/prefetch/queue.ts +160 -0
  856. package/src/browser/prefetch/resource-ready.ts +77 -0
  857. package/src/browser/rango-state.ts +112 -0
  858. package/src/browser/react/Link.tsx +230 -74
  859. package/src/browser/react/NavigationProvider.tsx +87 -11
  860. package/src/browser/react/context.ts +11 -0
  861. package/src/browser/react/filter-segment-order.ts +11 -0
  862. package/src/browser/react/index.ts +12 -12
  863. package/src/browser/react/location-state-shared.ts +95 -53
  864. package/src/browser/react/location-state.ts +60 -15
  865. package/src/browser/react/mount-context.ts +6 -1
  866. package/src/browser/react/nonce-context.ts +23 -0
  867. package/src/browser/react/shallow-equal.ts +27 -0
  868. package/src/browser/react/use-action.ts +29 -51
  869. package/src/browser/react/use-client-cache.ts +5 -3
  870. package/src/browser/react/use-handle.ts +32 -79
  871. package/src/browser/react/use-href.tsx +2 -2
  872. package/src/browser/react/use-link-status.ts +6 -5
  873. package/src/browser/react/use-navigation.ts +22 -63
  874. package/src/browser/react/use-params.ts +65 -0
  875. package/src/browser/react/use-pathname.ts +47 -0
  876. package/src/browser/react/use-router.ts +76 -0
  877. package/src/browser/react/use-search-params.ts +56 -0
  878. package/src/browser/react/use-segments.ts +80 -97
  879. package/src/browser/response-adapter.ts +73 -0
  880. package/src/browser/rsc-router.tsx +214 -58
  881. package/src/browser/scroll-restoration.ts +127 -52
  882. package/src/browser/segment-reconciler.ts +221 -0
  883. package/src/browser/segment-structure-assert.ts +16 -0
  884. package/src/browser/server-action-bridge.ts +510 -603
  885. package/src/browser/shallow.ts +6 -1
  886. package/src/browser/types.ts +141 -48
  887. package/src/browser/validate-redirect-origin.ts +29 -0
  888. package/src/build/generate-manifest.ts +238 -24
  889. package/src/build/generate-route-types.ts +39 -0
  890. package/src/build/index.ts +13 -0
  891. package/src/build/route-trie.ts +265 -0
  892. package/src/build/route-types/ast-helpers.ts +25 -0
  893. package/src/build/route-types/ast-route-extraction.ts +98 -0
  894. package/src/build/route-types/codegen.ts +102 -0
  895. package/src/build/route-types/include-resolution.ts +418 -0
  896. package/src/build/route-types/param-extraction.ts +48 -0
  897. package/src/build/route-types/per-module-writer.ts +128 -0
  898. package/src/build/route-types/router-processing.ts +618 -0
  899. package/src/build/route-types/scan-filter.ts +78 -0
  900. package/src/build/runtime-discovery.ts +231 -0
  901. package/src/cache/background-task.ts +34 -0
  902. package/src/cache/cache-key-utils.ts +44 -0
  903. package/src/cache/cache-policy.ts +125 -0
  904. package/src/cache/cache-runtime.ts +342 -0
  905. package/src/cache/cache-scope.ts +167 -309
  906. package/src/cache/cf/cf-cache-store.ts +571 -17
  907. package/src/cache/cf/index.ts +13 -3
  908. package/src/cache/document-cache.ts +116 -77
  909. package/src/cache/handle-capture.ts +81 -0
  910. package/src/cache/handle-snapshot.ts +41 -0
  911. package/src/cache/index.ts +1 -15
  912. package/src/cache/memory-segment-store.ts +191 -13
  913. package/src/cache/profile-registry.ts +73 -0
  914. package/src/cache/read-through-swr.ts +134 -0
  915. package/src/cache/segment-codec.ts +256 -0
  916. package/src/cache/taint.ts +153 -0
  917. package/src/cache/types.ts +72 -122
  918. package/src/client.rsc.tsx +3 -1
  919. package/src/client.tsx +106 -126
  920. package/src/component-utils.ts +4 -4
  921. package/src/components/DefaultDocument.tsx +5 -1
  922. package/src/context-var.ts +156 -0
  923. package/src/debug.ts +19 -9
  924. package/src/errors.ts +108 -2
  925. package/src/handle.ts +15 -29
  926. package/src/handles/MetaTags.tsx +73 -20
  927. package/src/handles/breadcrumbs.ts +66 -0
  928. package/src/handles/index.ts +1 -0
  929. package/src/handles/meta.ts +30 -13
  930. package/src/host/cookie-handler.ts +165 -0
  931. package/src/host/errors.ts +97 -0
  932. package/src/host/index.ts +53 -0
  933. package/src/host/pattern-matcher.ts +214 -0
  934. package/src/host/router.ts +352 -0
  935. package/src/host/testing.ts +79 -0
  936. package/src/host/types.ts +146 -0
  937. package/src/host/utils.ts +25 -0
  938. package/src/href-client.ts +119 -29
  939. package/src/index.rsc.ts +153 -19
  940. package/src/index.ts +211 -30
  941. package/src/internal-debug.ts +11 -0
  942. package/src/loader.rsc.ts +26 -147
  943. package/src/loader.ts +27 -10
  944. package/src/network-error-thrower.tsx +3 -1
  945. package/src/outlet-provider.tsx +45 -0
  946. package/src/prerender/param-hash.ts +37 -0
  947. package/src/prerender/store.ts +185 -0
  948. package/src/prerender.ts +463 -0
  949. package/src/reverse.ts +349 -0
  950. package/src/root-error-boundary.tsx +41 -29
  951. package/src/route-content-wrapper.tsx +7 -4
  952. package/src/route-definition/dsl-helpers.ts +959 -0
  953. package/src/route-definition/helper-factories.ts +200 -0
  954. package/src/route-definition/helpers-types.ts +431 -0
  955. package/src/route-definition/index.ts +52 -0
  956. package/src/route-definition/redirect.ts +101 -0
  957. package/src/route-definition.ts +1 -1428
  958. package/src/route-map-builder.ts +217 -123
  959. package/src/route-name.ts +53 -0
  960. package/src/route-types.ts +59 -8
  961. package/src/router/content-negotiation.ts +116 -0
  962. package/src/router/debug-manifest.ts +72 -0
  963. package/src/router/error-handling.ts +9 -9
  964. package/src/router/find-match.ts +160 -0
  965. package/src/router/handler-context.ts +418 -86
  966. package/src/router/intercept-resolution.ts +402 -0
  967. package/src/router/lazy-includes.ts +237 -0
  968. package/src/router/loader-resolution.ts +224 -124
  969. package/src/router/logging.ts +251 -0
  970. package/src/router/manifest.ts +154 -35
  971. package/src/router/match-api.ts +620 -0
  972. package/src/router/match-context.ts +5 -3
  973. package/src/router/match-handlers.ts +440 -0
  974. package/src/router/match-middleware/background-revalidation.ts +108 -93
  975. package/src/router/match-middleware/cache-lookup.ts +443 -10
  976. package/src/router/match-middleware/cache-store.ts +98 -26
  977. package/src/router/match-middleware/intercept-resolution.ts +57 -17
  978. package/src/router/match-middleware/segment-resolution.ts +27 -6
  979. package/src/router/match-pipelines.ts +10 -45
  980. package/src/router/match-result.ts +55 -33
  981. package/src/router/metrics.ts +240 -15
  982. package/src/router/middleware-cookies.ts +55 -0
  983. package/src/router/middleware-types.ts +220 -0
  984. package/src/router/middleware.ts +324 -369
  985. package/src/router/pattern-matching.ts +211 -43
  986. package/src/router/prerender-match.ts +402 -0
  987. package/src/router/preview-match.ts +170 -0
  988. package/src/router/revalidation.ts +137 -38
  989. package/src/router/router-context.ts +41 -21
  990. package/src/router/router-interfaces.ts +473 -0
  991. package/src/router/router-options.ts +618 -0
  992. package/src/router/router-registry.ts +24 -0
  993. package/src/router/segment-resolution/fresh.ts +691 -0
  994. package/src/router/segment-resolution/helpers.ts +268 -0
  995. package/src/router/segment-resolution/loader-cache.ts +199 -0
  996. package/src/router/segment-resolution/revalidation.ts +1306 -0
  997. package/src/router/segment-resolution/static-store.ts +67 -0
  998. package/src/router/segment-resolution.ts +21 -0
  999. package/src/router/segment-wrappers.ts +291 -0
  1000. package/src/router/telemetry-otel.ts +299 -0
  1001. package/src/router/telemetry.ts +300 -0
  1002. package/src/router/timeout.ts +148 -0
  1003. package/src/router/trie-matching.ts +239 -0
  1004. package/src/router/types.ts +78 -3
  1005. package/src/router.ts +703 -4183
  1006. package/src/rsc/handler-context.ts +45 -0
  1007. package/src/rsc/handler.ts +775 -756
  1008. package/src/rsc/helpers.ts +140 -6
  1009. package/src/rsc/index.ts +0 -20
  1010. package/src/rsc/loader-fetch.ts +209 -0
  1011. package/src/rsc/manifest-init.ts +90 -0
  1012. package/src/rsc/nonce.ts +14 -0
  1013. package/src/rsc/origin-guard.ts +141 -0
  1014. package/src/rsc/progressive-enhancement.ts +383 -0
  1015. package/src/rsc/response-error.ts +37 -0
  1016. package/src/rsc/response-route-handler.ts +347 -0
  1017. package/src/rsc/rsc-rendering.ts +242 -0
  1018. package/src/rsc/runtime-warnings.ts +42 -0
  1019. package/src/rsc/server-action.ts +350 -0
  1020. package/src/rsc/ssr-setup.ts +128 -0
  1021. package/src/rsc/types.ts +45 -11
  1022. package/src/search-params.ts +230 -0
  1023. package/src/segment-system.tsx +166 -18
  1024. package/src/server/context.ts +302 -58
  1025. package/src/server/cookie-store.ts +190 -0
  1026. package/src/server/fetchable-loader-store.ts +37 -0
  1027. package/src/server/handle-store.ts +94 -15
  1028. package/src/server/loader-registry.ts +24 -64
  1029. package/src/server/request-context.ts +482 -78
  1030. package/src/server.ts +35 -128
  1031. package/src/ssr/index.tsx +103 -30
  1032. package/src/static-handler.ts +114 -0
  1033. package/src/theme/ThemeProvider.tsx +21 -15
  1034. package/src/theme/ThemeScript.tsx +5 -5
  1035. package/src/theme/constants.ts +5 -2
  1036. package/src/theme/index.ts +4 -14
  1037. package/src/theme/theme-context.ts +4 -30
  1038. package/src/theme/theme-script.ts +21 -18
  1039. package/src/types/boundaries.ts +158 -0
  1040. package/src/types/cache-types.ts +198 -0
  1041. package/src/types/error-types.ts +192 -0
  1042. package/src/types/global-namespace.ts +100 -0
  1043. package/src/types/handler-context.ts +781 -0
  1044. package/src/types/index.ts +88 -0
  1045. package/src/types/loader-types.ts +182 -0
  1046. package/src/types/route-config.ts +170 -0
  1047. package/src/types/route-entry.ts +109 -0
  1048. package/src/types/segments.ts +150 -0
  1049. package/src/types.ts +1 -1623
  1050. package/src/urls/include-helper.ts +197 -0
  1051. package/src/urls/index.ts +53 -0
  1052. package/src/urls/path-helper-types.ts +339 -0
  1053. package/src/urls/path-helper.ts +329 -0
  1054. package/src/urls/pattern-types.ts +107 -0
  1055. package/src/urls/response-types.ts +106 -0
  1056. package/src/urls/type-extraction.ts +372 -0
  1057. package/src/urls/urls-function.ts +98 -0
  1058. package/src/urls.ts +1 -802
  1059. package/src/use-loader.tsx +85 -77
  1060. package/src/vite/discovery/bundle-postprocess.ts +184 -0
  1061. package/src/vite/discovery/discover-routers.ts +348 -0
  1062. package/src/vite/discovery/prerender-collection.ts +385 -0
  1063. package/src/vite/discovery/route-types-writer.ts +258 -0
  1064. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1065. package/src/vite/discovery/state.ts +108 -0
  1066. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1067. package/src/vite/index.ts +11 -782
  1068. package/src/vite/plugin-types.ts +48 -0
  1069. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1070. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1071. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1072. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -53
  1073. package/src/vite/plugins/expose-id-utils.ts +287 -0
  1074. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1075. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1076. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1077. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1078. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1079. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1080. package/src/vite/plugins/performance-tracks.ts +88 -0
  1081. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1082. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1083. package/src/vite/plugins/version-injector.ts +83 -0
  1084. package/src/vite/plugins/version-plugin.ts +266 -0
  1085. package/src/vite/plugins/virtual-entries.ts +123 -0
  1086. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1087. package/src/vite/rango.ts +461 -0
  1088. package/src/vite/router-discovery.ts +777 -0
  1089. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1090. package/src/vite/utils/banner.ts +36 -0
  1091. package/src/vite/utils/bundle-analysis.ts +137 -0
  1092. package/src/vite/utils/manifest-utils.ts +70 -0
  1093. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1094. package/src/vite/utils/prerender-utils.ts +189 -0
  1095. package/src/vite/utils/shared-utils.ts +170 -0
  1096. package/CLAUDE.md +0 -43
  1097. package/src/browser/lru-cache.ts +0 -69
  1098. package/src/browser/request-controller.ts +0 -164
  1099. package/src/cache/memory-store.ts +0 -253
  1100. package/src/href.ts +0 -255
  1101. package/src/server/route-manifest-cache.ts +0 -173
  1102. package/src/vite/expose-handle-id.ts +0 -209
  1103. package/src/vite/expose-loader-id.ts +0 -426
  1104. package/src/vite/expose-location-state-id.ts +0 -177
  1105. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Cookie Store — Next.js-style cookie facade backed by the response-derived model.
3
+ *
4
+ * `cookies()` returns a CookieStore scoped to the current request.
5
+ * Reads merge the original Cookie header with Set-Cookie mutations
6
+ * already queued on the response stub (last-write-wins).
7
+ * Writes append Set-Cookie to the response stub.
8
+ */
9
+
10
+ import type { CookieOptions } from "../router/middleware-types.js";
11
+ import { getRequestContext } from "./request-context.js";
12
+ import { INSIDE_CACHE_EXEC } from "../cache/taint.js";
13
+
14
+ /**
15
+ * A single cookie entry returned by get() and getAll().
16
+ */
17
+ export interface Cookie {
18
+ name: string;
19
+ value: string;
20
+ }
21
+
22
+ /**
23
+ * Request-scoped cookie store.
24
+ *
25
+ * Reads see the effective merged view (original request + same-request mutations).
26
+ * Writes append Set-Cookie headers to the shared response stub.
27
+ */
28
+ export interface CookieStore {
29
+ /** Get a single cookie by name. Returns undefined if not set or deleted. */
30
+ get(name: string): Cookie | undefined;
31
+
32
+ /** Get all effective cookies, or all cookies with a given name. */
33
+ getAll(name?: string): Cookie[];
34
+
35
+ /** Check whether a cookie exists in the effective view. */
36
+ has(name: string): boolean;
37
+
38
+ /** Set a cookie (appends Set-Cookie to the response stub). */
39
+ set(name: string, value: string, options?: CookieOptions): void;
40
+
41
+ /** Delete a cookie (appends Set-Cookie with maxAge=0 to the response stub). */
42
+ delete(name: string, options?: Pick<CookieOptions, "domain" | "path">): void;
43
+ }
44
+
45
+ /**
46
+ * Get the request-scoped cookie store.
47
+ *
48
+ * Must be called inside a request context (middleware, handler, loader, action).
49
+ * Throws if called outside request scope.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * import { cookies } from "@rangojs/router";
54
+ *
55
+ * // In a handler, loader, or action:
56
+ * const session = cookies().get("session")?.value;
57
+ * cookies().set("session", "new-token", { httpOnly: true });
58
+ * cookies().delete("session");
59
+ * ```
60
+ */
61
+ export function cookies(): CookieStore {
62
+ const ctx = getRequestContext();
63
+ assertNotInsideCacheContext(ctx, "cookies");
64
+ return createCookieStore(ctx);
65
+ }
66
+
67
+ /**
68
+ * Read-only view of HTTP headers.
69
+ * Exposes only the read methods of the Headers API.
70
+ */
71
+ export interface ReadonlyHeaders {
72
+ get(name: string): string | null;
73
+ has(name: string): boolean;
74
+ entries(): HeadersIterator<[string, string]>;
75
+ keys(): HeadersIterator<string>;
76
+ values(): HeadersIterator<string>;
77
+ forEach(
78
+ callback: (value: string, name: string, parent: ReadonlyHeaders) => void,
79
+ ): void;
80
+ [Symbol.iterator](): HeadersIterator<[string, string]>;
81
+ }
82
+
83
+ // Minimal iterator interface (avoids pulling IterableIterator from lib.dom)
84
+ type HeadersIterator<T> = IterableIterator<T>;
85
+
86
+ /**
87
+ * Throw if called inside a "use cache" function.
88
+ * Reading request-scoped data (cookies, headers) inside a cached function
89
+ * produces results that vary per request but the cache key does not include
90
+ * those values, leading to one user's data being served to another.
91
+ */
92
+ function assertNotInsideCacheContext(ctx: unknown, fnName: string): void {
93
+ if (
94
+ ctx !== null &&
95
+ ctx !== undefined &&
96
+ typeof ctx === "object" &&
97
+ (INSIDE_CACHE_EXEC as symbol) in (ctx as Record<symbol, unknown>)
98
+ ) {
99
+ throw new Error(
100
+ `${fnName}() cannot be called inside a "use cache" function. ` +
101
+ `Request-scoped data (cookies, headers) varies per request but is not ` +
102
+ `reflected in the cache key, so cached results would be served to the ` +
103
+ `wrong users. Extract the value before the cached function and pass it ` +
104
+ `as an argument:\n\n` +
105
+ ` const locale = cookies().get("locale")?.value ?? "en";\n` +
106
+ ` const data = await getCachedData(locale); // locale is now in the cache key`,
107
+ );
108
+ }
109
+ }
110
+
111
+ const HEADERS_MUTATION_METHODS = new Set(["set", "append", "delete"]);
112
+
113
+ /**
114
+ * Get the original request headers (read-only).
115
+ *
116
+ * Must be called inside a request context.
117
+ * Returns a read-only view of the incoming request's headers.
118
+ * Mutation methods (set, append, delete) throw at runtime.
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * import { headers } from "@rangojs/router";
123
+ *
124
+ * const auth = headers().get("authorization");
125
+ * const contentType = headers().get("content-type");
126
+ * ```
127
+ */
128
+ export function headers(): ReadonlyHeaders {
129
+ const ctx = getRequestContext();
130
+ assertNotInsideCacheContext(ctx, "headers");
131
+ return new Proxy(ctx.request.headers, {
132
+ get(target, prop, receiver) {
133
+ if (typeof prop === "string" && HEADERS_MUTATION_METHODS.has(prop)) {
134
+ return () => {
135
+ throw new Error(
136
+ `headers().${prop}() is not allowed. headers() returns a read-only view of request headers. ` +
137
+ `Use ctx.header() to set response headers.`,
138
+ );
139
+ };
140
+ }
141
+ const value = Reflect.get(target, prop, receiver);
142
+ return typeof value === "function" ? value.bind(target) : value;
143
+ },
144
+ }) as unknown as ReadonlyHeaders;
145
+ }
146
+
147
+ /**
148
+ * Create a CookieStore backed by a RequestContext.
149
+ * @internal Shared between cookies() shorthand and context methods.
150
+ */
151
+ function createCookieStore(ctx: {
152
+ cookie(name: string): string | undefined;
153
+ cookies(): Record<string, string>;
154
+ setCookie(name: string, value: string, options?: CookieOptions): void;
155
+ deleteCookie(
156
+ name: string,
157
+ options?: Pick<CookieOptions, "domain" | "path">,
158
+ ): void;
159
+ }): CookieStore {
160
+ return {
161
+ get(name: string): Cookie | undefined {
162
+ const value = ctx.cookie(name);
163
+ return value !== undefined ? { name, value } : undefined;
164
+ },
165
+
166
+ getAll(name?: string): Cookie[] {
167
+ const all = ctx.cookies();
168
+ if (name !== undefined) {
169
+ const value = all[name];
170
+ return value !== undefined ? [{ name, value }] : [];
171
+ }
172
+ return Object.entries(all).map(([n, v]) => ({ name: n, value: v }));
173
+ },
174
+
175
+ has(name: string): boolean {
176
+ return ctx.cookie(name) !== undefined;
177
+ },
178
+
179
+ set(name: string, value: string, options?: CookieOptions): void {
180
+ ctx.setCookie(name, value, options);
181
+ },
182
+
183
+ delete(
184
+ name: string,
185
+ options?: Pick<CookieOptions, "domain" | "path">,
186
+ ): void {
187
+ ctx.deleteCookie(name, options);
188
+ },
189
+ };
190
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Fetchable loader store - internal registry for fetchable loader functions.
3
+ *
4
+ * Extracted into its own module to avoid circular dependencies between
5
+ * loader.rsc.ts and request-context.ts. This module has no imports from
6
+ * either, so both can safely import from here.
7
+ *
8
+ * Populated by createLoader() in loader.rsc.ts.
9
+ * Read by request-context.ts (for ctx.use()) and loader-registry.ts (for GET-based fetching).
10
+ */
11
+
12
+ import type { LoaderFn } from "../types.js";
13
+ import type { MiddlewareFn } from "../router/middleware.js";
14
+
15
+ export interface LoaderRegistryEntry {
16
+ fn: LoaderFn<any, any, any>;
17
+ middleware: MiddlewareFn[];
18
+ /** Whether this loader is fetchable via the _rsc_loader endpoint. */
19
+ fetchable: boolean;
20
+ }
21
+
22
+ const fetchableLoaderRegistry = new Map<string, LoaderRegistryEntry>();
23
+
24
+ export function registerFetchableLoader(
25
+ id: string,
26
+ fn: LoaderFn<any, any, any>,
27
+ middleware: MiddlewareFn[],
28
+ fetchable: boolean,
29
+ ): void {
30
+ fetchableLoaderRegistry.set(id, { fn, middleware, fetchable });
31
+ }
32
+
33
+ export function getFetchableLoader(
34
+ id: string,
35
+ ): LoaderRegistryEntry | undefined {
36
+ return fetchableLoaderRegistry.get(id);
37
+ }
@@ -13,6 +13,19 @@
13
13
  */
14
14
  export type HandleData = Record<string, Record<string, unknown[]>>;
15
15
 
16
+ function createLateHandlePushError(
17
+ handleName: string,
18
+ segmentId: string,
19
+ ): Error {
20
+ const error = new Error(
21
+ `Handle "${handleName}" for segment "${segmentId}" was pushed after handle collection completed. ` +
22
+ `This usually means an async JSX subtree suspended and later tried to push a handle during streaming. ` +
23
+ `Push handles from the route/layout handler or during the initial synchronous JSX render instead.`,
24
+ );
25
+ error.name = "LateHandlePushError";
26
+ return error;
27
+ }
28
+
16
29
  /**
17
30
  * Deep clone handle data to create a snapshot.
18
31
  * @internal
@@ -44,11 +57,26 @@ export interface HandleStore {
44
57
  track<T>(promise: Promise<T>): Promise<T>;
45
58
 
46
59
  /**
47
- * Promise that resolves when all tracked handlers have settled.
48
- * Does not reject - uses Promise.allSettled internally.
60
+ * Signal that no more track() calls will be made.
61
+ * settled will not resolve until seal() is called AND all tracked
62
+ * promises have settled. Calling stream() or getData() auto-seals.
63
+ */
64
+ seal(): void;
65
+
66
+ /**
67
+ * Promise that resolves when the store is sealed AND all tracked
68
+ * handlers have settled.
49
69
  */
50
70
  readonly settled: Promise<void>;
51
71
 
72
+ /**
73
+ * Optional error callback for late streaming-handle failures.
74
+ * Called when push() throws LateHandlePushError (handle pushed after
75
+ * stream completion). Allows the router to surface these errors
76
+ * to onError and telemetry.
77
+ */
78
+ onError?: (error: Error) => void;
79
+
52
80
  /**
53
81
  * Push handle data for a specific handle and segment.
54
82
  * Multiple pushes to the same handle/segment accumulate in an array.
@@ -58,9 +86,7 @@ export interface HandleStore {
58
86
 
59
87
  /**
60
88
  * Get all collected handle data after all handlers have settled.
61
- * Returns a promise that waits for `settled`, then returns the data.
62
- * The data may contain unresolved promises which RSC will stream.
63
- * @deprecated Use stream() for progressive updates
89
+ * Waits for `settled`, then returns the finalized data.
64
90
  */
65
91
  getData(): Promise<HandleData>;
66
92
 
@@ -81,7 +107,10 @@ export interface HandleStore {
81
107
  * Replay cached handle data back into the store (for cache hits).
82
108
  * Used to restore handle data when serving cached segments.
83
109
  */
84
- replaySegmentData(segmentId: string, segmentHandles: Record<string, unknown[]>): void;
110
+ replaySegmentData(
111
+ segmentId: string,
112
+ segmentHandles: Record<string, unknown[]>,
113
+ ): void;
85
114
  }
86
115
 
87
116
  /**
@@ -105,9 +134,31 @@ export interface HandleStore {
105
134
  * ```
106
135
  */
107
136
  export function createHandleStore(): HandleStore {
108
- const pending: Promise<unknown>[] = [];
109
137
  const data: HandleData = {};
110
138
 
139
+ // Settlement barrier: resolved only when sealed AND inflight === 0.
140
+ // seal() signals "no more track() calls". Each track() increments
141
+ // inflightCount, each promise.finally() decrements. settled resolves
142
+ // once both conditions are met — even if tracks are added while
143
+ // earlier ones are still in flight.
144
+ let sealed = false;
145
+ let inflightCount = 0;
146
+ let drainWaiters: (() => void)[] = [];
147
+
148
+ function notifyDrain() {
149
+ if (sealed && inflightCount === 0 && drainWaiters.length > 0) {
150
+ const waiters = drainWaiters;
151
+ drainWaiters = [];
152
+ for (const resolve of waiters) resolve();
153
+ }
154
+ }
155
+
156
+ function sealInternal() {
157
+ if (sealed) return;
158
+ sealed = true;
159
+ notifyDrain();
160
+ }
161
+
111
162
  // Queue for pending emissions and resolver for waiting consumer
112
163
  let pendingEmissions: HandleData[] = [];
113
164
  let emissionResolver: (() => void) | null = null;
@@ -134,18 +185,38 @@ export function createHandleStore(): HandleStore {
134
185
 
135
186
  return {
136
187
  track<T>(promise: Promise<T>): Promise<T> {
137
- pending.push(promise);
188
+ inflightCount++;
189
+ // Use .then(onSettle, onSettle) instead of .finally() to avoid
190
+ // creating an unhandled rejection branch when the tracked promise
191
+ // rejects (e.g. error route handlers). .finally() re-throws the
192
+ // rejection on a new branch that nobody catches, which can crash
193
+ // the server process.
194
+ const onSettle = () => {
195
+ inflightCount--;
196
+ notifyDrain();
197
+ };
198
+ promise.then(onSettle, onSettle);
138
199
  return promise;
139
200
  },
140
201
 
202
+ seal() {
203
+ sealInternal();
204
+ },
205
+
141
206
  get settled(): Promise<void> {
142
- if (pending.length === 0) {
143
- return Promise.resolve();
144
- }
145
- return Promise.allSettled(pending).then(() => {});
207
+ if (sealed && inflightCount === 0) return Promise.resolve();
208
+ return new Promise<void>((resolve) => {
209
+ drainWaiters.push(resolve);
210
+ });
146
211
  },
147
212
 
148
213
  push(handleName: string, segmentId: string, value: unknown): void {
214
+ if (completed) {
215
+ const error = createLateHandlePushError(handleName, segmentId);
216
+ if (this.onError) this.onError(error);
217
+ throw error;
218
+ }
219
+
149
220
  if (!data[handleName]) {
150
221
  data[handleName] = {};
151
222
  }
@@ -160,10 +231,14 @@ export function createHandleStore(): HandleStore {
160
231
  },
161
232
 
162
233
  getData(): Promise<HandleData> {
163
- return this.settled.then(() => data);
234
+ sealInternal();
235
+ return this.settled.then(() => cloneHandleData(data));
164
236
  },
165
237
 
166
238
  async *stream(): AsyncGenerator<HandleData, void, unknown> {
239
+ // Auto-seal: stream() is called after all track() registrations.
240
+ sealInternal();
241
+
167
242
  // Set up completion handler
168
243
  this.settled.then(() => {
169
244
  completed = true;
@@ -178,7 +253,8 @@ export function createHandleStore(): HandleStore {
178
253
  if (Object.keys(data).length > 0) {
179
254
  // Clear pending emissions since we're yielding current state
180
255
  pendingEmissions = [];
181
- yield cloneHandleData(data);
256
+ const snapshot = cloneHandleData(data);
257
+ yield snapshot;
182
258
  }
183
259
 
184
260
  // Continue streaming on each push
@@ -211,7 +287,10 @@ export function createHandleStore(): HandleStore {
211
287
  return result;
212
288
  },
213
289
 
214
- replaySegmentData(segmentId: string, segmentHandles: Record<string, unknown[]>): void {
290
+ replaySegmentData(
291
+ segmentId: string,
292
+ segmentHandles: Record<string, unknown[]>,
293
+ ): void {
215
294
  for (const handleName in segmentHandles) {
216
295
  if (!data[handleName]) {
217
296
  data[handleName] = {};
@@ -6,13 +6,10 @@
6
6
  */
7
7
 
8
8
  import type { LoaderFn } from "../types.js";
9
- import type { MiddlewareFn } from "../router/middleware.js";
10
- import { getFetchableLoader } from "../loader.rsc.js";
11
-
12
- interface RegisteredLoader {
13
- fn: LoaderFn<any, any, any>;
14
- middleware: MiddlewareFn[];
15
- }
9
+ import {
10
+ getFetchableLoader,
11
+ type LoaderRegistryEntry,
12
+ } from "./fetchable-loader-store.js";
16
13
 
17
14
  // Server-side cache - maps loader $$id to function and middleware
18
15
  // This is a CACHE populated by getLoaderLazy() when loaders are first accessed.
@@ -21,7 +18,7 @@ interface RegisteredLoader {
21
18
  // 1. Avoid repeated lookups/imports for the same loader
22
19
  // 2. Support lazy loading in production (loaders imported on-demand)
23
20
  // 3. Provide a stable reference for the RSC handler
24
- const loaderRegistry = new Map<string, RegisteredLoader>();
21
+ const loaderRegistry = new Map<string, LoaderRegistryEntry>();
25
22
 
26
23
  // Lazy import map - set by the loader manifest
27
24
  // Maps loader $$id to a function that imports the loader module
@@ -32,35 +29,11 @@ let lazyLoaderImports: Map<string, LazyLoaderImport> | null = null;
32
29
  * Set the lazy loader imports map (called by the loader manifest)
33
30
  */
34
31
  export function setLoaderImports(
35
- imports: Record<string, LazyLoaderImport>
32
+ imports: Record<string, LazyLoaderImport>,
36
33
  ): void {
37
34
  lazyLoaderImports = new Map(Object.entries(imports));
38
35
  }
39
36
 
40
- /**
41
- * Register a fetchable loader by $$id
42
- * Called by createLoader when fetchable option is provided
43
- */
44
- export function registerLoader(
45
- id: string,
46
- fn: LoaderFn<any, any, any>,
47
- middleware: MiddlewareFn[] = []
48
- ): void {
49
- if (loaderRegistry.has(id)) {
50
- // Already registered (can happen during HMR)
51
- return;
52
- }
53
- loaderRegistry.set(id, { fn, middleware });
54
- }
55
-
56
- /**
57
- * Get a registered loader by $$id (synchronous)
58
- * Returns undefined if loader is not registered
59
- */
60
- export function getLoader(id: string): RegisteredLoader | undefined {
61
- return loaderRegistry.get(id);
62
- }
63
-
64
37
  /**
65
38
  * Get a loader by $$id, loading it lazily if needed
66
39
  * This is the primary method for the RSC handler to get loaders
@@ -69,22 +42,23 @@ export function getLoader(id: string): RegisteredLoader | undefined {
69
42
  * In dev: IDs are "filePath#exportName", resolved via dynamic import
70
43
  */
71
44
  export async function getLoaderLazy(
72
- id: string
73
- ): Promise<RegisteredLoader | undefined> {
74
- // Check if already cached in main registry
75
- const existing = loaderRegistry.get(id);
76
- if (existing) {
77
- return existing;
78
- }
79
-
80
- // Check the fetchable loader registry (populated by createLoader)
45
+ id: string,
46
+ ): Promise<LoaderRegistryEntry | undefined> {
47
+ // Always check fetchableLoaderRegistry first it's the source of truth.
48
+ // createLoader() updates it during module re-evaluation (HMR), so checking
49
+ // here ensures we pick up the fresh function after a loader file change.
81
50
  const fetchable = getFetchableLoader(id);
82
51
  if (fetchable) {
83
- // Cache in main registry for future requests
84
52
  loaderRegistry.set(id, fetchable);
85
53
  return fetchable;
86
54
  }
87
55
 
56
+ // Fall back to local cache (populated by previous lazy imports in production)
57
+ const existing = loaderRegistry.get(id);
58
+ if (existing) {
59
+ return existing;
60
+ }
61
+
88
62
  // Try to lazy load from the import map (production mode)
89
63
  if (lazyLoaderImports && lazyLoaderImports.size > 0) {
90
64
  const lazyImport = lazyLoaderImports.get(id);
@@ -130,20 +104,6 @@ export async function getLoaderLazy(
130
104
  return undefined;
131
105
  }
132
106
 
133
- /**
134
- * Check if a loader is registered by $$id
135
- */
136
- export function hasLoader(id: string): boolean {
137
- return loaderRegistry.has(id) || getFetchableLoader(id) !== undefined;
138
- }
139
-
140
- /**
141
- * Get all registered loader IDs (for debugging)
142
- */
143
- export function getRegisteredLoaderIds(): string[] {
144
- return Array.from(loaderRegistry.keys());
145
- }
146
-
147
107
  /**
148
108
  * Register a loader by its $$id (injected by Vite plugin)
149
109
  * This is called during module loading to cache loaders
@@ -155,12 +115,8 @@ export function registerLoaderById(loader: {
155
115
  if (!loader.$$id) {
156
116
  return;
157
117
  }
158
- if (loaderRegistry.has(loader.$$id)) {
159
- // Already registered (can happen during HMR)
160
- return;
161
- }
162
-
163
- // For fetchable loaders, fn is stored in the fetchable registry by $$id
118
+ // For fetchable loaders, fn is stored in the fetchable registry by $$id.
119
+ // Always re-check the fetchable registry so HMR picks up the new function.
164
120
  const fetchable = getFetchableLoader(loader.$$id);
165
121
  if (fetchable) {
166
122
  loaderRegistry.set(loader.$$id, fetchable);
@@ -169,6 +125,10 @@ export function registerLoaderById(loader: {
169
125
 
170
126
  // Fall back to using fn from the loader object (non-fetchable loaders)
171
127
  if (loader.fn) {
172
- loaderRegistry.set(loader.$$id, { fn: loader.fn, middleware: [] });
128
+ loaderRegistry.set(loader.$$id, {
129
+ fn: loader.fn,
130
+ middleware: [],
131
+ fetchable: false,
132
+ });
173
133
  }
174
134
  }