@rangojs/router 0.0.0-experimental.111 → 0.0.0-experimental.113

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 (875) hide show
  1. package/dist/bin/rango.js +42 -38
  2. package/dist/vite/index.js +147 -194
  3. package/package.json +17 -16
  4. package/skills/cache-guide/SKILL.md +35 -24
  5. package/skills/caching/SKILL.md +115 -7
  6. package/skills/document-cache/SKILL.md +78 -55
  7. package/skills/hooks/SKILL.md +37 -19
  8. package/skills/loader/SKILL.md +3 -3
  9. package/skills/rango/SKILL.md +15 -10
  10. package/skills/use-cache/SKILL.md +34 -5
  11. package/src/browser/action-coordinator.ts +53 -36
  12. package/src/browser/event-controller.ts +42 -66
  13. package/src/browser/navigation-bridge.ts +4 -0
  14. package/src/browser/navigation-client.ts +12 -15
  15. package/src/browser/navigation-store.ts +7 -8
  16. package/src/browser/navigation-transaction.ts +7 -21
  17. package/src/browser/partial-update.ts +8 -16
  18. package/src/browser/react/NavigationProvider.tsx +29 -40
  19. package/src/browser/react/location-state-shared.ts +93 -3
  20. package/src/browser/react/use-params.ts +3 -4
  21. package/src/browser/response-adapter.ts +25 -0
  22. package/src/browser/rsc-router.tsx +16 -2
  23. package/src/browser/server-action-bridge.ts +23 -30
  24. package/src/browser/types.ts +2 -0
  25. package/src/build/generate-manifest.ts +29 -31
  26. package/src/build/generate-route-types.ts +2 -0
  27. package/src/build/route-types/per-module-writer.ts +4 -1
  28. package/src/build/route-types/router-processing.ts +37 -9
  29. package/src/build/runtime-discovery.ts +9 -20
  30. package/src/cache/cache-scope.ts +28 -42
  31. package/src/cache/cf/cf-cache-store.ts +49 -6
  32. package/src/decode-loader-results.ts +36 -0
  33. package/src/errors.ts +11 -0
  34. package/src/loader-store.ts +62 -25
  35. package/src/loader.ts +1 -5
  36. package/src/response-utils.ts +9 -0
  37. package/src/route-content-wrapper.tsx +6 -28
  38. package/src/route-definition/helpers-types.ts +13 -4
  39. package/src/router/content-negotiation.ts +15 -2
  40. package/src/router/intercept-resolution.ts +4 -18
  41. package/src/router/loader-resolution.ts +16 -2
  42. package/src/router/match-middleware/cache-lookup.ts +44 -91
  43. package/src/router/match-middleware/cache-store.ts +3 -2
  44. package/src/router/match-result.ts +32 -30
  45. package/src/router/middleware.ts +46 -78
  46. package/src/router/preview-match.ts +3 -1
  47. package/src/router/request-classification.ts +4 -28
  48. package/src/rsc/handler.ts +20 -65
  49. package/src/rsc/helpers.ts +3 -2
  50. package/src/rsc/origin-guard.ts +28 -10
  51. package/src/rsc/response-route-handler.ts +32 -52
  52. package/src/rsc/rsc-rendering.ts +27 -53
  53. package/src/rsc/runtime-warnings.ts +9 -10
  54. package/src/rsc/server-action.ts +13 -37
  55. package/src/rsc/ssr-setup.ts +16 -0
  56. package/src/segment-system.tsx +46 -47
  57. package/src/server/context.ts +26 -0
  58. package/src/server/cookie-store.ts +28 -4
  59. package/src/types/handler-context.ts +5 -2
  60. package/src/use-loader.tsx +89 -42
  61. package/src/vite/discovery/discover-routers.ts +10 -22
  62. package/src/vite/discovery/route-types-writer.ts +38 -82
  63. package/src/vite/plugins/cjs-to-esm.ts +3 -7
  64. package/src/vite/plugins/expose-ids/handler-transform.ts +8 -61
  65. package/src/vite/plugins/expose-ids/loader-transform.ts +3 -5
  66. package/src/vite/plugins/expose-internal-ids.ts +34 -62
  67. package/src/vite/plugins/use-cache-transform.ts +12 -10
  68. package/src/vite/plugins/version-injector.ts +2 -12
  69. package/src/vite/router-discovery.ts +71 -26
  70. package/src/vite/utils/shared-utils.ts +13 -1
  71. package/dist/__internal.d.ts +0 -83
  72. package/dist/__internal.d.ts.map +0 -1
  73. package/dist/__internal.js +0 -19
  74. package/dist/__internal.js.map +0 -1
  75. package/dist/__mocks__/version.d.ts +0 -7
  76. package/dist/__mocks__/version.d.ts.map +0 -1
  77. package/dist/__mocks__/version.js +0 -7
  78. package/dist/__mocks__/version.js.map +0 -1
  79. package/dist/__tests__/client-href.test.d.ts +0 -2
  80. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  81. package/dist/__tests__/client-href.test.js +0 -74
  82. package/dist/__tests__/client-href.test.js.map +0 -1
  83. package/dist/__tests__/component-utils.test.d.ts +0 -2
  84. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  85. package/dist/__tests__/component-utils.test.js +0 -51
  86. package/dist/__tests__/component-utils.test.js.map +0 -1
  87. package/dist/__tests__/event-controller.test.d.ts +0 -2
  88. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  89. package/dist/__tests__/event-controller.test.js +0 -538
  90. package/dist/__tests__/event-controller.test.js.map +0 -1
  91. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  92. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  93. package/dist/__tests__/helpers/route-tree.js +0 -374
  94. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  95. package/dist/__tests__/match-result.test.d.ts +0 -2
  96. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  97. package/dist/__tests__/match-result.test.js +0 -154
  98. package/dist/__tests__/match-result.test.js.map +0 -1
  99. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  100. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  101. package/dist/__tests__/navigation-store.test.js +0 -440
  102. package/dist/__tests__/navigation-store.test.js.map +0 -1
  103. package/dist/__tests__/partial-update.test.d.ts +0 -2
  104. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  105. package/dist/__tests__/partial-update.test.js +0 -1009
  106. package/dist/__tests__/partial-update.test.js.map +0 -1
  107. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  108. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  109. package/dist/__tests__/reverse-types.test.js +0 -656
  110. package/dist/__tests__/reverse-types.test.js.map +0 -1
  111. package/dist/__tests__/route-definition.test.d.ts +0 -2
  112. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  113. package/dist/__tests__/route-definition.test.js +0 -55
  114. package/dist/__tests__/route-definition.test.js.map +0 -1
  115. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  116. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  117. package/dist/__tests__/router-helpers.test.js +0 -377
  118. package/dist/__tests__/router-helpers.test.js.map +0 -1
  119. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  120. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  121. package/dist/__tests__/router-integration-2.test.js +0 -426
  122. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  123. package/dist/__tests__/router-integration.test.d.ts +0 -2
  124. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  125. package/dist/__tests__/router-integration.test.js +0 -1051
  126. package/dist/__tests__/router-integration.test.js.map +0 -1
  127. package/dist/__tests__/search-params.test.d.ts +0 -5
  128. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  129. package/dist/__tests__/search-params.test.js +0 -306
  130. package/dist/__tests__/search-params.test.js.map +0 -1
  131. package/dist/__tests__/segment-system.test.d.ts +0 -2
  132. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  133. package/dist/__tests__/segment-system.test.js +0 -627
  134. package/dist/__tests__/segment-system.test.js.map +0 -1
  135. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  136. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  137. package/dist/__tests__/static-handler-types.test.js +0 -63
  138. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  139. package/dist/__tests__/urls.test.d.ts +0 -2
  140. package/dist/__tests__/urls.test.d.ts.map +0 -1
  141. package/dist/__tests__/urls.test.js +0 -421
  142. package/dist/__tests__/urls.test.js.map +0 -1
  143. package/dist/__tests__/use-mount.test.d.ts +0 -2
  144. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  145. package/dist/__tests__/use-mount.test.js +0 -35
  146. package/dist/__tests__/use-mount.test.js.map +0 -1
  147. package/dist/bin/rango.d.ts +0 -2
  148. package/dist/bin/rango.d.ts.map +0 -1
  149. package/dist/bin/rango.js.map +0 -1
  150. package/dist/browser/event-controller.d.ts +0 -191
  151. package/dist/browser/event-controller.d.ts.map +0 -1
  152. package/dist/browser/event-controller.js +0 -559
  153. package/dist/browser/event-controller.js.map +0 -1
  154. package/dist/browser/index.d.ts +0 -2
  155. package/dist/browser/index.d.ts.map +0 -1
  156. package/dist/browser/index.js +0 -14
  157. package/dist/browser/index.js.map +0 -1
  158. package/dist/browser/link-interceptor.d.ts +0 -38
  159. package/dist/browser/link-interceptor.d.ts.map +0 -1
  160. package/dist/browser/link-interceptor.js +0 -99
  161. package/dist/browser/link-interceptor.js.map +0 -1
  162. package/dist/browser/logging.d.ts +0 -10
  163. package/dist/browser/logging.d.ts.map +0 -1
  164. package/dist/browser/logging.js +0 -29
  165. package/dist/browser/logging.js.map +0 -1
  166. package/dist/browser/lru-cache.d.ts +0 -17
  167. package/dist/browser/lru-cache.d.ts.map +0 -1
  168. package/dist/browser/lru-cache.js +0 -50
  169. package/dist/browser/lru-cache.js.map +0 -1
  170. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  171. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  172. package/dist/browser/merge-segment-loaders.js +0 -102
  173. package/dist/browser/merge-segment-loaders.js.map +0 -1
  174. package/dist/browser/navigation-bridge.d.ts +0 -102
  175. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  176. package/dist/browser/navigation-bridge.js +0 -708
  177. package/dist/browser/navigation-bridge.js.map +0 -1
  178. package/dist/browser/navigation-client.d.ts +0 -25
  179. package/dist/browser/navigation-client.d.ts.map +0 -1
  180. package/dist/browser/navigation-client.js +0 -157
  181. package/dist/browser/navigation-client.js.map +0 -1
  182. package/dist/browser/navigation-store.d.ts +0 -101
  183. package/dist/browser/navigation-store.d.ts.map +0 -1
  184. package/dist/browser/navigation-store.js +0 -625
  185. package/dist/browser/navigation-store.js.map +0 -1
  186. package/dist/browser/partial-update.d.ts +0 -75
  187. package/dist/browser/partial-update.d.ts.map +0 -1
  188. package/dist/browser/partial-update.js +0 -426
  189. package/dist/browser/partial-update.js.map +0 -1
  190. package/dist/browser/react/Link.d.ts +0 -86
  191. package/dist/browser/react/Link.d.ts.map +0 -1
  192. package/dist/browser/react/Link.js +0 -128
  193. package/dist/browser/react/Link.js.map +0 -1
  194. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  195. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  196. package/dist/browser/react/NavigationProvider.js +0 -216
  197. package/dist/browser/react/NavigationProvider.js.map +0 -1
  198. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  199. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  200. package/dist/browser/react/ScrollRestoration.js +0 -57
  201. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  202. package/dist/browser/react/context.d.ts +0 -46
  203. package/dist/browser/react/context.d.ts.map +0 -1
  204. package/dist/browser/react/context.js +0 -10
  205. package/dist/browser/react/context.js.map +0 -1
  206. package/dist/browser/react/index.d.ts +0 -11
  207. package/dist/browser/react/index.d.ts.map +0 -1
  208. package/dist/browser/react/index.js +0 -22
  209. package/dist/browser/react/index.js.map +0 -1
  210. package/dist/browser/react/location-state-shared.d.ts +0 -63
  211. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  212. package/dist/browser/react/location-state-shared.js +0 -81
  213. package/dist/browser/react/location-state-shared.js.map +0 -1
  214. package/dist/browser/react/location-state.d.ts +0 -23
  215. package/dist/browser/react/location-state.d.ts.map +0 -1
  216. package/dist/browser/react/location-state.js +0 -29
  217. package/dist/browser/react/location-state.js.map +0 -1
  218. package/dist/browser/react/mount-context.d.ts +0 -24
  219. package/dist/browser/react/mount-context.d.ts.map +0 -1
  220. package/dist/browser/react/mount-context.js +0 -24
  221. package/dist/browser/react/mount-context.js.map +0 -1
  222. package/dist/browser/react/use-action.d.ts +0 -64
  223. package/dist/browser/react/use-action.d.ts.map +0 -1
  224. package/dist/browser/react/use-action.js +0 -134
  225. package/dist/browser/react/use-action.js.map +0 -1
  226. package/dist/browser/react/use-client-cache.d.ts +0 -41
  227. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  228. package/dist/browser/react/use-client-cache.js +0 -39
  229. package/dist/browser/react/use-client-cache.js.map +0 -1
  230. package/dist/browser/react/use-handle.d.ts +0 -31
  231. package/dist/browser/react/use-handle.d.ts.map +0 -1
  232. package/dist/browser/react/use-handle.js +0 -144
  233. package/dist/browser/react/use-handle.js.map +0 -1
  234. package/dist/browser/react/use-href.d.ts +0 -33
  235. package/dist/browser/react/use-href.d.ts.map +0 -1
  236. package/dist/browser/react/use-href.js +0 -39
  237. package/dist/browser/react/use-href.js.map +0 -1
  238. package/dist/browser/react/use-link-status.d.ts +0 -37
  239. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  240. package/dist/browser/react/use-link-status.js +0 -99
  241. package/dist/browser/react/use-link-status.js.map +0 -1
  242. package/dist/browser/react/use-mount.d.ts +0 -25
  243. package/dist/browser/react/use-mount.d.ts.map +0 -1
  244. package/dist/browser/react/use-mount.js +0 -30
  245. package/dist/browser/react/use-mount.js.map +0 -1
  246. package/dist/browser/react/use-navigation.d.ts +0 -27
  247. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  248. package/dist/browser/react/use-navigation.js +0 -87
  249. package/dist/browser/react/use-navigation.js.map +0 -1
  250. package/dist/browser/react/use-segments.d.ts +0 -38
  251. package/dist/browser/react/use-segments.d.ts.map +0 -1
  252. package/dist/browser/react/use-segments.js +0 -130
  253. package/dist/browser/react/use-segments.js.map +0 -1
  254. package/dist/browser/request-controller.d.ts +0 -26
  255. package/dist/browser/request-controller.d.ts.map +0 -1
  256. package/dist/browser/request-controller.js +0 -147
  257. package/dist/browser/request-controller.js.map +0 -1
  258. package/dist/browser/rsc-router.d.ts +0 -129
  259. package/dist/browser/rsc-router.d.ts.map +0 -1
  260. package/dist/browser/rsc-router.js +0 -195
  261. package/dist/browser/rsc-router.js.map +0 -1
  262. package/dist/browser/scroll-restoration.d.ts +0 -93
  263. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  264. package/dist/browser/scroll-restoration.js +0 -321
  265. package/dist/browser/scroll-restoration.js.map +0 -1
  266. package/dist/browser/segment-structure-assert.d.ts +0 -17
  267. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  268. package/dist/browser/segment-structure-assert.js +0 -59
  269. package/dist/browser/segment-structure-assert.js.map +0 -1
  270. package/dist/browser/server-action-bridge.d.ts +0 -26
  271. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  272. package/dist/browser/server-action-bridge.js +0 -668
  273. package/dist/browser/server-action-bridge.js.map +0 -1
  274. package/dist/browser/shallow.d.ts +0 -12
  275. package/dist/browser/shallow.d.ts.map +0 -1
  276. package/dist/browser/shallow.js +0 -34
  277. package/dist/browser/shallow.js.map +0 -1
  278. package/dist/browser/types.d.ts +0 -369
  279. package/dist/browser/types.d.ts.map +0 -1
  280. package/dist/browser/types.js +0 -2
  281. package/dist/browser/types.js.map +0 -1
  282. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  283. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  284. package/dist/build/__tests__/generate-cli.test.js +0 -237
  285. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  286. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  287. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  288. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  289. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  290. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  291. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  292. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  293. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  294. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  295. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  296. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  297. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  298. package/dist/build/generate-manifest.d.ts +0 -81
  299. package/dist/build/generate-manifest.d.ts.map +0 -1
  300. package/dist/build/generate-manifest.js +0 -276
  301. package/dist/build/generate-manifest.js.map +0 -1
  302. package/dist/build/generate-route-types.d.ts +0 -115
  303. package/dist/build/generate-route-types.d.ts.map +0 -1
  304. package/dist/build/generate-route-types.js +0 -740
  305. package/dist/build/generate-route-types.js.map +0 -1
  306. package/dist/build/index.d.ts +0 -21
  307. package/dist/build/index.d.ts.map +0 -1
  308. package/dist/build/index.js +0 -21
  309. package/dist/build/index.js.map +0 -1
  310. package/dist/build/route-trie.d.ts +0 -71
  311. package/dist/build/route-trie.d.ts.map +0 -1
  312. package/dist/build/route-trie.js +0 -175
  313. package/dist/build/route-trie.js.map +0 -1
  314. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  315. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  316. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  317. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  318. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  319. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  320. package/dist/cache/__tests__/document-cache.test.js +0 -345
  321. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  322. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  323. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  324. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  325. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  326. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  327. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  328. package/dist/cache/__tests__/memory-store.test.js +0 -367
  329. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  330. package/dist/cache/cache-scope.d.ts +0 -102
  331. package/dist/cache/cache-scope.d.ts.map +0 -1
  332. package/dist/cache/cache-scope.js +0 -440
  333. package/dist/cache/cache-scope.js.map +0 -1
  334. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  335. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  336. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  337. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  338. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  339. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  340. package/dist/cache/cf/cf-cache-store.js +0 -242
  341. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  342. package/dist/cache/cf/index.d.ts +0 -14
  343. package/dist/cache/cf/index.d.ts.map +0 -1
  344. package/dist/cache/cf/index.js +0 -17
  345. package/dist/cache/cf/index.js.map +0 -1
  346. package/dist/cache/document-cache.d.ts +0 -64
  347. package/dist/cache/document-cache.d.ts.map +0 -1
  348. package/dist/cache/document-cache.js +0 -228
  349. package/dist/cache/document-cache.js.map +0 -1
  350. package/dist/cache/index.d.ts +0 -19
  351. package/dist/cache/index.d.ts.map +0 -1
  352. package/dist/cache/index.js +0 -21
  353. package/dist/cache/index.js.map +0 -1
  354. package/dist/cache/memory-segment-store.d.ts +0 -110
  355. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  356. package/dist/cache/memory-segment-store.js +0 -117
  357. package/dist/cache/memory-segment-store.js.map +0 -1
  358. package/dist/cache/memory-store.d.ts +0 -41
  359. package/dist/cache/memory-store.d.ts.map +0 -1
  360. package/dist/cache/memory-store.js +0 -191
  361. package/dist/cache/memory-store.js.map +0 -1
  362. package/dist/cache/types.d.ts +0 -317
  363. package/dist/cache/types.d.ts.map +0 -1
  364. package/dist/cache/types.js +0 -12
  365. package/dist/cache/types.js.map +0 -1
  366. package/dist/client.d.ts +0 -248
  367. package/dist/client.d.ts.map +0 -1
  368. package/dist/client.js +0 -367
  369. package/dist/client.js.map +0 -1
  370. package/dist/client.rsc.d.ts +0 -26
  371. package/dist/client.rsc.d.ts.map +0 -1
  372. package/dist/client.rsc.js +0 -46
  373. package/dist/client.rsc.js.map +0 -1
  374. package/dist/component-utils.d.ts +0 -36
  375. package/dist/component-utils.d.ts.map +0 -1
  376. package/dist/component-utils.js +0 -61
  377. package/dist/component-utils.js.map +0 -1
  378. package/dist/components/DefaultDocument.d.ts +0 -13
  379. package/dist/components/DefaultDocument.d.ts.map +0 -1
  380. package/dist/components/DefaultDocument.js +0 -15
  381. package/dist/components/DefaultDocument.js.map +0 -1
  382. package/dist/debug.d.ts +0 -58
  383. package/dist/debug.d.ts.map +0 -1
  384. package/dist/debug.js +0 -157
  385. package/dist/debug.js.map +0 -1
  386. package/dist/default-error-boundary.d.ts +0 -11
  387. package/dist/default-error-boundary.d.ts.map +0 -1
  388. package/dist/default-error-boundary.js +0 -45
  389. package/dist/default-error-boundary.js.map +0 -1
  390. package/dist/deps/browser.d.ts +0 -2
  391. package/dist/deps/browser.d.ts.map +0 -1
  392. package/dist/deps/browser.js +0 -3
  393. package/dist/deps/browser.js.map +0 -1
  394. package/dist/deps/html-stream-client.d.ts +0 -2
  395. package/dist/deps/html-stream-client.d.ts.map +0 -1
  396. package/dist/deps/html-stream-client.js +0 -3
  397. package/dist/deps/html-stream-client.js.map +0 -1
  398. package/dist/deps/html-stream-server.d.ts +0 -2
  399. package/dist/deps/html-stream-server.d.ts.map +0 -1
  400. package/dist/deps/html-stream-server.js +0 -3
  401. package/dist/deps/html-stream-server.js.map +0 -1
  402. package/dist/deps/rsc.d.ts +0 -2
  403. package/dist/deps/rsc.d.ts.map +0 -1
  404. package/dist/deps/rsc.js +0 -4
  405. package/dist/deps/rsc.js.map +0 -1
  406. package/dist/deps/ssr.d.ts +0 -2
  407. package/dist/deps/ssr.d.ts.map +0 -1
  408. package/dist/deps/ssr.js +0 -3
  409. package/dist/deps/ssr.js.map +0 -1
  410. package/dist/errors.d.ts +0 -174
  411. package/dist/errors.d.ts.map +0 -1
  412. package/dist/errors.js +0 -241
  413. package/dist/errors.js.map +0 -1
  414. package/dist/handle.d.ts +0 -78
  415. package/dist/handle.d.ts.map +0 -1
  416. package/dist/handle.js +0 -82
  417. package/dist/handle.js.map +0 -1
  418. package/dist/handles/MetaTags.d.ts +0 -14
  419. package/dist/handles/MetaTags.d.ts.map +0 -1
  420. package/dist/handles/MetaTags.js +0 -136
  421. package/dist/handles/MetaTags.js.map +0 -1
  422. package/dist/handles/index.d.ts +0 -6
  423. package/dist/handles/index.d.ts.map +0 -1
  424. package/dist/handles/index.js +0 -6
  425. package/dist/handles/index.js.map +0 -1
  426. package/dist/handles/meta.d.ts +0 -39
  427. package/dist/handles/meta.d.ts.map +0 -1
  428. package/dist/handles/meta.js +0 -202
  429. package/dist/handles/meta.js.map +0 -1
  430. package/dist/host/__tests__/errors.test.d.ts +0 -2
  431. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  432. package/dist/host/__tests__/errors.test.js +0 -76
  433. package/dist/host/__tests__/errors.test.js.map +0 -1
  434. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  435. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  436. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  437. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  438. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  439. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  440. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  441. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  442. package/dist/host/__tests__/router.test.d.ts +0 -2
  443. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  444. package/dist/host/__tests__/router.test.js +0 -241
  445. package/dist/host/__tests__/router.test.js.map +0 -1
  446. package/dist/host/__tests__/testing.test.d.ts +0 -2
  447. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  448. package/dist/host/__tests__/testing.test.js +0 -64
  449. package/dist/host/__tests__/testing.test.js.map +0 -1
  450. package/dist/host/__tests__/utils.test.d.ts +0 -2
  451. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  452. package/dist/host/__tests__/utils.test.js +0 -29
  453. package/dist/host/__tests__/utils.test.js.map +0 -1
  454. package/dist/host/cookie-handler.d.ts +0 -34
  455. package/dist/host/cookie-handler.d.ts.map +0 -1
  456. package/dist/host/cookie-handler.js +0 -124
  457. package/dist/host/cookie-handler.js.map +0 -1
  458. package/dist/host/errors.d.ts +0 -56
  459. package/dist/host/errors.d.ts.map +0 -1
  460. package/dist/host/errors.js +0 -79
  461. package/dist/host/errors.js.map +0 -1
  462. package/dist/host/index.d.ts +0 -29
  463. package/dist/host/index.d.ts.map +0 -1
  464. package/dist/host/index.js +0 -32
  465. package/dist/host/index.js.map +0 -1
  466. package/dist/host/pattern-matcher.d.ts +0 -36
  467. package/dist/host/pattern-matcher.d.ts.map +0 -1
  468. package/dist/host/pattern-matcher.js +0 -172
  469. package/dist/host/pattern-matcher.js.map +0 -1
  470. package/dist/host/router.d.ts +0 -26
  471. package/dist/host/router.d.ts.map +0 -1
  472. package/dist/host/router.js +0 -218
  473. package/dist/host/router.js.map +0 -1
  474. package/dist/host/testing.d.ts +0 -36
  475. package/dist/host/testing.d.ts.map +0 -1
  476. package/dist/host/testing.js +0 -55
  477. package/dist/host/testing.js.map +0 -1
  478. package/dist/host/types.d.ts +0 -115
  479. package/dist/host/types.d.ts.map +0 -1
  480. package/dist/host/types.js +0 -7
  481. package/dist/host/types.js.map +0 -1
  482. package/dist/host/utils.d.ts +0 -21
  483. package/dist/host/utils.d.ts.map +0 -1
  484. package/dist/host/utils.js +0 -23
  485. package/dist/host/utils.js.map +0 -1
  486. package/dist/href-client.d.ts +0 -131
  487. package/dist/href-client.d.ts.map +0 -1
  488. package/dist/href-client.js +0 -64
  489. package/dist/href-client.js.map +0 -1
  490. package/dist/href-context.d.ts +0 -29
  491. package/dist/href-context.d.ts.map +0 -1
  492. package/dist/href-context.js +0 -21
  493. package/dist/href-context.js.map +0 -1
  494. package/dist/index.d.ts +0 -73
  495. package/dist/index.d.ts.map +0 -1
  496. package/dist/index.js +0 -91
  497. package/dist/index.js.map +0 -1
  498. package/dist/index.rsc.d.ts +0 -32
  499. package/dist/index.rsc.d.ts.map +0 -1
  500. package/dist/index.rsc.js +0 -40
  501. package/dist/index.rsc.js.map +0 -1
  502. package/dist/internal-debug.d.ts +0 -2
  503. package/dist/internal-debug.d.ts.map +0 -1
  504. package/dist/internal-debug.js +0 -5
  505. package/dist/internal-debug.js.map +0 -1
  506. package/dist/loader.d.ts +0 -14
  507. package/dist/loader.d.ts.map +0 -1
  508. package/dist/loader.js +0 -20
  509. package/dist/loader.js.map +0 -1
  510. package/dist/loader.rsc.d.ts +0 -19
  511. package/dist/loader.rsc.d.ts.map +0 -1
  512. package/dist/loader.rsc.js +0 -99
  513. package/dist/loader.rsc.js.map +0 -1
  514. package/dist/network-error-thrower.d.ts +0 -17
  515. package/dist/network-error-thrower.d.ts.map +0 -1
  516. package/dist/network-error-thrower.js +0 -14
  517. package/dist/network-error-thrower.js.map +0 -1
  518. package/dist/outlet-context.d.ts +0 -13
  519. package/dist/outlet-context.d.ts.map +0 -1
  520. package/dist/outlet-context.js +0 -3
  521. package/dist/outlet-context.js.map +0 -1
  522. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  523. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  524. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  525. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  526. package/dist/prerender/param-hash.d.ts +0 -16
  527. package/dist/prerender/param-hash.d.ts.map +0 -1
  528. package/dist/prerender/param-hash.js +0 -36
  529. package/dist/prerender/param-hash.js.map +0 -1
  530. package/dist/prerender/store.d.ts +0 -38
  531. package/dist/prerender/store.d.ts.map +0 -1
  532. package/dist/prerender/store.js +0 -61
  533. package/dist/prerender/store.js.map +0 -1
  534. package/dist/prerender.d.ts +0 -66
  535. package/dist/prerender.d.ts.map +0 -1
  536. package/dist/prerender.js +0 -57
  537. package/dist/prerender.js.map +0 -1
  538. package/dist/reverse.d.ts +0 -196
  539. package/dist/reverse.d.ts.map +0 -1
  540. package/dist/reverse.js +0 -78
  541. package/dist/reverse.js.map +0 -1
  542. package/dist/root-error-boundary.d.ts +0 -33
  543. package/dist/root-error-boundary.d.ts.map +0 -1
  544. package/dist/root-error-boundary.js +0 -165
  545. package/dist/root-error-boundary.js.map +0 -1
  546. package/dist/route-content-wrapper.d.ts +0 -46
  547. package/dist/route-content-wrapper.d.ts.map +0 -1
  548. package/dist/route-content-wrapper.js +0 -77
  549. package/dist/route-content-wrapper.js.map +0 -1
  550. package/dist/route-definition.d.ts +0 -421
  551. package/dist/route-definition.d.ts.map +0 -1
  552. package/dist/route-definition.js +0 -868
  553. package/dist/route-definition.js.map +0 -1
  554. package/dist/route-map-builder.d.ts +0 -155
  555. package/dist/route-map-builder.d.ts.map +0 -1
  556. package/dist/route-map-builder.js +0 -237
  557. package/dist/route-map-builder.js.map +0 -1
  558. package/dist/route-types.d.ts +0 -165
  559. package/dist/route-types.d.ts.map +0 -1
  560. package/dist/route-types.js +0 -7
  561. package/dist/route-types.js.map +0 -1
  562. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  563. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  564. package/dist/router/__tests__/handler-context.test.js +0 -65
  565. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  566. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  567. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  568. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  569. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  570. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  571. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  572. package/dist/router/__tests__/match-context.test.js +0 -92
  573. package/dist/router/__tests__/match-context.test.js.map +0 -1
  574. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  575. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  576. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  577. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  578. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  579. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  580. package/dist/router/__tests__/match-result.test.js +0 -457
  581. package/dist/router/__tests__/match-result.test.js.map +0 -1
  582. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  583. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  584. package/dist/router/__tests__/on-error.test.js +0 -678
  585. package/dist/router/__tests__/on-error.test.js.map +0 -1
  586. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  587. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  588. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  589. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  590. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  591. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  592. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  593. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  594. package/dist/router/error-handling.d.ts +0 -77
  595. package/dist/router/error-handling.d.ts.map +0 -1
  596. package/dist/router/error-handling.js +0 -202
  597. package/dist/router/error-handling.js.map +0 -1
  598. package/dist/router/handler-context.d.ts +0 -20
  599. package/dist/router/handler-context.d.ts.map +0 -1
  600. package/dist/router/handler-context.js +0 -198
  601. package/dist/router/handler-context.js.map +0 -1
  602. package/dist/router/intercept-resolution.d.ts +0 -66
  603. package/dist/router/intercept-resolution.d.ts.map +0 -1
  604. package/dist/router/intercept-resolution.js +0 -246
  605. package/dist/router/intercept-resolution.js.map +0 -1
  606. package/dist/router/loader-resolution.d.ts +0 -64
  607. package/dist/router/loader-resolution.d.ts.map +0 -1
  608. package/dist/router/loader-resolution.js +0 -284
  609. package/dist/router/loader-resolution.js.map +0 -1
  610. package/dist/router/logging.d.ts +0 -15
  611. package/dist/router/logging.d.ts.map +0 -1
  612. package/dist/router/logging.js +0 -99
  613. package/dist/router/logging.js.map +0 -1
  614. package/dist/router/manifest.d.ts +0 -22
  615. package/dist/router/manifest.d.ts.map +0 -1
  616. package/dist/router/manifest.js +0 -181
  617. package/dist/router/manifest.js.map +0 -1
  618. package/dist/router/match-api.d.ts +0 -35
  619. package/dist/router/match-api.d.ts.map +0 -1
  620. package/dist/router/match-api.js +0 -406
  621. package/dist/router/match-api.js.map +0 -1
  622. package/dist/router/match-context.d.ts +0 -206
  623. package/dist/router/match-context.d.ts.map +0 -1
  624. package/dist/router/match-context.js +0 -17
  625. package/dist/router/match-context.js.map +0 -1
  626. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  627. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  628. package/dist/router/match-middleware/background-revalidation.js +0 -75
  629. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  630. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  631. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  632. package/dist/router/match-middleware/cache-lookup.js +0 -257
  633. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  634. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  635. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  636. package/dist/router/match-middleware/cache-store.js +0 -108
  637. package/dist/router/match-middleware/cache-store.js.map +0 -1
  638. package/dist/router/match-middleware/index.d.ts +0 -81
  639. package/dist/router/match-middleware/index.d.ts.map +0 -1
  640. package/dist/router/match-middleware/index.js +0 -80
  641. package/dist/router/match-middleware/index.js.map +0 -1
  642. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  643. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  644. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  645. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  646. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  647. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  648. package/dist/router/match-middleware/segment-resolution.js +0 -53
  649. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  650. package/dist/router/match-pipelines.d.ts +0 -147
  651. package/dist/router/match-pipelines.d.ts.map +0 -1
  652. package/dist/router/match-pipelines.js +0 -82
  653. package/dist/router/match-pipelines.js.map +0 -1
  654. package/dist/router/match-result.d.ts +0 -126
  655. package/dist/router/match-result.d.ts.map +0 -1
  656. package/dist/router/match-result.js +0 -93
  657. package/dist/router/match-result.js.map +0 -1
  658. package/dist/router/metrics.d.ts +0 -20
  659. package/dist/router/metrics.d.ts.map +0 -1
  660. package/dist/router/metrics.js +0 -47
  661. package/dist/router/metrics.js.map +0 -1
  662. package/dist/router/middleware.d.ts +0 -249
  663. package/dist/router/middleware.d.ts.map +0 -1
  664. package/dist/router/middleware.js +0 -434
  665. package/dist/router/middleware.js.map +0 -1
  666. package/dist/router/middleware.test.d.ts +0 -2
  667. package/dist/router/middleware.test.d.ts.map +0 -1
  668. package/dist/router/middleware.test.js +0 -816
  669. package/dist/router/middleware.test.js.map +0 -1
  670. package/dist/router/pattern-matching.d.ts +0 -149
  671. package/dist/router/pattern-matching.d.ts.map +0 -1
  672. package/dist/router/pattern-matching.js +0 -349
  673. package/dist/router/pattern-matching.js.map +0 -1
  674. package/dist/router/revalidation.d.ts +0 -44
  675. package/dist/router/revalidation.d.ts.map +0 -1
  676. package/dist/router/revalidation.js +0 -147
  677. package/dist/router/revalidation.js.map +0 -1
  678. package/dist/router/router-context.d.ts +0 -135
  679. package/dist/router/router-context.d.ts.map +0 -1
  680. package/dist/router/router-context.js +0 -36
  681. package/dist/router/router-context.js.map +0 -1
  682. package/dist/router/segment-resolution.d.ts +0 -127
  683. package/dist/router/segment-resolution.d.ts.map +0 -1
  684. package/dist/router/segment-resolution.js +0 -919
  685. package/dist/router/segment-resolution.js.map +0 -1
  686. package/dist/router/trie-matching.d.ts +0 -40
  687. package/dist/router/trie-matching.d.ts.map +0 -1
  688. package/dist/router/trie-matching.js +0 -127
  689. package/dist/router/trie-matching.js.map +0 -1
  690. package/dist/router/types.d.ts +0 -136
  691. package/dist/router/types.d.ts.map +0 -1
  692. package/dist/router/types.js +0 -7
  693. package/dist/router/types.js.map +0 -1
  694. package/dist/router.d.ts +0 -753
  695. package/dist/router.d.ts.map +0 -1
  696. package/dist/router.gen.d.ts +0 -6
  697. package/dist/router.gen.d.ts.map +0 -1
  698. package/dist/router.gen.js +0 -6
  699. package/dist/router.gen.js.map +0 -1
  700. package/dist/router.js +0 -1304
  701. package/dist/router.js.map +0 -1
  702. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  703. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  704. package/dist/rsc/__tests__/helpers.test.js +0 -140
  705. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  706. package/dist/rsc/handler.d.ts +0 -45
  707. package/dist/rsc/handler.d.ts.map +0 -1
  708. package/dist/rsc/handler.js +0 -1172
  709. package/dist/rsc/handler.js.map +0 -1
  710. package/dist/rsc/helpers.d.ts +0 -16
  711. package/dist/rsc/helpers.d.ts.map +0 -1
  712. package/dist/rsc/helpers.js +0 -55
  713. package/dist/rsc/helpers.js.map +0 -1
  714. package/dist/rsc/index.d.ts +0 -22
  715. package/dist/rsc/index.d.ts.map +0 -1
  716. package/dist/rsc/index.js +0 -23
  717. package/dist/rsc/index.js.map +0 -1
  718. package/dist/rsc/nonce.d.ts +0 -9
  719. package/dist/rsc/nonce.d.ts.map +0 -1
  720. package/dist/rsc/nonce.js +0 -18
  721. package/dist/rsc/nonce.js.map +0 -1
  722. package/dist/rsc/types.d.ts +0 -206
  723. package/dist/rsc/types.d.ts.map +0 -1
  724. package/dist/rsc/types.js +0 -8
  725. package/dist/rsc/types.js.map +0 -1
  726. package/dist/search-params.d.ts +0 -103
  727. package/dist/search-params.d.ts.map +0 -1
  728. package/dist/search-params.js +0 -74
  729. package/dist/search-params.js.map +0 -1
  730. package/dist/segment-system.d.ts +0 -75
  731. package/dist/segment-system.d.ts.map +0 -1
  732. package/dist/segment-system.js +0 -336
  733. package/dist/segment-system.js.map +0 -1
  734. package/dist/server/context.d.ts +0 -245
  735. package/dist/server/context.d.ts.map +0 -1
  736. package/dist/server/context.js +0 -197
  737. package/dist/server/context.js.map +0 -1
  738. package/dist/server/fetchable-loader-store.d.ts +0 -18
  739. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  740. package/dist/server/fetchable-loader-store.js +0 -18
  741. package/dist/server/fetchable-loader-store.js.map +0 -1
  742. package/dist/server/handle-store.d.ts +0 -85
  743. package/dist/server/handle-store.d.ts.map +0 -1
  744. package/dist/server/handle-store.js +0 -142
  745. package/dist/server/handle-store.js.map +0 -1
  746. package/dist/server/loader-registry.d.ts +0 -55
  747. package/dist/server/loader-registry.d.ts.map +0 -1
  748. package/dist/server/loader-registry.js +0 -132
  749. package/dist/server/loader-registry.js.map +0 -1
  750. package/dist/server/request-context.d.ts +0 -226
  751. package/dist/server/request-context.d.ts.map +0 -1
  752. package/dist/server/request-context.js +0 -290
  753. package/dist/server/request-context.js.map +0 -1
  754. package/dist/server/root-layout.d.ts +0 -4
  755. package/dist/server/root-layout.d.ts.map +0 -1
  756. package/dist/server/root-layout.js +0 -5
  757. package/dist/server/root-layout.js.map +0 -1
  758. package/dist/server.d.ts +0 -15
  759. package/dist/server.d.ts.map +0 -1
  760. package/dist/server.js +0 -20
  761. package/dist/server.js.map +0 -1
  762. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  763. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  764. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  765. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  766. package/dist/ssr/index.d.ts +0 -98
  767. package/dist/ssr/index.d.ts.map +0 -1
  768. package/dist/ssr/index.js +0 -158
  769. package/dist/ssr/index.js.map +0 -1
  770. package/dist/static-handler.d.ts +0 -50
  771. package/dist/static-handler.d.ts.map +0 -1
  772. package/dist/static-handler.gen.d.ts +0 -5
  773. package/dist/static-handler.gen.d.ts.map +0 -1
  774. package/dist/static-handler.gen.js +0 -5
  775. package/dist/static-handler.gen.js.map +0 -1
  776. package/dist/static-handler.js +0 -29
  777. package/dist/static-handler.js.map +0 -1
  778. package/dist/theme/ThemeProvider.d.ts +0 -20
  779. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  780. package/dist/theme/ThemeProvider.js +0 -240
  781. package/dist/theme/ThemeProvider.js.map +0 -1
  782. package/dist/theme/ThemeScript.d.ts +0 -48
  783. package/dist/theme/ThemeScript.d.ts.map +0 -1
  784. package/dist/theme/ThemeScript.js +0 -13
  785. package/dist/theme/ThemeScript.js.map +0 -1
  786. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  787. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  788. package/dist/theme/__tests__/theme.test.js +0 -103
  789. package/dist/theme/__tests__/theme.test.js.map +0 -1
  790. package/dist/theme/constants.d.ts +0 -29
  791. package/dist/theme/constants.d.ts.map +0 -1
  792. package/dist/theme/constants.js +0 -48
  793. package/dist/theme/constants.js.map +0 -1
  794. package/dist/theme/index.d.ts +0 -31
  795. package/dist/theme/index.d.ts.map +0 -1
  796. package/dist/theme/index.js +0 -36
  797. package/dist/theme/index.js.map +0 -1
  798. package/dist/theme/theme-context.d.ts +0 -40
  799. package/dist/theme/theme-context.d.ts.map +0 -1
  800. package/dist/theme/theme-context.js +0 -60
  801. package/dist/theme/theme-context.js.map +0 -1
  802. package/dist/theme/theme-script.d.ts +0 -27
  803. package/dist/theme/theme-script.d.ts.map +0 -1
  804. package/dist/theme/theme-script.js +0 -147
  805. package/dist/theme/theme-script.js.map +0 -1
  806. package/dist/theme/types.d.ts +0 -163
  807. package/dist/theme/types.d.ts.map +0 -1
  808. package/dist/theme/types.js +0 -11
  809. package/dist/theme/types.js.map +0 -1
  810. package/dist/theme/use-theme.d.ts +0 -12
  811. package/dist/theme/use-theme.d.ts.map +0 -1
  812. package/dist/theme/use-theme.js +0 -40
  813. package/dist/theme/use-theme.js.map +0 -1
  814. package/dist/types.d.ts +0 -1479
  815. package/dist/types.d.ts.map +0 -1
  816. package/dist/types.js +0 -10
  817. package/dist/types.js.map +0 -1
  818. package/dist/urls.d.ts +0 -441
  819. package/dist/urls.d.ts.map +0 -1
  820. package/dist/urls.gen.d.ts +0 -8
  821. package/dist/urls.gen.d.ts.map +0 -1
  822. package/dist/urls.gen.js +0 -8
  823. package/dist/urls.gen.js.map +0 -1
  824. package/dist/urls.js +0 -443
  825. package/dist/urls.js.map +0 -1
  826. package/dist/use-loader.d.ts +0 -127
  827. package/dist/use-loader.d.ts.map +0 -1
  828. package/dist/use-loader.js +0 -237
  829. package/dist/use-loader.js.map +0 -1
  830. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  831. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  832. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  833. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  834. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  835. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  836. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  837. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  838. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  839. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  840. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  841. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  842. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  843. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  844. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  845. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  846. package/dist/vite/ast-handler-extract.d.ts +0 -49
  847. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  848. package/dist/vite/ast-handler-extract.js +0 -249
  849. package/dist/vite/ast-handler-extract.js.map +0 -1
  850. package/dist/vite/expose-action-id.d.ts +0 -19
  851. package/dist/vite/expose-action-id.d.ts.map +0 -1
  852. package/dist/vite/expose-action-id.js +0 -250
  853. package/dist/vite/expose-action-id.js.map +0 -1
  854. package/dist/vite/expose-id-utils.d.ts +0 -69
  855. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  856. package/dist/vite/expose-id-utils.js +0 -289
  857. package/dist/vite/expose-id-utils.js.map +0 -1
  858. package/dist/vite/expose-internal-ids.d.ts +0 -22
  859. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  860. package/dist/vite/expose-internal-ids.js +0 -886
  861. package/dist/vite/expose-internal-ids.js.map +0 -1
  862. package/dist/vite/index.d.ts +0 -149
  863. package/dist/vite/index.d.ts.map +0 -1
  864. package/dist/vite/index.js.bak +0 -5448
  865. package/dist/vite/index.js.map +0 -1
  866. package/dist/vite/index.named-routes.gen.ts +0 -103
  867. package/dist/vite/package-resolution.d.ts +0 -43
  868. package/dist/vite/package-resolution.d.ts.map +0 -1
  869. package/dist/vite/package-resolution.js +0 -112
  870. package/dist/vite/package-resolution.js.map +0 -1
  871. package/dist/vite/virtual-entries.d.ts +0 -25
  872. package/dist/vite/virtual-entries.d.ts.map +0 -1
  873. package/dist/vite/virtual-entries.js +0 -110
  874. package/dist/vite/virtual-entries.js.map +0 -1
  875. package/src/browser/action-response-classifier.ts +0 -99
