@rangojs/router 0.0.0-experimental.760a71d9 → 0.0.0-experimental.78

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 (932) hide show
  1. package/README.md +76 -18
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +716 -237
  4. package/package.json +3 -3
  5. package/skills/cache-guide/SKILL.md +32 -0
  6. package/skills/caching/SKILL.md +8 -0
  7. package/skills/handler-use/SKILL.md +362 -0
  8. package/skills/intercept/SKILL.md +20 -0
  9. package/skills/layout/SKILL.md +22 -0
  10. package/skills/links/SKILL.md +3 -1
  11. package/skills/loader/SKILL.md +53 -43
  12. package/skills/middleware/SKILL.md +34 -3
  13. package/skills/migrate-nextjs/SKILL.md +560 -0
  14. package/skills/migrate-react-router/SKILL.md +764 -0
  15. package/skills/parallel/SKILL.md +126 -0
  16. package/skills/prerender/SKILL.md +110 -68
  17. package/skills/rango/SKILL.md +24 -22
  18. package/skills/route/SKILL.md +55 -0
  19. package/skills/router-setup/SKILL.md +87 -2
  20. package/skills/typesafety/SKILL.md +10 -0
  21. package/src/__internal.ts +1 -1
  22. package/src/browser/app-version.ts +14 -0
  23. package/src/browser/navigation-bridge.ts +37 -5
  24. package/src/browser/navigation-client.ts +98 -46
  25. package/src/browser/navigation-store.ts +43 -8
  26. package/src/browser/partial-update.ts +41 -7
  27. package/src/browser/prefetch/cache.ts +16 -6
  28. package/src/browser/prefetch/fetch.ts +68 -6
  29. package/src/browser/prefetch/queue.ts +61 -29
  30. package/src/browser/prefetch/resource-ready.ts +77 -0
  31. package/src/browser/react/Link.tsx +67 -8
  32. package/src/browser/react/NavigationProvider.tsx +13 -4
  33. package/src/browser/react/context.ts +7 -2
  34. package/src/browser/react/use-handle.ts +9 -58
  35. package/src/browser/react/use-router.ts +21 -8
  36. package/src/browser/rsc-router.tsx +26 -3
  37. package/src/browser/scroll-restoration.ts +10 -8
  38. package/src/browser/segment-reconciler.ts +36 -14
  39. package/src/browser/server-action-bridge.ts +8 -6
  40. package/src/browser/types.ts +27 -5
  41. package/src/build/generate-manifest.ts +6 -6
  42. package/src/build/generate-route-types.ts +3 -0
  43. package/src/build/route-trie.ts +50 -24
  44. package/src/build/route-types/include-resolution.ts +8 -1
  45. package/src/build/route-types/router-processing.ts +211 -72
  46. package/src/build/route-types/scan-filter.ts +8 -1
  47. package/src/cache/cache-scope.ts +46 -5
  48. package/src/cache/taint.ts +55 -0
  49. package/src/client.tsx +84 -230
  50. package/src/context-var.ts +72 -2
  51. package/src/handle.ts +40 -0
  52. package/src/index.rsc.ts +3 -1
  53. package/src/index.ts +46 -6
  54. package/src/prerender/store.ts +5 -4
  55. package/src/prerender.ts +138 -77
  56. package/src/reverse.ts +25 -1
  57. package/src/route-definition/dsl-helpers.ts +194 -32
  58. package/src/route-definition/helpers-types.ts +67 -19
  59. package/src/route-definition/index.ts +3 -0
  60. package/src/route-definition/redirect.ts +9 -1
  61. package/src/route-definition/resolve-handler-use.ts +149 -0
  62. package/src/route-types.ts +11 -0
  63. package/src/router/content-negotiation.ts +100 -1
  64. package/src/router/handler-context.ts +82 -23
  65. package/src/router/intercept-resolution.ts +9 -4
  66. package/src/router/loader-resolution.ts +156 -21
  67. package/src/router/match-api.ts +124 -189
  68. package/src/router/match-middleware/background-revalidation.ts +12 -1
  69. package/src/router/match-middleware/cache-lookup.ts +40 -13
  70. package/src/router/match-middleware/cache-store.ts +21 -4
  71. package/src/router/match-middleware/segment-resolution.ts +53 -0
  72. package/src/router/match-result.ts +82 -4
  73. package/src/router/middleware-types.ts +6 -8
  74. package/src/router/middleware.ts +2 -5
  75. package/src/router/navigation-snapshot.ts +182 -0
  76. package/src/router/prerender-match.ts +110 -10
  77. package/src/router/preview-match.ts +30 -102
  78. package/src/router/request-classification.ts +310 -0
  79. package/src/router/route-snapshot.ts +245 -0
  80. package/src/router/router-context.ts +1 -0
  81. package/src/router/router-interfaces.ts +36 -4
  82. package/src/router/router-options.ts +37 -11
  83. package/src/router/segment-resolution/fresh.ts +80 -9
  84. package/src/router/segment-resolution/helpers.ts +29 -24
  85. package/src/router/segment-resolution/revalidation.ts +91 -8
  86. package/src/router/types.ts +1 -0
  87. package/src/router.ts +54 -5
  88. package/src/rsc/handler.ts +472 -372
  89. package/src/rsc/loader-fetch.ts +23 -3
  90. package/src/rsc/manifest-init.ts +5 -1
  91. package/src/rsc/progressive-enhancement.ts +14 -2
  92. package/src/rsc/rsc-rendering.ts +10 -1
  93. package/src/rsc/server-action.ts +8 -0
  94. package/src/rsc/ssr-setup.ts +2 -2
  95. package/src/rsc/types.ts +9 -1
  96. package/src/segment-content-promise.ts +67 -0
  97. package/src/segment-loader-promise.ts +122 -0
  98. package/src/segment-system.tsx +11 -61
  99. package/src/server/context.ts +50 -1
  100. package/src/server/handle-store.ts +19 -0
  101. package/src/server/loader-registry.ts +9 -8
  102. package/src/server/request-context.ts +175 -15
  103. package/src/ssr/index.tsx +3 -0
  104. package/src/static-handler.ts +18 -6
  105. package/src/types/cache-types.ts +4 -4
  106. package/src/types/handler-context.ts +37 -19
  107. package/src/types/loader-types.ts +36 -9
  108. package/src/types/route-entry.ts +1 -1
  109. package/src/types/segments.ts +1 -1
  110. package/src/urls/path-helper-types.ts +39 -6
  111. package/src/urls/path-helper.ts +47 -12
  112. package/src/urls/pattern-types.ts +12 -0
  113. package/src/urls/response-types.ts +16 -6
  114. package/src/use-loader.tsx +77 -5
  115. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  116. package/src/vite/discovery/discover-routers.ts +5 -1
  117. package/src/vite/discovery/prerender-collection.ts +128 -74
  118. package/src/vite/discovery/state.ts +13 -4
  119. package/src/vite/index.ts +4 -0
  120. package/src/vite/plugin-types.ts +60 -5
  121. package/src/vite/plugins/expose-id-utils.ts +12 -0
  122. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  123. package/src/vite/plugins/expose-internal-ids.ts +257 -40
  124. package/src/vite/plugins/performance-tracks.ts +88 -0
  125. package/src/vite/plugins/refresh-cmd.ts +88 -26
  126. package/src/vite/rango.ts +19 -2
  127. package/src/vite/router-discovery.ts +178 -37
  128. package/src/vite/utils/prerender-utils.ts +37 -5
  129. package/src/vite/utils/shared-utils.ts +3 -2
  130. package/dist/__internal.d.ts +0 -83
  131. package/dist/__internal.d.ts.map +0 -1
  132. package/dist/__internal.js +0 -19
  133. package/dist/__internal.js.map +0 -1
  134. package/dist/__mocks__/version.d.ts +0 -7
  135. package/dist/__mocks__/version.d.ts.map +0 -1
  136. package/dist/__mocks__/version.js +0 -7
  137. package/dist/__mocks__/version.js.map +0 -1
  138. package/dist/__tests__/client-href.test.d.ts +0 -2
  139. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  140. package/dist/__tests__/client-href.test.js +0 -74
  141. package/dist/__tests__/client-href.test.js.map +0 -1
  142. package/dist/__tests__/component-utils.test.d.ts +0 -2
  143. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  144. package/dist/__tests__/component-utils.test.js +0 -51
  145. package/dist/__tests__/component-utils.test.js.map +0 -1
  146. package/dist/__tests__/event-controller.test.d.ts +0 -2
  147. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  148. package/dist/__tests__/event-controller.test.js +0 -538
  149. package/dist/__tests__/event-controller.test.js.map +0 -1
  150. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  151. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  152. package/dist/__tests__/helpers/route-tree.js +0 -374
  153. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  154. package/dist/__tests__/match-result.test.d.ts +0 -2
  155. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  156. package/dist/__tests__/match-result.test.js +0 -154
  157. package/dist/__tests__/match-result.test.js.map +0 -1
  158. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  159. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  160. package/dist/__tests__/navigation-store.test.js +0 -440
  161. package/dist/__tests__/navigation-store.test.js.map +0 -1
  162. package/dist/__tests__/partial-update.test.d.ts +0 -2
  163. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  164. package/dist/__tests__/partial-update.test.js +0 -1009
  165. package/dist/__tests__/partial-update.test.js.map +0 -1
  166. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  167. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  168. package/dist/__tests__/reverse-types.test.js +0 -656
  169. package/dist/__tests__/reverse-types.test.js.map +0 -1
  170. package/dist/__tests__/route-definition.test.d.ts +0 -2
  171. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  172. package/dist/__tests__/route-definition.test.js +0 -55
  173. package/dist/__tests__/route-definition.test.js.map +0 -1
  174. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  175. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  176. package/dist/__tests__/router-helpers.test.js +0 -377
  177. package/dist/__tests__/router-helpers.test.js.map +0 -1
  178. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  179. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  180. package/dist/__tests__/router-integration-2.test.js +0 -426
  181. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  182. package/dist/__tests__/router-integration.test.d.ts +0 -2
  183. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  184. package/dist/__tests__/router-integration.test.js +0 -1051
  185. package/dist/__tests__/router-integration.test.js.map +0 -1
  186. package/dist/__tests__/search-params.test.d.ts +0 -5
  187. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  188. package/dist/__tests__/search-params.test.js +0 -306
  189. package/dist/__tests__/search-params.test.js.map +0 -1
  190. package/dist/__tests__/segment-system.test.d.ts +0 -2
  191. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  192. package/dist/__tests__/segment-system.test.js +0 -627
  193. package/dist/__tests__/segment-system.test.js.map +0 -1
  194. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  195. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  196. package/dist/__tests__/static-handler-types.test.js +0 -63
  197. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  198. package/dist/__tests__/urls.test.d.ts +0 -2
  199. package/dist/__tests__/urls.test.d.ts.map +0 -1
  200. package/dist/__tests__/urls.test.js +0 -421
  201. package/dist/__tests__/urls.test.js.map +0 -1
  202. package/dist/__tests__/use-mount.test.d.ts +0 -2
  203. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  204. package/dist/__tests__/use-mount.test.js +0 -35
  205. package/dist/__tests__/use-mount.test.js.map +0 -1
  206. package/dist/bin/rango.d.ts +0 -2
  207. package/dist/bin/rango.d.ts.map +0 -1
  208. package/dist/bin/rango.js.map +0 -1
  209. package/dist/browser/event-controller.d.ts +0 -191
  210. package/dist/browser/event-controller.d.ts.map +0 -1
  211. package/dist/browser/event-controller.js +0 -559
  212. package/dist/browser/event-controller.js.map +0 -1
  213. package/dist/browser/index.d.ts +0 -2
  214. package/dist/browser/index.d.ts.map +0 -1
  215. package/dist/browser/index.js +0 -14
  216. package/dist/browser/index.js.map +0 -1
  217. package/dist/browser/link-interceptor.d.ts +0 -38
  218. package/dist/browser/link-interceptor.d.ts.map +0 -1
  219. package/dist/browser/link-interceptor.js +0 -99
  220. package/dist/browser/link-interceptor.js.map +0 -1
  221. package/dist/browser/logging.d.ts +0 -10
  222. package/dist/browser/logging.d.ts.map +0 -1
  223. package/dist/browser/logging.js +0 -29
  224. package/dist/browser/logging.js.map +0 -1
  225. package/dist/browser/lru-cache.d.ts +0 -17
  226. package/dist/browser/lru-cache.d.ts.map +0 -1
  227. package/dist/browser/lru-cache.js +0 -50
  228. package/dist/browser/lru-cache.js.map +0 -1
  229. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  230. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  231. package/dist/browser/merge-segment-loaders.js +0 -102
  232. package/dist/browser/merge-segment-loaders.js.map +0 -1
  233. package/dist/browser/navigation-bridge.d.ts +0 -102
  234. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  235. package/dist/browser/navigation-bridge.js +0 -708
  236. package/dist/browser/navigation-bridge.js.map +0 -1
  237. package/dist/browser/navigation-client.d.ts +0 -25
  238. package/dist/browser/navigation-client.d.ts.map +0 -1
  239. package/dist/browser/navigation-client.js +0 -157
  240. package/dist/browser/navigation-client.js.map +0 -1
  241. package/dist/browser/navigation-store.d.ts +0 -101
  242. package/dist/browser/navigation-store.d.ts.map +0 -1
  243. package/dist/browser/navigation-store.js +0 -625
  244. package/dist/browser/navigation-store.js.map +0 -1
  245. package/dist/browser/partial-update.d.ts +0 -75
  246. package/dist/browser/partial-update.d.ts.map +0 -1
  247. package/dist/browser/partial-update.js +0 -426
  248. package/dist/browser/partial-update.js.map +0 -1
  249. package/dist/browser/react/Link.d.ts +0 -86
  250. package/dist/browser/react/Link.d.ts.map +0 -1
  251. package/dist/browser/react/Link.js +0 -128
  252. package/dist/browser/react/Link.js.map +0 -1
  253. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  254. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  255. package/dist/browser/react/NavigationProvider.js +0 -216
  256. package/dist/browser/react/NavigationProvider.js.map +0 -1
  257. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  258. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  259. package/dist/browser/react/ScrollRestoration.js +0 -57
  260. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  261. package/dist/browser/react/context.d.ts +0 -46
  262. package/dist/browser/react/context.d.ts.map +0 -1
  263. package/dist/browser/react/context.js +0 -10
  264. package/dist/browser/react/context.js.map +0 -1
  265. package/dist/browser/react/index.d.ts +0 -11
  266. package/dist/browser/react/index.d.ts.map +0 -1
  267. package/dist/browser/react/index.js +0 -22
  268. package/dist/browser/react/index.js.map +0 -1
  269. package/dist/browser/react/location-state-shared.d.ts +0 -63
  270. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  271. package/dist/browser/react/location-state-shared.js +0 -81
  272. package/dist/browser/react/location-state-shared.js.map +0 -1
  273. package/dist/browser/react/location-state.d.ts +0 -23
  274. package/dist/browser/react/location-state.d.ts.map +0 -1
  275. package/dist/browser/react/location-state.js +0 -29
  276. package/dist/browser/react/location-state.js.map +0 -1
  277. package/dist/browser/react/mount-context.d.ts +0 -24
  278. package/dist/browser/react/mount-context.d.ts.map +0 -1
  279. package/dist/browser/react/mount-context.js +0 -24
  280. package/dist/browser/react/mount-context.js.map +0 -1
  281. package/dist/browser/react/use-action.d.ts +0 -64
  282. package/dist/browser/react/use-action.d.ts.map +0 -1
  283. package/dist/browser/react/use-action.js +0 -134
  284. package/dist/browser/react/use-action.js.map +0 -1
  285. package/dist/browser/react/use-client-cache.d.ts +0 -41
  286. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  287. package/dist/browser/react/use-client-cache.js +0 -39
  288. package/dist/browser/react/use-client-cache.js.map +0 -1
  289. package/dist/browser/react/use-handle.d.ts +0 -31
  290. package/dist/browser/react/use-handle.d.ts.map +0 -1
  291. package/dist/browser/react/use-handle.js +0 -144
  292. package/dist/browser/react/use-handle.js.map +0 -1
  293. package/dist/browser/react/use-href.d.ts +0 -33
  294. package/dist/browser/react/use-href.d.ts.map +0 -1
  295. package/dist/browser/react/use-href.js +0 -39
  296. package/dist/browser/react/use-href.js.map +0 -1
  297. package/dist/browser/react/use-link-status.d.ts +0 -37
  298. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  299. package/dist/browser/react/use-link-status.js +0 -99
  300. package/dist/browser/react/use-link-status.js.map +0 -1
  301. package/dist/browser/react/use-mount.d.ts +0 -25
  302. package/dist/browser/react/use-mount.d.ts.map +0 -1
  303. package/dist/browser/react/use-mount.js +0 -30
  304. package/dist/browser/react/use-mount.js.map +0 -1
  305. package/dist/browser/react/use-navigation.d.ts +0 -27
  306. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  307. package/dist/browser/react/use-navigation.js +0 -87
  308. package/dist/browser/react/use-navigation.js.map +0 -1
  309. package/dist/browser/react/use-segments.d.ts +0 -38
  310. package/dist/browser/react/use-segments.d.ts.map +0 -1
  311. package/dist/browser/react/use-segments.js +0 -130
  312. package/dist/browser/react/use-segments.js.map +0 -1
  313. package/dist/browser/request-controller.d.ts +0 -26
  314. package/dist/browser/request-controller.d.ts.map +0 -1
  315. package/dist/browser/request-controller.js +0 -147
  316. package/dist/browser/request-controller.js.map +0 -1
  317. package/dist/browser/rsc-router.d.ts +0 -129
  318. package/dist/browser/rsc-router.d.ts.map +0 -1
  319. package/dist/browser/rsc-router.js +0 -195
  320. package/dist/browser/rsc-router.js.map +0 -1
  321. package/dist/browser/scroll-restoration.d.ts +0 -93
  322. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  323. package/dist/browser/scroll-restoration.js +0 -321
  324. package/dist/browser/scroll-restoration.js.map +0 -1
  325. package/dist/browser/segment-structure-assert.d.ts +0 -17
  326. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  327. package/dist/browser/segment-structure-assert.js +0 -59
  328. package/dist/browser/segment-structure-assert.js.map +0 -1
  329. package/dist/browser/server-action-bridge.d.ts +0 -26
  330. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  331. package/dist/browser/server-action-bridge.js +0 -668
  332. package/dist/browser/server-action-bridge.js.map +0 -1
  333. package/dist/browser/shallow.d.ts +0 -12
  334. package/dist/browser/shallow.d.ts.map +0 -1
  335. package/dist/browser/shallow.js +0 -34
  336. package/dist/browser/shallow.js.map +0 -1
  337. package/dist/browser/types.d.ts +0 -369
  338. package/dist/browser/types.d.ts.map +0 -1
  339. package/dist/browser/types.js +0 -2
  340. package/dist/browser/types.js.map +0 -1
  341. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  342. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  343. package/dist/build/__tests__/generate-cli.test.js +0 -237
  344. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  345. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  346. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  347. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  348. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  349. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  350. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  351. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  352. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  353. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  354. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  355. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  356. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  357. package/dist/build/generate-manifest.d.ts +0 -81
  358. package/dist/build/generate-manifest.d.ts.map +0 -1
  359. package/dist/build/generate-manifest.js +0 -276
  360. package/dist/build/generate-manifest.js.map +0 -1
  361. package/dist/build/generate-route-types.d.ts +0 -115
  362. package/dist/build/generate-route-types.d.ts.map +0 -1
  363. package/dist/build/generate-route-types.js +0 -740
  364. package/dist/build/generate-route-types.js.map +0 -1
  365. package/dist/build/index.d.ts +0 -21
  366. package/dist/build/index.d.ts.map +0 -1
  367. package/dist/build/index.js +0 -21
  368. package/dist/build/index.js.map +0 -1
  369. package/dist/build/route-trie.d.ts +0 -71
  370. package/dist/build/route-trie.d.ts.map +0 -1
  371. package/dist/build/route-trie.js +0 -175
  372. package/dist/build/route-trie.js.map +0 -1
  373. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  374. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  375. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  376. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  377. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  378. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  379. package/dist/cache/__tests__/document-cache.test.js +0 -345
  380. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  381. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  382. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  383. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  384. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  385. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  386. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  387. package/dist/cache/__tests__/memory-store.test.js +0 -367
  388. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  389. package/dist/cache/cache-scope.d.ts +0 -102
  390. package/dist/cache/cache-scope.d.ts.map +0 -1
  391. package/dist/cache/cache-scope.js +0 -440
  392. package/dist/cache/cache-scope.js.map +0 -1
  393. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  394. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  395. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  396. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  397. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  398. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  399. package/dist/cache/cf/cf-cache-store.js +0 -242
  400. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  401. package/dist/cache/cf/index.d.ts +0 -14
  402. package/dist/cache/cf/index.d.ts.map +0 -1
  403. package/dist/cache/cf/index.js +0 -17
  404. package/dist/cache/cf/index.js.map +0 -1
  405. package/dist/cache/document-cache.d.ts +0 -64
  406. package/dist/cache/document-cache.d.ts.map +0 -1
  407. package/dist/cache/document-cache.js +0 -228
  408. package/dist/cache/document-cache.js.map +0 -1
  409. package/dist/cache/index.d.ts +0 -19
  410. package/dist/cache/index.d.ts.map +0 -1
  411. package/dist/cache/index.js +0 -21
  412. package/dist/cache/index.js.map +0 -1
  413. package/dist/cache/memory-segment-store.d.ts +0 -110
  414. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  415. package/dist/cache/memory-segment-store.js +0 -117
  416. package/dist/cache/memory-segment-store.js.map +0 -1
  417. package/dist/cache/memory-store.d.ts +0 -41
  418. package/dist/cache/memory-store.d.ts.map +0 -1
  419. package/dist/cache/memory-store.js +0 -191
  420. package/dist/cache/memory-store.js.map +0 -1
  421. package/dist/cache/types.d.ts +0 -317
  422. package/dist/cache/types.d.ts.map +0 -1
  423. package/dist/cache/types.js +0 -12
  424. package/dist/cache/types.js.map +0 -1
  425. package/dist/client.d.ts +0 -248
  426. package/dist/client.d.ts.map +0 -1
  427. package/dist/client.js +0 -367
  428. package/dist/client.js.map +0 -1
  429. package/dist/client.rsc.d.ts +0 -26
  430. package/dist/client.rsc.d.ts.map +0 -1
  431. package/dist/client.rsc.js +0 -46
  432. package/dist/client.rsc.js.map +0 -1
  433. package/dist/component-utils.d.ts +0 -36
  434. package/dist/component-utils.d.ts.map +0 -1
  435. package/dist/component-utils.js +0 -61
  436. package/dist/component-utils.js.map +0 -1
  437. package/dist/components/DefaultDocument.d.ts +0 -13
  438. package/dist/components/DefaultDocument.d.ts.map +0 -1
  439. package/dist/components/DefaultDocument.js +0 -15
  440. package/dist/components/DefaultDocument.js.map +0 -1
  441. package/dist/debug.d.ts +0 -58
  442. package/dist/debug.d.ts.map +0 -1
  443. package/dist/debug.js +0 -157
  444. package/dist/debug.js.map +0 -1
  445. package/dist/default-error-boundary.d.ts +0 -11
  446. package/dist/default-error-boundary.d.ts.map +0 -1
  447. package/dist/default-error-boundary.js +0 -45
  448. package/dist/default-error-boundary.js.map +0 -1
  449. package/dist/deps/browser.d.ts +0 -2
  450. package/dist/deps/browser.d.ts.map +0 -1
  451. package/dist/deps/browser.js +0 -3
  452. package/dist/deps/browser.js.map +0 -1
  453. package/dist/deps/html-stream-client.d.ts +0 -2
  454. package/dist/deps/html-stream-client.d.ts.map +0 -1
  455. package/dist/deps/html-stream-client.js +0 -3
  456. package/dist/deps/html-stream-client.js.map +0 -1
  457. package/dist/deps/html-stream-server.d.ts +0 -2
  458. package/dist/deps/html-stream-server.d.ts.map +0 -1
  459. package/dist/deps/html-stream-server.js +0 -3
  460. package/dist/deps/html-stream-server.js.map +0 -1
  461. package/dist/deps/rsc.d.ts +0 -2
  462. package/dist/deps/rsc.d.ts.map +0 -1
  463. package/dist/deps/rsc.js +0 -4
  464. package/dist/deps/rsc.js.map +0 -1
  465. package/dist/deps/ssr.d.ts +0 -2
  466. package/dist/deps/ssr.d.ts.map +0 -1
  467. package/dist/deps/ssr.js +0 -3
  468. package/dist/deps/ssr.js.map +0 -1
  469. package/dist/errors.d.ts +0 -174
  470. package/dist/errors.d.ts.map +0 -1
  471. package/dist/errors.js +0 -241
  472. package/dist/errors.js.map +0 -1
  473. package/dist/handle.d.ts +0 -78
  474. package/dist/handle.d.ts.map +0 -1
  475. package/dist/handle.js +0 -82
  476. package/dist/handle.js.map +0 -1
  477. package/dist/handles/MetaTags.d.ts +0 -14
  478. package/dist/handles/MetaTags.d.ts.map +0 -1
  479. package/dist/handles/MetaTags.js +0 -136
  480. package/dist/handles/MetaTags.js.map +0 -1
  481. package/dist/handles/index.d.ts +0 -6
  482. package/dist/handles/index.d.ts.map +0 -1
  483. package/dist/handles/index.js +0 -6
  484. package/dist/handles/index.js.map +0 -1
  485. package/dist/handles/meta.d.ts +0 -39
  486. package/dist/handles/meta.d.ts.map +0 -1
  487. package/dist/handles/meta.js +0 -202
  488. package/dist/handles/meta.js.map +0 -1
  489. package/dist/host/__tests__/errors.test.d.ts +0 -2
  490. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  491. package/dist/host/__tests__/errors.test.js +0 -76
  492. package/dist/host/__tests__/errors.test.js.map +0 -1
  493. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  494. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  495. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  496. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  497. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  498. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  499. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  500. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  501. package/dist/host/__tests__/router.test.d.ts +0 -2
  502. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  503. package/dist/host/__tests__/router.test.js +0 -241
  504. package/dist/host/__tests__/router.test.js.map +0 -1
  505. package/dist/host/__tests__/testing.test.d.ts +0 -2
  506. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  507. package/dist/host/__tests__/testing.test.js +0 -64
  508. package/dist/host/__tests__/testing.test.js.map +0 -1
  509. package/dist/host/__tests__/utils.test.d.ts +0 -2
  510. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  511. package/dist/host/__tests__/utils.test.js +0 -29
  512. package/dist/host/__tests__/utils.test.js.map +0 -1
  513. package/dist/host/cookie-handler.d.ts +0 -34
  514. package/dist/host/cookie-handler.d.ts.map +0 -1
  515. package/dist/host/cookie-handler.js +0 -124
  516. package/dist/host/cookie-handler.js.map +0 -1
  517. package/dist/host/errors.d.ts +0 -56
  518. package/dist/host/errors.d.ts.map +0 -1
  519. package/dist/host/errors.js +0 -79
  520. package/dist/host/errors.js.map +0 -1
  521. package/dist/host/index.d.ts +0 -29
  522. package/dist/host/index.d.ts.map +0 -1
  523. package/dist/host/index.js +0 -32
  524. package/dist/host/index.js.map +0 -1
  525. package/dist/host/pattern-matcher.d.ts +0 -36
  526. package/dist/host/pattern-matcher.d.ts.map +0 -1
  527. package/dist/host/pattern-matcher.js +0 -172
  528. package/dist/host/pattern-matcher.js.map +0 -1
  529. package/dist/host/router.d.ts +0 -26
  530. package/dist/host/router.d.ts.map +0 -1
  531. package/dist/host/router.js +0 -218
  532. package/dist/host/router.js.map +0 -1
  533. package/dist/host/testing.d.ts +0 -36
  534. package/dist/host/testing.d.ts.map +0 -1
  535. package/dist/host/testing.js +0 -55
  536. package/dist/host/testing.js.map +0 -1
  537. package/dist/host/types.d.ts +0 -115
  538. package/dist/host/types.d.ts.map +0 -1
  539. package/dist/host/types.js +0 -7
  540. package/dist/host/types.js.map +0 -1
  541. package/dist/host/utils.d.ts +0 -21
  542. package/dist/host/utils.d.ts.map +0 -1
  543. package/dist/host/utils.js +0 -23
  544. package/dist/host/utils.js.map +0 -1
  545. package/dist/href-client.d.ts +0 -131
  546. package/dist/href-client.d.ts.map +0 -1
  547. package/dist/href-client.js +0 -64
  548. package/dist/href-client.js.map +0 -1
  549. package/dist/href-context.d.ts +0 -29
  550. package/dist/href-context.d.ts.map +0 -1
  551. package/dist/href-context.js +0 -21
  552. package/dist/href-context.js.map +0 -1
  553. package/dist/index.d.ts +0 -73
  554. package/dist/index.d.ts.map +0 -1
  555. package/dist/index.js +0 -91
  556. package/dist/index.js.map +0 -1
  557. package/dist/index.rsc.d.ts +0 -32
  558. package/dist/index.rsc.d.ts.map +0 -1
  559. package/dist/index.rsc.js +0 -40
  560. package/dist/index.rsc.js.map +0 -1
  561. package/dist/internal-debug.d.ts +0 -2
  562. package/dist/internal-debug.d.ts.map +0 -1
  563. package/dist/internal-debug.js +0 -5
  564. package/dist/internal-debug.js.map +0 -1
  565. package/dist/loader.d.ts +0 -14
  566. package/dist/loader.d.ts.map +0 -1
  567. package/dist/loader.js +0 -20
  568. package/dist/loader.js.map +0 -1
  569. package/dist/loader.rsc.d.ts +0 -19
  570. package/dist/loader.rsc.d.ts.map +0 -1
  571. package/dist/loader.rsc.js +0 -99
  572. package/dist/loader.rsc.js.map +0 -1
  573. package/dist/network-error-thrower.d.ts +0 -17
  574. package/dist/network-error-thrower.d.ts.map +0 -1
  575. package/dist/network-error-thrower.js +0 -14
  576. package/dist/network-error-thrower.js.map +0 -1
  577. package/dist/outlet-context.d.ts +0 -13
  578. package/dist/outlet-context.d.ts.map +0 -1
  579. package/dist/outlet-context.js +0 -3
  580. package/dist/outlet-context.js.map +0 -1
  581. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  582. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  583. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  584. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  585. package/dist/prerender/param-hash.d.ts +0 -16
  586. package/dist/prerender/param-hash.d.ts.map +0 -1
  587. package/dist/prerender/param-hash.js +0 -36
  588. package/dist/prerender/param-hash.js.map +0 -1
  589. package/dist/prerender/store.d.ts +0 -38
  590. package/dist/prerender/store.d.ts.map +0 -1
  591. package/dist/prerender/store.js +0 -61
  592. package/dist/prerender/store.js.map +0 -1
  593. package/dist/prerender.d.ts +0 -66
  594. package/dist/prerender.d.ts.map +0 -1
  595. package/dist/prerender.js +0 -57
  596. package/dist/prerender.js.map +0 -1
  597. package/dist/reverse.d.ts +0 -196
  598. package/dist/reverse.d.ts.map +0 -1
  599. package/dist/reverse.js +0 -78
  600. package/dist/reverse.js.map +0 -1
  601. package/dist/root-error-boundary.d.ts +0 -33
  602. package/dist/root-error-boundary.d.ts.map +0 -1
  603. package/dist/root-error-boundary.js +0 -165
  604. package/dist/root-error-boundary.js.map +0 -1
  605. package/dist/route-content-wrapper.d.ts +0 -46
  606. package/dist/route-content-wrapper.d.ts.map +0 -1
  607. package/dist/route-content-wrapper.js +0 -77
  608. package/dist/route-content-wrapper.js.map +0 -1
  609. package/dist/route-definition.d.ts +0 -421
  610. package/dist/route-definition.d.ts.map +0 -1
  611. package/dist/route-definition.js +0 -868
  612. package/dist/route-definition.js.map +0 -1
  613. package/dist/route-map-builder.d.ts +0 -155
  614. package/dist/route-map-builder.d.ts.map +0 -1
  615. package/dist/route-map-builder.js +0 -237
  616. package/dist/route-map-builder.js.map +0 -1
  617. package/dist/route-types.d.ts +0 -165
  618. package/dist/route-types.d.ts.map +0 -1
  619. package/dist/route-types.js +0 -7
  620. package/dist/route-types.js.map +0 -1
  621. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  622. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  623. package/dist/router/__tests__/handler-context.test.js +0 -65
  624. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  625. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  626. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  627. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  628. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  629. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  630. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  631. package/dist/router/__tests__/match-context.test.js +0 -92
  632. package/dist/router/__tests__/match-context.test.js.map +0 -1
  633. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  634. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  635. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  636. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  637. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  638. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  639. package/dist/router/__tests__/match-result.test.js +0 -457
  640. package/dist/router/__tests__/match-result.test.js.map +0 -1
  641. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  642. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  643. package/dist/router/__tests__/on-error.test.js +0 -678
  644. package/dist/router/__tests__/on-error.test.js.map +0 -1
  645. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  646. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  647. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  648. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  649. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  650. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  651. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  652. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  653. package/dist/router/error-handling.d.ts +0 -77
  654. package/dist/router/error-handling.d.ts.map +0 -1
  655. package/dist/router/error-handling.js +0 -202
  656. package/dist/router/error-handling.js.map +0 -1
  657. package/dist/router/handler-context.d.ts +0 -20
  658. package/dist/router/handler-context.d.ts.map +0 -1
  659. package/dist/router/handler-context.js +0 -198
  660. package/dist/router/handler-context.js.map +0 -1
  661. package/dist/router/intercept-resolution.d.ts +0 -66
  662. package/dist/router/intercept-resolution.d.ts.map +0 -1
  663. package/dist/router/intercept-resolution.js +0 -246
  664. package/dist/router/intercept-resolution.js.map +0 -1
  665. package/dist/router/loader-resolution.d.ts +0 -64
  666. package/dist/router/loader-resolution.d.ts.map +0 -1
  667. package/dist/router/loader-resolution.js +0 -284
  668. package/dist/router/loader-resolution.js.map +0 -1
  669. package/dist/router/logging.d.ts +0 -15
  670. package/dist/router/logging.d.ts.map +0 -1
  671. package/dist/router/logging.js +0 -99
  672. package/dist/router/logging.js.map +0 -1
  673. package/dist/router/manifest.d.ts +0 -22
  674. package/dist/router/manifest.d.ts.map +0 -1
  675. package/dist/router/manifest.js +0 -181
  676. package/dist/router/manifest.js.map +0 -1
  677. package/dist/router/match-api.d.ts +0 -35
  678. package/dist/router/match-api.d.ts.map +0 -1
  679. package/dist/router/match-api.js +0 -406
  680. package/dist/router/match-api.js.map +0 -1
  681. package/dist/router/match-context.d.ts +0 -206
  682. package/dist/router/match-context.d.ts.map +0 -1
  683. package/dist/router/match-context.js +0 -17
  684. package/dist/router/match-context.js.map +0 -1
  685. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  686. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  687. package/dist/router/match-middleware/background-revalidation.js +0 -75
  688. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  689. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  690. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  691. package/dist/router/match-middleware/cache-lookup.js +0 -257
  692. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  693. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  694. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  695. package/dist/router/match-middleware/cache-store.js +0 -108
  696. package/dist/router/match-middleware/cache-store.js.map +0 -1
  697. package/dist/router/match-middleware/index.d.ts +0 -81
  698. package/dist/router/match-middleware/index.d.ts.map +0 -1
  699. package/dist/router/match-middleware/index.js +0 -80
  700. package/dist/router/match-middleware/index.js.map +0 -1
  701. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  702. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  703. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  704. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  705. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  706. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  707. package/dist/router/match-middleware/segment-resolution.js +0 -53
  708. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  709. package/dist/router/match-pipelines.d.ts +0 -147
  710. package/dist/router/match-pipelines.d.ts.map +0 -1
  711. package/dist/router/match-pipelines.js +0 -82
  712. package/dist/router/match-pipelines.js.map +0 -1
  713. package/dist/router/match-result.d.ts +0 -126
  714. package/dist/router/match-result.d.ts.map +0 -1
  715. package/dist/router/match-result.js +0 -93
  716. package/dist/router/match-result.js.map +0 -1
  717. package/dist/router/metrics.d.ts +0 -20
  718. package/dist/router/metrics.d.ts.map +0 -1
  719. package/dist/router/metrics.js +0 -47
  720. package/dist/router/metrics.js.map +0 -1
  721. package/dist/router/middleware.d.ts +0 -249
  722. package/dist/router/middleware.d.ts.map +0 -1
  723. package/dist/router/middleware.js +0 -434
  724. package/dist/router/middleware.js.map +0 -1
  725. package/dist/router/middleware.test.d.ts +0 -2
  726. package/dist/router/middleware.test.d.ts.map +0 -1
  727. package/dist/router/middleware.test.js +0 -816
  728. package/dist/router/middleware.test.js.map +0 -1
  729. package/dist/router/pattern-matching.d.ts +0 -149
  730. package/dist/router/pattern-matching.d.ts.map +0 -1
  731. package/dist/router/pattern-matching.js +0 -349
  732. package/dist/router/pattern-matching.js.map +0 -1
  733. package/dist/router/revalidation.d.ts +0 -44
  734. package/dist/router/revalidation.d.ts.map +0 -1
  735. package/dist/router/revalidation.js +0 -147
  736. package/dist/router/revalidation.js.map +0 -1
  737. package/dist/router/router-context.d.ts +0 -135
  738. package/dist/router/router-context.d.ts.map +0 -1
  739. package/dist/router/router-context.js +0 -36
  740. package/dist/router/router-context.js.map +0 -1
  741. package/dist/router/segment-resolution.d.ts +0 -127
  742. package/dist/router/segment-resolution.d.ts.map +0 -1
  743. package/dist/router/segment-resolution.js +0 -919
  744. package/dist/router/segment-resolution.js.map +0 -1
  745. package/dist/router/trie-matching.d.ts +0 -40
  746. package/dist/router/trie-matching.d.ts.map +0 -1
  747. package/dist/router/trie-matching.js +0 -127
  748. package/dist/router/trie-matching.js.map +0 -1
  749. package/dist/router/types.d.ts +0 -136
  750. package/dist/router/types.d.ts.map +0 -1
  751. package/dist/router/types.js +0 -7
  752. package/dist/router/types.js.map +0 -1
  753. package/dist/router.d.ts +0 -753
  754. package/dist/router.d.ts.map +0 -1
  755. package/dist/router.gen.d.ts +0 -6
  756. package/dist/router.gen.d.ts.map +0 -1
  757. package/dist/router.gen.js +0 -6
  758. package/dist/router.gen.js.map +0 -1
  759. package/dist/router.js +0 -1304
  760. package/dist/router.js.map +0 -1
  761. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  762. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  763. package/dist/rsc/__tests__/helpers.test.js +0 -140
  764. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  765. package/dist/rsc/handler.d.ts +0 -45
  766. package/dist/rsc/handler.d.ts.map +0 -1
  767. package/dist/rsc/handler.js +0 -1172
  768. package/dist/rsc/handler.js.map +0 -1
  769. package/dist/rsc/helpers.d.ts +0 -16
  770. package/dist/rsc/helpers.d.ts.map +0 -1
  771. package/dist/rsc/helpers.js +0 -55
  772. package/dist/rsc/helpers.js.map +0 -1
  773. package/dist/rsc/index.d.ts +0 -22
  774. package/dist/rsc/index.d.ts.map +0 -1
  775. package/dist/rsc/index.js +0 -23
  776. package/dist/rsc/index.js.map +0 -1
  777. package/dist/rsc/nonce.d.ts +0 -9
  778. package/dist/rsc/nonce.d.ts.map +0 -1
  779. package/dist/rsc/nonce.js +0 -18
  780. package/dist/rsc/nonce.js.map +0 -1
  781. package/dist/rsc/types.d.ts +0 -206
  782. package/dist/rsc/types.d.ts.map +0 -1
  783. package/dist/rsc/types.js +0 -8
  784. package/dist/rsc/types.js.map +0 -1
  785. package/dist/search-params.d.ts +0 -103
  786. package/dist/search-params.d.ts.map +0 -1
  787. package/dist/search-params.js +0 -74
  788. package/dist/search-params.js.map +0 -1
  789. package/dist/segment-system.d.ts +0 -75
  790. package/dist/segment-system.d.ts.map +0 -1
  791. package/dist/segment-system.js +0 -336
  792. package/dist/segment-system.js.map +0 -1
  793. package/dist/server/context.d.ts +0 -245
  794. package/dist/server/context.d.ts.map +0 -1
  795. package/dist/server/context.js +0 -197
  796. package/dist/server/context.js.map +0 -1
  797. package/dist/server/fetchable-loader-store.d.ts +0 -18
  798. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  799. package/dist/server/fetchable-loader-store.js +0 -18
  800. package/dist/server/fetchable-loader-store.js.map +0 -1
  801. package/dist/server/handle-store.d.ts +0 -85
  802. package/dist/server/handle-store.d.ts.map +0 -1
  803. package/dist/server/handle-store.js +0 -142
  804. package/dist/server/handle-store.js.map +0 -1
  805. package/dist/server/loader-registry.d.ts +0 -55
  806. package/dist/server/loader-registry.d.ts.map +0 -1
  807. package/dist/server/loader-registry.js +0 -132
  808. package/dist/server/loader-registry.js.map +0 -1
  809. package/dist/server/request-context.d.ts +0 -226
  810. package/dist/server/request-context.d.ts.map +0 -1
  811. package/dist/server/request-context.js +0 -290
  812. package/dist/server/request-context.js.map +0 -1
  813. package/dist/server/root-layout.d.ts +0 -4
  814. package/dist/server/root-layout.d.ts.map +0 -1
  815. package/dist/server/root-layout.js +0 -5
  816. package/dist/server/root-layout.js.map +0 -1
  817. package/dist/server.d.ts +0 -15
  818. package/dist/server.d.ts.map +0 -1
  819. package/dist/server.js +0 -20
  820. package/dist/server.js.map +0 -1
  821. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  822. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  823. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  824. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  825. package/dist/ssr/index.d.ts +0 -98
  826. package/dist/ssr/index.d.ts.map +0 -1
  827. package/dist/ssr/index.js +0 -158
  828. package/dist/ssr/index.js.map +0 -1
  829. package/dist/static-handler.d.ts +0 -50
  830. package/dist/static-handler.d.ts.map +0 -1
  831. package/dist/static-handler.gen.d.ts +0 -5
  832. package/dist/static-handler.gen.d.ts.map +0 -1
  833. package/dist/static-handler.gen.js +0 -5
  834. package/dist/static-handler.gen.js.map +0 -1
  835. package/dist/static-handler.js +0 -29
  836. package/dist/static-handler.js.map +0 -1
  837. package/dist/theme/ThemeProvider.d.ts +0 -20
  838. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  839. package/dist/theme/ThemeProvider.js +0 -240
  840. package/dist/theme/ThemeProvider.js.map +0 -1
  841. package/dist/theme/ThemeScript.d.ts +0 -48
  842. package/dist/theme/ThemeScript.d.ts.map +0 -1
  843. package/dist/theme/ThemeScript.js +0 -13
  844. package/dist/theme/ThemeScript.js.map +0 -1
  845. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  846. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  847. package/dist/theme/__tests__/theme.test.js +0 -103
  848. package/dist/theme/__tests__/theme.test.js.map +0 -1
  849. package/dist/theme/constants.d.ts +0 -29
  850. package/dist/theme/constants.d.ts.map +0 -1
  851. package/dist/theme/constants.js +0 -48
  852. package/dist/theme/constants.js.map +0 -1
  853. package/dist/theme/index.d.ts +0 -31
  854. package/dist/theme/index.d.ts.map +0 -1
  855. package/dist/theme/index.js +0 -36
  856. package/dist/theme/index.js.map +0 -1
  857. package/dist/theme/theme-context.d.ts +0 -40
  858. package/dist/theme/theme-context.d.ts.map +0 -1
  859. package/dist/theme/theme-context.js +0 -60
  860. package/dist/theme/theme-context.js.map +0 -1
  861. package/dist/theme/theme-script.d.ts +0 -27
  862. package/dist/theme/theme-script.d.ts.map +0 -1
  863. package/dist/theme/theme-script.js +0 -147
  864. package/dist/theme/theme-script.js.map +0 -1
  865. package/dist/theme/types.d.ts +0 -163
  866. package/dist/theme/types.d.ts.map +0 -1
  867. package/dist/theme/types.js +0 -11
  868. package/dist/theme/types.js.map +0 -1
  869. package/dist/theme/use-theme.d.ts +0 -12
  870. package/dist/theme/use-theme.d.ts.map +0 -1
  871. package/dist/theme/use-theme.js +0 -40
  872. package/dist/theme/use-theme.js.map +0 -1
  873. package/dist/types.d.ts +0 -1479
  874. package/dist/types.d.ts.map +0 -1
  875. package/dist/types.js +0 -10
  876. package/dist/types.js.map +0 -1
  877. package/dist/urls.d.ts +0 -441
  878. package/dist/urls.d.ts.map +0 -1
  879. package/dist/urls.gen.d.ts +0 -8
  880. package/dist/urls.gen.d.ts.map +0 -1
  881. package/dist/urls.gen.js +0 -8
  882. package/dist/urls.gen.js.map +0 -1
  883. package/dist/urls.js +0 -443
  884. package/dist/urls.js.map +0 -1
  885. package/dist/use-loader.d.ts +0 -127
  886. package/dist/use-loader.d.ts.map +0 -1
  887. package/dist/use-loader.js +0 -237
  888. package/dist/use-loader.js.map +0 -1
  889. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  890. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  891. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  892. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  893. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  894. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  895. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  896. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  897. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  898. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  899. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  900. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  901. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  902. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  903. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  904. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  905. package/dist/vite/ast-handler-extract.d.ts +0 -49
  906. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  907. package/dist/vite/ast-handler-extract.js +0 -249
  908. package/dist/vite/ast-handler-extract.js.map +0 -1
  909. package/dist/vite/expose-action-id.d.ts +0 -19
  910. package/dist/vite/expose-action-id.d.ts.map +0 -1
  911. package/dist/vite/expose-action-id.js +0 -250
  912. package/dist/vite/expose-action-id.js.map +0 -1
  913. package/dist/vite/expose-id-utils.d.ts +0 -69
  914. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  915. package/dist/vite/expose-id-utils.js +0 -289
  916. package/dist/vite/expose-id-utils.js.map +0 -1
  917. package/dist/vite/expose-internal-ids.d.ts +0 -22
  918. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  919. package/dist/vite/expose-internal-ids.js +0 -886
  920. package/dist/vite/expose-internal-ids.js.map +0 -1
  921. package/dist/vite/index.d.ts +0 -149
  922. package/dist/vite/index.d.ts.map +0 -1
  923. package/dist/vite/index.js.map +0 -1
  924. package/dist/vite/index.named-routes.gen.ts +0 -103
  925. package/dist/vite/package-resolution.d.ts +0 -43
  926. package/dist/vite/package-resolution.d.ts.map +0 -1
  927. package/dist/vite/package-resolution.js +0 -112
  928. package/dist/vite/package-resolution.js.map +0 -1
  929. package/dist/vite/virtual-entries.d.ts +0 -25
  930. package/dist/vite/virtual-entries.d.ts.map +0 -1
  931. package/dist/vite/virtual-entries.js +0 -110
  932. package/dist/vite/virtual-entries.js.map +0 -1
