@rangojs/router 0.9.0 → 0.10.0

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 (846) 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/theme/ThemeProvider.d.ts +20 -0
  709. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  710. package/dist/theme/ThemeProvider.js +240 -0
  711. package/dist/theme/ThemeProvider.js.map +1 -0
  712. package/dist/theme/ThemeScript.d.ts +48 -0
  713. package/dist/theme/ThemeScript.d.ts.map +1 -0
  714. package/dist/theme/ThemeScript.js +13 -0
  715. package/dist/theme/ThemeScript.js.map +1 -0
  716. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  717. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  718. package/dist/theme/__tests__/theme.test.js +103 -0
  719. package/dist/theme/__tests__/theme.test.js.map +1 -0
  720. package/dist/theme/constants.d.ts +29 -0
  721. package/dist/theme/constants.d.ts.map +1 -0
  722. package/dist/theme/constants.js +48 -0
  723. package/dist/theme/constants.js.map +1 -0
  724. package/dist/theme/index.d.ts +31 -0
  725. package/dist/theme/index.d.ts.map +1 -0
  726. package/dist/theme/index.js +36 -0
  727. package/dist/theme/index.js.map +1 -0
  728. package/dist/theme/theme-context.d.ts +40 -0
  729. package/dist/theme/theme-context.d.ts.map +1 -0
  730. package/dist/theme/theme-context.js +60 -0
  731. package/dist/theme/theme-context.js.map +1 -0
  732. package/dist/theme/theme-script.d.ts +27 -0
  733. package/dist/theme/theme-script.d.ts.map +1 -0
  734. package/dist/theme/theme-script.js +147 -0
  735. package/dist/theme/theme-script.js.map +1 -0
  736. package/dist/theme/types.d.ts +163 -0
  737. package/dist/theme/types.d.ts.map +1 -0
  738. package/dist/theme/types.js +11 -0
  739. package/dist/theme/types.js.map +1 -0
  740. package/dist/theme/use-theme.d.ts +12 -0
  741. package/dist/theme/use-theme.d.ts.map +1 -0
  742. package/dist/theme/use-theme.js +40 -0
  743. package/dist/theme/use-theme.js.map +1 -0
  744. package/dist/types/outlet-context.d.ts +9 -0
  745. package/dist/types/outlet-provider.d.ts +2 -1
  746. package/dist/types/route-content-wrapper.d.ts +4 -1
  747. package/dist/types/rsc/nonce.d.ts +10 -0
  748. package/dist/types/rsc/types.d.ts +6 -2
  749. package/dist/types/ssr/index.d.ts +18 -0
  750. package/dist/types/ssr/ssr-root.d.ts +16 -0
  751. package/dist/types/ssr-suspension-warning.d.ts +20 -0
  752. package/dist/types/types/loader-types.d.ts +5 -1
  753. package/dist/types/types/segments.d.ts +17 -0
  754. package/dist/types/vite/discovery/state.d.ts +6 -0
  755. package/dist/types/vite/plugin-types.d.ts +27 -0
  756. package/dist/types/vite/plugins/virtual-entries.d.ts +1 -1
  757. package/dist/types/vite/utils/shared-utils.d.ts +1 -0
  758. package/dist/types.d.ts +1479 -0
  759. package/dist/types.d.ts.map +1 -0
  760. package/dist/types.js +10 -0
  761. package/dist/types.js.map +1 -0
  762. package/dist/urls.d.ts +441 -0
  763. package/dist/urls.d.ts.map +1 -0
  764. package/dist/urls.gen.d.ts +8 -0
  765. package/dist/urls.gen.d.ts.map +1 -0
  766. package/dist/urls.gen.js +8 -0
  767. package/dist/urls.gen.js.map +1 -0
  768. package/dist/urls.js +443 -0
  769. package/dist/urls.js.map +1 -0
  770. package/dist/use-loader.d.ts +127 -0
  771. package/dist/use-loader.d.ts.map +1 -0
  772. package/dist/use-loader.js +237 -0
  773. package/dist/use-loader.js.map +1 -0
  774. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  775. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  776. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  777. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  778. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  779. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  780. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  781. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  782. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  783. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  784. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  785. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  786. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  787. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  788. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  789. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  790. package/dist/vite/ast-handler-extract.d.ts +49 -0
  791. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  792. package/dist/vite/ast-handler-extract.js +249 -0
  793. package/dist/vite/ast-handler-extract.js.map +1 -0
  794. package/dist/vite/expose-action-id.d.ts +19 -0
  795. package/dist/vite/expose-action-id.d.ts.map +1 -0
  796. package/dist/vite/expose-action-id.js +250 -0
  797. package/dist/vite/expose-action-id.js.map +1 -0
  798. package/dist/vite/expose-id-utils.d.ts +69 -0
  799. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  800. package/dist/vite/expose-id-utils.js +289 -0
  801. package/dist/vite/expose-id-utils.js.map +1 -0
  802. package/dist/vite/expose-internal-ids.d.ts +22 -0
  803. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  804. package/dist/vite/expose-internal-ids.js +886 -0
  805. package/dist/vite/expose-internal-ids.js.map +1 -0
  806. package/dist/vite/index.d.ts +149 -0
  807. package/dist/vite/index.d.ts.map +1 -0
  808. package/dist/vite/index.js +51 -22
  809. package/dist/vite/index.js.bak +5448 -0
  810. package/dist/vite/index.js.map +1 -0
  811. package/dist/vite/index.named-routes.gen.ts +103 -0
  812. package/dist/vite/package-resolution.d.ts +43 -0
  813. package/dist/vite/package-resolution.d.ts.map +1 -0
  814. package/dist/vite/package-resolution.js +112 -0
  815. package/dist/vite/package-resolution.js.map +1 -0
  816. package/dist/vite/virtual-entries.d.ts +25 -0
  817. package/dist/vite/virtual-entries.d.ts.map +1 -0
  818. package/dist/vite/virtual-entries.js +110 -0
  819. package/dist/vite/virtual-entries.js.map +1 -0
  820. package/package.json +21 -22
  821. package/skills/loader/SKILL.md +17 -2
  822. package/src/browser/merge-segment-loaders.ts +4 -0
  823. package/src/client.tsx +2 -0
  824. package/src/outlet-context.ts +9 -0
  825. package/src/outlet-provider.tsx +4 -0
  826. package/src/route-content-wrapper.tsx +7 -0
  827. package/src/router/segment-resolution/fresh.ts +48 -17
  828. package/src/router.ts +7 -2
  829. package/src/rsc/handler.ts +4 -4
  830. package/src/rsc/nonce.ts +16 -0
  831. package/src/rsc/shell-capture.ts +39 -6
  832. package/src/rsc/types.ts +6 -2
  833. package/src/segment-system.tsx +57 -12
  834. package/src/ssr/index.tsx +53 -1
  835. package/src/ssr/ssr-root.tsx +50 -22
  836. package/src/ssr-suspension-warning.ts +68 -0
  837. package/src/types/loader-types.ts +5 -1
  838. package/src/types/segments.ts +17 -0
  839. package/src/use-loader.tsx +24 -1
  840. package/src/vite/discovery/shell-prerender-phase.ts +5 -0
  841. package/src/vite/discovery/state.ts +6 -0
  842. package/src/vite/plugin-types.ts +28 -0
  843. package/src/vite/plugins/virtual-entries.ts +26 -3
  844. package/src/vite/rango.ts +3 -0
  845. package/src/vite/router-discovery.ts +31 -19
  846. package/src/vite/utils/shared-utils.ts +8 -2
