@rangojs/router 0.0.0-experimental.49 → 0.0.0-experimental.4ffa0f9b

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 (910) hide show
  1. package/README.md +76 -18
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +421 -121
  4. package/package.json +2 -2
  5. package/skills/cache-guide/SKILL.md +32 -0
  6. package/skills/caching/SKILL.md +8 -0
  7. package/skills/links/SKILL.md +3 -1
  8. package/skills/loader/SKILL.md +53 -43
  9. package/skills/middleware/SKILL.md +2 -0
  10. package/skills/prerender/SKILL.md +110 -68
  11. package/skills/route/SKILL.md +31 -0
  12. package/skills/router-setup/SKILL.md +87 -2
  13. package/skills/typesafety/SKILL.md +10 -0
  14. package/src/__internal.ts +1 -1
  15. package/src/browser/app-version.ts +14 -0
  16. package/src/browser/navigation-bridge.ts +16 -3
  17. package/src/browser/navigation-client.ts +64 -40
  18. package/src/browser/navigation-store.ts +43 -8
  19. package/src/browser/partial-update.ts +27 -5
  20. package/src/browser/prefetch/fetch.ts +8 -2
  21. package/src/browser/prefetch/queue.ts +61 -29
  22. package/src/browser/prefetch/resource-ready.ts +77 -0
  23. package/src/browser/react/Link.tsx +44 -8
  24. package/src/browser/react/NavigationProvider.tsx +13 -4
  25. package/src/browser/react/context.ts +7 -2
  26. package/src/browser/react/use-handle.ts +9 -58
  27. package/src/browser/react/use-router.ts +21 -8
  28. package/src/browser/rsc-router.tsx +26 -3
  29. package/src/browser/scroll-restoration.ts +10 -8
  30. package/src/browser/server-action-bridge.ts +8 -6
  31. package/src/browser/types.ts +27 -5
  32. package/src/build/generate-manifest.ts +6 -6
  33. package/src/build/generate-route-types.ts +3 -0
  34. package/src/build/route-types/include-resolution.ts +8 -1
  35. package/src/build/route-types/router-processing.ts +211 -72
  36. package/src/build/route-types/scan-filter.ts +8 -1
  37. package/src/cache/cache-scope.ts +46 -5
  38. package/src/cache/taint.ts +55 -0
  39. package/src/client.tsx +2 -56
  40. package/src/context-var.ts +72 -2
  41. package/src/handle.ts +40 -0
  42. package/src/index.rsc.ts +3 -1
  43. package/src/index.ts +8 -0
  44. package/src/prerender/store.ts +5 -4
  45. package/src/prerender.ts +138 -77
  46. package/src/reverse.ts +22 -1
  47. package/src/route-definition/dsl-helpers.ts +42 -19
  48. package/src/route-definition/helpers-types.ts +10 -6
  49. package/src/route-definition/index.ts +3 -0
  50. package/src/route-definition/redirect.ts +9 -1
  51. package/src/route-definition/resolve-handler-use.ts +149 -0
  52. package/src/route-types.ts +11 -0
  53. package/src/router/content-negotiation.ts +100 -1
  54. package/src/router/handler-context.ts +79 -23
  55. package/src/router/intercept-resolution.ts +9 -4
  56. package/src/router/loader-resolution.ts +121 -10
  57. package/src/router/match-api.ts +124 -189
  58. package/src/router/match-middleware/cache-lookup.ts +22 -7
  59. package/src/router/match-middleware/cache-store.ts +5 -0
  60. package/src/router/match-middleware/segment-resolution.ts +53 -0
  61. package/src/router/middleware-types.ts +6 -8
  62. package/src/router/middleware.ts +2 -5
  63. package/src/router/navigation-snapshot.ts +182 -0
  64. package/src/router/prerender-match.ts +110 -10
  65. package/src/router/preview-match.ts +30 -102
  66. package/src/router/request-classification.ts +310 -0
  67. package/src/router/route-snapshot.ts +245 -0
  68. package/src/router/router-interfaces.ts +36 -4
  69. package/src/router/router-options.ts +37 -11
  70. package/src/router/segment-resolution/fresh.ts +65 -9
  71. package/src/router/segment-resolution/helpers.ts +29 -24
  72. package/src/router/segment-resolution/revalidation.ts +65 -7
  73. package/src/router/types.ts +1 -0
  74. package/src/router.ts +54 -5
  75. package/src/rsc/handler.ts +460 -368
  76. package/src/rsc/manifest-init.ts +5 -1
  77. package/src/rsc/progressive-enhancement.ts +4 -0
  78. package/src/rsc/rsc-rendering.ts +5 -0
  79. package/src/rsc/server-action.ts +2 -0
  80. package/src/rsc/ssr-setup.ts +2 -2
  81. package/src/rsc/types.ts +8 -1
  82. package/src/server/context.ts +50 -1
  83. package/src/server/loader-registry.ts +9 -8
  84. package/src/server/request-context.ts +134 -14
  85. package/src/ssr/index.tsx +3 -0
  86. package/src/static-handler.ts +18 -6
  87. package/src/types/cache-types.ts +4 -4
  88. package/src/types/handler-context.ts +37 -19
  89. package/src/types/loader-types.ts +36 -9
  90. package/src/types/route-entry.ts +1 -1
  91. package/src/urls/path-helper-types.ts +9 -2
  92. package/src/urls/path-helper.ts +47 -12
  93. package/src/urls/pattern-types.ts +12 -0
  94. package/src/urls/response-types.ts +16 -6
  95. package/src/use-loader.tsx +73 -4
  96. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  97. package/src/vite/discovery/discover-routers.ts +5 -1
  98. package/src/vite/discovery/prerender-collection.ts +14 -1
  99. package/src/vite/discovery/state.ts +13 -4
  100. package/src/vite/index.ts +4 -0
  101. package/src/vite/plugin-types.ts +60 -5
  102. package/src/vite/plugins/performance-tracks.ts +88 -0
  103. package/src/vite/plugins/refresh-cmd.ts +88 -26
  104. package/src/vite/rango.ts +19 -2
  105. package/src/vite/router-discovery.ts +153 -34
  106. package/src/vite/utils/prerender-utils.ts +18 -0
  107. package/src/vite/utils/shared-utils.ts +3 -2
  108. package/dist/__internal.d.ts +0 -83
  109. package/dist/__internal.d.ts.map +0 -1
  110. package/dist/__internal.js +0 -19
  111. package/dist/__internal.js.map +0 -1
  112. package/dist/__mocks__/version.d.ts +0 -7
  113. package/dist/__mocks__/version.d.ts.map +0 -1
  114. package/dist/__mocks__/version.js +0 -7
  115. package/dist/__mocks__/version.js.map +0 -1
  116. package/dist/__tests__/client-href.test.d.ts +0 -2
  117. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  118. package/dist/__tests__/client-href.test.js +0 -74
  119. package/dist/__tests__/client-href.test.js.map +0 -1
  120. package/dist/__tests__/component-utils.test.d.ts +0 -2
  121. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  122. package/dist/__tests__/component-utils.test.js +0 -51
  123. package/dist/__tests__/component-utils.test.js.map +0 -1
  124. package/dist/__tests__/event-controller.test.d.ts +0 -2
  125. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  126. package/dist/__tests__/event-controller.test.js +0 -538
  127. package/dist/__tests__/event-controller.test.js.map +0 -1
  128. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  129. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  130. package/dist/__tests__/helpers/route-tree.js +0 -374
  131. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  132. package/dist/__tests__/match-result.test.d.ts +0 -2
  133. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  134. package/dist/__tests__/match-result.test.js +0 -154
  135. package/dist/__tests__/match-result.test.js.map +0 -1
  136. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  137. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  138. package/dist/__tests__/navigation-store.test.js +0 -440
  139. package/dist/__tests__/navigation-store.test.js.map +0 -1
  140. package/dist/__tests__/partial-update.test.d.ts +0 -2
  141. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  142. package/dist/__tests__/partial-update.test.js +0 -1009
  143. package/dist/__tests__/partial-update.test.js.map +0 -1
  144. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  145. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  146. package/dist/__tests__/reverse-types.test.js +0 -656
  147. package/dist/__tests__/reverse-types.test.js.map +0 -1
  148. package/dist/__tests__/route-definition.test.d.ts +0 -2
  149. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  150. package/dist/__tests__/route-definition.test.js +0 -55
  151. package/dist/__tests__/route-definition.test.js.map +0 -1
  152. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  153. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  154. package/dist/__tests__/router-helpers.test.js +0 -377
  155. package/dist/__tests__/router-helpers.test.js.map +0 -1
  156. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  157. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  158. package/dist/__tests__/router-integration-2.test.js +0 -426
  159. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  160. package/dist/__tests__/router-integration.test.d.ts +0 -2
  161. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  162. package/dist/__tests__/router-integration.test.js +0 -1051
  163. package/dist/__tests__/router-integration.test.js.map +0 -1
  164. package/dist/__tests__/search-params.test.d.ts +0 -5
  165. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  166. package/dist/__tests__/search-params.test.js +0 -306
  167. package/dist/__tests__/search-params.test.js.map +0 -1
  168. package/dist/__tests__/segment-system.test.d.ts +0 -2
  169. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  170. package/dist/__tests__/segment-system.test.js +0 -627
  171. package/dist/__tests__/segment-system.test.js.map +0 -1
  172. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  173. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  174. package/dist/__tests__/static-handler-types.test.js +0 -63
  175. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  176. package/dist/__tests__/urls.test.d.ts +0 -2
  177. package/dist/__tests__/urls.test.d.ts.map +0 -1
  178. package/dist/__tests__/urls.test.js +0 -421
  179. package/dist/__tests__/urls.test.js.map +0 -1
  180. package/dist/__tests__/use-mount.test.d.ts +0 -2
  181. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  182. package/dist/__tests__/use-mount.test.js +0 -35
  183. package/dist/__tests__/use-mount.test.js.map +0 -1
  184. package/dist/bin/rango.d.ts +0 -2
  185. package/dist/bin/rango.d.ts.map +0 -1
  186. package/dist/bin/rango.js.map +0 -1
  187. package/dist/browser/event-controller.d.ts +0 -191
  188. package/dist/browser/event-controller.d.ts.map +0 -1
  189. package/dist/browser/event-controller.js +0 -559
  190. package/dist/browser/event-controller.js.map +0 -1
  191. package/dist/browser/index.d.ts +0 -2
  192. package/dist/browser/index.d.ts.map +0 -1
  193. package/dist/browser/index.js +0 -14
  194. package/dist/browser/index.js.map +0 -1
  195. package/dist/browser/link-interceptor.d.ts +0 -38
  196. package/dist/browser/link-interceptor.d.ts.map +0 -1
  197. package/dist/browser/link-interceptor.js +0 -99
  198. package/dist/browser/link-interceptor.js.map +0 -1
  199. package/dist/browser/logging.d.ts +0 -10
  200. package/dist/browser/logging.d.ts.map +0 -1
  201. package/dist/browser/logging.js +0 -29
  202. package/dist/browser/logging.js.map +0 -1
  203. package/dist/browser/lru-cache.d.ts +0 -17
  204. package/dist/browser/lru-cache.d.ts.map +0 -1
  205. package/dist/browser/lru-cache.js +0 -50
  206. package/dist/browser/lru-cache.js.map +0 -1
  207. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  208. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  209. package/dist/browser/merge-segment-loaders.js +0 -102
  210. package/dist/browser/merge-segment-loaders.js.map +0 -1
  211. package/dist/browser/navigation-bridge.d.ts +0 -102
  212. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  213. package/dist/browser/navigation-bridge.js +0 -708
  214. package/dist/browser/navigation-bridge.js.map +0 -1
  215. package/dist/browser/navigation-client.d.ts +0 -25
  216. package/dist/browser/navigation-client.d.ts.map +0 -1
  217. package/dist/browser/navigation-client.js +0 -157
  218. package/dist/browser/navigation-client.js.map +0 -1
  219. package/dist/browser/navigation-store.d.ts +0 -101
  220. package/dist/browser/navigation-store.d.ts.map +0 -1
  221. package/dist/browser/navigation-store.js +0 -625
  222. package/dist/browser/navigation-store.js.map +0 -1
  223. package/dist/browser/partial-update.d.ts +0 -75
  224. package/dist/browser/partial-update.d.ts.map +0 -1
  225. package/dist/browser/partial-update.js +0 -426
  226. package/dist/browser/partial-update.js.map +0 -1
  227. package/dist/browser/react/Link.d.ts +0 -86
  228. package/dist/browser/react/Link.d.ts.map +0 -1
  229. package/dist/browser/react/Link.js +0 -128
  230. package/dist/browser/react/Link.js.map +0 -1
  231. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  232. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  233. package/dist/browser/react/NavigationProvider.js +0 -216
  234. package/dist/browser/react/NavigationProvider.js.map +0 -1
  235. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  236. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  237. package/dist/browser/react/ScrollRestoration.js +0 -57
  238. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  239. package/dist/browser/react/context.d.ts +0 -46
  240. package/dist/browser/react/context.d.ts.map +0 -1
  241. package/dist/browser/react/context.js +0 -10
  242. package/dist/browser/react/context.js.map +0 -1
  243. package/dist/browser/react/index.d.ts +0 -11
  244. package/dist/browser/react/index.d.ts.map +0 -1
  245. package/dist/browser/react/index.js +0 -22
  246. package/dist/browser/react/index.js.map +0 -1
  247. package/dist/browser/react/location-state-shared.d.ts +0 -63
  248. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  249. package/dist/browser/react/location-state-shared.js +0 -81
  250. package/dist/browser/react/location-state-shared.js.map +0 -1
  251. package/dist/browser/react/location-state.d.ts +0 -23
  252. package/dist/browser/react/location-state.d.ts.map +0 -1
  253. package/dist/browser/react/location-state.js +0 -29
  254. package/dist/browser/react/location-state.js.map +0 -1
  255. package/dist/browser/react/mount-context.d.ts +0 -24
  256. package/dist/browser/react/mount-context.d.ts.map +0 -1
  257. package/dist/browser/react/mount-context.js +0 -24
  258. package/dist/browser/react/mount-context.js.map +0 -1
  259. package/dist/browser/react/use-action.d.ts +0 -64
  260. package/dist/browser/react/use-action.d.ts.map +0 -1
  261. package/dist/browser/react/use-action.js +0 -134
  262. package/dist/browser/react/use-action.js.map +0 -1
  263. package/dist/browser/react/use-client-cache.d.ts +0 -41
  264. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  265. package/dist/browser/react/use-client-cache.js +0 -39
  266. package/dist/browser/react/use-client-cache.js.map +0 -1
  267. package/dist/browser/react/use-handle.d.ts +0 -31
  268. package/dist/browser/react/use-handle.d.ts.map +0 -1
  269. package/dist/browser/react/use-handle.js +0 -144
  270. package/dist/browser/react/use-handle.js.map +0 -1
  271. package/dist/browser/react/use-href.d.ts +0 -33
  272. package/dist/browser/react/use-href.d.ts.map +0 -1
  273. package/dist/browser/react/use-href.js +0 -39
  274. package/dist/browser/react/use-href.js.map +0 -1
  275. package/dist/browser/react/use-link-status.d.ts +0 -37
  276. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  277. package/dist/browser/react/use-link-status.js +0 -99
  278. package/dist/browser/react/use-link-status.js.map +0 -1
  279. package/dist/browser/react/use-mount.d.ts +0 -25
  280. package/dist/browser/react/use-mount.d.ts.map +0 -1
  281. package/dist/browser/react/use-mount.js +0 -30
  282. package/dist/browser/react/use-mount.js.map +0 -1
  283. package/dist/browser/react/use-navigation.d.ts +0 -27
  284. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  285. package/dist/browser/react/use-navigation.js +0 -87
  286. package/dist/browser/react/use-navigation.js.map +0 -1
  287. package/dist/browser/react/use-segments.d.ts +0 -38
  288. package/dist/browser/react/use-segments.d.ts.map +0 -1
  289. package/dist/browser/react/use-segments.js +0 -130
  290. package/dist/browser/react/use-segments.js.map +0 -1
  291. package/dist/browser/request-controller.d.ts +0 -26
  292. package/dist/browser/request-controller.d.ts.map +0 -1
  293. package/dist/browser/request-controller.js +0 -147
  294. package/dist/browser/request-controller.js.map +0 -1
  295. package/dist/browser/rsc-router.d.ts +0 -129
  296. package/dist/browser/rsc-router.d.ts.map +0 -1
  297. package/dist/browser/rsc-router.js +0 -195
  298. package/dist/browser/rsc-router.js.map +0 -1
  299. package/dist/browser/scroll-restoration.d.ts +0 -93
  300. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  301. package/dist/browser/scroll-restoration.js +0 -321
  302. package/dist/browser/scroll-restoration.js.map +0 -1
  303. package/dist/browser/segment-structure-assert.d.ts +0 -17
  304. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  305. package/dist/browser/segment-structure-assert.js +0 -59
  306. package/dist/browser/segment-structure-assert.js.map +0 -1
  307. package/dist/browser/server-action-bridge.d.ts +0 -26
  308. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  309. package/dist/browser/server-action-bridge.js +0 -668
  310. package/dist/browser/server-action-bridge.js.map +0 -1
  311. package/dist/browser/shallow.d.ts +0 -12
  312. package/dist/browser/shallow.d.ts.map +0 -1
  313. package/dist/browser/shallow.js +0 -34
  314. package/dist/browser/shallow.js.map +0 -1
  315. package/dist/browser/types.d.ts +0 -369
  316. package/dist/browser/types.d.ts.map +0 -1
  317. package/dist/browser/types.js +0 -2
  318. package/dist/browser/types.js.map +0 -1
  319. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  320. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  321. package/dist/build/__tests__/generate-cli.test.js +0 -237
  322. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  323. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  324. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  325. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  326. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  327. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  328. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  329. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  330. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  331. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  332. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  333. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  334. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  335. package/dist/build/generate-manifest.d.ts +0 -81
  336. package/dist/build/generate-manifest.d.ts.map +0 -1
  337. package/dist/build/generate-manifest.js +0 -276
  338. package/dist/build/generate-manifest.js.map +0 -1
  339. package/dist/build/generate-route-types.d.ts +0 -115
  340. package/dist/build/generate-route-types.d.ts.map +0 -1
  341. package/dist/build/generate-route-types.js +0 -740
  342. package/dist/build/generate-route-types.js.map +0 -1
  343. package/dist/build/index.d.ts +0 -21
  344. package/dist/build/index.d.ts.map +0 -1
  345. package/dist/build/index.js +0 -21
  346. package/dist/build/index.js.map +0 -1
  347. package/dist/build/route-trie.d.ts +0 -71
  348. package/dist/build/route-trie.d.ts.map +0 -1
  349. package/dist/build/route-trie.js +0 -175
  350. package/dist/build/route-trie.js.map +0 -1
  351. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  352. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  353. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  354. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  355. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  356. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  357. package/dist/cache/__tests__/document-cache.test.js +0 -345
  358. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  359. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  360. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  361. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  362. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  363. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  364. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  365. package/dist/cache/__tests__/memory-store.test.js +0 -367
  366. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  367. package/dist/cache/cache-scope.d.ts +0 -102
  368. package/dist/cache/cache-scope.d.ts.map +0 -1
  369. package/dist/cache/cache-scope.js +0 -440
  370. package/dist/cache/cache-scope.js.map +0 -1
  371. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  372. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  373. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  374. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  375. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  376. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  377. package/dist/cache/cf/cf-cache-store.js +0 -242
  378. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  379. package/dist/cache/cf/index.d.ts +0 -14
  380. package/dist/cache/cf/index.d.ts.map +0 -1
  381. package/dist/cache/cf/index.js +0 -17
  382. package/dist/cache/cf/index.js.map +0 -1
  383. package/dist/cache/document-cache.d.ts +0 -64
  384. package/dist/cache/document-cache.d.ts.map +0 -1
  385. package/dist/cache/document-cache.js +0 -228
  386. package/dist/cache/document-cache.js.map +0 -1
  387. package/dist/cache/index.d.ts +0 -19
  388. package/dist/cache/index.d.ts.map +0 -1
  389. package/dist/cache/index.js +0 -21
  390. package/dist/cache/index.js.map +0 -1
  391. package/dist/cache/memory-segment-store.d.ts +0 -110
  392. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  393. package/dist/cache/memory-segment-store.js +0 -117
  394. package/dist/cache/memory-segment-store.js.map +0 -1
  395. package/dist/cache/memory-store.d.ts +0 -41
  396. package/dist/cache/memory-store.d.ts.map +0 -1
  397. package/dist/cache/memory-store.js +0 -191
  398. package/dist/cache/memory-store.js.map +0 -1
  399. package/dist/cache/types.d.ts +0 -317
  400. package/dist/cache/types.d.ts.map +0 -1
  401. package/dist/cache/types.js +0 -12
  402. package/dist/cache/types.js.map +0 -1
  403. package/dist/client.d.ts +0 -248
  404. package/dist/client.d.ts.map +0 -1
  405. package/dist/client.js +0 -367
  406. package/dist/client.js.map +0 -1
  407. package/dist/client.rsc.d.ts +0 -26
  408. package/dist/client.rsc.d.ts.map +0 -1
  409. package/dist/client.rsc.js +0 -46
  410. package/dist/client.rsc.js.map +0 -1
  411. package/dist/component-utils.d.ts +0 -36
  412. package/dist/component-utils.d.ts.map +0 -1
  413. package/dist/component-utils.js +0 -61
  414. package/dist/component-utils.js.map +0 -1
  415. package/dist/components/DefaultDocument.d.ts +0 -13
  416. package/dist/components/DefaultDocument.d.ts.map +0 -1
  417. package/dist/components/DefaultDocument.js +0 -15
  418. package/dist/components/DefaultDocument.js.map +0 -1
  419. package/dist/debug.d.ts +0 -58
  420. package/dist/debug.d.ts.map +0 -1
  421. package/dist/debug.js +0 -157
  422. package/dist/debug.js.map +0 -1
  423. package/dist/default-error-boundary.d.ts +0 -11
  424. package/dist/default-error-boundary.d.ts.map +0 -1
  425. package/dist/default-error-boundary.js +0 -45
  426. package/dist/default-error-boundary.js.map +0 -1
  427. package/dist/deps/browser.d.ts +0 -2
  428. package/dist/deps/browser.d.ts.map +0 -1
  429. package/dist/deps/browser.js +0 -3
  430. package/dist/deps/browser.js.map +0 -1
  431. package/dist/deps/html-stream-client.d.ts +0 -2
  432. package/dist/deps/html-stream-client.d.ts.map +0 -1
  433. package/dist/deps/html-stream-client.js +0 -3
  434. package/dist/deps/html-stream-client.js.map +0 -1
  435. package/dist/deps/html-stream-server.d.ts +0 -2
  436. package/dist/deps/html-stream-server.d.ts.map +0 -1
  437. package/dist/deps/html-stream-server.js +0 -3
  438. package/dist/deps/html-stream-server.js.map +0 -1
  439. package/dist/deps/rsc.d.ts +0 -2
  440. package/dist/deps/rsc.d.ts.map +0 -1
  441. package/dist/deps/rsc.js +0 -4
  442. package/dist/deps/rsc.js.map +0 -1
  443. package/dist/deps/ssr.d.ts +0 -2
  444. package/dist/deps/ssr.d.ts.map +0 -1
  445. package/dist/deps/ssr.js +0 -3
  446. package/dist/deps/ssr.js.map +0 -1
  447. package/dist/errors.d.ts +0 -174
  448. package/dist/errors.d.ts.map +0 -1
  449. package/dist/errors.js +0 -241
  450. package/dist/errors.js.map +0 -1
  451. package/dist/handle.d.ts +0 -78
  452. package/dist/handle.d.ts.map +0 -1
  453. package/dist/handle.js +0 -82
  454. package/dist/handle.js.map +0 -1
  455. package/dist/handles/MetaTags.d.ts +0 -14
  456. package/dist/handles/MetaTags.d.ts.map +0 -1
  457. package/dist/handles/MetaTags.js +0 -136
  458. package/dist/handles/MetaTags.js.map +0 -1
  459. package/dist/handles/index.d.ts +0 -6
  460. package/dist/handles/index.d.ts.map +0 -1
  461. package/dist/handles/index.js +0 -6
  462. package/dist/handles/index.js.map +0 -1
  463. package/dist/handles/meta.d.ts +0 -39
  464. package/dist/handles/meta.d.ts.map +0 -1
  465. package/dist/handles/meta.js +0 -202
  466. package/dist/handles/meta.js.map +0 -1
  467. package/dist/host/__tests__/errors.test.d.ts +0 -2
  468. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  469. package/dist/host/__tests__/errors.test.js +0 -76
  470. package/dist/host/__tests__/errors.test.js.map +0 -1
  471. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  472. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  473. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  474. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  475. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  476. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  477. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  478. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  479. package/dist/host/__tests__/router.test.d.ts +0 -2
  480. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  481. package/dist/host/__tests__/router.test.js +0 -241
  482. package/dist/host/__tests__/router.test.js.map +0 -1
  483. package/dist/host/__tests__/testing.test.d.ts +0 -2
  484. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  485. package/dist/host/__tests__/testing.test.js +0 -64
  486. package/dist/host/__tests__/testing.test.js.map +0 -1
  487. package/dist/host/__tests__/utils.test.d.ts +0 -2
  488. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  489. package/dist/host/__tests__/utils.test.js +0 -29
  490. package/dist/host/__tests__/utils.test.js.map +0 -1
  491. package/dist/host/cookie-handler.d.ts +0 -34
  492. package/dist/host/cookie-handler.d.ts.map +0 -1
  493. package/dist/host/cookie-handler.js +0 -124
  494. package/dist/host/cookie-handler.js.map +0 -1
  495. package/dist/host/errors.d.ts +0 -56
  496. package/dist/host/errors.d.ts.map +0 -1
  497. package/dist/host/errors.js +0 -79
  498. package/dist/host/errors.js.map +0 -1
  499. package/dist/host/index.d.ts +0 -29
  500. package/dist/host/index.d.ts.map +0 -1
  501. package/dist/host/index.js +0 -32
  502. package/dist/host/index.js.map +0 -1
  503. package/dist/host/pattern-matcher.d.ts +0 -36
  504. package/dist/host/pattern-matcher.d.ts.map +0 -1
  505. package/dist/host/pattern-matcher.js +0 -172
  506. package/dist/host/pattern-matcher.js.map +0 -1
  507. package/dist/host/router.d.ts +0 -26
  508. package/dist/host/router.d.ts.map +0 -1
  509. package/dist/host/router.js +0 -218
  510. package/dist/host/router.js.map +0 -1
  511. package/dist/host/testing.d.ts +0 -36
  512. package/dist/host/testing.d.ts.map +0 -1
  513. package/dist/host/testing.js +0 -55
  514. package/dist/host/testing.js.map +0 -1
  515. package/dist/host/types.d.ts +0 -115
  516. package/dist/host/types.d.ts.map +0 -1
  517. package/dist/host/types.js +0 -7
  518. package/dist/host/types.js.map +0 -1
  519. package/dist/host/utils.d.ts +0 -21
  520. package/dist/host/utils.d.ts.map +0 -1
  521. package/dist/host/utils.js +0 -23
  522. package/dist/host/utils.js.map +0 -1
  523. package/dist/href-client.d.ts +0 -131
  524. package/dist/href-client.d.ts.map +0 -1
  525. package/dist/href-client.js +0 -64
  526. package/dist/href-client.js.map +0 -1
  527. package/dist/href-context.d.ts +0 -29
  528. package/dist/href-context.d.ts.map +0 -1
  529. package/dist/href-context.js +0 -21
  530. package/dist/href-context.js.map +0 -1
  531. package/dist/index.d.ts +0 -73
  532. package/dist/index.d.ts.map +0 -1
  533. package/dist/index.js +0 -91
  534. package/dist/index.js.map +0 -1
  535. package/dist/index.rsc.d.ts +0 -32
  536. package/dist/index.rsc.d.ts.map +0 -1
  537. package/dist/index.rsc.js +0 -40
  538. package/dist/index.rsc.js.map +0 -1
  539. package/dist/internal-debug.d.ts +0 -2
  540. package/dist/internal-debug.d.ts.map +0 -1
  541. package/dist/internal-debug.js +0 -5
  542. package/dist/internal-debug.js.map +0 -1
  543. package/dist/loader.d.ts +0 -14
  544. package/dist/loader.d.ts.map +0 -1
  545. package/dist/loader.js +0 -20
  546. package/dist/loader.js.map +0 -1
  547. package/dist/loader.rsc.d.ts +0 -19
  548. package/dist/loader.rsc.d.ts.map +0 -1
  549. package/dist/loader.rsc.js +0 -99
  550. package/dist/loader.rsc.js.map +0 -1
  551. package/dist/network-error-thrower.d.ts +0 -17
  552. package/dist/network-error-thrower.d.ts.map +0 -1
  553. package/dist/network-error-thrower.js +0 -14
  554. package/dist/network-error-thrower.js.map +0 -1
  555. package/dist/outlet-context.d.ts +0 -13
  556. package/dist/outlet-context.d.ts.map +0 -1
  557. package/dist/outlet-context.js +0 -3
  558. package/dist/outlet-context.js.map +0 -1
  559. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  560. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  561. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  562. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  563. package/dist/prerender/param-hash.d.ts +0 -16
  564. package/dist/prerender/param-hash.d.ts.map +0 -1
  565. package/dist/prerender/param-hash.js +0 -36
  566. package/dist/prerender/param-hash.js.map +0 -1
  567. package/dist/prerender/store.d.ts +0 -38
  568. package/dist/prerender/store.d.ts.map +0 -1
  569. package/dist/prerender/store.js +0 -61
  570. package/dist/prerender/store.js.map +0 -1
  571. package/dist/prerender.d.ts +0 -66
  572. package/dist/prerender.d.ts.map +0 -1
  573. package/dist/prerender.js +0 -57
  574. package/dist/prerender.js.map +0 -1
  575. package/dist/reverse.d.ts +0 -196
  576. package/dist/reverse.d.ts.map +0 -1
  577. package/dist/reverse.js +0 -78
  578. package/dist/reverse.js.map +0 -1
  579. package/dist/root-error-boundary.d.ts +0 -33
  580. package/dist/root-error-boundary.d.ts.map +0 -1
  581. package/dist/root-error-boundary.js +0 -165
  582. package/dist/root-error-boundary.js.map +0 -1
  583. package/dist/route-content-wrapper.d.ts +0 -46
  584. package/dist/route-content-wrapper.d.ts.map +0 -1
  585. package/dist/route-content-wrapper.js +0 -77
  586. package/dist/route-content-wrapper.js.map +0 -1
  587. package/dist/route-definition.d.ts +0 -421
  588. package/dist/route-definition.d.ts.map +0 -1
  589. package/dist/route-definition.js +0 -868
  590. package/dist/route-definition.js.map +0 -1
  591. package/dist/route-map-builder.d.ts +0 -155
  592. package/dist/route-map-builder.d.ts.map +0 -1
  593. package/dist/route-map-builder.js +0 -237
  594. package/dist/route-map-builder.js.map +0 -1
  595. package/dist/route-types.d.ts +0 -165
  596. package/dist/route-types.d.ts.map +0 -1
  597. package/dist/route-types.js +0 -7
  598. package/dist/route-types.js.map +0 -1
  599. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  600. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  601. package/dist/router/__tests__/handler-context.test.js +0 -65
  602. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  603. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  604. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  605. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  606. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  607. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  608. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  609. package/dist/router/__tests__/match-context.test.js +0 -92
  610. package/dist/router/__tests__/match-context.test.js.map +0 -1
  611. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  612. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  613. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  614. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  615. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  616. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  617. package/dist/router/__tests__/match-result.test.js +0 -457
  618. package/dist/router/__tests__/match-result.test.js.map +0 -1
  619. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  620. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  621. package/dist/router/__tests__/on-error.test.js +0 -678
  622. package/dist/router/__tests__/on-error.test.js.map +0 -1
  623. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  624. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  625. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  626. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  627. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  628. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  629. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  630. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  631. package/dist/router/error-handling.d.ts +0 -77
  632. package/dist/router/error-handling.d.ts.map +0 -1
  633. package/dist/router/error-handling.js +0 -202
  634. package/dist/router/error-handling.js.map +0 -1
  635. package/dist/router/handler-context.d.ts +0 -20
  636. package/dist/router/handler-context.d.ts.map +0 -1
  637. package/dist/router/handler-context.js +0 -198
  638. package/dist/router/handler-context.js.map +0 -1
  639. package/dist/router/intercept-resolution.d.ts +0 -66
  640. package/dist/router/intercept-resolution.d.ts.map +0 -1
  641. package/dist/router/intercept-resolution.js +0 -246
  642. package/dist/router/intercept-resolution.js.map +0 -1
  643. package/dist/router/loader-resolution.d.ts +0 -64
  644. package/dist/router/loader-resolution.d.ts.map +0 -1
  645. package/dist/router/loader-resolution.js +0 -284
  646. package/dist/router/loader-resolution.js.map +0 -1
  647. package/dist/router/logging.d.ts +0 -15
  648. package/dist/router/logging.d.ts.map +0 -1
  649. package/dist/router/logging.js +0 -99
  650. package/dist/router/logging.js.map +0 -1
  651. package/dist/router/manifest.d.ts +0 -22
  652. package/dist/router/manifest.d.ts.map +0 -1
  653. package/dist/router/manifest.js +0 -181
  654. package/dist/router/manifest.js.map +0 -1
  655. package/dist/router/match-api.d.ts +0 -35
  656. package/dist/router/match-api.d.ts.map +0 -1
  657. package/dist/router/match-api.js +0 -406
  658. package/dist/router/match-api.js.map +0 -1
  659. package/dist/router/match-context.d.ts +0 -206
  660. package/dist/router/match-context.d.ts.map +0 -1
  661. package/dist/router/match-context.js +0 -17
  662. package/dist/router/match-context.js.map +0 -1
  663. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  664. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  665. package/dist/router/match-middleware/background-revalidation.js +0 -75
  666. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  667. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  668. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  669. package/dist/router/match-middleware/cache-lookup.js +0 -257
  670. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  671. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  672. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  673. package/dist/router/match-middleware/cache-store.js +0 -108
  674. package/dist/router/match-middleware/cache-store.js.map +0 -1
  675. package/dist/router/match-middleware/index.d.ts +0 -81
  676. package/dist/router/match-middleware/index.d.ts.map +0 -1
  677. package/dist/router/match-middleware/index.js +0 -80
  678. package/dist/router/match-middleware/index.js.map +0 -1
  679. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  680. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  681. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  682. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  683. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  684. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  685. package/dist/router/match-middleware/segment-resolution.js +0 -53
  686. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  687. package/dist/router/match-pipelines.d.ts +0 -147
  688. package/dist/router/match-pipelines.d.ts.map +0 -1
  689. package/dist/router/match-pipelines.js +0 -82
  690. package/dist/router/match-pipelines.js.map +0 -1
  691. package/dist/router/match-result.d.ts +0 -126
  692. package/dist/router/match-result.d.ts.map +0 -1
  693. package/dist/router/match-result.js +0 -93
  694. package/dist/router/match-result.js.map +0 -1
  695. package/dist/router/metrics.d.ts +0 -20
  696. package/dist/router/metrics.d.ts.map +0 -1
  697. package/dist/router/metrics.js +0 -47
  698. package/dist/router/metrics.js.map +0 -1
  699. package/dist/router/middleware.d.ts +0 -249
  700. package/dist/router/middleware.d.ts.map +0 -1
  701. package/dist/router/middleware.js +0 -434
  702. package/dist/router/middleware.js.map +0 -1
  703. package/dist/router/middleware.test.d.ts +0 -2
  704. package/dist/router/middleware.test.d.ts.map +0 -1
  705. package/dist/router/middleware.test.js +0 -816
  706. package/dist/router/middleware.test.js.map +0 -1
  707. package/dist/router/pattern-matching.d.ts +0 -149
  708. package/dist/router/pattern-matching.d.ts.map +0 -1
  709. package/dist/router/pattern-matching.js +0 -349
  710. package/dist/router/pattern-matching.js.map +0 -1
  711. package/dist/router/revalidation.d.ts +0 -44
  712. package/dist/router/revalidation.d.ts.map +0 -1
  713. package/dist/router/revalidation.js +0 -147
  714. package/dist/router/revalidation.js.map +0 -1
  715. package/dist/router/router-context.d.ts +0 -135
  716. package/dist/router/router-context.d.ts.map +0 -1
  717. package/dist/router/router-context.js +0 -36
  718. package/dist/router/router-context.js.map +0 -1
  719. package/dist/router/segment-resolution.d.ts +0 -127
  720. package/dist/router/segment-resolution.d.ts.map +0 -1
  721. package/dist/router/segment-resolution.js +0 -919
  722. package/dist/router/segment-resolution.js.map +0 -1
  723. package/dist/router/trie-matching.d.ts +0 -40
  724. package/dist/router/trie-matching.d.ts.map +0 -1
  725. package/dist/router/trie-matching.js +0 -127
  726. package/dist/router/trie-matching.js.map +0 -1
  727. package/dist/router/types.d.ts +0 -136
  728. package/dist/router/types.d.ts.map +0 -1
  729. package/dist/router/types.js +0 -7
  730. package/dist/router/types.js.map +0 -1
  731. package/dist/router.d.ts +0 -753
  732. package/dist/router.d.ts.map +0 -1
  733. package/dist/router.gen.d.ts +0 -6
  734. package/dist/router.gen.d.ts.map +0 -1
  735. package/dist/router.gen.js +0 -6
  736. package/dist/router.gen.js.map +0 -1
  737. package/dist/router.js +0 -1304
  738. package/dist/router.js.map +0 -1
  739. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  740. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  741. package/dist/rsc/__tests__/helpers.test.js +0 -140
  742. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  743. package/dist/rsc/handler.d.ts +0 -45
  744. package/dist/rsc/handler.d.ts.map +0 -1
  745. package/dist/rsc/handler.js +0 -1172
  746. package/dist/rsc/handler.js.map +0 -1
  747. package/dist/rsc/helpers.d.ts +0 -16
  748. package/dist/rsc/helpers.d.ts.map +0 -1
  749. package/dist/rsc/helpers.js +0 -55
  750. package/dist/rsc/helpers.js.map +0 -1
  751. package/dist/rsc/index.d.ts +0 -22
  752. package/dist/rsc/index.d.ts.map +0 -1
  753. package/dist/rsc/index.js +0 -23
  754. package/dist/rsc/index.js.map +0 -1
  755. package/dist/rsc/nonce.d.ts +0 -9
  756. package/dist/rsc/nonce.d.ts.map +0 -1
  757. package/dist/rsc/nonce.js +0 -18
  758. package/dist/rsc/nonce.js.map +0 -1
  759. package/dist/rsc/types.d.ts +0 -206
  760. package/dist/rsc/types.d.ts.map +0 -1
  761. package/dist/rsc/types.js +0 -8
  762. package/dist/rsc/types.js.map +0 -1
  763. package/dist/search-params.d.ts +0 -103
  764. package/dist/search-params.d.ts.map +0 -1
  765. package/dist/search-params.js +0 -74
  766. package/dist/search-params.js.map +0 -1
  767. package/dist/segment-system.d.ts +0 -75
  768. package/dist/segment-system.d.ts.map +0 -1
  769. package/dist/segment-system.js +0 -336
  770. package/dist/segment-system.js.map +0 -1
  771. package/dist/server/context.d.ts +0 -245
  772. package/dist/server/context.d.ts.map +0 -1
  773. package/dist/server/context.js +0 -197
  774. package/dist/server/context.js.map +0 -1
  775. package/dist/server/fetchable-loader-store.d.ts +0 -18
  776. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  777. package/dist/server/fetchable-loader-store.js +0 -18
  778. package/dist/server/fetchable-loader-store.js.map +0 -1
  779. package/dist/server/handle-store.d.ts +0 -85
  780. package/dist/server/handle-store.d.ts.map +0 -1
  781. package/dist/server/handle-store.js +0 -142
  782. package/dist/server/handle-store.js.map +0 -1
  783. package/dist/server/loader-registry.d.ts +0 -55
  784. package/dist/server/loader-registry.d.ts.map +0 -1
  785. package/dist/server/loader-registry.js +0 -132
  786. package/dist/server/loader-registry.js.map +0 -1
  787. package/dist/server/request-context.d.ts +0 -226
  788. package/dist/server/request-context.d.ts.map +0 -1
  789. package/dist/server/request-context.js +0 -290
  790. package/dist/server/request-context.js.map +0 -1
  791. package/dist/server/root-layout.d.ts +0 -4
  792. package/dist/server/root-layout.d.ts.map +0 -1
  793. package/dist/server/root-layout.js +0 -5
  794. package/dist/server/root-layout.js.map +0 -1
  795. package/dist/server.d.ts +0 -15
  796. package/dist/server.d.ts.map +0 -1
  797. package/dist/server.js +0 -20
  798. package/dist/server.js.map +0 -1
  799. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  800. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  801. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  802. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  803. package/dist/ssr/index.d.ts +0 -98
  804. package/dist/ssr/index.d.ts.map +0 -1
  805. package/dist/ssr/index.js +0 -158
  806. package/dist/ssr/index.js.map +0 -1
  807. package/dist/static-handler.d.ts +0 -50
  808. package/dist/static-handler.d.ts.map +0 -1
  809. package/dist/static-handler.gen.d.ts +0 -5
  810. package/dist/static-handler.gen.d.ts.map +0 -1
  811. package/dist/static-handler.gen.js +0 -5
  812. package/dist/static-handler.gen.js.map +0 -1
  813. package/dist/static-handler.js +0 -29
  814. package/dist/static-handler.js.map +0 -1
  815. package/dist/theme/ThemeProvider.d.ts +0 -20
  816. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  817. package/dist/theme/ThemeProvider.js +0 -240
  818. package/dist/theme/ThemeProvider.js.map +0 -1
  819. package/dist/theme/ThemeScript.d.ts +0 -48
  820. package/dist/theme/ThemeScript.d.ts.map +0 -1
  821. package/dist/theme/ThemeScript.js +0 -13
  822. package/dist/theme/ThemeScript.js.map +0 -1
  823. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  824. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  825. package/dist/theme/__tests__/theme.test.js +0 -103
  826. package/dist/theme/__tests__/theme.test.js.map +0 -1
  827. package/dist/theme/constants.d.ts +0 -29
  828. package/dist/theme/constants.d.ts.map +0 -1
  829. package/dist/theme/constants.js +0 -48
  830. package/dist/theme/constants.js.map +0 -1
  831. package/dist/theme/index.d.ts +0 -31
  832. package/dist/theme/index.d.ts.map +0 -1
  833. package/dist/theme/index.js +0 -36
  834. package/dist/theme/index.js.map +0 -1
  835. package/dist/theme/theme-context.d.ts +0 -40
  836. package/dist/theme/theme-context.d.ts.map +0 -1
  837. package/dist/theme/theme-context.js +0 -60
  838. package/dist/theme/theme-context.js.map +0 -1
  839. package/dist/theme/theme-script.d.ts +0 -27
  840. package/dist/theme/theme-script.d.ts.map +0 -1
  841. package/dist/theme/theme-script.js +0 -147
  842. package/dist/theme/theme-script.js.map +0 -1
  843. package/dist/theme/types.d.ts +0 -163
  844. package/dist/theme/types.d.ts.map +0 -1
  845. package/dist/theme/types.js +0 -11
  846. package/dist/theme/types.js.map +0 -1
  847. package/dist/theme/use-theme.d.ts +0 -12
  848. package/dist/theme/use-theme.d.ts.map +0 -1
  849. package/dist/theme/use-theme.js +0 -40
  850. package/dist/theme/use-theme.js.map +0 -1
  851. package/dist/types.d.ts +0 -1479
  852. package/dist/types.d.ts.map +0 -1
  853. package/dist/types.js +0 -10
  854. package/dist/types.js.map +0 -1
  855. package/dist/urls.d.ts +0 -441
  856. package/dist/urls.d.ts.map +0 -1
  857. package/dist/urls.gen.d.ts +0 -8
  858. package/dist/urls.gen.d.ts.map +0 -1
  859. package/dist/urls.gen.js +0 -8
  860. package/dist/urls.gen.js.map +0 -1
  861. package/dist/urls.js +0 -443
  862. package/dist/urls.js.map +0 -1
  863. package/dist/use-loader.d.ts +0 -127
  864. package/dist/use-loader.d.ts.map +0 -1
  865. package/dist/use-loader.js +0 -237
  866. package/dist/use-loader.js.map +0 -1
  867. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  868. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  869. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  870. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  871. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  872. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  873. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  874. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  875. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  876. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  877. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  878. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  879. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  880. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  881. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  882. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  883. package/dist/vite/ast-handler-extract.d.ts +0 -49
  884. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  885. package/dist/vite/ast-handler-extract.js +0 -249
  886. package/dist/vite/ast-handler-extract.js.map +0 -1
  887. package/dist/vite/expose-action-id.d.ts +0 -19
  888. package/dist/vite/expose-action-id.d.ts.map +0 -1
  889. package/dist/vite/expose-action-id.js +0 -250
  890. package/dist/vite/expose-action-id.js.map +0 -1
  891. package/dist/vite/expose-id-utils.d.ts +0 -69
  892. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  893. package/dist/vite/expose-id-utils.js +0 -289
  894. package/dist/vite/expose-id-utils.js.map +0 -1
  895. package/dist/vite/expose-internal-ids.d.ts +0 -22
  896. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  897. package/dist/vite/expose-internal-ids.js +0 -886
  898. package/dist/vite/expose-internal-ids.js.map +0 -1
  899. package/dist/vite/index.d.ts +0 -149
  900. package/dist/vite/index.d.ts.map +0 -1
  901. package/dist/vite/index.js.map +0 -1
  902. package/dist/vite/index.named-routes.gen.ts +0 -103
  903. package/dist/vite/package-resolution.d.ts +0 -43
  904. package/dist/vite/package-resolution.d.ts.map +0 -1
  905. package/dist/vite/package-resolution.js +0 -112
  906. package/dist/vite/package-resolution.js.map +0 -1
  907. package/dist/vite/virtual-entries.d.ts +0 -25
  908. package/dist/vite/virtual-entries.d.ts.map +0 -1
  909. package/dist/vite/virtual-entries.js +0 -110
  910. package/dist/vite/virtual-entries.js.map +0 -1