@@ -20,8 +20,18 @@ 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";
24
- import { createHandleStore, type HandleStore } from "./handle-store.js";
23
+ import {
24
+ type ContextVar,
25
+ contextGet,
26
+ contextSet,
27
+ isNonCacheable,
28
+ } from "../context-var.js";
29
+ import {
30
+ createHandleStore,
31
+ buildHandleSnapshot,
32
+ type HandleStore,
33
+ type HandleData,
34
+ } from "./handle-store.js";
25
35
  import { isHandle } from "../handle.js";
26
36
  import { track, type MetricsStore } from "./context.js";
27
37
  import { getFetchableLoader } from "./fetchable-loader-store.js";
@@ -30,6 +40,7 @@ import type { Theme, ResolvedThemeConfig } from "../theme/types.js";
30
40
  import { THEME_COOKIE } from "../theme/constants.js";
31
41
  import type { LocationStateEntry } from "../browser/react/location-state-shared.js";
32
42
  import { NOCACHE_SYMBOL, assertNotInsideCacheExec } from "../cache/taint.js";
43
+ import { isInsideCacheScope } from "./context.js";
33
44
  import {
34
45
  createReverseFunction,
35
46
  stripInternalParams,
@@ -63,8 +74,8 @@ export interface RequestContext<
63
74
  pathname: string;
64
75
  /** URL search params (with internal `_rsc*` params stripped, same as `url.searchParams`) */
65
76
  searchParams: URLSearchParams;
66
- /** Variables set by middleware (same as ctx.var) */
67
- var: Record<string, any>;
77
+ /** @internal Shared variable backing store for ctx.get()/ctx.set(). */
78
+ _variables: Record<string, any>;
68
79
  /** Get a variable set by middleware */
69
80
  get: {
70
81
  <T>(contextVar: ContextVar<T>): T | undefined;
@@ -72,8 +83,12 @@ export interface RequestContext<
72
83
  };
73
84
  /** Set a variable (shared with middleware and handlers) */
74
85
  set: {
75
- <T>(contextVar: ContextVar<T>, value: T): void;
76
- <K extends string>(key: K, value: any): void;
86
+ <T>(
87
+ contextVar: ContextVar<T>,
88
+ value: T,
89
+ options?: { cache?: boolean },
90
+ ): void;
91
+ <K extends string>(key: K, value: any, options?: { cache?: boolean }): void;
77
92
  };
78
93
  /**
79
94
  * Route params (populated after route matching)
@@ -261,6 +276,54 @@ export interface RequestContext<
261
276
  /** @internal Previous route key (from the navigation source), used for revalidation */
262
277
  _prevRouteKey?: string;
263
278
 
279
+ /**
280
+ * @internal Render barrier for experimental `rendered()` API.
281
+ * Resolves when all non-loader segments have settled and handle data
282
+ * is available. Used by DSL loaders that call `ctx.rendered()`.
283
+ */
284
+ _renderBarrier: Promise<void>;
285
+
286
+ /**
287
+ * @internal Resolve the render barrier. Accepts resolved segments, filters
288
+ * out loaders, and captures non-loader segment IDs as the handle ordering.
289
+ * Called after segment resolution (fresh) or handle replay (cache/prerender).
290
+ */
291
+ _resolveRenderBarrier: (
292
+ segments: Array<{ type: string; id: string }>,
293
+ ) => void;
294
+
295
+ /**
296
+ * @internal Segment order at barrier resolution time, used by loader
297
+ * ctx.use(handle) to collect handle data in correct order.
298
+ */
299
+ _renderBarrierSegmentOrder?: string[];
300
+
301
+ /**
302
+ * @internal Set to true when the matched entry tree contains any `loading()`
303
+ * entries (streaming). Used by rendered() to fail fast.
304
+ */
305
+ _treeHasStreaming?: boolean;
306
+
307
+ /**
308
+ * @internal Loader IDs that have called rendered() and are waiting for the
309
+ * barrier. Used to detect deadlocks when a handler tries to await the same
310
+ * loader via ctx.use(Loader).
311
+ */
312
+ _renderBarrierWaiters?: Set<string>;
313
+
314
+ /**
315
+ * @internal Loader IDs that handlers have started awaiting via ctx.use().
316
+ * Used for bidirectional deadlock detection: if a loader later calls
317
+ * rendered() and a handler already awaits it, we can detect the deadlock.
318
+ */
319
+ _handlerLoaderDeps?: Set<string>;
320
+
321
+ /**
322
+ * @internal Cached HandleData snapshot built at barrier resolution time.
323
+ * Avoids rebuilding the snapshot on every loader ctx.use(handle) call.
324
+ */
325
+ _renderBarrierHandleSnapshot?: HandleData;
326
+
264
327
  /** @internal Per-request error dedup set for onError reporting */
265
328
  _reportedErrors: WeakSet<object>;
266
329
 
@@ -277,6 +340,15 @@ export interface RequestContext<
277
340
 
278
341
  /** @internal Request-scoped performance metrics store */
279
342
  _metricsStore?: MetricsStore;
343
+
344
+ /** @internal Router basename for this request (used by redirect()) */
345
+ _basename?: string;
346
+
347
+ /**
348
+ * @internal RouteSnapshot from classifyRequest, reused by match/matchPartial
349
+ * to avoid a second resolveRoute call. Cleared on HMR invalidation.
350
+ */
351
+ _classifiedRoute?: import("../router/route-snapshot.js").RouteSnapshot;
280
352
  }