@@ -139,6 +139,37 @@ function createSsrEventController(opts: {
139
139
  };
140
140
  }
141
141
 
142
+ /**
143
+ * Deserialize the Flight stream branch into the payload SsrRoot renders,
144
+ * fragment expansion included. Factored out of SsrRoot so createSSRHandler can
145
+ * create the promise BEFORE fizz starts and read metadata that must influence
146
+ * the fizz call itself (the ssr:false progressiveChunkSize auto-raise) —
147
+ * awaiting it there is latency-neutral because fizz cannot emit even <html>
148
+ * until this same promise settles.
149
+ */
150
+ export function deserializeSsrPayload(
151
+ createFromReadableStream: CreateFromReadableStream,
152
+ rscStream: ReadableStream<Uint8Array>,
153
+ ): Promise<RscPayload> {
154
+ // Shell-HIT tails carry replayed segments as VERBATIM stored fragments
155
+ // (segment-fragments.ts, issue #700); expand them through this
156
+ // environment's deserializer before anything reads the segments. Every
157
+ // other payload (full render, capture, actions) has no envelopes and
158
+ // pays one field scan.
159
+ // Promise.resolve() adoption is load-bearing: some wirings (the build
160
+ // temp server's vendored Flight client) return a THENABLE Chunk whose
161
+ // .then returns undefined — chaining on it directly yields undefined.
162
+ return Promise.resolve(createFromReadableStream<RscPayload>(rscStream)).then(
163
+ async (resolvedPayload) => {
164
+ await expandSegmentFragments(
165
+ resolvedPayload.metadata?.segments,
166
+ createFromReadableStream,
167
+ );
168
+ return resolvedPayload;
169
+ },
170
+ );
171
+ }
172
+
142
173
  /**
143
174
  * Options for {@link createSsrRootComponent}.
144
175
  */
