@rangojs/router 0.0.0-experimental.21 → 0.0.0-experimental.21efdd86

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 (961) hide show
  1. package/AGENTS.md +4 -0
  2. package/README.md +122 -30
  3. package/dist/bin/rango.js +138 -50
  4. package/dist/vite/index.js +602 -309
  5. package/package.json +16 -15
  6. package/skills/breadcrumbs/SKILL.md +250 -0
  7. package/skills/cache-guide/SKILL.md +32 -0
  8. package/skills/caching/SKILL.md +49 -8
  9. package/skills/document-cache/SKILL.md +2 -2
  10. package/skills/hooks/SKILL.md +33 -31
  11. package/skills/host-router/SKILL.md +218 -0
  12. package/skills/links/SKILL.md +3 -1
  13. package/skills/loader/SKILL.md +72 -22
  14. package/skills/middleware/SKILL.md +2 -0
  15. package/skills/parallel/SKILL.md +126 -0
  16. package/skills/prerender/SKILL.md +112 -70
  17. package/skills/rango/SKILL.md +0 -1
  18. package/skills/route/SKILL.md +34 -4
  19. package/skills/router-setup/SKILL.md +95 -5
  20. package/skills/typesafety/SKILL.md +35 -23
  21. package/src/__internal.ts +92 -0
  22. package/src/browser/app-version.ts +14 -0
  23. package/src/browser/event-controller.ts +5 -0
  24. package/src/browser/link-interceptor.ts +4 -0
  25. package/src/browser/navigation-bridge.ts +104 -14
  26. package/src/browser/navigation-client.ts +126 -44
  27. package/src/browser/navigation-store.ts +43 -8
  28. package/src/browser/navigation-transaction.ts +11 -9
  29. package/src/browser/partial-update.ts +80 -15
  30. package/src/browser/prefetch/cache.ts +166 -27
  31. package/src/browser/prefetch/fetch.ts +52 -39
  32. package/src/browser/prefetch/policy.ts +6 -0
  33. package/src/browser/prefetch/queue.ts +92 -20
  34. package/src/browser/prefetch/resource-ready.ts +77 -0
  35. package/src/browser/react/Link.tsx +70 -14
  36. package/src/browser/react/NavigationProvider.tsx +40 -4
  37. package/src/browser/react/context.ts +7 -2
  38. package/src/browser/react/use-handle.ts +9 -58
  39. package/src/browser/react/use-router.ts +21 -8
  40. package/src/browser/rsc-router.tsx +143 -60
  41. package/src/browser/scroll-restoration.ts +41 -42
  42. package/src/browser/segment-reconciler.ts +6 -1
  43. package/src/browser/server-action-bridge.ts +8 -6
  44. package/src/browser/types.ts +60 -5
  45. package/src/build/generate-manifest.ts +6 -6
  46. package/src/build/generate-route-types.ts +3 -0
  47. package/src/build/route-trie.ts +19 -3
  48. package/src/build/route-types/include-resolution.ts +8 -1
  49. package/src/build/route-types/router-processing.ts +223 -74
  50. package/src/build/route-types/scan-filter.ts +8 -1
  51. package/src/cache/cache-runtime.ts +15 -11
  52. package/src/cache/cache-scope.ts +48 -7
  53. package/src/cache/cf/cf-cache-store.ts +453 -11
  54. package/src/cache/cf/index.ts +5 -1
  55. package/src/cache/document-cache.ts +17 -7
  56. package/src/cache/index.ts +1 -0
  57. package/src/cache/taint.ts +55 -0
  58. package/src/client.rsc.tsx +2 -1
  59. package/src/client.tsx +3 -102
  60. package/src/context-var.ts +72 -2
  61. package/src/debug.ts +2 -2
  62. package/src/handle.ts +40 -0
  63. package/src/handles/breadcrumbs.ts +66 -0
  64. package/src/handles/index.ts +1 -0
  65. package/src/host/index.ts +0 -3
  66. package/src/index.rsc.ts +6 -36
  67. package/src/index.ts +40 -66
  68. package/src/prerender/store.ts +5 -4
  69. package/src/prerender.ts +138 -77
  70. package/src/reverse.ts +22 -1
  71. package/src/route-definition/dsl-helpers.ts +73 -25
  72. package/src/route-definition/helpers-types.ts +10 -6
  73. package/src/route-definition/index.ts +3 -3
  74. package/src/route-definition/redirect.ts +11 -3
  75. package/src/route-definition/resolve-handler-use.ts +149 -0
  76. package/src/route-map-builder.ts +7 -1
  77. package/src/route-types.ts +11 -0
  78. package/src/router/content-negotiation.ts +100 -1
  79. package/src/router/find-match.ts +4 -2
  80. package/src/router/handler-context.ts +108 -25
  81. package/src/router/intercept-resolution.ts +11 -4
  82. package/src/router/lazy-includes.ts +4 -1
  83. package/src/router/loader-resolution.ts +123 -11
  84. package/src/router/logging.ts +5 -2
  85. package/src/router/manifest.ts +9 -3
  86. package/src/router/match-api.ts +125 -190
  87. package/src/router/match-middleware/background-revalidation.ts +30 -2
  88. package/src/router/match-middleware/cache-lookup.ts +88 -16
  89. package/src/router/match-middleware/cache-store.ts +53 -10
  90. package/src/router/match-middleware/intercept-resolution.ts +9 -7
  91. package/src/router/match-middleware/segment-resolution.ts +61 -5
  92. package/src/router/match-result.ts +22 -15
  93. package/src/router/metrics.ts +238 -13
  94. package/src/router/middleware-types.ts +53 -12
  95. package/src/router/middleware.ts +172 -85
  96. package/src/router/navigation-snapshot.ts +182 -0
  97. package/src/router/pattern-matching.ts +20 -5
  98. package/src/router/prerender-match.ts +114 -10
  99. package/src/router/preview-match.ts +30 -102
  100. package/src/router/request-classification.ts +310 -0
  101. package/src/router/revalidation.ts +27 -7
  102. package/src/router/route-snapshot.ts +245 -0
  103. package/src/router/router-context.ts +6 -1
  104. package/src/router/router-interfaces.ts +50 -5
  105. package/src/router/router-options.ts +50 -19
  106. package/src/router/segment-resolution/fresh.ts +210 -19
  107. package/src/router/segment-resolution/helpers.ts +30 -25
  108. package/src/router/segment-resolution/loader-cache.ts +1 -0
  109. package/src/router/segment-resolution/revalidation.ts +448 -301
  110. package/src/router/segment-wrappers.ts +2 -0
  111. package/src/router/trie-matching.ts +20 -2
  112. package/src/router/types.ts +1 -0
  113. package/src/router.ts +88 -15
  114. package/src/rsc/handler.ts +546 -359
  115. package/src/rsc/index.ts +0 -20
  116. package/src/rsc/manifest-init.ts +5 -1
  117. package/src/rsc/progressive-enhancement.ts +25 -8
  118. package/src/rsc/rsc-rendering.ts +35 -43
  119. package/src/rsc/server-action.ts +16 -10
  120. package/src/rsc/ssr-setup.ts +128 -0
  121. package/src/rsc/types.ts +10 -1
  122. package/src/search-params.ts +16 -13
  123. package/src/segment-system.tsx +140 -4
  124. package/src/server/context.ts +148 -16
  125. package/src/server/loader-registry.ts +9 -8
  126. package/src/server/request-context.ts +186 -29
  127. package/src/server.ts +6 -0
  128. package/src/ssr/index.tsx +4 -0
  129. package/src/static-handler.ts +18 -6
  130. package/src/theme/index.ts +4 -13
  131. package/src/types/cache-types.ts +4 -4
  132. package/src/types/handler-context.ts +149 -49
  133. package/src/types/loader-types.ts +36 -9
  134. package/src/types/route-config.ts +17 -8
  135. package/src/types/route-entry.ts +8 -1
  136. package/src/types/segments.ts +2 -5
  137. package/src/urls/path-helper-types.ts +9 -2
  138. package/src/urls/path-helper.ts +48 -13
  139. package/src/urls/pattern-types.ts +12 -0
  140. package/src/urls/response-types.ts +16 -6
  141. package/src/use-loader.tsx +73 -4
  142. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  143. package/src/vite/discovery/discover-routers.ts +7 -4
  144. package/src/vite/discovery/prerender-collection.ts +14 -1
  145. package/src/vite/discovery/state.ts +13 -6
  146. package/src/vite/index.ts +8 -3
  147. package/src/vite/plugin-types.ts +51 -79
  148. package/src/vite/plugins/expose-action-id.ts +1 -3
  149. package/src/vite/plugins/performance-tracks.ts +88 -0
  150. package/src/vite/plugins/refresh-cmd.ts +127 -0
  151. package/src/vite/plugins/version-plugin.ts +13 -1
  152. package/src/vite/rango.ts +163 -211
  153. package/src/vite/router-discovery.ts +178 -45
  154. package/src/vite/utils/banner.ts +3 -3
  155. package/src/vite/utils/prerender-utils.ts +18 -0
  156. package/src/vite/utils/shared-utils.ts +3 -2
  157. package/dist/__internal.d.ts +0 -83
  158. package/dist/__internal.d.ts.map +0 -1
  159. package/dist/__internal.js +0 -19
  160. package/dist/__internal.js.map +0 -1
  161. package/dist/__mocks__/version.d.ts +0 -7
  162. package/dist/__mocks__/version.d.ts.map +0 -1
  163. package/dist/__mocks__/version.js +0 -7
  164. package/dist/__mocks__/version.js.map +0 -1
  165. package/dist/__tests__/client-href.test.d.ts +0 -2
  166. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  167. package/dist/__tests__/client-href.test.js +0 -74
  168. package/dist/__tests__/client-href.test.js.map +0 -1
  169. package/dist/__tests__/component-utils.test.d.ts +0 -2
  170. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  171. package/dist/__tests__/component-utils.test.js +0 -51
  172. package/dist/__tests__/component-utils.test.js.map +0 -1
  173. package/dist/__tests__/event-controller.test.d.ts +0 -2
  174. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  175. package/dist/__tests__/event-controller.test.js +0 -538
  176. package/dist/__tests__/event-controller.test.js.map +0 -1
  177. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  178. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  179. package/dist/__tests__/helpers/route-tree.js +0 -374
  180. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  181. package/dist/__tests__/match-result.test.d.ts +0 -2
  182. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  183. package/dist/__tests__/match-result.test.js +0 -154
  184. package/dist/__tests__/match-result.test.js.map +0 -1
  185. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  186. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  187. package/dist/__tests__/navigation-store.test.js +0 -440
  188. package/dist/__tests__/navigation-store.test.js.map +0 -1
  189. package/dist/__tests__/partial-update.test.d.ts +0 -2
  190. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  191. package/dist/__tests__/partial-update.test.js +0 -1009
  192. package/dist/__tests__/partial-update.test.js.map +0 -1
  193. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  194. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  195. package/dist/__tests__/reverse-types.test.js +0 -656
  196. package/dist/__tests__/reverse-types.test.js.map +0 -1
  197. package/dist/__tests__/route-definition.test.d.ts +0 -2
  198. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  199. package/dist/__tests__/route-definition.test.js +0 -55
  200. package/dist/__tests__/route-definition.test.js.map +0 -1
  201. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  202. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  203. package/dist/__tests__/router-helpers.test.js +0 -377
  204. package/dist/__tests__/router-helpers.test.js.map +0 -1
  205. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  206. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  207. package/dist/__tests__/router-integration-2.test.js +0 -426
  208. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  209. package/dist/__tests__/router-integration.test.d.ts +0 -2
  210. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  211. package/dist/__tests__/router-integration.test.js +0 -1051
  212. package/dist/__tests__/router-integration.test.js.map +0 -1
  213. package/dist/__tests__/search-params.test.d.ts +0 -5
  214. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  215. package/dist/__tests__/search-params.test.js +0 -306
  216. package/dist/__tests__/search-params.test.js.map +0 -1
  217. package/dist/__tests__/segment-system.test.d.ts +0 -2
  218. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  219. package/dist/__tests__/segment-system.test.js +0 -627
  220. package/dist/__tests__/segment-system.test.js.map +0 -1
  221. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  222. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  223. package/dist/__tests__/static-handler-types.test.js +0 -63
  224. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  225. package/dist/__tests__/urls.test.d.ts +0 -2
  226. package/dist/__tests__/urls.test.d.ts.map +0 -1
  227. package/dist/__tests__/urls.test.js +0 -421
  228. package/dist/__tests__/urls.test.js.map +0 -1
  229. package/dist/__tests__/use-mount.test.d.ts +0 -2
  230. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  231. package/dist/__tests__/use-mount.test.js +0 -35
  232. package/dist/__tests__/use-mount.test.js.map +0 -1
  233. package/dist/bin/rango.d.ts +0 -2
  234. package/dist/bin/rango.d.ts.map +0 -1
  235. package/dist/bin/rango.js.map +0 -1
  236. package/dist/browser/event-controller.d.ts +0 -191
  237. package/dist/browser/event-controller.d.ts.map +0 -1
  238. package/dist/browser/event-controller.js +0 -559
  239. package/dist/browser/event-controller.js.map +0 -1
  240. package/dist/browser/index.d.ts +0 -2
  241. package/dist/browser/index.d.ts.map +0 -1
  242. package/dist/browser/index.js +0 -14
  243. package/dist/browser/index.js.map +0 -1
  244. package/dist/browser/link-interceptor.d.ts +0 -38
  245. package/dist/browser/link-interceptor.d.ts.map +0 -1
  246. package/dist/browser/link-interceptor.js +0 -99
  247. package/dist/browser/link-interceptor.js.map +0 -1
  248. package/dist/browser/logging.d.ts +0 -10
  249. package/dist/browser/logging.d.ts.map +0 -1
  250. package/dist/browser/logging.js +0 -29
  251. package/dist/browser/logging.js.map +0 -1
  252. package/dist/browser/lru-cache.d.ts +0 -17
  253. package/dist/browser/lru-cache.d.ts.map +0 -1
  254. package/dist/browser/lru-cache.js +0 -50
  255. package/dist/browser/lru-cache.js.map +0 -1
  256. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  257. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  258. package/dist/browser/merge-segment-loaders.js +0 -102
  259. package/dist/browser/merge-segment-loaders.js.map +0 -1
  260. package/dist/browser/navigation-bridge.d.ts +0 -102
  261. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  262. package/dist/browser/navigation-bridge.js +0 -708
  263. package/dist/browser/navigation-bridge.js.map +0 -1
  264. package/dist/browser/navigation-client.d.ts +0 -25
  265. package/dist/browser/navigation-client.d.ts.map +0 -1
  266. package/dist/browser/navigation-client.js +0 -157
  267. package/dist/browser/navigation-client.js.map +0 -1
  268. package/dist/browser/navigation-store.d.ts +0 -101
  269. package/dist/browser/navigation-store.d.ts.map +0 -1
  270. package/dist/browser/navigation-store.js +0 -625
  271. package/dist/browser/navigation-store.js.map +0 -1
  272. package/dist/browser/partial-update.d.ts +0 -75
  273. package/dist/browser/partial-update.d.ts.map +0 -1
  274. package/dist/browser/partial-update.js +0 -426
  275. package/dist/browser/partial-update.js.map +0 -1
  276. package/dist/browser/react/Link.d.ts +0 -86
  277. package/dist/browser/react/Link.d.ts.map +0 -1
  278. package/dist/browser/react/Link.js +0 -128
  279. package/dist/browser/react/Link.js.map +0 -1
  280. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  281. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  282. package/dist/browser/react/NavigationProvider.js +0 -216
  283. package/dist/browser/react/NavigationProvider.js.map +0 -1
  284. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  285. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  286. package/dist/browser/react/ScrollRestoration.js +0 -57
  287. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  288. package/dist/browser/react/context.d.ts +0 -46
  289. package/dist/browser/react/context.d.ts.map +0 -1
  290. package/dist/browser/react/context.js +0 -10
  291. package/dist/browser/react/context.js.map +0 -1
  292. package/dist/browser/react/index.d.ts +0 -11
  293. package/dist/browser/react/index.d.ts.map +0 -1
  294. package/dist/browser/react/index.js +0 -22
  295. package/dist/browser/react/index.js.map +0 -1
  296. package/dist/browser/react/location-state-shared.d.ts +0 -63
  297. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  298. package/dist/browser/react/location-state-shared.js +0 -81
  299. package/dist/browser/react/location-state-shared.js.map +0 -1
  300. package/dist/browser/react/location-state.d.ts +0 -23
  301. package/dist/browser/react/location-state.d.ts.map +0 -1
  302. package/dist/browser/react/location-state.js +0 -29
  303. package/dist/browser/react/location-state.js.map +0 -1
  304. package/dist/browser/react/mount-context.d.ts +0 -24
  305. package/dist/browser/react/mount-context.d.ts.map +0 -1
  306. package/dist/browser/react/mount-context.js +0 -24
  307. package/dist/browser/react/mount-context.js.map +0 -1
  308. package/dist/browser/react/use-action.d.ts +0 -64
  309. package/dist/browser/react/use-action.d.ts.map +0 -1
  310. package/dist/browser/react/use-action.js +0 -134
  311. package/dist/browser/react/use-action.js.map +0 -1
  312. package/dist/browser/react/use-client-cache.d.ts +0 -41
  313. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  314. package/dist/browser/react/use-client-cache.js +0 -39
  315. package/dist/browser/react/use-client-cache.js.map +0 -1
  316. package/dist/browser/react/use-handle.d.ts +0 -31
  317. package/dist/browser/react/use-handle.d.ts.map +0 -1
  318. package/dist/browser/react/use-handle.js +0 -144
  319. package/dist/browser/react/use-handle.js.map +0 -1
  320. package/dist/browser/react/use-href.d.ts +0 -33
  321. package/dist/browser/react/use-href.d.ts.map +0 -1
  322. package/dist/browser/react/use-href.js +0 -39
  323. package/dist/browser/react/use-href.js.map +0 -1
  324. package/dist/browser/react/use-link-status.d.ts +0 -37
  325. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  326. package/dist/browser/react/use-link-status.js +0 -99
  327. package/dist/browser/react/use-link-status.js.map +0 -1
  328. package/dist/browser/react/use-mount.d.ts +0 -25
  329. package/dist/browser/react/use-mount.d.ts.map +0 -1
  330. package/dist/browser/react/use-mount.js +0 -30
  331. package/dist/browser/react/use-mount.js.map +0 -1
  332. package/dist/browser/react/use-navigation.d.ts +0 -27
  333. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  334. package/dist/browser/react/use-navigation.js +0 -87
  335. package/dist/browser/react/use-navigation.js.map +0 -1
  336. package/dist/browser/react/use-segments.d.ts +0 -38
  337. package/dist/browser/react/use-segments.d.ts.map +0 -1
  338. package/dist/browser/react/use-segments.js +0 -130
  339. package/dist/browser/react/use-segments.js.map +0 -1
  340. package/dist/browser/request-controller.d.ts +0 -26
  341. package/dist/browser/request-controller.d.ts.map +0 -1
  342. package/dist/browser/request-controller.js +0 -147
  343. package/dist/browser/request-controller.js.map +0 -1
  344. package/dist/browser/rsc-router.d.ts +0 -129
  345. package/dist/browser/rsc-router.d.ts.map +0 -1
  346. package/dist/browser/rsc-router.js +0 -195
  347. package/dist/browser/rsc-router.js.map +0 -1
  348. package/dist/browser/scroll-restoration.d.ts +0 -93
  349. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  350. package/dist/browser/scroll-restoration.js +0 -321
  351. package/dist/browser/scroll-restoration.js.map +0 -1
  352. package/dist/browser/segment-structure-assert.d.ts +0 -17
  353. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  354. package/dist/browser/segment-structure-assert.js +0 -59
  355. package/dist/browser/segment-structure-assert.js.map +0 -1
  356. package/dist/browser/server-action-bridge.d.ts +0 -26
  357. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  358. package/dist/browser/server-action-bridge.js +0 -668
  359. package/dist/browser/server-action-bridge.js.map +0 -1
  360. package/dist/browser/shallow.d.ts +0 -12
  361. package/dist/browser/shallow.d.ts.map +0 -1
  362. package/dist/browser/shallow.js +0 -34
  363. package/dist/browser/shallow.js.map +0 -1
  364. package/dist/browser/types.d.ts +0 -369
  365. package/dist/browser/types.d.ts.map +0 -1
  366. package/dist/browser/types.js +0 -2
  367. package/dist/browser/types.js.map +0 -1
  368. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  369. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  370. package/dist/build/__tests__/generate-cli.test.js +0 -237
  371. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  372. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  373. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  374. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  375. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  376. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  377. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  378. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  379. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  380. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  381. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  382. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  383. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  384. package/dist/build/generate-manifest.d.ts +0 -81
  385. package/dist/build/generate-manifest.d.ts.map +0 -1
  386. package/dist/build/generate-manifest.js +0 -276
  387. package/dist/build/generate-manifest.js.map +0 -1
  388. package/dist/build/generate-route-types.d.ts +0 -115
  389. package/dist/build/generate-route-types.d.ts.map +0 -1
  390. package/dist/build/generate-route-types.js +0 -740
  391. package/dist/build/generate-route-types.js.map +0 -1
  392. package/dist/build/index.d.ts +0 -21
  393. package/dist/build/index.d.ts.map +0 -1
  394. package/dist/build/index.js +0 -21
  395. package/dist/build/index.js.map +0 -1
  396. package/dist/build/route-trie.d.ts +0 -71
  397. package/dist/build/route-trie.d.ts.map +0 -1
  398. package/dist/build/route-trie.js +0 -175
  399. package/dist/build/route-trie.js.map +0 -1
  400. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  401. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  402. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  403. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  404. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  405. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  406. package/dist/cache/__tests__/document-cache.test.js +0 -345
  407. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  408. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  409. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  410. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  411. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  412. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  413. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  414. package/dist/cache/__tests__/memory-store.test.js +0 -367
  415. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  416. package/dist/cache/cache-scope.d.ts +0 -102
  417. package/dist/cache/cache-scope.d.ts.map +0 -1
  418. package/dist/cache/cache-scope.js +0 -440
  419. package/dist/cache/cache-scope.js.map +0 -1
  420. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  421. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  422. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  423. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  424. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  425. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  426. package/dist/cache/cf/cf-cache-store.js +0 -242
  427. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  428. package/dist/cache/cf/index.d.ts +0 -14
  429. package/dist/cache/cf/index.d.ts.map +0 -1
  430. package/dist/cache/cf/index.js +0 -17
  431. package/dist/cache/cf/index.js.map +0 -1
  432. package/dist/cache/document-cache.d.ts +0 -64
  433. package/dist/cache/document-cache.d.ts.map +0 -1
  434. package/dist/cache/document-cache.js +0 -228
  435. package/dist/cache/document-cache.js.map +0 -1
  436. package/dist/cache/index.d.ts +0 -19
  437. package/dist/cache/index.d.ts.map +0 -1
  438. package/dist/cache/index.js +0 -21
  439. package/dist/cache/index.js.map +0 -1
  440. package/dist/cache/memory-segment-store.d.ts +0 -110
  441. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  442. package/dist/cache/memory-segment-store.js +0 -117
  443. package/dist/cache/memory-segment-store.js.map +0 -1
  444. package/dist/cache/memory-store.d.ts +0 -41
  445. package/dist/cache/memory-store.d.ts.map +0 -1
  446. package/dist/cache/memory-store.js +0 -191
  447. package/dist/cache/memory-store.js.map +0 -1
  448. package/dist/cache/types.d.ts +0 -317
  449. package/dist/cache/types.d.ts.map +0 -1
  450. package/dist/cache/types.js +0 -12
  451. package/dist/cache/types.js.map +0 -1
  452. package/dist/client.d.ts +0 -248
  453. package/dist/client.d.ts.map +0 -1
  454. package/dist/client.js +0 -367
  455. package/dist/client.js.map +0 -1
  456. package/dist/client.rsc.d.ts +0 -26
  457. package/dist/client.rsc.d.ts.map +0 -1
  458. package/dist/client.rsc.js +0 -46
  459. package/dist/client.rsc.js.map +0 -1
  460. package/dist/component-utils.d.ts +0 -36
  461. package/dist/component-utils.d.ts.map +0 -1
  462. package/dist/component-utils.js +0 -61
  463. package/dist/component-utils.js.map +0 -1
  464. package/dist/components/DefaultDocument.d.ts +0 -13
  465. package/dist/components/DefaultDocument.d.ts.map +0 -1
  466. package/dist/components/DefaultDocument.js +0 -15
  467. package/dist/components/DefaultDocument.js.map +0 -1
  468. package/dist/debug.d.ts +0 -58
  469. package/dist/debug.d.ts.map +0 -1
  470. package/dist/debug.js +0 -157
  471. package/dist/debug.js.map +0 -1
  472. package/dist/default-error-boundary.d.ts +0 -11
  473. package/dist/default-error-boundary.d.ts.map +0 -1
  474. package/dist/default-error-boundary.js +0 -45
  475. package/dist/default-error-boundary.js.map +0 -1
  476. package/dist/deps/browser.d.ts +0 -2
  477. package/dist/deps/browser.d.ts.map +0 -1
  478. package/dist/deps/browser.js +0 -3
  479. package/dist/deps/browser.js.map +0 -1
  480. package/dist/deps/html-stream-client.d.ts +0 -2
  481. package/dist/deps/html-stream-client.d.ts.map +0 -1
  482. package/dist/deps/html-stream-client.js +0 -3
  483. package/dist/deps/html-stream-client.js.map +0 -1
  484. package/dist/deps/html-stream-server.d.ts +0 -2
  485. package/dist/deps/html-stream-server.d.ts.map +0 -1
  486. package/dist/deps/html-stream-server.js +0 -3
  487. package/dist/deps/html-stream-server.js.map +0 -1
  488. package/dist/deps/rsc.d.ts +0 -2
  489. package/dist/deps/rsc.d.ts.map +0 -1
  490. package/dist/deps/rsc.js +0 -4
  491. package/dist/deps/rsc.js.map +0 -1
  492. package/dist/deps/ssr.d.ts +0 -2
  493. package/dist/deps/ssr.d.ts.map +0 -1
  494. package/dist/deps/ssr.js +0 -3
  495. package/dist/deps/ssr.js.map +0 -1
  496. package/dist/errors.d.ts +0 -174
  497. package/dist/errors.d.ts.map +0 -1
  498. package/dist/errors.js +0 -241
  499. package/dist/errors.js.map +0 -1
  500. package/dist/handle.d.ts +0 -78
  501. package/dist/handle.d.ts.map +0 -1
  502. package/dist/handle.js +0 -82
  503. package/dist/handle.js.map +0 -1
  504. package/dist/handles/MetaTags.d.ts +0 -14
  505. package/dist/handles/MetaTags.d.ts.map +0 -1
  506. package/dist/handles/MetaTags.js +0 -136
  507. package/dist/handles/MetaTags.js.map +0 -1
  508. package/dist/handles/index.d.ts +0 -6
  509. package/dist/handles/index.d.ts.map +0 -1
  510. package/dist/handles/index.js +0 -6
  511. package/dist/handles/index.js.map +0 -1
  512. package/dist/handles/meta.d.ts +0 -39
  513. package/dist/handles/meta.d.ts.map +0 -1
  514. package/dist/handles/meta.js +0 -202
  515. package/dist/handles/meta.js.map +0 -1
  516. package/dist/host/__tests__/errors.test.d.ts +0 -2
  517. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  518. package/dist/host/__tests__/errors.test.js +0 -76
  519. package/dist/host/__tests__/errors.test.js.map +0 -1
  520. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  521. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  522. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  523. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  524. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  525. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  526. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  527. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  528. package/dist/host/__tests__/router.test.d.ts +0 -2
  529. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  530. package/dist/host/__tests__/router.test.js +0 -241
  531. package/dist/host/__tests__/router.test.js.map +0 -1
  532. package/dist/host/__tests__/testing.test.d.ts +0 -2
  533. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  534. package/dist/host/__tests__/testing.test.js +0 -64
  535. package/dist/host/__tests__/testing.test.js.map +0 -1
  536. package/dist/host/__tests__/utils.test.d.ts +0 -2
  537. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  538. package/dist/host/__tests__/utils.test.js +0 -29
  539. package/dist/host/__tests__/utils.test.js.map +0 -1
  540. package/dist/host/cookie-handler.d.ts +0 -34
  541. package/dist/host/cookie-handler.d.ts.map +0 -1
  542. package/dist/host/cookie-handler.js +0 -124
  543. package/dist/host/cookie-handler.js.map +0 -1
  544. package/dist/host/errors.d.ts +0 -56
  545. package/dist/host/errors.d.ts.map +0 -1
  546. package/dist/host/errors.js +0 -79
  547. package/dist/host/errors.js.map +0 -1
  548. package/dist/host/index.d.ts +0 -29
  549. package/dist/host/index.d.ts.map +0 -1
  550. package/dist/host/index.js +0 -32
  551. package/dist/host/index.js.map +0 -1
  552. package/dist/host/pattern-matcher.d.ts +0 -36
  553. package/dist/host/pattern-matcher.d.ts.map +0 -1
  554. package/dist/host/pattern-matcher.js +0 -172
  555. package/dist/host/pattern-matcher.js.map +0 -1
  556. package/dist/host/router.d.ts +0 -26
  557. package/dist/host/router.d.ts.map +0 -1
  558. package/dist/host/router.js +0 -218
  559. package/dist/host/router.js.map +0 -1
  560. package/dist/host/testing.d.ts +0 -36
  561. package/dist/host/testing.d.ts.map +0 -1
  562. package/dist/host/testing.js +0 -55
  563. package/dist/host/testing.js.map +0 -1
  564. package/dist/host/types.d.ts +0 -115
  565. package/dist/host/types.d.ts.map +0 -1
  566. package/dist/host/types.js +0 -7
  567. package/dist/host/types.js.map +0 -1
  568. package/dist/host/utils.d.ts +0 -21
  569. package/dist/host/utils.d.ts.map +0 -1
  570. package/dist/host/utils.js +0 -23
  571. package/dist/host/utils.js.map +0 -1
  572. package/dist/href-client.d.ts +0 -131
  573. package/dist/href-client.d.ts.map +0 -1
  574. package/dist/href-client.js +0 -64
  575. package/dist/href-client.js.map +0 -1
  576. package/dist/href-context.d.ts +0 -29
  577. package/dist/href-context.d.ts.map +0 -1
  578. package/dist/href-context.js +0 -21
  579. package/dist/href-context.js.map +0 -1
  580. package/dist/index.d.ts +0 -73
  581. package/dist/index.d.ts.map +0 -1
  582. package/dist/index.js +0 -91
  583. package/dist/index.js.map +0 -1
  584. package/dist/index.rsc.d.ts +0 -32
  585. package/dist/index.rsc.d.ts.map +0 -1
  586. package/dist/index.rsc.js +0 -40
  587. package/dist/index.rsc.js.map +0 -1
  588. package/dist/internal-debug.d.ts +0 -2
  589. package/dist/internal-debug.d.ts.map +0 -1
  590. package/dist/internal-debug.js +0 -5
  591. package/dist/internal-debug.js.map +0 -1
  592. package/dist/loader.d.ts +0 -14
  593. package/dist/loader.d.ts.map +0 -1
  594. package/dist/loader.js +0 -20
  595. package/dist/loader.js.map +0 -1
  596. package/dist/loader.rsc.d.ts +0 -19
  597. package/dist/loader.rsc.d.ts.map +0 -1
  598. package/dist/loader.rsc.js +0 -99
  599. package/dist/loader.rsc.js.map +0 -1
  600. package/dist/network-error-thrower.d.ts +0 -17
  601. package/dist/network-error-thrower.d.ts.map +0 -1
  602. package/dist/network-error-thrower.js +0 -14
  603. package/dist/network-error-thrower.js.map +0 -1
  604. package/dist/outlet-context.d.ts +0 -13
  605. package/dist/outlet-context.d.ts.map +0 -1
  606. package/dist/outlet-context.js +0 -3
  607. package/dist/outlet-context.js.map +0 -1
  608. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  609. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  610. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  611. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  612. package/dist/prerender/param-hash.d.ts +0 -16
  613. package/dist/prerender/param-hash.d.ts.map +0 -1
  614. package/dist/prerender/param-hash.js +0 -36
  615. package/dist/prerender/param-hash.js.map +0 -1
  616. package/dist/prerender/store.d.ts +0 -38
  617. package/dist/prerender/store.d.ts.map +0 -1
  618. package/dist/prerender/store.js +0 -61
  619. package/dist/prerender/store.js.map +0 -1
  620. package/dist/prerender.d.ts +0 -66
  621. package/dist/prerender.d.ts.map +0 -1
  622. package/dist/prerender.js +0 -57
  623. package/dist/prerender.js.map +0 -1
  624. package/dist/reverse.d.ts +0 -196
  625. package/dist/reverse.d.ts.map +0 -1
  626. package/dist/reverse.js +0 -78
  627. package/dist/reverse.js.map +0 -1
  628. package/dist/root-error-boundary.d.ts +0 -33
  629. package/dist/root-error-boundary.d.ts.map +0 -1
  630. package/dist/root-error-boundary.js +0 -165
  631. package/dist/root-error-boundary.js.map +0 -1
  632. package/dist/route-content-wrapper.d.ts +0 -46
  633. package/dist/route-content-wrapper.d.ts.map +0 -1
  634. package/dist/route-content-wrapper.js +0 -77
  635. package/dist/route-content-wrapper.js.map +0 -1
  636. package/dist/route-definition.d.ts +0 -421
  637. package/dist/route-definition.d.ts.map +0 -1
  638. package/dist/route-definition.js +0 -868
  639. package/dist/route-definition.js.map +0 -1
  640. package/dist/route-map-builder.d.ts +0 -155
  641. package/dist/route-map-builder.d.ts.map +0 -1
  642. package/dist/route-map-builder.js +0 -237
  643. package/dist/route-map-builder.js.map +0 -1
  644. package/dist/route-types.d.ts +0 -165
  645. package/dist/route-types.d.ts.map +0 -1
  646. package/dist/route-types.js +0 -7
  647. package/dist/route-types.js.map +0 -1
  648. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  649. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  650. package/dist/router/__tests__/handler-context.test.js +0 -65
  651. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  652. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  653. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  654. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  655. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  656. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  657. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  658. package/dist/router/__tests__/match-context.test.js +0 -92
  659. package/dist/router/__tests__/match-context.test.js.map +0 -1
  660. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  661. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  662. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  663. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  664. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  665. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  666. package/dist/router/__tests__/match-result.test.js +0 -457
  667. package/dist/router/__tests__/match-result.test.js.map +0 -1
  668. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  669. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  670. package/dist/router/__tests__/on-error.test.js +0 -678
  671. package/dist/router/__tests__/on-error.test.js.map +0 -1
  672. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  673. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  674. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  675. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  676. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  677. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  678. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  679. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  680. package/dist/router/error-handling.d.ts +0 -77
  681. package/dist/router/error-handling.d.ts.map +0 -1
  682. package/dist/router/error-handling.js +0 -202
  683. package/dist/router/error-handling.js.map +0 -1
  684. package/dist/router/handler-context.d.ts +0 -20
  685. package/dist/router/handler-context.d.ts.map +0 -1
  686. package/dist/router/handler-context.js +0 -198
  687. package/dist/router/handler-context.js.map +0 -1
  688. package/dist/router/intercept-resolution.d.ts +0 -66
  689. package/dist/router/intercept-resolution.d.ts.map +0 -1
  690. package/dist/router/intercept-resolution.js +0 -246
  691. package/dist/router/intercept-resolution.js.map +0 -1
  692. package/dist/router/loader-resolution.d.ts +0 -64
  693. package/dist/router/loader-resolution.d.ts.map +0 -1
  694. package/dist/router/loader-resolution.js +0 -284
  695. package/dist/router/loader-resolution.js.map +0 -1
  696. package/dist/router/logging.d.ts +0 -15
  697. package/dist/router/logging.d.ts.map +0 -1
  698. package/dist/router/logging.js +0 -99
  699. package/dist/router/logging.js.map +0 -1
  700. package/dist/router/manifest.d.ts +0 -22
  701. package/dist/router/manifest.d.ts.map +0 -1
  702. package/dist/router/manifest.js +0 -181
  703. package/dist/router/manifest.js.map +0 -1
  704. package/dist/router/match-api.d.ts +0 -35
  705. package/dist/router/match-api.d.ts.map +0 -1
  706. package/dist/router/match-api.js +0 -406
  707. package/dist/router/match-api.js.map +0 -1
  708. package/dist/router/match-context.d.ts +0 -206
  709. package/dist/router/match-context.d.ts.map +0 -1
  710. package/dist/router/match-context.js +0 -17
  711. package/dist/router/match-context.js.map +0 -1
  712. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  713. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  714. package/dist/router/match-middleware/background-revalidation.js +0 -75
  715. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  716. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  717. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  718. package/dist/router/match-middleware/cache-lookup.js +0 -257
  719. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  720. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  721. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  722. package/dist/router/match-middleware/cache-store.js +0 -108
  723. package/dist/router/match-middleware/cache-store.js.map +0 -1
  724. package/dist/router/match-middleware/index.d.ts +0 -81
  725. package/dist/router/match-middleware/index.d.ts.map +0 -1
  726. package/dist/router/match-middleware/index.js +0 -80
  727. package/dist/router/match-middleware/index.js.map +0 -1
  728. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  729. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  730. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  731. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  732. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  733. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  734. package/dist/router/match-middleware/segment-resolution.js +0 -53
  735. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  736. package/dist/router/match-pipelines.d.ts +0 -147
  737. package/dist/router/match-pipelines.d.ts.map +0 -1
  738. package/dist/router/match-pipelines.js +0 -82
  739. package/dist/router/match-pipelines.js.map +0 -1
  740. package/dist/router/match-result.d.ts +0 -126
  741. package/dist/router/match-result.d.ts.map +0 -1
  742. package/dist/router/match-result.js +0 -93
  743. package/dist/router/match-result.js.map +0 -1
  744. package/dist/router/metrics.d.ts +0 -20
  745. package/dist/router/metrics.d.ts.map +0 -1
  746. package/dist/router/metrics.js +0 -47
  747. package/dist/router/metrics.js.map +0 -1
  748. package/dist/router/middleware.d.ts +0 -249
  749. package/dist/router/middleware.d.ts.map +0 -1
  750. package/dist/router/middleware.js +0 -434
  751. package/dist/router/middleware.js.map +0 -1
  752. package/dist/router/middleware.test.d.ts +0 -2
  753. package/dist/router/middleware.test.d.ts.map +0 -1
  754. package/dist/router/middleware.test.js +0 -816
  755. package/dist/router/middleware.test.js.map +0 -1
  756. package/dist/router/pattern-matching.d.ts +0 -149
  757. package/dist/router/pattern-matching.d.ts.map +0 -1
  758. package/dist/router/pattern-matching.js +0 -349
  759. package/dist/router/pattern-matching.js.map +0 -1
  760. package/dist/router/revalidation.d.ts +0 -44
  761. package/dist/router/revalidation.d.ts.map +0 -1
  762. package/dist/router/revalidation.js +0 -147
  763. package/dist/router/revalidation.js.map +0 -1
  764. package/dist/router/router-context.d.ts +0 -135
  765. package/dist/router/router-context.d.ts.map +0 -1
  766. package/dist/router/router-context.js +0 -36
  767. package/dist/router/router-context.js.map +0 -1
  768. package/dist/router/segment-resolution.d.ts +0 -127
  769. package/dist/router/segment-resolution.d.ts.map +0 -1
  770. package/dist/router/segment-resolution.js +0 -919
  771. package/dist/router/segment-resolution.js.map +0 -1
  772. package/dist/router/trie-matching.d.ts +0 -40
  773. package/dist/router/trie-matching.d.ts.map +0 -1
  774. package/dist/router/trie-matching.js +0 -127
  775. package/dist/router/trie-matching.js.map +0 -1
  776. package/dist/router/types.d.ts +0 -136
  777. package/dist/router/types.d.ts.map +0 -1
  778. package/dist/router/types.js +0 -7
  779. package/dist/router/types.js.map +0 -1
  780. package/dist/router.d.ts +0 -753
  781. package/dist/router.d.ts.map +0 -1
  782. package/dist/router.gen.d.ts +0 -6
  783. package/dist/router.gen.d.ts.map +0 -1
  784. package/dist/router.gen.js +0 -6
  785. package/dist/router.gen.js.map +0 -1
  786. package/dist/router.js +0 -1304
  787. package/dist/router.js.map +0 -1
  788. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  789. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  790. package/dist/rsc/__tests__/helpers.test.js +0 -140
  791. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  792. package/dist/rsc/handler.d.ts +0 -45
  793. package/dist/rsc/handler.d.ts.map +0 -1
  794. package/dist/rsc/handler.js +0 -1172
  795. package/dist/rsc/handler.js.map +0 -1
  796. package/dist/rsc/helpers.d.ts +0 -16
  797. package/dist/rsc/helpers.d.ts.map +0 -1
  798. package/dist/rsc/helpers.js +0 -55
  799. package/dist/rsc/helpers.js.map +0 -1
  800. package/dist/rsc/index.d.ts +0 -22
  801. package/dist/rsc/index.d.ts.map +0 -1
  802. package/dist/rsc/index.js +0 -23
  803. package/dist/rsc/index.js.map +0 -1
  804. package/dist/rsc/nonce.d.ts +0 -9
  805. package/dist/rsc/nonce.d.ts.map +0 -1
  806. package/dist/rsc/nonce.js +0 -18
  807. package/dist/rsc/nonce.js.map +0 -1
  808. package/dist/rsc/types.d.ts +0 -206
  809. package/dist/rsc/types.d.ts.map +0 -1
  810. package/dist/rsc/types.js +0 -8
  811. package/dist/rsc/types.js.map +0 -1
  812. package/dist/search-params.d.ts +0 -103
  813. package/dist/search-params.d.ts.map +0 -1
  814. package/dist/search-params.js +0 -74
  815. package/dist/search-params.js.map +0 -1
  816. package/dist/segment-system.d.ts +0 -75
  817. package/dist/segment-system.d.ts.map +0 -1
  818. package/dist/segment-system.js +0 -336
  819. package/dist/segment-system.js.map +0 -1
  820. package/dist/server/context.d.ts +0 -245
  821. package/dist/server/context.d.ts.map +0 -1
  822. package/dist/server/context.js +0 -197
  823. package/dist/server/context.js.map +0 -1
  824. package/dist/server/fetchable-loader-store.d.ts +0 -18
  825. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  826. package/dist/server/fetchable-loader-store.js +0 -18
  827. package/dist/server/fetchable-loader-store.js.map +0 -1
  828. package/dist/server/handle-store.d.ts +0 -85
  829. package/dist/server/handle-store.d.ts.map +0 -1
  830. package/dist/server/handle-store.js +0 -142
  831. package/dist/server/handle-store.js.map +0 -1
  832. package/dist/server/loader-registry.d.ts +0 -55
  833. package/dist/server/loader-registry.d.ts.map +0 -1
  834. package/dist/server/loader-registry.js +0 -132
  835. package/dist/server/loader-registry.js.map +0 -1
  836. package/dist/server/request-context.d.ts +0 -226
  837. package/dist/server/request-context.d.ts.map +0 -1
  838. package/dist/server/request-context.js +0 -290
  839. package/dist/server/request-context.js.map +0 -1
  840. package/dist/server/root-layout.d.ts +0 -4
  841. package/dist/server/root-layout.d.ts.map +0 -1
  842. package/dist/server/root-layout.js +0 -5
  843. package/dist/server/root-layout.js.map +0 -1
  844. package/dist/server.d.ts +0 -15
  845. package/dist/server.d.ts.map +0 -1
  846. package/dist/server.js +0 -20
  847. package/dist/server.js.map +0 -1
  848. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  849. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  850. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  851. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  852. package/dist/ssr/index.d.ts +0 -98
  853. package/dist/ssr/index.d.ts.map +0 -1
  854. package/dist/ssr/index.js +0 -158
  855. package/dist/ssr/index.js.map +0 -1
  856. package/dist/static-handler.d.ts +0 -50
  857. package/dist/static-handler.d.ts.map +0 -1
  858. package/dist/static-handler.gen.d.ts +0 -5
  859. package/dist/static-handler.gen.d.ts.map +0 -1
  860. package/dist/static-handler.gen.js +0 -5
  861. package/dist/static-handler.gen.js.map +0 -1
  862. package/dist/static-handler.js +0 -29
  863. package/dist/static-handler.js.map +0 -1
  864. package/dist/theme/ThemeProvider.d.ts +0 -20
  865. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  866. package/dist/theme/ThemeProvider.js +0 -240
  867. package/dist/theme/ThemeProvider.js.map +0 -1
  868. package/dist/theme/ThemeScript.d.ts +0 -48
  869. package/dist/theme/ThemeScript.d.ts.map +0 -1
  870. package/dist/theme/ThemeScript.js +0 -13
  871. package/dist/theme/ThemeScript.js.map +0 -1
  872. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  873. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  874. package/dist/theme/__tests__/theme.test.js +0 -103
  875. package/dist/theme/__tests__/theme.test.js.map +0 -1
  876. package/dist/theme/constants.d.ts +0 -29
  877. package/dist/theme/constants.d.ts.map +0 -1
  878. package/dist/theme/constants.js +0 -48
  879. package/dist/theme/constants.js.map +0 -1
  880. package/dist/theme/index.d.ts +0 -31
  881. package/dist/theme/index.d.ts.map +0 -1
  882. package/dist/theme/index.js +0 -36
  883. package/dist/theme/index.js.map +0 -1
  884. package/dist/theme/theme-context.d.ts +0 -40
  885. package/dist/theme/theme-context.d.ts.map +0 -1
  886. package/dist/theme/theme-context.js +0 -60
  887. package/dist/theme/theme-context.js.map +0 -1
  888. package/dist/theme/theme-script.d.ts +0 -27
  889. package/dist/theme/theme-script.d.ts.map +0 -1
  890. package/dist/theme/theme-script.js +0 -147
  891. package/dist/theme/theme-script.js.map +0 -1
  892. package/dist/theme/types.d.ts +0 -163
  893. package/dist/theme/types.d.ts.map +0 -1
  894. package/dist/theme/types.js +0 -11
  895. package/dist/theme/types.js.map +0 -1
  896. package/dist/theme/use-theme.d.ts +0 -12
  897. package/dist/theme/use-theme.d.ts.map +0 -1
  898. package/dist/theme/use-theme.js +0 -40
  899. package/dist/theme/use-theme.js.map +0 -1
  900. package/dist/types.d.ts +0 -1479
  901. package/dist/types.d.ts.map +0 -1
  902. package/dist/types.js +0 -10
  903. package/dist/types.js.map +0 -1
  904. package/dist/urls.d.ts +0 -441
  905. package/dist/urls.d.ts.map +0 -1
  906. package/dist/urls.gen.d.ts +0 -8
  907. package/dist/urls.gen.d.ts.map +0 -1
  908. package/dist/urls.gen.js +0 -8
  909. package/dist/urls.gen.js.map +0 -1
  910. package/dist/urls.js +0 -443
  911. package/dist/urls.js.map +0 -1
  912. package/dist/use-loader.d.ts +0 -127
  913. package/dist/use-loader.d.ts.map +0 -1
  914. package/dist/use-loader.js +0 -237
  915. package/dist/use-loader.js.map +0 -1
  916. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  917. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  918. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  919. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  920. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  921. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  922. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  923. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  924. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  925. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  926. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  927. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  928. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  929. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  930. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  931. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  932. package/dist/vite/ast-handler-extract.d.ts +0 -49
  933. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  934. package/dist/vite/ast-handler-extract.js +0 -249
  935. package/dist/vite/ast-handler-extract.js.map +0 -1
  936. package/dist/vite/expose-action-id.d.ts +0 -19
  937. package/dist/vite/expose-action-id.d.ts.map +0 -1
  938. package/dist/vite/expose-action-id.js +0 -250
  939. package/dist/vite/expose-action-id.js.map +0 -1
  940. package/dist/vite/expose-id-utils.d.ts +0 -69
  941. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  942. package/dist/vite/expose-id-utils.js +0 -289
  943. package/dist/vite/expose-id-utils.js.map +0 -1
  944. package/dist/vite/expose-internal-ids.d.ts +0 -22
  945. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  946. package/dist/vite/expose-internal-ids.js +0 -886
  947. package/dist/vite/expose-internal-ids.js.map +0 -1
  948. package/dist/vite/index.d.ts +0 -149
  949. package/dist/vite/index.d.ts.map +0 -1
  950. package/dist/vite/index.js.map +0 -1
  951. package/dist/vite/index.named-routes.gen.ts +0 -103
  952. package/dist/vite/package-resolution.d.ts +0 -43
  953. package/dist/vite/package-resolution.d.ts.map +0 -1
  954. package/dist/vite/package-resolution.js +0 -112
  955. package/dist/vite/package-resolution.js.map +0 -1
  956. package/dist/vite/virtual-entries.d.ts +0 -25
  957. package/dist/vite/virtual-entries.d.ts.map +0 -1
  958. package/dist/vite/virtual-entries.js +0 -110
  959. package/dist/vite/virtual-entries.js.map +0 -1
  960. package/skills/testing/SKILL.md +0 -226
  961. package/src/route-definition/route-function.ts +0 -119