281
353
 
282
354
  /**
@@ -303,10 +375,20 @@ export type PublicRequestContext<
303
375
  | "_routeName"
304
376
  | "_prevRouteKey"
305
377
  | "_reportedErrors"
378
+ | "_renderBarrier"
379
+ | "_resolveRenderBarrier"
380
+ | "_renderBarrierSegmentOrder"
381
+ | "_treeHasStreaming"
382
+ | "_renderBarrierWaiters"
383
+ | "_handlerLoaderDeps"
384
+ | "_renderBarrierHandleSnapshot"
306
385
  | "_reportBackgroundError"
307
386
  | "_debugPerformance"
308
387
  | "_metricsStore"
388
+ | "_basename"
309
389
  | "_setStatus"
390
+ | "_variables"
391
+ | "_classifiedRoute"
310
392
  | "res"
311
393
  >;
312
394
 
@@ -506,6 +588,18 @@ export function createRequestContext<TEnv>(
506
588
  responseCookieCache = null;
507
589
  };
508
590
 
591
+ // Guard: throw if a response-level side effect is called inside a cache() scope.
592
+ // Uses ALS to detect the scope (set during segment resolution).
593
+ function assertNotInsideCacheScopeALS(methodName: string): void {
594
+ if (isInsideCacheScope()) {
595
+ throw new Error(
596
+ `ctx.${methodName}() cannot be called inside a cache() boundary. ` +
597
+ `On cache hit the handler is skipped, so this side effect would be lost. ` +
598
+ `Move ctx.${methodName}() to a middleware or layout outside the cache() scope.`,
599
+ );
600
+ }
601
+ }
602
+
509
603
  // Effective cookie read: response stub Set-Cookie wins, then original header.
510
604
  // The stub IS the source of truth for same-request mutations.
511
605
  const effectiveCookie = (name: string): string | undefined => {
@@ -569,12 +663,20 @@ export function createRequestContext<TEnv>(
569
663
  originalUrl: new URL(request.url),
570
664
  pathname: url.pathname,
571
665
  searchParams: cleanUrl.searchParams,
572
- var: variables,
573
- get: ((keyOrVar: any) =>
574
- contextGet(variables, keyOrVar)) as RequestContext<TEnv>["get"],
575
- set: ((keyOrVar: any, value: any) => {
666
+ _variables: variables,
667
+ get: ((keyOrVar: any) => {
668
+ if (isNonCacheable(variables, keyOrVar) && isInsideCacheScope()) {
669
+ throw new Error(
670
+ `ctx.get() for a non-cacheable variable cannot be called inside a cache() boundary. ` +
671
+ `The variable was created with { cache: false } or set with { cache: false }, ` +
672
+ `and its value would be stale on cache hit. Move the read outside the cached scope.`,
673
+ );
674
+ }
675
+ return contextGet(variables, keyOrVar);
676
+ }) as RequestContext<TEnv>["get"],
677
+ set: ((keyOrVar: any, value: any, options?: any) => {
576
678
  assertNotInsideCacheExec(ctx, "set");
577
- contextSet(variables, keyOrVar, value);
679
+ contextSet(variables, keyOrVar, value, options);
578
680
  }) as RequestContext<TEnv>["set"],
579
681
  params: {} as Record<string, string>,
580
682
 
@@ -612,6 +714,7 @@ export function createRequestContext<TEnv>(
612
714
 
613
715
  setCookie(name: string, value: string, options?: CookieOptions): void {
614
716
  assertNotInsideCacheExec(ctx, "setCookie");
717
+ assertNotInsideCacheScopeALS("setCookie");
615
718
  stubResponse.headers.append(
616
719
  "Set-Cookie",
617
720
  serializeCookieValue(name, value, options),
@@ -624,6 +727,7 @@ export function createRequestContext<TEnv>(
624
727
  options?: Pick<CookieOptions, "domain" | "path">,
625
728
  ): void {
626
729
  assertNotInsideCacheExec(ctx, "deleteCookie");
730
+ assertNotInsideCacheScopeALS("deleteCookie");
627
731
  stubResponse.headers.append(
628
732
  "Set-Cookie",
629
733
  serializeCookieValue(name, "", { ...options, maxAge: 0 }),
@@ -633,11 +737,13 @@ export function createRequestContext<TEnv>(
633
737
 
634
738
  header(name: string, value: string): void {
635
739
  assertNotInsideCacheExec(ctx, "header");
740
+ assertNotInsideCacheScopeALS("header");
636
741
  stubResponse.headers.set(name, value);
637
742
  },
638
743
 
639
744
  setStatus(status: number): void {
640
745
  assertNotInsideCacheExec(ctx, "setStatus");
746
+ assertNotInsideCacheScopeALS("setStatus");
641
747
  stubResponse = new Response(null, {
642
748
  status,
643
749
  headers: stubResponse.headers,
@@ -676,6 +782,7 @@ export function createRequestContext<TEnv>(
676
782
 
677
783
  onResponse(callback: (response: Response) => Response): void {
678
784
  assertNotInsideCacheExec(ctx, "onResponse");
785
+ assertNotInsideCacheScopeALS("onResponse");
679
786
  this._onResponseCallbacks.push(callback);
680
787
  },
681
788
 
@@ -703,9 +810,58 @@ export function createRequestContext<TEnv>(
703
810
  _reportedErrors: new WeakSet<object>(),
704
811
  _metricsStore: undefined,
705
812
 
813
+ // Render barrier: deferred promise resolved after non-loader segments settle.
814
+ _renderBarrier: null as any, // set below
815
+ _resolveRenderBarrier: null as any, // set below
816
+ _renderBarrierSegmentOrder: undefined,
817
+
706
818
  reverse: createReverseFunction(getGlobalRouteMap(), undefined, {}),
707
819
  };
708
820
 
821
+ // Lazy render barrier: only allocate the Promise when a loader actually
822
+ // calls rendered(). Requests that don't use rendered() pay zero cost.
823
+ let barrierResolved = false;
824
+ let resolveBarrier: (() => void) | undefined;
825
+ ctx._renderBarrier = null as any; // lazy — created on first access
826
+ ctx._resolveRenderBarrier = (
827
+ segments: Array<{ type: string; id: string }>,
828
+ ) => {
829
+ if (barrierResolved) return;
830
+ barrierResolved = true;
831
+ const segOrder = segments
832
+ .filter((s) => s.type !== "loader")
833
+ .map((s) => s.id);
834
+ ctx._renderBarrierSegmentOrder = segOrder;
835
+ // Build and cache handle snapshot so loader ctx.use(handle) calls
836
+ // don't rebuild it on every invocation.
837
+ ctx._renderBarrierHandleSnapshot = buildHandleSnapshot(
838
+ handleStore,
839
+ segOrder,
840
+ );
841
+ ctx._renderBarrierWaiters = undefined;
842
+ ctx._handlerLoaderDeps = undefined;
843
+ if (resolveBarrier) resolveBarrier();
844
+ };
845
+ Object.defineProperty(ctx, "_renderBarrier", {
846
+ get() {
847
+ // Barrier already resolved (cache/prerender hit) or first lazy access.
848
+ // Either way, replace the getter with a concrete value to avoid
849
+ // repeated Promise.resolve() allocations on subsequent reads.
850
+ const p = barrierResolved
851
+ ? Promise.resolve()
852
+ : new Promise<void>((resolve) => {
853
+ resolveBarrier = resolve;
854
+ });
855
+ Object.defineProperty(ctx, "_renderBarrier", {
856
+ value: p,
857
+ writable: false,
858
+ configurable: false,
859
+ });
860
+ return p;
861
+ },
862
+ configurable: true,
863
+ });
864
+
709
865
  // Now create use() with access to ctx
710
866
  ctx.use = createUseFunction({
711
867
  handleStore,
@@ -888,14 +1044,13 @@ export function createUseFunction<TEnv>(
888
1044
  pathname: ctx.pathname,
889
1045
  url: ctx.url,
890
1046
  env: ctx.env as any,
891
- var: ctx.var as any,
892
1047
  get: ctx.get as any,
893
- use: <TDep, TDepParams = any>(
1048
+ use: (<TDep, TDepParams = any>(
894
1049
  dep: LoaderDefinition<TDep, TDepParams>,
895
1050
  ): Promise<TDep> => {
896
1051
  // Recursive call - will start dep loader if not already started
897
1052
  return ctx.use(dep);
898
- },
1053
+ }) as LoaderContext["use"],
899
1054
  method: "GET",
900
1055
  body: undefined,
901
1056
  reverse: createReverseFunction(
@@ -904,9 +1059,14 @@ export function createUseFunction<TEnv>(
904
1059
  ctx.params as Record<string, string>,
905
1060
  ctx._routeName ? isRouteRootScoped(ctx._routeName) : undefined,
906
1061
  ),
1062
+ rendered: () => {
1063
+ throw new Error(
1064
+ `ctx.rendered() is only available in DSL loaders (registered via loader() in urls()). ` +
1065
+ `It cannot be used from request-context loaders or server actions.`,
1066
+ );
1067
+ },
907
1068
  };
908
1069
 
909
- // Start loader execution with tracking
910
1070
  const doneLoader = track(`loader:${loader.$$id}`, 2);
911
1071
  const promise = Promise.resolve(loaderFn(loaderCtx)).finally(() => {
912
1072
  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
@@ -19,6 +19,7 @@ import type {
19
19
  ResolvedRouteMap,
20
20
  } from "./route-config.js";
21
21
  import type { LoaderDefinition } from "./loader-types.js";
22
+ import type { UseItems, HandlerUseItem } from "../route-types.js";
22
23
 
23
24
  // Re-export MiddlewareFn for internal/advanced use
24
25
  export type { MiddlewareFn } from "../router/middleware.js";
@@ -135,7 +136,7 @@ export type Handler<
135
136
  | Record<string, any> = {},
136
137
  TRouteMap extends {} = DefaultHandlerRouteMap,
137
138
  TEnv = DefaultEnv,
138
- > = (
139
+ > = ((
139
140
  ctx: HandlerContext<
140
141
  T extends `.${infer Local}`
141
142
  ? Local extends keyof TRouteMap
@@ -160,7 +161,10 @@ export type Handler<
160
161
  : ExtractSearchFromEntry<DefaultHandlerRouteMap, T>,
161
162
  TRouteMap extends DefaultHandlerRouteMap ? never : TRouteMap
162
163
  >,
163
- ) => ReactNode | Promise<ReactNode> | Response | Promise<Response>;
164
+ ) => ReactNode | Promise<ReactNode> | Response | Promise<Response>) & {
165
+ /** Composable default DSL items merged when the handler is mounted. */
166
+ use?: () => UseItems<HandlerUseItem>;
167
+ };
164
168
 
