@rangojs/router 0.0.0-experimental.2 → 0.0.0-experimental.20dbba0c

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 (1145) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +972 -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/{src/__mocks__/version.ts → dist/__mocks__/version.js} +1 -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 +1689 -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 +5320 -834
  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/dist/vite/package-resolution.js +112 -0
  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} +18 -17
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +92 -55
  811. package/skills/breadcrumbs/SKILL.md +252 -0
  812. package/skills/cache-guide/SKILL.md +294 -0
  813. package/skills/caching/SKILL.md +173 -231
  814. package/skills/composability/SKILL.md +172 -0
  815. package/skills/debug-manifest/SKILL.md +112 -0
  816. package/skills/document-cache/SKILL.md +88 -58
  817. package/skills/fonts/SKILL.md +167 -0
  818. package/skills/handler-use/SKILL.md +362 -0
  819. package/skills/hooks/SKILL.md +420 -67
  820. package/skills/host-router/SKILL.md +218 -0
  821. package/skills/intercept/SKILL.md +243 -202
  822. package/skills/layout/SKILL.md +262 -146
  823. package/skills/links/SKILL.md +313 -0
  824. package/skills/loader/SKILL.md +525 -251
  825. package/skills/middleware/SKILL.md +248 -320
  826. package/skills/migrate-nextjs/SKILL.md +560 -0
  827. package/skills/migrate-react-router/SKILL.md +765 -0
  828. package/skills/mime-routes/SKILL.md +128 -0
  829. package/skills/parallel/SKILL.md +393 -158
  830. package/skills/prerender/SKILL.md +685 -0
  831. package/skills/rango/SKILL.md +120 -0
  832. package/skills/response-routes/SKILL.md +419 -0
  833. package/skills/route/SKILL.md +388 -89
  834. package/skills/router-setup/SKILL.md +388 -267
  835. package/skills/streams-and-websockets/SKILL.md +283 -0
  836. package/skills/tailwind/SKILL.md +129 -0
  837. package/skills/theme/SKILL.md +36 -11
  838. package/skills/typesafety/SKILL.md +456 -173
  839. package/skills/use-cache/SKILL.md +324 -0
  840. package/src/__internal.ts +273 -0
  841. package/src/bin/rango.ts +321 -0
  842. package/src/browser/action-coordinator.ts +97 -0
  843. package/src/browser/action-response-classifier.ts +99 -0
  844. package/src/browser/app-shell.ts +52 -0
  845. package/src/browser/app-version.ts +14 -0
  846. package/src/browser/event-controller.ts +92 -64
  847. package/src/browser/history-state.ts +80 -0
  848. package/src/browser/intercept-utils.ts +52 -0
  849. package/src/browser/link-interceptor.ts +24 -4
  850. package/src/browser/logging.ts +55 -0
  851. package/src/browser/merge-segment-loaders.ts +20 -12
  852. package/src/browser/navigation-bridge.ts +383 -557
  853. package/src/browser/navigation-client.ts +229 -68
  854. package/src/browser/navigation-store.ts +97 -55
  855. package/src/browser/navigation-transaction.ts +297 -0
  856. package/src/browser/network-error-handler.ts +61 -0
  857. package/src/browser/partial-update.ts +391 -304
  858. package/src/browser/prefetch/cache.ts +314 -0
  859. package/src/browser/prefetch/fetch.ts +282 -0
  860. package/src/browser/prefetch/observer.ts +65 -0
  861. package/src/browser/prefetch/policy.ts +48 -0
  862. package/src/browser/prefetch/queue.ts +191 -0
  863. package/src/browser/prefetch/resource-ready.ts +77 -0
  864. package/src/browser/rango-state.ts +152 -0
  865. package/src/browser/react/Link.tsx +258 -74
  866. package/src/browser/react/NavigationProvider.tsx +219 -33
  867. package/src/browser/react/context.ts +11 -0
  868. package/src/browser/react/filter-segment-order.ts +11 -0
  869. package/src/browser/react/index.ts +12 -12
  870. package/src/browser/react/location-state-shared.ts +95 -53
  871. package/src/browser/react/location-state.ts +60 -15
  872. package/src/browser/react/mount-context.ts +37 -0
  873. package/src/browser/react/nonce-context.ts +23 -0
  874. package/src/browser/react/shallow-equal.ts +27 -0
  875. package/src/browser/react/use-action.ts +29 -51
  876. package/src/browser/react/use-client-cache.ts +5 -3
  877. package/src/browser/react/use-handle.ts +30 -95
  878. package/src/browser/react/use-href.tsx +20 -188
  879. package/src/browser/react/use-link-status.ts +6 -5
  880. package/src/browser/react/use-mount.ts +31 -0
  881. package/src/browser/react/use-navigation.ts +49 -80
  882. package/src/browser/react/use-params.ts +75 -0
  883. package/src/browser/react/use-pathname.ts +47 -0
  884. package/src/browser/react/use-router.ts +83 -0
  885. package/src/browser/react/use-search-params.ts +56 -0
  886. package/src/browser/react/use-segments.ts +80 -97
  887. package/src/browser/response-adapter.ts +73 -0
  888. package/src/browser/rsc-router.tsx +251 -70
  889. package/src/browser/scroll-restoration.ts +127 -52
  890. package/src/browser/segment-reconciler.ts +243 -0
  891. package/src/browser/segment-structure-assert.ts +83 -0
  892. package/src/browser/server-action-bridge.ts +510 -588
  893. package/src/browser/shallow.ts +6 -1
  894. package/src/browser/types.ts +176 -58
  895. package/src/browser/validate-redirect-origin.ts +29 -0
  896. package/src/build/generate-manifest.ts +438 -0
  897. package/src/build/generate-route-types.ts +39 -0
  898. package/src/build/index.ts +35 -0
  899. package/src/build/route-trie.ts +291 -0
  900. package/src/build/route-types/ast-helpers.ts +25 -0
  901. package/src/build/route-types/ast-route-extraction.ts +98 -0
  902. package/src/build/route-types/codegen.ts +102 -0
  903. package/src/build/route-types/include-resolution.ts +418 -0
  904. package/src/build/route-types/param-extraction.ts +48 -0
  905. package/src/build/route-types/per-module-writer.ts +128 -0
  906. package/src/build/route-types/router-processing.ts +618 -0
  907. package/src/build/route-types/scan-filter.ts +85 -0
  908. package/src/build/runtime-discovery.ts +231 -0
  909. package/src/cache/background-task.ts +34 -0
  910. package/src/cache/cache-key-utils.ts +44 -0
  911. package/src/cache/cache-policy.ts +125 -0
  912. package/src/cache/cache-runtime.ts +342 -0
  913. package/src/cache/cache-scope.ts +167 -309
  914. package/src/cache/cf/cf-cache-store.ts +573 -21
  915. package/src/cache/cf/index.ts +13 -3
  916. package/src/cache/document-cache.ts +116 -77
  917. package/src/cache/handle-capture.ts +81 -0
  918. package/src/cache/handle-snapshot.ts +41 -0
  919. package/src/cache/index.ts +1 -15
  920. package/src/cache/memory-segment-store.ts +191 -13
  921. package/src/cache/profile-registry.ts +73 -0
  922. package/src/cache/read-through-swr.ts +134 -0
  923. package/src/cache/segment-codec.ts +256 -0
  924. package/src/cache/taint.ts +153 -0
  925. package/src/cache/types.ts +76 -121
  926. package/src/client.rsc.tsx +12 -15
  927. package/src/client.tsx +142 -308
  928. package/src/component-utils.ts +4 -4
  929. package/src/components/DefaultDocument.tsx +6 -2
  930. package/src/context-var.ts +156 -0
  931. package/src/debug.ts +243 -0
  932. package/src/errors.ts +108 -2
  933. package/src/handle.ts +74 -19
  934. package/src/handles/MetaTags.tsx +76 -23
  935. package/src/handles/breadcrumbs.ts +66 -0
  936. package/src/handles/index.ts +1 -0
  937. package/src/handles/meta.ts +32 -15
  938. package/src/host/cookie-handler.ts +165 -0
  939. package/src/host/errors.ts +97 -0
  940. package/src/host/index.ts +53 -0
  941. package/src/host/pattern-matcher.ts +214 -0
  942. package/src/host/router.ts +352 -0
  943. package/src/host/testing.ts +79 -0
  944. package/src/host/types.ts +146 -0
  945. package/src/host/utils.ts +25 -0
  946. package/src/href-client.ts +141 -47
  947. package/src/index.rsc.ts +187 -28
  948. package/src/index.ts +271 -38
  949. package/src/internal-debug.ts +11 -0
  950. package/src/loader.rsc.ts +27 -142
  951. package/src/loader.ts +27 -10
  952. package/src/network-error-thrower.tsx +3 -1
  953. package/src/outlet-context.ts +1 -1
  954. package/src/outlet-provider.tsx +45 -0
  955. package/src/prerender/param-hash.ts +37 -0
  956. package/src/prerender/store.ts +186 -0
  957. package/src/prerender.ts +524 -0
  958. package/src/response-utils.ts +28 -0
  959. package/src/reverse.ts +355 -0
  960. package/src/root-error-boundary.tsx +41 -29
  961. package/src/route-content-wrapper.tsx +9 -11
  962. package/src/route-definition/dsl-helpers.ts +1134 -0
  963. package/src/route-definition/helper-factories.ts +200 -0
  964. package/src/route-definition/helpers-types.ts +478 -0
  965. package/src/route-definition/index.ts +55 -0
  966. package/src/route-definition/redirect.ts +101 -0
  967. package/src/route-definition/resolve-handler-use.ts +155 -0
  968. package/src/route-definition.ts +1 -1371
  969. package/src/route-map-builder.ts +247 -112
  970. package/src/route-name.ts +53 -0
  971. package/src/route-types.ts +88 -9
  972. package/src/router/content-negotiation.ts +215 -0
  973. package/src/router/debug-manifest.ts +72 -0
  974. package/src/router/error-handling.ts +9 -9
  975. package/src/router/find-match.ts +160 -0
  976. package/src/router/handler-context.ts +457 -88
  977. package/src/router/intercept-resolution.ts +402 -0
  978. package/src/router/lazy-includes.ts +237 -0
  979. package/src/router/loader-resolution.ts +360 -128
  980. package/src/router/logging.ts +251 -0
  981. package/src/router/manifest.ts +187 -43
  982. package/src/router/match-api.ts +555 -0
  983. package/src/router/match-context.ts +6 -4
  984. package/src/router/match-handlers.ts +440 -0
  985. package/src/router/match-middleware/background-revalidation.ts +108 -93
  986. package/src/router/match-middleware/cache-lookup.ts +460 -10
  987. package/src/router/match-middleware/cache-store.ts +98 -26
  988. package/src/router/match-middleware/intercept-resolution.ts +57 -17
  989. package/src/router/match-middleware/segment-resolution.ts +80 -6
  990. package/src/router/match-pipelines.ts +10 -45
  991. package/src/router/match-result.ts +135 -36
  992. package/src/router/metrics.ts +240 -15
  993. package/src/router/middleware-cookies.ts +55 -0
  994. package/src/router/middleware-types.ts +200 -0
  995. package/src/router/middleware.ts +359 -333
  996. package/src/router/navigation-snapshot.ts +182 -0
  997. package/src/router/pattern-matching.ts +375 -33
  998. package/src/router/prerender-match.ts +502 -0
  999. package/src/router/preview-match.ts +98 -0
  1000. package/src/router/request-classification.ts +310 -0
  1001. package/src/router/revalidation.ts +137 -38
  1002. package/src/router/route-snapshot.ts +245 -0
  1003. package/src/router/router-context.ts +45 -23
  1004. package/src/router/router-interfaces.ts +484 -0
  1005. package/src/router/router-options.ts +618 -0
  1006. package/src/router/router-registry.ts +24 -0
  1007. package/src/router/segment-resolution/fresh.ts +748 -0
  1008. package/src/router/segment-resolution/helpers.ts +268 -0
  1009. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1010. package/src/router/segment-resolution/revalidation.ts +1379 -0
  1011. package/src/router/segment-resolution/static-store.ts +67 -0
  1012. package/src/router/segment-resolution.ts +21 -0
  1013. package/src/router/segment-wrappers.ts +291 -0
  1014. package/src/router/telemetry-otel.ts +299 -0
  1015. package/src/router/telemetry.ts +300 -0
  1016. package/src/router/timeout.ts +148 -0
  1017. package/src/router/trie-matching.ts +245 -0
  1018. package/src/router/types.ts +79 -4
  1019. package/src/router/url-params.ts +49 -0
  1020. package/src/router.ts +750 -3572
  1021. package/src/rsc/handler-context.ts +45 -0
  1022. package/src/rsc/handler.ts +934 -801
  1023. package/src/rsc/helpers.ts +181 -19
  1024. package/src/rsc/index.ts +5 -25
  1025. package/src/rsc/loader-fetch.ts +229 -0
  1026. package/src/rsc/manifest-init.ts +90 -0
  1027. package/src/rsc/nonce.ts +14 -0
  1028. package/src/rsc/origin-guard.ts +141 -0
  1029. package/src/rsc/progressive-enhancement.ts +393 -0
  1030. package/src/rsc/response-error.ts +37 -0
  1031. package/src/rsc/response-route-handler.ts +360 -0
  1032. package/src/rsc/rsc-rendering.ts +253 -0
  1033. package/src/rsc/runtime-warnings.ts +42 -0
  1034. package/src/rsc/server-action.ts +358 -0
  1035. package/src/rsc/ssr-setup.ts +128 -0
  1036. package/src/rsc/types.ts +48 -14
  1037. package/src/search-params.ts +230 -0
  1038. package/src/segment-content-promise.ts +67 -0
  1039. package/src/segment-loader-promise.ts +122 -0
  1040. package/src/segment-system.tsx +165 -81
  1041. package/src/server/context.ts +384 -61
  1042. package/src/server/cookie-store.ts +190 -0
  1043. package/src/server/fetchable-loader-store.ts +37 -0
  1044. package/src/server/handle-store.ts +117 -20
  1045. package/src/server/loader-registry.ts +24 -64
  1046. package/src/server/request-context.ts +603 -109
  1047. package/src/server.ts +36 -131
  1048. package/src/ssr/index.tsx +160 -25
  1049. package/src/static-handler.ts +126 -0
  1050. package/src/theme/ThemeProvider.tsx +21 -15
  1051. package/src/theme/ThemeScript.tsx +5 -5
  1052. package/src/theme/constants.ts +11 -4
  1053. package/src/theme/index.ts +4 -14
  1054. package/src/theme/theme-context.ts +5 -31
  1055. package/src/theme/theme-script.ts +21 -18
  1056. package/src/theme/types.ts +1 -1
  1057. package/src/types/boundaries.ts +158 -0
  1058. package/src/types/cache-types.ts +198 -0
  1059. package/src/types/error-types.ts +192 -0
  1060. package/src/types/global-namespace.ts +100 -0
  1061. package/src/types/handler-context.ts +759 -0
  1062. package/src/types/index.ts +88 -0
  1063. package/src/types/loader-types.ts +209 -0
  1064. package/src/types/request-scope.ts +126 -0
  1065. package/src/types/route-config.ts +170 -0
  1066. package/src/types/route-entry.ts +120 -0
  1067. package/src/types/segments.ts +150 -0
  1068. package/src/types.ts +1 -1561
  1069. package/src/urls/include-helper.ts +207 -0
  1070. package/src/urls/index.ts +53 -0
  1071. package/src/urls/path-helper-types.ts +372 -0
  1072. package/src/urls/path-helper.ts +364 -0
  1073. package/src/urls/pattern-types.ts +107 -0
  1074. package/src/urls/response-types.ts +108 -0
  1075. package/src/urls/type-extraction.ts +372 -0
  1076. package/src/urls/urls-function.ts +98 -0
  1077. package/src/urls.ts +1 -726
  1078. package/src/use-loader.tsx +161 -81
  1079. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1080. package/src/vite/discovery/discover-routers.ts +348 -0
  1081. package/src/vite/discovery/prerender-collection.ts +439 -0
  1082. package/src/vite/discovery/route-types-writer.ts +258 -0
  1083. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1084. package/src/vite/discovery/state.ts +117 -0
  1085. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1086. package/src/vite/index.ts +18 -785
  1087. package/src/vite/plugin-types.ts +103 -0
  1088. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1089. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1090. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1091. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1092. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1093. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1094. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -53
  1095. package/src/vite/plugins/expose-id-utils.ts +299 -0
  1096. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1097. package/src/vite/plugins/expose-ids/handler-transform.ts +209 -0
  1098. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1099. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1100. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1101. package/src/vite/plugins/expose-internal-ids.ts +786 -0
  1102. package/src/vite/plugins/performance-tracks.ts +88 -0
  1103. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1104. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1105. package/src/vite/plugins/version-injector.ts +83 -0
  1106. package/src/vite/plugins/version-plugin.ts +266 -0
  1107. package/src/vite/plugins/virtual-entries.ts +123 -0
  1108. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1109. package/src/vite/rango.ts +483 -0
  1110. package/src/vite/router-discovery.ts +977 -0
  1111. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1112. package/src/vite/utils/banner.ts +36 -0
  1113. package/src/vite/utils/bundle-analysis.ts +137 -0
  1114. package/src/vite/utils/manifest-utils.ts +70 -0
  1115. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +58 -29
  1116. package/src/vite/utils/prerender-utils.ts +221 -0
  1117. package/src/vite/utils/shared-utils.ts +170 -0
  1118. package/CLAUDE.md +0 -7
  1119. package/src/__tests__/component-utils.test.ts +0 -76
  1120. package/src/__tests__/route-definition.test.ts +0 -63
  1121. package/src/__tests__/urls.test.tsx +0 -436
  1122. package/src/browser/lru-cache.ts +0 -69
  1123. package/src/browser/request-controller.ts +0 -164
  1124. package/src/cache/__tests__/document-cache.test.ts +0 -522
  1125. package/src/cache/__tests__/memory-segment-store.test.ts +0 -487
  1126. package/src/cache/__tests__/memory-store.test.ts +0 -484
  1127. package/src/cache/cf/__tests__/cf-cache-store.test.ts +0 -428
  1128. package/src/cache/memory-store.ts +0 -253
  1129. package/src/href.ts +0 -177
  1130. package/src/route-utils.ts +0 -89
  1131. package/src/router/__tests__/match-context.test.ts +0 -104
  1132. package/src/router/__tests__/match-pipelines.test.ts +0 -537
  1133. package/src/router/__tests__/match-result.test.ts +0 -566
  1134. package/src/router/__tests__/on-error.test.ts +0 -935
  1135. package/src/router/__tests__/pattern-matching.test.ts +0 -577
  1136. package/src/router/middleware.test.ts +0 -1355
  1137. package/src/rsc/__tests__/helpers.test.ts +0 -175
  1138. package/src/server/__tests__/request-context.test.ts +0 -171
  1139. package/src/ssr/__tests__/ssr-handler.test.tsx +0 -188
  1140. package/src/theme/__tests__/theme.test.ts +0 -120
  1141. package/src/vite/__tests__/expose-loader-id.test.ts +0 -117
  1142. package/src/vite/expose-handle-id.ts +0 -209
  1143. package/src/vite/expose-loader-id.ts +0 -357
  1144. package/src/vite/expose-location-state-id.ts +0 -177
  1145. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -4,7 +4,52 @@
