@rangojs/router 0.0.0-experimental.117 → 0.0.0-experimental.119

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 (845) hide show
  1. package/dist/__internal.d.ts +83 -0
  2. package/dist/__internal.d.ts.map +1 -0
  3. package/dist/__internal.js +19 -0
  4. package/dist/__internal.js.map +1 -0
  5. package/dist/__mocks__/version.d.ts +7 -0
  6. package/dist/__mocks__/version.d.ts.map +1 -0
  7. package/dist/__mocks__/version.js +7 -0
  8. package/dist/__mocks__/version.js.map +1 -0
  9. package/dist/__tests__/client-href.test.d.ts +2 -0
  10. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  11. package/dist/__tests__/client-href.test.js +74 -0
  12. package/dist/__tests__/client-href.test.js.map +1 -0
  13. package/dist/__tests__/component-utils.test.d.ts +2 -0
  14. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  15. package/dist/__tests__/component-utils.test.js +51 -0
  16. package/dist/__tests__/component-utils.test.js.map +1 -0
  17. package/dist/__tests__/event-controller.test.d.ts +2 -0
  18. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  19. package/dist/__tests__/event-controller.test.js +538 -0
  20. package/dist/__tests__/event-controller.test.js.map +1 -0
  21. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.js +374 -0
  24. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  25. package/dist/__tests__/match-result.test.d.ts +2 -0
  26. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  27. package/dist/__tests__/match-result.test.js +154 -0
  28. package/dist/__tests__/match-result.test.js.map +1 -0
  29. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  30. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  31. package/dist/__tests__/navigation-store.test.js +440 -0
  32. package/dist/__tests__/navigation-store.test.js.map +1 -0
  33. package/dist/__tests__/partial-update.test.d.ts +2 -0
  34. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  35. package/dist/__tests__/partial-update.test.js +1009 -0
  36. package/dist/__tests__/partial-update.test.js.map +1 -0
  37. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  38. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  39. package/dist/__tests__/reverse-types.test.js +656 -0
  40. package/dist/__tests__/reverse-types.test.js.map +1 -0
  41. package/dist/__tests__/route-definition.test.d.ts +2 -0
  42. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  43. package/dist/__tests__/route-definition.test.js +55 -0
  44. package/dist/__tests__/route-definition.test.js.map +1 -0
  45. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  46. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  47. package/dist/__tests__/router-helpers.test.js +377 -0
  48. package/dist/__tests__/router-helpers.test.js.map +1 -0
  49. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.js +426 -0
  52. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  53. package/dist/__tests__/router-integration.test.d.ts +2 -0
  54. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  55. package/dist/__tests__/router-integration.test.js +1051 -0
  56. package/dist/__tests__/router-integration.test.js.map +1 -0
  57. package/dist/__tests__/search-params.test.d.ts +5 -0
  58. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  59. package/dist/__tests__/search-params.test.js +306 -0
  60. package/dist/__tests__/search-params.test.js.map +1 -0
  61. package/dist/__tests__/segment-system.test.d.ts +2 -0
  62. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  63. package/dist/__tests__/segment-system.test.js +627 -0
  64. package/dist/__tests__/segment-system.test.js.map +1 -0
  65. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.js +63 -0
  68. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  69. package/dist/__tests__/urls.test.d.ts +2 -0
  70. package/dist/__tests__/urls.test.d.ts.map +1 -0
  71. package/dist/__tests__/urls.test.js +421 -0
  72. package/dist/__tests__/urls.test.js.map +1 -0
  73. package/dist/__tests__/use-mount.test.d.ts +2 -0
  74. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  75. package/dist/__tests__/use-mount.test.js +35 -0
  76. package/dist/__tests__/use-mount.test.js.map +1 -0
  77. package/dist/bin/rango.d.ts +2 -0
  78. package/dist/bin/rango.d.ts.map +1 -0
  79. package/dist/bin/rango.js.map +1 -0
  80. package/dist/browser/event-controller.d.ts +191 -0
  81. package/dist/browser/event-controller.d.ts.map +1 -0
  82. package/dist/browser/event-controller.js +559 -0
  83. package/dist/browser/event-controller.js.map +1 -0
  84. package/dist/browser/index.d.ts +2 -0
  85. package/dist/browser/index.d.ts.map +1 -0
  86. package/dist/browser/index.js +14 -0
  87. package/dist/browser/index.js.map +1 -0
  88. package/dist/browser/link-interceptor.d.ts +38 -0
  89. package/dist/browser/link-interceptor.d.ts.map +1 -0
  90. package/dist/browser/link-interceptor.js +99 -0
  91. package/dist/browser/link-interceptor.js.map +1 -0
  92. package/dist/browser/logging.d.ts +10 -0
  93. package/dist/browser/logging.d.ts.map +1 -0
  94. package/dist/browser/logging.js +29 -0
  95. package/dist/browser/logging.js.map +1 -0
  96. package/dist/browser/lru-cache.d.ts +17 -0
  97. package/dist/browser/lru-cache.d.ts.map +1 -0
  98. package/dist/browser/lru-cache.js +50 -0
  99. package/dist/browser/lru-cache.js.map +1 -0
  100. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  101. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  102. package/dist/browser/merge-segment-loaders.js +102 -0
  103. package/dist/browser/merge-segment-loaders.js.map +1 -0
  104. package/dist/browser/navigation-bridge.d.ts +102 -0
  105. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  106. package/dist/browser/navigation-bridge.js +708 -0
  107. package/dist/browser/navigation-bridge.js.map +1 -0
  108. package/dist/browser/navigation-client.d.ts +25 -0
  109. package/dist/browser/navigation-client.d.ts.map +1 -0
  110. package/dist/browser/navigation-client.js +157 -0
  111. package/dist/browser/navigation-client.js.map +1 -0
  112. package/dist/browser/navigation-store.d.ts +101 -0
  113. package/dist/browser/navigation-store.d.ts.map +1 -0
  114. package/dist/browser/navigation-store.js +625 -0
  115. package/dist/browser/navigation-store.js.map +1 -0
  116. package/dist/browser/partial-update.d.ts +75 -0
  117. package/dist/browser/partial-update.d.ts.map +1 -0
  118. package/dist/browser/partial-update.js +426 -0
  119. package/dist/browser/partial-update.js.map +1 -0
  120. package/dist/browser/react/Link.d.ts +86 -0
  121. package/dist/browser/react/Link.d.ts.map +1 -0
  122. package/dist/browser/react/Link.js +128 -0
  123. package/dist/browser/react/Link.js.map +1 -0
  124. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  125. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  126. package/dist/browser/react/NavigationProvider.js +216 -0
  127. package/dist/browser/react/NavigationProvider.js.map +1 -0
  128. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  129. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  130. package/dist/browser/react/ScrollRestoration.js +57 -0
  131. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  132. package/dist/browser/react/context.d.ts +46 -0
  133. package/dist/browser/react/context.d.ts.map +1 -0
  134. package/dist/browser/react/context.js +10 -0
  135. package/dist/browser/react/context.js.map +1 -0
  136. package/dist/browser/react/index.d.ts +11 -0
  137. package/dist/browser/react/index.d.ts.map +1 -0
  138. package/dist/browser/react/index.js +22 -0
  139. package/dist/browser/react/index.js.map +1 -0
  140. package/dist/browser/react/location-state-shared.d.ts +63 -0
  141. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  142. package/dist/browser/react/location-state-shared.js +81 -0
  143. package/dist/browser/react/location-state-shared.js.map +1 -0
  144. package/dist/browser/react/location-state.d.ts +23 -0
  145. package/dist/browser/react/location-state.d.ts.map +1 -0
  146. package/dist/browser/react/location-state.js +29 -0
  147. package/dist/browser/react/location-state.js.map +1 -0
  148. package/dist/browser/react/mount-context.d.ts +24 -0
  149. package/dist/browser/react/mount-context.d.ts.map +1 -0
  150. package/dist/browser/react/mount-context.js +24 -0
  151. package/dist/browser/react/mount-context.js.map +1 -0
  152. package/dist/browser/react/use-action.d.ts +64 -0
  153. package/dist/browser/react/use-action.d.ts.map +1 -0
  154. package/dist/browser/react/use-action.js +134 -0
  155. package/dist/browser/react/use-action.js.map +1 -0
  156. package/dist/browser/react/use-client-cache.d.ts +41 -0
  157. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  158. package/dist/browser/react/use-client-cache.js +39 -0
  159. package/dist/browser/react/use-client-cache.js.map +1 -0
  160. package/dist/browser/react/use-handle.d.ts +31 -0
  161. package/dist/browser/react/use-handle.d.ts.map +1 -0
  162. package/dist/browser/react/use-handle.js +144 -0
  163. package/dist/browser/react/use-handle.js.map +1 -0
  164. package/dist/browser/react/use-href.d.ts +33 -0
  165. package/dist/browser/react/use-href.d.ts.map +1 -0
  166. package/dist/browser/react/use-href.js +39 -0
  167. package/dist/browser/react/use-href.js.map +1 -0
  168. package/dist/browser/react/use-link-status.d.ts +37 -0
  169. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  170. package/dist/browser/react/use-link-status.js +99 -0
  171. package/dist/browser/react/use-link-status.js.map +1 -0
  172. package/dist/browser/react/use-mount.d.ts +25 -0
  173. package/dist/browser/react/use-mount.d.ts.map +1 -0
  174. package/dist/browser/react/use-mount.js +30 -0
  175. package/dist/browser/react/use-mount.js.map +1 -0
  176. package/dist/browser/react/use-navigation.d.ts +27 -0
  177. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  178. package/dist/browser/react/use-navigation.js +87 -0
  179. package/dist/browser/react/use-navigation.js.map +1 -0
  180. package/dist/browser/react/use-segments.d.ts +38 -0
  181. package/dist/browser/react/use-segments.d.ts.map +1 -0
  182. package/dist/browser/react/use-segments.js +130 -0
  183. package/dist/browser/react/use-segments.js.map +1 -0
  184. package/dist/browser/request-controller.d.ts +26 -0
  185. package/dist/browser/request-controller.d.ts.map +1 -0
  186. package/dist/browser/request-controller.js +147 -0
  187. package/dist/browser/request-controller.js.map +1 -0
  188. package/dist/browser/rsc-router.d.ts +129 -0
  189. package/dist/browser/rsc-router.d.ts.map +1 -0
  190. package/dist/browser/rsc-router.js +195 -0
  191. package/dist/browser/rsc-router.js.map +1 -0
  192. package/dist/browser/scroll-restoration.d.ts +93 -0
  193. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  194. package/dist/browser/scroll-restoration.js +321 -0
  195. package/dist/browser/scroll-restoration.js.map +1 -0
  196. package/dist/browser/segment-structure-assert.d.ts +17 -0
  197. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  198. package/dist/browser/segment-structure-assert.js +59 -0
  199. package/dist/browser/segment-structure-assert.js.map +1 -0
  200. package/dist/browser/server-action-bridge.d.ts +26 -0
  201. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  202. package/dist/browser/server-action-bridge.js +668 -0
  203. package/dist/browser/server-action-bridge.js.map +1 -0
  204. package/dist/browser/shallow.d.ts +12 -0
  205. package/dist/browser/shallow.d.ts.map +1 -0
  206. package/dist/browser/shallow.js +34 -0
  207. package/dist/browser/shallow.js.map +1 -0
  208. package/dist/browser/types.d.ts +369 -0
  209. package/dist/browser/types.d.ts.map +1 -0
  210. package/dist/browser/types.js +2 -0
  211. package/dist/browser/types.js.map +1 -0
  212. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  213. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  214. package/dist/build/__tests__/generate-cli.test.js +237 -0
  215. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  216. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  217. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  218. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  219. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  220. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  221. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  222. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  223. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  224. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  225. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  226. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  227. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  228. package/dist/build/generate-manifest.d.ts +81 -0
  229. package/dist/build/generate-manifest.d.ts.map +1 -0
  230. package/dist/build/generate-manifest.js +276 -0
  231. package/dist/build/generate-manifest.js.map +1 -0
  232. package/dist/build/generate-route-types.d.ts +115 -0
  233. package/dist/build/generate-route-types.d.ts.map +1 -0
  234. package/dist/build/generate-route-types.js +740 -0
  235. package/dist/build/generate-route-types.js.map +1 -0
  236. package/dist/build/index.d.ts +21 -0
  237. package/dist/build/index.d.ts.map +1 -0
  238. package/dist/build/index.js +21 -0
  239. package/dist/build/index.js.map +1 -0
  240. package/dist/build/route-trie.d.ts +71 -0
  241. package/dist/build/route-trie.d.ts.map +1 -0
  242. package/dist/build/route-trie.js +175 -0
  243. package/dist/build/route-trie.js.map +1 -0
  244. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  245. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  246. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  247. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  248. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  249. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  250. package/dist/cache/__tests__/document-cache.test.js +345 -0
  251. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  252. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  253. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  256. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  257. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  258. package/dist/cache/__tests__/memory-store.test.js +367 -0
  259. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  260. package/dist/cache/cache-scope.d.ts +102 -0
  261. package/dist/cache/cache-scope.d.ts.map +1 -0
  262. package/dist/cache/cache-scope.js +440 -0
  263. package/dist/cache/cache-scope.js.map +1 -0
  264. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  265. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  268. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  269. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  270. package/dist/cache/cf/cf-cache-store.js +242 -0
  271. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  272. package/dist/cache/cf/index.d.ts +14 -0
  273. package/dist/cache/cf/index.d.ts.map +1 -0
  274. package/dist/cache/cf/index.js +17 -0
  275. package/dist/cache/cf/index.js.map +1 -0
  276. package/dist/cache/document-cache.d.ts +64 -0
  277. package/dist/cache/document-cache.d.ts.map +1 -0
  278. package/dist/cache/document-cache.js +228 -0
  279. package/dist/cache/document-cache.js.map +1 -0
  280. package/dist/cache/index.d.ts +19 -0
  281. package/dist/cache/index.d.ts.map +1 -0
  282. package/dist/cache/index.js +21 -0
  283. package/dist/cache/index.js.map +1 -0
  284. package/dist/cache/memory-segment-store.d.ts +110 -0
  285. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  286. package/dist/cache/memory-segment-store.js +117 -0
  287. package/dist/cache/memory-segment-store.js.map +1 -0
  288. package/dist/cache/memory-store.d.ts +41 -0
  289. package/dist/cache/memory-store.d.ts.map +1 -0
  290. package/dist/cache/memory-store.js +191 -0
  291. package/dist/cache/memory-store.js.map +1 -0
  292. package/dist/cache/types.d.ts +317 -0
  293. package/dist/cache/types.d.ts.map +1 -0
  294. package/dist/cache/types.js +12 -0
  295. package/dist/cache/types.js.map +1 -0
  296. package/dist/client.d.ts +248 -0
  297. package/dist/client.d.ts.map +1 -0
  298. package/dist/client.js +367 -0
  299. package/dist/client.js.map +1 -0
  300. package/dist/client.rsc.d.ts +26 -0
  301. package/dist/client.rsc.d.ts.map +1 -0
  302. package/dist/client.rsc.js +46 -0
  303. package/dist/client.rsc.js.map +1 -0
  304. package/dist/component-utils.d.ts +36 -0
  305. package/dist/component-utils.d.ts.map +1 -0
  306. package/dist/component-utils.js +61 -0
  307. package/dist/component-utils.js.map +1 -0
  308. package/dist/components/DefaultDocument.d.ts +13 -0
  309. package/dist/components/DefaultDocument.d.ts.map +1 -0
  310. package/dist/components/DefaultDocument.js +15 -0
  311. package/dist/components/DefaultDocument.js.map +1 -0
  312. package/dist/debug.d.ts +58 -0
  313. package/dist/debug.d.ts.map +1 -0
  314. package/dist/debug.js +157 -0
  315. package/dist/debug.js.map +1 -0
  316. package/dist/default-error-boundary.d.ts +11 -0
  317. package/dist/default-error-boundary.d.ts.map +1 -0
  318. package/dist/default-error-boundary.js +45 -0
  319. package/dist/default-error-boundary.js.map +1 -0
  320. package/dist/deps/browser.d.ts +2 -0
  321. package/dist/deps/browser.d.ts.map +1 -0
  322. package/dist/deps/browser.js +3 -0
  323. package/dist/deps/browser.js.map +1 -0
  324. package/dist/deps/html-stream-client.d.ts +2 -0
  325. package/dist/deps/html-stream-client.d.ts.map +1 -0
  326. package/dist/deps/html-stream-client.js +3 -0
  327. package/dist/deps/html-stream-client.js.map +1 -0
  328. package/dist/deps/html-stream-server.d.ts +2 -0
  329. package/dist/deps/html-stream-server.d.ts.map +1 -0
  330. package/dist/deps/html-stream-server.js +3 -0
  331. package/dist/deps/html-stream-server.js.map +1 -0
  332. package/dist/deps/rsc.d.ts +2 -0
  333. package/dist/deps/rsc.d.ts.map +1 -0
  334. package/dist/deps/rsc.js +4 -0
  335. package/dist/deps/rsc.js.map +1 -0
  336. package/dist/deps/ssr.d.ts +2 -0
  337. package/dist/deps/ssr.d.ts.map +1 -0
  338. package/dist/deps/ssr.js +3 -0
  339. package/dist/deps/ssr.js.map +1 -0
  340. package/dist/errors.d.ts +174 -0
  341. package/dist/errors.d.ts.map +1 -0
  342. package/dist/errors.js +241 -0
  343. package/dist/errors.js.map +1 -0
  344. package/dist/handle.d.ts +78 -0
  345. package/dist/handle.d.ts.map +1 -0
  346. package/dist/handle.js +82 -0
  347. package/dist/handle.js.map +1 -0
  348. package/dist/handles/MetaTags.d.ts +14 -0
  349. package/dist/handles/MetaTags.d.ts.map +1 -0
  350. package/dist/handles/MetaTags.js +136 -0
  351. package/dist/handles/MetaTags.js.map +1 -0
  352. package/dist/handles/index.d.ts +6 -0
  353. package/dist/handles/index.d.ts.map +1 -0
  354. package/dist/handles/index.js +6 -0
  355. package/dist/handles/index.js.map +1 -0
  356. package/dist/handles/meta.d.ts +39 -0
  357. package/dist/handles/meta.d.ts.map +1 -0
  358. package/dist/handles/meta.js +202 -0
  359. package/dist/handles/meta.js.map +1 -0
  360. package/dist/host/__tests__/errors.test.d.ts +2 -0
  361. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  362. package/dist/host/__tests__/errors.test.js +76 -0
  363. package/dist/host/__tests__/errors.test.js.map +1 -0
  364. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  365. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  368. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  369. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  370. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  371. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  372. package/dist/host/__tests__/router.test.d.ts +2 -0
  373. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  374. package/dist/host/__tests__/router.test.js +241 -0
  375. package/dist/host/__tests__/router.test.js.map +1 -0
  376. package/dist/host/__tests__/testing.test.d.ts +2 -0
  377. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  378. package/dist/host/__tests__/testing.test.js +64 -0
  379. package/dist/host/__tests__/testing.test.js.map +1 -0
  380. package/dist/host/__tests__/utils.test.d.ts +2 -0
  381. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  382. package/dist/host/__tests__/utils.test.js +29 -0
  383. package/dist/host/__tests__/utils.test.js.map +1 -0
  384. package/dist/host/cookie-handler.d.ts +34 -0
  385. package/dist/host/cookie-handler.d.ts.map +1 -0
  386. package/dist/host/cookie-handler.js +124 -0
  387. package/dist/host/cookie-handler.js.map +1 -0
  388. package/dist/host/errors.d.ts +56 -0
  389. package/dist/host/errors.d.ts.map +1 -0
  390. package/dist/host/errors.js +79 -0
  391. package/dist/host/errors.js.map +1 -0
  392. package/dist/host/index.d.ts +29 -0
  393. package/dist/host/index.d.ts.map +1 -0
  394. package/dist/host/index.js +32 -0
  395. package/dist/host/index.js.map +1 -0
  396. package/dist/host/pattern-matcher.d.ts +36 -0
  397. package/dist/host/pattern-matcher.d.ts.map +1 -0
  398. package/dist/host/pattern-matcher.js +172 -0
  399. package/dist/host/pattern-matcher.js.map +1 -0
  400. package/dist/host/router.d.ts +26 -0
  401. package/dist/host/router.d.ts.map +1 -0
  402. package/dist/host/router.js +218 -0
  403. package/dist/host/router.js.map +1 -0
  404. package/dist/host/testing.d.ts +36 -0
  405. package/dist/host/testing.d.ts.map +1 -0
  406. package/dist/host/testing.js +55 -0
  407. package/dist/host/testing.js.map +1 -0
  408. package/dist/host/types.d.ts +115 -0
  409. package/dist/host/types.d.ts.map +1 -0
  410. package/dist/host/types.js +7 -0
  411. package/dist/host/types.js.map +1 -0
  412. package/dist/host/utils.d.ts +21 -0
  413. package/dist/host/utils.d.ts.map +1 -0
  414. package/dist/host/utils.js +23 -0
  415. package/dist/host/utils.js.map +1 -0
  416. package/dist/href-client.d.ts +131 -0
  417. package/dist/href-client.d.ts.map +1 -0
  418. package/dist/href-client.js +64 -0
  419. package/dist/href-client.js.map +1 -0
  420. package/dist/href-context.d.ts +29 -0
  421. package/dist/href-context.d.ts.map +1 -0
  422. package/dist/href-context.js +21 -0
  423. package/dist/href-context.js.map +1 -0
  424. package/dist/index.d.ts +73 -0
  425. package/dist/index.d.ts.map +1 -0
  426. package/dist/index.js +91 -0
  427. package/dist/index.js.map +1 -0
  428. package/dist/index.rsc.d.ts +32 -0
  429. package/dist/index.rsc.d.ts.map +1 -0
  430. package/dist/index.rsc.js +40 -0
  431. package/dist/index.rsc.js.map +1 -0
  432. package/dist/internal-debug.d.ts +2 -0
  433. package/dist/internal-debug.d.ts.map +1 -0
  434. package/dist/internal-debug.js +5 -0
  435. package/dist/internal-debug.js.map +1 -0
  436. package/dist/loader.d.ts +14 -0
  437. package/dist/loader.d.ts.map +1 -0
  438. package/dist/loader.js +20 -0
  439. package/dist/loader.js.map +1 -0
  440. package/dist/loader.rsc.d.ts +19 -0
  441. package/dist/loader.rsc.d.ts.map +1 -0
  442. package/dist/loader.rsc.js +99 -0
  443. package/dist/loader.rsc.js.map +1 -0
  444. package/dist/network-error-thrower.d.ts +17 -0
  445. package/dist/network-error-thrower.d.ts.map +1 -0
  446. package/dist/network-error-thrower.js +14 -0
  447. package/dist/network-error-thrower.js.map +1 -0
  448. package/dist/outlet-context.d.ts +13 -0
  449. package/dist/outlet-context.d.ts.map +1 -0
  450. package/dist/outlet-context.js +3 -0
  451. package/dist/outlet-context.js.map +1 -0
  452. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  453. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  454. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  455. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  456. package/dist/prerender/param-hash.d.ts +16 -0
  457. package/dist/prerender/param-hash.d.ts.map +1 -0
  458. package/dist/prerender/param-hash.js +36 -0
  459. package/dist/prerender/param-hash.js.map +1 -0
  460. package/dist/prerender/store.d.ts +38 -0
  461. package/dist/prerender/store.d.ts.map +1 -0
  462. package/dist/prerender/store.js +61 -0
  463. package/dist/prerender/store.js.map +1 -0
  464. package/dist/prerender.d.ts +66 -0
  465. package/dist/prerender.d.ts.map +1 -0
  466. package/dist/prerender.js +57 -0
  467. package/dist/prerender.js.map +1 -0
  468. package/dist/reverse.d.ts +196 -0
  469. package/dist/reverse.d.ts.map +1 -0
  470. package/dist/reverse.js +78 -0
  471. package/dist/reverse.js.map +1 -0
  472. package/dist/root-error-boundary.d.ts +33 -0
  473. package/dist/root-error-boundary.d.ts.map +1 -0
  474. package/dist/root-error-boundary.js +165 -0
  475. package/dist/root-error-boundary.js.map +1 -0
  476. package/dist/route-content-wrapper.d.ts +46 -0
  477. package/dist/route-content-wrapper.d.ts.map +1 -0
  478. package/dist/route-content-wrapper.js +77 -0
  479. package/dist/route-content-wrapper.js.map +1 -0
  480. package/dist/route-definition.d.ts +421 -0
  481. package/dist/route-definition.d.ts.map +1 -0
  482. package/dist/route-definition.js +868 -0
  483. package/dist/route-definition.js.map +1 -0
  484. package/dist/route-map-builder.d.ts +155 -0
  485. package/dist/route-map-builder.d.ts.map +1 -0
  486. package/dist/route-map-builder.js +237 -0
  487. package/dist/route-map-builder.js.map +1 -0
  488. package/dist/route-types.d.ts +165 -0
  489. package/dist/route-types.d.ts.map +1 -0
  490. package/dist/route-types.js +7 -0
  491. package/dist/route-types.js.map +1 -0
  492. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  493. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  494. package/dist/router/__tests__/handler-context.test.js +65 -0
  495. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  496. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  497. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  500. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  501. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  502. package/dist/router/__tests__/match-context.test.js +92 -0
  503. package/dist/router/__tests__/match-context.test.js.map +1 -0
  504. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  505. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  506. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  507. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  508. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  509. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  510. package/dist/router/__tests__/match-result.test.js +457 -0
  511. package/dist/router/__tests__/match-result.test.js.map +1 -0
  512. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  513. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  514. package/dist/router/__tests__/on-error.test.js +678 -0
  515. package/dist/router/__tests__/on-error.test.js.map +1 -0
  516. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  517. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  518. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  519. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  520. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  521. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  524. package/dist/router/error-handling.d.ts +77 -0
  525. package/dist/router/error-handling.d.ts.map +1 -0
  526. package/dist/router/error-handling.js +202 -0
  527. package/dist/router/error-handling.js.map +1 -0
  528. package/dist/router/handler-context.d.ts +20 -0
  529. package/dist/router/handler-context.d.ts.map +1 -0
  530. package/dist/router/handler-context.js +198 -0
  531. package/dist/router/handler-context.js.map +1 -0
  532. package/dist/router/intercept-resolution.d.ts +66 -0
  533. package/dist/router/intercept-resolution.d.ts.map +1 -0
  534. package/dist/router/intercept-resolution.js +246 -0
  535. package/dist/router/intercept-resolution.js.map +1 -0
  536. package/dist/router/loader-resolution.d.ts +64 -0
  537. package/dist/router/loader-resolution.d.ts.map +1 -0
  538. package/dist/router/loader-resolution.js +284 -0
  539. package/dist/router/loader-resolution.js.map +1 -0
  540. package/dist/router/logging.d.ts +15 -0
  541. package/dist/router/logging.d.ts.map +1 -0
  542. package/dist/router/logging.js +99 -0
  543. package/dist/router/logging.js.map +1 -0
  544. package/dist/router/manifest.d.ts +22 -0
  545. package/dist/router/manifest.d.ts.map +1 -0
  546. package/dist/router/manifest.js +181 -0
  547. package/dist/router/manifest.js.map +1 -0
  548. package/dist/router/match-api.d.ts +35 -0
  549. package/dist/router/match-api.d.ts.map +1 -0
  550. package/dist/router/match-api.js +406 -0
  551. package/dist/router/match-api.js.map +1 -0
  552. package/dist/router/match-context.d.ts +206 -0
  553. package/dist/router/match-context.d.ts.map +1 -0
  554. package/dist/router/match-context.js +17 -0
  555. package/dist/router/match-context.js.map +1 -0
  556. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  557. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  558. package/dist/router/match-middleware/background-revalidation.js +75 -0
  559. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  560. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  561. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  562. package/dist/router/match-middleware/cache-lookup.js +257 -0
  563. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  564. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  565. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  566. package/dist/router/match-middleware/cache-store.js +108 -0
  567. package/dist/router/match-middleware/cache-store.js.map +1 -0
  568. package/dist/router/match-middleware/index.d.ts +81 -0
  569. package/dist/router/match-middleware/index.d.ts.map +1 -0
  570. package/dist/router/match-middleware/index.js +80 -0
  571. package/dist/router/match-middleware/index.js.map +1 -0
  572. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  573. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  574. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  575. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  576. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  577. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  578. package/dist/router/match-middleware/segment-resolution.js +53 -0
  579. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  580. package/dist/router/match-pipelines.d.ts +147 -0
  581. package/dist/router/match-pipelines.d.ts.map +1 -0
  582. package/dist/router/match-pipelines.js +82 -0
  583. package/dist/router/match-pipelines.js.map +1 -0
  584. package/dist/router/match-result.d.ts +126 -0
  585. package/dist/router/match-result.d.ts.map +1 -0
  586. package/dist/router/match-result.js +93 -0
  587. package/dist/router/match-result.js.map +1 -0
  588. package/dist/router/metrics.d.ts +20 -0
  589. package/dist/router/metrics.d.ts.map +1 -0
  590. package/dist/router/metrics.js +47 -0
  591. package/dist/router/metrics.js.map +1 -0
  592. package/dist/router/middleware.d.ts +249 -0
  593. package/dist/router/middleware.d.ts.map +1 -0
  594. package/dist/router/middleware.js +434 -0
  595. package/dist/router/middleware.js.map +1 -0
  596. package/dist/router/middleware.test.d.ts +2 -0
  597. package/dist/router/middleware.test.d.ts.map +1 -0
  598. package/dist/router/middleware.test.js +816 -0
  599. package/dist/router/middleware.test.js.map +1 -0
  600. package/dist/router/pattern-matching.d.ts +149 -0
  601. package/dist/router/pattern-matching.d.ts.map +1 -0
  602. package/dist/router/pattern-matching.js +349 -0
  603. package/dist/router/pattern-matching.js.map +1 -0
  604. package/dist/router/revalidation.d.ts +44 -0
  605. package/dist/router/revalidation.d.ts.map +1 -0
  606. package/dist/router/revalidation.js +147 -0
  607. package/dist/router/revalidation.js.map +1 -0
  608. package/dist/router/router-context.d.ts +135 -0
  609. package/dist/router/router-context.d.ts.map +1 -0
  610. package/dist/router/router-context.js +36 -0
  611. package/dist/router/router-context.js.map +1 -0
  612. package/dist/router/segment-resolution.d.ts +127 -0
  613. package/dist/router/segment-resolution.d.ts.map +1 -0
  614. package/dist/router/segment-resolution.js +919 -0
  615. package/dist/router/segment-resolution.js.map +1 -0
  616. package/dist/router/trie-matching.d.ts +40 -0
  617. package/dist/router/trie-matching.d.ts.map +1 -0
  618. package/dist/router/trie-matching.js +127 -0
  619. package/dist/router/trie-matching.js.map +1 -0
  620. package/dist/router/types.d.ts +136 -0
  621. package/dist/router/types.d.ts.map +1 -0
  622. package/dist/router/types.js +7 -0
  623. package/dist/router/types.js.map +1 -0
  624. package/dist/router.d.ts +753 -0
  625. package/dist/router.d.ts.map +1 -0
  626. package/dist/router.gen.d.ts +6 -0
  627. package/dist/router.gen.d.ts.map +1 -0
  628. package/dist/router.gen.js +6 -0
  629. package/dist/router.gen.js.map +1 -0
  630. package/dist/router.js +1304 -0
  631. package/dist/router.js.map +1 -0
  632. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  633. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  634. package/dist/rsc/__tests__/helpers.test.js +140 -0
  635. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  636. package/dist/rsc/handler.d.ts +45 -0
  637. package/dist/rsc/handler.d.ts.map +1 -0
  638. package/dist/rsc/handler.js +1172 -0
  639. package/dist/rsc/handler.js.map +1 -0
  640. package/dist/rsc/helpers.d.ts +16 -0
  641. package/dist/rsc/helpers.d.ts.map +1 -0
  642. package/dist/rsc/helpers.js +55 -0
  643. package/dist/rsc/helpers.js.map +1 -0
  644. package/dist/rsc/index.d.ts +22 -0
  645. package/dist/rsc/index.d.ts.map +1 -0
  646. package/dist/rsc/index.js +23 -0
  647. package/dist/rsc/index.js.map +1 -0
  648. package/dist/rsc/nonce.d.ts +9 -0
  649. package/dist/rsc/nonce.d.ts.map +1 -0
  650. package/dist/rsc/nonce.js +18 -0
  651. package/dist/rsc/nonce.js.map +1 -0
  652. package/dist/rsc/types.d.ts +206 -0
  653. package/dist/rsc/types.d.ts.map +1 -0
  654. package/dist/rsc/types.js +8 -0
  655. package/dist/rsc/types.js.map +1 -0
  656. package/dist/search-params.d.ts +103 -0
  657. package/dist/search-params.d.ts.map +1 -0
  658. package/dist/search-params.js +74 -0
  659. package/dist/search-params.js.map +1 -0
  660. package/dist/segment-system.d.ts +75 -0
  661. package/dist/segment-system.d.ts.map +1 -0
  662. package/dist/segment-system.js +336 -0
  663. package/dist/segment-system.js.map +1 -0
  664. package/dist/server/context.d.ts +245 -0
  665. package/dist/server/context.d.ts.map +1 -0
  666. package/dist/server/context.js +197 -0
  667. package/dist/server/context.js.map +1 -0
  668. package/dist/server/fetchable-loader-store.d.ts +18 -0
  669. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  670. package/dist/server/fetchable-loader-store.js +18 -0
  671. package/dist/server/fetchable-loader-store.js.map +1 -0
  672. package/dist/server/handle-store.d.ts +85 -0
  673. package/dist/server/handle-store.d.ts.map +1 -0
  674. package/dist/server/handle-store.js +142 -0
  675. package/dist/server/handle-store.js.map +1 -0
  676. package/dist/server/loader-registry.d.ts +55 -0
  677. package/dist/server/loader-registry.d.ts.map +1 -0
  678. package/dist/server/loader-registry.js +132 -0
  679. package/dist/server/loader-registry.js.map +1 -0
  680. package/dist/server/request-context.d.ts +226 -0
  681. package/dist/server/request-context.d.ts.map +1 -0
  682. package/dist/server/request-context.js +290 -0
  683. package/dist/server/request-context.js.map +1 -0
  684. package/dist/server/root-layout.d.ts +4 -0
  685. package/dist/server/root-layout.d.ts.map +1 -0
  686. package/dist/server/root-layout.js +5 -0
  687. package/dist/server/root-layout.js.map +1 -0
  688. package/dist/server.d.ts +15 -0
  689. package/dist/server.d.ts.map +1 -0
  690. package/dist/server.js +20 -0
  691. package/dist/server.js.map +1 -0
  692. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  693. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  696. package/dist/ssr/index.d.ts +98 -0
  697. package/dist/ssr/index.d.ts.map +1 -0
  698. package/dist/ssr/index.js +158 -0
  699. package/dist/ssr/index.js.map +1 -0
  700. package/dist/static-handler.d.ts +50 -0
  701. package/dist/static-handler.d.ts.map +1 -0
  702. package/dist/static-handler.gen.d.ts +5 -0
  703. package/dist/static-handler.gen.d.ts.map +1 -0
  704. package/dist/static-handler.gen.js +5 -0
  705. package/dist/static-handler.gen.js.map +1 -0
  706. package/dist/static-handler.js +29 -0
  707. package/dist/static-handler.js.map +1 -0
  708. package/dist/testing/vitest.js +82 -0
  709. package/dist/theme/ThemeProvider.d.ts +20 -0
  710. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  711. package/dist/theme/ThemeProvider.js +240 -0
  712. package/dist/theme/ThemeProvider.js.map +1 -0
  713. package/dist/theme/ThemeScript.d.ts +48 -0
  714. package/dist/theme/ThemeScript.d.ts.map +1 -0
  715. package/dist/theme/ThemeScript.js +13 -0
  716. package/dist/theme/ThemeScript.js.map +1 -0
  717. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  718. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  719. package/dist/theme/__tests__/theme.test.js +103 -0
  720. package/dist/theme/__tests__/theme.test.js.map +1 -0
  721. package/dist/theme/constants.d.ts +29 -0
  722. package/dist/theme/constants.d.ts.map +1 -0
  723. package/dist/theme/constants.js +48 -0
  724. package/dist/theme/constants.js.map +1 -0
  725. package/dist/theme/index.d.ts +31 -0
  726. package/dist/theme/index.d.ts.map +1 -0
  727. package/dist/theme/index.js +36 -0
  728. package/dist/theme/index.js.map +1 -0
  729. package/dist/theme/theme-context.d.ts +40 -0
  730. package/dist/theme/theme-context.d.ts.map +1 -0
  731. package/dist/theme/theme-context.js +60 -0
  732. package/dist/theme/theme-context.js.map +1 -0
  733. package/dist/theme/theme-script.d.ts +27 -0
  734. package/dist/theme/theme-script.d.ts.map +1 -0
  735. package/dist/theme/theme-script.js +147 -0
  736. package/dist/theme/theme-script.js.map +1 -0
  737. package/dist/theme/types.d.ts +163 -0
  738. package/dist/theme/types.d.ts.map +1 -0
  739. package/dist/theme/types.js +11 -0
  740. package/dist/theme/types.js.map +1 -0
  741. package/dist/theme/use-theme.d.ts +12 -0
  742. package/dist/theme/use-theme.d.ts.map +1 -0
  743. package/dist/theme/use-theme.js +40 -0
  744. package/dist/theme/use-theme.js.map +1 -0
  745. package/dist/types.d.ts +1479 -0
  746. package/dist/types.d.ts.map +1 -0
  747. package/dist/types.js +10 -0
  748. package/dist/types.js.map +1 -0
  749. package/dist/urls.d.ts +441 -0
  750. package/dist/urls.d.ts.map +1 -0
  751. package/dist/urls.gen.d.ts +8 -0
  752. package/dist/urls.gen.d.ts.map +1 -0
  753. package/dist/urls.gen.js +8 -0
  754. package/dist/urls.gen.js.map +1 -0
  755. package/dist/urls.js +443 -0
  756. package/dist/urls.js.map +1 -0
  757. package/dist/use-loader.d.ts +127 -0
  758. package/dist/use-loader.d.ts.map +1 -0
  759. package/dist/use-loader.js +237 -0
  760. package/dist/use-loader.js.map +1 -0
  761. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  762. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  765. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  766. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  769. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  770. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  773. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  774. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  776. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  777. package/dist/vite/ast-handler-extract.d.ts +49 -0
  778. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  779. package/dist/vite/ast-handler-extract.js +249 -0
  780. package/dist/vite/ast-handler-extract.js.map +1 -0
  781. package/dist/vite/expose-action-id.d.ts +19 -0
  782. package/dist/vite/expose-action-id.d.ts.map +1 -0
  783. package/dist/vite/expose-action-id.js +250 -0
  784. package/dist/vite/expose-action-id.js.map +1 -0
  785. package/dist/vite/expose-id-utils.d.ts +69 -0
  786. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  787. package/dist/vite/expose-id-utils.js +289 -0
  788. package/dist/vite/expose-id-utils.js.map +1 -0
  789. package/dist/vite/expose-internal-ids.d.ts +22 -0
  790. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  791. package/dist/vite/expose-internal-ids.js +886 -0
  792. package/dist/vite/expose-internal-ids.js.map +1 -0
  793. package/dist/vite/index.d.ts +149 -0
  794. package/dist/vite/index.d.ts.map +1 -0
  795. package/dist/vite/index.js +8 -10
  796. package/dist/vite/index.js.bak +5448 -0
  797. package/dist/vite/index.js.map +1 -0
  798. package/dist/vite/index.named-routes.gen.ts +103 -0
  799. package/dist/vite/package-resolution.d.ts +43 -0
  800. package/dist/vite/package-resolution.d.ts.map +1 -0
  801. package/dist/vite/package-resolution.js +112 -0
  802. package/dist/vite/package-resolution.js.map +1 -0
  803. package/dist/vite/virtual-entries.d.ts +25 -0
  804. package/dist/vite/virtual-entries.d.ts.map +1 -0
  805. package/dist/vite/virtual-entries.js +110 -0
  806. package/dist/vite/virtual-entries.js.map +1 -0
  807. package/package.json +1 -1
  808. package/skills/css/SKILL.md +76 -0
  809. package/skills/host-router/SKILL.md +21 -0
  810. package/skills/rango/SKILL.md +1 -0
  811. package/skills/tailwind/SKILL.md +27 -3
  812. package/src/browser/app-shell.ts +14 -27
  813. package/src/browser/navigation-bridge.ts +2 -51
  814. package/src/browser/navigation-client.ts +14 -0
  815. package/src/browser/navigation-store.ts +1 -25
  816. package/src/browser/partial-update.ts +19 -32
  817. package/src/browser/prefetch/cache.ts +39 -21
  818. package/src/browser/prefetch/fetch.ts +10 -1
  819. package/src/browser/rango-state.ts +6 -22
  820. package/src/browser/react/NavigationProvider.tsx +12 -9
  821. package/src/browser/react/use-router.ts +4 -3
  822. package/src/browser/response-adapter.ts +20 -0
  823. package/src/browser/rsc-router.tsx +15 -13
  824. package/src/browser/server-action-bridge.ts +21 -0
  825. package/src/browser/types.ts +4 -15
  826. package/src/cache/cache-runtime.ts +17 -5
  827. package/src/cache/cache-scope.ts +23 -7
  828. package/src/cache/cf/cf-cache-store.ts +25 -7
  829. package/src/cache/handle-snapshot.ts +103 -0
  830. package/src/cache/memory-segment-store.ts +3 -2
  831. package/src/cache/types.ts +10 -6
  832. package/src/prerender/store.ts +9 -7
  833. package/src/router/match-middleware/cache-lookup.ts +13 -4
  834. package/src/router/prerender-match.ts +39 -14
  835. package/src/router/request-classification.ts +36 -9
  836. package/src/router/router-interfaces.ts +6 -7
  837. package/src/router/segment-resolution/static-store.ts +19 -5
  838. package/src/rsc/handler.ts +30 -8
  839. package/src/rsc/origin-guard.ts +2 -0
  840. package/src/rsc/response-route-handler.ts +20 -1
  841. package/src/rsc/rsc-rendering.ts +10 -0
  842. package/src/rsc/server-action.ts +16 -2
  843. package/src/urls/path-helper-types.ts +6 -0
  844. package/src/vite/discovery/prerender-collection.ts +5 -5
  845. package/src/vite/router-discovery.ts +3 -4