165
169
  /**
166
170
  * Context passed to handlers (Hono-inspired type-safe context)
@@ -170,7 +174,7 @@ export type Handler<
170
174
  * - Cleaned route URL (`url`, `searchParams`, `pathname` — no `_rsc*` params)
171
175
  * - Original request (`request` — raw transport URL, headers, method, body)
172
176
  * - Platform bindings (env.DB, env.KV, env.SECRETS)
173
- * - Middleware variables (var.user, var.permissions)
177
+ * - Middleware variables (`get("user")`, `get("permissions")`)
174
178
  * - Getter/setter for variables (get('user'), set('user', ...))
175
179
  *
176
180
  * @example
@@ -178,8 +182,7 @@ export type Handler<
178
182
  * const handler = (ctx: HandlerContext<{ slug: string }, AppEnv>) => {
179
183
  * ctx.params.slug // Route param (string)
180
184
  * ctx.env.DB // Binding (D1Database)
181
- * ctx.var.user // Variable (User | undefined)
182
- * ctx.get('user') // Alternative getter
185
+ * ctx.get('user') // Variable (User | undefined)
183
186
  * ctx.set('user', {...}) // Setter
184
187
  * ctx.url // Clean URL (no _rsc* params)
185
188
  * ctx.searchParams // Clean params (no _rsc* params)
@@ -206,6 +209,12 @@ export type HandlerContext<
206
209
  * Live request rendering, including passthrough fallback, uses `false`.
207
210
  */
