@rangojs/router 0.0.0-experimental.8678bb02 → 0.0.0-experimental.88a3b2f7

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 (897) hide show
  1. package/README.md +76 -18
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +408 -259
  4. package/package.json +2 -2
  5. package/skills/links/SKILL.md +3 -1
  6. package/skills/middleware/SKILL.md +2 -0
  7. package/skills/prerender/SKILL.md +110 -68
  8. package/skills/router-setup/SKILL.md +35 -0
  9. package/src/__internal.ts +1 -1
  10. package/src/browser/app-version.ts +14 -0
  11. package/src/browser/navigation-bridge.ts +16 -3
  12. package/src/browser/navigation-client.ts +64 -64
  13. package/src/browser/navigation-store.ts +43 -8
  14. package/src/browser/partial-update.ts +27 -5
  15. package/src/browser/prefetch/fetch.ts +8 -2
  16. package/src/browser/react/Link.tsx +44 -8
  17. package/src/browser/react/NavigationProvider.tsx +8 -1
  18. package/src/browser/react/context.ts +7 -2
  19. package/src/browser/react/use-handle.ts +9 -58
  20. package/src/browser/react/use-router.ts +21 -8
  21. package/src/browser/rsc-router.tsx +26 -3
  22. package/src/browser/scroll-restoration.ts +10 -8
  23. package/src/browser/server-action-bridge.ts +8 -18
  24. package/src/browser/types.ts +20 -5
  25. package/src/build/generate-manifest.ts +6 -6
  26. package/src/build/generate-route-types.ts +3 -0
  27. package/src/build/route-types/include-resolution.ts +8 -1
  28. package/src/build/route-types/router-processing.ts +211 -72
  29. package/src/build/route-types/scan-filter.ts +8 -1
  30. package/src/deps/browser.ts +0 -1
  31. package/src/handle.ts +40 -0
  32. package/src/index.rsc.ts +3 -1
  33. package/src/index.ts +8 -0
  34. package/src/prerender/store.ts +5 -4
  35. package/src/prerender.ts +138 -77
  36. package/src/reverse.ts +22 -1
  37. package/src/route-definition/dsl-helpers.ts +37 -18
  38. package/src/route-definition/index.ts +3 -0
  39. package/src/route-definition/redirect.ts +9 -1
  40. package/src/route-definition/resolve-handler-use.ts +149 -0
  41. package/src/route-types.ts +11 -0
  42. package/src/router/content-negotiation.ts +100 -1
  43. package/src/router/handler-context.ts +48 -15
  44. package/src/router/intercept-resolution.ts +9 -4
  45. package/src/router/loader-resolution.ts +115 -10
  46. package/src/router/match-api.ts +124 -189
  47. package/src/router/match-middleware/cache-lookup.ts +22 -7
  48. package/src/router/match-middleware/segment-resolution.ts +53 -0
  49. package/src/router/middleware-types.ts +0 -6
  50. package/src/router/middleware.ts +0 -3
  51. package/src/router/navigation-snapshot.ts +182 -0
  52. package/src/router/prerender-match.ts +110 -10
  53. package/src/router/preview-match.ts +30 -102
  54. package/src/router/request-classification.ts +310 -0
  55. package/src/router/route-snapshot.ts +245 -0
  56. package/src/router/router-interfaces.ts +36 -4
  57. package/src/router/router-options.ts +37 -11
  58. package/src/router/segment-resolution/fresh.ts +18 -5
  59. package/src/router/segment-resolution/revalidation.ts +18 -8
  60. package/src/router.ts +53 -5
  61. package/src/rsc/handler.ts +460 -393
  62. package/src/rsc/loader-fetch.ts +2 -7
  63. package/src/rsc/manifest-init.ts +5 -1
  64. package/src/rsc/progressive-enhancement.ts +5 -4
  65. package/src/rsc/rsc-rendering.ts +6 -4
  66. package/src/rsc/server-action.ts +2 -2
  67. package/src/rsc/ssr-setup.ts +2 -2
  68. package/src/rsc/types.ts +5 -4
  69. package/src/server/context.ts +39 -2
  70. package/src/server/loader-registry.ts +9 -8
  71. package/src/server/request-context.ts +91 -12
  72. package/src/ssr/index.tsx +3 -0
  73. package/src/static-handler.ts +18 -6
  74. package/src/types/cache-types.ts +4 -4
  75. package/src/types/handler-context.ts +17 -11
  76. package/src/types/loader-types.ts +32 -5
  77. package/src/types/route-entry.ts +1 -1
  78. package/src/urls/path-helper-types.ts +5 -1
  79. package/src/urls/path-helper.ts +47 -12
  80. package/src/urls/pattern-types.ts +12 -0
  81. package/src/urls/response-types.ts +16 -6
  82. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  83. package/src/vite/discovery/discover-routers.ts +5 -1
  84. package/src/vite/discovery/prerender-collection.ts +14 -1
  85. package/src/vite/discovery/state.ts +13 -4
  86. package/src/vite/index.ts +4 -0
  87. package/src/vite/plugin-types.ts +60 -5
  88. package/src/vite/plugins/performance-tracks.ts +64 -206
  89. package/src/vite/plugins/refresh-cmd.ts +88 -26
  90. package/src/vite/rango.ts +17 -11
  91. package/src/vite/router-discovery.ts +153 -34
  92. package/src/vite/utils/prerender-utils.ts +18 -0
  93. package/src/vite/utils/shared-utils.ts +3 -2
  94. package/dist/__internal.d.ts +0 -83
  95. package/dist/__internal.d.ts.map +0 -1
  96. package/dist/__internal.js +0 -19
  97. package/dist/__internal.js.map +0 -1
  98. package/dist/__mocks__/version.d.ts +0 -7
  99. package/dist/__mocks__/version.d.ts.map +0 -1
  100. package/dist/__mocks__/version.js +0 -7
  101. package/dist/__mocks__/version.js.map +0 -1
  102. package/dist/__tests__/client-href.test.d.ts +0 -2
  103. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  104. package/dist/__tests__/client-href.test.js +0 -74
  105. package/dist/__tests__/client-href.test.js.map +0 -1
  106. package/dist/__tests__/component-utils.test.d.ts +0 -2
  107. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  108. package/dist/__tests__/component-utils.test.js +0 -51
  109. package/dist/__tests__/component-utils.test.js.map +0 -1
  110. package/dist/__tests__/event-controller.test.d.ts +0 -2
  111. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  112. package/dist/__tests__/event-controller.test.js +0 -538
  113. package/dist/__tests__/event-controller.test.js.map +0 -1
  114. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  115. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  116. package/dist/__tests__/helpers/route-tree.js +0 -374
  117. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  118. package/dist/__tests__/match-result.test.d.ts +0 -2
  119. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  120. package/dist/__tests__/match-result.test.js +0 -154
  121. package/dist/__tests__/match-result.test.js.map +0 -1
  122. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  123. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  124. package/dist/__tests__/navigation-store.test.js +0 -440
  125. package/dist/__tests__/navigation-store.test.js.map +0 -1
  126. package/dist/__tests__/partial-update.test.d.ts +0 -2
  127. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  128. package/dist/__tests__/partial-update.test.js +0 -1009
  129. package/dist/__tests__/partial-update.test.js.map +0 -1
  130. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  131. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  132. package/dist/__tests__/reverse-types.test.js +0 -656
  133. package/dist/__tests__/reverse-types.test.js.map +0 -1
  134. package/dist/__tests__/route-definition.test.d.ts +0 -2
  135. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  136. package/dist/__tests__/route-definition.test.js +0 -55
  137. package/dist/__tests__/route-definition.test.js.map +0 -1
  138. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  139. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  140. package/dist/__tests__/router-helpers.test.js +0 -377
  141. package/dist/__tests__/router-helpers.test.js.map +0 -1
  142. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  143. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  144. package/dist/__tests__/router-integration-2.test.js +0 -426
  145. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  146. package/dist/__tests__/router-integration.test.d.ts +0 -2
  147. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  148. package/dist/__tests__/router-integration.test.js +0 -1051
  149. package/dist/__tests__/router-integration.test.js.map +0 -1
  150. package/dist/__tests__/search-params.test.d.ts +0 -5
  151. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  152. package/dist/__tests__/search-params.test.js +0 -306
  153. package/dist/__tests__/search-params.test.js.map +0 -1
  154. package/dist/__tests__/segment-system.test.d.ts +0 -2
  155. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  156. package/dist/__tests__/segment-system.test.js +0 -627
  157. package/dist/__tests__/segment-system.test.js.map +0 -1
  158. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  159. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  160. package/dist/__tests__/static-handler-types.test.js +0 -63
  161. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  162. package/dist/__tests__/urls.test.d.ts +0 -2
  163. package/dist/__tests__/urls.test.d.ts.map +0 -1
  164. package/dist/__tests__/urls.test.js +0 -421
  165. package/dist/__tests__/urls.test.js.map +0 -1
  166. package/dist/__tests__/use-mount.test.d.ts +0 -2
  167. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  168. package/dist/__tests__/use-mount.test.js +0 -35
  169. package/dist/__tests__/use-mount.test.js.map +0 -1
  170. package/dist/bin/rango.d.ts +0 -2
  171. package/dist/bin/rango.d.ts.map +0 -1
  172. package/dist/bin/rango.js.map +0 -1
  173. package/dist/browser/event-controller.d.ts +0 -191
  174. package/dist/browser/event-controller.d.ts.map +0 -1
  175. package/dist/browser/event-controller.js +0 -559
  176. package/dist/browser/event-controller.js.map +0 -1
  177. package/dist/browser/index.d.ts +0 -2
  178. package/dist/browser/index.d.ts.map +0 -1
  179. package/dist/browser/index.js +0 -14
  180. package/dist/browser/index.js.map +0 -1
  181. package/dist/browser/link-interceptor.d.ts +0 -38
  182. package/dist/browser/link-interceptor.d.ts.map +0 -1
  183. package/dist/browser/link-interceptor.js +0 -99
  184. package/dist/browser/link-interceptor.js.map +0 -1
  185. package/dist/browser/logging.d.ts +0 -10
  186. package/dist/browser/logging.d.ts.map +0 -1
  187. package/dist/browser/logging.js +0 -29
  188. package/dist/browser/logging.js.map +0 -1
  189. package/dist/browser/lru-cache.d.ts +0 -17
  190. package/dist/browser/lru-cache.d.ts.map +0 -1
  191. package/dist/browser/lru-cache.js +0 -50
  192. package/dist/browser/lru-cache.js.map +0 -1
  193. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  194. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  195. package/dist/browser/merge-segment-loaders.js +0 -102
  196. package/dist/browser/merge-segment-loaders.js.map +0 -1
  197. package/dist/browser/navigation-bridge.d.ts +0 -102
  198. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  199. package/dist/browser/navigation-bridge.js +0 -708
  200. package/dist/browser/navigation-bridge.js.map +0 -1
  201. package/dist/browser/navigation-client.d.ts +0 -25
  202. package/dist/browser/navigation-client.d.ts.map +0 -1
  203. package/dist/browser/navigation-client.js +0 -157
  204. package/dist/browser/navigation-client.js.map +0 -1
  205. package/dist/browser/navigation-store.d.ts +0 -101
  206. package/dist/browser/navigation-store.d.ts.map +0 -1
  207. package/dist/browser/navigation-store.js +0 -625
  208. package/dist/browser/navigation-store.js.map +0 -1
  209. package/dist/browser/partial-update.d.ts +0 -75
  210. package/dist/browser/partial-update.d.ts.map +0 -1
  211. package/dist/browser/partial-update.js +0 -426
  212. package/dist/browser/partial-update.js.map +0 -1
  213. package/dist/browser/react/Link.d.ts +0 -86
  214. package/dist/browser/react/Link.d.ts.map +0 -1
  215. package/dist/browser/react/Link.js +0 -128
  216. package/dist/browser/react/Link.js.map +0 -1
  217. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  218. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  219. package/dist/browser/react/NavigationProvider.js +0 -216
  220. package/dist/browser/react/NavigationProvider.js.map +0 -1
  221. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  222. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  223. package/dist/browser/react/ScrollRestoration.js +0 -57
  224. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  225. package/dist/browser/react/context.d.ts +0 -46
  226. package/dist/browser/react/context.d.ts.map +0 -1
  227. package/dist/browser/react/context.js +0 -10
  228. package/dist/browser/react/context.js.map +0 -1
  229. package/dist/browser/react/index.d.ts +0 -11
  230. package/dist/browser/react/index.d.ts.map +0 -1
  231. package/dist/browser/react/index.js +0 -22
  232. package/dist/browser/react/index.js.map +0 -1
  233. package/dist/browser/react/location-state-shared.d.ts +0 -63
  234. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  235. package/dist/browser/react/location-state-shared.js +0 -81
  236. package/dist/browser/react/location-state-shared.js.map +0 -1
  237. package/dist/browser/react/location-state.d.ts +0 -23
  238. package/dist/browser/react/location-state.d.ts.map +0 -1
  239. package/dist/browser/react/location-state.js +0 -29
  240. package/dist/browser/react/location-state.js.map +0 -1
  241. package/dist/browser/react/mount-context.d.ts +0 -24
  242. package/dist/browser/react/mount-context.d.ts.map +0 -1
  243. package/dist/browser/react/mount-context.js +0 -24
  244. package/dist/browser/react/mount-context.js.map +0 -1
  245. package/dist/browser/react/use-action.d.ts +0 -64
  246. package/dist/browser/react/use-action.d.ts.map +0 -1
  247. package/dist/browser/react/use-action.js +0 -134
  248. package/dist/browser/react/use-action.js.map +0 -1
  249. package/dist/browser/react/use-client-cache.d.ts +0 -41
  250. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  251. package/dist/browser/react/use-client-cache.js +0 -39
  252. package/dist/browser/react/use-client-cache.js.map +0 -1
  253. package/dist/browser/react/use-handle.d.ts +0 -31
  254. package/dist/browser/react/use-handle.d.ts.map +0 -1
  255. package/dist/browser/react/use-handle.js +0 -144
  256. package/dist/browser/react/use-handle.js.map +0 -1
  257. package/dist/browser/react/use-href.d.ts +0 -33
  258. package/dist/browser/react/use-href.d.ts.map +0 -1
  259. package/dist/browser/react/use-href.js +0 -39
  260. package/dist/browser/react/use-href.js.map +0 -1
  261. package/dist/browser/react/use-link-status.d.ts +0 -37
  262. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  263. package/dist/browser/react/use-link-status.js +0 -99
  264. package/dist/browser/react/use-link-status.js.map +0 -1
  265. package/dist/browser/react/use-mount.d.ts +0 -25
  266. package/dist/browser/react/use-mount.d.ts.map +0 -1
  267. package/dist/browser/react/use-mount.js +0 -30
  268. package/dist/browser/react/use-mount.js.map +0 -1
  269. package/dist/browser/react/use-navigation.d.ts +0 -27
  270. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  271. package/dist/browser/react/use-navigation.js +0 -87
  272. package/dist/browser/react/use-navigation.js.map +0 -1
  273. package/dist/browser/react/use-segments.d.ts +0 -38
  274. package/dist/browser/react/use-segments.d.ts.map +0 -1
  275. package/dist/browser/react/use-segments.js +0 -130
  276. package/dist/browser/react/use-segments.js.map +0 -1
  277. package/dist/browser/request-controller.d.ts +0 -26
  278. package/dist/browser/request-controller.d.ts.map +0 -1
  279. package/dist/browser/request-controller.js +0 -147
  280. package/dist/browser/request-controller.js.map +0 -1
  281. package/dist/browser/rsc-router.d.ts +0 -129
  282. package/dist/browser/rsc-router.d.ts.map +0 -1
  283. package/dist/browser/rsc-router.js +0 -195
  284. package/dist/browser/rsc-router.js.map +0 -1
  285. package/dist/browser/scroll-restoration.d.ts +0 -93
  286. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  287. package/dist/browser/scroll-restoration.js +0 -321
  288. package/dist/browser/scroll-restoration.js.map +0 -1
  289. package/dist/browser/segment-structure-assert.d.ts +0 -17
  290. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  291. package/dist/browser/segment-structure-assert.js +0 -59
  292. package/dist/browser/segment-structure-assert.js.map +0 -1
  293. package/dist/browser/server-action-bridge.d.ts +0 -26
  294. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  295. package/dist/browser/server-action-bridge.js +0 -668
  296. package/dist/browser/server-action-bridge.js.map +0 -1
  297. package/dist/browser/shallow.d.ts +0 -12
  298. package/dist/browser/shallow.d.ts.map +0 -1
  299. package/dist/browser/shallow.js +0 -34
  300. package/dist/browser/shallow.js.map +0 -1
  301. package/dist/browser/types.d.ts +0 -369
  302. package/dist/browser/types.d.ts.map +0 -1
  303. package/dist/browser/types.js +0 -2
  304. package/dist/browser/types.js.map +0 -1
  305. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  306. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  307. package/dist/build/__tests__/generate-cli.test.js +0 -237
  308. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  309. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  310. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  311. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  312. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  313. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  314. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  315. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  316. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  317. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  318. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  319. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  320. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  321. package/dist/build/generate-manifest.d.ts +0 -81
  322. package/dist/build/generate-manifest.d.ts.map +0 -1
  323. package/dist/build/generate-manifest.js +0 -276
  324. package/dist/build/generate-manifest.js.map +0 -1
  325. package/dist/build/generate-route-types.d.ts +0 -115
  326. package/dist/build/generate-route-types.d.ts.map +0 -1
  327. package/dist/build/generate-route-types.js +0 -740
  328. package/dist/build/generate-route-types.js.map +0 -1
  329. package/dist/build/index.d.ts +0 -21
  330. package/dist/build/index.d.ts.map +0 -1
  331. package/dist/build/index.js +0 -21
  332. package/dist/build/index.js.map +0 -1
  333. package/dist/build/route-trie.d.ts +0 -71
  334. package/dist/build/route-trie.d.ts.map +0 -1
  335. package/dist/build/route-trie.js +0 -175
  336. package/dist/build/route-trie.js.map +0 -1
  337. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  338. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  339. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  340. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  341. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  342. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  343. package/dist/cache/__tests__/document-cache.test.js +0 -345
  344. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  345. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  346. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  347. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  348. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  349. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  350. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  351. package/dist/cache/__tests__/memory-store.test.js +0 -367
  352. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  353. package/dist/cache/cache-scope.d.ts +0 -102
  354. package/dist/cache/cache-scope.d.ts.map +0 -1
  355. package/dist/cache/cache-scope.js +0 -440
  356. package/dist/cache/cache-scope.js.map +0 -1
  357. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  358. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  359. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  360. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  361. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  362. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  363. package/dist/cache/cf/cf-cache-store.js +0 -242
  364. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  365. package/dist/cache/cf/index.d.ts +0 -14
  366. package/dist/cache/cf/index.d.ts.map +0 -1
  367. package/dist/cache/cf/index.js +0 -17
  368. package/dist/cache/cf/index.js.map +0 -1
  369. package/dist/cache/document-cache.d.ts +0 -64
  370. package/dist/cache/document-cache.d.ts.map +0 -1
  371. package/dist/cache/document-cache.js +0 -228
  372. package/dist/cache/document-cache.js.map +0 -1
  373. package/dist/cache/index.d.ts +0 -19
  374. package/dist/cache/index.d.ts.map +0 -1
  375. package/dist/cache/index.js +0 -21
  376. package/dist/cache/index.js.map +0 -1
  377. package/dist/cache/memory-segment-store.d.ts +0 -110
  378. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  379. package/dist/cache/memory-segment-store.js +0 -117
  380. package/dist/cache/memory-segment-store.js.map +0 -1
  381. package/dist/cache/memory-store.d.ts +0 -41
  382. package/dist/cache/memory-store.d.ts.map +0 -1
  383. package/dist/cache/memory-store.js +0 -191
  384. package/dist/cache/memory-store.js.map +0 -1
  385. package/dist/cache/types.d.ts +0 -317
  386. package/dist/cache/types.d.ts.map +0 -1
  387. package/dist/cache/types.js +0 -12
  388. package/dist/cache/types.js.map +0 -1
  389. package/dist/client.d.ts +0 -248
  390. package/dist/client.d.ts.map +0 -1
  391. package/dist/client.js +0 -367
  392. package/dist/client.js.map +0 -1
  393. package/dist/client.rsc.d.ts +0 -26
  394. package/dist/client.rsc.d.ts.map +0 -1
  395. package/dist/client.rsc.js +0 -46
  396. package/dist/client.rsc.js.map +0 -1
  397. package/dist/component-utils.d.ts +0 -36
  398. package/dist/component-utils.d.ts.map +0 -1
  399. package/dist/component-utils.js +0 -61
  400. package/dist/component-utils.js.map +0 -1
  401. package/dist/components/DefaultDocument.d.ts +0 -13
  402. package/dist/components/DefaultDocument.d.ts.map +0 -1
  403. package/dist/components/DefaultDocument.js +0 -15
  404. package/dist/components/DefaultDocument.js.map +0 -1
  405. package/dist/debug.d.ts +0 -58
  406. package/dist/debug.d.ts.map +0 -1
  407. package/dist/debug.js +0 -157
  408. package/dist/debug.js.map +0 -1
  409. package/dist/default-error-boundary.d.ts +0 -11
  410. package/dist/default-error-boundary.d.ts.map +0 -1
  411. package/dist/default-error-boundary.js +0 -45
  412. package/dist/default-error-boundary.js.map +0 -1
  413. package/dist/deps/browser.d.ts +0 -2
  414. package/dist/deps/browser.d.ts.map +0 -1
  415. package/dist/deps/browser.js +0 -3
  416. package/dist/deps/browser.js.map +0 -1
  417. package/dist/deps/html-stream-client.d.ts +0 -2
  418. package/dist/deps/html-stream-client.d.ts.map +0 -1
  419. package/dist/deps/html-stream-client.js +0 -3
  420. package/dist/deps/html-stream-client.js.map +0 -1
  421. package/dist/deps/html-stream-server.d.ts +0 -2
  422. package/dist/deps/html-stream-server.d.ts.map +0 -1
  423. package/dist/deps/html-stream-server.js +0 -3
  424. package/dist/deps/html-stream-server.js.map +0 -1
  425. package/dist/deps/rsc.d.ts +0 -2
  426. package/dist/deps/rsc.d.ts.map +0 -1
  427. package/dist/deps/rsc.js +0 -4
  428. package/dist/deps/rsc.js.map +0 -1
  429. package/dist/deps/ssr.d.ts +0 -2
  430. package/dist/deps/ssr.d.ts.map +0 -1
  431. package/dist/deps/ssr.js +0 -3
  432. package/dist/deps/ssr.js.map +0 -1
  433. package/dist/errors.d.ts +0 -174
  434. package/dist/errors.d.ts.map +0 -1
  435. package/dist/errors.js +0 -241
  436. package/dist/errors.js.map +0 -1
  437. package/dist/handle.d.ts +0 -78
  438. package/dist/handle.d.ts.map +0 -1
  439. package/dist/handle.js +0 -82
  440. package/dist/handle.js.map +0 -1
  441. package/dist/handles/MetaTags.d.ts +0 -14
  442. package/dist/handles/MetaTags.d.ts.map +0 -1
  443. package/dist/handles/MetaTags.js +0 -136
  444. package/dist/handles/MetaTags.js.map +0 -1
  445. package/dist/handles/index.d.ts +0 -6
  446. package/dist/handles/index.d.ts.map +0 -1
  447. package/dist/handles/index.js +0 -6
  448. package/dist/handles/index.js.map +0 -1
  449. package/dist/handles/meta.d.ts +0 -39
  450. package/dist/handles/meta.d.ts.map +0 -1
  451. package/dist/handles/meta.js +0 -202
  452. package/dist/handles/meta.js.map +0 -1
  453. package/dist/host/__tests__/errors.test.d.ts +0 -2
  454. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  455. package/dist/host/__tests__/errors.test.js +0 -76
  456. package/dist/host/__tests__/errors.test.js.map +0 -1
  457. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  458. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  459. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  460. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  461. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  462. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  463. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  464. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  465. package/dist/host/__tests__/router.test.d.ts +0 -2
  466. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  467. package/dist/host/__tests__/router.test.js +0 -241
  468. package/dist/host/__tests__/router.test.js.map +0 -1
  469. package/dist/host/__tests__/testing.test.d.ts +0 -2
  470. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  471. package/dist/host/__tests__/testing.test.js +0 -64
  472. package/dist/host/__tests__/testing.test.js.map +0 -1
  473. package/dist/host/__tests__/utils.test.d.ts +0 -2
  474. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  475. package/dist/host/__tests__/utils.test.js +0 -29
  476. package/dist/host/__tests__/utils.test.js.map +0 -1
  477. package/dist/host/cookie-handler.d.ts +0 -34
  478. package/dist/host/cookie-handler.d.ts.map +0 -1
  479. package/dist/host/cookie-handler.js +0 -124
  480. package/dist/host/cookie-handler.js.map +0 -1
  481. package/dist/host/errors.d.ts +0 -56
  482. package/dist/host/errors.d.ts.map +0 -1
  483. package/dist/host/errors.js +0 -79
  484. package/dist/host/errors.js.map +0 -1
  485. package/dist/host/index.d.ts +0 -29
  486. package/dist/host/index.d.ts.map +0 -1
  487. package/dist/host/index.js +0 -32
  488. package/dist/host/index.js.map +0 -1
  489. package/dist/host/pattern-matcher.d.ts +0 -36
  490. package/dist/host/pattern-matcher.d.ts.map +0 -1
  491. package/dist/host/pattern-matcher.js +0 -172
  492. package/dist/host/pattern-matcher.js.map +0 -1
  493. package/dist/host/router.d.ts +0 -26
  494. package/dist/host/router.d.ts.map +0 -1
  495. package/dist/host/router.js +0 -218
  496. package/dist/host/router.js.map +0 -1
  497. package/dist/host/testing.d.ts +0 -36
  498. package/dist/host/testing.d.ts.map +0 -1
  499. package/dist/host/testing.js +0 -55
  500. package/dist/host/testing.js.map +0 -1
  501. package/dist/host/types.d.ts +0 -115
  502. package/dist/host/types.d.ts.map +0 -1
  503. package/dist/host/types.js +0 -7
  504. package/dist/host/types.js.map +0 -1
  505. package/dist/host/utils.d.ts +0 -21
  506. package/dist/host/utils.d.ts.map +0 -1
  507. package/dist/host/utils.js +0 -23
  508. package/dist/host/utils.js.map +0 -1
  509. package/dist/href-client.d.ts +0 -131
  510. package/dist/href-client.d.ts.map +0 -1
  511. package/dist/href-client.js +0 -64
  512. package/dist/href-client.js.map +0 -1
  513. package/dist/href-context.d.ts +0 -29
  514. package/dist/href-context.d.ts.map +0 -1
  515. package/dist/href-context.js +0 -21
  516. package/dist/href-context.js.map +0 -1
  517. package/dist/index.d.ts +0 -73
  518. package/dist/index.d.ts.map +0 -1
  519. package/dist/index.js +0 -91
  520. package/dist/index.js.map +0 -1
  521. package/dist/index.rsc.d.ts +0 -32
  522. package/dist/index.rsc.d.ts.map +0 -1
  523. package/dist/index.rsc.js +0 -40
  524. package/dist/index.rsc.js.map +0 -1
  525. package/dist/internal-debug.d.ts +0 -2
  526. package/dist/internal-debug.d.ts.map +0 -1
  527. package/dist/internal-debug.js +0 -5
  528. package/dist/internal-debug.js.map +0 -1
  529. package/dist/loader.d.ts +0 -14
  530. package/dist/loader.d.ts.map +0 -1
  531. package/dist/loader.js +0 -20
  532. package/dist/loader.js.map +0 -1
  533. package/dist/loader.rsc.d.ts +0 -19
  534. package/dist/loader.rsc.d.ts.map +0 -1
  535. package/dist/loader.rsc.js +0 -99
  536. package/dist/loader.rsc.js.map +0 -1
  537. package/dist/network-error-thrower.d.ts +0 -17
  538. package/dist/network-error-thrower.d.ts.map +0 -1
  539. package/dist/network-error-thrower.js +0 -14
  540. package/dist/network-error-thrower.js.map +0 -1
  541. package/dist/outlet-context.d.ts +0 -13
  542. package/dist/outlet-context.d.ts.map +0 -1
  543. package/dist/outlet-context.js +0 -3
  544. package/dist/outlet-context.js.map +0 -1
  545. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  546. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  547. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  548. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  549. package/dist/prerender/param-hash.d.ts +0 -16
  550. package/dist/prerender/param-hash.d.ts.map +0 -1
  551. package/dist/prerender/param-hash.js +0 -36
  552. package/dist/prerender/param-hash.js.map +0 -1
  553. package/dist/prerender/store.d.ts +0 -38
  554. package/dist/prerender/store.d.ts.map +0 -1
  555. package/dist/prerender/store.js +0 -61
  556. package/dist/prerender/store.js.map +0 -1
  557. package/dist/prerender.d.ts +0 -66
  558. package/dist/prerender.d.ts.map +0 -1
  559. package/dist/prerender.js +0 -57
  560. package/dist/prerender.js.map +0 -1
  561. package/dist/reverse.d.ts +0 -196
  562. package/dist/reverse.d.ts.map +0 -1
  563. package/dist/reverse.js +0 -78
  564. package/dist/reverse.js.map +0 -1
  565. package/dist/root-error-boundary.d.ts +0 -33
  566. package/dist/root-error-boundary.d.ts.map +0 -1
  567. package/dist/root-error-boundary.js +0 -165
  568. package/dist/root-error-boundary.js.map +0 -1
  569. package/dist/route-content-wrapper.d.ts +0 -46
  570. package/dist/route-content-wrapper.d.ts.map +0 -1
  571. package/dist/route-content-wrapper.js +0 -77
  572. package/dist/route-content-wrapper.js.map +0 -1
  573. package/dist/route-definition.d.ts +0 -421
  574. package/dist/route-definition.d.ts.map +0 -1
  575. package/dist/route-definition.js +0 -868
  576. package/dist/route-definition.js.map +0 -1
  577. package/dist/route-map-builder.d.ts +0 -155
  578. package/dist/route-map-builder.d.ts.map +0 -1
  579. package/dist/route-map-builder.js +0 -237
  580. package/dist/route-map-builder.js.map +0 -1
  581. package/dist/route-types.d.ts +0 -165
  582. package/dist/route-types.d.ts.map +0 -1
  583. package/dist/route-types.js +0 -7
  584. package/dist/route-types.js.map +0 -1
  585. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  586. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  587. package/dist/router/__tests__/handler-context.test.js +0 -65
  588. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  589. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  590. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  591. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  592. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  593. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  594. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  595. package/dist/router/__tests__/match-context.test.js +0 -92
  596. package/dist/router/__tests__/match-context.test.js.map +0 -1
  597. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  598. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  599. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  600. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  601. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  602. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  603. package/dist/router/__tests__/match-result.test.js +0 -457
  604. package/dist/router/__tests__/match-result.test.js.map +0 -1
  605. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  606. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  607. package/dist/router/__tests__/on-error.test.js +0 -678
  608. package/dist/router/__tests__/on-error.test.js.map +0 -1
  609. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  610. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  611. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  612. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  613. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  614. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  615. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  616. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  617. package/dist/router/error-handling.d.ts +0 -77
  618. package/dist/router/error-handling.d.ts.map +0 -1
  619. package/dist/router/error-handling.js +0 -202
  620. package/dist/router/error-handling.js.map +0 -1
  621. package/dist/router/handler-context.d.ts +0 -20
  622. package/dist/router/handler-context.d.ts.map +0 -1
  623. package/dist/router/handler-context.js +0 -198
  624. package/dist/router/handler-context.js.map +0 -1
  625. package/dist/router/intercept-resolution.d.ts +0 -66
  626. package/dist/router/intercept-resolution.d.ts.map +0 -1
  627. package/dist/router/intercept-resolution.js +0 -246
  628. package/dist/router/intercept-resolution.js.map +0 -1
  629. package/dist/router/loader-resolution.d.ts +0 -64
  630. package/dist/router/loader-resolution.d.ts.map +0 -1
  631. package/dist/router/loader-resolution.js +0 -284
  632. package/dist/router/loader-resolution.js.map +0 -1
  633. package/dist/router/logging.d.ts +0 -15
  634. package/dist/router/logging.d.ts.map +0 -1
  635. package/dist/router/logging.js +0 -99
  636. package/dist/router/logging.js.map +0 -1
  637. package/dist/router/manifest.d.ts +0 -22
  638. package/dist/router/manifest.d.ts.map +0 -1
  639. package/dist/router/manifest.js +0 -181
  640. package/dist/router/manifest.js.map +0 -1
  641. package/dist/router/match-api.d.ts +0 -35
  642. package/dist/router/match-api.d.ts.map +0 -1
  643. package/dist/router/match-api.js +0 -406
  644. package/dist/router/match-api.js.map +0 -1
  645. package/dist/router/match-context.d.ts +0 -206
  646. package/dist/router/match-context.d.ts.map +0 -1
  647. package/dist/router/match-context.js +0 -17
  648. package/dist/router/match-context.js.map +0 -1
  649. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  650. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  651. package/dist/router/match-middleware/background-revalidation.js +0 -75
  652. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  653. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  654. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  655. package/dist/router/match-middleware/cache-lookup.js +0 -257
  656. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  657. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  658. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  659. package/dist/router/match-middleware/cache-store.js +0 -108
  660. package/dist/router/match-middleware/cache-store.js.map +0 -1
  661. package/dist/router/match-middleware/index.d.ts +0 -81
  662. package/dist/router/match-middleware/index.d.ts.map +0 -1
  663. package/dist/router/match-middleware/index.js +0 -80
  664. package/dist/router/match-middleware/index.js.map +0 -1
  665. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  666. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  667. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  668. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  669. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  670. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  671. package/dist/router/match-middleware/segment-resolution.js +0 -53
  672. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  673. package/dist/router/match-pipelines.d.ts +0 -147
  674. package/dist/router/match-pipelines.d.ts.map +0 -1
  675. package/dist/router/match-pipelines.js +0 -82
  676. package/dist/router/match-pipelines.js.map +0 -1
  677. package/dist/router/match-result.d.ts +0 -126
  678. package/dist/router/match-result.d.ts.map +0 -1
  679. package/dist/router/match-result.js +0 -93
  680. package/dist/router/match-result.js.map +0 -1
  681. package/dist/router/metrics.d.ts +0 -20
  682. package/dist/router/metrics.d.ts.map +0 -1
  683. package/dist/router/metrics.js +0 -47
  684. package/dist/router/metrics.js.map +0 -1
  685. package/dist/router/middleware.d.ts +0 -249
  686. package/dist/router/middleware.d.ts.map +0 -1
  687. package/dist/router/middleware.js +0 -434
  688. package/dist/router/middleware.js.map +0 -1
  689. package/dist/router/middleware.test.d.ts +0 -2
  690. package/dist/router/middleware.test.d.ts.map +0 -1
  691. package/dist/router/middleware.test.js +0 -816
  692. package/dist/router/middleware.test.js.map +0 -1
  693. package/dist/router/pattern-matching.d.ts +0 -149
  694. package/dist/router/pattern-matching.d.ts.map +0 -1
  695. package/dist/router/pattern-matching.js +0 -349
  696. package/dist/router/pattern-matching.js.map +0 -1
  697. package/dist/router/revalidation.d.ts +0 -44
  698. package/dist/router/revalidation.d.ts.map +0 -1
  699. package/dist/router/revalidation.js +0 -147
  700. package/dist/router/revalidation.js.map +0 -1
  701. package/dist/router/router-context.d.ts +0 -135
  702. package/dist/router/router-context.d.ts.map +0 -1
  703. package/dist/router/router-context.js +0 -36
  704. package/dist/router/router-context.js.map +0 -1
  705. package/dist/router/segment-resolution.d.ts +0 -127
  706. package/dist/router/segment-resolution.d.ts.map +0 -1
  707. package/dist/router/segment-resolution.js +0 -919
  708. package/dist/router/segment-resolution.js.map +0 -1
  709. package/dist/router/trie-matching.d.ts +0 -40
  710. package/dist/router/trie-matching.d.ts.map +0 -1
  711. package/dist/router/trie-matching.js +0 -127
  712. package/dist/router/trie-matching.js.map +0 -1
  713. package/dist/router/types.d.ts +0 -136
  714. package/dist/router/types.d.ts.map +0 -1
  715. package/dist/router/types.js +0 -7
  716. package/dist/router/types.js.map +0 -1
  717. package/dist/router.d.ts +0 -753
  718. package/dist/router.d.ts.map +0 -1
  719. package/dist/router.gen.d.ts +0 -6
  720. package/dist/router.gen.d.ts.map +0 -1
  721. package/dist/router.gen.js +0 -6
  722. package/dist/router.gen.js.map +0 -1
  723. package/dist/router.js +0 -1304
  724. package/dist/router.js.map +0 -1
  725. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  726. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  727. package/dist/rsc/__tests__/helpers.test.js +0 -140
  728. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  729. package/dist/rsc/handler.d.ts +0 -45
  730. package/dist/rsc/handler.d.ts.map +0 -1
  731. package/dist/rsc/handler.js +0 -1172
  732. package/dist/rsc/handler.js.map +0 -1
  733. package/dist/rsc/helpers.d.ts +0 -16
  734. package/dist/rsc/helpers.d.ts.map +0 -1
  735. package/dist/rsc/helpers.js +0 -55
  736. package/dist/rsc/helpers.js.map +0 -1
  737. package/dist/rsc/index.d.ts +0 -22
  738. package/dist/rsc/index.d.ts.map +0 -1
  739. package/dist/rsc/index.js +0 -23
  740. package/dist/rsc/index.js.map +0 -1
  741. package/dist/rsc/nonce.d.ts +0 -9
  742. package/dist/rsc/nonce.d.ts.map +0 -1
  743. package/dist/rsc/nonce.js +0 -18
  744. package/dist/rsc/nonce.js.map +0 -1
  745. package/dist/rsc/types.d.ts +0 -206
  746. package/dist/rsc/types.d.ts.map +0 -1
  747. package/dist/rsc/types.js +0 -8
  748. package/dist/rsc/types.js.map +0 -1
  749. package/dist/search-params.d.ts +0 -103
  750. package/dist/search-params.d.ts.map +0 -1
  751. package/dist/search-params.js +0 -74
  752. package/dist/search-params.js.map +0 -1
  753. package/dist/segment-system.d.ts +0 -75
  754. package/dist/segment-system.d.ts.map +0 -1
  755. package/dist/segment-system.js +0 -336
  756. package/dist/segment-system.js.map +0 -1
  757. package/dist/server/context.d.ts +0 -245
  758. package/dist/server/context.d.ts.map +0 -1
  759. package/dist/server/context.js +0 -197
  760. package/dist/server/context.js.map +0 -1
  761. package/dist/server/fetchable-loader-store.d.ts +0 -18
  762. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  763. package/dist/server/fetchable-loader-store.js +0 -18
  764. package/dist/server/fetchable-loader-store.js.map +0 -1
  765. package/dist/server/handle-store.d.ts +0 -85
  766. package/dist/server/handle-store.d.ts.map +0 -1
  767. package/dist/server/handle-store.js +0 -142
  768. package/dist/server/handle-store.js.map +0 -1
  769. package/dist/server/loader-registry.d.ts +0 -55
  770. package/dist/server/loader-registry.d.ts.map +0 -1
  771. package/dist/server/loader-registry.js +0 -132
  772. package/dist/server/loader-registry.js.map +0 -1
  773. package/dist/server/request-context.d.ts +0 -226
  774. package/dist/server/request-context.d.ts.map +0 -1
  775. package/dist/server/request-context.js +0 -290
  776. package/dist/server/request-context.js.map +0 -1
  777. package/dist/server/root-layout.d.ts +0 -4
  778. package/dist/server/root-layout.d.ts.map +0 -1
  779. package/dist/server/root-layout.js +0 -5
  780. package/dist/server/root-layout.js.map +0 -1
  781. package/dist/server.d.ts +0 -15
  782. package/dist/server.d.ts.map +0 -1
  783. package/dist/server.js +0 -20
  784. package/dist/server.js.map +0 -1
  785. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  786. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  787. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  788. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  789. package/dist/ssr/index.d.ts +0 -98
  790. package/dist/ssr/index.d.ts.map +0 -1
  791. package/dist/ssr/index.js +0 -158
  792. package/dist/ssr/index.js.map +0 -1
  793. package/dist/static-handler.d.ts +0 -50
  794. package/dist/static-handler.d.ts.map +0 -1
  795. package/dist/static-handler.gen.d.ts +0 -5
  796. package/dist/static-handler.gen.d.ts.map +0 -1
  797. package/dist/static-handler.gen.js +0 -5
  798. package/dist/static-handler.gen.js.map +0 -1
  799. package/dist/static-handler.js +0 -29
  800. package/dist/static-handler.js.map +0 -1
  801. package/dist/theme/ThemeProvider.d.ts +0 -20
  802. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  803. package/dist/theme/ThemeProvider.js +0 -240
  804. package/dist/theme/ThemeProvider.js.map +0 -1
  805. package/dist/theme/ThemeScript.d.ts +0 -48
  806. package/dist/theme/ThemeScript.d.ts.map +0 -1
  807. package/dist/theme/ThemeScript.js +0 -13
  808. package/dist/theme/ThemeScript.js.map +0 -1
  809. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  810. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  811. package/dist/theme/__tests__/theme.test.js +0 -103
  812. package/dist/theme/__tests__/theme.test.js.map +0 -1
  813. package/dist/theme/constants.d.ts +0 -29
  814. package/dist/theme/constants.d.ts.map +0 -1
  815. package/dist/theme/constants.js +0 -48
  816. package/dist/theme/constants.js.map +0 -1
  817. package/dist/theme/index.d.ts +0 -31
  818. package/dist/theme/index.d.ts.map +0 -1
  819. package/dist/theme/index.js +0 -36
  820. package/dist/theme/index.js.map +0 -1
  821. package/dist/theme/theme-context.d.ts +0 -40
  822. package/dist/theme/theme-context.d.ts.map +0 -1
  823. package/dist/theme/theme-context.js +0 -60
  824. package/dist/theme/theme-context.js.map +0 -1
  825. package/dist/theme/theme-script.d.ts +0 -27
  826. package/dist/theme/theme-script.d.ts.map +0 -1
  827. package/dist/theme/theme-script.js +0 -147
  828. package/dist/theme/theme-script.js.map +0 -1
  829. package/dist/theme/types.d.ts +0 -163
  830. package/dist/theme/types.d.ts.map +0 -1
  831. package/dist/theme/types.js +0 -11
  832. package/dist/theme/types.js.map +0 -1
  833. package/dist/theme/use-theme.d.ts +0 -12
  834. package/dist/theme/use-theme.d.ts.map +0 -1
  835. package/dist/theme/use-theme.js +0 -40
  836. package/dist/theme/use-theme.js.map +0 -1
  837. package/dist/types.d.ts +0 -1479
  838. package/dist/types.d.ts.map +0 -1
  839. package/dist/types.js +0 -10
  840. package/dist/types.js.map +0 -1
  841. package/dist/urls.d.ts +0 -441
  842. package/dist/urls.d.ts.map +0 -1
  843. package/dist/urls.gen.d.ts +0 -8
  844. package/dist/urls.gen.d.ts.map +0 -1
  845. package/dist/urls.gen.js +0 -8
  846. package/dist/urls.gen.js.map +0 -1
  847. package/dist/urls.js +0 -443
  848. package/dist/urls.js.map +0 -1
  849. package/dist/use-loader.d.ts +0 -127
  850. package/dist/use-loader.d.ts.map +0 -1
  851. package/dist/use-loader.js +0 -237
  852. package/dist/use-loader.js.map +0 -1
  853. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  854. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  855. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  856. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  857. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  858. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  859. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  860. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  861. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  862. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  863. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  864. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  865. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  866. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  867. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  868. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  869. package/dist/vite/ast-handler-extract.d.ts +0 -49
  870. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  871. package/dist/vite/ast-handler-extract.js +0 -249
  872. package/dist/vite/ast-handler-extract.js.map +0 -1
  873. package/dist/vite/expose-action-id.d.ts +0 -19
  874. package/dist/vite/expose-action-id.d.ts.map +0 -1
  875. package/dist/vite/expose-action-id.js +0 -250
  876. package/dist/vite/expose-action-id.js.map +0 -1
  877. package/dist/vite/expose-id-utils.d.ts +0 -69
  878. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  879. package/dist/vite/expose-id-utils.js +0 -289
  880. package/dist/vite/expose-id-utils.js.map +0 -1
  881. package/dist/vite/expose-internal-ids.d.ts +0 -22
  882. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  883. package/dist/vite/expose-internal-ids.js +0 -886
  884. package/dist/vite/expose-internal-ids.js.map +0 -1
  885. package/dist/vite/index.d.ts +0 -149
  886. package/dist/vite/index.d.ts.map +0 -1
  887. package/dist/vite/index.js.map +0 -1
  888. package/dist/vite/index.named-routes.gen.ts +0 -103
  889. package/dist/vite/package-resolution.d.ts +0 -43
  890. package/dist/vite/package-resolution.d.ts.map +0 -1
  891. package/dist/vite/package-resolution.js +0 -112
  892. package/dist/vite/package-resolution.js.map +0 -1
  893. package/dist/vite/virtual-entries.d.ts +0 -25
  894. package/dist/vite/virtual-entries.d.ts.map +0 -1
  895. package/dist/vite/virtual-entries.js +0 -110
  896. package/dist/vite/virtual-entries.js.map +0 -1
  897. package/src/browser/debug-channel.ts +0 -93