4
4
  * Utility functions for RSC request handling.
5
5
  */
6
6
 
7
- import { getRequestContext } from "../server/request-context.js";
7
+ import {
8
+ _getRequestContext,
9
+ getLocationState,
10
+ } from "../server/request-context.js";
11
+ import type { RequestContext } from "../server/request-context.js";
12
+ import { resolveLocationStateEntries } from "../browser/react/location-state-shared.js";
13
+ import type { MiddlewareEntry, MiddlewareFn } from "../router/middleware.js";
14
+
15
+ /**
16
+ * Copy stub headers from the request context onto a target Headers instance:
17
+ * append Set-Cookie entries, set everything else only if absent. Header
18
+ * mutation failures are swallowed so the same logic works against Response
19
+ * headers that may be immutable (e.g. Cloudflare protocol-switch responses).
20
+ */
21
+ function applyStubHeaders(target: Headers, stub: Headers): void {
22
+ stub.forEach((value, name) => {
23
+ try {
24
+ if (name.toLowerCase() === "set-cookie") {
25
+ target.append(name, value);
26
+ } else if (!target.has(name)) {
27
+ target.set(name, value);
28
+ }
29
+ } catch {
30
+ // Headers immutable — skip.
31
+ }
32
+ });
33
+ }
34
+
35
+ /**
36
+ * Drain ctx._onResponseCallbacks onto a response. Swapping the array before
37
+ * iteration prevents re-entrant registrations from double-firing and matches
38
+ * the contract that each callback runs at most once per request.
39
+ */
40
+ function drainOnResponseCallbacks(
41
+ ctx: RequestContext,
42
+ response: Response,
43
+ ): Response {
44
+ const callbacks = ctx._onResponseCallbacks;
45
+ if (callbacks.length === 0) return response;
46
+ ctx._onResponseCallbacks = [];
47
+ let result = response;
48
+ for (const callback of callbacks) {
49
+ result = callback(result) ?? result;
50
+ }
51
+ return result;
52
+ }
8
53
 