@@ -28,7 +28,7 @@ import { NonceContext } from "./nonce-context.js";
28
28
  import type { ResolvedThemeConfig, Theme } from "../../theme/types.js";
29
29
  import { cancelAllPrefetches } from "../prefetch/queue.js";
30
30
  import { handleNavigationEnd } from "../scroll-restoration.js";
31
- import type { AppShellRef } from "../app-shell.js";
31
+ import { createAppShellRef, type AppShellRef } from "../app-shell.js";
32
32
 
33
33
  /**
34
34
  * Process handles from an async generator, updating the event controller
@@ -217,38 +217,33 @@ export function NavigationProvider({
217
217
  await bridge.refresh();
218
218
  }, []);
219
219
 
220
- // Context value is stable (store, eventController, navigate, refresh never
221
- // change). When an appShellRef is supplied, `basename` and `version` are
222
- // installed as live getters so app-switch transitions (which update the ref)
223
- // propagate to consumers without forcing a tree-wide rerender.
220
+ // basename/version are always read through a shell ref so the context value
221
+ // has a single shape: a supplied appShellRef stays live (app-switch updates
222
+ // it), the standalone fallback is a frozen ref over the mount-time props.
223
+ const fallbackShellRef = useRef<AppShellRef | null>(null);
224
+ if (!fallbackShellRef.current) {
225
+ fallbackShellRef.current = createAppShellRef({ basename, version });
226
+ }
227
+ const shellRef = appShellRef ?? fallbackShellRef.current;
228
+
224
229
  const contextValue = useMemo<NavigationStoreContextValue>(() => {
225
- if (appShellRef) {
226
- const value = {
227
- store,
228
- eventController,
229
- navigate,
230
- refresh,
231
- } as NavigationStoreContextValue;
232
- Object.defineProperty(value, "basename", {
233
- configurable: true,
234
- enumerable: true,
235
- get: () => appShellRef.get().basename,
236
- });
237
- Object.defineProperty(value, "version", {
238
- configurable: true,
239
- enumerable: true,
240
- get: () => appShellRef.get().version,
241
- });
242
- return value;
243
- }
244
- return {
230
+ const value = {
245
231
  store,
246
232
  eventController,
247
233
  navigate,
248
234
  refresh,
249
- version,
250
- basename,
251
- };
235
+ } as NavigationStoreContextValue;
236
+ Object.defineProperty(value, "basename", {
237
+ configurable: true,
238
+ enumerable: true,
239
+ get: () => shellRef.get().basename,
240
+ });
241
+ Object.defineProperty(value, "version", {
242
+ configurable: true,
243
+ enumerable: true,
244
+ get: () => shellRef.get().version,
245
+ });
246
+ return value;
252
247
  }, []);
253
248
 
254
249
  // Connection warmup: keep TLS alive after idle periods.
@@ -410,21 +405,15 @@ export function NavigationProvider({
410
405
  }).catch((err) =>
411
406
  console.error("[NavigationProvider] Error consuming handles:", err),
412
407
  );
413
- } else if (update.metadata.cachedHandleData) {
414
- // For back/forward navigation from cache, restore the cached handleData
415
- // This restores breadcrumbs to the exact state they were when the page was cached
416
- eventController.setHandleData(
417
- update.metadata.cachedHandleData,
418
- update.metadata.matched,
419
- false, // full replace - restore entire cached state
420
- );
421
408
  } else if (update.metadata.matched) {
422
- // For cached navigations without handleData, update segmentOrder to clean up stale data
409
+ // cachedHandleData present -> full restore (back/forward); absent ->
410
+ // partial cleanup of segments no longer matched.
411
+ const cached = update.metadata.cachedHandleData;
423
412
  eventController.setHandleData(
424
- {}, // Empty data - all existing data not in matched will be cleaned up
413
+ cached ?? {},
425
414
  update.metadata.matched,
426
- true, // partial update - will clean up segments not in matched
427
- update.metadata.resolvedIds,
415
+ cached === undefined,
416
+ cached === undefined ? update.metadata.resolvedIds : undefined,
428
417
  );
429
418
  }
430
419
  });
@@ -3,6 +3,8 @@
3
3
  * No "use client" directive so it can be imported from RSC
4
4
  */