208
211
  build: boolean;
212
+ /**
213
+ * True when running in Vite dev mode, false during production build or
214
+ * live request rendering. Use this to branch on runtime mode without
215
+ * changing build semantics (e.g., skip expensive operations in dev).
216
+ */
217
+ dev: boolean;
209
218
  /**
210
219
  * The original incoming Request object (transport URL intact).
211
220
  * Use `ctx.url` / `ctx.searchParams` for application logic — those have
@@ -244,14 +253,9 @@ export type HandlerContext<
244
253
  * Access resources like `ctx.env.DB`, `ctx.env.KV`.
245
254
  */
246
255
  env: TEnv;
247
- /**
248
- * Middleware-injected variables.
249
- * Access values like `ctx.var.user`, `ctx.var.permissions`.
250
- */
251
- var: DefaultVars;
252
256
  /**
253
257
  * Type-safe getter for middleware variables.
254
- * Alternative to `ctx.var.key` with better autocomplete.
258
+ * Preferred way to read middleware-injected variables.
255
259
  *
256
260
  * @example
257
261
  * ```typescript
@@ -272,8 +276,16 @@ export type HandlerContext<
272
276
  * ```
273
277
  */
274
278
  set: {
275
- <T>(contextVar: ContextVar<T>, value: T): void;
276
- } & (<K extends keyof DefaultVars>(key: K, value: DefaultVars[K]) => void);
279
+ <T>(
280
+ contextVar: ContextVar<T>,
281
+ value: T,
282
+ options?: { cache?: boolean },
283
+ ): void;
284
+ } & (<K extends keyof DefaultVars>(
285
+ key: K,
286
+ value: DefaultVars[K],
287
+ options?: { cache?: boolean },
288
+ ) => void);
277
289
  /**
278
290
  * Response headers. Headers set here are merged into the final response.
279
291
  *
@@ -293,8 +305,11 @@ export type HandlerContext<
293
305
  * and server components rendered within the request context.
294
306
  *
295
307
  * For loaders: Returns a promise that resolves to the loader data.
296
- * Loaders are executed in parallel and memoized per request — calling
297
- * `ctx.use(SameLoader)` multiple times returns the same promise.
308
+ * Loaders are executed in parallel and memoized per request.
309
+ * Prefer DSL `loader()` + client `useLoader()` over `ctx.use(Loader)`
310
+ * DSL loaders are always fresh and cache-safe. Use `ctx.use(Loader)` only
311
+ * when you need loader data in the handler itself (e.g., to set context
312
+ * variables or make routing decisions).
298
313
  *
299
314
  * For handles: Returns a push function to add data for this segment.
300
315
  * Handle data accumulates across all matched route segments.
@@ -302,10 +317,11 @@ export type HandlerContext<
302
317
  *
303
318
  * @example
304
319
  * ```typescript
305
- * // Loader usage
306
- * route("cart", async (ctx) => {
307
- * const cart = await ctx.use(CartLoader);
308
- * return <CartPage cart={cart} />;
320
+ * // Loader escape hatch — use when handler needs the data directly
321
+ * route("product", async (ctx) => {
322
+ * const { product } = await ctx.use(ProductLoader);
323
+ * ctx.set(Product, product); // make available to children
324
+ * return <ProductPage />;
309
325
  * });
310
326
  *
311
327
  * // Handle usage - direct value
@@ -436,6 +452,8 @@ export type InternalHandlerContext<
436
452
  > = HandlerContext<TParams, TEnv, TSearch> & {
437
453
  /** @internal Stub response for collecting headers/cookies. */