@@ -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
@@ -228,22 +237,25 @@ export type HandlerContext<
228
237
  */
229
238
  pathname: string;
230
239
  /**
231
- * The full URL object (with system params filtered).
240
+ * The full URL object (with internal `_rsc*` params stripped).
241
+ * Use this for application logic — routing, link generation, display.
232
242
  */
233
243
  url: URL;
244
+ /**
245
+ * The original request URL with all parameters intact, including
246
+ * internal `_rsc*` transport params. Use `ctx.url` for application
247
+ * logic — this is only needed for advanced cases like debugging
248
+ * or custom cache keying.
249
+ */
250
+ originalUrl: URL;
234
251
  /**
235
252
  * Platform bindings (DB, KV, secrets, etc.).
236
253
  * Access resources like `ctx.env.DB`, `ctx.env.KV`.
237
254
  */
238
255
  env: TEnv;
239
- /**
240
- * Middleware-injected variables.
241
- * Access values like `ctx.var.user`, `ctx.var.permissions`.
242
- */
243
- var: DefaultVars;
244
256
  /**
245
257
  * Type-safe getter for middleware variables.
246
- * Alternative to `ctx.var.key` with better autocomplete.
258
+ * Preferred way to read middleware-injected variables.
247
259
  *
248
260
  * @example
249
261
  * ```typescript
@@ -264,24 +276,18 @@ export type HandlerContext<
264
276
  * ```
265
277
  */