@@ -147,6 +178,13 @@ export interface SsrRootOptions {
147
178
  createFromReadableStream: CreateFromReadableStream;
148
179
  /** The Flight stream branch to deserialize into the SSR VDOM. */
149
180
  rscStream: ReadableStream<Uint8Array>;
181
+ /**
182
+ * Pre-created payload promise (deserializeSsrPayload over the SAME
183
+ * rscStream). When present SsrRoot adopts it instead of deserializing
184
+ * lazily on first render — the stream can only be consumed once, so the
185
+ * caller that already started deserialization MUST pass the promise in.
186
+ */
187
+ payload?: Promise<RscPayload>;
150
188
  /** Nonce for CSP; propagated to NonceContext. */
151
189
  nonce?: string;
152
190
  /**
@@ -205,33 +243,23 @@ export function createSsrRootComponent(opts: SsrRootOptions): React.FC {
205
243
  origin,
206
244
  } = opts;
207
245
 
208
- let payload: Promise<RscPayload> | undefined;
246
+ // onPayloadSettled fires AFTER fragment expansion (inside
247
+ // deserializeSsrPayload): the capture's fizz-readiness gate must include
248
+ // fragment module loads.
249
+ const adoptPayload = (p: Promise<RscPayload>): Promise<RscPayload> => {
250
+ if (onPayloadSettled) p.then(onPayloadSettled, onPayloadSettled);
251
+ return p;
252
+ };
253
+ let payload: Promise<RscPayload> | undefined =
254
+ opts.payload && adoptPayload(opts.payload);
209
255
  let handlesPromise: Promise<HandleData> | undefined;
210
256
  let ssrContextValue: NavigationStoreContextValue | undefined;
211
257
  let rootPromise: Promise<React.ReactNode> | undefined;
212
258
 
213
259
  return function SsrRoot() {
214
- if (payload === undefined) {
215
- // Shell-HIT tails carry replayed segments as VERBATIM stored fragments
216
- // (segment-fragments.ts, issue #700); expand them through this
217
- // environment's deserializer before anything reads the segments. Every
218
- // other payload (full render, capture, actions) has no envelopes and
219
- // pays one field scan. onPayloadSettled fires AFTER expansion: the
220
- // capture's fizz-readiness gate must include fragment module loads.
221
- // Promise.resolve() adoption is load-bearing: some wirings (the build
222
- // temp server's vendored Flight client) return a THENABLE Chunk whose
223
- // .then returns undefined — chaining on it directly yields undefined.
224
- payload = Promise.resolve(
225
- createFromReadableStream<RscPayload>(rscStream),
226
- ).then(async (resolvedPayload) => {
227
- await expandSegmentFragments(
228
- resolvedPayload.metadata?.segments,
229
- createFromReadableStream,
230
- );
231
- return resolvedPayload;
232
- });
233
- if (onPayloadSettled) payload.then(onPayloadSettled, onPayloadSettled);
234
- }
260
+ payload ??= adoptPayload(
261
+ deserializeSsrPayload(createFromReadableStream, rscStream),
262
+ );
235
263
  const resolved = React.use(payload);
236
264
 
237
265
  const themeConfig = resolved.metadata?.themeConfig ?? null;
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Dev-only diagnostic for the { ssr: false } SSR-completeness opt-in.
3
+ *
4
+ * A document render that awaits flagged loaders before first flush is usually
5
+ * expected to produce an SSR-complete boundary — but the await is scoped per
6
+ * LOADER (see LoaderOptions in types/loader-types.ts), so one unflagged read
7
+ * under the same Suspense boundary still suspends it and the boundary streams
8
+ * as its fallback, invisible without JS. That failure mode looks exactly like
9
+ * the flag not working; a consumer app burned hours on byte-level archaeology
10
+ * before the unflagged sibling read was identified. This warning names the
11
+ * culprit at the suspension site instead.
12
+ *
13
+ * Fires at most once per loader id per process, only during the SSR pass
14
+ * (`window` undefined), only in dev, and only when the render actually awaited
15
+ * flagged loaders (`awaitedLoaderIds`, stamped by segment resolution on
16
+ * document AND shell-capture renders — capture awaits the same flagged lane;
17
+ * its masked live-lane reads suspend by design and dedupe against the live
18
+ * render's warnings through the once-per-id set).
19
+ */
20
+
21
+ const warned = new Set<string>();
22
+
23
+ /** Thenable statuses `use()` unwraps without suspending: React's re-check
24
+ * after `.then()` handles "fulfilled", and Flight chunks in the resolved_*
25
+ * states initialize synchronously inside that same call. Anything else
26
+ * (pending, blocked, an unstamped native promise) suspends at least once. */
27
+ function unwrapsSynchronously(stream: Promise<unknown>): boolean {
28
+ const status = (stream as { status?: string }).status;
29
+ return (
30
+ status === "fulfilled" ||
31
+ status === "resolved_model" ||
32
+ status === "resolved_module"
33
+ );
34
+ }
35
+
36
+ export function warnAwaitedSsrSuspension(
37
+ loaderId: string,
38
+ awaitedLoaderIds: readonly string[] | undefined,
39
+ stream: Promise<unknown>,
40
+ isServer: boolean = typeof window === "undefined",
41
+ ): void {
42
+ if (process.env.NODE_ENV === "production") return;
43
+ if (!isServer) return;
44
+ if (!awaitedLoaderIds || awaitedLoaderIds.length === 0) return;
45
+ if (unwrapsSynchronously(stream)) return;
46
+ if (warned.has(loaderId)) return;
47
+ warned.add(loaderId);
48
+
49
+ if (awaitedLoaderIds.includes(loaderId)) {
50
+ console.error(
51
+ `[rango] Loader "${loaderId}" is flagged { ssr: false } and was awaited ` +
52
+ `before first flush, but its useLoader read observed a still-pending ` +
53
+ `promise during SSR. If its Suspense fallback appears in the SSR'd HTML, ` +
54
+ `please report it to @rangojs/router with a reproduction.`,
55
+ );
56
+ return;
57
+ }
58
+
59
+ console.warn(
60
+ `[rango] The document render awaited { ssr: false } loader(s) ` +
61
+ `${JSON.stringify(awaitedLoaderIds)} before first flush, but ` +
62
+ `useLoader("${loaderId}") still suspended during SSR. "${loaderId}" is not ` +
63
+ `flagged, so the Suspense boundary above that read streams as its fallback ` +
64
+ `and the content under it stays hidden until JS runs. If the boundary must ` +
65
+ `be SSR-complete, flag "${loaderId}" with { ssr: false } too, or move its ` +
66
+ `read behind its own boundary. If it streams deliberately, ignore this.`,
67
+ );
68
+ }
@@ -195,7 +195,11 @@ export type LoaderFn<
195
195
  *
196
196
  * Scoped per LOADER, not per segment: an `ssr: false` loader alongside a
197
197
  * deliberately streaming sibling awaits only itself, and the sibling keeps
198
- * streaming behind its `loading()`/Suspense boundary.
198
+ * streaming behind its `loading()`/Suspense boundary. Watch the scoping when
199
+ * the boundary must be SSR-complete: ONE unflagged read under it still
200
+ * suspends the whole boundary, which then streams as its fallback — looking
201
+ * exactly like the flag not working. In dev the router warns at the read
202
+ * site naming the unflagged loader (ssr-suspension-warning.ts).
199
203
  */
200
204
  export type LoaderOptions = {
201
205
  ssr?: boolean;
@@ -166,10 +166,27 @@ export interface ResolvedSegment {
166
166
  loaderId?: string; // For loaders: the loader $$id identifier
167
167
  _inherited?: boolean; // For inherited loaders: dedup marker for buildMatchResult
168
168
  loaderData?: any; // For loaders: the resolved data from loader execution
169
+ /**
170
+ * True when this loader was awaited before first flush
171
+ * (loader(Def, { ssr: false })). Stamped by resolveLoaders (fresh.ts) on
172
+ * document AND shell-capture renders — capture bakes flagged loaders and
173
+ * awaits the same lane. Feeds segment-system's settled-value delivery and
174
+ * the dev SSR suspension warning (ssr-suspension-warning.ts).
175
+ */
176
+ awaitBeforeFlush?: true;
169
177
  parallelLoading?: ReactNode; // For parallel-owned loaders: the parallel's loading fallback
170
178
  // Intercept loader fields (for streaming loader data in parallel segments)
171
179
  loaderDataPromise?: Promise<any[]> | any[]; // Loader data promise or resolved array
172
180
  loaderIds?: string[]; // IDs ($$id) of loaders for this segment
181
+ /**
182
+ * Per-loader UNDECODED results for a layout/route stream map.
183
+ * Flagged (ssr:false) entries are settled values; unflagged siblings
184
+ * stay promises. Parallel slots do not use this channel — they pin
185
+ * loading() / live-lane holes via use(loaderDataPromise).
186
+ */
187
+ loaderStreams?: Record<string, unknown>;
188
+ /** $$ids of loaders this segment awaited before flush. Dev diagnostic. */
189
+ awaitedLoaderIds?: string[];
173
190
  // Error-specific fields
174
191
  error?: ErrorInfo; // For error segments: the error information
175
192
  // NotFound-specific fields
@@ -15,6 +15,7 @@ import {
15
15
  import { OutletContext, type OutletContextValue } from "./outlet-context.js";
16
16
  import { loaderStore, type LoaderEntry } from "./loader-store.js";
17
17
  import { decodeLoaderEntry } from "./decode-loader-results.js";
18
+ import { warnAwaitedSsrSuspension } from "./ssr-suspension-warning.js";
18
19
  import type { LoaderDefinition, LoadOptions } from "./types.js";
19
20
 
20
21
  function isShareableGet(options: LoadOptions | undefined): boolean {
@@ -64,11 +65,18 @@ function lookupLoaderStreams(
64
65
  function extractContentLoaderData(
65
66
  node: ReactNode,
66
67
  loaderId: string,
68
+ awaitedAcc?: string[],
67
69
  ): LoaderLookup {
68
70
  if (!isValidElement(node)) return NOT_FOUND;
69
71
  const props = node.props as Record<string, any> | undefined;
70
72
  if (!props) return NOT_FOUND;
71
73
 
74
+ // Collect BEFORE the lookups so ids on the element that owns the stream
75
+ // entry count for the SSR suspension diagnostic.
76
+ if (awaitedAcc && Array.isArray(props.awaitedLoaderIds)) {
77
+ awaitedAcc.push(...props.awaitedLoaderIds);
78
+ }
79
+
72
80
  // Direct OutletProvider with loaderData
73
81
  if (props.loaderData && loaderId in props.loaderData) {
74
82
  return { value: props.loaderData[loaderId] };
@@ -93,7 +101,9 @@ function extractContentLoaderData(
93
101
  }
94
102
  }
95
103
 
96
- if (props.children) return extractContentLoaderData(props.children, loaderId);
104
+ if (props.children) {
105
+ return extractContentLoaderData(props.children, loaderId, awaitedAcc);
106
+ }
97
107
  return NOT_FOUND;
98
108
  }
99
109
 
@@ -136,9 +146,14 @@ function useLoaderInternal<T>(
136
146
  contextData: T | undefined;
137
147
  hasContextData: boolean;
138
148
  pendingStream?: Promise<unknown>;
149
+ /** { ssr: false } loader ids seen on the chain up to (and including) the
150
+ * level that owned the read — input for the dev SSR suspension warning. */
151
+ awaitedLoaderIds?: string[];
139
152
  } => {
153
+ const awaited: string[] = [];
140
154
  let current: OutletContextValue | null | undefined = context;
141
155
  while (current) {
156
+ if (current.awaitedLoaderIds) awaited.push(...current.awaitedLoaderIds);
142
157
  if (current.loaderData && loader.$$id in current.loaderData) {
143
158
  return {
144
159
  contextData: current.loaderData[loader.$$id] as T,
@@ -152,6 +167,7 @@ function useLoaderInternal<T>(
152
167
  contextData: undefined,
153
168
  hasContextData: true,
154
169
  pendingStream: streamed.stream,
170
+ awaitedLoaderIds: awaited,
155
171
  };
156
172
  }
157
173
  return { contextData: streamed.value as T, hasContextData: true };
@@ -159,6 +175,7 @@ function useLoaderInternal<T>(
159
175
  const contentData = extractContentLoaderData(
160
176
  current.content,
161
177
  loader.$$id,
178
+ awaited,
162
179
  );
163
180
  if (contentData !== NOT_FOUND) {
164
181
  if ("stream" in contentData) {
@@ -166,6 +183,7 @@ function useLoaderInternal<T>(
166
183
  contextData: undefined,
167
184
  hasContextData: true,
168
185
  pendingStream: contentData.stream,
186
+ awaitedLoaderIds: awaited,
169
187
  };
170
188
  }
171
189
  return { contextData: contentData.value as T, hasContextData: true };
@@ -184,6 +202,11 @@ function useLoaderInternal<T>(
184
202
  const { hasContextData } = walk;
185
203
  let contextData = walk.contextData;
186
204
  if (walk.pendingStream) {
205
+ warnAwaitedSsrSuspension(
206
+ loader.$$id,
207
+ walk.awaitedLoaderIds,
208
+ walk.pendingStream,
209
+ );
187
210
  contextData = decodeLoaderEntry(use(walk.pendingStream)) as T;
188
211
  }
189
212
 
@@ -196,6 +196,11 @@ export async function runShellPrerenderPhase(
196
196
  prerender: reactDomStatic.prerender ?? reactDomStatic.default?.prerender,
197
197
  injectRSCPayload: htmlStream.injectRSCPayload,
198
198
  headScripts: "preinit",
199
+ // Build-captured shells must honor the explicit outlining budget: the
200
+ // capture value rides the postponed state into every runtime resume().
201
+ ...(s.opts?.progressiveChunkSize !== undefined && {
202
+ progressiveChunkSize: s.opts.progressiveChunkSize,
203
+ }),
199
204
  loadBootstrapScriptContent: async () => bootstrapContent,
200
205
  });
201
206
 
@@ -45,6 +45,12 @@ export interface PluginOptions {
45
45
  * capture endpoint with the app's configured head-script strategy.
46
46
  */
47
47
  headScripts?: import("../plugin-types.js").HeadScriptsOption;
48
+ /**
49
+ * rango({ progressiveChunkSize }) — threaded alongside headScripts so the
50
+ * temp server's virtual SSR entry bakes the app's configured Fizz outlining
51
+ * budget into its capture/render handlers.
52
+ */
53
+ progressiveChunkSize?: number;
48
54
  }
49
55
 
50
56
  export interface PrecomputedEntry {
@@ -159,6 +159,34 @@ interface RangoBaseOptions {
159
159
  */
160
160
  headScripts?: HeadScriptsOption;
161
161
 
162
+ /**
163
+ * React Fizz `progressiveChunkSize`, forwarded to the document renders the
164
+ * generated SSR entry performs: renderToReadableStream (live SSR) and
165
+ * prerender (PPR shell capture); resume() inherits the capture value from
166
+ * the stored postponed state.
167
+ *
168
+ * Controls COMPLETED-boundary outlining. Once the shell exceeds this budget
169
+ * (React's default is 12800 bytes — any real document), Fizz moves every
170
+ * completed Suspense boundary over ~500 bytes out of its document position
171
+ * to an end-of-stream `<div hidden>` + `$RC()` script reveal. Raise it (e.g.
172
+ * `Number.MAX_SAFE_INTEGER`) to keep completed content inline: in-place for
173
+ * non-executing HTML consumers, no reveal step. Boundaries with suspensey
174
+ * content (hoisted stylesheets) still outline — their reveal must wait for
175
+ * the CSS. Trade-off: inline content delays later shell bytes behind it,
176
+ * which is why React outlines by default.
177
+ *
178
+ * When UNSET, document renders whose matched chain has a
179
+ * `loader(Def, { ssr: false })` entry auto-raise to MAX_SAFE_INTEGER — the
180
+ * loader was awaited before first flush precisely so its content ships
181
+ * in-place, and outlining the boundary it feeds would defeat that. Setting
182
+ * an explicit value disables the auto-raise. The auto-raise is live-SSR
183
+ * only; captured shells use the explicit value or React's default.
184
+ *
185
+ * Apps with a custom SSR entry set this per-handler via
186
+ * `SSRDependencies.progressiveChunkSize`.
187
+ */
188
+ progressiveChunkSize?: number;
189
+
162
190
  /**
163
191
  * Filter which files route discovery scans, by glob. Paths are matched
164
192
  * root-relative (e.g. `src/routes/**`). `include` restricts discovery to
@@ -48,6 +48,18 @@ async function initializeApp() {
48
48
  initializeApp().catch(console.error);
49
49
  `.trim();
50
50
 
51
+ function emitProgressiveChunkSize(value: number): string {
52
+ if (value === Number.POSITIVE_INFINITY) {
53
+ return "Number.POSITIVE_INFINITY";
54
+ }
55
+ if (!Number.isFinite(value)) {
56
+ throw new Error(
57
+ `rango({ progressiveChunkSize }) must be a finite number or Infinity, received ${String(value)}`,
58
+ );
59
+ }
60
+ return JSON.stringify(value);
61
+ }
62
+
51
63
  /**
52
64
  * Generate the virtual SSR entry. `headScripts` mirrors the rango() plugin
53
65
  * option: "preinit" (default) installs the client-reference preinit hook and
@@ -56,6 +68,7 @@ initializeApp().catch(console.error);
56
68
  */
57
69
  export function getVirtualEntrySSR(
58
70
  headScripts: HeadScriptsOption = "preinit",
71
+ progressiveChunkSize?: number,
59
72
  ): string {
60
73
  const preinit = headScripts !== "preload";
61
74
  // The preload variant drops exactly three preinit-only lines, all built
@@ -73,6 +86,16 @@ installClientReferencePreinit(setOnClientReference);
73
86
  `
74
87
  : "";
75
88
  const hs = JSON.stringify(headScripts);
89
+ // Emitted into all three handlers: live SSR and shell capture consume it
90
+ // directly; the resume handler receives it for dep-shape uniformity (resume()
91
+ // itself inherits the capture value from the postponed state). Finite numbers
92
+ // stringify exactly (incl. MAX_SAFE_INTEGER). Infinity is emitted as
93
+ // Number.POSITIVE_INFINITY — JSON.stringify(Infinity) is null, which React
94
+ // would treat as "no budget" rather than "never outline".
95
+ const pcs =
96
+ progressiveChunkSize !== undefined
97
+ ? `\n progressiveChunkSize: ${emitProgressiveChunkSize(progressiveChunkSize)},`
98
+ : "";
76
99
  return `
77
100
  import {
78
101
  ${depsImportNames}
@@ -90,7 +113,7 @@ export const renderHTML = createSSRHandler({
90
113
  createFromReadableStream,
91
114
  renderToReadableStream,
92
115
  injectRSCPayload,
93
- headScripts: ${hs},
116
+ headScripts: ${hs},${pcs}
94
117
  loadBootstrapScriptContent: () =>
95
118
  import.meta.viteRsc.loadBootstrapScriptContent("index"),
96
119
  });
@@ -101,7 +124,7 @@ export const captureShellHTML = createShellCaptureHandler({
101
124
  injectRSCPayload,
102
125
  prerender,
103
126
  resume,
104
- headScripts: ${hs},
127
+ headScripts: ${hs},${pcs}
105
128
  loadBootstrapScriptContent: () =>
106
129
  import.meta.viteRsc.loadBootstrapScriptContent("index"),
107
130
  });
@@ -112,7 +135,7 @@ export const resumeShellHTML = createShellResumeHandler({
112
135
  injectRSCPayload,
113
136
  prerender,
114
137
  resume,
115
- headScripts: ${hs},
138
+ headScripts: ${hs},${pcs}
116
139
  loadBootstrapScriptContent: () =>
117
140
  import.meta.viteRsc.loadBootstrapScriptContent("index"),
118
141
  });
package/src/vite/rango.ts CHANGED
@@ -269,6 +269,7 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
269
269
  plugins.push(
270
270
  createVirtualEntriesPlugin(finalEntries, undefined, {
271
271
  headScripts: resolvedOptions.headScripts,
272
+ progressiveChunkSize: resolvedOptions.progressiveChunkSize,
272
273
  }),
273
274
  );
274
275
  plugins.push(performanceTracksPlugin());
@@ -519,6 +520,7 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
519
520
  plugins.push(
520
521
  createVirtualEntriesPlugin(finalEntries, routerRef, {
521
522
  headScripts: resolvedOptions.headScripts,
523
+ progressiveChunkSize: resolvedOptions.progressiveChunkSize,
522
524
  }),
523
525
  );
524
526
  plugins.push(performanceTracksPlugin());
@@ -585,6 +587,7 @@ export async function rango(options?: RangoOptions): Promise<PluginOption[]> {
585
587
  discovery: options?.discovery,
586
588
  clientChunkCtx,
587
589
  headScripts: resolvedOptions.headScripts,
590
+ progressiveChunkSize: resolvedOptions.progressiveChunkSize,
588
591
  }),
589
592
  );
590
593
 
@@ -265,7 +265,10 @@ async function createTempRscServer(
265
265
  },
266
266
  load(id: string) {
267
267
  return id === "\0rango-temp-real-ssr-entry"
268
- ? getVirtualEntrySSR(state.opts?.headScripts)
268
+ ? getVirtualEntrySSR(
269
+ state.opts?.headScripts,
270
+ state.opts?.progressiveChunkSize,
271
+ )
269
272
  : null;
270
273
  },
271
274
  } satisfies import("vite").Plugin,
@@ -1707,6 +1710,8 @@ export function createRouterDiscoveryPlugin(
1707
1710
  if (expectedEpoch === undefined) return;
1708
1711
  void (async () => {
1709
1712
  const deadline = Date.now() + 15_000;
1713
+ let reloadBackoffMs = 100;
1714
+ let nextReloadAt = Date.now() + reloadBackoffMs;
1710
1715
  do {
1711
1716
  if (devServerClosed || expectedEpoch !== s.devDiscoveryEpoch) {
1712
1717
  return;
@@ -1732,10 +1737,18 @@ export function createRouterDiscoveryPlugin(
1732
1737
  publishDevDiscoveryReady(expectedEpoch);
1733
1738
  return;
1734
1739
  }
1740
+ await response.body?.cancel().catch(() => {});
1735
1741
  // A response without the expected epoch proves an older worker
1736
1742
  // evaluation won the race after the initial invalidation. Clear
1737
- // that completed evaluation and retry the reload.
1738
- reloadWorkerd();
1743
+ // that completed evaluation and retry the reload. Back off the
1744
+ // retries: reloading faster than workerd can evaluate prevents
1745
+ // convergence and retains overlapping module generations.
1746
+ const now = Date.now();
1747
+ if (now >= nextReloadAt) {
1748
+ reloadWorkerd();
1749
+ reloadBackoffMs = Math.min(reloadBackoffMs * 2, 1_000);
1750
+ nextReloadAt = now + reloadBackoffMs;
1751
+ }
1739
1752
  } catch {}
1740
1753
  } while (Date.now() < deadline);
1741
1754
 
@@ -1949,26 +1962,25 @@ export function createRouterDiscoveryPlugin(
1949
1962
  // the entry + router sources so the import re-creates the routers
1950
1963
  // against the refreshed projection (installed by the pre-entry
1951
1964
  // refresh in discover-routers.ts).
1952
- if (isUseClient && hasClientUrls) {
1953
- const rscGraph = (server.environments as any)?.rsc?.moduleGraph;
1965
+ const mainRscEnv = (server.environments as any)?.rsc;
1966
+ if (isUseClient && hasClientUrls && mainRscEnv?.runner) {
1967
+ const rscGraph = mainRscEnv.moduleGraph;
1954
1968
  if (rscGraph?.getModulesByFile) {
1955
1969
  // Importers must be invalidated too: the virtual RSC entry
1956
1970
  // holds a live `import { router }` binding, and re-evaluating
1957
1971
  // router.tsx alone leaves that binding on the OLD instance —
1958
1972
  // the request pipeline would keep serving the stale mount.
1959
- // Same blast radius as a server urls edit (Vite's own
1960
- // file-change invalidation propagates upward identically).
1961
- const invalidateWithImporters = (
1962
- mod: any,
1963
- seen: Set<any>,
1964
- ): void => {
1965
- if (!mod || seen.has(mod)) return;
1966
- seen.add(mod);
1967
- rscGraph.invalidateModule(mod);
1968
- for (const importer of mod.importers ?? []) {
1969
- invalidateWithImporters(importer, seen);
1970
- }
1971
- };
1973
+ // Vite's invalidateModule already walks importers. Share its
1974
+ // seen set across roots instead of recursively starting a new
1975
+ // traversal at every importer (quadratic on a large graph).
1976
+ // Vite's walk skips HMR-accepting importers and soft-invalidates
1977
+ // static ones (vs the old unconditional hard walk) — safe here:
1978
+ // the entry and every router source are invalidated directly as
1979
+ // roots, and ancestors get the exact treatment Vite's own
1980
+ // file-change propagation applies on a server urls edit.
1981
+ // Cloudflare has no local runner and skips this block: its temp
1982
+ // discovery graph and workerd graph are invalidated wholesale
1983
+ // by refreshRuntimeDiscovery() after this watcher event.
1972
1984
  const routerSourceFiles = new Set<string>();
1973
1985
  if (s.resolvedEntryPath) {
1974
1986
  routerSourceFiles.add(resolve(s.resolvedEntryPath));
@@ -1991,7 +2003,7 @@ export function createRouterDiscoveryPlugin(
1991
2003
  continue;
1992
2004
  }
1993
2005
  for (const mod of mods) {
1994
- invalidateWithImporters(mod, seen);
2006
+ rscGraph.invalidateModule(mod, seen);
1995
2007
  }
1996
2008
  }
1997
2009
  debugDiscovery?.(
@@ -110,7 +110,10 @@ export function normalizeHostRouterEntry(
110
110
  export function createVirtualEntriesPlugin(
111
111
  entries: { client: string; ssr: string; rsc?: string },
112
112
  routerPathRef?: { path?: string; kind?: "router" | "host" },
113
- options?: { headScripts?: HeadScriptsOption },
113
+ options?: {
114
+ headScripts?: HeadScriptsOption;
115
+ progressiveChunkSize?: number;
116
+ },
114
117
  ): Plugin {
115
118
  // Build virtual modules map based on which entries use virtual IDs
116
119
  const virtualModules: Record<string, string> = {};
@@ -119,7 +122,10 @@ export function createVirtualEntriesPlugin(
119
122
  virtualModules[VIRTUAL_IDS.browser] = VIRTUAL_ENTRY_BROWSER;
120
123
  }
121
124
  if (entries.ssr === VIRTUAL_IDS.ssr) {
122
- virtualModules[VIRTUAL_IDS.ssr] = getVirtualEntrySSR(options?.headScripts);
125
+ virtualModules[VIRTUAL_IDS.ssr] = getVirtualEntrySSR(
126
+ options?.headScripts,
127
+ options?.progressiveChunkSize,
128
+ );
123
129
  }
124
130
 
125
131
  // RSC entry is resolved lazily in load() because routerPath may be