@rangojs/router 0.0.0-experimental.85 → 0.0.0-experimental.86

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 (843) hide show
  1. package/README.md +3 -1
  2. package/dist/vite/index.js +19 -9
  3. package/package.json +14 -15
  4. package/skills/breadcrumbs/SKILL.md +3 -1
  5. package/skills/hooks/SKILL.md +3 -1
  6. package/skills/links/SKILL.md +24 -15
  7. package/skills/loader/SKILL.md +35 -2
  8. package/skills/typesafety/SKILL.md +3 -1
  9. package/src/browser/app-shell.ts +52 -0
  10. package/src/browser/navigation-bridge.ts +51 -2
  11. package/src/browser/navigation-store.ts +25 -1
  12. package/src/browser/partial-update.ts +20 -1
  13. package/src/browser/prefetch/cache.ts +16 -0
  14. package/src/browser/rango-state.ts +53 -13
  15. package/src/browser/react/NavigationProvider.tsx +44 -9
  16. package/src/browser/react/use-router.ts +8 -1
  17. package/src/browser/rsc-router.tsx +34 -6
  18. package/src/browser/types.ts +13 -0
  19. package/src/cache/cf/cf-cache-store.ts +5 -7
  20. package/src/index.rsc.ts +3 -0
  21. package/src/index.ts +3 -0
  22. package/src/outlet-context.ts +1 -1
  23. package/src/router/handler-context.ts +17 -1
  24. package/src/router/lazy-includes.ts +1 -1
  25. package/src/router/loader-resolution.ts +3 -0
  26. package/src/router/match-api.ts +3 -3
  27. package/src/router/middleware-types.ts +2 -22
  28. package/src/router/middleware.ts +10 -1
  29. package/src/router.ts +1 -2
  30. package/src/rsc/handler.ts +2 -1
  31. package/src/rsc/response-route-handler.ts +3 -0
  32. package/src/server/request-context.ts +10 -42
  33. package/src/types/handler-context.ts +2 -34
  34. package/src/types/loader-types.ts +2 -6
  35. package/src/types/request-scope.ts +126 -0
  36. package/src/urls/response-types.ts +2 -10
  37. package/src/vite/rango.ts +23 -7
  38. package/src/vite/utils/banner.ts +1 -1
  39. package/src/vite/utils/package-resolution.ts +1 -1
  40. package/dist/__internal.d.ts +0 -83
  41. package/dist/__internal.d.ts.map +0 -1
  42. package/dist/__internal.js +0 -19
  43. package/dist/__internal.js.map +0 -1
  44. package/dist/__mocks__/version.d.ts +0 -7
  45. package/dist/__mocks__/version.d.ts.map +0 -1
  46. package/dist/__mocks__/version.js +0 -7
  47. package/dist/__mocks__/version.js.map +0 -1
  48. package/dist/__tests__/client-href.test.d.ts +0 -2
  49. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  50. package/dist/__tests__/client-href.test.js +0 -74
  51. package/dist/__tests__/client-href.test.js.map +0 -1
  52. package/dist/__tests__/component-utils.test.d.ts +0 -2
  53. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  54. package/dist/__tests__/component-utils.test.js +0 -51
  55. package/dist/__tests__/component-utils.test.js.map +0 -1
  56. package/dist/__tests__/event-controller.test.d.ts +0 -2
  57. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  58. package/dist/__tests__/event-controller.test.js +0 -538
  59. package/dist/__tests__/event-controller.test.js.map +0 -1
  60. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  61. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  62. package/dist/__tests__/helpers/route-tree.js +0 -374
  63. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  64. package/dist/__tests__/match-result.test.d.ts +0 -2
  65. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  66. package/dist/__tests__/match-result.test.js +0 -154
  67. package/dist/__tests__/match-result.test.js.map +0 -1
  68. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  69. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  70. package/dist/__tests__/navigation-store.test.js +0 -440
  71. package/dist/__tests__/navigation-store.test.js.map +0 -1
  72. package/dist/__tests__/partial-update.test.d.ts +0 -2
  73. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  74. package/dist/__tests__/partial-update.test.js +0 -1009
  75. package/dist/__tests__/partial-update.test.js.map +0 -1
  76. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  77. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  78. package/dist/__tests__/reverse-types.test.js +0 -656
  79. package/dist/__tests__/reverse-types.test.js.map +0 -1
  80. package/dist/__tests__/route-definition.test.d.ts +0 -2
  81. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  82. package/dist/__tests__/route-definition.test.js +0 -55
  83. package/dist/__tests__/route-definition.test.js.map +0 -1
  84. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  85. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  86. package/dist/__tests__/router-helpers.test.js +0 -377
  87. package/dist/__tests__/router-helpers.test.js.map +0 -1
  88. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  89. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  90. package/dist/__tests__/router-integration-2.test.js +0 -426
  91. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  92. package/dist/__tests__/router-integration.test.d.ts +0 -2
  93. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  94. package/dist/__tests__/router-integration.test.js +0 -1051
  95. package/dist/__tests__/router-integration.test.js.map +0 -1
  96. package/dist/__tests__/search-params.test.d.ts +0 -5
  97. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  98. package/dist/__tests__/search-params.test.js +0 -306
  99. package/dist/__tests__/search-params.test.js.map +0 -1
  100. package/dist/__tests__/segment-system.test.d.ts +0 -2
  101. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  102. package/dist/__tests__/segment-system.test.js +0 -627
  103. package/dist/__tests__/segment-system.test.js.map +0 -1
  104. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  105. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  106. package/dist/__tests__/static-handler-types.test.js +0 -63
  107. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  108. package/dist/__tests__/urls.test.d.ts +0 -2
  109. package/dist/__tests__/urls.test.d.ts.map +0 -1
  110. package/dist/__tests__/urls.test.js +0 -421
  111. package/dist/__tests__/urls.test.js.map +0 -1
  112. package/dist/__tests__/use-mount.test.d.ts +0 -2
  113. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  114. package/dist/__tests__/use-mount.test.js +0 -35
  115. package/dist/__tests__/use-mount.test.js.map +0 -1
  116. package/dist/bin/rango.d.ts +0 -2
  117. package/dist/bin/rango.d.ts.map +0 -1
  118. package/dist/bin/rango.js.map +0 -1
  119. package/dist/browser/event-controller.d.ts +0 -191
  120. package/dist/browser/event-controller.d.ts.map +0 -1
  121. package/dist/browser/event-controller.js +0 -559
  122. package/dist/browser/event-controller.js.map +0 -1
  123. package/dist/browser/index.d.ts +0 -2
  124. package/dist/browser/index.d.ts.map +0 -1
  125. package/dist/browser/index.js +0 -14
  126. package/dist/browser/index.js.map +0 -1
  127. package/dist/browser/link-interceptor.d.ts +0 -38
  128. package/dist/browser/link-interceptor.d.ts.map +0 -1
  129. package/dist/browser/link-interceptor.js +0 -99
  130. package/dist/browser/link-interceptor.js.map +0 -1
  131. package/dist/browser/logging.d.ts +0 -10
  132. package/dist/browser/logging.d.ts.map +0 -1
  133. package/dist/browser/logging.js +0 -29
  134. package/dist/browser/logging.js.map +0 -1
  135. package/dist/browser/lru-cache.d.ts +0 -17
  136. package/dist/browser/lru-cache.d.ts.map +0 -1
  137. package/dist/browser/lru-cache.js +0 -50
  138. package/dist/browser/lru-cache.js.map +0 -1
  139. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  140. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  141. package/dist/browser/merge-segment-loaders.js +0 -102
  142. package/dist/browser/merge-segment-loaders.js.map +0 -1
  143. package/dist/browser/navigation-bridge.d.ts +0 -102
  144. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  145. package/dist/browser/navigation-bridge.js +0 -708
  146. package/dist/browser/navigation-bridge.js.map +0 -1
  147. package/dist/browser/navigation-client.d.ts +0 -25
  148. package/dist/browser/navigation-client.d.ts.map +0 -1
  149. package/dist/browser/navigation-client.js +0 -157
  150. package/dist/browser/navigation-client.js.map +0 -1
  151. package/dist/browser/navigation-store.d.ts +0 -101
  152. package/dist/browser/navigation-store.d.ts.map +0 -1
  153. package/dist/browser/navigation-store.js +0 -625
  154. package/dist/browser/navigation-store.js.map +0 -1
  155. package/dist/browser/partial-update.d.ts +0 -75
  156. package/dist/browser/partial-update.d.ts.map +0 -1
  157. package/dist/browser/partial-update.js +0 -426
  158. package/dist/browser/partial-update.js.map +0 -1
  159. package/dist/browser/react/Link.d.ts +0 -86
  160. package/dist/browser/react/Link.d.ts.map +0 -1
  161. package/dist/browser/react/Link.js +0 -128
  162. package/dist/browser/react/Link.js.map +0 -1
  163. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  164. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  165. package/dist/browser/react/NavigationProvider.js +0 -216
  166. package/dist/browser/react/NavigationProvider.js.map +0 -1
  167. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  168. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  169. package/dist/browser/react/ScrollRestoration.js +0 -57
  170. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  171. package/dist/browser/react/context.d.ts +0 -46
  172. package/dist/browser/react/context.d.ts.map +0 -1
  173. package/dist/browser/react/context.js +0 -10
  174. package/dist/browser/react/context.js.map +0 -1
  175. package/dist/browser/react/index.d.ts +0 -11
  176. package/dist/browser/react/index.d.ts.map +0 -1
  177. package/dist/browser/react/index.js +0 -22
  178. package/dist/browser/react/index.js.map +0 -1
  179. package/dist/browser/react/location-state-shared.d.ts +0 -63
  180. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  181. package/dist/browser/react/location-state-shared.js +0 -81
  182. package/dist/browser/react/location-state-shared.js.map +0 -1
  183. package/dist/browser/react/location-state.d.ts +0 -23
  184. package/dist/browser/react/location-state.d.ts.map +0 -1
  185. package/dist/browser/react/location-state.js +0 -29
  186. package/dist/browser/react/location-state.js.map +0 -1
  187. package/dist/browser/react/mount-context.d.ts +0 -24
  188. package/dist/browser/react/mount-context.d.ts.map +0 -1
  189. package/dist/browser/react/mount-context.js +0 -24
  190. package/dist/browser/react/mount-context.js.map +0 -1
  191. package/dist/browser/react/use-action.d.ts +0 -64
  192. package/dist/browser/react/use-action.d.ts.map +0 -1
  193. package/dist/browser/react/use-action.js +0 -134
  194. package/dist/browser/react/use-action.js.map +0 -1
  195. package/dist/browser/react/use-client-cache.d.ts +0 -41
  196. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  197. package/dist/browser/react/use-client-cache.js +0 -39
  198. package/dist/browser/react/use-client-cache.js.map +0 -1
  199. package/dist/browser/react/use-handle.d.ts +0 -31
  200. package/dist/browser/react/use-handle.d.ts.map +0 -1
  201. package/dist/browser/react/use-handle.js +0 -144
  202. package/dist/browser/react/use-handle.js.map +0 -1
  203. package/dist/browser/react/use-href.d.ts +0 -33
  204. package/dist/browser/react/use-href.d.ts.map +0 -1
  205. package/dist/browser/react/use-href.js +0 -39
  206. package/dist/browser/react/use-href.js.map +0 -1
  207. package/dist/browser/react/use-link-status.d.ts +0 -37
  208. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  209. package/dist/browser/react/use-link-status.js +0 -99
  210. package/dist/browser/react/use-link-status.js.map +0 -1
  211. package/dist/browser/react/use-mount.d.ts +0 -25
  212. package/dist/browser/react/use-mount.d.ts.map +0 -1
  213. package/dist/browser/react/use-mount.js +0 -30
  214. package/dist/browser/react/use-mount.js.map +0 -1
  215. package/dist/browser/react/use-navigation.d.ts +0 -27
  216. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  217. package/dist/browser/react/use-navigation.js +0 -87
  218. package/dist/browser/react/use-navigation.js.map +0 -1
  219. package/dist/browser/react/use-segments.d.ts +0 -38
  220. package/dist/browser/react/use-segments.d.ts.map +0 -1
  221. package/dist/browser/react/use-segments.js +0 -130
  222. package/dist/browser/react/use-segments.js.map +0 -1
  223. package/dist/browser/request-controller.d.ts +0 -26
  224. package/dist/browser/request-controller.d.ts.map +0 -1
  225. package/dist/browser/request-controller.js +0 -147
  226. package/dist/browser/request-controller.js.map +0 -1
  227. package/dist/browser/rsc-router.d.ts +0 -129
  228. package/dist/browser/rsc-router.d.ts.map +0 -1
  229. package/dist/browser/rsc-router.js +0 -195
  230. package/dist/browser/rsc-router.js.map +0 -1
  231. package/dist/browser/scroll-restoration.d.ts +0 -93
  232. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  233. package/dist/browser/scroll-restoration.js +0 -321
  234. package/dist/browser/scroll-restoration.js.map +0 -1
  235. package/dist/browser/segment-structure-assert.d.ts +0 -17
  236. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  237. package/dist/browser/segment-structure-assert.js +0 -59
  238. package/dist/browser/segment-structure-assert.js.map +0 -1
  239. package/dist/browser/server-action-bridge.d.ts +0 -26
  240. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  241. package/dist/browser/server-action-bridge.js +0 -668
  242. package/dist/browser/server-action-bridge.js.map +0 -1
  243. package/dist/browser/shallow.d.ts +0 -12
  244. package/dist/browser/shallow.d.ts.map +0 -1
  245. package/dist/browser/shallow.js +0 -34
  246. package/dist/browser/shallow.js.map +0 -1
  247. package/dist/browser/types.d.ts +0 -369
  248. package/dist/browser/types.d.ts.map +0 -1
  249. package/dist/browser/types.js +0 -2
  250. package/dist/browser/types.js.map +0 -1
  251. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  252. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  253. package/dist/build/__tests__/generate-cli.test.js +0 -237
  254. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  255. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  256. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  257. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  258. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  259. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  260. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  261. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  262. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  263. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  264. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  265. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  266. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  267. package/dist/build/generate-manifest.d.ts +0 -81
  268. package/dist/build/generate-manifest.d.ts.map +0 -1
  269. package/dist/build/generate-manifest.js +0 -276
  270. package/dist/build/generate-manifest.js.map +0 -1
  271. package/dist/build/generate-route-types.d.ts +0 -115
  272. package/dist/build/generate-route-types.d.ts.map +0 -1
  273. package/dist/build/generate-route-types.js +0 -740
  274. package/dist/build/generate-route-types.js.map +0 -1
  275. package/dist/build/index.d.ts +0 -21
  276. package/dist/build/index.d.ts.map +0 -1
  277. package/dist/build/index.js +0 -21
  278. package/dist/build/index.js.map +0 -1
  279. package/dist/build/route-trie.d.ts +0 -71
  280. package/dist/build/route-trie.d.ts.map +0 -1
  281. package/dist/build/route-trie.js +0 -175
  282. package/dist/build/route-trie.js.map +0 -1
  283. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  284. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  285. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  286. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  287. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  288. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  289. package/dist/cache/__tests__/document-cache.test.js +0 -345
  290. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  291. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  292. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  293. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  294. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  295. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  296. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  297. package/dist/cache/__tests__/memory-store.test.js +0 -367
  298. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  299. package/dist/cache/cache-scope.d.ts +0 -102
  300. package/dist/cache/cache-scope.d.ts.map +0 -1
  301. package/dist/cache/cache-scope.js +0 -440
  302. package/dist/cache/cache-scope.js.map +0 -1
  303. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  304. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  305. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  306. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  307. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  308. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  309. package/dist/cache/cf/cf-cache-store.js +0 -242
  310. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  311. package/dist/cache/cf/index.d.ts +0 -14
  312. package/dist/cache/cf/index.d.ts.map +0 -1
  313. package/dist/cache/cf/index.js +0 -17
  314. package/dist/cache/cf/index.js.map +0 -1
  315. package/dist/cache/document-cache.d.ts +0 -64
  316. package/dist/cache/document-cache.d.ts.map +0 -1
  317. package/dist/cache/document-cache.js +0 -228
  318. package/dist/cache/document-cache.js.map +0 -1
  319. package/dist/cache/index.d.ts +0 -19
  320. package/dist/cache/index.d.ts.map +0 -1
  321. package/dist/cache/index.js +0 -21
  322. package/dist/cache/index.js.map +0 -1
  323. package/dist/cache/memory-segment-store.d.ts +0 -110
  324. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  325. package/dist/cache/memory-segment-store.js +0 -117
  326. package/dist/cache/memory-segment-store.js.map +0 -1
  327. package/dist/cache/memory-store.d.ts +0 -41
  328. package/dist/cache/memory-store.d.ts.map +0 -1
  329. package/dist/cache/memory-store.js +0 -191
  330. package/dist/cache/memory-store.js.map +0 -1
  331. package/dist/cache/types.d.ts +0 -317
  332. package/dist/cache/types.d.ts.map +0 -1
  333. package/dist/cache/types.js +0 -12
  334. package/dist/cache/types.js.map +0 -1
  335. package/dist/client.d.ts +0 -248
  336. package/dist/client.d.ts.map +0 -1
  337. package/dist/client.js +0 -367
  338. package/dist/client.js.map +0 -1
  339. package/dist/client.rsc.d.ts +0 -26
  340. package/dist/client.rsc.d.ts.map +0 -1
  341. package/dist/client.rsc.js +0 -46
  342. package/dist/client.rsc.js.map +0 -1
  343. package/dist/component-utils.d.ts +0 -36
  344. package/dist/component-utils.d.ts.map +0 -1
  345. package/dist/component-utils.js +0 -61
  346. package/dist/component-utils.js.map +0 -1
  347. package/dist/components/DefaultDocument.d.ts +0 -13
  348. package/dist/components/DefaultDocument.d.ts.map +0 -1
  349. package/dist/components/DefaultDocument.js +0 -15
  350. package/dist/components/DefaultDocument.js.map +0 -1
  351. package/dist/debug.d.ts +0 -58
  352. package/dist/debug.d.ts.map +0 -1
  353. package/dist/debug.js +0 -157
  354. package/dist/debug.js.map +0 -1
  355. package/dist/default-error-boundary.d.ts +0 -11
  356. package/dist/default-error-boundary.d.ts.map +0 -1
  357. package/dist/default-error-boundary.js +0 -45
  358. package/dist/default-error-boundary.js.map +0 -1
  359. package/dist/deps/browser.d.ts +0 -2
  360. package/dist/deps/browser.d.ts.map +0 -1
  361. package/dist/deps/browser.js +0 -3
  362. package/dist/deps/browser.js.map +0 -1
  363. package/dist/deps/html-stream-client.d.ts +0 -2
  364. package/dist/deps/html-stream-client.d.ts.map +0 -1
  365. package/dist/deps/html-stream-client.js +0 -3
  366. package/dist/deps/html-stream-client.js.map +0 -1
  367. package/dist/deps/html-stream-server.d.ts +0 -2
  368. package/dist/deps/html-stream-server.d.ts.map +0 -1
  369. package/dist/deps/html-stream-server.js +0 -3
  370. package/dist/deps/html-stream-server.js.map +0 -1
  371. package/dist/deps/rsc.d.ts +0 -2
  372. package/dist/deps/rsc.d.ts.map +0 -1
  373. package/dist/deps/rsc.js +0 -4
  374. package/dist/deps/rsc.js.map +0 -1
  375. package/dist/deps/ssr.d.ts +0 -2
  376. package/dist/deps/ssr.d.ts.map +0 -1
  377. package/dist/deps/ssr.js +0 -3
  378. package/dist/deps/ssr.js.map +0 -1
  379. package/dist/errors.d.ts +0 -174
  380. package/dist/errors.d.ts.map +0 -1
  381. package/dist/errors.js +0 -241
  382. package/dist/errors.js.map +0 -1
  383. package/dist/handle.d.ts +0 -78
  384. package/dist/handle.d.ts.map +0 -1
  385. package/dist/handle.js +0 -82
  386. package/dist/handle.js.map +0 -1
  387. package/dist/handles/MetaTags.d.ts +0 -14
  388. package/dist/handles/MetaTags.d.ts.map +0 -1
  389. package/dist/handles/MetaTags.js +0 -136
  390. package/dist/handles/MetaTags.js.map +0 -1
  391. package/dist/handles/index.d.ts +0 -6
  392. package/dist/handles/index.d.ts.map +0 -1
  393. package/dist/handles/index.js +0 -6
  394. package/dist/handles/index.js.map +0 -1
  395. package/dist/handles/meta.d.ts +0 -39
  396. package/dist/handles/meta.d.ts.map +0 -1
  397. package/dist/handles/meta.js +0 -202
  398. package/dist/handles/meta.js.map +0 -1
  399. package/dist/host/__tests__/errors.test.d.ts +0 -2
  400. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  401. package/dist/host/__tests__/errors.test.js +0 -76
  402. package/dist/host/__tests__/errors.test.js.map +0 -1
  403. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  404. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  405. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  406. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  407. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  408. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  409. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  410. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  411. package/dist/host/__tests__/router.test.d.ts +0 -2
  412. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  413. package/dist/host/__tests__/router.test.js +0 -241
  414. package/dist/host/__tests__/router.test.js.map +0 -1
  415. package/dist/host/__tests__/testing.test.d.ts +0 -2
  416. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  417. package/dist/host/__tests__/testing.test.js +0 -64
  418. package/dist/host/__tests__/testing.test.js.map +0 -1
  419. package/dist/host/__tests__/utils.test.d.ts +0 -2
  420. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  421. package/dist/host/__tests__/utils.test.js +0 -29
  422. package/dist/host/__tests__/utils.test.js.map +0 -1
  423. package/dist/host/cookie-handler.d.ts +0 -34
  424. package/dist/host/cookie-handler.d.ts.map +0 -1
  425. package/dist/host/cookie-handler.js +0 -124
  426. package/dist/host/cookie-handler.js.map +0 -1
  427. package/dist/host/errors.d.ts +0 -56
  428. package/dist/host/errors.d.ts.map +0 -1
  429. package/dist/host/errors.js +0 -79
  430. package/dist/host/errors.js.map +0 -1
  431. package/dist/host/index.d.ts +0 -29
  432. package/dist/host/index.d.ts.map +0 -1
  433. package/dist/host/index.js +0 -32
  434. package/dist/host/index.js.map +0 -1
  435. package/dist/host/pattern-matcher.d.ts +0 -36
  436. package/dist/host/pattern-matcher.d.ts.map +0 -1
  437. package/dist/host/pattern-matcher.js +0 -172
  438. package/dist/host/pattern-matcher.js.map +0 -1
  439. package/dist/host/router.d.ts +0 -26
  440. package/dist/host/router.d.ts.map +0 -1
  441. package/dist/host/router.js +0 -218
  442. package/dist/host/router.js.map +0 -1
  443. package/dist/host/testing.d.ts +0 -36
  444. package/dist/host/testing.d.ts.map +0 -1
  445. package/dist/host/testing.js +0 -55
  446. package/dist/host/testing.js.map +0 -1
  447. package/dist/host/types.d.ts +0 -115
  448. package/dist/host/types.d.ts.map +0 -1
  449. package/dist/host/types.js +0 -7
  450. package/dist/host/types.js.map +0 -1
  451. package/dist/host/utils.d.ts +0 -21
  452. package/dist/host/utils.d.ts.map +0 -1
  453. package/dist/host/utils.js +0 -23
  454. package/dist/host/utils.js.map +0 -1
  455. package/dist/href-client.d.ts +0 -131
  456. package/dist/href-client.d.ts.map +0 -1
  457. package/dist/href-client.js +0 -64
  458. package/dist/href-client.js.map +0 -1
  459. package/dist/href-context.d.ts +0 -29
  460. package/dist/href-context.d.ts.map +0 -1
  461. package/dist/href-context.js +0 -21
  462. package/dist/href-context.js.map +0 -1
  463. package/dist/index.d.ts +0 -73
  464. package/dist/index.d.ts.map +0 -1
  465. package/dist/index.js +0 -91
  466. package/dist/index.js.map +0 -1
  467. package/dist/index.rsc.d.ts +0 -32
  468. package/dist/index.rsc.d.ts.map +0 -1
  469. package/dist/index.rsc.js +0 -40
  470. package/dist/index.rsc.js.map +0 -1
  471. package/dist/internal-debug.d.ts +0 -2
  472. package/dist/internal-debug.d.ts.map +0 -1
  473. package/dist/internal-debug.js +0 -5
  474. package/dist/internal-debug.js.map +0 -1
  475. package/dist/loader.d.ts +0 -14
  476. package/dist/loader.d.ts.map +0 -1
  477. package/dist/loader.js +0 -20
  478. package/dist/loader.js.map +0 -1
  479. package/dist/loader.rsc.d.ts +0 -19
  480. package/dist/loader.rsc.d.ts.map +0 -1
  481. package/dist/loader.rsc.js +0 -99
  482. package/dist/loader.rsc.js.map +0 -1
  483. package/dist/network-error-thrower.d.ts +0 -17
  484. package/dist/network-error-thrower.d.ts.map +0 -1
  485. package/dist/network-error-thrower.js +0 -14
  486. package/dist/network-error-thrower.js.map +0 -1
  487. package/dist/outlet-context.d.ts +0 -13
  488. package/dist/outlet-context.d.ts.map +0 -1
  489. package/dist/outlet-context.js +0 -3
  490. package/dist/outlet-context.js.map +0 -1
  491. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  492. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  493. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  494. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  495. package/dist/prerender/param-hash.d.ts +0 -16
  496. package/dist/prerender/param-hash.d.ts.map +0 -1
  497. package/dist/prerender/param-hash.js +0 -36
  498. package/dist/prerender/param-hash.js.map +0 -1
  499. package/dist/prerender/store.d.ts +0 -38
  500. package/dist/prerender/store.d.ts.map +0 -1
  501. package/dist/prerender/store.js +0 -61
  502. package/dist/prerender/store.js.map +0 -1
  503. package/dist/prerender.d.ts +0 -66
  504. package/dist/prerender.d.ts.map +0 -1
  505. package/dist/prerender.js +0 -57
  506. package/dist/prerender.js.map +0 -1
  507. package/dist/reverse.d.ts +0 -196
  508. package/dist/reverse.d.ts.map +0 -1
  509. package/dist/reverse.js +0 -78
  510. package/dist/reverse.js.map +0 -1
  511. package/dist/root-error-boundary.d.ts +0 -33
  512. package/dist/root-error-boundary.d.ts.map +0 -1
  513. package/dist/root-error-boundary.js +0 -165
  514. package/dist/root-error-boundary.js.map +0 -1
  515. package/dist/route-content-wrapper.d.ts +0 -46
  516. package/dist/route-content-wrapper.d.ts.map +0 -1
  517. package/dist/route-content-wrapper.js +0 -77
  518. package/dist/route-content-wrapper.js.map +0 -1
  519. package/dist/route-definition.d.ts +0 -421
  520. package/dist/route-definition.d.ts.map +0 -1
  521. package/dist/route-definition.js +0 -868
  522. package/dist/route-definition.js.map +0 -1
  523. package/dist/route-map-builder.d.ts +0 -155
  524. package/dist/route-map-builder.d.ts.map +0 -1
  525. package/dist/route-map-builder.js +0 -237
  526. package/dist/route-map-builder.js.map +0 -1
  527. package/dist/route-types.d.ts +0 -165
  528. package/dist/route-types.d.ts.map +0 -1
  529. package/dist/route-types.js +0 -7
  530. package/dist/route-types.js.map +0 -1
  531. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  532. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  533. package/dist/router/__tests__/handler-context.test.js +0 -65
  534. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  535. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  536. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  537. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  538. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  539. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  540. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  541. package/dist/router/__tests__/match-context.test.js +0 -92
  542. package/dist/router/__tests__/match-context.test.js.map +0 -1
  543. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  544. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  545. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  546. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  547. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  548. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  549. package/dist/router/__tests__/match-result.test.js +0 -457
  550. package/dist/router/__tests__/match-result.test.js.map +0 -1
  551. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  552. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  553. package/dist/router/__tests__/on-error.test.js +0 -678
  554. package/dist/router/__tests__/on-error.test.js.map +0 -1
  555. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  556. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  557. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  558. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  559. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  560. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  561. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  562. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  563. package/dist/router/error-handling.d.ts +0 -77
  564. package/dist/router/error-handling.d.ts.map +0 -1
  565. package/dist/router/error-handling.js +0 -202
  566. package/dist/router/error-handling.js.map +0 -1
  567. package/dist/router/handler-context.d.ts +0 -20
  568. package/dist/router/handler-context.d.ts.map +0 -1
  569. package/dist/router/handler-context.js +0 -198
  570. package/dist/router/handler-context.js.map +0 -1
  571. package/dist/router/intercept-resolution.d.ts +0 -66
  572. package/dist/router/intercept-resolution.d.ts.map +0 -1
  573. package/dist/router/intercept-resolution.js +0 -246
  574. package/dist/router/intercept-resolution.js.map +0 -1
  575. package/dist/router/loader-resolution.d.ts +0 -64
  576. package/dist/router/loader-resolution.d.ts.map +0 -1
  577. package/dist/router/loader-resolution.js +0 -284
  578. package/dist/router/loader-resolution.js.map +0 -1
  579. package/dist/router/logging.d.ts +0 -15
  580. package/dist/router/logging.d.ts.map +0 -1
  581. package/dist/router/logging.js +0 -99
  582. package/dist/router/logging.js.map +0 -1
  583. package/dist/router/manifest.d.ts +0 -22
  584. package/dist/router/manifest.d.ts.map +0 -1
  585. package/dist/router/manifest.js +0 -181
  586. package/dist/router/manifest.js.map +0 -1
  587. package/dist/router/match-api.d.ts +0 -35
  588. package/dist/router/match-api.d.ts.map +0 -1
  589. package/dist/router/match-api.js +0 -406
  590. package/dist/router/match-api.js.map +0 -1
  591. package/dist/router/match-context.d.ts +0 -206
  592. package/dist/router/match-context.d.ts.map +0 -1
  593. package/dist/router/match-context.js +0 -17
  594. package/dist/router/match-context.js.map +0 -1
  595. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  596. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  597. package/dist/router/match-middleware/background-revalidation.js +0 -75
  598. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  599. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  600. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  601. package/dist/router/match-middleware/cache-lookup.js +0 -257
  602. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  603. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  604. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  605. package/dist/router/match-middleware/cache-store.js +0 -108
  606. package/dist/router/match-middleware/cache-store.js.map +0 -1
  607. package/dist/router/match-middleware/index.d.ts +0 -81
  608. package/dist/router/match-middleware/index.d.ts.map +0 -1
  609. package/dist/router/match-middleware/index.js +0 -80
  610. package/dist/router/match-middleware/index.js.map +0 -1
  611. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  612. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  613. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  614. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  615. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  616. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  617. package/dist/router/match-middleware/segment-resolution.js +0 -53
  618. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  619. package/dist/router/match-pipelines.d.ts +0 -147
  620. package/dist/router/match-pipelines.d.ts.map +0 -1
  621. package/dist/router/match-pipelines.js +0 -82
  622. package/dist/router/match-pipelines.js.map +0 -1
  623. package/dist/router/match-result.d.ts +0 -126
  624. package/dist/router/match-result.d.ts.map +0 -1
  625. package/dist/router/match-result.js +0 -93
  626. package/dist/router/match-result.js.map +0 -1
  627. package/dist/router/metrics.d.ts +0 -20
  628. package/dist/router/metrics.d.ts.map +0 -1
  629. package/dist/router/metrics.js +0 -47
  630. package/dist/router/metrics.js.map +0 -1
  631. package/dist/router/middleware.d.ts +0 -249
  632. package/dist/router/middleware.d.ts.map +0 -1
  633. package/dist/router/middleware.js +0 -434
  634. package/dist/router/middleware.js.map +0 -1
  635. package/dist/router/middleware.test.d.ts +0 -2
  636. package/dist/router/middleware.test.d.ts.map +0 -1
  637. package/dist/router/middleware.test.js +0 -816
  638. package/dist/router/middleware.test.js.map +0 -1
  639. package/dist/router/pattern-matching.d.ts +0 -149
  640. package/dist/router/pattern-matching.d.ts.map +0 -1
  641. package/dist/router/pattern-matching.js +0 -349
  642. package/dist/router/pattern-matching.js.map +0 -1
  643. package/dist/router/revalidation.d.ts +0 -44
  644. package/dist/router/revalidation.d.ts.map +0 -1
  645. package/dist/router/revalidation.js +0 -147
  646. package/dist/router/revalidation.js.map +0 -1
  647. package/dist/router/router-context.d.ts +0 -135
  648. package/dist/router/router-context.d.ts.map +0 -1
  649. package/dist/router/router-context.js +0 -36
  650. package/dist/router/router-context.js.map +0 -1
  651. package/dist/router/segment-resolution.d.ts +0 -127
  652. package/dist/router/segment-resolution.d.ts.map +0 -1
  653. package/dist/router/segment-resolution.js +0 -919
  654. package/dist/router/segment-resolution.js.map +0 -1
  655. package/dist/router/trie-matching.d.ts +0 -40
  656. package/dist/router/trie-matching.d.ts.map +0 -1
  657. package/dist/router/trie-matching.js +0 -127
  658. package/dist/router/trie-matching.js.map +0 -1
  659. package/dist/router/types.d.ts +0 -136
  660. package/dist/router/types.d.ts.map +0 -1
  661. package/dist/router/types.js +0 -7
  662. package/dist/router/types.js.map +0 -1
  663. package/dist/router.d.ts +0 -753
  664. package/dist/router.d.ts.map +0 -1
  665. package/dist/router.gen.d.ts +0 -6
  666. package/dist/router.gen.d.ts.map +0 -1
  667. package/dist/router.gen.js +0 -6
  668. package/dist/router.gen.js.map +0 -1
  669. package/dist/router.js +0 -1304
  670. package/dist/router.js.map +0 -1
  671. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  672. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  673. package/dist/rsc/__tests__/helpers.test.js +0 -140
  674. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  675. package/dist/rsc/handler.d.ts +0 -45
  676. package/dist/rsc/handler.d.ts.map +0 -1
  677. package/dist/rsc/handler.js +0 -1172
  678. package/dist/rsc/handler.js.map +0 -1
  679. package/dist/rsc/helpers.d.ts +0 -16
  680. package/dist/rsc/helpers.d.ts.map +0 -1
  681. package/dist/rsc/helpers.js +0 -55
  682. package/dist/rsc/helpers.js.map +0 -1
  683. package/dist/rsc/index.d.ts +0 -22
  684. package/dist/rsc/index.d.ts.map +0 -1
  685. package/dist/rsc/index.js +0 -23
  686. package/dist/rsc/index.js.map +0 -1
  687. package/dist/rsc/nonce.d.ts +0 -9
  688. package/dist/rsc/nonce.d.ts.map +0 -1
  689. package/dist/rsc/nonce.js +0 -18
  690. package/dist/rsc/nonce.js.map +0 -1
  691. package/dist/rsc/types.d.ts +0 -206
  692. package/dist/rsc/types.d.ts.map +0 -1
  693. package/dist/rsc/types.js +0 -8
  694. package/dist/rsc/types.js.map +0 -1
  695. package/dist/search-params.d.ts +0 -103
  696. package/dist/search-params.d.ts.map +0 -1
  697. package/dist/search-params.js +0 -74
  698. package/dist/search-params.js.map +0 -1
  699. package/dist/segment-system.d.ts +0 -75
  700. package/dist/segment-system.d.ts.map +0 -1
  701. package/dist/segment-system.js +0 -336
  702. package/dist/segment-system.js.map +0 -1
  703. package/dist/server/context.d.ts +0 -245
  704. package/dist/server/context.d.ts.map +0 -1
  705. package/dist/server/context.js +0 -197
  706. package/dist/server/context.js.map +0 -1
  707. package/dist/server/fetchable-loader-store.d.ts +0 -18
  708. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  709. package/dist/server/fetchable-loader-store.js +0 -18
  710. package/dist/server/fetchable-loader-store.js.map +0 -1
  711. package/dist/server/handle-store.d.ts +0 -85
  712. package/dist/server/handle-store.d.ts.map +0 -1
  713. package/dist/server/handle-store.js +0 -142
  714. package/dist/server/handle-store.js.map +0 -1
  715. package/dist/server/loader-registry.d.ts +0 -55
  716. package/dist/server/loader-registry.d.ts.map +0 -1
  717. package/dist/server/loader-registry.js +0 -132
  718. package/dist/server/loader-registry.js.map +0 -1
  719. package/dist/server/request-context.d.ts +0 -226
  720. package/dist/server/request-context.d.ts.map +0 -1
  721. package/dist/server/request-context.js +0 -290
  722. package/dist/server/request-context.js.map +0 -1
  723. package/dist/server/root-layout.d.ts +0 -4
  724. package/dist/server/root-layout.d.ts.map +0 -1
  725. package/dist/server/root-layout.js +0 -5
  726. package/dist/server/root-layout.js.map +0 -1
  727. package/dist/server.d.ts +0 -15
  728. package/dist/server.d.ts.map +0 -1
  729. package/dist/server.js +0 -20
  730. package/dist/server.js.map +0 -1
  731. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  732. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  733. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  734. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  735. package/dist/ssr/index.d.ts +0 -98
  736. package/dist/ssr/index.d.ts.map +0 -1
  737. package/dist/ssr/index.js +0 -158
  738. package/dist/ssr/index.js.map +0 -1
  739. package/dist/static-handler.d.ts +0 -50
  740. package/dist/static-handler.d.ts.map +0 -1
  741. package/dist/static-handler.gen.d.ts +0 -5
  742. package/dist/static-handler.gen.d.ts.map +0 -1
  743. package/dist/static-handler.gen.js +0 -5
  744. package/dist/static-handler.gen.js.map +0 -1
  745. package/dist/static-handler.js +0 -29
  746. package/dist/static-handler.js.map +0 -1
  747. package/dist/theme/ThemeProvider.d.ts +0 -20
  748. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  749. package/dist/theme/ThemeProvider.js +0 -240
  750. package/dist/theme/ThemeProvider.js.map +0 -1
  751. package/dist/theme/ThemeScript.d.ts +0 -48
  752. package/dist/theme/ThemeScript.d.ts.map +0 -1
  753. package/dist/theme/ThemeScript.js +0 -13
  754. package/dist/theme/ThemeScript.js.map +0 -1
  755. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  756. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  757. package/dist/theme/__tests__/theme.test.js +0 -103
  758. package/dist/theme/__tests__/theme.test.js.map +0 -1
  759. package/dist/theme/constants.d.ts +0 -29
  760. package/dist/theme/constants.d.ts.map +0 -1
  761. package/dist/theme/constants.js +0 -48
  762. package/dist/theme/constants.js.map +0 -1
  763. package/dist/theme/index.d.ts +0 -31
  764. package/dist/theme/index.d.ts.map +0 -1
  765. package/dist/theme/index.js +0 -36
  766. package/dist/theme/index.js.map +0 -1
  767. package/dist/theme/theme-context.d.ts +0 -40
  768. package/dist/theme/theme-context.d.ts.map +0 -1
  769. package/dist/theme/theme-context.js +0 -60
  770. package/dist/theme/theme-context.js.map +0 -1
  771. package/dist/theme/theme-script.d.ts +0 -27
  772. package/dist/theme/theme-script.d.ts.map +0 -1
  773. package/dist/theme/theme-script.js +0 -147
  774. package/dist/theme/theme-script.js.map +0 -1
  775. package/dist/theme/types.d.ts +0 -163
  776. package/dist/theme/types.d.ts.map +0 -1
  777. package/dist/theme/types.js +0 -11
  778. package/dist/theme/types.js.map +0 -1
  779. package/dist/theme/use-theme.d.ts +0 -12
  780. package/dist/theme/use-theme.d.ts.map +0 -1
  781. package/dist/theme/use-theme.js +0 -40
  782. package/dist/theme/use-theme.js.map +0 -1
  783. package/dist/types.d.ts +0 -1479
  784. package/dist/types.d.ts.map +0 -1
  785. package/dist/types.js +0 -10
  786. package/dist/types.js.map +0 -1
  787. package/dist/urls.d.ts +0 -441
  788. package/dist/urls.d.ts.map +0 -1
  789. package/dist/urls.gen.d.ts +0 -8
  790. package/dist/urls.gen.d.ts.map +0 -1
  791. package/dist/urls.gen.js +0 -8
  792. package/dist/urls.gen.js.map +0 -1
  793. package/dist/urls.js +0 -443
  794. package/dist/urls.js.map +0 -1
  795. package/dist/use-loader.d.ts +0 -127
  796. package/dist/use-loader.d.ts.map +0 -1
  797. package/dist/use-loader.js +0 -237
  798. package/dist/use-loader.js.map +0 -1
  799. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  800. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  801. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  802. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  803. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  804. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  805. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  806. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  807. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  808. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  809. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  810. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  811. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  812. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  813. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  814. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  815. package/dist/vite/ast-handler-extract.d.ts +0 -49
  816. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  817. package/dist/vite/ast-handler-extract.js +0 -249
  818. package/dist/vite/ast-handler-extract.js.map +0 -1
  819. package/dist/vite/expose-action-id.d.ts +0 -19
  820. package/dist/vite/expose-action-id.d.ts.map +0 -1
  821. package/dist/vite/expose-action-id.js +0 -250
  822. package/dist/vite/expose-action-id.js.map +0 -1
  823. package/dist/vite/expose-id-utils.d.ts +0 -69
  824. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  825. package/dist/vite/expose-id-utils.js +0 -289
  826. package/dist/vite/expose-id-utils.js.map +0 -1
  827. package/dist/vite/expose-internal-ids.d.ts +0 -22
  828. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  829. package/dist/vite/expose-internal-ids.js +0 -886
  830. package/dist/vite/expose-internal-ids.js.map +0 -1
  831. package/dist/vite/index.d.ts +0 -149
  832. package/dist/vite/index.d.ts.map +0 -1
  833. package/dist/vite/index.js.bak +0 -5448
  834. package/dist/vite/index.js.map +0 -1
  835. package/dist/vite/index.named-routes.gen.ts +0 -103
  836. package/dist/vite/package-resolution.d.ts +0 -43
  837. package/dist/vite/package-resolution.d.ts.map +0 -1
  838. package/dist/vite/package-resolution.js +0 -112
  839. package/dist/vite/package-resolution.js.map +0 -1
  840. package/dist/vite/virtual-entries.d.ts +0 -25
  841. package/dist/vite/virtual-entries.d.ts.map +0 -1
  842. package/dist/vite/virtual-entries.js +0 -110
  843. package/dist/vite/virtual-entries.js.map +0 -1