@@ -59,11 +59,16 @@ export async function matchForPrerender<TEnv = any>(
59
59
  devMode?: boolean,
60
60
  ): Promise<{
61
61
  segments: SerializedSegmentData[];
62
- handles: Record<string, SegmentHandleData>;
62
+ /** RSC-encoded handle map ("" when none) — see handle-snapshot.ts. Encoded in
63
+ * the producer (where the Flight codec resolves) so the node-side build/dev
64
+ * sinks can persist it without touching the codec. */
65
+ handles: string;
63
66
  routeName: string;
64
67
  params: Record<string, string>;
65
68
  interceptSegments?: SerializedSegmentData[];
66
- interceptHandles?: Record<string, SegmentHandleData>;
69
+ /** RSC-encoded MERGED (main + intercept) handle map for the intercept artifact;
70
+ * the sinks store it as-is (no longer merge raw records). */
71
+ interceptHandles?: string;
67
72
  passthrough?: true;
68
73
  } | null> {
69
74
  // 1. Find the matching route entry
@@ -142,7 +147,7 @@ export async function matchForPrerender<TEnv = any>(
142
147
  if (!isKnown) {
143
148
  return {
144
149
  segments: [],
145
- handles: {},
150
+ handles: "",
146
151
  routeName: matched.routeKey,
147
152
  params: matchedParams,
148
153
  passthrough: true as const,
@@ -162,7 +167,7 @@ export async function matchForPrerender<TEnv = any>(
162
167
  if (err?.name === "Skip") {
163
168
  return {
164
169
  segments: [],
165
- handles: {},
170
+ handles: "",
166
171
  routeName: matched.routeKey,
167
172
  params: matchedParams,
168
173
  passthrough: true as const,
@@ -261,7 +266,7 @@ export async function matchForPrerender<TEnv = any>(
261
266
  if (isPrerenderPassthrough(seg.component)) {
262
267
  return {
263
268
  segments: [],
264
- handles: {},
269
+ handles: "",
265
270
  routeName: matched.routeKey,
266
271
  params: matchedParams,
267
272
  passthrough: true as const,
@@ -278,16 +283,22 @@ export async function matchForPrerender<TEnv = any>(
278
283
 
279
284
  // 12. Serialize segments using the cache serializer
280
285
  const { serializeSegments } = await import("../cache/segment-codec.js");
286
+ const { encodeHandles } = await import("../cache/handle-snapshot.js");
281
287
  const serializedSegments = await serializeSegments(nonLoaderSegments);
282
288
 
283
- // 13. Collect handle data per segment (skip segments with no handle data)
284
- const handles: Record<string, SegmentHandleData> = {};
289
+ // 13. Collect handle data per segment (skip segments with no handle data).
290
+ // Encoded through the Flight codec (not stored raw) so Promise/ReactNode
291
+ // handle values survive the JSON-serialized build artifact / dev wire —
292
+ // the same fix the runtime cache uses. Encode happens here, in the RSC
293
+ // environment where the codec resolves; the node-side sinks only persist.
294
+ const handlesRecord: Record<string, SegmentHandleData> = {};
285
295
  for (const seg of nonLoaderSegments) {
286
296
  const segHandles = handleStore.getDataForSegment(seg.id);
287
297
  if (Object.keys(segHandles).length > 0) {
288
- handles[seg.id] = segHandles;
298
+ handlesRecord[seg.id] = segHandles;
289
299
  }
290
300
  }
301
+ const handles = await encodeHandles(handlesRecord);
291
302
 
292
303
  // Use the trie-level route key (e.g., "docs", "docs.article")
293
304
  const routeName = matched.routeKey;
@@ -297,7 +308,7 @@ export async function matchForPrerender<TEnv = any>(
297
308
  // evaluation -- we pre-render all intercepts unconditionally and let
298
309
  // runtime matching decide which to serve.
299
310
  let interceptSegments: SerializedSegmentData[] | undefined;
300
- let interceptHandles: Record<string, SegmentHandleData> | undefined;
311
+ let interceptHandles: string | undefined;
301
312
 
302
313
  const foundIntercepts: {
303
314
  intercept: InterceptEntry;
@@ -379,13 +390,20 @@ export async function matchForPrerender<TEnv = any>(
379
390
  interceptSegments = await serializeSegments(
380
391
  interceptResolvedSegments,
381
392
  );
382
- interceptHandles = {};
393
+ const interceptHandlesRecord: Record<string, SegmentHandleData> = {};
383
394
  for (const seg of interceptResolvedSegments) {
384
395
  const segHandles = handleStore.getDataForSegment(seg.id);
385
396
  if (Object.keys(segHandles).length > 0) {
386
- interceptHandles[seg.id] = segHandles;
397
+ interceptHandlesRecord[seg.id] = segHandles;
387
398
  }
388
399
  }
400
+ // The intercept artifact serves main + intercept segments together, so
401
+ // encode the MERGED handle map here (the sinks no longer merge raw
402
+ // records — they store this pre-encoded string as-is).
403
+ interceptHandles = await encodeHandles({
404
+ ...handlesRecord,
405
+ ...interceptHandlesRecord,
406
+ });
389
407
  }
390
408
  }
391
409
 
@@ -414,7 +432,7 @@ export async function renderStaticSegment<TEnv = any>(
414
432
  routeName?: string,
415
433
  buildEnv?: TEnv,
416
434
  devMode?: boolean,
417
- ): Promise<{ encoded: string; handles: Record<string, unknown[]> } | null> {
435
+ ): Promise<{ encoded: string; handles: string } | null> {
418
436
  const syntheticUrl = new URL("http://prerender/");
419
437
  const syntheticRequest = new Request(syntheticUrl);
420
438
 
@@ -492,10 +510,17 @@ export async function renderStaticSegment<TEnv = any>(
492
510
  };
493
511
 
494
512
  const { serializeSegments } = await import("../cache/segment-codec.js");
513
+ const { encodeHandleValue } = await import("../cache/handle-snapshot.js");
495
514
  const [serialized] = await serializeSegments([segment]);
496
515
 
497
- // Collect handle data pushed during rendering
498
- const handles = handleStore.getDataForSegment(handlerId);
516
+ // Collect handle data pushed during rendering and Flight-encode it (so
517
+ // Promise/ReactNode handle values survive the JSON build artifact). "" when
518
+ // nothing was pushed.
519
+ const segHandles = handleStore.getDataForSegment(handlerId);
520
+ const handles =
521
+ Object.keys(segHandles).length > 0
522
+ ? await encodeHandleValue(segHandles)
523
+ : "";
499
524
 
500
525
  return { encoded: serialized.encoded, handles };
501
526
  });
@@ -40,6 +40,12 @@ interface VersionMismatchPlan<TEnv = any> {
40
40
  reloadUrl: string;
41
41
  }
42
42
 
43
+ interface AppSwitchReloadPlan {
44
+ mode: "app-switch";
45
+ /** Clean target URL (internal _rsc_* params stripped) to navigate to. */
46
+ reloadUrl: string;
47
+ }
48
+
43
49
  interface ResponseRoutePlan<TEnv = any> {
44
50
  mode: "response";
45
51
  route: RouteSnapshot<TEnv>;
@@ -86,6 +92,7 @@ interface PartialRenderPlan<TEnv = any> {
86
92
  export type RequestPlan<TEnv = any> =
87
93
  | RedirectPlan<TEnv>
88
94
  | VersionMismatchPlan<TEnv>
95
+ | AppSwitchReloadPlan
89
96
  | ResponseRoutePlan<TEnv>
90
97
  | LoaderFetchPlan<TEnv>
91
98
  | PeRenderPlan<TEnv>
@@ -94,12 +101,13 @@ export type RequestPlan<TEnv = any> =
94
101
  | PartialRenderPlan<TEnv>;
95
102
 
96
103
  /**
97
- * Plans that have passed the terminal-check gate (version-mismatch handled)
98
- * and are ready for execution. Always have a `route` field.
104
+ * Plans that have passed the terminal-check gate (version-mismatch and
105
+ * app-switch reloads handled) and are ready for execution. Always have a
106
+ * `route` field.
99
107
  */
100
108
  export type ExecutableRequestPlan<TEnv = any> = Exclude<
101
109
  RequestPlan<TEnv>,
102
- VersionMismatchPlan<TEnv>
110
+ VersionMismatchPlan<TEnv> | AppSwitchReloadPlan
103
111
  >;
104
112
 
105
113
  /**
@@ -179,6 +187,30 @@ export async function classifyRequest<TEnv = any>(
179
187
  };
180
188
  }
181
189
 
190
+ // App switch — also runs BEFORE route resolution (like version-mismatch
191
+ // above), and for the same reason: a cross-app SPA navigation must reload
192
+ // even when the target route does NOT exist in the target app. If we resolved
193
+ // first, a missing route would throw RouteNotFoundError and the 404 would
194
+ // render in-place under the SOURCE app's document — violating the invariant
195
+ // that crossing a host-router app boundary is always a full document load.
196
+ // A mismatched routerId (_rsc_rid) means the navigation crossed an app
197
+ // boundary; force a real document navigation. A soft swap can't faithfully
198
+ // re-establish the target app's document (stylesheets shared across apps are
199
+ // dropped by React 19's by-href dedup; theme/warmup/prefetch-TTL are
200
+ // document-lifetime — see browser/app-shell.ts). Only SPA (`_rsc_partial`)
201
+ // requests need this; a direct full load already IS the document navigation.
202
+ const clientRouterId = url.searchParams.get("_rsc_rid");
203
+ if (
204
+ clientRouterId &&
205
+ clientRouterId !== deps.routerId &&
206
+ url.searchParams.has("_rsc_partial")
207
+ ) {
208
+ return {
209
+ mode: "app-switch",
210
+ reloadUrl: stripInternalParams(url).toString(),
211
+ };
212
+ }
213
+
182
214
  // No metricsStore — classification is a lightweight gating step.
183
215
  // Route-matching and manifest-loading metrics belong in the match path
184
216
  // (createMatchContextForFull/Partial) which runs the authoritative resolution.
@@ -252,12 +284,7 @@ export async function classifyRequest<TEnv = any>(
252
284
  return { mode: "pe-render", route: snapshot };
253
285
  }
254
286
 
255
- // App switch: client's routerId doesn't match this router
256
- const clientRouterId = url.searchParams.get("_rsc_rid");
257
- const isAppSwitch = !!(clientRouterId && clientRouterId !== deps.routerId);
258
- const isPartial = url.searchParams.has("_rsc_partial") && !isAppSwitch;
259
-
260
- if (isPartial) {
287
+ if (url.searchParams.has("_rsc_partial")) {
261
288
  return { mode: "partial-render", route: snapshot, negotiated };
262
289
  }
263
290
 
@@ -7,10 +7,7 @@ import type { EntryData } from "../server/context";
7
7
  import type { ErrorInfo, MatchResult } from "../types";
8
8
  import type { NonceProvider } from "../rsc/types.js";
9
9
  import type { ExecutionContext } from "../server/request-context.js";
10
- import type {
11
- SerializedSegmentData,
12
- SegmentHandleData,
13
- } from "../cache/types.js";
10
+ import type { SerializedSegmentData } from "../cache/types.js";
14
11
  import type { MiddlewareEntry, MiddlewareFn } from "./middleware.js";
15
12
  import { RSC_ROUTER_BRAND } from "./router-registry.js";
16
13
  import type { RangoOptions, RootLayoutProps } from "./router-options.js";
@@ -395,11 +392,13 @@ export interface RangoInternal<
395
392
  devMode?: boolean,
396
393
  ): Promise<{
397
394
  segments: SerializedSegmentData[];
398
- handles: Record<string, SegmentHandleData>;
395
+ /** RSC-encoded handle map ("" when none) — see handle-snapshot.ts. */
396
+ handles: string;
399
397
  routeName: string;
400
398
  params: Record<string, string>;
401
399
  interceptSegments?: SerializedSegmentData[];
402
- interceptHandles?: Record<string, SegmentHandleData>;
400
+ /** RSC-encoded MERGED (main + intercept) handle map for the intercept artifact. */
401
+ interceptHandles?: string;
403
402
  passthrough?: true;
404
403
  } | null>;
405
404
 
@@ -413,7 +412,7 @@ export interface RangoInternal<
413
412
  routeName?: string,
414
413
  buildEnv?: any,
415
414
  devMode?: boolean,
416
- ): Promise<{ encoded: string; handles: Record<string, unknown[]> } | null>;
415
+ ): Promise<{ encoded: string; handles: string } | null>;
417
416
 
418
417
  /**
419
418
  * Preview match - returns route middleware without segment resolution.
@@ -8,6 +8,7 @@
8
8
  import type { ReactNode } from "react";
9
9
  import { _getRequestContext } from "../../server/request-context.js";
10
10
  import type { StaticStore } from "../../prerender/store.js";
11
+ import type { SegmentHandleData } from "../../cache/types.js";
11
12
 
12
13
  // Lazy-initialized static store for production Static handler interception.
13
14
  // Remains undefined until first check; null means checked but no manifest.
@@ -19,6 +20,9 @@ let _staticStore: StaticStore | null | undefined =
19
20
  ? undefined
20
21
  : null;
21
22
  let _deserializeComponent: ((encoded: string) => Promise<unknown>) | undefined;
23
+ let _decodeHandleValue:
24
+ | typeof import("../../cache/handle-snapshot.js").decodeHandleValue
25
+ | undefined;
22
26
 
23
27
  async function ensureStaticDeps(): Promise<void> {
24
28
  if (_staticStore === undefined) {
@@ -29,6 +33,9 @@ async function ensureStaticDeps(): Promise<void> {
29
33
  const { deserializeComponent } =
30
34
  await import("../../cache/segment-codec.js");
31
35
  _deserializeComponent = deserializeComponent;
36
+ const { decodeHandleValue } =
37
+ await import("../../cache/handle-snapshot.js");
38
+ _decodeHandleValue = decodeHandleValue;
32
39
  }
33
40
  }
34
41
 
@@ -53,13 +60,20 @@ export async function tryStaticLookup(
53
60
  const entry = await _staticStore.get(handlerId);
54
61
  if (!entry) return undefined;
55
62
 
56
- // Replay handle data captured during build-time rendering.
57
- // The data was keyed by handlerId at build time; replay under segmentId
58
- // so it matches the segment order used by useHandle on the client.
59
- if (entry.handles && Object.keys(entry.handles).length > 0) {
63
+ // Replay handle data captured during build-time rendering. entry.handles is a
64
+ // Flight-encoded string ("" when none) decode before replay so
65
+ // Promise/ReactNode handle values are revived. The data was keyed by handlerId
66
+ // at build time; replay under segmentId so it matches the segment order used
67
+ // by useHandle on the client.
68
+ if (entry.handles && _decodeHandleValue) {
60
69
  const handleStore = _getRequestContext()?._handleStore;
61
70
  if (handleStore) {
62
- handleStore.replaySegmentData(segmentId, entry.handles);
71
+ const segHandles = await _decodeHandleValue<SegmentHandleData>(
72
+ entry.handles,
73
+ );
74
+ if (segHandles) {
75
+ handleStore.replaySegmentData(segmentId, segHandles);
76
+ }
63
77
  }
64
78
  }
65
79
 
@@ -128,6 +128,22 @@ import {
128
128
  * });
129
129
  * ```
130
130
  */
131
+
132
+ /**
133
+ * Response that tells the client to do a full document navigation. Shared by
134
+ * the terminal reload plans (version-mismatch and app-switch): an empty 200
135
+ * carrying X-RSC-Reload, which the client turns into window.location.href.
136
+ */
137
+ function createReloadResponse(reloadUrl: string) {
138
+ return createResponseWithMergedHeaders(null, {
139
+ status: 200,
140
+ headers: {
141
+ "X-RSC-Reload": reloadUrl,
142
+ "content-type": "text/x-component;charset=utf-8",
143
+ },
144
+ });
145
+ }
146
+
131
147
  export function createRSCHandler<
132
148
  TEnv = unknown,
133
149
  TRoutes extends Record<string, string> = Record<string, string>,
@@ -642,13 +658,14 @@ export function createRSCHandler<
642
658
  console.log(
643
659
  `[RSC] Version mismatch: client=${url.searchParams.get("_rsc_v")}, server=${version}. Forcing reload.`,
644
660
  );
645
- return createResponseWithMergedHeaders(null, {
646
- status: 200,
647
- headers: {
648
- "X-RSC-Reload": plan.reloadUrl,
649
- "content-type": "text/x-component;charset=utf-8",
650
- },
651
- });
661
+ return createReloadResponse(plan.reloadUrl);
662
+ }
663
+
664
+ if (plan.mode === "app-switch") {
665
+ // Cross-app SPA navigation crossed a host-router app boundary. Force a
666
+ // real document navigation so the target app's document is re-established
667
+ // (stylesheets, theme, warmup, prefetch-TTL). See request-classification.
668
+ return createReloadResponse(plan.reloadUrl);
652
669
  }
653
670
 
654
671
  // ---- 3. Origin guard (gate for action/loader/PE modes) ----
@@ -1068,7 +1085,12 @@ export function createRSCHandler<
1068
1085
  if (isRscRequest(request, url, isPartial)) {
1069
1086
  return createResponseWithMergedHeaders(rscStream, {
1070
1087
  status: 404,
1071
- headers: { "content-type": "text/x-component;charset=utf-8" },
1088
+ headers: {
1089
+ "content-type": "text/x-component;charset=utf-8",
1090
+ // Router identity for the client's pre-decode integrity check; a
1091
+ // same-app 404 matches and applies in place. See response-adapter.
1092
+ "X-RSC-Router-Id": router.id,
1093
+ },
1072
1094
  });
1073
1095
  }
1074
1096
 
@@ -30,6 +30,8 @@ export const ORIGIN_CHECK_PHASE_BY_MODE: Record<
30
30
  response: null,
31
31
  redirect: null,
32
32
  "version-mismatch": null,
33
+ // Terminal: handled before the origin guard (emits X-RSC-Reload, no execution).
34
+ "app-switch": null,
33
35
  };
34
36
 
35
37
  /**
@@ -131,7 +131,26 @@ export async function handleResponseRoute<TEnv>(
131
131
 
132
132
  // Handled before the MIME lookup (json is also a RESPONSE_TYPE_MIME key).
133
133
  if (preview.responseType === "json") {
134
- return createResponseWithMergedHeaders(JSON.stringify(result), {
134
+ // Runtime guard: the json() return type rejects nested Promises at
135
+ // compile time, but an `as`-cast or untyped (JS) handler can still slip
136
+ // one through. JSON.stringify would silently emit {} for it (the
137
+ // forgotten-await footgun — the RSC pipeline awaits nested promises, this
138
+ // path does not). Throw a clear error instead of shipping empty data.
139
+ const body = JSON.stringify(result, (_key, value) => {
140
+ if (
141
+ value != null &&
142
+ typeof (value as { then?: unknown }).then === "function"
143
+ ) {
144
+ throw new RouterError(
145
+ "RESPONSE_NOT_SERIALIZABLE",
146
+ "A json() response route returned a Promise (likely a forgotten " +
147
+ "await). Await async values before returning so they serialize, " +
148
+ "instead of emitting an empty {}.",
149
+ );
150
+ }
151
+ return value;
152
+ });
153
+ return createResponseWithMergedHeaders(body, {
135
154
  status: 200,
136
155
  headers: { "content-type": "application/json;charset=utf-8" },
137
156
  });
@@ -83,6 +83,11 @@ export async function handleRscRendering<TEnv>(
83
83
  payload = {
84
84
  metadata: {
85
85
  pathname: url.pathname,
86
+ // routerId is serialized on every payload (including within-session
87
+ // ones) so the frontend can read the current app/router identity. It
88
+ // always equals the current app's id: a cross-app navigation is
89
+ // intercepted server-side (X-RSC-Reload) and never delivers a
90
+ // different-router payload to the client.
86
91
  routerId: ctx.router.id,
87
92
  segments: result.segments,
88
93
  matched: result.matched,
@@ -180,6 +185,11 @@ export async function handleRscRendering<TEnv>(
180
185
  const rscHeaders: Record<string, string> = {
181
186
  "content-type": "text/x-component;charset=utf-8",
182
187
  vary: "accept, X-Rango-State, X-RSC-Router-Client-Path",
188
+ // Router identity, so the client can verify pre-decode (before importing
189
+ // chunks) that this content payload belongs to its app and refuse a
190
+ // foreign one (cache/proxy/bug). Control-only reload/redirect responses
191
+ // are deliberately NOT stamped. See browser/response-adapter.ts.
192
+ "X-RSC-Router-Id": ctx.router.id,
183
193
  };
184
194
  // Tell the client's prefetch cache to scope this response to its source
185
195
  // URL (instead of the default source-agnostic wildcard). Intercept
@@ -184,6 +184,8 @@ export async function executeServerAction<TEnv>(
184
184
  const payload: RscPayload = {
185
185
  metadata: {
186
186
  pathname: url.pathname,
187
+ // routerId exposed for the frontend (current app identity); see
188
+ // rsc-rendering.ts partial branch.
187
189
  routerId: ctx.router.id,
188
190
  segments: errorResult.segments,
189
191
  isPartial: true,
@@ -211,7 +213,12 @@ export async function executeServerAction<TEnv>(
211
213
 
212
214
  return createResponseWithMergedHeaders(rscStream, {
213
215
  status: actionStatus,
214
- headers: { "content-type": "text/x-component;charset=utf-8" },
216
+ headers: {
217
+ "content-type": "text/x-component;charset=utf-8",
218
+ // Router identity for the client's pre-decode integrity check (the
219
+ // action apply path has no post-decode guard). See response-adapter.
220
+ "X-RSC-Router-Id": ctx.router.id,
221
+ },
215
222
  });
216
223
  }
217
224
  }
@@ -296,6 +303,8 @@ export async function revalidateAfterAction<TEnv>(
296
303
  const payload: RscPayload = {
297
304
  metadata: {
298
305
  pathname: url.pathname,
306
+ // routerId exposed for the frontend (current app identity); see
307
+ // rsc-rendering.ts partial branch.
299
308
  routerId: ctx.router.id,
300
309
  segments: matchResult.segments,
301
310
  isPartial: true,
@@ -331,6 +340,11 @@ export async function revalidateAfterAction<TEnv>(
331
340
 
332
341
  return createResponseWithMergedHeaders(rscStream, {
333
342
  status: actionStatus,
334
- headers: { "content-type": "text/x-component;charset=utf-8" },
343
+ headers: {
344
+ "content-type": "text/x-component;charset=utf-8",
345
+ // Router identity for the client's pre-decode integrity check (the action
346
+ // apply path has no post-decode guard). See response-adapter.
347
+ "X-RSC-Router-Id": ctx.router.id,
348
+ },
335
349
  });
336
350
  }
@@ -114,6 +114,12 @@ export type ResponsePathFn<TEnv> = <
114
114
  * Path function for JSON response routes (path.json()).
115
115
  * Handler can return plain JSON-serializable values or Response.
116
116
  * TData is inferred from the handler's return type (excluding Response/Promise wrappers).
117
+ *
118
+ * Note: a nested Promise in the return (a forgotten await) is caught at runtime
119
+ * by response-route-handler.ts (it throws instead of silently emitting `{}`). A
120
+ * compile-time JsonValue constraint was evaluated and rejected — it breaks
121
+ * interface-typed returns (interfaces lack the index signature JsonValue
122
+ * requires) and preserves literal types in the inferred response shape.
117
123
  */
118
124
  export type JsonResponsePathFn<TEnv> = <
119
125
  const TPattern extends string,
@@ -282,10 +282,9 @@ export async function expandPrerenderRoutes(
282
282
  const interceptKey = `${result.routeName}/${paramHash}/i`;
283
283
  const interceptValue = JSON.stringify({
284
284
  segments: [...result.segments, ...result.interceptSegments],
285
- handles: {
286
- ...result.handles,
287
- ...(result.interceptHandles || {}),
288
- },
285
+ // interceptHandles is the pre-encoded MERGED (main + intercept)
286
+ // handle string (the producer merged before encoding).
287
+ handles: result.interceptHandles ?? "",
289
288
  });
290
289
  manifestEntries[interceptKey] = stageBuildAssetModule(
291
290
  state.projectRoot,
@@ -420,7 +419,8 @@ export async function renderStaticHandlers(
420
419
  !state.isBuildMode,
421
420
  );
422
421
  if (result) {
423
- const hasHandles = Object.keys(result.handles).length > 0;
422
+ // result.handles is the pre-encoded handle string ("" when none).
423
+ const hasHandles = result.handles !== "";
424
424
  const exportValue = hasHandles
425
425
  ? JSON.stringify(result)
426
426
  : JSON.stringify(result.encoded);
@@ -893,10 +893,9 @@ export function createRouterDiscoveryPlugin(
893
893
  if (wantIntercept && result.interceptSegments?.length) {
894
894
  payload = {
895
895
  segments: [...result.segments, ...result.interceptSegments],
896
- handles: {
897
- ...result.handles,
898
- ...(result.interceptHandles || {}),
899
- },
896
+ // Pre-encoded MERGED handle string from the producer (handles are
897
+ // Flight-encoded so Promise/ReactNode values survive the wire).
898
+ handles: result.interceptHandles ?? "",
900
899
  };
901
900
  } else {
902
901
  payload = { segments: result.segments, handles: result.handles };