266
278
  set: {
267
- <T>(contextVar: ContextVar<T>, value: T): void;
268
- } & (<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);
269
289
  /**
270
- * Stub response for setting headers/cookies.
271
- * Headers set here are merged into the final response.
272
- *
273
- * @example
274
- * ```typescript
275
- * route("product", (ctx) => {
276
- * ctx.res.headers.set("Cache-Control", "s-maxage=60");
277
- * return <ProductPage />;
278
- * });
279
- * ```
280
- */
281
- res: Response;
282
- /**
283
- * Shorthand for ctx.res.headers - response headers.
284
- * Headers set here are merged into the final response.
290
+ * Response headers. Headers set here are merged into the final response.
285
291
  *
286
292
  * @example
287
293
  * ```typescript
@@ -295,8 +301,15 @@ export type HandlerContext<
295
301
  /**
296
302
  * Access loader data or push handle data.
297
303
  *
304
+ * Available in route handlers, layout handlers, middleware, server actions,
305
+ * and server components rendered within the request context.
306
+ *
298
307
  * For loaders: Returns a promise that resolves to the loader data.
299
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).
300
313
  *
301
314
  * For handles: Returns a push function to add data for this segment.
302
315
  * Handle data accumulates across all matched route segments.
@@ -304,10 +317,11 @@ export type HandlerContext<
304
317
  *
305
318
  * @example
306
319
  * ```typescript
307
- * // Loader usage
308
- * route("cart", async (ctx) => {
309
- * const cart = await ctx.use(CartLoader);
310
- * 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 />;
311
325
  * });
312
326
  *
313
327
  * // Handle usage - direct value
@@ -436,6 +450,10 @@ export type InternalHandlerContext<
436
450
  TEnv = DefaultEnv,
437
451
  TSearch extends SearchSchema = {},
438
452
  > = HandlerContext<TParams, TEnv, TSearch> & {
453
+ /** @internal Stub response for collecting headers/cookies. */
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. */
@@ -523,30 +541,112 @@ export type RevalidateParams<TParams = GenericParams, TEnv = any> = Parameters<
523
541
  * })