438
454
  res: Response;
455
+ /** @internal Shared variable backing store for ctx.get()/ctx.set(). */
456
+ _variables: Record<string, any>;
439
457
  /** Prerender-only control flow helper, attached when the runtime context supports it. */
440
458
  passthrough?: () => unknown;
441
459
  /** Current segment ID for handle data attribution. */
@@ -1,4 +1,5 @@
1
1
  import type { ContextVar } from "../context-var.js";
2
+ import type { Handle } from "../handle.js";
2
3
  import type { MiddlewareFn } from "../router/middleware.js";
3
4
  import type { ScopedReverseFunction } from "../reverse.js";
4
5
  import type { SearchSchema, ResolveSearchSchema } from "../search-params.js";
@@ -53,16 +54,42 @@ export type LoaderContext<
53
54
  pathname: string;
54
55
  url: URL;
55
56
  env: TEnv;
56
- var: DefaultVars;
57
57
  get: {
58
58
  <T>(contextVar: ContextVar<T>): T | undefined;
59
59
  } & (<K extends keyof DefaultVars>(key: K) => DefaultVars[K]);
60
60
  /**
61
- * Access another loader's data (returns promise since loaders run in parallel)
61
+ * Access another loader's data, or read handle data after rendered().
62
+ *
63
+ * For loaders: returns a promise (loaders run in parallel).
64
+ * For handles: returns collected data (only after `await ctx.rendered()`).
62
65
  */