@@ -2,10 +2,18 @@
2
2
  * Content Negotiation Utilities
3
3
  *
4
4
  * Pure functions for HTTP Accept header parsing and response type matching.
5
- * Used by createRouter's previewMatch for content negotiation between
5
+ * Used by previewMatch and classifyRequest for content negotiation between
6
6
  * RSC routes and response routes (JSON, text, image, stream, etc.).
7
7
  */
8
8
 
9
+ import type { EntryData } from "../server/context.js";
10
+ import type { CollectedMiddleware } from "./middleware-types.js";
11
+ import { collectRouteMiddleware } from "./middleware.js";
12
+ import { loadManifest } from "./manifest.js";
13
+ import { traverseBack } from "./pattern-matching.js";
14
+ import type { RouteMatchResult } from "./pattern-matching.js";
15
+ import type { RouteSnapshot } from "./route-snapshot.js";
16
+
9
17
  // Response type -> MIME type used for Accept header matching
10
18
  export const RESPONSE_TYPE_MIME: Record<string, string> = {
11
19
  json: "application/json",
@@ -114,3 +122,94 @@ export function pickNegotiateVariant(
114
122
  // No match -- use first candidate as default
115
123
  return candidates[0]!;
116
124
  }
125
+
126
+ /**
127
+ * Result of content negotiation for a route with negotiate variants.
128
+ */
129
+ export interface NegotiationResult {
130
+ /** The winning response type */
131
+ responseType: string;
132
+ /** Handler function for the winning variant */
133
+ handler: Function;
134
+ /** Manifest entry for the winning variant (may differ from primary) */
135
+ manifestEntry: EntryData;
136
+ /** Route middleware for the winning variant */
137
+ routeMiddleware: CollectedMiddleware[];
138
+ /** Always true — negotiation occurred */
139
+ negotiated: true;
140
+ }
141
+
142
+ /**
143
+ * Perform content negotiation for a route with negotiate variants.
144
+ *
145
+ * Returns a NegotiationResult when a response route wins negotiation.
146
+ * Returns null when RSC wins or no negotiation is needed.
147
+ *
148
+ * Shared by previewMatch and classifyRequest to avoid duplicating
149
+ * the candidate-building and variant-loading logic.
150
+ */
151
+ export async function negotiateRoute(
152
+ request: Request,
153
+ pathname: string,
154
+ snapshot: RouteSnapshot,
155
+ ): Promise<NegotiationResult | null> {
156
+ const { matched, manifestEntry, routeMiddleware, responseType } = snapshot;
157
+ if (!matched.negotiateVariants || matched.negotiateVariants.length === 0) {
158
+ return null;
159
+ }
160
+
161
+ const acceptEntries = parseAcceptTypes(request.headers.get("accept") || "");
162
+
163
+ // Build candidate list preserving definition order.
164
+ const variants = matched.negotiateVariants;
165
+ let candidates: Array<{ routeKey: string; responseType: string }>;
166
+ if (responseType) {
167
+ candidates = [...variants, { routeKey: matched.routeKey, responseType }];
168
+ } else {
169
+ const rscCandidate = {
170
+ routeKey: matched.routeKey,
171
+ responseType: RSC_RESPONSE_TYPE,
172
+ };
173
+ candidates = matched.rscFirst
174
+ ? [rscCandidate, ...variants]
175
+ : [...variants, rscCandidate];
176
+ }
177
+
178
+ const variant = pickNegotiateVariant(acceptEntries, candidates);
179
+
180
+ // RSC won negotiation
181
+ if (variant.responseType === RSC_RESPONSE_TYPE) {
182
+ return null;
183
+ }
184
+
185
+ // Primary response-type won — use existing manifest entry and middleware
186
+ if (responseType && variant.routeKey === matched.routeKey) {
187
+ return {
188
+ responseType,
189
+ handler: manifestEntry.handler as Function,
190
+ manifestEntry,
191
+ routeMiddleware,
192
+ negotiated: true,
193
+ };
194
+ }
195
+
196
+ // Different variant won — load its manifest entry
197
+ const negotiateEntry = await loadManifest(
198
+ matched.entry,
199
+ variant.routeKey,
200
+ pathname,
201
+ undefined,
202
+ false,
203
+ );
204
+ const variantMiddleware = collectRouteMiddleware(
205
+ traverseBack(negotiateEntry),
206
+ matched.params,
207
+ );
208
+ return {
209
+ responseType: variant.responseType,
210
+ handler: negotiateEntry.handler as Function,
211
+ manifestEntry: negotiateEntry,
212
+ routeMiddleware: variantMiddleware,
213
+ negotiated: true,
214
+ };
215
+ }
@@ -114,9 +114,9 @@ function createPrerenderPassthroughFn(
114
114
  }
115
115
  if (!isPassthroughRoute) {
116
116
  throw new Error(
117
- "ctx.passthrough() is only available on routes declared with " +
118
- "{ passthrough: true }. Remove the passthrough() call or add " +
119
- "{ passthrough: true } to the Prerender options.",
117
+ "ctx.passthrough() is only available on routes wrapped with " +
118
+ "Passthrough(). Remove the passthrough() call or wrap the " +
119
+ "Prerender definition with Passthrough(prerenderDef, liveHandler).",
120
120
  );
121
121
  }
122
122
  return PRERENDER_PASSTHROUGH;
@@ -166,9 +166,24 @@ export function createReverseFunction(
166
166
  : hrefParams;
167
167
 
168
168
  // Substitute params (strip constraint and optional syntax: :param(a|b)? -> value)
169
+ // Optional params (:param?) are omitted when not provided
169
170
  if (effectiveParams) {
171
+ let hadOmittedOptional = false;
172
+ // First pass: optional params (trailing ?)
170
173
  result = result.replace(
171
- /:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?\??/g,
174
+ /:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?(\?)/g,
175
+ (_, key) => {
176
+ const value = effectiveParams[key];
177
+ if (value === undefined) {
178
+ hadOmittedOptional = true;
179
+ return "";
180
+ }
181
+ return encodeURIComponent(value);
182
+ },
183
+ );
184
+ // Second pass: required params (no trailing ?)
185
+ result = result.replace(
186
+ /:([a-zA-Z_][a-zA-Z0-9_]*)(\([^)]*\))?(?!\?)/g,
172
187
  (_, key) => {
173
188
  const value = effectiveParams[key];
174
189
  if (value === undefined) {
@@ -177,6 +192,13 @@ export function createReverseFunction(
177
192
  return encodeURIComponent(value);
178
193
  },
179
194
  );
195
+ // Clean up slashes only when an optional param was actually omitted,
196
+ // so intentional trailing-slash patterns like "/blog/" are preserved.
197
+ if (hadOmittedOptional) {
198
+ const hadTrailingSlash = pattern.length > 1 && pattern.endsWith("/");
199
+ result = result.replace(/\/\/+/g, "/").replace(/\/+$/, "") || "/";
200
+ if (hadTrailingSlash && !result.endsWith("/")) result += "/";
201
+ }
180
202
  }
181
203
 
182
204
  // Append search params as query string
@@ -207,7 +229,7 @@ export function createHandlerContext<TEnv>(
207
229
  // Get variables from request context - this is the unified context
208
230
  // shared between middleware and route handlers
209
231
  const requestContext = _getRequestContext();
210
- const variables: any = requestContext?.var ?? {};
232
+ const variables: any = requestContext?._variables ?? {};
211
233
 
212
234
  // If route has a search schema, parse URLSearchParams into typed object
213
235
  const searchSchema = routeName ? getSearchSchema(routeName) : undefined;
@@ -250,6 +272,7 @@ export function createHandlerContext<TEnv>(
250
272
  ctx = {
251
273
  params,
252
274
  build: false,
275
+ dev: false,
253
276
  request,
254
277
  searchParams,
255
278
  search: searchSchema ? resolvedSearchParams : {},
@@ -257,7 +280,7 @@ export function createHandlerContext<TEnv>(
257
280
  url,
258
281
  originalUrl: new URL(request.url),
259
282
  env: bindings,
260
- var: variables,
283
+ _variables: variables,
261
284
  get: ((keyOrVar: any) => {
262
285
  // Read-time guard: non-cacheable var inside cache() → throw.
263
286
  // Works for both ContextVar tokens and string keys.
@@ -320,7 +343,7 @@ export function createHandlerContext<TEnv>(
320
343
  *
321
344
  * Returns an InternalHandlerContext where params, pathname, url, searchParams,
322
345
  * search, reverse, and use(handle) work. Request-time properties
323
- * (request, env, headers, cookies, var, get, set, res) throw with a clear error.
346
+ * (request, env, headers, cookies, get, set, res) throw with a clear error.
324
347
  */
325
348
  export function createPrerenderContext<TEnv>(
326
349
  params: Record<string, string>,
@@ -329,6 +352,8 @@ export function createPrerenderContext<TEnv>(
329
352
  routeName?: string,
330
353
  buildVars?: Record<string, any>,
331
354
  isPassthroughRoute?: boolean,
355
+ buildEnv?: TEnv,
356
+ devMode?: boolean,
332
357
  ): InternalHandlerContext<any, TEnv> {
333
358
  const syntheticUrl = new URL(`http://prerender${pathname}`);
334
359
  const variables = buildVars ?? {};
@@ -343,6 +368,7 @@ export function createPrerenderContext<TEnv>(
343
368
  return {
344
369
  params,
345
370
  build: true,
371
+ dev: devMode ?? false,
346
372
  get request(): Request {
347
373
  return throwUnavailable("request");
348
374
  },
@@ -352,11 +378,13 @@ export function createPrerenderContext<TEnv>(
352
378
  url: syntheticUrl,
353
379
  originalUrl: syntheticUrl,
354
380
  get env(): TEnv {
355
- return throwUnavailable("env");
356
- },
357
- get var(): any {
358
- return throwUnavailable("var");
381
+ if (buildEnv !== undefined) return buildEnv;
382
+ throw new Error(
383
+ "ctx.env is not available during pre-rendering. " +
384
+ "Configure buildEnv in your rango() plugin options to enable build-time env access.",
385
+ );
359
386
  },
387
+ _variables: variables,
360
388
  get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
361
389
  set: ((keyOrVar: any, value: any) => {
362
390
  contextSet(variables, keyOrVar, value);
@@ -402,6 +430,8 @@ export function createPrerenderContext<TEnv>(
402
430
  export function createStaticContext<TEnv>(
403
431
  routeMap: Record<string, string>,
404
432
  routeName?: string,
433
+ buildEnv?: TEnv,
434
+ devMode?: boolean,
405
435
  ): InternalHandlerContext<any, TEnv> {
406
436
  const variables: Record<string, any> = {};
407
437
 
@@ -417,6 +447,7 @@ export function createStaticContext<TEnv>(
417
447
  return throwUnavailable("params");
418
448
  },
419
449
  build: true,
450
+ dev: devMode ?? false,
420
451
  get request(): Request {
421
452
  return throwUnavailable("request");
422
453
  },
@@ -436,11 +467,13 @@ export function createStaticContext<TEnv>(
436
467
  return throwUnavailable("originalUrl");
437
468
  },
438
469
  get env(): TEnv {
439
- return throwUnavailable("env");
440
- },
441
- get var(): any {
442
- return throwUnavailable("var");
470
+ if (buildEnv !== undefined) return buildEnv;
471
+ throw new Error(
472
+ "ctx.env is not available in Static() handlers. " +
473
+ "Configure buildEnv in your rango() plugin options to enable build-time env access.",
474
+ );
443
475
  },
476
+ _variables: variables,
444
477
  get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
445
478
  set: ((keyOrVar: any, value: any) => {
446
479
  contextSet(variables, keyOrVar, value);
@@ -11,7 +11,11 @@ import type {
11
11
  InterceptEntry,
12
12
  InterceptSelectorContext,
13
13
  } from "../server/context";
14
- import type { HandlerContext, ResolvedSegment } from "../types";
14
+ import type {
15
+ HandlerContext,
16
+ InternalHandlerContext,
17
+ ResolvedSegment,
18
+ } from "../types";
15
19
  import { evaluateRevalidation } from "./revalidation.js";
16
20
  import { getRequestContext } from "../server/request-context.js";
17
21
  import { executeInterceptMiddleware } from "./middleware.js";
@@ -20,6 +24,7 @@ import { getGlobalRouteMap } from "../route-map-builder.js";
20
24
  import { handleHandlerResult } from "./segment-resolution.js";
21
25
  import type { SegmentResolutionDeps } from "./types.js";
22
26
  import { debugLog } from "./logging.js";
27
+ import { runInsideLoaderScope } from "../server/context.js";
23
28
 
24
29
  /**
25
30
  * Check if an intercept's when conditions are satisfied.
@@ -133,7 +138,7 @@ export async function resolveInterceptEntry<TEnv>(
133
138
  context.request,
134
139
  context.env,
135
140
  params,
136
- context.var as Record<string, any>,
141
+ (context as InternalHandlerContext<any, TEnv>)._variables,
137
142
  requestCtx.res,
138
143
  createReverseFunction(getGlobalRouteMap()),
139
144
  );
@@ -207,7 +212,7 @@ export async function resolveInterceptEntry<TEnv>(
207
212
  loaderIds.push(loader.$$id);
208
213
  loaderPromises.push(
209
214
  deps.wrapLoaderPromise(
210
- context.use(loader),
215
+ runInsideLoaderScope(() => context.use(loader)),
211
216
  parentEntry,
212
217
  segmentId,
213
218
  context.pathname,
@@ -374,7 +379,7 @@ export async function resolveInterceptLoadersOnly<TEnv>(
374
379
  loaderIds.push(loader.$$id);
375
380
  loaderPromises.push(
376
381
  deps.wrapLoaderPromise(
377
- context.use(loader),
382
+ runInsideLoaderScope(() => context.use(loader)),
378
383
  parentEntry,
379
384
  segmentId,
380
385
  context.pathname,
@@ -20,10 +20,11 @@ import type {
20
20
  ErrorInfo,
21
21
  } from "../types";
22
22
  import type { LoaderRevalidationResult, ActionContext } from "./types";
23
- import { isHandle, type Handle } from "../handle.js";
24
- import type { HandleStore } from "../server/handle-store.js";
23
+ import { isHandle, collectHandleData, type Handle } from "../handle.js";
24
+ import type { HandleStore, HandleData } from "../server/handle-store.js";
25
25
  import { getFetchableLoader } from "../server/fetchable-loader-store.js";
26
26
  import { _getRequestContext } from "../server/request-context.js";
27
+ import { isInsideLoaderScope } from "../server/context.js";
27
28
  import { debugLog } from "./logging.js";
28
29
 
29
30
  /**
@@ -242,6 +243,16 @@ function createLoaderExecutor<TEnv>(
242
243
  pendingLoaders.add(loader.$$id);
243
244
 
244
245
  const currentLoaderId = loader.$$id;
246
+ const variables = (ctx as InternalHandlerContext<any, TEnv>)._variables;
247
+
248
+ // Capture whether this loader is being started from a DSL loader scope
249
+ // (runInsideLoaderScope in fresh.ts). Handler-invoked loaders are NOT
250
+ // inside loader scope. This determines whether rendered() is allowed.
251
+ const isDslLoader = isInsideLoaderScope();
252
+
253
+ let renderedResolved = false;
254
+ let renderedPromise: Promise<void> | null = null;
255
+
245
256
  // Loader functions are always fresh (never cached), so they get an
246
257
  // unguarded get that bypasses non-cacheable read guards. This applies
247
258
  // to ALL loaders — DSL and handler-called — because the loader
@@ -256,16 +267,76 @@ function createLoaderExecutor<TEnv>(
256
267
  pathname: ctx.pathname,
257
268
  url: ctx.url,
258
269
  env: ctx.env,
259
- var: ctx.var,
260
- get: ((keyOrVar: any) => contextGet(ctx.var, keyOrVar)) as typeof ctx.get,
261
- use: <TDep, TDepParams = any>(
262
- dep: LoaderDefinition<TDep, TDepParams>,
263
- ): Promise<TDep> => {
264
- return useLoader(dep, currentLoaderId);
265
- },
270
+ get: ((keyOrVar: any) =>
271
+ contextGet(variables, keyOrVar)) as typeof ctx.get,
272
+ use: ((item: LoaderDefinition<any, any> | Handle<any, any>) => {
273
+ if (isHandle(item)) {
274
+ if (!renderedResolved) {
275
+ throw new Error(
276
+ `ctx.use(handle) in a loader requires "await ctx.rendered()" first. ` +
277
+ `Handle "${item.$$id}" cannot be read until the render tree has settled.`,
278
+ );
279
+ }
280
+ const reqCtx = reqCtxRef ?? _getRequestContext();
281
+ if (!reqCtx) {
282
+ throw new Error(
283
+ `ctx.use(handle) failed: request context not available.`,
284
+ );
285
+ }
286
+ const segmentOrder = reqCtx._renderBarrierSegmentOrder ?? [];
287
+ const snapshot = buildHandleSnapshot(
288
+ reqCtx._handleStore,
289
+ segmentOrder,
290
+ );
291
+ return collectHandleData(item, snapshot, segmentOrder);
292
+ }
293
+
294
+ // Loader case
295
+ return useLoader(item as LoaderDefinition<any, any>, currentLoaderId);
296
+ }) as LoaderContext["use"],
266
297
  method: "GET",
267
298
  body: undefined,
268
299
  reverse: ctx.reverse as LoaderContext["reverse"],
300
+ rendered: (): Promise<void> => {
301
+ // Guard: only DSL loaders may use rendered()
302
+ if (!isDslLoader) {
303
+ throw new Error(
304
+ `ctx.rendered() is only available in DSL loaders (registered via loader() in urls()). ` +
305
+ `Handler-invoked loaders (ctx.use(Loader) inside a handler) cannot use rendered().`,
306
+ );
307
+ }
308
+
309
+ // Guard: reject streaming trees
310
+ const reqCtx = reqCtxRef ?? _getRequestContext();
311
+ if (reqCtx?._treeHasStreaming) {
312
+ throw new Error(
313
+ `ctx.rendered() is not supported when the matched route tree uses loading(). ` +
314
+ `Streaming handlers may not have settled when rendered() resolves. ` +
315
+ `Remove loading() from the route tree or restructure to avoid rendered().`,
316
+ );
317
+ }
318
+
319
+ if (renderedPromise) return renderedPromise;
320
+
321
+ if (!reqCtx) {
322
+ throw new Error(
323
+ `ctx.rendered() failed: request context not available.`,
324
+ );
325
+ }
326
+
327
+ // Register this loader as waiting for the barrier so that
328
+ // setupLoaderAccess can detect deadlocks when a handler
329
+ // tries to await the same loader via ctx.use().
330
+ if (!reqCtx._renderBarrierWaiters) {
331
+ reqCtx._renderBarrierWaiters = new Set();
332
+ }
333
+ reqCtx._renderBarrierWaiters.add(currentLoaderId);
334
+
335
+ renderedPromise = reqCtx._renderBarrier.then(() => {
336
+ renderedResolved = true;
337
+ });
338
+ return renderedPromise;
339
+ },
269
340
  };
270
341
 
271
342
  const doneLoader = track(`loader:${loader.$$id}`, 2);
@@ -283,6 +354,25 @@ function createLoaderExecutor<TEnv>(
283
354
  return useLoader;
284
355
  }
285
356
 
357
+ /**
358
+ * Build a HandleData snapshot from the HandleStore using segment ordering.
359
+ * Reads data directly from the store for each segment in order.
360
+ */
361
+ function buildHandleSnapshot(
362
+ handleStore: HandleStore,
363
+ segmentOrder: string[],
364
+ ): HandleData {
365
+ const data: HandleData = {};
366
+ for (const segmentId of segmentOrder) {
367
+ const segData = handleStore.getDataForSegment(segmentId);
368
+ for (const handleName in segData) {
369
+ if (!data[handleName]) data[handleName] = {};
370
+ data[handleName][segmentId] = segData[handleName];
371
+ }
372
+ }
373
+ return data;
374
+ }
375
+
286
376
  /**
287
377
  * Set up the use() method on handler context to access loaders and handles.
288
378
  *
@@ -333,7 +423,22 @@ export function setupLoaderAccess<TEnv>(
333
423
  };
334
424
  }
335
425
 
336
- return useLoader(item as LoaderDefinition<any, any>, null);
426
+ // Deadlock guard: if the loader has called rendered(), it is waiting
427
+ // for segment resolution to complete. A handler awaiting that loader
428
+ // blocks segment resolution, creating a deadlock.
429
+ const loader = item as LoaderDefinition<any, any>;
430
+ if (loaderPromises.has(loader.$$id)) {
431
+ const reqCtx = _getRequestContext();
432
+ if (reqCtx?._renderBarrierWaiters?.has(loader.$$id)) {
433
+ throw new Error(
434
+ `Deadlock: handler is awaiting loader "${loader.$$id}" which called ctx.rendered(). ` +
435
+ `The loader is waiting for segment resolution, but the handler blocks resolution. ` +
436
+ `Move the data dependency to a loader-to-loader pattern instead.`,
437
+ );
438
+ }
439
+ }
440
+
441
+ return useLoader(loader, null);
337
442
  }) as typeof ctx.use;
338
443
  }
339
444