524
542
  * ```
525
543
  */
544
+ /**
545
+ * Revalidation function called during client-side navigation to decide whether
546
+ * a segment (layout, route, parallel slot, or loader) should be re-rendered.
547
+ *
548
+ * Return `true` to re-render, `false` to skip (keep client's current version),
549
+ * or `{ defaultShouldRevalidate: boolean }` to override the default for
550
+ * downstream segments.
551
+ *
552
+ * @example
553
+ * ```ts
554
+ * // Re-render only when a cart action happened or browser signals staleness
555
+ * revalidate(({ actionId, stale }) =>
556
+ * actionId?.includes("cart") || stale || false
557
+ * )
558
+ *
559
+ * // Always re-render when params change (default behavior made explicit)
560
+ * revalidate(({ defaultShouldRevalidate }) => defaultShouldRevalidate)
561
+ * ```
562
+ */
526
563
  export type ShouldRevalidateFn<TParams = GenericParams, TEnv = any> = (args: {
564
+ /** Route params from the page being navigated away from. */
527
565
  currentParams: TParams;
566
+ /** Full URL of the page being navigated away from. */
528
567
  currentUrl: URL;
568
+ /** Route params for the navigation target. */
529
569
  nextParams: TParams;
570
+ /** Full URL of the navigation target. */
530
571
  nextUrl: URL;
572
+ /**
573
+ * The router's default revalidation decision for this segment.
574
+ * `true` when params changed or the segment is new to the client.
575
+ * Return this when you want default behavior plus your own conditions.
576
+ */
531
577
  defaultShouldRevalidate: boolean;
578
+ /** Full handler context — access to `ctx.use()`, `ctx.env`, `ctx.params`, etc. */
532
579
  context: HandlerContext<TParams, TEnv>;
533
- // Segment metadata (which segment is being evaluated):
580
+
581
+ // ── Segment metadata (which segment is being evaluated) ──────────────
582
+
583
+ /** The type of segment being revalidated. */
534
584
  segmentType: "layout" | "route" | "parallel";
535
- layoutName?: string; // Layout name (e.g., "root", "shop", "auth") - only for layouts
536
- slotName?: string; // Slot name (e.g., "@sidebar", "@modal") - only for parallels
537
- // Action context (populated when revalidation triggered by server action):
538
- actionId?: string; // Action identifier (e.g., "src/actions.ts#addToCart")
539
- actionUrl?: URL; // URL where action was executed
540
- actionResult?: any; // Return value from action execution
541
- formData?: FormData; // FormData from action request
542
- method?: string; // Request method: 'GET' for navigation, 'POST' for actions
543
- routeName?: DefaultRouteName; // Route name of the navigation target (alias for toRouteName)
544
- // Named-route identity for both ends of a navigation transition.
545
- // Undefined for unnamed internal routes (those without a `name` option).
546
- fromRouteName?: DefaultRouteName; // Route name being navigated away from
547
- toRouteName?: DefaultRouteName; // Route name being navigated to
548
- // Stale cache revalidation (SWR pattern):
549
- stale?: boolean; // True if this is a stale cache revalidation request
585
+ /** Layout name (e.g., `"root"`, `"shop"`, `"auth"`). Only set for layout segments. */
586
+ layoutName?: string;
587
+ /** Slot name (e.g., `"@sidebar"`, `"@modal"`). Only set for parallel segments. */
588
+ slotName?: string;
589
+
590
+ // ── Action context (populated when revalidation is triggered by a server action) ──
591
+
592
+ /**
593
+ * Identifier of the server action that triggered revalidation.
594
+ * `undefined` during normal navigation (no action involved).
595
+ *
596
+ * Format: `"src/<path>#<exportName>"` the file path is the source path
597
+ * relative to the project root, followed by `#` and the exported function name.
598
+ *
599
+ * This is stable and can be used for path-based matching to revalidate
600
+ * when any action in a module or directory fires:
601
+ *
602
+ * @example
603
+ * ```ts
604
+ * // Match a specific action
605
+ * revalidate(({ actionId }) => actionId === "src/actions/cart.ts#addToCart")
606
+ *
607
+ * // Match any action in the cart module
608
+ * revalidate(({ actionId }) => actionId?.includes("cart") ?? false)
609
+ *
610
+ * // Match any action under src/apps/store/actions/
611
+ * revalidate(({ actionId }) => actionId?.startsWith("src/apps/store/actions/") ?? false)
612
+ * ```
613
+ */
614
+ actionId?: string;
615
+ /** URL where the action was executed (the page the user was on when they triggered the action). */
616
+ actionUrl?: URL;
617
+ /** Return value from the action execution. Can be used to conditionally revalidate based on the action's outcome. */
618
+ actionResult?: any;
619
+ /** FormData from the action request body. Only set for form-based actions (not inline `"use server"` actions). */
620
+ formData?: FormData;
621
+ /** HTTP method: `"GET"` for navigation, `"POST"` for server actions. */
622
+ method?: string;
623
+
624
+ // ── Route identity ───────────────────────────────────────────────────
625
+
626
+ /** Route name of the navigation target. Alias for `toRouteName`. */
627
+ routeName?: DefaultRouteName;
628
+ /**
629
+ * Route name being navigated away from.
630
+ * `undefined` for unnamed internal routes (those without a `name` option).
631
+ */
632
+ fromRouteName?: DefaultRouteName;
633
+ /**
634
+ * Route name being navigated to.
635
+ * `undefined` for unnamed internal routes (those without a `name` option).
636
+ */
637
+ toRouteName?: DefaultRouteName;
638
+
639
+ // ── Staleness signal ─────────────────────────────────────────────────
640
+
641
+ /**
642
+ * `true` when the browser signals that data may be stale — typically because
643
+ * a server action was executed in this or another tab (`_rsc_stale` header).
644
+ *
645
+ * This is NOT segment cache staleness (loaders are never segment-cached).
646
+ * Use this to decide whether loader data should be re-fetched after an
647
+ * action that may have mutated backend state.
648
+ */
649
+ stale?: boolean;
550
650
  }) => boolean | { defaultShouldRevalidate: boolean };