5
5
 
6
+ import type { ReactElement } from "react";
7
+
6
8
  /**
7
9
  * Internal entry representing a state value with its unique key.
8
10
  * When __rsc_ls_lazy is true, __rsc_ls_value holds a getter function
@@ -22,6 +24,88 @@ export interface LocationStateOptions {
22
24
  flash?: boolean;
23
25
  }
24
26
 
27
+ type LocationStateUnsafeFn = (...args: never[]) => unknown;
28
+
29
+ // Broadest constructor signature (`abstract` covers both abstract and concrete
30
+ // classes). A class passed as state has a `new` signature, not a call signature,
31
+ // so it slips past LocationStateUnsafeFn; at runtime the lazy-getter path
32
+ // (`typeof value === "function"`) then mistakes it for a getter and throws.
33
+ type LocationStateUnsafeCtor = abstract new (...args: never[]) => unknown;
34
+
35
+ // `unknown` cannot be verified serializable, so it is rejected (callers must
36
+ // supply a concrete type). `any` deliberately defeats type checking and is NOT
37
+ // guardable — it is assignable to the branded error too, so the check always
38
+ // passes; it remains an explicit escape hatch.
39
+ type IsAny<T> = 0 extends 1 & T ? true : false;
40
+ type IsUnknown<T> =
41
+ IsAny<T> extends true ? false : unknown extends T ? true : false;
42
+
43
+ /**
44
+ * Branded error surfaced when a value that cannot live in location state is
45
+ * used. Location state is written into `history.state`, which uses the
46
+ * structured clone algorithm; React elements, functions, and symbols throw a
47
+ * `DataCloneError` at runtime. Carries a human-readable reason so the compile
48
+ * error explains the fix.
49
+ */
50
+ export type LocationStateUnsafe<Reason extends string> = {
51
+ readonly __rango_location_state_unsafe: Reason;
52
+ };
53
+
54
+ /**
55
+ * Maps `T` to itself when it is safe to store in location state, or to a branded
56
+ * {@link LocationStateUnsafe} error for the disallowed parts: `unknown`, React
57
+ * elements (RSC/JSX content), functions, class constructors, and symbols.
58
+ * Recurses through arrays, `Map`, `Set`, and plain objects; structured-clone
59
+ * built-ins (`Date`, `RegExp`, typed arrays, `Blob`, `File`, `FormData`) pass
60
+ * through. Consumed by {@link ValidateLocationState}, which is intersected into a
61
+ * definition's value parameter so posting RSC content is a COMPILE error, not a
62
+ * runtime `DataCloneError`. (`any` is unguardable and remains an escape hatch.)
63
+ */
64
+ export type LocationStateSafe<T> =
65
+ IsUnknown<T> extends true
66
+ ? LocationStateUnsafe<"location state needs an explicit, concrete type; `unknown` cannot be verified as serializable">
67
+ : T extends LocationStateUnsafeFn
68
+ ? LocationStateUnsafe<"functions cannot be stored in location state">
69
+ : T extends LocationStateUnsafeCtor
70
+ ? LocationStateUnsafe<"class constructors cannot be stored in location state">
71
+ : T extends symbol
72
+ ? LocationStateUnsafe<"symbols cannot be stored in location state">
73
+ : T extends ReactElement
74
+ ? LocationStateUnsafe<"React/RSC content cannot be stored in location state; store plain data and render it on arrival">
75
+ : T extends string | number | boolean | bigint | null | undefined
76
+ ? T
77
+ : T extends
78
+ | Date
79
+ | RegExp
80
+ | ArrayBuffer
81
+ | ArrayBufferView
82
+ | Blob
83
+ | File
84
+ | FormData
85
+ ? T
86
+ : T extends ReadonlyMap<infer K, infer V>
87
+ ? ReadonlyMap<LocationStateSafe<K>, LocationStateSafe<V>>
88
+ : T extends ReadonlySet<infer V>
89
+ ? ReadonlySet<LocationStateSafe<V>>
90
+ : T extends readonly unknown[]
91
+ ? { [K in keyof T]: LocationStateSafe<T[K]> }
92
+ : T extends object
93
+ ? { [K in keyof T]: LocationStateSafe<T[K]> }
94
+ : T;
95
+
96
+ /**
97
+ * `unknown` (a no-op) when `T` is safe to store in location state, otherwise a
98
+ * branded {@link LocationStateUnsafe} object. Intersected into the value
99
+ * parameter of a definition's call and `write()` so POSTING RSC content (or any
100
+ * non-serializable value) is a compile error whose text carries the reason —
101
+ * without a `TState extends ...` self-constraint, which TypeScript rejects as
102
+ * circular (TS2313). For safe `T`, `value & unknown` collapses back to `value`,
103
+ * so valid usage is unchanged.
104
+ */
105
+ export type ValidateLocationState<T> = [T] extends [LocationStateSafe<T>]
106
+ ? unknown
107
+ : LocationStateUnsafe<"location state must be serializable: React/RSC content, functions, and symbols cannot be stored — pass plain data and render it on arrival">;
108
+
25
109
  /**
26
110
  * Type-safe location state definition
27
111
  *
@@ -59,7 +143,7 @@ export interface LocationStateDefinition<TArgs extends unknown[], TState> {
59
143
  *
60
144
  * Client-only: throws when called on the server (no history available).
61
145
  */
