@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
package/README.md CHANGED
@@ -521,10 +521,12 @@ function BlogIndex(ctx: HandlerContext) {
521
521
  />
522
522
  );
523
523
  }
524
+ ```
524
525
 
525
- // client
526
+ ```tsx
526
527
  "use client";
527
528
  import { Link } from "@rangojs/router/client";
529
+
528
530
  export function Nav({ home, post }: { home: string; post: string }) {
529
531
  return (
530
532
  <nav>
@@ -1864,7 +1864,7 @@ import { resolve } from "node:path";
1864
1864
  // package.json
1865
1865
  var package_default = {
1866
1866
  name: "@rangojs/router",
1867
- version: "0.0.0-experimental.85",
1867
+ version: "0.0.0-experimental.86",
1868
1868
  description: "Django-inspired RSC router with composable URL patterns",
1869
1869
  keywords: [
1870
1870
  "react",
@@ -1999,7 +1999,7 @@ var package_default = {
1999
1999
  scripts: {
2000
2000
  build: "pnpm dlx esbuild src/vite/index.ts --bundle --format=esm --outfile=dist/vite/index.js --platform=node --packages=external && mkdir -p dist/vite/plugins && cp src/vite/plugins/cloudflare-protocol-loader-hook.mjs dist/vite/plugins/cloudflare-protocol-loader-hook.mjs && pnpm dlx esbuild src/bin/rango.ts --bundle --format=esm --outfile=dist/bin/rango.js --platform=node --packages=external --banner:js='#!/usr/bin/env node' && chmod +x dist/bin/rango.js",
2001
2001
  prepublishOnly: "pnpm build",
2002
- typecheck: "tsc --noEmit",
2002
+ typecheck: "tsc --noEmit && tsc -p tsconfig.strict-check.json --noEmit",
2003
2003
  test: "playwright test",
2004
2004
  "test:ui": "playwright test --ui",
2005
2005
  "test:unit": "vitest run",
@@ -5409,6 +5409,8 @@ async function rango(options) {
5409
5409
  // cjs-to-esm transform can patch the real file.
5410
5410
  "@vitejs/plugin-rsc/vendor/react-server-dom/client.browser"
5411
5411
  ];
5412
+ const pkg = getPublishedPackageName();
5413
+ const nested = (spec) => `${pkg} > ${spec}`;
5412
5414
  const routerRef = { path: void 0 };
5413
5415
  const prerenderEnabled = true;
5414
5416
  if (preset === "cloudflare") {
@@ -5446,7 +5448,7 @@ async function rango(options) {
5446
5448
  // Pre-bundle rsc-html-stream to prevent discovery during first request
5447
5449
  // Exclude rsc-router modules to ensure same Context instance
5448
5450
  optimizeDeps: {
5449
- include: ["rsc-html-stream/client"],
5451
+ include: [nested("rsc-html-stream/client")],
5450
5452
  exclude: excludeDeps,
5451
5453
  esbuildOptions: sharedEsbuildOptions
5452
5454
  }
@@ -5471,8 +5473,10 @@ async function rango(options) {
5471
5473
  "react-dom/static.edge",
5472
5474
  "react/jsx-runtime",
5473
5475
  "react/jsx-dev-runtime",
5474
- "rsc-html-stream/server",
5475
- "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
5476
+ nested("rsc-html-stream/server"),
5477
+ nested(
5478
+ "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
5479
+ )
5476
5480
  ],
5477
5481
  exclude: excludeDeps,
5478
5482
  esbuildOptions: sharedEsbuildOptions
@@ -5487,7 +5491,9 @@ async function rango(options) {
5487
5491
  "react",
5488
5492
  "react/jsx-runtime",
5489
5493
  "react/jsx-dev-runtime",
5490
- "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge"
5494
+ nested(
5495
+ "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge"
5496
+ )
5491
5497
  ],
5492
5498
  exclude: excludeDeps,
5493
5499
  esbuildOptions: sharedEsbuildOptions
@@ -5568,7 +5574,7 @@ ${list}`);
5568
5574
  "react-dom",
5569
5575
  "react/jsx-runtime",
5570
5576
  "react/jsx-dev-runtime",
5571
- "rsc-html-stream/client"
5577
+ nested("rsc-html-stream/client")
5572
5578
  ],
5573
5579
  exclude: excludeDeps,
5574
5580
  esbuildOptions: sharedEsbuildOptions,
@@ -5585,7 +5591,9 @@ ${list}`);
5585
5591
  "react-dom/static.edge",
5586
5592
  "react/jsx-runtime",
5587
5593
  "react/jsx-dev-runtime",
5588
- "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
5594
+ nested(
5595
+ "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge"
5596
+ )
5589
5597
  ],
5590
5598
  exclude: excludeDeps,
5591
5599
  esbuildOptions: sharedEsbuildOptions
@@ -5598,7 +5606,9 @@ ${list}`);
5598
5606
  "react",
5599
5607
  "react/jsx-runtime",
5600
5608
  "react/jsx-dev-runtime",
5601
- "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge"
5609
+ nested(
5610
+ "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge"
5611
+ )
5602
5612
  ],
5603
5613
  esbuildOptions: sharedEsbuildOptions
5604
5614
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rangojs/router",
3
- "version": "0.0.0-experimental.85",
3
+ "version": "0.0.0-experimental.86",
4
4
  "description": "Django-inspired RSC router with composable URL patterns",
5
5
  "keywords": [
6
6
  "react",
@@ -132,15 +132,6 @@
132
132
  "access": "public",
133
133
  "tag": "experimental"
134
134
  },
135
- "scripts": {
136
- "build": "pnpm dlx esbuild src/vite/index.ts --bundle --format=esm --outfile=dist/vite/index.js --platform=node --packages=external && mkdir -p dist/vite/plugins && cp src/vite/plugins/cloudflare-protocol-loader-hook.mjs dist/vite/plugins/cloudflare-protocol-loader-hook.mjs && pnpm dlx esbuild src/bin/rango.ts --bundle --format=esm --outfile=dist/bin/rango.js --platform=node --packages=external --banner:js='#!/usr/bin/env node' && chmod +x dist/bin/rango.js",
137
- "prepublishOnly": "pnpm build",
138
- "typecheck": "tsc --noEmit",
139
- "test": "playwright test",
140
- "test:ui": "playwright test --ui",
141
- "test:unit": "vitest run",
142
- "test:unit:watch": "vitest"
143
- },
144
135
  "dependencies": {
145
136
  "@vitejs/plugin-rsc": "^0.5.23",
146
137
  "magic-string": "^0.30.17",
@@ -150,12 +141,12 @@
150
141
  "devDependencies": {
151
142
  "@playwright/test": "^1.49.1",
152
143
  "@types/node": "^24.10.1",
153
- "@types/react": "catalog:",
154
- "@types/react-dom": "catalog:",
144
+ "@types/react": "^19.2.7",
145
+ "@types/react-dom": "^19.2.3",
155
146
  "esbuild": "^0.27.0",
156
147
  "jiti": "^2.6.1",
157
- "react": "catalog:",
158
- "react-dom": "catalog:",
148
+ "react": "^19.2.4",
149
+ "react-dom": "^19.2.4",
159
150
  "tinyexec": "^0.3.2",
160
151
  "typescript": "^5.3.0",
161
152
  "vitest": "^4.0.0"
@@ -173,5 +164,13 @@
173
164
  "vite": {
174
165
  "optional": true
175
166
  }
167
+ },
168
+ "scripts": {
169
+ "build": "pnpm dlx esbuild src/vite/index.ts --bundle --format=esm --outfile=dist/vite/index.js --platform=node --packages=external && mkdir -p dist/vite/plugins && cp src/vite/plugins/cloudflare-protocol-loader-hook.mjs dist/vite/plugins/cloudflare-protocol-loader-hook.mjs && pnpm dlx esbuild src/bin/rango.ts --bundle --format=esm --outfile=dist/bin/rango.js --platform=node --packages=external --banner:js='#!/usr/bin/env node' && chmod +x dist/bin/rango.js",
170
+ "typecheck": "tsc --noEmit && tsc -p tsconfig.strict-check.json --noEmit",
171
+ "test": "playwright test",
172
+ "test:ui": "playwright test --ui",
173
+ "test:unit": "vitest run",
174
+ "test:unit:watch": "vitest"
176
175
  }
177
- }
176
+ }
@@ -141,9 +141,11 @@ path("/dashboard", (ctx) => {
141
141
  breadcrumb({ label: "Dashboard", href: "/dashboard" });
142
142
  return <DashboardNav handle={Breadcrumbs} />;
143
143
  });
144
+ ```
144
145
 
146
+ ```tsx
145
147
  // Client component
146
- ("use client");
148
+ "use client";
147
149
  import { useHandle, type Breadcrumbs } from "@rangojs/router/client";
148
150
 
149
151
  function DashboardNav({ handle }: { handle: typeof Breadcrumbs }) {
@@ -298,9 +298,11 @@ path("/dashboard", (ctx) => {
298
298
  push({ label: "Dashboard", href: "/dashboard" });
299
299
  return <DashboardNav handle={Breadcrumbs} />;
300
300
  });
301
+ ```
301
302
 
303
+ ```tsx
302
304
  // Client component — typeof infers the full Handle<T> type
303
- ("use client");
305
+ "use client";
304
306
  import { useHandle, type Breadcrumbs } from "@rangojs/router/client";
305
307
 
306
308
  function DashboardNav({ handle }: { handle: typeof Breadcrumbs }) {
@@ -131,22 +131,28 @@ path("/product/:slug", (ctx) => {
131
131
 
132
132
  Three patterns, in order of preference:
133
133
 
134
+ 1. Pass as a prop from a server component:
135
+
134
136
  ```tsx
135
- // 1. Pass as a prop from a server component
136
137
  // server
137
138
  function BlogPostPage(ctx: HandlerContext) {
138
139
  return <ShareButton url={ctx.reverse(".post", { slug: ctx.params.slug })} />;
139
140
  }
141
+ ```
140
142
 
141
- // client
143
+ ```tsx
142
144
  "use client";
145
+
143
146
  export function ShareButton({ url }: { url: string }) {
144
- return <button onClick={() => navigator.clipboard.writeText(url)}>Share</button>;
147
+ return (
148
+ <button onClick={() => navigator.clipboard.writeText(url)}>Share</button>
149
+ );
145
150
  }
146
151
  ```
147
152
 
153
+ 2. Return from a loader (attached to the route via the DSL):
154
+
148
155
  ```tsx
149
- // 2. Return from a loader (attached to the route via the DSL)
150
156
  // server — loaders/nav.ts
151
157
  export const NavLoader = createLoader((ctx) => ({
152
158
  home: ctx.reverse("home"),
@@ -157,9 +163,11 @@ export const NavLoader = createLoader((ctx) => ({
157
163
  const urlpatterns = urls(({ path, loader }) => [
158
164
  path("/", HomePage, { name: "home" }, () => [loader(NavLoader)]),
159
165
  ]);
166
+ ```
160
167
 
161
- // client
168
+ ```tsx
162
169
  "use client";
170
+
163
171
  function Nav() {
164
172
  const { data } = useLoader(NavLoader);
165
173
  return <Link to={data.home}>Home</Link>;
@@ -168,10 +176,11 @@ function Nav() {
168
176
 
169
177
  `useLoader()` requires the loader to be attached to an active route. If you need on-demand fetching instead, use `useFetchLoader()`.
170
178
 
179
+ 3. Return from a server action:
180
+
171
181
  ```tsx
172
- // 3. Return from a server action
173
- // server
174
182
  "use server";
183
+
175
184
  export async function getProductUrl(slug: string) {
176
185
  const ctx = getRequestContext();
177
186
  return ctx.reverse("product", { slug });
@@ -247,14 +256,14 @@ function MountInfo() {
247
256
 
248
257
  ## When to use what
249
258
 
250
- | Context | API | Resolves | Use for |
251
- | ---------------- | ------------------------------- | ------------------------------- | ----------------------------------- |
252
- | Server handler | `ctx.reverse("name")` | Named routes (local + absolute) | **Default** server-side URL generation |
253
- | Server handler | `scopedReverse<T>(ctx.reverse)` | Same, with type safety | Type-safe server URLs |
254
- | Client component | (URL passed as prop / loader data / action return) | Named routes | Any URL derived from a named route — generate on server, pass in |
255
- | Client component | `href("/path")` | Absolute paths (static strings) | Static navigation where no named-route lookup is needed |
256
- | Client component | `useHref()` | Mount-prefixed paths | Local navigation inside `include()` |
257
- | Client component | `useMount()` | Raw mount path | Custom mount-aware logic |
259
+ | Context | API | Resolves | Use for |
260
+ | ---------------- | -------------------------------------------------- | ------------------------------- | ---------------------------------------------------------------- |
261
+ | Server handler | `ctx.reverse("name")` | Named routes (local + absolute) | **Default** server-side URL generation |
262
+ | Server handler | `scopedReverse<T>(ctx.reverse)` | Same, with type safety | Type-safe server URLs |
263
+ | Client component | (URL passed as prop / loader data / action return) | Named routes | Any URL derived from a named route — generate on server, pass in |
264
+ | Client component | `href("/path")` | Absolute paths (static strings) | Static navigation where no named-route lookup is needed |
265
+ | Client component | `useHref()` | Mount-prefixed paths | Local navigation inside `include()` |
266
+ | Client component | `useMount()` | Raw mount path | Custom mount-aware logic |
258
267
 
259
268
  > `reverse()` is server-only. Client components never import or call it — they receive the already-resolved string.
260
269
 
@@ -139,7 +139,29 @@ same memoized result — loaders never run twice per request.
139
139
 
140
140
  ## Loader Context
141
141
 
142
- Loaders receive the same context as route handlers:
142
+ Loaders receive the same context shape as route handlers.
143
+
144
+ ### Full field surface
145
+
146
+ | Field | Type | Notes |
147
+ | -------------- | ------------------------------ | --------------------------------------------------------------------------------------------------- |
148
+ | `params` | `TParams` | Merged route + explicit loader params; overridable by fetchable `load({ params })`. |
149
+ | `routeParams` | `Record<string, string>` | Server-trusted route params from URL pattern matching; cannot be overridden. |
150
+ | `request` | `Request` | The incoming `Request` (headers, method, body, `signal` for abort). |
151
+ | `url` | `URL` | Parsed request URL. |
152
+ | `pathname` | `string` | URL pathname (shortcut for `ctx.url.pathname`). |
153
+ | `searchParams` | `URLSearchParams` | Shortcut for `ctx.url.searchParams`. |
154
+ | `search` | `ResolveSearchSchema<TSearch>` | Typed query params when a search schema is declared on the route; `{}` otherwise. |
155
+ | `env` | `TEnv` | Plain bindings from `createRouter<TEnv>()` (DB, KV, secrets, etc.). |
156
+ | `get` | `(key \| ContextVar) => value` | Reads variables/context-vars set by middleware. |
157
+ | `use` | `(loader \| handle) => T` | Access another loader's data (Promise) or a handle's collected data (after `await ctx.rendered()`). |
158
+ | `rendered` | `() => Promise<void>` | **Experimental.** DSL loaders only — waits for non-loader segments before reading handle data. |
159
+ | `method` | `string` | HTTP method. `"GET"` for SSR loader runs; reflects real method for fetchable loaders. |
160
+ | `body` | `TBody \| undefined` | Parsed request body for fetchable POST/PUT/PATCH/DELETE calls. |
161
+ | `formData` | `FormData \| undefined` | Present when a fetchable loader is invoked via form submission. |
162
+ | `reverse` | `ScopedReverseFunction` | Generate type-checked URLs from route names (same scoped semantics as route handlers). |
163
+
164
+ ### Example
143
165
 
144
166
  ```typescript
145
167
  export const ProductLoader = createLoader(async (ctx) => {
@@ -163,10 +185,21 @@ export const ProductLoader = createLoader(async (ctx) => {
163
185
  // Variables set by middleware (from RSCRouter.Vars augmentation)
164
186
  const user = ctx.get("user");
165
187
 
166
- return { product: await fetchProduct(slug) };
188
+ // Type-checked URLs for payloads. `.name` resolves within the current
189
+ // include() scope; a bare `name` resolves globally. See /route and
190
+ // /typesafety for scope rules and route-name autocomplete.
191
+ const detailUrl = ctx.reverse(".detail", { slug });
192
+
193
+ return {
194
+ product: await fetchProduct(slug),
195
+ links: { self: detailUrl },
196
+ };
167
197
  });
168
198
  ```
169
199
 
200
+ See `/route` for the full handler-context contract (shared with loaders) and
201
+ `/typesafety` for route-name typing that powers `ctx.reverse` autocomplete.
202
+
170
203
  ### params vs routeParams
171
204
 
172
205
  - `ctx.params` — merged route params + explicit loader params. For fetchable
@@ -462,9 +462,11 @@ export const ProductLoader = createLoader(async (ctx) => {
462
462
  });
463
463
 
464
464
  // Built-in Breadcrumbs — or any custom handle created with createHandle()
465
+ ```
465
466
 
467
+ ```tsx
466
468
  // Client component — typeof infers all generics
467
- ("use client");
469
+ "use client";
468
470
  import { useLoader, useHandle, type Breadcrumbs } from "@rangojs/router/client";
469
471
  import type { ProductLoader } from "../loaders";
470
472
 
@@ -0,0 +1,52 @@
1
+ import type { ComponentType, ReactNode } from "react";
2
+
3
+ /**
4
+ * App-shell metadata: the set of per-router fields that describe the
5
+ * "envelope" around the current app's segment tree. These fields are set
6
+ * from the initial RSC payload and must be replaced atomically when the
7
+ * client navigates into a different router (app switch).
8
+ *
9
+ * Intentionally NOT part of the shell (all document-lifetime):
10
+ * - themeConfig / initialTheme: ThemeProvider is mounted above the segment
11
+ * tree and must not remount on smooth transitions.
12
+ * - warmupEnabled: attached to the NavigationProvider's lifetime effect;
13
+ * toggling it mid-session would tear down and restart idle listeners.
14
+ * Also not serialized on every full-render path (e.g. the not-found
15
+ * fallback), so carrying it here would be unreliable.
16
+ * - prefetchCacheTTL: the not-found full-render payload does not serialize
17
+ * it, so a cross-app nav into a 404 would silently erase the setting.
18
+ * Mutable shell fields must be serialized on EVERY full-render path,
19
+ * otherwise absent fields are indistinguishable from "new app has no
20
+ * value" and the old app's value is dropped.
21
+ *
22
+ * A new document navigation (hard reload) applies these fields from the
23
+ * target app's initial payload.
24
+ */
25
+ export interface AppShell {
26
+ /** Router identity. Used to namespace per-app client state (e.g. the
27
+ * rango-state localStorage key) so sibling apps on the same origin
28
+ * cannot observe each other's cache invalidations. */
29
+ routerId?: string;
30
+ rootLayout?: ComponentType<{ children: ReactNode }>;
31
+ basename?: string;
32
+ version?: string;
33
+ }
34
+
35
+ /**
36
+ * Mutable container for the active app shell. Read-through via `get()` so
37
+ * closures capture the ref, not the shell, and pick up updates at call time.
38
+ */
39
+ export interface AppShellRef {
40
+ get(): AppShell;
41
+ update(next: AppShell): void;
42
+ }
43
+
44
+ export function createAppShellRef(initial: AppShell): AppShellRef {
45
+ let current = initial;
46
+ return {
47
+ get: () => current,
48
+ update: (next) => {
49
+ current = next;
50
+ },
51
+ };
52
+ }
@@ -5,6 +5,8 @@ import type {
5
5
  ResolvedSegment,
6
6
  } from "./types.js";
7
7
  import { setAppVersion } from "./app-version.js";
8
+ import { setRangoStateLocal } from "./rango-state.js";
9
+ import type { AppShell, AppShellRef } from "./app-shell.js";
8
10
  import * as React from "react";
9
11
  import { startTransition } from "react";
10
12
  import {
@@ -48,8 +50,13 @@ export { createNavigationTransaction };
48
50
  */
49
51
  export interface NavigationBridgeConfigWithController extends NavigationBridgeConfig {
50
52
  eventController: EventController;
51
- /** RSC version from initial payload metadata */
53
+ /** RSC version from initial payload metadata (fallback when appShellRef is not provided) */
52
54
  version?: string;
55
+ /**
56
+ * Live app-shell ref. When supplied, the bridge reads version/basename
57
+ * from this ref so cross-app navigations propagate correctly.
58
+ */
59
+ appShellRef?: AppShellRef;
53
60
  }
54
61
 
55
62
  /**
@@ -68,9 +75,46 @@ export interface NavigationBridgeConfigWithController extends NavigationBridgeCo
68
75
  export function createNavigationBridge(
69
76
  config: NavigationBridgeConfigWithController,
70
77
  ): NavigationBridge {
71
- const { store, client, eventController, onUpdate, renderSegments } = config;
78
+ const {
79
+ store,
80
+ client,
81
+ eventController,
82
+ onUpdate,
83
+ renderSegments,
84
+ appShellRef,
85
+ } = config;
72
86
  let version = config.version;
73
87
 
88
+ /**
89
+ * Replace the active app-shell snapshot atomically. Called by the partial
90
+ * updater when a response's routerId indicates the navigation crossed
91
+ * into a different app. Runs the local-only side-effects tied to
92
+ * app-shell fields (app version, rango-state namespace) so the new app
93
+ * owns them after the swap. Theme, warmup, and prefetch TTL are
94
+ * document-lifetime and are NOT touched here.
95
+ */
96
+ function applyAppShell(next: AppShell): void {
97
+ if (appShellRef) {
98
+ appShellRef.update(next);
99
+ }
100
+ if (next.version !== undefined) {
101
+ version = next.version;
102
+ setAppVersion(next.version);
103
+ // Use the local-only setter — initRangoState writes the shared
104
+ // localStorage key and fires a storage event in other tabs still in
105
+ // the old app. setRangoStateLocal only mutates this tab's in-memory
106
+ // cache and rebinds it to the target app's routerId-scoped key,
107
+ // preserving the "local-only, no broadcast/rotation" contract for
108
+ // smooth app-switch transitions.
109
+ setRangoStateLocal(next.version, next.routerId);
110
+ }
111
+ // Cross-app: prior cache entries belong to a different app's segments.
112
+ // Drop them locally only — do NOT broadcast invalidation or rotate the
113
+ // shared X-Rango-State token, since other tabs still in the old app are
114
+ // unaffected by this tab's transition.
115
+ store.clearHistoryCacheLocal();
116
+ }
117
+
74
118
  // Create shared partial updater
75
119
  const fetchPartialUpdate = createPartialUpdater({
76
120
  store,
@@ -78,6 +122,7 @@ export function createNavigationBridge(
78
122
  onUpdate,
79
123
  renderSegments,
80
124
  getVersion: () => version,
125
+ applyAppShell,
81
126
  });
82
127
 
83
128
  return {
@@ -664,6 +709,10 @@ export function createNavigationBridge(
664
709
  setAppVersion(newVersion);
665
710
  store.clearHistoryCache();
666
711
  },
712
+
713
+ updateAppShell(next: AppShell): void {
714
+ applyAppShell(next);
715
+ },
667
716
  };
668
717
  }
669
718
 
@@ -12,7 +12,10 @@ import type {
12
12
  ActionStateListener,
13
13
  HandleData,
14
14
  } from "./types.js";
15
- import { clearPrefetchCache } from "./prefetch/cache.js";
15
+ import {
16
+ clearPrefetchCache,
17
+ clearPrefetchCacheLocal,
18
+ } from "./prefetch/cache.js";
16
19
 
17
20
  /**
18
21
  * Default action state (idle with no payload)
@@ -335,6 +338,18 @@ export function createNavigationStore(
335
338
  clearPrefetchCache();
336
339
  }
337
340
 
341
+ /**
342
+ * Drop this tab's navigation + prefetch caches without broadcasting or
343
+ * rotating shared state. Used when the local session changes in a way that
344
+ * doesn't affect other tabs — e.g. this tab crosses into a different app
345
+ * via a cross-router navigation. Other tabs in the old app keep their
346
+ * caches and their X-Rango-State token.
347
+ */
348
+ function clearCacheInternalLocal(): void {
349
+ historyCache.length = 0;
350
+ clearPrefetchCacheLocal();
351
+ }
352
+
338
353
  /**
339
354
  * Mark all cache entries as stale (internal - does not broadcast)
340
355
  */
@@ -668,6 +683,15 @@ export function createNavigationStore(
668
683
  clearCacheAndBroadcast();
669
684
  },
670
685
 
686
+ /**
687
+ * Drop this tab's navigation + prefetch caches locally without
688
+ * broadcasting or rotating shared state. Intended for cross-app
689
+ * transitions where the session state diverges for this tab only.
690
+ */
691
+ clearHistoryCacheLocal(): void {
692
+ clearCacheInternalLocal();
693
+ },
694
+
671
695
  /**
672
696
  * Mark cache as stale and broadcast to other tabs
673
697
  * Called after server actions - allows SWR pattern for popstate
@@ -41,6 +41,13 @@ export interface PartialUpdateConfig {
41
41
  ) => Promise<ReactNode> | ReactNode;
42
42
  /** RSC version getter — returns the current version (may change after HMR) */
43
43
  getVersion?: () => string | undefined;
44
+ /**
45
+ * Replace the active app-shell when a cross-app navigation is detected.
46
+ * Called before the full-update tree replacement renders, so the new
47
+ * payload's rootLayout, basename, and version are picked up. Theme,
48
+ * warmup, and prefetch TTL are not part of the shell — see AppShell.
49
+ */
50
+ applyAppShell?: (next: import("./app-shell.js").AppShell) => void;
44
51
  }
45
52
 
46
53
  /**
@@ -110,6 +117,7 @@ export function createPartialUpdater(
110
117
  onUpdate,
111
118
  renderSegments,
112
119
  getVersion = () => undefined,
120
+ applyAppShell,
113
121
  } = config;
114
122
 
115
123
  /**
@@ -228,7 +236,12 @@ export function createPartialUpdater(
228
236
  // Detect app switch: if routerId changed, the navigation crossed into
229
237
  // a different router (e.g., via host router path mount). Downgrade
230
238
  // partial to full so the entire tree is replaced without reconciliation
231
- // against stale segments from the previous app.
239
+ // against stale segments from the previous app, and replace the app
240
+ // shell (rootLayout, basename, version) so the target app's document
241
+ // and router config take effect instead of remaining captured from the
242
+ // initial load. Theme, warmup, and prefetch TTL are intentionally
243
+ // document-lifetime (see AppShell doc); a new document navigation
244
+ // applies them.
232
245
  if (payload.metadata?.routerId) {
233
246
  const prevRouterId = store.getRouterId?.();
234
247
  if (prevRouterId && prevRouterId !== payload.metadata.routerId) {
@@ -236,6 +249,12 @@ export function createPartialUpdater(
236
249
  `[Browser] App switch detected (${prevRouterId} → ${payload.metadata.routerId}), forcing full update`,
237
250
  );
238
251
  payload.metadata.isPartial = false;
252
+ applyAppShell?.({
253
+ routerId: payload.metadata.routerId,
254
+ rootLayout: payload.metadata.rootLayout,
255
+ basename: payload.metadata.basename,
256
+ version: payload.metadata.version,
257
+ });
239
258
  }
240
259
  store.setRouterId?.(payload.metadata.routerId);
241
260
  }
@@ -296,3 +296,19 @@ export function clearPrefetchCache(): void {
296
296
  abortAllPrefetches();
297
297
  invalidateRangoState();
298
298
  }
299
+
300
+ /**
301
+ * Drop all in-memory prefetch state for this tab without rotating rango-state.
302
+ *
303
+ * Use for local-only invalidations (e.g. app switch in this tab) where
304
+ * other tabs should NOT observe a state rotation. Unlike clearPrefetchCache,
305
+ * does not call invalidateRangoState, so the shared X-Rango-State token
306
+ * stays intact and siblings in the old app keep their prefetches.
307
+ */
308
+ export function clearPrefetchCacheLocal(): void {
309
+ generation++;
310
+ inflight.clear();
311
+ inflightPromises.clear();
312
+ cache.clear();
313
+ abortAllPrefetches();
314
+ }