@@ -6,21 +6,37 @@
6
6
  * navigation requests. The server responds with `Vary: X-Rango-State`,
7
7
  * so the browser HTTP cache keys responses by (URL, X-Rango-State value).
8
8
  *
9
- * Format: `{buildVersion}:{invalidationTimestamp}`
9
+ * Value format: `{buildVersion}:{invalidationTimestamp}`
10
10
  * - Build version changes on deploy, busting all cached prefetches.
11
11
  * - Timestamp changes on server action invalidation.
12
12
  *
13
- * localStorage is cross-tab and survives page refresh, so:
14
- * - One tab's prefetch warms the cache for all tabs.
15
- * - Invalidation in one tab is picked up by other tabs on next fetch.
13
+ * Storage key is namespaced per routerId (`rango-state:{routerId}`) so
14
+ * tabs in different apps on the same origin do not collide. Two tabs in
15
+ * the same app share a key → one tab's invalidation is picked up by the
16
+ * other via the `storage` event. A smooth cross-app transition in this
17
+ * tab rebinds to the target app's key; other tabs still in the old app
18
+ * keep their own key intact.
19
+ *
20
+ * If no routerId is supplied, falls back to a single legacy key for
21
+ * backward compatibility (single-app deployments unaffected).
16
22
  */
17
23
 