62
- write(value: TState): void;
146
+ write(value: TState & ValidateLocationState<TState>): void;
63
147
  /**
64
148
  * Statically remove this definition's slot from the current history entry,
65
149
  * leaving any other keys on history.state untouched. Idempotent: removing
@@ -118,7 +202,10 @@ export interface LocationStateDefinition<TArgs extends unknown[], TState> {
118
202
  */
119
203
  export function createLocationState<TState>(
120
204
  options?: LocationStateOptions,
121
- ): LocationStateDefinition<[TState | (() => TState)], TState> {
205
+ ): LocationStateDefinition<
206
+ [(TState | (() => TState)) & ValidateLocationState<TState>],
207
+ TState
208
+ > {
122
209
  const flash = options?.flash ?? false;
123
210
  let _key: string | undefined;
124
211
 
@@ -209,7 +296,10 @@ export function createLocationState<TState>(
209
296
  enumerable: true,
210
297
  });
211
298
 
212
- return fn as LocationStateDefinition<[TState | (() => TState)], TState>;
299
+ return fn as unknown as LocationStateDefinition<
300
+ [(TState | (() => TState)) & ValidateLocationState<TState>],
301
+ TState
302
+ >;
213
303
  }
214
304
 
215
305
  /**
@@ -4,6 +4,8 @@ import { useContext, useState, useEffect, useRef } from "react";
4
4
  import { NavigationStoreContext } from "./context.js";
5
5
  import { shallowEqual } from "./shallow-equal.js";
6
6
 
7
+ const EMPTY_PARAMS: Record<string, string> = Object.freeze({});
8
+
7
9
  /**
8
10
  * Hook to access the current route params.
9
11
  *
@@ -43,10 +45,7 @@ export function useParams<T>(
43
45
  const ctx = useContext(NavigationStoreContext);
44
46
 
45
47
  const [value, setValue] = useState<T | Record<string, string>>(() => {
46
- if (!ctx) {
47
- return selector ? selector({}) : {};
48
- }
49
- const params = ctx.eventController.getParams();
48
+ const params = ctx ? ctx.eventController.getParams() : EMPTY_PARAMS;
50
49
  return selector ? selector(params) : params;
51
50
  });
52
51
 
@@ -24,6 +24,31 @@ export function emptyResponse(): Response {
24
24
  return new Response(null, { status: 200 });
25
25
  }
26
26
 
27
+ /**
28
+ * Handle the X-RSC-Reload control header (server requests a full page reload on
29
+ * a version mismatch). Returns a short-circuit response when the header is
30
+ * present -- emptyResponse() if the URL was blocked by origin validation, or a
31
+ * never-resolving promise while the page reloads -- and null when absent, so
32
+ * the caller continues processing (e.g. the X-RSC-Redirect check). Scoped to
33
+ * X-RSC-Reload only; redirect handling differs between callers.
34
+ */
35
+ export function handleReloadHeader(
36
+ response: Response,
37
+ opts: { onBlocked: () => void; onReload: (url: string) => void },
38
+ ): Response | Promise<Response> | null {
39
+ const reload = extractRscHeaderUrl(response, "X-RSC-Reload");
40
+ if (reload === "blocked") {
41
+ opts.onBlocked();
42
+ return emptyResponse();
43
+ }
44
+ if (reload) {
45
+ opts.onReload(reload.url);
46
+ window.location.href = reload.url;
47
+ return new Promise<Response>(() => {});
48
+ }
49
+ return null;
50
+ }
51
+
27
52
  /**
28
53
  * Tee a response body for RSC parsing and stream completion tracking.
29
54
  * Returns a new Response with one branch; the other is consumed to detect
@@ -364,11 +364,18 @@ export async function initBrowserApp(
364
364
  // Update version BEFORE rebuilding state so that
365
365
  // clearHistoryCache() runs first, then the fresh segment
366
366
  // cache entry we create below survives.
367
+ //
368
+ // Compare against the bridge's live version, not the init-time
369
+ // `version` const: after the first HMR bump the const is stale, so a
370
+ // later update with an unchanged version would otherwise re-clear the
371
+ // cache and re-broadcast across tabs/apps. The live read fires only
372
+ // on a genuine version change.
367
373
  const newVersion = payload.metadata.version;
368
- if (newVersion && newVersion !== version) {
374
+ const currentVersion = navigationBridge.getVersion();
375
+ if (newVersion && newVersion !== currentVersion) {
369
376
  console.log(
370
377
  "[Rango] HMR: version changed",
371
- version,
378
+ currentVersion,
372
379
  "→",
373
380
  newVersion,
374
381
  "clearing caches",
@@ -376,6 +383,13 @@ export async function initBrowserApp(
376
383
  navigationBridge.updateVersion(newVersion);
377
384
  }
378
385
 
386
+ // Apply only partial segment updates. A non-partial payload during
387
+ // HMR is transient: the worker route table is still rebuilding after
388
+ // the edit, so the URL momentarily resolves to not-found/catch-all.
389
+ // Skip it -- the debounced follow-up refetch returns the settled
390
+ // route's partial payload and renders it below. We never reload here:
391
+ // a paramless document GET would run the SSR path and surface the
392
+ // not-found page during that same transient.
379
393
  if (payload.metadata?.isPartial) {
380
394
  const segments = payload.metadata.segments || [];
381
395
  const matched = payload.metadata.matched || [];
@@ -25,6 +25,7 @@ import { validateRedirectOrigin } from "./validate-redirect-origin.js";
25
25
  import {
26
26
  extractRscHeaderUrl,
27
27
  emptyResponse,
28
+ handleReloadHeader,
28
29
  teeWithCompletion,
29
30
  } from "./response-adapter.js";
30
31
  import { mergeLocationState } from "./history-state.js";
@@ -77,6 +78,20 @@ export function createServerActionBridge(
77
78
  onNavigate,
78
79
  } = config;
79
80
 
81
+ // SPA-navigate when onNavigate is set, else hard-reload. state is omitted (not
82
+ // passed as undefined) to match the header path's prior call shape.
83
+ async function dispatchRedirect(url: string, state?: unknown): Promise<void> {
84
+ if (onNavigate) {
85
+ await onNavigate(url, {
86
+ ...(state !== undefined ? { state } : {}),
87
+ replace: true,
88
+ _skipCache: true,
89
+ });
90
+ } else {
91
+ window.location.href = url;
92
+ }
93
+ }
94
+
80
95
  let isRegistered = false;
81
96
 
82
97
  const fetchPartialUpdate = createPartialUpdater({
@@ -222,18 +237,12 @@ export function createServerActionBridge(
222
237
  handle.signal.removeEventListener("abort", onHandleAbort);
223
238
 
224
239
  // Check for version mismatch - server wants us to reload
225
- const reload = extractRscHeaderUrl(response, "X-RSC-Reload");
226
- if (reload === "blocked") {
227
- resolveStreamComplete();
228
- return emptyResponse();
229
- }
230
- if (reload) {
231
- log("version mismatch on action, reloading", {
232
- reloadUrl: reload.url,
233
- });
234
- window.location.href = reload.url;
235
- return new Promise<Response>(() => {});
236
- }
240
+ const reloadResult = handleReloadHeader(response, {
241
+ onBlocked: resolveStreamComplete,
242
+ onReload: (url) =>
243
+ log("version mismatch on action, reloading", { reloadUrl: url }),
244
+ });
245
+ if (reloadResult) return reloadResult;
237
246
 
238
247
  // Simple redirect from action (no state, no RSC payload).
239
248
  // Short-circuits before createFromFetch — no Flight deserialization needed.
@@ -243,14 +252,7 @@ export function createServerActionBridge(
243
252
  if (redirect && redirect !== "blocked" && !handle.signal.aborted) {
244
253
  log("action simple redirect", { url: redirect.url });
245
254
  handle.complete(undefined);
246
- if (onNavigate) {
247
- await onNavigate(redirect.url, {
248
- replace: true,
249
- _skipCache: true,
250
- });
251
- } else {
252
- window.location.href = redirect.url;
253
- }
255
+ await dispatchRedirect(redirect.url);
254
256
  return new Promise<Response>(() => {});
255
257
  }
256
258
  if (redirect === "blocked") {
@@ -339,18 +341,9 @@ export function createServerActionBridge(
339
341
  handle.complete(returnValue?.data);
340
342
  return returnValue?.data;
341
343
  }
342
- const redirectState = metadata.locationState;
343
344
  log("action redirect", { url: redirectUrl });
344
345
  handle.complete(returnValue?.data);
345
- if (onNavigate) {
346
- await onNavigate(redirectUrl, {
347
- state: redirectState,
348
- replace: true,
349
- _skipCache: true,
350
- });
351
- } else {
352
- window.location.href = redirectUrl;
353
- }
346
+ await dispatchRedirect(redirectUrl, metadata.locationState);
354
347
  return returnValue?.data;
355
348
  }
356
349
 
@@ -552,6 +552,8 @@ export interface NavigationBridge {
552
552
  refresh(): Promise<void>;
553
553
  handlePopstate(): Promise<void>;
554
554
  registerLinkInterception(): () => void;
555
+ /** Current RSC version (live, reflects the latest updateVersion). */
556
+ getVersion(): string | undefined;
555
557
  /** Update the RSC version (e.g. after HMR). Clears prefetch cache. */