551
651
 
552
652
  // MiddlewareFn is imported from "../router/middleware.js" and re-exported
@@ -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<
@@ -24,17 +24,26 @@ type ParseConstraint<T extends string> =
24
24
  * - :param(a|b)? -> { name: "param", optional: true, type: "a" | "b" }
25
25
  */
26
26
  type ExtractParamInfo<T extends string> =
27
- // Optional + constrained: :param(a|b)?
28
- T extends `${infer Name}(${infer Constraint})?`
27
+ // Optional + constrained (with optional suffix): :param(a|b)?suffix
28
+ T extends `${infer Name}(${infer Constraint})?${string}`
29
29
  ? { name: Name; optional: true; type: ParseConstraint<Constraint> }
30
- : // Constrained only: :param(a|b)
31
- T extends `${infer Name}(${infer Constraint})`
30
+ : // Constrained (with optional suffix): :param(a|b)suffix
31
+ T extends `${infer Name}(${infer Constraint})${string}`
32
32
  ? { name: Name; optional: false; type: ParseConstraint<Constraint> }
33
- : // Optional only: :param?
34
- T extends `${infer Name}?`
33
+ : // Optional (with optional suffix): :param?suffix
34
+ T extends `${infer Name}?${string}`
35
35
  ? { name: Name; optional: true; type: string }