63
- use: <T, TLoaderParams = any>(
64
- loader: LoaderDefinition<T, TLoaderParams>,
65
- ) => Promise<T>;
66
+ use: {
67
+ <T, TLoaderParams = any>(
68
+ loader: LoaderDefinition<T, TLoaderParams>,
69
+ ): Promise<T>;
70
+ <TData, TAccumulated = TData[]>(
71
+ handle: Handle<TData, TAccumulated>,
72
+ ): TAccumulated;
73
+ };
74
+ /**
75
+ * **Experimental.** Wait for all non-loader segments to settle.
76
+ *
77
+ * After the returned promise resolves, handle data is available via
78
+ * `ctx.use(handle)`. Only supported in DSL loaders on non-streaming
79
+ * trees (no `loading()`). Throws if called from a handler-invoked
80
+ * loader or when the tree uses streaming.
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const PricesLoader = createLoader(async (ctx) => {
85
+ * "use server";
86
+ * await ctx.rendered();
87
+ * const products = ctx.use(Products); // reads handle data
88
+ * return pricing.getLive(products.map(p => p.id));
89
+ * });
90
+ * ```
91
+ */
92
+ rendered: () => Promise<void>;
66
93
  /**
67
94
  * HTTP method (GET, POST, PUT, PATCH, DELETE)
68
95
  * Available when loader is called via load({ method: "POST", ... })
@@ -166,11 +193,11 @@ export type LoadOptions =
166
193
  * return await db.products.findBySlug(slug);
167
194
  * });
168
195
  *
169
- * // Server usage
170
- * const cart = ctx.use(CartLoader);
196
+ * // Client usage (preferred — cache-safe, always fresh)
197
+ * const { data } = useLoader(CartLoader);
171
198
  *
172
- * // Client usage (fn is stripped, only name remains)
173
- * const cart = useLoader(CartLoader);
199
+ * // Server escape hatch (handler needs data directly)
200
+ * const cart = await ctx.use(CartLoader);
174
201
  * ```
175
202
  */