556
558
  updateVersion(newVersion: string): void;
557
559
  /**
@@ -57,6 +57,26 @@ export interface GeneratedManifest {
57
57
  * Build prefix tree node by running the patterns with proper context.
58
58
  * Uses a visited set to detect circular includes and prevent infinite recursion.
59
59
  */
60
+ // Merge tracked nested includes into `target`. Multiple includes can share a
61
+ // fullPrefix (e.g. include("/", a), include("/", b)) — concat their routes and
62
+ // Object.assign children rather than overwrite.
63
+ function mergeIncludeNodes(
64
+ target: Record<string, PrefixTreeNode>,
65
+ includes: TrackedInclude[],
66
+ buildChild: (include: TrackedInclude) => PrefixTreeNode,
67
+ ): void {
68
+ for (const include of includes) {
69
+ const node = buildChild(include);
70
+ const existing = target[include.fullPrefix];
71
+ if (existing) {
72
+ existing.routes.push(...node.routes);
73
+ Object.assign(existing.children, node.children);
74
+ } else {
75
+ target[include.fullPrefix] = node;
76
+ }
77
+ }
78
+ }
79
+
60
80
  function buildPrefixTreeNode(
61
81
  urlPrefix: string,
62
82
  namePrefix: string | undefined,
@@ -166,13 +186,9 @@ function buildPrefixTreeNode(
166
186
  }
167
187
  }