@@ -31,7 +31,11 @@ export async function buildRouterTrieFromUrlpatterns(
31
31
  ): Promise<void> {
32
32
  const { generateManifestFull } =
33
33
  await import("../build/generate-manifest.js");
34
- const generated = generateManifestFull(router.urlpatterns);
34
+ const generated = generateManifestFull(
35
+ router.urlpatterns,
36
+ undefined,
37
+ router.basename ? { urlPrefix: router.basename } : undefined,
38
+ );
35
39
  if (
36
40
  generated._routeAncestry &&
37
41
  Object.keys(generated._routeAncestry).length > 0
@@ -243,6 +243,8 @@ export async function handleProgressiveEnhancement<TEnv>(
243
243
  const payload: RscPayload = {
244
244
  metadata: {
245
245
  pathname: url.pathname,
246
+ routerId: ctx.router.id,
247
+ basename: ctx.router.basename,
246
248
  segments: match.segments,
247
249
  matched: match.matched,
248
250
  diff: match.diff,
@@ -342,6 +344,8 @@ async function renderPeErrorBoundary<TEnv>(
342
344
  const payload: RscPayload = {
343
345
  metadata: {
344
346
  pathname: url.pathname,
347
+ routerId: ctx.router.id,
348
+ basename: ctx.router.basename,
345
349
  segments: errorResult.segments,
346
350
  matched: errorResult.matched,
347
351
  diff: errorResult.diff,
@@ -54,6 +54,8 @@ export async function handleRscRendering<TEnv>(
54
54
  payload = {
55
55
  metadata: {
56
56
  pathname: url.pathname,
57
+ routerId: ctx.router.id,
58
+ basename: ctx.router.basename,
57
59
  segments: match.segments,
58
60
  matched: match.matched,
59
61
  diff: match.diff,
@@ -75,6 +77,7 @@ export async function handleRscRendering<TEnv>(
75
77
  payload = {
76
78
  metadata: {
77
79
  pathname: url.pathname,
80
+ routerId: ctx.router.id,
78
81
  segments: result.segments,
79
82
  matched: result.matched,
80
83
  diff: result.diff,
@@ -136,6 +139,8 @@ export async function handleRscRendering<TEnv>(
136
139
 
137
140
  metadata: {
138
141
  pathname: url.pathname,
142
+ routerId: ctx.router.id,
143
+ basename: ctx.router.basename,
139
144
  segments: match.segments,
140
145
  matched: match.matched,
141
146
  diff: match.diff,
@@ -208,6 +208,7 @@ export async function executeServerAction<TEnv>(
208
208
  const payload: RscPayload = {
209
209
  metadata: {
210
210
  pathname: url.pathname,
211
+ routerId: ctx.router.id,
211
212
  segments: errorResult.segments,
212
213
  isPartial: true,
213
214
  matched: errorResult.matched,
@@ -314,6 +315,7 @@ export async function revalidateAfterAction<TEnv>(
314
315
  const payload: RscPayload = {
315
316
  metadata: {
316
317
  pathname: url.pathname,
318
+ routerId: ctx.router.id,
317
319
  segments: matchResult.segments,
318
320
  isPartial: true,
319
321
  matched: matchResult.matched,
@@ -77,7 +77,7 @@ export function getSSRSetup<TEnv>(
77
77
  url: URL,
78
78
  metricsStore: MetricsStore | undefined,
79
79
  ): Promise<SSRSetup> {
80
- const early = _getRequestContext()?.var?.[SSR_SETUP_VAR] as
80
+ const early = _getRequestContext()?._variables?.[SSR_SETUP_VAR] as
81
81
  | Promise<SSRSetup>
82
82
  | undefined;
83
83
  if (early) return early;
@@ -98,7 +98,7 @@ export function getSSRSetup<TEnv>(
98
98
  * the isRscRequest decision in rsc-rendering.ts.
99
99
  *
100
100
  * Note: response/mime routes are excluded by the caller — this function
101
- * runs after previewMatch() classifies the route type.
101
+ * runs after classifyRequest() determines the request mode.
102
102
  */
103
103
  export function mayNeedSSR(request: Request, url: URL): boolean {
104
104
  if (
package/src/rsc/types.ts CHANGED
@@ -19,6 +19,9 @@ export interface RscPayload {
19
19
  metadata?: {
20
20
  pathname: string;
21
21
  segments: ResolvedSegment[];
22
+ /** Router instance ID. When this changes between navigations, the client
23
+ * discards cached segments and does a full tree replacement (app switch). */
24
+ routerId?: string;
22
25
  isPartial?: boolean;
23
26
  isError?: boolean;
24
27
  matched?: string[];
@@ -38,6 +41,8 @@ export interface RscPayload {
38
41
  themeConfig?: ResolvedThemeConfig | null;
39
42
  /** Initial theme from cookie (for SSR hydration) */
40
43
  initialTheme?: Theme;
44
+ /** URL prefix for all routes (from createRouter({ basename })). */
45
+ basename?: string;
41
46
  /** Whether connection warmup is enabled */
42
47
  warmupEnabled?: boolean;
43
48
  /** Server-side redirect with optional state (for partial requests) */
@@ -63,7 +68,9 @@ export interface RSCDependencies {
63
68
  */
64
69
  renderToReadableStream: <T>(
65
70
  payload: T,
66
- options?: { temporaryReferences?: unknown },
71
+ options?: {
72
+ temporaryReferences?: unknown;
73
+ },
67
74
  ) => ReadableStream<Uint8Array>;
68
75
 
69
76
  /**
@@ -191,8 +191,12 @@ export type EntryData =
191
191
  /** Original PrerenderHandlerDefinition (for build-time getParams access) */
192
192
  prerenderDef?: {
193
193
  getParams?: (ctx: any) => Promise<any[]> | any[];
194
- options?: { passthrough?: boolean };
194
+ options?: { concurrency?: number };
195
195
  };
196
+ /** Set when route is wrapped with Passthrough() — has a separate live handler */
197
+ isPassthrough?: true;
198
+ /** Live handler for runtime fallback (only set on Passthrough routes) */
199
+ liveHandler?: Handler<any, any, any>;
196
200
  /** Set when handler is a Static definition (build-time only) */
197
201
  isStaticPrerender?: true;
198
202
  /** Static handler $$id for build-time store lookup */
@@ -273,6 +277,9 @@ interface HelperContext {
273
277
  string,
274
278
  import("../cache/profile-registry.js").CacheProfile
275
279
  >;
280
+ /** True when resolving handlers inside a cache() DSL boundary.
281
+ * Read by ctx.get() to guard non-cacheable variable reads. */
282
+ insideCacheScope?: boolean;
276
283
  }
277
284
  // Use a global symbol key so the AsyncLocalStorage instance survives HMR
278
285
  // module re-evaluation. Without this, Vite's RSC module runner may create
@@ -666,3 +673,45 @@ export function track(label: string, depth?: number): () => void {
666
673
  });
667
674
  };
668
675
  }
676
+
677
+ /**
678
+ * Separate ALS for tracking loader execution scope.
679
+ * Uses a dedicated ALS (not RSCRouterContext) to avoid issues with
680
+ * nested RSCRouterContext.run() calls in Vite's module runner.
681
+ */
682
+ const LOADER_SCOPE_KEY = Symbol.for("rangojs-router:loader-scope");
683
+ const loaderScopeALS: AsyncLocalStorage<{ active: true }> = ((
684
+ globalThis as any
685
+ )[LOADER_SCOPE_KEY] ??= new AsyncLocalStorage<{ active: true }>());
686
+
687
+ /**
688
+ * Check if the current execution is inside a cache() DSL boundary.
689
+ * Returns false inside loader execution — loaders are always fresh
690
+ * (never cached), so non-cacheable reads are safe.
691
+ */
692
+ export function isInsideCacheScope(): boolean {
693
+ if (RSCRouterContext.getStore()?.insideCacheScope !== true) return false;
694
+ // Loaders are always fresh — even inside a cache() boundary, the loader
695
+ // function re-executes on every request. Skip the guard when running
696
+ // inside a loader.
697
+ if (loaderScopeALS.getStore()?.active) return false;
698
+ return true;
699
+ }
700
+
701
+ /**
702
+ * Check if the current execution is inside a DSL loader scope
703
+ * (wrapped by runInsideLoaderScope). Used by rendered() barrier
704
+ * to distinguish DSL loaders from handler-invoked loaders.
705
+ */
706
+ export function isInsideLoaderScope(): boolean {
707
+ return loaderScopeALS.getStore()?.active === true;
708
+ }
709
+
710
+ /**
711
+ * Run `fn` inside a loader scope. While active, cache-scope guards
712
+ * are bypassed because loaders are always fresh (never cached) and
713
+ * their side effects (setCookie, header, etc.) are safe.
714
+ */
715
+ export function runInsideLoaderScope<T>(fn: () => T): T {
716
+ return loaderScopeALS.run({ active: true }, fn);
717
+ }
@@ -44,20 +44,21 @@ export function setLoaderImports(
44
44
  export async function getLoaderLazy(
45
45
  id: string,
46
46
  ): Promise<LoaderRegistryEntry | undefined> {
47
- // Check if already cached in main registry
48
- const existing = loaderRegistry.get(id);
49
- if (existing) {
50
- return existing;
51
- }
52
-
53
- // Check the fetchable loader registry (populated by createLoader)
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.
54
50
  const fetchable = getFetchableLoader(id);
55
51
  if (fetchable) {
56
- // Cache in main registry for future requests
57
52
  loaderRegistry.set(id, fetchable);
58
53
  return fetchable;
59
54
  }
60
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
+
61
62
  // Try to lazy load from the import map (production mode)
62
63
  if (lazyLoaderImports && lazyLoaderImports.size > 0) {
63
64
  const lazyImport = lazyLoaderImports.get(id);
@@ -20,7 +20,12 @@ import type {
20
20
  DefaultRouteName,
21
21
  } from "../types/global-namespace.js";
22
22
  import type { Handle } from "../handle.js";
23
- import { type ContextVar, contextGet, contextSet } from "../context-var.js";
23
+ import {
24
+ type ContextVar,
25
+ contextGet,
26
+ contextSet,
27
+ isNonCacheable,
28
+ } from "../context-var.js";
24
29
  import { createHandleStore, type HandleStore } from "./handle-store.js";
25
30
  import { isHandle } from "../handle.js";
26
31
  import { track, type MetricsStore } from "./context.js";
@@ -30,6 +35,7 @@ import type { Theme, ResolvedThemeConfig } from "../theme/types.js";
30
35
  import { THEME_COOKIE } from "../theme/constants.js";
31
36
  import type { LocationStateEntry } from "../browser/react/location-state-shared.js";
32
37
  import { NOCACHE_SYMBOL, assertNotInsideCacheExec } from "../cache/taint.js";
38
+ import { isInsideCacheScope } from "./context.js";
33
39
  import {
34
40
  createReverseFunction,
35
41
  stripInternalParams,
@@ -63,8 +69,8 @@ export interface RequestContext<
63
69
  pathname: string;
64
70
  /** URL search params (with internal `_rsc*` params stripped, same as `url.searchParams`) */
65
71
  searchParams: URLSearchParams;
66
- /** Variables set by middleware (same as ctx.var) */
67
- var: Record<string, any>;
72
+ /** @internal Shared variable backing store for ctx.get()/ctx.set(). */
73
+ _variables: Record<string, any>;
68
74
  /** Get a variable set by middleware */
69
75
  get: {
70
76
  <T>(contextVar: ContextVar<T>): T | undefined;
@@ -72,8 +78,12 @@ export interface RequestContext<
72
78
  };
73
79
  /** Set a variable (shared with middleware and handlers) */
74
80
  set: {
75
- <T>(contextVar: ContextVar<T>, value: T): void;
76
- <K extends string>(key: K, value: any): void;
81
+ <T>(
82
+ contextVar: ContextVar<T>,
83
+ value: T,
84
+ options?: { cache?: boolean },
85
+ ): void;
86
+ <K extends string>(key: K, value: any, options?: { cache?: boolean }): void;
77
87
  };
78
88
  /**
79
89
  * Route params (populated after route matching)
@@ -261,6 +271,41 @@ export interface RequestContext<
261
271
  /** @internal Previous route key (from the navigation source), used for revalidation */
262
272
  _prevRouteKey?: string;
263
273
 
274
+ /**
275
+ * @internal Render barrier for experimental `rendered()` API.
276
+ * Resolves when all non-loader segments have settled and handle data
277
+ * is available. Used by DSL loaders that call `ctx.rendered()`.
278
+ */
279
+ _renderBarrier: Promise<void>;
280
+
281
+ /**
282
+ * @internal Resolve the render barrier. Accepts resolved segments, filters
283
+ * out loaders, and captures non-loader segment IDs as the handle ordering.
284
+ * Called after segment resolution (fresh) or handle replay (cache/prerender).
285
+ */
286
+ _resolveRenderBarrier: (
287
+ segments: Array<{ type: string; id: string }>,
288
+ ) => void;
289
+
290
+ /**
291
+ * @internal Segment order at barrier resolution time, used by loader
292
+ * ctx.use(handle) to collect handle data in correct order.
293
+ */
294
+ _renderBarrierSegmentOrder?: string[];
295
+
296
+ /**
297
+ * @internal Set to true when the matched entry tree contains any `loading()`
298
+ * entries (streaming). Used by rendered() to fail fast.
299
+ */
300
+ _treeHasStreaming?: boolean;
301
+
302
+ /**
303
+ * @internal Loader IDs that have called rendered() and are waiting for the
304
+ * barrier. Used to detect deadlocks when a handler tries to await the same
305
+ * loader via ctx.use(Loader).
306
+ */
307
+ _renderBarrierWaiters?: Set<string>;
308
+
264
309
  /** @internal Per-request error dedup set for onError reporting */
265
310
  _reportedErrors: WeakSet<object>;
266
311
 
@@ -277,6 +322,15 @@ export interface RequestContext<
277
322
 
278
323
  /** @internal Request-scoped performance metrics store */
279
324
  _metricsStore?: MetricsStore;
325
+
326
+ /** @internal Router basename for this request (used by redirect()) */
327
+ _basename?: string;
328
+
329
+ /**
330
+ * @internal RouteSnapshot from classifyRequest, reused by match/matchPartial
331
+ * to avoid a second resolveRoute call. Cleared on HMR invalidation.
332
+ */
333
+ _classifiedRoute?: import("../router/route-snapshot.js").RouteSnapshot;
280
334
  }
281
335
 
282
336
  /**
@@ -303,10 +357,18 @@ export type PublicRequestContext<
303
357
  | "_routeName"
304
358
  | "_prevRouteKey"
305
359
  | "_reportedErrors"
360
+ | "_renderBarrier"
361
+ | "_resolveRenderBarrier"
362
+ | "_renderBarrierSegmentOrder"
363
+ | "_treeHasStreaming"
364
+ | "_renderBarrierWaiters"
306
365
  | "_reportBackgroundError"
307
366
  | "_debugPerformance"
308
367
  | "_metricsStore"
368
+ | "_basename"
309
369
  | "_setStatus"
370
+ | "_variables"
371
+ | "_classifiedRoute"
310
372
  | "res"
311
373
  >;
312
374
 
@@ -506,6 +568,18 @@ export function createRequestContext<TEnv>(
506
568
  responseCookieCache = null;
507
569
  };
508
570
 
571
+ // Guard: throw if a response-level side effect is called inside a cache() scope.
572
+ // Uses ALS to detect the scope (set during segment resolution).
573
+ function assertNotInsideCacheScopeALS(methodName: string): void {
574
+ if (isInsideCacheScope()) {
575
+ throw new Error(
576
+ `ctx.${methodName}() cannot be called inside a cache() boundary. ` +
577
+ `On cache hit the handler is skipped, so this side effect would be lost. ` +
578
+ `Move ctx.${methodName}() to a middleware or layout outside the cache() scope.`,
579
+ );
580
+ }
581
+ }
582
+
509
583
  // Effective cookie read: response stub Set-Cookie wins, then original header.
510
584
  // The stub IS the source of truth for same-request mutations.
511
585
  const effectiveCookie = (name: string): string | undefined => {
@@ -569,12 +643,20 @@ export function createRequestContext<TEnv>(
569
643
  originalUrl: new URL(request.url),
570
644
  pathname: url.pathname,
571
645
  searchParams: cleanUrl.searchParams,
572
- var: variables,
573
- get: ((keyOrVar: any) =>
574
- contextGet(variables, keyOrVar)) as RequestContext<TEnv>["get"],
575
- set: ((keyOrVar: any, value: any) => {
646
+ _variables: variables,
647
+ get: ((keyOrVar: any) => {
648
+ if (isNonCacheable(variables, keyOrVar) && isInsideCacheScope()) {
649
+ throw new Error(
650
+ `ctx.get() for a non-cacheable variable cannot be called inside a cache() boundary. ` +
651
+ `The variable was created with { cache: false } or set with { cache: false }, ` +
652
+ `and its value would be stale on cache hit. Move the read outside the cached scope.`,
653
+ );
654
+ }
655
+ return contextGet(variables, keyOrVar);
656
+ }) as RequestContext<TEnv>["get"],
657
+ set: ((keyOrVar: any, value: any, options?: any) => {
576
658
  assertNotInsideCacheExec(ctx, "set");
577
- contextSet(variables, keyOrVar, value);
659
+ contextSet(variables, keyOrVar, value, options);
578
660
  }) as RequestContext<TEnv>["set"],
579
661
  params: {} as Record<string, string>,
580
662
 
@@ -612,6 +694,7 @@ export function createRequestContext<TEnv>(
612
694
 
613
695
  setCookie(name: string, value: string, options?: CookieOptions): void {
614
696
  assertNotInsideCacheExec(ctx, "setCookie");
697
+ assertNotInsideCacheScopeALS("setCookie");
615
698
  stubResponse.headers.append(
616
699
  "Set-Cookie",
617
700
  serializeCookieValue(name, value, options),
@@ -624,6 +707,7 @@ export function createRequestContext<TEnv>(
624
707
  options?: Pick<CookieOptions, "domain" | "path">,
625
708
  ): void {
626
709
  assertNotInsideCacheExec(ctx, "deleteCookie");
710
+ assertNotInsideCacheScopeALS("deleteCookie");
627
711
  stubResponse.headers.append(
628
712
  "Set-Cookie",
629
713
  serializeCookieValue(name, "", { ...options, maxAge: 0 }),
@@ -633,11 +717,13 @@ export function createRequestContext<TEnv>(
633
717
 
634
718
  header(name: string, value: string): void {
635
719
  assertNotInsideCacheExec(ctx, "header");
720
+ assertNotInsideCacheScopeALS("header");
636
721
  stubResponse.headers.set(name, value);
637
722
  },
638
723
 
639
724
  setStatus(status: number): void {
640
725
  assertNotInsideCacheExec(ctx, "setStatus");
726
+ assertNotInsideCacheScopeALS("setStatus");
641
727
  stubResponse = new Response(null, {
642
728
  status,
643
729
  headers: stubResponse.headers,
@@ -676,6 +762,7 @@ export function createRequestContext<TEnv>(
676
762
 
677
763
  onResponse(callback: (response: Response) => Response): void {
678
764
  assertNotInsideCacheExec(ctx, "onResponse");
765
+ assertNotInsideCacheScopeALS("onResponse");
679
766
  this._onResponseCallbacks.push(callback);
680
767
  },
681
768
 
@@ -703,9 +790,38 @@ export function createRequestContext<TEnv>(
703
790
  _reportedErrors: new WeakSet<object>(),
704
791
  _metricsStore: undefined,
705
792
 
793
+ // Render barrier: deferred promise resolved after non-loader segments settle.
794
+ _renderBarrier: null as any, // set below
795
+ _resolveRenderBarrier: null as any, // set below
796
+ _renderBarrierSegmentOrder: undefined,
797
+
706
798
  reverse: createReverseFunction(getGlobalRouteMap(), undefined, {}),
707
799
  };
708
800
 
801
+ // Create deferred render barrier. Phase 1: non-streaming only, so all handlers
802
+ // complete synchronously during resolveAllSegments. The barrier is a simple
803
+ // deferred promise resolved after segment resolution (or after handle replay
804
+ // on cache/prerender paths). No HandleStore sealing here — that stays in the
805
+ // existing lifecycle (rsc-rendering.ts, cache-scope.ts, etc.).
806
+ let barrierResolved = false;
807
+ let resolveBarrier: () => void;
808
+ ctx._renderBarrier = new Promise<void>((resolve) => {
809
+ resolveBarrier = resolve;
810
+ });
811
+ ctx._resolveRenderBarrier = (
812
+ segments: Array<{ type: string; id: string }>,
813
+ ) => {
814
+ if (barrierResolved) return;
815
+ barrierResolved = true;
816
+ ctx._renderBarrierSegmentOrder = segments
817
+ .filter((s) => s.type !== "loader")
818
+ .map((s) => s.id);
819
+ // Clear deadlock detection set — once the barrier resolves, the loaders
820
+ // waiting on it will settle and the deadlock window is closed.
821
+ ctx._renderBarrierWaiters = undefined;
822
+ resolveBarrier();
823
+ };
824
+
709
825
  // Now create use() with access to ctx
710
826
  ctx.use = createUseFunction({
711
827
  handleStore,
@@ -888,14 +1004,13 @@ export function createUseFunction<TEnv>(
888
1004
  pathname: ctx.pathname,
889
1005
  url: ctx.url,
890
1006
  env: ctx.env as any,
891
- var: ctx.var as any,
892
1007
  get: ctx.get as any,
893
- use: <TDep, TDepParams = any>(
1008
+ use: (<TDep, TDepParams = any>(
894
1009
  dep: LoaderDefinition<TDep, TDepParams>,
895
1010
  ): Promise<TDep> => {
896
1011
  // Recursive call - will start dep loader if not already started
897
1012
  return ctx.use(dep);
898
- },
1013
+ }) as LoaderContext["use"],
899
1014
  method: "GET",
900
1015
  body: undefined,
901
1016
  reverse: createReverseFunction(
@@ -904,9 +1019,14 @@ export function createUseFunction<TEnv>(
904
1019
  ctx.params as Record<string, string>,
905
1020
  ctx._routeName ? isRouteRootScoped(ctx._routeName) : undefined,
906
1021
  ),
1022
+ rendered: () => {
1023
+ throw new Error(
1024
+ `ctx.rendered() is only available in DSL loaders (registered via loader() in urls()). ` +
1025
+ `It cannot be used from request-context loaders or server actions.`,
1026
+ );
1027
+ },
907
1028
  };
908
1029
 
909
- // Start loader execution with tracking
910
1030
  const doneLoader = track(`loader:${loader.$$id}`, 2);
911
1031
  const promise = Promise.resolve(loaderFn(loaderCtx)).finally(() => {
912
1032
  doneLoader();
package/src/ssr/index.tsx CHANGED
@@ -129,6 +129,7 @@ interface RscPayload {
129
129
  matched?: string[];
130
130
  pathname?: string;
131
131
  params?: Record<string, string>;
132
+ basename?: string;
132
133
  themeConfig?: ResolvedThemeConfig | null;
133
134
  initialTheme?: Theme;
134
135
  version?: string;
@@ -261,6 +262,7 @@ export function createSSRHandler<TEnv = unknown>(deps: SSRDependencies<TEnv>) {
261
262
  function SsrRoot() {
262
263
  payload ??= createFromReadableStream<RscPayload>(rscStream1);
263
264
  const resolved = React.use(payload);
265
+
264
266
  const themeConfig = resolved.metadata?.themeConfig ?? null;
265
267
  const pathname = resolved.metadata?.pathname ?? "/";
266
268
 
@@ -286,6 +288,7 @@ export function createSSRHandler<TEnv = unknown>(deps: SSRDependencies<TEnv>) {
286
288
  navigate: async () => {},
287
289
  refresh: async () => {},
288
290
  version: resolved.metadata?.version,
291
+ basename: resolved.metadata?.basename,
289
292
  };
290
293
 
291
294
  // Build content tree from segments.
@@ -32,11 +32,21 @@
32
32
  */
33
33
  import type { ReactNode } from "react";
34
34
  import type { Handler } from "./types.js";
35
- import type { PrerenderOptions, StaticBuildContext } from "./prerender.js";
35
+ import type { StaticBuildContext } from "./prerender.js";
36
+ import type { UseItems, HandlerUseItem } from "./route-types.js";
36
37
  import { isCachedFunction } from "./cache/taint.js";
37
38
 
38
39
  // -- Types ------------------------------------------------------------------
39
40
 
41
+ export interface StaticHandlerOptions {
42
+ /**
43
+ * Keep handler in server bundle for live fallback (default: false).
44
+ * false: handler replaced with stub, source-only APIs excluded from bundle.
45
+ * true: handler stays in bundle, renders live at request time.
46
+ */
47
+ passthrough?: boolean;
48
+ }
49
+
40
50
  export interface StaticHandlerDefinition<
41
51
  TParams extends Record<string, any> = any,
42
52
  > {
@@ -46,14 +56,16 @@ export interface StaticHandlerDefinition<
46
56
  /** In dev mode, the actual handler function that layout/path/parallel can call. */
47
57
  handler: Handler<TParams>;
48
58
  /** Static handler options (passthrough support). */
49
- options?: PrerenderOptions;
59
+ options?: StaticHandlerOptions;
60
+ /** Composable default DSL items merged when the handler is mounted. */
61
+ use?: () => UseItems<HandlerUseItem>;
50
62
  }
51
63
 
52
64
  // -- Function ---------------------------------------------------------------
53
65
 
54
66
  export function Static<TParams extends Record<string, any> = {}>(
55
67
  handler: (ctx: StaticBuildContext) => ReactNode | Promise<ReactNode>,
56
- options?: PrerenderOptions,
68
+ options?: StaticHandlerOptions,
57
69
  __injectedId?: string,
58
70
  ): StaticHandlerDefinition<TParams>;
59
71
 
@@ -61,7 +73,7 @@ export function Static<TParams extends Record<string, any> = {}>(
61
73
 
62
74
  export function Static<TParams extends Record<string, any>>(
63
75
  handler: Function,
64
- optionsOrId?: PrerenderOptions | string,
76
+ optionsOrId?: StaticHandlerOptions | string,
65
77
  maybeId?: string,
66
78
  ): StaticHandlerDefinition<TParams> {
67
79
  if (isCachedFunction(handler)) {
@@ -72,13 +84,13 @@ export function Static<TParams extends Record<string, any>>(
72
84
  );
73
85
  }
74
86
 
75
- let options: PrerenderOptions | undefined;
87
+ let options: StaticHandlerOptions | undefined;
76
88
  let id: string;
77
89
 
78
90
  if (typeof optionsOrId === "string") {
79
91
  id = optionsOrId;
80
92
  } else {
81
- options = optionsOrId as PrerenderOptions | undefined;
93
+ options = optionsOrId as StaticHandlerOptions | undefined;
82
94
  id = maybeId ?? "";
83
95
  }
84
96
 
@@ -5,8 +5,8 @@
5
5
  * during cache key generation (before middleware runs).
6
6
  *
7
7
  * Note: While the full RequestContext is passed, middleware-set variables
8
- * (ctx.var, ctx.get()) may not be populated yet since cache lookup
9
- * happens before middleware execution.
8
+ * read via `ctx.get()` may not be populated yet since cache lookup happens
9
+ * before middleware execution.
10
10
  */
11
11
  export type { RequestContext as CacheContext } from "../server/request-context.js";
12
12
 
@@ -101,7 +101,7 @@ export interface CacheOptions<TEnv = unknown> {
101
101
  * Return false to skip cache for this request (always fetch fresh).
102
102
  *
103
103
  * Has access to full RequestContext including env, request, params, cookies, etc.
104
- * Note: Middleware-set variables (ctx.var) may not be populated yet.
104
+ * Note: Middleware-set variables read via `ctx.get()` may not be populated yet.
105
105
  *
106
106
  * @example
107
107
  * ```typescript
@@ -123,7 +123,7 @@ export interface CacheOptions<TEnv = unknown> {
123
123
  * Bypasses default key generation AND store's keyGenerator.
124
124
  *
125
125
  * Has access to full RequestContext including env, request, params, cookies, etc.
126
- * Note: Middleware-set variables (ctx.var) may not be populated yet.
126
+ * Note: Middleware-set variables read via `ctx.get()` may not be populated yet.
127
127
  *
128
128
  * @example
129
129
  * ```typescript