176
203
  export type LoaderDefinition<
@@ -69,7 +69,7 @@ export interface RouteEntry<TEnv = any> {
69
69
  prerenderRouteKeys?: Set<string>;
70
70
 
71
71
  /**
72
- * Route keys in this entry that use `{ passthrough: true }`.
72
+ * Route keys in this entry that are wrapped with `Passthrough()`.
73
73
  * Used by the non-trie match path to set the `pt` flag.
74
74
  */
75
75
  passthroughRouteKeys?: Set<string>;
@@ -50,12 +50,12 @@ export interface ResolvedSegment {
50
50
  parallelName?: string; // For parallels: the parallel group name (used to match with revalidations)
51
51
  // Loader-specific fields
52
52
  loaderId?: string; // For loaders: the loader $$id identifier
53
+ _inherited?: boolean; // For inherited loaders: dedup marker for buildMatchResult
53
54
  loaderData?: any; // For loaders: the resolved data from loader execution
54
55
  parallelLoading?: ReactNode; // For parallel-owned loaders: the parallel's loading fallback
55
56
  // Intercept loader fields (for streaming loader data in parallel segments)
56
57
  loaderDataPromise?: Promise<any[]> | any[]; // Loader data promise or resolved array
57
58
  loaderIds?: string[]; // IDs ($$id) of loaders for this segment
58
- parallelLoaderSources?: any[]; // Internal: preserves stable aggregate promise across renders
59
59
  // Error-specific fields
60
60
  error?: ErrorInfo; // For error segments: the error information
61
61
  // NotFound-specific fields