36
- : // Required: :param
37
- { name: T; optional: false; type: string };
36
+ : // Param with dot-suffix: :param.html
37
+ T extends `${infer Name}.${string}`
38
+ ? { name: Name; optional: false; type: string }
39
+ : // Param with dash-suffix: :param-slug
40
+ T extends `${infer Name}-${string}`
41
+ ? { name: Name; optional: false; type: string }
42
+ : // Param with tilde-suffix: :param~v2
43
+ T extends `${infer Name}~${string}`
44
+ ? { name: Name; optional: false; type: string }
45
+ : // Required: :param (no suffix)
46
+ { name: T; optional: false; type: string };
38
47
 
39
48
  /**
40
49
  * Build param object from info
@@ -55,6 +55,13 @@ export interface RouteEntry<TEnv = any> {
55
55
  | Promise<() => Array<AllUseItems>>;
56
56
  mountIndex: number;
57
57
 
58
+ /**
59
+ * Router ID that owns this entry. Used to namespace the manifest cache
60
+ * so multi-router setups (host routing) don't share cached EntryData
61
+ * across routers with overlapping mountIndex + routeKey combinations.
62
+ */
63
+ routerId?: string;
64
+
58
65
  /**
59
66
  * Route keys in this entry that have pre-render handlers.
60
67
  * Used by the non-trie match path to set the `pr` flag.
@@ -62,7 +69,7 @@ export interface RouteEntry<TEnv = any> {
62
69
  prerenderRouteKeys?: Set<string>;
63
70
 
64
71
  /**
65
- * Route keys in this entry that use `{ passthrough: true }`.
72
+ * Route keys in this entry that are wrapped with `Passthrough()`.
66
73
  * Used by the non-trie match path to set the `pt` flag.
67
74
  */