168
188
 
169
- // Build children from tracked nested includes.
170
- // Multiple includes can share the same fullPrefix (e.g., include("/", patternsA),
171
- // include("/", patternsB)). Merge their routes instead of overwriting.
172
189
  const children: Record<string, PrefixTreeNode> = {};
173
-
174
- for (const include of trackedIncludes) {
175
- const childNode = buildPrefixTreeNode(
190
+ mergeIncludeNodes(children, trackedIncludes, (include) =>
191
+ buildPrefixTreeNode(
176
192
  include.fullPrefix,
177
193
  include.namePrefix,
178
194
  include.patterns as UrlPatterns<any>,
@@ -186,16 +202,8 @@ function buildPrefixTreeNode(
186
202
  passthroughRoutes,
187
203
  responseTypeRoutes,
188
204
  routeSearchSchemas,
189
- );
190
-
191
- const existing = children[include.fullPrefix];
192
- if (existing) {
193
- existing.routes.push(...childNode.routes);
194
- Object.assign(existing.children, childNode.children);
195
- } else {
196
- children[include.fullPrefix] = childNode;
197
- }
198
- }
205
+ ),
206
+ );
199
207
 
200
208
  // Remove from visited so sibling branches can reuse the same patterns
201
209
  // without false circular-include detection. Only ancestors in the current
@@ -356,12 +364,10 @@ export function generateManifestFull<TEnv>(
356
364
  }
357
365
  }