18
- const STORAGE_KEY = "rango-state";
24
+ const LEGACY_STORAGE_KEY = "rango-state";
25
+
26
+ function buildStorageKey(routerId: string | undefined): string {
27
+ return routerId ? `${LEGACY_STORAGE_KEY}:${routerId}` : LEGACY_STORAGE_KEY;
28
+ }
19
29
 
20
30
  // Module-level cache avoids hitting localStorage on every getRangoState() call.
21
31
  // Initialized from localStorage on first access or by initRangoState().
22
32
  let cachedState: string | null = null;
23
33
 
34
+ // The localStorage key this tab is currently bound to. Rebinds on
35
+ // initRangoState (document boot) and setRangoStateLocal (smooth app
36
+ // switch). The storage listener filters cross-tab events by this key so
37
+ // events from tabs in a different app are ignored.
38
+ let currentStorageKey: string = LEGACY_STORAGE_KEY;
39
+
24
40
  // Cross-tab sync: the `storage` event fires in OTHER tabs when one tab writes
25
41
  // to localStorage, keeping cachedState fresh without polling.
26
42
  let storageListenerAttached = false;
@@ -28,7 +44,10 @@ let storageListenerAttached = false;
28
44
  function attachStorageListener(): void {
29
45
  if (storageListenerAttached || typeof window === "undefined") return;
30
46
  window.addEventListener("storage", (e) => {
31
- if (e.key !== STORAGE_KEY) return;
47
+ // Only react to events for this tab's current app namespace. Events
48
+ // under other routerId-scoped keys belong to other apps and must not
49
+ // clobber this tab's state.
50
+ if (e.key !== currentStorageKey) return;
32
51
  cachedState = e.newValue;
33
52
  });
34
53
  storageListenerAttached = true;
@@ -37,16 +56,22 @@ function attachStorageListener(): void {
37
56
  /**
38
57
  * Initialize the Rango state key in localStorage.
39
58
  * Called once at app startup with the build version from the server.
40
- * If localStorage already has a key with matching version prefix, keeps it
41
- * (preserves invalidation state across refresh). Otherwise writes a new key.
59
+ * The routerId scopes the storage key to this app; in multi-app setups
60
+ * each app owns its own `rango-state:{routerId}` key and cannot observe
61
+ * invalidations from sibling apps on the same origin.
62
+ *
63
+ * If localStorage already has a matching-version entry under the key,
64
+ * keeps it (preserves invalidation state across refresh). Otherwise
65
+ * writes a new value.
42
66
  */
43
- export function initRangoState(version: string): void {
67
+ export function initRangoState(version: string, routerId?: string): void {
68
+ currentStorageKey = buildStorageKey(routerId);
44
69
  if (typeof window === "undefined") return;
45
70
 
46
71
  attachStorageListener();
47
72
 
48
73
  try {
49
- const existing = localStorage.getItem(STORAGE_KEY);
74
+ const existing = localStorage.getItem(currentStorageKey);
50
75
  if (existing) {
51
76
  const colonIdx = existing.indexOf(":");
52
77
  if (colonIdx > 0) {
@@ -59,7 +84,7 @@ export function initRangoState(version: string): void {
59
84
  }
60
85
  // New version or first load
61
86
  const newState = `${version}:${Date.now()}`;
62
- localStorage.setItem(STORAGE_KEY, newState);
87
+ localStorage.setItem(currentStorageKey, newState);
63
88
  cachedState = newState;
64
89
  } catch {
65
90
  // localStorage may be unavailable (private browsing in some browsers)
@@ -77,7 +102,7 @@ export function getRangoState(): string {
77
102
  if (typeof window === "undefined") return "0:0";
78
103
 
79
104
  try {
80
- const stored = localStorage.getItem(STORAGE_KEY);
105
+ const stored = localStorage.getItem(currentStorageKey);
81
106
  if (stored) {
82
107
  cachedState = stored;
83
108
  return stored;
@@ -89,6 +114,21 @@ export function getRangoState(): string {
89
114
  return "0:0";
90
115
  }
91
116
 
117
+ /**
118
+ * Update the in-memory rango-state to a new version WITHOUT writing
119
+ * localStorage. Intended for smooth cross-app transitions in this tab only:
120
+ * subsequent requests from this tab send the new token, but other tabs
121
+ * still in the previous app do not observe a storage event. Rebinds this
122
+ * tab's storage key to the target app's namespace (`rango-state:{routerId}`)
123
+ * so subsequent storage events only reflect the new app. On the next hard
124
+ * reload, initRangoState reconciles localStorage from the server's
125
+ * authoritative version.
126
+ */
127
+ export function setRangoStateLocal(version: string, routerId?: string): void {
128
+ currentStorageKey = buildStorageKey(routerId);
129
+ cachedState = `${version}:${Date.now()}`;
130
+ }
131
+
92
132
  /**
93
133
  * Invalidate the Rango state key. Called when server actions mutate data.
94
134
  * Updates the timestamp portion while keeping the version prefix.
@@ -105,7 +145,7 @@ export function invalidateRangoState(): void {
105
145
  if (typeof window === "undefined") return;
106
146
 
107
147
  try {
108
- localStorage.setItem(STORAGE_KEY, newState);
148
+ localStorage.setItem(currentStorageKey, newState);
109
149
  } catch {
110
150
  // Silently handle localStorage errors
111
151
  }
@@ -28,6 +28,7 @@ import { NonceContext } from "./nonce-context.js";
28
28
  import type { ResolvedThemeConfig, Theme } from "../../theme/types.js";
29
29
  import { cancelAllPrefetches } from "../prefetch/queue.js";
30
30
  import { handleNavigationEnd } from "../scroll-restoration.js";
31
+ import type { AppShellRef } from "../app-shell.js";
31
32
 
32
33
  /**
33
34
  * Process handles from an async generator, updating the event controller
@@ -133,15 +134,23 @@ export interface NavigationProviderProps {
133
134
  warmupEnabled?: boolean;
134
135
 
135
136
  /**
136
- * App version from server payload (stable, immutable).
137
- * Forwarded to context for cache key building.
137
+ * App version from server payload.
138
+ * Used only as a fallback when `appShellRef` is not supplied.
138
139
  */
139
140
  version?: string;
140
141
 
141
142
  /**
142
143
  * URL prefix for all routes (from createRouter({ basename })).
144
+ * Used only as a fallback when `appShellRef` is not supplied.
143
145
  */
144
146
  basename?: string;
147
+
148
+ /**
149
+ * Live app-shell ref. When provided, the context's `basename` and `version`
150
+ * properties become live getters that track app-switch updates without
151
+ * invalidating the memoized context value.
152
+ */
153
+ appShellRef?: AppShellRef;
145
154
  }
146
155
 
147
156
  /**
@@ -175,6 +184,7 @@ export function NavigationProvider({
175
184
  warmupEnabled,
176
185
  version,
177
186
  basename,
187
+ appShellRef,
178
188
  }: NavigationProviderProps): ReactNode {
179
189
  // Track current payload for rendering (this triggers re-renders)
180
190
  const [payload, setPayload] = useState(initialPayload);
@@ -196,18 +206,39 @@ export function NavigationProvider({
196
206
  await bridge.refresh();
197
207
  }, []);
198
208
 
199
- // Context value is stable (store, eventController, navigate, refresh never change)
200
- const contextValue = useMemo<NavigationStoreContextValue>(
201
- () => ({
209
+ // Context value is stable (store, eventController, navigate, refresh never
210
+ // change). When an appShellRef is supplied, `basename` and `version` are
211
+ // installed as live getters so app-switch transitions (which update the ref)
212
+ // propagate to consumers without forcing a tree-wide rerender.
213
+ const contextValue = useMemo<NavigationStoreContextValue>(() => {
214
+ if (appShellRef) {
215
+ const value = {
216
+ store,
217
+ eventController,
218
+ navigate,
219
+ refresh,
220
+ } as NavigationStoreContextValue;
221
+ Object.defineProperty(value, "basename", {
222
+ configurable: true,
223
+ enumerable: true,
224
+ get: () => appShellRef.get().basename,
225
+ });
226
+ Object.defineProperty(value, "version", {
227
+ configurable: true,
228
+ enumerable: true,
229
+ get: () => appShellRef.get().version,
230
+ });
231
+ return value;
232
+ }
233
+ return {
202
234
  store,
203
235
  eventController,
204
236
  navigate,
205
237
  refresh,
206
238
  version,
207
239
  basename,
208
- }),
209
- [],
210
- );
240
+ };
241
+ }, []);
211
242
 
212
243
  // Connection warmup: keep TLS alive after idle periods.
213
244
  // After 60s of no user interaction, marks connection as "cold".
@@ -402,7 +433,11 @@ export function NavigationProvider({
402
433
  // Build the content tree
403
434
  let content = <RootErrorBoundary>{root}</RootErrorBoundary>;
404
435
 
405
- // Wrap with ThemeProvider when theme is enabled
436
+ // Wrap with ThemeProvider when theme is enabled. The ThemeProvider is
437
+ // document-lifetime: its config comes from the initial load and does NOT
438
+ // swap on cross-app transitions, because the ThemeProvider sits above the
439
+ // segment tree and a smooth (no-reload) app switch cannot safely remount
440
+ // it. A new theme config only takes effect on a full document load.
406
441
  if (themeConfig) {
407
442
  content = (
408
443
  <ThemeProvider config={themeConfig} initialTheme={initialTheme}>
@@ -13,6 +13,10 @@ import type { RouterInstance, RouterNavigateOptions } from "../types.js";
13
13
  * useRouter() do not re-render on navigation state changes.
14
14
  * For reactive navigation state, use useNavigation() instead.
15
15
  *
16
+ * Methods read `basename` from the live context on each call so that
17
+ * cross-app navigation (app-switch) sees the current app's basename
18
+ * rather than the one captured at mount time.
19
+ *
16
20
  * @example
17
21
  * ```tsx
18
22
  * const router = useRouter();
@@ -29,7 +33,10 @@ export function useRouter(): RouterInstance {
29
33
  throw new Error("useRouter must be used within NavigationProvider");
30
34
  }
31
35
 
32
- // Stable reference: ctx is itself stable (NavigationProvider memoizes with [])
36
+ // Stable reference: ctx itself is stable, and reads on each method call
37
+ // pick up live basename values from the context (backed by a live ref
38
+ // in NavigationProvider), so app-switch transitions are reflected without
39
+ // recreating this object.
33
40
  return useMemo<RouterInstance>(() => {
34
41
  /** Prefix a root-relative path with basename if not already prefixed. */
35
42
  function withBasename(url: string): string {
@@ -28,6 +28,7 @@ import {
28
28
  isInterceptSegment,
29
29
  splitInterceptSegments,
30
30
  } from "./intercept-utils.js";
31
+ import { createAppShellRef } from "./app-shell.js";
31
32
 
32
33
  // Vite HMR types are provided by vite/client
33
34
 
@@ -114,6 +115,13 @@ export interface BrowserAppContext {
114
115
  warmupEnabled?: boolean;
115
116
  /** App version for prefetch version mismatch detection */
116
117
  version?: string;
118
+ /**
119
+ * Live app-shell ref. Cross-app navigations replace its contents so the
120
+ * NavigationProvider and renderSegments pick up the target app's
121
+ * rootLayout, basename, and version without consumer rerenders. Theme,
122
+ * warmup, and prefetch TTL are document-lifetime (see AppShell).
123
+ */
124
+ appShellRef?: import("./app-shell.js").AppShellRef;
117
125
  }
118
126
 
119
127
  // Module-level state for the initialized app
@@ -204,13 +212,23 @@ export async function initBrowserApp(
204
212
  // Create composable utilities
205
213
  const client = createNavigationClient(deps);
206
214
 
207
- // Extract rootLayout and version from metadata for browser-side re-renders
208
- const rootLayout = initialPayload.metadata?.rootLayout;
215
+ // Capture the per-router app-shell so cross-app navigations can replace
216
+ // it atomically. rootLayout, basename, and version live here and are
217
+ // read through the ref at call time rather than closed over. Theme,
218
+ // warmup, and prefetch TTL are deliberately excluded — they are
219
+ // document-lifetime and stay stable across smooth cross-app transitions.
209
220
  const version = initialPayload.metadata?.version;
221
+ const appShellRef = createAppShellRef({
222
+ routerId: initialPayload.metadata?.routerId,
223
+ rootLayout: initialPayload.metadata?.rootLayout,
224
+ basename: initialPayload.metadata?.basename,
225
+ version,
226
+ });
210
227
 
211
228
  // Initialize the localStorage state key for cache invalidation.
212
- // Uses the build version so a new deploy automatically busts all cached prefetches.
213
- initRangoState(version ?? "0");
229
+ // The build version busts cached prefetches on deploy; the routerId
230
+ // namespaces the key so sibling apps on the same origin don't collide.
231
+ initRangoState(version ?? "0", initialPayload.metadata?.routerId);
214
232
  setAppVersion(version);
215
233
 
216
234
  // Initialize the in-memory prefetch cache TTL from server config.
@@ -220,11 +238,17 @@ export async function initBrowserApp(
220
238
  initPrefetchCache(prefetchCacheTTL);
221
239
  }
222
240
 
223
- // Create a bound renderSegments that includes rootLayout
241
+ // Create a bound renderSegments that reads rootLayout through the shell
242
+ // ref. On app switch the ref is updated before the tree re-renders, so
243
+ // the new app's Document (rootLayout) replaces the previous one.
224
244
  const renderSegments = (
225
245
  segments: ResolvedSegment[],
226
246
  options?: RenderSegmentsOptions,
227
- ) => baseRenderSegments(segments, { ...options, rootLayout });
247
+ ) =>
248
+ baseRenderSegments(segments, {
249
+ ...options,
250
+ rootLayout: appShellRef.get().rootLayout,
251
+ });
228
252
 
229
253
  // Lazy reference for navigation bridge — the action bridge is created first
230
254
  // but may need to trigger SPA navigation for action redirects.
@@ -256,6 +280,7 @@ export async function initBrowserApp(
256
280
  onUpdate: (update) => store.emitUpdate(update),
257
281
  renderSegments,
258
282
  version: version,
283
+ appShellRef,
259
284
  });
260
285
 
261
286
  // Connect action redirect → navigation bridge (now that both are initialized)
@@ -416,6 +441,7 @@ export async function initBrowserApp(
416
441
  initialTheme: effectiveInitialTheme,
417
442
  warmupEnabled: initialPayload.metadata?.warmupEnabled ?? true,
418
443
  version,
444
+ appShellRef,
419
445
  };
420
446
  browserAppContext = context;
421
447
 
@@ -481,6 +507,7 @@ export function RSCRouter(_props: RSCRouterProps): React.ReactElement {
481
507
  initialTheme,
482
508
  warmupEnabled,
483
509
  version,
510
+ appShellRef,
484
511
  } = getBrowserAppContext();
485
512
 
486
513
  // Signal that the React tree has hydrated. useEffect only fires after
@@ -501,6 +528,7 @@ export function RSCRouter(_props: RSCRouterProps): React.ReactElement {
501
528
  warmupEnabled={warmupEnabled}
502
529
  version={version}
503
530
  basename={initialPayload.metadata?.basename}
531
+ appShellRef={appShellRef}
504
532
  />
505
533
  );
506
534
  }
@@ -427,6 +427,12 @@ export interface NavigationStore {
427
427
  markCacheAsStale(): void;
428
428
  markCacheAsStaleAndBroadcast(): void;
429
429
  clearHistoryCache(): void;
430
+ /**
431
+ * Clear this tab's nav + prefetch caches without broadcasting or rotating
432
+ * shared state. Intended for app-switch transitions that affect only this
433
+ * tab's session.
434
+ */
435
+ clearHistoryCacheLocal(): void;
430
436
  broadcastCacheInvalidation(): void;
431
437
 
432
438
  // Cross-tab refresh callback (set by navigation bridge)
@@ -542,6 +548,13 @@ export interface NavigationBridge {
542
548
  registerLinkInterception(): () => void;
543
549
  /** Update the RSC version (e.g. after HMR). Clears prefetch cache. */
544
550
  updateVersion(newVersion: string): void;
551
+ /**
552
+ * Replace the active app-shell snapshot (rootLayout, basename, version)
553
+ * atomically. Used on cross-app navigations when the response's routerId
554
+ * indicates the user entered a different app. Theme, warmup, and prefetch
555
+ * TTL are document-lifetime and not part of the shell.
556
+ */
557
+ updateAppShell(next: import("./app-shell.js").AppShell): void;
545
558
  }
546
559
 
547
560
  /**
@@ -67,13 +67,11 @@ export const MAX_REVALIDATION_INTERVAL = 30;
67
67
  // Types
68
68
  // ============================================================================
69
69
 
70
- /**
71
- * Cloudflare Workers ExecutionContext (subset we need)
72
- */
73
- export interface ExecutionContext {
74
- waitUntil(promise: Promise<any>): void;
75
- passThroughOnException(): void;
76
- }
70
+ // Re-exported from the canonical home so cf-cache-store consumers keep
71
+ // importing `ExecutionContext` from this module without a second interface
72
+ // drifting over time.
73
+ export type { ExecutionContext } from "../../types/request-scope.js";
74
+ import type { ExecutionContext } from "../../types/request-scope.js";
77
75
 
78
76
  /**
79
77
  * Minimal Cloudflare KV Namespace interface.
package/src/index.rsc.ts CHANGED
@@ -172,6 +172,9 @@ export type { PublicRequestContext as RequestContext } from "./server/request-co
172
172
  import type { PublicRequestContext } from "./server/request-context.js";
173
173
  import type { DefaultEnv } from "./types/global-namespace.js";
174
174
 
175
+ // Shared base for every user-facing request context (mirrors index.ts).
176
+ export type { RequestScope, ExecutionContext } from "./types/request-scope.js";
177
+
175
178
  export const getRequestContext: <
176
179
  TEnv = DefaultEnv,
177
180
  >() => PublicRequestContext<TEnv> = _getRequestContextInternal;
package/src/index.ts CHANGED
@@ -264,6 +264,9 @@ export function transition(): never {
264
264
  // Request context type (safe for client)
265
265
  export type { PublicRequestContext as RequestContext } from "./server/request-context.js";
266
266
 
267
+ // Shared base for every user-facing request context.
268
+ export type { RequestScope, ExecutionContext } from "./types/request-scope.js";
269
+
267
270
  // Cookie store types (safe for client)
268
271
  export type {
269
272
  CookieStore,
@@ -1,4 +1,4 @@
1
- import { Context, createContext, type ReactNode } from "react";
1
+ import { type Context, createContext, type ReactNode } from "react";
2
2
  import type { ResolvedSegment } from "./types";
3
3
 
4
4
  export interface OutletContextValue {
@@ -19,6 +19,7 @@ import { NOCACHE_SYMBOL, assertNotInsideCacheExec } from "../cache/taint.js";
19
19
  import { isAutoGeneratedRouteName } from "../route-name.js";
20
20
  import { PRERENDER_PASSTHROUGH } from "../prerender.js";
21
21
  import { encodePathSegment } from "./url-params.js";
22
+ import { fireAndForgetWaitUntil } from "../types/request-scope.js";
22
23
 
23
24
  /**
24
25
  * Strip internal _rsc* query params from a URL.
@@ -282,8 +283,12 @@ export function createHandlerContext<TEnv>(
282
283
  search: searchSchema ? resolvedSearchParams : {},
283
284
  pathname,
284
285
  url,
285
- originalUrl: new URL(request.url),
286
+ originalUrl: requestContext?.originalUrl ?? new URL(request.url),
286
287
  env: bindings,
288
+ waitUntil: requestContext
289
+ ? requestContext.waitUntil.bind(requestContext)
290
+ : fireAndForgetWaitUntil,
291
+ executionContext: requestContext?.executionContext,
287
292
  _variables: variables,
288
293
  get: ((keyOrVar: any) => {
289
294
  // Read-time guard: non-cacheable var inside cache() → throw.
@@ -388,6 +393,12 @@ export function createPrerenderContext<TEnv>(
388
393
  "Configure buildEnv in your rango() plugin options to enable build-time env access.",
389
394
  );
390
395
  },
396
+ // Build-time prerender has no live request. waitUntil is a true no-op
397
+ // (running fn() here would fire side effects during build, which is
398
+ // incorrect — these are meant to outlive the live response).
399
+ // executionContext is absent for the same reason.
400
+ waitUntil: () => {},
401
+ executionContext: undefined,
391
402
  _variables: variables,
392
403
  get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
393
404
  set: ((keyOrVar: any, value: any) => {
@@ -477,6 +488,11 @@ export function createStaticContext<TEnv>(
477
488
  "Configure buildEnv in your rango() plugin options to enable build-time env access.",
478
489
  );
479
490
  },
491
+ // Static() handlers have no live request. waitUntil is a true no-op
492
+ // (running fn() here would fire side effects during build, which is
493
+ // incorrect). executionContext is absent for the same reason.
494
+ waitUntil: () => {},
495
+ executionContext: undefined,
480
496
  _variables: variables,
481
497
  get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
482
498
  set: ((keyOrVar: any, value: any) => {
@@ -1,7 +1,7 @@
1
1
  import { registerRouteMap } from "../route-map-builder.js";
2
2
  import { extractStaticPrefix } from "./pattern-matching.js";
3
3
  import {
4
- EntryData,
4
+ type EntryData,
5
5
  RSCRouterContext,
6
6
  runWithPrefixes,
7
7
  getIsolatedLazyParent,
@@ -266,7 +266,10 @@ function createLoaderExecutor<TEnv>(
266
266
  search: (ctx as any).search,
267
267
  pathname: ctx.pathname,
268
268
  url: ctx.url,
269
+ originalUrl: ctx.originalUrl,
269
270
  env: ctx.env,
271
+ waitUntil: ctx.waitUntil.bind(ctx),
272
+ executionContext: ctx.executionContext,
270
273
  get: ((keyOrVar: any) =>
271
274
  contextGet(variables, keyOrVar)) as typeof ctx.get,
272
275
  use: ((item: LoaderDefinition<any, any> | Handle<any, any>) => {
@@ -22,10 +22,10 @@ import { collectRouteMiddleware } from "./middleware.js";
22
22
  import { traverseBack } from "./pattern-matching.js";
23
23
  import { DefaultErrorFallback } from "../default-error-boundary.js";
24
24
  import {
25
- EntryData,
26
- LoaderEntry,
25
+ type EntryData,
26
+ type LoaderEntry,
27
27
  getContext,
28
- InterceptSelectorContext,
28
+ type InterceptSelectorContext,
29
29
  } from "../server/context";
30
30
  import type { ErrorBoundaryHandler, ErrorInfo, MatchResult } from "../types";
31
31
  import type { ReactNode } from "react";
@@ -14,6 +14,7 @@ import type {
14
14
  import type { ScopedReverseFunction } from "../reverse.js";
15
15
  import type { Theme } from "../theme/types.js";
16
16
  import type { LocationStateEntry } from "../browser/react/location-state-shared.js";
17
+ import type { RequestScope } from "../types/request-scope.js";
17
18
 
18
19
  /**
19
20
  * Get variable function type
@@ -57,28 +58,7 @@ export interface CookieOptions {
57
58
  export interface MiddlewareContext<
58
59
  TEnv = any,
59
60
  TParams = Record<string, string>,
60
- > {
61
- /** Original request */
62
- request: Request;
63
-
64
- /** Parsed URL (with internal `_rsc*` params stripped) */
65
- url: URL;
66
-
67
- /**
68
- * The original request URL with all parameters intact, including
69
- * internal `_rsc*` transport params.
70
- */
71
- originalUrl: URL;
72
-
73
- /** URL pathname */
74
- pathname: string;
75
-
76
- /** URL search params */
77
- searchParams: URLSearchParams;
78
-
79
- /** Platform bindings (Cloudflare, etc.) */
80
- env: TEnv;
81
-
61
+ > extends RequestScope<TEnv> {
82
62
  /** URL params extracted from route/middleware pattern */
83
63
  params: TParams;
84
64
 
@@ -11,6 +11,7 @@
11
11
 
12
12
  import { contextGet, contextSet } from "../context-var.js";
13
13
  import { safeDecodeURIComponent } from "./url-params.js";
14
+ import { fireAndForgetWaitUntil } from "../types/request-scope.js";
14
15
  import type {
15
16
  CollectedMiddleware,
16
17
  MiddlewareCollectableEntry,
@@ -186,14 +187,22 @@ export function createMiddlewareContext<TEnv>(
186
187
  return responseHolder.response;
187
188
  };
188
189
 
190
+ // Capture reqCtx once: the request-scoped platform fields
191
+ // (originalUrl, executionContext, waitUntil) are immutable per request,
192
+ // so snapshotting beats re-reading ALS on every access. The lazy getters
193
+ // below (routeName, theme, setTheme) stay lazy because those can change
194
+ // during `await next()`.
195
+ const reqCtx = _getRequestContext();
189
196
  return {
190
197
  request,
191
198
  url,
192
- originalUrl: new URL(request.url),
199
+ originalUrl: reqCtx?.originalUrl ?? new URL(request.url),
193
200
  pathname: url.pathname,
194
201
  searchParams: url.searchParams,
195
202
  env: env as MiddlewareContext<TEnv>["env"],
196
203
  params,
204
+ executionContext: reqCtx?.executionContext,
205
+ waitUntil: reqCtx ? reqCtx.waitUntil.bind(reqCtx) : fireAndForgetWaitUntil,
197
206
  // Getter: re-derives from request context on each access so that global
198
207
  // middleware sees the matched route name after await next().
199
208
  get routeName(): MiddlewareContext<TEnv>["routeName"] {
package/src/router.ts CHANGED
@@ -22,8 +22,7 @@ import type { UrlPatterns } from "./urls.js";
22
22
  import type { UrlBuilder } from "./urls/pattern-types.js";
23
23
  import { urls } from "./urls.js";
24
24
  import {
25
- EntryData,
26
- InterceptSelectorContext,
25
+ type EntryData,
27
26
  getContext,
28
27
  RSCRouterContext,
29
28
  type MetricsStore,
@@ -57,6 +57,7 @@ import {
57
57
  getRouterTrie,
58
58
  } from "../route-map-builder.js";
59
59
  import type { HandlerContext } from "./handler-context.js";
60
+ import type { SegmentCacheStore } from "../cache/types.js";
60
61
  import { buildRouterTrieFromUrlpatterns } from "./manifest-init.js";
61
62
  import { handleProgressiveEnhancement } from "./progressive-enhancement.js";
62
63
  import {
@@ -353,7 +354,7 @@ export function createRSCHandler<
353
354
  // Resolve cache store configuration
354
355
  // Priority: options.cache (handler override) > router.cache (router default)
355
356
  // Store is enabled only if: config provided, enabled, and no ?__no_cache query param
356
- let cacheStore = undefined;
357
+ let cacheStore: SegmentCacheStore | undefined;
357
358
  const cacheOption = options.cache ?? router.cache;
358
359
  if (cacheOption && !url.searchParams.has("__no_cache")) {
359
360
  const cacheConfig =
@@ -80,10 +80,13 @@ export async function handleResponseRoute<TEnv>(
80
80
  env,
81
81
  searchParams: cleanUrl.searchParams,
82
82
  url: cleanUrl,
83
+ originalUrl: reqCtx.originalUrl,
83
84
  pathname: url.pathname,
84
85
  reverse: createReverseFunction(handlerCtx.getRequiredRouteMap()),
85
86
  get: ((keyOrVar: any) => contextGet(variables, keyOrVar)) as any,
86
87
  header: (name: string, value: string) => reqCtx.header(name, value),
88
+ waitUntil: reqCtx.waitUntil.bind(reqCtx),
89
+ executionContext: reqCtx.executionContext,
87
90
  _responseType: preview.responseType,
88
91
  };
89
92
  // Brand with taint symbol so "use cache" detects it as request-scoped