68
75
  passthroughRouteKeys?: Set<string>;
@@ -51,9 +51,11 @@ export interface ResolvedSegment {
51
51
  // Loader-specific fields
52
52
  loaderId?: string; // For loaders: the loader $$id identifier
53
53
  loaderData?: any; // For loaders: the resolved data from loader execution
54
+ parallelLoading?: ReactNode; // For parallel-owned loaders: the parallel's loading fallback
54
55
  // Intercept loader fields (for streaming loader data in parallel segments)
55
56
  loaderDataPromise?: Promise<any[]> | any[]; // Loader data promise or resolved array
56
57
  loaderIds?: string[]; // IDs ($$id) of loaders for this segment
58
+ parallelLoaderSources?: any[]; // Internal: preserves stable aggregate promise across renders
57
59
  // Error-specific fields
58
60
  error?: ErrorInfo; // For error segments: the error information
59
61
  // NotFound-specific fields
@@ -124,11 +126,6 @@ export interface MatchResult {
124
126
  * Used by ctx.reverse() for local name resolution.
125
127
  */
126
128
  routeName?: string;
127
- /**
128
- * Server-Timing header value (only present when debugPerformance is enabled)
129
- * Can be added to response headers for DevTools integration
130
- */
131
- serverTiming?: string;
132
129
  /**
133
130
  * State of named slots for this route match
134
131
  * Key is slot name (e.g., "@modal"), value is slot state
@@ -37,7 +37,10 @@ import type {
37
37
  UseItems,
38
38
  } from "../route-types.js";
39
39
  import type { SearchSchema } from "../search-params.js";
40
- import type { PrerenderHandlerDefinition } from "../prerender.js";
40
+ import type {
41
+ PrerenderHandlerDefinition,
42
+ PassthroughHandlerDefinition,
43
+ } from "../prerender.js";
41
44
  import type { StaticHandlerDefinition } from "../static-handler.js";
42
45
  import type { InterceptWhenFn } from "../server/context";
43
46
  import type {
@@ -70,6 +73,7 @@ export type PathFn<TEnv> = <
70
73
  ctx: HandlerContext<TParams, TEnv, TSearch>,
71
74
  ) => ReactNode | Promise<ReactNode> | Response | Promise<Response>)
72
75
  | PrerenderHandlerDefinition<TParams>
76
+ | PassthroughHandlerDefinition<TParams, TEnv>
73
77
  | StaticHandlerDefinition<TParams>,
74
78
  optionsOrUse?: PathOptions<TName, TSearch> | (() => UseItems<RouteUseItem>),
75
79
  use?: () => UseItems<RouteUseItem>,
@@ -280,7 +284,10 @@ export type PathHelpers<TEnv> = {
280
284
  /**
281
285
  * Attach a loading component to the current route/layout
282
286
  */
283
- loading: (component: ReactNode, options?: { ssr?: boolean }) => LoadingItem;
287
+ loading: (
288
+ component: ReactNode | (() => ReactNode),
289
+ options?: { ssr?: boolean },
290
+ ) => LoadingItem;
284
291
 
285
292
  /**
286
293
  * Attach an error boundary to catch errors in this segment
@@ -12,10 +12,11 @@ import {
12
12
  getNamePrefix,
13
13
  getRootScoped,
14
14
  } from "../server/context";
15
- import { invariant } from "../errors";
15
+ import { invariant, DataNotFoundError } from "../errors";
16
16
  import { validateUserRouteName } from "../route-name.js";
17
17
  import {
18
18
  isPrerenderHandler,
19
+ isPassthroughHandler,
19
20
  type PrerenderHandlerDefinition,
20
21
  } from "../prerender.js";
21
22
  import {
@@ -34,6 +35,10 @@ import type {
34
35
  JsonResponsePathFn,
35
36
  TextResponsePathFn,
36
37
  } from "./path-helper-types.js";
38
+ import {
39
+ resolveHandlerUse,
40
+ mergeHandlerUse,
41
+ } from "../route-definition/resolve-handler-use.js";
37
42
 
38
43
  /**
39
44
  * Check if a value is a valid use item
@@ -142,6 +147,12 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
142
147
  use = maybeUse;
143
148
  }
144
149
 
150
+ // Merge handler.use() defaults with explicit use()
151
+ // Response routes (path.json, path.text, etc.) only allow middleware + cache
152
+ const handlerUseFn = resolveHandlerUse(handler);
153
+ const mountSite = resolveResponseType(options) ? "response" : "path";
154
+ const mergedUse = mergeHandlerUse(handlerUseFn, use, mountSite);
155
+
145
156
  // Get prefixes from context (set by include())
146
157
  const urlPrefix = getUrlPrefix();
147
158
  const namePrefix = getNamePrefix();
@@ -176,14 +187,31 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
176
187
  }
177
188
 
178
189
  // Ensure handler is always a function (wrap ReactNode or extract from prerender/static def)
190
+ // For prerender stubs (production builds where handler code is evicted),
191
+ // handler.handler is undefined — provide a notFound fallback so requests
192
+ // for non-prerendered params get 404 instead of "handler is not a function".
179
193
  const wrappedHandler: Handler<any, any, TEnv> =
180
194
  typeof handler === "function"
181
195
  ? (handler as Handler<any, any, TEnv>)
182
- : isPrerenderHandler(handler)
183
- ? (handler.handler as Handler<any, any, TEnv>)
184
- : isStaticHandler(handler)
185
- ? (handler.handler as Handler<any, any, TEnv>)
186
- : () => handler;
196
+ : isPassthroughHandler(handler)
197
+ ? typeof handler.prerenderDef.handler === "function"
198
+ ? (handler.prerenderDef.handler as Handler<any, any, TEnv>)
199
+ : () => {
200
+ throw new DataNotFoundError(
201
+ "No prerender data found for this route",
202
+ );
203
+ }
204
+ : isPrerenderHandler(handler)
205
+ ? typeof handler.handler === "function"
206
+ ? (handler.handler as Handler<any, any, TEnv>)
207
+ : () => {
208
+ throw new DataNotFoundError(
209
+ "No prerender data found for this route",
210
+ );
211
+ }
212
+ : isStaticHandler(handler)
213
+ ? (handler.handler as Handler<any, any, TEnv>)
214
+ : () => handler;
187
215
 
188
216
  const entry = {
189
217
  id: namespace,
@@ -199,16 +227,23 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
199
227
  errorBoundary: [],
200
228
  notFoundBoundary: [],
201
229
  layout: [],
202
- parallel: [],
230
+ parallel: {},
203
231
  intercept: [],
204
232
  loader: [],
205
233
  ...(urlPrefix ? { mountPath: urlPrefix } : {}),
206
- ...(isPrerenderHandler(handler)
234
+ ...(isPassthroughHandler(handler)
207
235
  ? {
208
236
  isPrerender: true as const,
209
- prerenderDef: handler as PrerenderHandlerDefinition,
237
+ prerenderDef: handler.prerenderDef as PrerenderHandlerDefinition,
238
+ isPassthrough: true as const,
239
+ liveHandler: handler.liveHandler as Handler<any, any, TEnv>,
210
240
  }
211
- : {}),
241
+ : isPrerenderHandler(handler)
242
+ ? {
243
+ isPrerender: true as const,
244
+ prerenderDef: handler as PrerenderHandlerDefinition,
245
+ }
246
+ : {}),
212
247
  ...(isStaticHandler(handler)
213
248
  ? {
214
249
  isStaticPrerender: true as const,
@@ -264,9 +299,9 @@ export function createPathHelper<TEnv>(): PathFn<TEnv> {
264
299
  registerSearchSchema(routeName, options.search);
265
300
  }
266
301
 
267
- // Run use callback if provided
268
- if (use && typeof use === "function") {
269
- const result = store.run(namespace, entry, use)?.flat(3);
302
+ // Run merged use callback (handler.use defaults + explicit use) if present
303
+ if (mergedUse) {
304
+ const result = store.run(namespace, entry, mergedUse)?.flat(3);
270
305
  invariant(
271
306
  Array.isArray(result) && result.every((item) => isValidUseItem(item)),
272
307
  `path() use() callback must return an array of use items [${namespace}]`,
@@ -7,6 +7,18 @@ import type {
7
7
  } from "../route-types.js";
8
8
  import type { SearchSchema } from "../search-params.js";
9
9
  import { RESPONSE_TYPE } from "./response-types.js";
10
+ import type { DefaultEnv } from "../types.js";
11
+ import type { PathHelpers } from "./path-helper-types.js";
12
+
13
+ /**
14
+ * Builder function accepted by urls() and as a shorthand for routes()/urls option.
15
+ * When passed directly to routes() or createRouter({ urls }), it is wrapped in urls() automatically.
16
+ */
17
+ export type UrlBuilder<
18
+ TEnv = DefaultEnv,
19
+ TItems extends readonly (AllUseItems | readonly AllUseItems[])[] =
20
+ readonly AllUseItems[],
21
+ > = (helpers: PathHelpers<TEnv>) => TItems;
10
22
 
11
23
  /**
12
24
  * Sentinel type for unnamed routes.
@@ -4,6 +4,7 @@ import type {
4
4
  DefaultReverseRouteMap,
5
5
  DefaultVars,
6
6
  } from "../types/global-namespace.js";
7
+ import type { UseItems, ResponseRouteUseItem } from "../route-types.js";
7
8
 
8
9
  /**
9
10
  * Reverse function for response handler contexts.
@@ -38,9 +39,12 @@ export const RESPONSE_TYPE: unique symbol = Symbol.for(
38
39
  * Handler that must return Response (not ReactNode).
39
40
  * Used by path.image(), path.stream(), path.any() (binary/streaming data).
40
41
  */
41
- export type ResponseHandler<TParams = Record<string, string>, TEnv = any> = (
42
+ export type ResponseHandler<TParams = Record<string, string>, TEnv = any> = ((
42
43
  ctx: ResponseHandlerContext<TParams, TEnv>,
43
- ) => Response | Promise<Response>;
44
+ ) => Response | Promise<Response>) & {
45
+ /** Composable default DSL items merged when the handler is mounted. */
46
+ use?: () => UseItems<ResponseRouteUseItem>;
47
+ };
44
48
 
45
49
  /**
46
50
  * JSON-serializable value type for auto-wrap support.
@@ -60,9 +64,12 @@ export type JsonValue =
60
64
  export type JsonResponseHandler<
61
65
  TParams = Record<string, string>,
62
66
  TEnv = any,
63
- > = (
67
+ > = ((
64
68
  ctx: ResponseHandlerContext<TParams, TEnv>,
65
- ) => JsonValue | Response | Promise<JsonValue | Response>;
69
+ ) => JsonValue | Response | Promise<JsonValue | Response>) & {
70
+ /** Composable default DSL items merged when the handler is mounted. */
71
+ use?: () => UseItems<ResponseRouteUseItem>;
72
+ };
66
73
 
67
74
  /**
68
75
  * Handler for text-based response routes (text, html, xml).
@@ -71,9 +78,12 @@ export type JsonResponseHandler<
71
78
  export type TextResponseHandler<
72
79
  TParams = Record<string, string>,
73
80
  TEnv = any,
74
- > = (
81
+ > = ((
75
82
  ctx: ResponseHandlerContext<TParams, TEnv>,
76
- ) => string | Response | Promise<string | Response>;
83
+ ) => string | Response | Promise<string | Response>) & {
84
+ /** Composable default DSL items merged when the handler is mounted. */
85
+ use?: () => UseItems<ResponseRouteUseItem>;
86
+ };
77
87
 
78
88
  /**
79
89
  * Lighter handler context for response routes.