358
366
 
359
- // Build prefix tree from tracked includes (shared visited set for cycle detection).
360
- // Multiple includes can share the same fullPrefix (e.g., include("/", patternsA),
361
- // include("/", patternsB)). Merge their routes instead of overwriting.
367
+ // Shared visited set for cycle detection across all root-level includes.
362
368
  const visited = new Set<unknown>();
363
- for (const include of trackedIncludes) {
364
- const node = buildPrefixTreeNode(
369
+ mergeIncludeNodes(prefixTree, trackedIncludes, (include) =>
370
+ buildPrefixTreeNode(
365
371
  include.fullPrefix,
366
372
  include.namePrefix,
367
373
  include.patterns as UrlPatterns<any>,
@@ -375,16 +381,8 @@ export function generateManifestFull<TEnv>(
375
381
  passthroughRoutes,
376
382
  responseTypeRoutes,
377
383
  routeSearchSchemas,
378
- );
379
-
380
- const existing = prefixTree[include.fullPrefix];
381
- if (existing) {
382
- existing.routes.push(...node.routes);
383
- Object.assign(existing.children, node.children);
384
- } else {
385
- prefixTree[include.fullPrefix] = node;
386
- }
387
- }
384
+ ),
385
+ );
388
386
 
389
387
  return {
390
388
  prefixTree,
@@ -35,5 +35,7 @@ export {
35
35
  formatNestedRouterConflictError,
36
36
  findRouterFiles,
37
37
  writeCombinedRouteTypes,
38
+ genFileTsPath,
39
+ resolveSearchSchemas,
38
40
  } from "./route-types/router-processing.js";
39
41
  export { findUrlsVariableNames } from "./route-types/per-module-writer.js";
@@ -97,7 +97,10 @@ export function writePerModuleRouteTypesForFile(filePath: string): void {
97
97
  routes = extractRoutesFromSource(source);
98
98
  }
99
99
 
100
- const genPath = filePath.replace(/\.(tsx?)$/, ".gen.ts");
100
+ // Match .ts/.tsx/.js/.jsx (same as router-processing.ts / router-transform.ts).
101
+ // Without the jsx? branch a .jsx/.js source produced genPath === filePath,
102
+ // overwriting the source file instead of writing a sibling .gen.ts.
103
+ const genPath = filePath.replace(/\.(tsx?|jsx?)$/, ".gen.ts");
101
104
 
102
105
  // When a urls() variable was found but static resolution yields zero
103
106
  // routes, write an empty placeholder so generated imports stay
@@ -339,6 +339,36 @@ function applyBasenameToRoutes(
339
339
  return { routes: prefixed, searchSchemas: result.searchSchemas };
340
340
  }
341
341
 
342
+ // Filesystem path of the generated route-types file for a router source file.
343
+ // Native separators — matches the self-gen-tracking Map key the watcher compares.
344
+ export function genFileTsPath(sourceFile: string): string {
345
+ const base = pathBasename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
346
+ return join(dirname(sourceFile), `${base}.named-routes.gen.ts`);
347
+ }
348
+
349
+ // Search schemas for the gen file: prefer the runtime manifest's; when it omits
350
+ // them (some module-runner flows) fall back to static parsing filtered to the
351
+ // public route-name set. Returns the runtime value unchanged otherwise.
352
+ export function resolveSearchSchemas(
353
+ publicRouteNames: string[],
354
+ runtimeSchemas: Record<string, Record<string, string>> | undefined,
355
+ sourceFile: string,
356
+ ): Record<string, Record<string, string>> | undefined {
357
+ if (runtimeSchemas && Object.keys(runtimeSchemas).length > 0) {
358
+ return runtimeSchemas;
359
+ }
360
+ const staticParsed = buildCombinedRouteMapForRouterFile(sourceFile);
361
+ if (Object.keys(staticParsed.searchSchemas).length === 0) {
362
+ return runtimeSchemas;
363
+ }
364
+ const filtered: Record<string, Record<string, string>> = {};
365
+ for (const name of publicRouteNames) {
366
+ const schema = staticParsed.searchSchemas[name];
367
+ if (schema) filtered[name] = schema;
368
+ }
369
+ return Object.keys(filtered).length > 0 ? filtered : runtimeSchemas;
370
+ }
371
+
342
372
  /**
343
373
  * Resolve routes and search schemas from a router source file by following the
344
374
  * variable passed to `.routes(...)` or `urls: ...` in createRouter options,
@@ -528,7 +558,10 @@ export function findRouterFiles(root: string, filter?: ScanFilter): string[] {
528
558
  export function writeCombinedRouteTypes(
529
559
  root: string,
530
560
  knownRouterFiles?: string[],
531
- opts?: { preserveIfLarger?: boolean },
561
+ opts?: {
562
+ preserveIfLarger?: boolean;
563
+ onWrite?: (outPath: string, content: string) => void;
564
+ },
532
565
  ): void {
533
566
  // Delete old combined named-routes.gen.ts if it exists (stale from older versions)
534
567
  try {
@@ -566,14 +599,7 @@ export function writeCombinedRouteTypes(
566
599
  if (!extractUrlsFromRouter(routerSource)) continue;
567
600
  }
568
601
 
569
- const routerBasename = pathBasename(routerFilePath).replace(
570
- /\.(tsx?|jsx?)$/,
571
- "",
572
- );
573
- const outPath = join(
574
- dirname(routerFilePath),
575
- `${routerBasename}.named-routes.gen.ts`,
576
- );
602
+ const outPath = genFileTsPath(routerFilePath);
577
603
  const existing = existsSync(outPath)
578
604
  ? readFileSync(outPath, "utf-8")
579
605
  : null;
@@ -584,6 +610,7 @@ export function writeCombinedRouteTypes(
584
610
  if (Object.keys(result.routes).length === 0) {
585
611
  if (!existing) {
586
612
  const emptySource = generateRouteTypesSource({});
613
+ opts?.onWrite?.(outPath, emptySource);
587
614
  writeFileSync(outPath, emptySource);
588
615
  }
589
616
  continue;
@@ -609,6 +636,7 @@ export function writeCombinedRouteTypes(
609
636
  continue;
610
637
  }
611
638
  }
639
+ opts?.onWrite?.(outPath, source);
612
640
  writeFileSync(outPath, source);
613
641
  console.log(
614
642
  `[rango] Generated route types (${Object.keys(result.routes).length} routes) -> ${outPath}`,
@@ -1,8 +1,9 @@
1
- import { dirname, join, basename, resolve } from "node:path";
1
+ import { resolve } from "node:path";
2
2
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
3
3
  import {
4
4
  generateRouteTypesSource,
5
- buildCombinedRouteMapForRouterFile,
5
+ genFileTsPath,
6
+ resolveSearchSchemas,
6
7
  } from "./generate-route-types.ts";
7
8
  import { isAutoGeneratedRouteName } from "../route-name.js";
8
9
 
@@ -175,25 +176,13 @@ export async function discoverAndWriteRouteTypes(
175
176
  );
176
177
  }
177
178
 
178
- // Search schema fallback: runtime manifest may omit search schema metadata
179
- // in some module-runner flows. Fall back to static source parsing.
180
- if (!routeSearchSchemas || Object.keys(routeSearchSchemas).length === 0) {
181
- const staticParsed = buildCombinedRouteMapForRouterFile(sourceFile);
182
- if (Object.keys(staticParsed.searchSchemas).length > 0) {
183
- const filtered: Record<string, Record<string, string>> = {};
184
- for (const name of Object.keys(routeManifest)) {
185
- const schema = staticParsed.searchSchemas[name];
186
- if (schema) filtered[name] = schema;
187
- }
188
- if (Object.keys(filtered).length > 0) {
189
- routeSearchSchemas = filtered;
190
- }
191
- }
192
- }
179
+ routeSearchSchemas = resolveSearchSchemas(
180
+ Object.keys(routeManifest),
181
+ routeSearchSchemas,
182
+ sourceFile,
183
+ );
193
184
 
194
- const routerDir = dirname(sourceFile);
195
- const routerBasename = basename(sourceFile).replace(/\.(tsx?|jsx?)$/, "");
196
- const outPath = join(routerDir, `${routerBasename}.named-routes.gen.ts`);
185
+ const outPath = genFileTsPath(sourceFile);
197
186
 
198
187
  const source = generateRouteTypesSource(
199
188
  routeManifest,