9
54
  /**
10
55
  * Check if a request body has content to decode
@@ -27,38 +72,155 @@ export function hasBodyContent(body: FormData | string): boolean {
27
72
  */
28
73
  export function createResponseWithMergedHeaders(
29
74
  body: BodyInit | null,
30
- init: ResponseInit
75
+ init: ResponseInit,
31
76
  ): Response {
32
- const ctx = getRequestContext();
77
+ const ctx = _getRequestContext();
33
78
  if (!ctx) {
34
79
  return new Response(body, init);
35
80
  }
36
81
 
37
- // Merge headers from stub response into the new response
82
+ // Delete Set-Cookie from the stub after consuming so downstream merge
83
+ // points (e.g. executeMiddleware) don't duplicate them.
38
84
  const mergedHeaders = new Headers(init.headers);
39
- ctx.res.headers.forEach((value, name) => {
40
- if (name.toLowerCase() === "set-cookie") {
41
- mergedHeaders.append(name, value);
42
- } else if (!mergedHeaders.has(name)) {
43
- // Only set if not already present in init.headers
44
- mergedHeaders.set(name, value);
45
- }
46
- });
85
+ applyStubHeaders(mergedHeaders, ctx.res.headers);
86
+ ctx.res.headers.delete("set-cookie");
47
87
 
48
- // Use ctx.res.status if it was set (e.g., 404 for notFound, 500 for error)
49
- // Otherwise use the status from init
88
+ // ctx.res.status overrides init.status when explicitly set (e.g. 404 for
89
+ // notFound, 500 for error). Default ctx.res.status is 200.
50
90
  const status = ctx.res.status !== 200 ? ctx.res.status : init.status;
51
91
 
52
- let response = new Response(body, {
92
+ const response = new Response(body, {
53
93
  ...init,
54
94
  status,
55
95
  headers: mergedHeaders,
56
96
  });
57
97
 
58
- // Run onResponse callbacks - each can inspect/modify the response
59
- for (const callback of ctx._onResponseCallbacks) {
60
- response = callback(response) ?? response;
98
+ return drainOnResponseCallbacks(ctx, response);
99
+ }
100
+
101
+ /**
102
+ * Create a 204 response with X-RSC-Redirect header for stateless redirects.
103
+ * Used during partial/action requests where fetch would auto-follow a raw
104
+ * 3xx to a URL that renders full HTML instead of Flight data. The 204 status
105
+ * prevents auto-follow; the client reads the header and re-navigates via
106
+ * the router.
107
+ */
108
+ export function createSimpleRedirectResponse(redirectUrl: string): Response {
109
+ return createResponseWithMergedHeaders(null, {
110
+ status: 204,
111
+ headers: { "X-RSC-Redirect": redirectUrl },
112
+ });
113
+ }
114
+
115
+ /**
116
+ * Carry over headers from a source redirect Response to a wrapper Response.
117
+ * Skips Location and X-RSC-Redirect (intentionally replaced by the wrapper)
118
+ * and appends Set-Cookie to avoid clobbering multiple cookie headers.
119
+ */
120
+ export function carryOverRedirectHeaders(
121
+ source: Response,
122
+ target: Response,
123
+ ): void {
124
+ source.headers.forEach((value, name) => {
125
+ const lower = name.toLowerCase();
126
+ if (lower === "location" || lower === "x-rsc-redirect") return;
127
+ if (lower === "set-cookie") {
128
+ target.headers.append(name, value);
129
+ } else if (!target.headers.has(name)) {
130
+ target.headers.set(name, value);
131
+ }
132
+ });
133
+ }
134
+
135
+ /**
136
+ * If a response is a 3xx redirect during a partial (client-side) request,
137
+ * intercept it and return a Flight-compatible redirect instead.
138
+ * fetch() auto-follows 3xx which would hit a URL that renders full HTML
139
+ * the client can't parse. Returns null if the response is not a redirect.
140
+ */
141
+ export function interceptRedirectForPartial(
142
+ response: Response,
143
+ createRedirectFlightResponse: (
144
+ redirectUrl: string,
145
+ locationState?: Record<string, unknown>,
146
+ ) => Response,
147
+ ): Response | null {
148
+ const redirectUrl = response.headers.get("Location");
149
+ if (!(response.status >= 300 && response.status < 400 && redirectUrl)) {
150
+ return null;
151
+ }
152
+ const locationState = getLocationState();
153
+ let intercepted: Response;
154
+ if (locationState) {
155
+ intercepted = createRedirectFlightResponse(
156
+ redirectUrl,
157
+ resolveLocationStateEntries(locationState),
158
+ );
159
+ } else {
160
+ intercepted = createSimpleRedirectResponse(redirectUrl);
61
161
  }
62
162
 
63
- return response;
163
+ carryOverRedirectHeaders(response, intercepted);
164
+
165
+ return intercepted;
166
+ }
167
+
168
+ /**
169
+ * Only cache successful responses. Non-200 statuses (errors, redirects) are
170
+ * not cached -- notFound() produces 500 in response routes, and explicit
171
+ * non-200 Responses are rare enough that caching them would be surprising.
172
+ */
173
+ export function isCacheableStatus(status: number): boolean {
174
+ return status === 200;
175
+ }
176
+
177
+ /**
178
+ * Convert route-level middleware entries to the format expected by
179
+ * executeMiddleware. Route middleware from previewMatch carries just
180
+ * { handler, params }; this wraps them in the full MiddlewareEntry shape.
181
+ */
182
+ export function buildRouteMiddlewareEntries<TEnv>(
183
+ routeMiddleware: Array<{
184
+ handler: MiddlewareFn;
185
+ params: Record<string, string>;
186
+ }>,
187
+ ): Array<{ entry: MiddlewareEntry<TEnv>; params: Record<string, string> }> {
188
+ return routeMiddleware.map((mw) => ({
189
+ entry: {
190
+ pattern: null,
191
+ regex: null,
192
+ paramNames: [],
193
+ handler: mw.handler,
194
+ mountPrefix: null,
195
+ } as MiddlewareEntry<TEnv>,
196
+ params: mw.params,
197
+ }));
198
+ }
199
+
200
+ /**
201
+ * Merge stub headers from the request context onto an existing Response in
202
+ * place, then drain onResponse callbacks. Used when a Response cannot flow
203
+ * through `new Response()` — status 101 is outside the constructor's
204
+ * 200-599 range, and the Cloudflare-specific `webSocket` property would be
205
+ * lost on reconstruction.
206
+ */
207
+ export function mergeStubHeadersAndFinalize(response: Response): Response {
208
+ const ctx = _getRequestContext();
209
+ if (!ctx) return response;
210
+
211
+ applyStubHeaders(response.headers, ctx.res.headers);
212
+ ctx.res.headers.delete("set-cookie");
213
+
214
+ return drainOnResponseCallbacks(ctx, response);
215
+ }
216
+
217
+ /**
218
+ * Run onResponse callbacks on an existing Response. Used by code paths that
219
+ * bypass createResponseWithMergedHeaders (e.g. middleware short-circuits)
220
+ * but still need ctx.onResponse() callbacks to fire.
221
+ */
222
+ export function finalizeResponse(response: Response): Response {
223
+ const ctx = _getRequestContext();
224
+ if (!ctx) return response;
225
+ return drainOnResponseCallbacks(ctx, response);
64
226
  }
package/src/rsc/index.ts CHANGED
@@ -1,19 +1,19 @@
1
1
  /**
2
- * RSC Router - RSC Handler Entry Point
2
+ * RSC Router - RSC Entry Point
3
3
  *
4
- * This module provides the RSC request handler for server-side rendering,
4
+ * This module provides RSC utilities for server-side rendering,
5
5
  * server actions, loader fetching, and progressive enhancement.
6
6
  *
7
7
  * @example Basic usage
8
8
  * ```tsx
9
- * import { createRSCHandler } from "rsc-router/rsc";
10
9
  * import { router } from "./router.js";
11
10
  *
12
- * export default createRSCHandler({ router });
11
+ * // Use router.fetch to handle requests
12
+ * export default { fetch: router.fetch };
13
13
  * ```
14
14
  */
15
15
 
16
- // Re-export handler
16
+ // Re-export createRSCHandler for custom handler setup
17
17
  export { createRSCHandler } from "./handler.js";
18
18
 
19
19
  // Re-export types
@@ -29,28 +29,8 @@ export type {
29
29
  NonceProvider,
30
30
  } from "./types.js";
31
31
 
32
- // Re-export HandleStore types for consumers who need custom handling
33
- export {
34
- createHandleStore,
35
- type HandleStore,
36
- type HandleData,
37
- } from "../server/handle-store.js";
38
-
39
32
  // Re-export request context utilities for server-side access to env/request/params
40
33
  export {
41
34
  getRequestContext,
42
35
  requireRequestContext,
43
- setRequestContextParams,
44
36
  } from "../server/request-context.js";
45
-
46
- // Re-export cache store types and implementations
47
- export type {
48
- SegmentCacheStore,
49
- CachedEntryData,
50
- CachedEntryResult,
51
- SegmentCacheProvider,
52
- SegmentHandleData,
53
- } from "../cache/types.js";
54
-
55
- export { MemorySegmentCacheStore } from "../cache/memory-segment-store.js";
56
- export { CFCacheStore, type CFCacheStoreOptions } from "../cache/cf/index.js";
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Loader Fetch Handler
3
+ *
4
+ * Handles load() requests (GET, POST, PUT, PATCH, DELETE) from the client.
5
+ * All loader data fetching and mutations go through this endpoint.
6
+ *
7
+ * Route params (e.g. slug from /blog/:slug) come from previewMatch() in the
8
+ * outer coreRequestHandler, threaded through coreRequestHandlerInner as
9
+ * routeParams. This is necessary because handleLoaderFetch doesn't do its
10
+ * own route matching -- the URL is the page's pathname, and previewMatch
11
+ * has already extracted params from it.
12
+ */
13
+
14
+ import { getLoaderLazy } from "../server/loader-registry.js";
15
+ import { executeLoaderMiddleware } from "../router/middleware.js";
16
+ import { requireRequestContext } from "../server/request-context.js";
17
+ import {
18
+ createReverseFunction,
19
+ stripInternalParams,
20
+ } from "../router/handler-context.js";
21
+ import {
22
+ getGlobalRouteMap,
23
+ getSearchSchema,
24
+ isRouteRootScoped,
25
+ } from "../route-map-builder.js";
26
+ import { parseSearchParams } from "../search-params.js";
27
+ import {
28
+ createResponseWithMergedHeaders,
29
+ finalizeResponse,
30
+ } from "./helpers.js";
31
+ import type { HandlerContext } from "./handler-context.js";
32
+
33
+ export async function handleLoaderFetch<TEnv>(
34
+ ctx: HandlerContext<TEnv>,
35
+ request: Request,
36
+ env: TEnv,
37
+ url: URL,
38
+ variables: Record<string, any>,
39
+ routeParams?: Record<string, string>,
40
+ ): Promise<Response> {
41
+ const loaderId = url.searchParams.get("_rsc_loader");
42
+
43
+ if (!loaderId) {
44
+ return createResponseWithMergedHeaders("Missing _rsc_loader parameter", {
45
+ status: 400,
46
+ });
47
+ }
48
+
49
+ // Look up loader lazily
50
+ const registeredLoader = await getLoaderLazy(loaderId);
51
+ if (!registeredLoader) {
52
+ return createResponseWithMergedHeaders(
53
+ `Loader "${loaderId}" not found in registry`,
54
+ { status: 404 },
55
+ );
56
+ }
57
+
58
+ // Non-fetchable loaders are registered for SSR ctx.use() only.
59
+ // They must not be callable through the standalone _rsc_loader endpoint.
60
+ if (!registeredLoader.fetchable) {
61
+ return createResponseWithMergedHeaders(
62
+ `Loader "${loaderId}" is not fetchable`,
63
+ { status: 403 },
64
+ );
65
+ }
66
+
67
+ // Parse params, body, and formData based on request method and content type
68
+ let loaderParams: Record<string, string> = {};
69
+ let loaderBody: unknown = undefined;
70
+ let loaderFormData: FormData | undefined;
71
+ const isBodyMethod = request.method !== "GET" && request.method !== "HEAD";
72
+
73
+ if (isBodyMethod) {
74
+ try {
75
+ const contentType = request.headers.get("content-type") || "";
76
+ if (contentType.includes("multipart/form-data")) {
77
+ // FormData body — sent by load() when body is a FormData instance.
78
+ // Preserves File objects and binary data.
79
+ loaderFormData = await request.formData();
80
+ // Extract params if provided via the special field
81
+ const paramsField = loaderFormData.get("_rsc_loader_params");
82
+ if (typeof paramsField === "string") {
83
+ loaderParams = JSON.parse(paramsField);
84
+ loaderFormData.delete("_rsc_loader_params");
85
+ }
86
+ } else if (contentType.includes("application/json")) {
87
+ const jsonBody = (await request.json()) as {
88
+ params?: Record<string, string>;
89
+ body?: unknown;
90
+ };
91
+ loaderParams = jsonBody.params ?? {};
92
+ loaderBody = jsonBody.body;
93
+ }
94
+ } catch {
95
+ return createResponseWithMergedHeaders("Invalid request body", {
96
+ status: 400,
97
+ });
98
+ }
99
+ } else {
100
+ const loaderParamsJson = url.searchParams.get("_rsc_loader_params");
101
+ if (loaderParamsJson) {
102
+ try {
103
+ loaderParams = JSON.parse(loaderParamsJson);
104
+ } catch {
105
+ return createResponseWithMergedHeaders(
106
+ "Invalid _rsc_loader_params JSON",
107
+ { status: 400 },
108
+ );
109
+ }
110
+ }
111
+ }
112
+
113
+ // Execute the loader with middleware.
114
+ // finalizeResponse drains onResponse callbacks that middleware short-circuits
115
+ // may leave behind (executeLoaderMiddleware does not finalize them itself).
116
+ try {
117
+ const { fn, middleware } = registeredLoader;
118
+
119
+ return finalizeResponse(
120
+ await executeLoaderMiddleware(
121
+ middleware,
122
+ request,
123
+ env,
124
+ loaderParams,
125
+ variables,
126
+ async () => {
127
+ const reqCtx = requireRequestContext();
128
+ // Merge route params (from previewMatch) with explicit loader params.
129
+ // Explicit params take precedence over route-matched params.
130
+ const resolvedRouteParams = routeParams ?? {};
131
+ const mergedParams = {
132
+ ...resolvedRouteParams,
133
+ ...loaderParams,
134
+ };
135
+ // Strip _rsc_* transport params so loaders see the same
136
+ // url/searchParams as during SSR/navigation.
137
+ const cleanUrl = stripInternalParams(url);
138
+ const cleanSearchParams = cleanUrl.searchParams;
139
+ const searchSchema = reqCtx._routeName
140
+ ? getSearchSchema(reqCtx._routeName)
141
+ : undefined;
142
+ const loaderCtx: any = {
143
+ ...reqCtx,
144
+ url: cleanUrl,
145
+ pathname: cleanUrl.pathname,
146
+ searchParams: cleanSearchParams,
147
+ search: searchSchema
148
+ ? parseSearchParams(cleanSearchParams, searchSchema)
149
+ : {},
150
+ params: mergedParams,
151
+ routeParams: resolvedRouteParams,
152
+ body: loaderBody,
153
+ method: request.method,
154
+ reverse: createReverseFunction(
155
+ getGlobalRouteMap(),
156
+ reqCtx._routeName,
157
+ mergedParams,
158
+ reqCtx._routeName
159
+ ? isRouteRootScoped(reqCtx._routeName)
160
+ : undefined,
161
+ ),
162
+ ...(loaderFormData ? { formData: loaderFormData } : {}),
163
+ };
164
+
165
+ const result = await fn(loaderCtx);
166
+
167
+ interface LoaderPayload {
168
+ loaderResult: unknown;
169
+ }
170
+ const loaderPayload: LoaderPayload = { loaderResult: result };
171
+ const rscStream = ctx.renderToReadableStream<LoaderPayload>(
172
+ loaderPayload,
173
+ {
174
+ onError: (error: unknown) => {
175
+ ctx.callOnError(error, "rendering", {
176
+ request,
177
+ url,
178
+ env,
179
+ loaderName: loaderId,
180
+ });
181
+ },
182
+ },
183
+ );
184
+
185
+ return createResponseWithMergedHeaders(rscStream, {
186
+ headers: { "content-type": "text/x-component;charset=utf-8" },
187
+ });
188
+ },
189
+ createReverseFunction(ctx.getRequiredRouteMap()),
190
+ ),
191
+ );
192
+ } catch (error) {
193
+ const err = error instanceof Error ? error : new Error(String(error));
194
+ const isDev = process.env.NODE_ENV !== "production";
195
+
196
+ console.error("[RSC] Loader error:", error);
197
+
198
+ ctx.callOnError(error, "loader", {
199
+ request,
200
+ url,
201
+ env,
202
+ loaderName: loaderId,
203
+ handledByBoundary: false,
204
+ });
205
+
206
+ const errorPayload = {
207
+ loaderResult: null,
208
+ loaderError: {
209
+ message: isDev ? err.message : "An error occurred",
210
+ name: err.name,
211
+ },
212
+ };
213
+ const rscStream = ctx.renderToReadableStream(errorPayload, {
214
+ onError: (error: unknown) => {
215
+ ctx.callOnError(error, "rendering", {
216
+ request,
217
+ url,
218
+ env,
219
+ loaderName: loaderId,
220
+ });
221
+ },
222
+ });
223
+
224
+ return createResponseWithMergedHeaders(rscStream, {
225
+ status: 500,
226
+ headers: { "content-type": "text/x-component;charset=utf-8" },
227
+ });
228
+ }
229
+ }
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Router Manifest Initialization
3
+ *
4
+ * Builds a fresh route trie from router.urlpatterns for dev/HMR scenarios
5
+ * where the manifest exists but the trie needs rebuilding.
6
+ */
7
+
8
+ import {
9
+ getGlobalRouteMap,
10
+ hasCachedManifest,
11
+ setCachedManifest,
12
+ getRouteTrie,
13
+ setRouteTrie,
14
+ setRouterManifest,
15
+ setRouterTrie,
16
+ } from "../route-map-builder.js";
17
+
18
+ /**
19
+ * Build a fresh route trie from router.urlpatterns and store it in the
20
+ * per-router cache. Also sets the per-router manifest and merges into
21
+ * the global manifest for reverse()/href().
22
+ *
23
+ * Called when manifest data may exist but the per-router trie is missing,
24
+ * which happens in dev mode after HMR: the virtual module sets the manifest
25
+ * from fresh gen files but skips the trie (which would be stale from initial
26
+ * discovery). The trie is essential for correct wildcard priority -- without
27
+ * it, the regex fallback matches catch-all patterns before specific routes.
28
+ */
29
+ export async function buildRouterTrieFromUrlpatterns(
30
+ router: any,
31
+ ): Promise<void> {
32
+ const { generateManifestFull } =
33
+ await import("../build/generate-manifest.js");
34
+ const generated = generateManifestFull(
35
+ router.urlpatterns,
36
+ undefined,
37
+ router.basename ? { urlPrefix: router.basename } : undefined,
38
+ );
39
+ if (
40
+ generated._routeAncestry &&
41
+ Object.keys(generated._routeAncestry).length > 0
42
+ ) {
43
+ const { buildRouteTrie } = await import("../build/route-trie.js");
44
+ // Map each route to its include() staticPrefix so the trie
45
+ // returns the correct sp for lazy entry lookup in findMatch.
46
+ const routeToStaticPrefix: Record<string, string> = {};
47
+ for (const name of Object.keys(generated.routeManifest)) {
48
+ routeToStaticPrefix[name] = "";
49
+ }
50
+ // Override with prefix from include() entries so the trie
51
+ // returns the correct sp for lazy entry lookup in findMatch.
52
+ // Walk recursively to include routes in nested includes.
53
+ if (generated.prefixTree) {
54
+ const visitPrefixNode = (node: any): void => {
55
+ const sp = node.staticPrefix || "";
56
+ for (const route of node.routes || []) {
57
+ routeToStaticPrefix[route] = sp;
58
+ }
59
+ for (const child of Object.values(node.children || {})) {
60
+ visitPrefixNode(child);
61
+ }
62
+ };
63
+ for (const node of Object.values(generated.prefixTree)) {
64
+ visitPrefixNode(node);
65
+ }
66
+ }
67
+ const trie = buildRouteTrie(
68
+ generated.routeManifest,
69
+ generated._routeAncestry,
70
+ routeToStaticPrefix,
71
+ generated.routeTrailingSlash,
72
+ generated.prerenderRoutes
73
+ ? new Set(generated.prerenderRoutes)
74
+ : undefined,
75
+ generated.passthroughRoutes
76
+ ? new Set(generated.passthroughRoutes)
77
+ : undefined,
78
+ generated.responseTypeRoutes,
79
+ );
80
+ setRouterTrie(router.id, trie);
81
+ // Set global trie only if not already set by another router
82
+ if (!getRouteTrie()) {
83
+ setRouteTrie(trie);
84
+ }
85
+ }
86
+ setRouterManifest(router.id, generated.routeManifest);
87
+ // Merge into global manifest (needed for reverse/href across routers)
88
+ const existing = hasCachedManifest() ? getGlobalRouteMap() : {};
89
+ setCachedManifest({ ...existing, ...generated.routeManifest });
90
+ }
package/src/rsc/nonce.ts CHANGED
@@ -2,6 +2,20 @@
2
2
  * Nonce generation for Content Security Policy (CSP)
3
3
  */
4
4
 
5
+ import type { ContextVar } from "../context-var.js";
6
+ import { createVar } from "../context-var.js";
7
+
8
+ /**
9
+ * Typed ContextVar token for CSP nonce.
10
+ *
11
+ * Use this to access the nonce in middleware or handlers:
12
+ * ```ts
13
+ * import { nonce } from "@rangojs/router";
14
+ * const value = ctx.get(nonce); // string | undefined
15
+ * ```
16
+ */
17
+ export const nonce: ContextVar<string> = createVar<string>();
18
+
5
19
  /**
6
20
  * Generate a cryptographic nonce for CSP.
7
21
  * Returns a 16-byte random value encoded as base64.