@rangojs/router 0.0.0-experimental.125 → 0.0.0-experimental.126

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 (881) hide show
  1. package/README.md +6 -4
  2. package/dist/__internal.d.ts +83 -0
  3. package/dist/__internal.d.ts.map +1 -0
  4. package/dist/__internal.js +19 -0
  5. package/dist/__internal.js.map +1 -0
  6. package/dist/__mocks__/version.d.ts +7 -0
  7. package/dist/__mocks__/version.d.ts.map +1 -0
  8. package/dist/__mocks__/version.js +7 -0
  9. package/dist/__mocks__/version.js.map +1 -0
  10. package/dist/__tests__/client-href.test.d.ts +2 -0
  11. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  12. package/dist/__tests__/client-href.test.js +74 -0
  13. package/dist/__tests__/client-href.test.js.map +1 -0
  14. package/dist/__tests__/component-utils.test.d.ts +2 -0
  15. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  16. package/dist/__tests__/component-utils.test.js +51 -0
  17. package/dist/__tests__/component-utils.test.js.map +1 -0
  18. package/dist/__tests__/event-controller.test.d.ts +2 -0
  19. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  20. package/dist/__tests__/event-controller.test.js +538 -0
  21. package/dist/__tests__/event-controller.test.js.map +1 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  24. package/dist/__tests__/helpers/route-tree.js +374 -0
  25. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  26. package/dist/__tests__/match-result.test.d.ts +2 -0
  27. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  28. package/dist/__tests__/match-result.test.js +154 -0
  29. package/dist/__tests__/match-result.test.js.map +1 -0
  30. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  31. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  32. package/dist/__tests__/navigation-store.test.js +440 -0
  33. package/dist/__tests__/navigation-store.test.js.map +1 -0
  34. package/dist/__tests__/partial-update.test.d.ts +2 -0
  35. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  36. package/dist/__tests__/partial-update.test.js +1009 -0
  37. package/dist/__tests__/partial-update.test.js.map +1 -0
  38. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  39. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  40. package/dist/__tests__/reverse-types.test.js +656 -0
  41. package/dist/__tests__/reverse-types.test.js.map +1 -0
  42. package/dist/__tests__/route-definition.test.d.ts +2 -0
  43. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  44. package/dist/__tests__/route-definition.test.js +55 -0
  45. package/dist/__tests__/route-definition.test.js.map +1 -0
  46. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  47. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  48. package/dist/__tests__/router-helpers.test.js +377 -0
  49. package/dist/__tests__/router-helpers.test.js.map +1 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  52. package/dist/__tests__/router-integration-2.test.js +426 -0
  53. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  54. package/dist/__tests__/router-integration.test.d.ts +2 -0
  55. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  56. package/dist/__tests__/router-integration.test.js +1051 -0
  57. package/dist/__tests__/router-integration.test.js.map +1 -0
  58. package/dist/__tests__/search-params.test.d.ts +5 -0
  59. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  60. package/dist/__tests__/search-params.test.js +306 -0
  61. package/dist/__tests__/search-params.test.js.map +1 -0
  62. package/dist/__tests__/segment-system.test.d.ts +2 -0
  63. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  64. package/dist/__tests__/segment-system.test.js +627 -0
  65. package/dist/__tests__/segment-system.test.js.map +1 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  68. package/dist/__tests__/static-handler-types.test.js +63 -0
  69. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  70. package/dist/__tests__/urls.test.d.ts +2 -0
  71. package/dist/__tests__/urls.test.d.ts.map +1 -0
  72. package/dist/__tests__/urls.test.js +421 -0
  73. package/dist/__tests__/urls.test.js.map +1 -0
  74. package/dist/__tests__/use-mount.test.d.ts +2 -0
  75. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  76. package/dist/__tests__/use-mount.test.js +35 -0
  77. package/dist/__tests__/use-mount.test.js.map +1 -0
  78. package/dist/bin/rango.d.ts +2 -0
  79. package/dist/bin/rango.d.ts.map +1 -0
  80. package/dist/bin/rango.js.map +1 -0
  81. package/dist/browser/event-controller.d.ts +191 -0
  82. package/dist/browser/event-controller.d.ts.map +1 -0
  83. package/dist/browser/event-controller.js +559 -0
  84. package/dist/browser/event-controller.js.map +1 -0
  85. package/dist/browser/index.d.ts +2 -0
  86. package/dist/browser/index.d.ts.map +1 -0
  87. package/dist/browser/index.js +14 -0
  88. package/dist/browser/index.js.map +1 -0
  89. package/dist/browser/link-interceptor.d.ts +38 -0
  90. package/dist/browser/link-interceptor.d.ts.map +1 -0
  91. package/dist/browser/link-interceptor.js +99 -0
  92. package/dist/browser/link-interceptor.js.map +1 -0
  93. package/dist/browser/logging.d.ts +10 -0
  94. package/dist/browser/logging.d.ts.map +1 -0
  95. package/dist/browser/logging.js +29 -0
  96. package/dist/browser/logging.js.map +1 -0
  97. package/dist/browser/lru-cache.d.ts +17 -0
  98. package/dist/browser/lru-cache.d.ts.map +1 -0
  99. package/dist/browser/lru-cache.js +50 -0
  100. package/dist/browser/lru-cache.js.map +1 -0
  101. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  102. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  103. package/dist/browser/merge-segment-loaders.js +102 -0
  104. package/dist/browser/merge-segment-loaders.js.map +1 -0
  105. package/dist/browser/navigation-bridge.d.ts +102 -0
  106. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  107. package/dist/browser/navigation-bridge.js +708 -0
  108. package/dist/browser/navigation-bridge.js.map +1 -0
  109. package/dist/browser/navigation-client.d.ts +25 -0
  110. package/dist/browser/navigation-client.d.ts.map +1 -0
  111. package/dist/browser/navigation-client.js +157 -0
  112. package/dist/browser/navigation-client.js.map +1 -0
  113. package/dist/browser/navigation-store.d.ts +101 -0
  114. package/dist/browser/navigation-store.d.ts.map +1 -0
  115. package/dist/browser/navigation-store.js +625 -0
  116. package/dist/browser/navigation-store.js.map +1 -0
  117. package/dist/browser/partial-update.d.ts +75 -0
  118. package/dist/browser/partial-update.d.ts.map +1 -0
  119. package/dist/browser/partial-update.js +426 -0
  120. package/dist/browser/partial-update.js.map +1 -0
  121. package/dist/browser/react/Link.d.ts +86 -0
  122. package/dist/browser/react/Link.d.ts.map +1 -0
  123. package/dist/browser/react/Link.js +128 -0
  124. package/dist/browser/react/Link.js.map +1 -0
  125. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  126. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  127. package/dist/browser/react/NavigationProvider.js +216 -0
  128. package/dist/browser/react/NavigationProvider.js.map +1 -0
  129. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  130. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.js +57 -0
  132. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  133. package/dist/browser/react/context.d.ts +46 -0
  134. package/dist/browser/react/context.d.ts.map +1 -0
  135. package/dist/browser/react/context.js +10 -0
  136. package/dist/browser/react/context.js.map +1 -0
  137. package/dist/browser/react/index.d.ts +11 -0
  138. package/dist/browser/react/index.d.ts.map +1 -0
  139. package/dist/browser/react/index.js +22 -0
  140. package/dist/browser/react/index.js.map +1 -0
  141. package/dist/browser/react/location-state-shared.d.ts +63 -0
  142. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  143. package/dist/browser/react/location-state-shared.js +81 -0
  144. package/dist/browser/react/location-state-shared.js.map +1 -0
  145. package/dist/browser/react/location-state.d.ts +23 -0
  146. package/dist/browser/react/location-state.d.ts.map +1 -0
  147. package/dist/browser/react/location-state.js +29 -0
  148. package/dist/browser/react/location-state.js.map +1 -0
  149. package/dist/browser/react/mount-context.d.ts +24 -0
  150. package/dist/browser/react/mount-context.d.ts.map +1 -0
  151. package/dist/browser/react/mount-context.js +24 -0
  152. package/dist/browser/react/mount-context.js.map +1 -0
  153. package/dist/browser/react/use-action.d.ts +64 -0
  154. package/dist/browser/react/use-action.d.ts.map +1 -0
  155. package/dist/browser/react/use-action.js +134 -0
  156. package/dist/browser/react/use-action.js.map +1 -0
  157. package/dist/browser/react/use-client-cache.d.ts +41 -0
  158. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  159. package/dist/browser/react/use-client-cache.js +39 -0
  160. package/dist/browser/react/use-client-cache.js.map +1 -0
  161. package/dist/browser/react/use-handle.d.ts +31 -0
  162. package/dist/browser/react/use-handle.d.ts.map +1 -0
  163. package/dist/browser/react/use-handle.js +144 -0
  164. package/dist/browser/react/use-handle.js.map +1 -0
  165. package/dist/browser/react/use-href.d.ts +33 -0
  166. package/dist/browser/react/use-href.d.ts.map +1 -0
  167. package/dist/browser/react/use-href.js +39 -0
  168. package/dist/browser/react/use-href.js.map +1 -0
  169. package/dist/browser/react/use-link-status.d.ts +37 -0
  170. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  171. package/dist/browser/react/use-link-status.js +99 -0
  172. package/dist/browser/react/use-link-status.js.map +1 -0
  173. package/dist/browser/react/use-mount.d.ts +25 -0
  174. package/dist/browser/react/use-mount.d.ts.map +1 -0
  175. package/dist/browser/react/use-mount.js +30 -0
  176. package/dist/browser/react/use-mount.js.map +1 -0
  177. package/dist/browser/react/use-navigation.d.ts +27 -0
  178. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  179. package/dist/browser/react/use-navigation.js +87 -0
  180. package/dist/browser/react/use-navigation.js.map +1 -0
  181. package/dist/browser/react/use-segments.d.ts +38 -0
  182. package/dist/browser/react/use-segments.d.ts.map +1 -0
  183. package/dist/browser/react/use-segments.js +130 -0
  184. package/dist/browser/react/use-segments.js.map +1 -0
  185. package/dist/browser/request-controller.d.ts +26 -0
  186. package/dist/browser/request-controller.d.ts.map +1 -0
  187. package/dist/browser/request-controller.js +147 -0
  188. package/dist/browser/request-controller.js.map +1 -0
  189. package/dist/browser/rsc-router.d.ts +129 -0
  190. package/dist/browser/rsc-router.d.ts.map +1 -0
  191. package/dist/browser/rsc-router.js +195 -0
  192. package/dist/browser/rsc-router.js.map +1 -0
  193. package/dist/browser/scroll-restoration.d.ts +93 -0
  194. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  195. package/dist/browser/scroll-restoration.js +321 -0
  196. package/dist/browser/scroll-restoration.js.map +1 -0
  197. package/dist/browser/segment-structure-assert.d.ts +17 -0
  198. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  199. package/dist/browser/segment-structure-assert.js +59 -0
  200. package/dist/browser/segment-structure-assert.js.map +1 -0
  201. package/dist/browser/server-action-bridge.d.ts +26 -0
  202. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  203. package/dist/browser/server-action-bridge.js +668 -0
  204. package/dist/browser/server-action-bridge.js.map +1 -0
  205. package/dist/browser/shallow.d.ts +12 -0
  206. package/dist/browser/shallow.d.ts.map +1 -0
  207. package/dist/browser/shallow.js +34 -0
  208. package/dist/browser/shallow.js.map +1 -0
  209. package/dist/browser/types.d.ts +369 -0
  210. package/dist/browser/types.d.ts.map +1 -0
  211. package/dist/browser/types.js +2 -0
  212. package/dist/browser/types.js.map +1 -0
  213. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  214. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.js +237 -0
  216. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  217. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  218. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  220. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  221. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  222. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  224. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  225. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  226. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  228. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  229. package/dist/build/generate-manifest.d.ts +81 -0
  230. package/dist/build/generate-manifest.d.ts.map +1 -0
  231. package/dist/build/generate-manifest.js +276 -0
  232. package/dist/build/generate-manifest.js.map +1 -0
  233. package/dist/build/generate-route-types.d.ts +115 -0
  234. package/dist/build/generate-route-types.d.ts.map +1 -0
  235. package/dist/build/generate-route-types.js +740 -0
  236. package/dist/build/generate-route-types.js.map +1 -0
  237. package/dist/build/index.d.ts +21 -0
  238. package/dist/build/index.d.ts.map +1 -0
  239. package/dist/build/index.js +21 -0
  240. package/dist/build/index.js.map +1 -0
  241. package/dist/build/route-trie.d.ts +71 -0
  242. package/dist/build/route-trie.d.ts.map +1 -0
  243. package/dist/build/route-trie.js +175 -0
  244. package/dist/build/route-trie.js.map +1 -0
  245. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  246. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  248. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  249. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  250. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.js +345 -0
  252. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  253. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  257. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  258. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.js +367 -0
  260. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  261. package/dist/cache/cache-scope.d.ts +102 -0
  262. package/dist/cache/cache-scope.d.ts.map +1 -0
  263. package/dist/cache/cache-scope.js +440 -0
  264. package/dist/cache/cache-scope.js.map +1 -0
  265. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  269. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  270. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.js +242 -0
  272. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  273. package/dist/cache/cf/index.d.ts +14 -0
  274. package/dist/cache/cf/index.d.ts.map +1 -0
  275. package/dist/cache/cf/index.js +17 -0
  276. package/dist/cache/cf/index.js.map +1 -0
  277. package/dist/cache/document-cache.d.ts +64 -0
  278. package/dist/cache/document-cache.d.ts.map +1 -0
  279. package/dist/cache/document-cache.js +228 -0
  280. package/dist/cache/document-cache.js.map +1 -0
  281. package/dist/cache/index.d.ts +19 -0
  282. package/dist/cache/index.d.ts.map +1 -0
  283. package/dist/cache/index.js +21 -0
  284. package/dist/cache/index.js.map +1 -0
  285. package/dist/cache/memory-segment-store.d.ts +110 -0
  286. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  287. package/dist/cache/memory-segment-store.js +117 -0
  288. package/dist/cache/memory-segment-store.js.map +1 -0
  289. package/dist/cache/memory-store.d.ts +41 -0
  290. package/dist/cache/memory-store.d.ts.map +1 -0
  291. package/dist/cache/memory-store.js +191 -0
  292. package/dist/cache/memory-store.js.map +1 -0
  293. package/dist/cache/types.d.ts +317 -0
  294. package/dist/cache/types.d.ts.map +1 -0
  295. package/dist/cache/types.js +12 -0
  296. package/dist/cache/types.js.map +1 -0
  297. package/dist/client.d.ts +248 -0
  298. package/dist/client.d.ts.map +1 -0
  299. package/dist/client.js +367 -0
  300. package/dist/client.js.map +1 -0
  301. package/dist/client.rsc.d.ts +26 -0
  302. package/dist/client.rsc.d.ts.map +1 -0
  303. package/dist/client.rsc.js +46 -0
  304. package/dist/client.rsc.js.map +1 -0
  305. package/dist/component-utils.d.ts +36 -0
  306. package/dist/component-utils.d.ts.map +1 -0
  307. package/dist/component-utils.js +61 -0
  308. package/dist/component-utils.js.map +1 -0
  309. package/dist/components/DefaultDocument.d.ts +13 -0
  310. package/dist/components/DefaultDocument.d.ts.map +1 -0
  311. package/dist/components/DefaultDocument.js +15 -0
  312. package/dist/components/DefaultDocument.js.map +1 -0
  313. package/dist/debug.d.ts +58 -0
  314. package/dist/debug.d.ts.map +1 -0
  315. package/dist/debug.js +157 -0
  316. package/dist/debug.js.map +1 -0
  317. package/dist/default-error-boundary.d.ts +11 -0
  318. package/dist/default-error-boundary.d.ts.map +1 -0
  319. package/dist/default-error-boundary.js +45 -0
  320. package/dist/default-error-boundary.js.map +1 -0
  321. package/dist/deps/browser.d.ts +2 -0
  322. package/dist/deps/browser.d.ts.map +1 -0
  323. package/dist/deps/browser.js +3 -0
  324. package/dist/deps/browser.js.map +1 -0
  325. package/dist/deps/html-stream-client.d.ts +2 -0
  326. package/dist/deps/html-stream-client.d.ts.map +1 -0
  327. package/dist/deps/html-stream-client.js +3 -0
  328. package/dist/deps/html-stream-client.js.map +1 -0
  329. package/dist/deps/html-stream-server.d.ts +2 -0
  330. package/dist/deps/html-stream-server.d.ts.map +1 -0
  331. package/dist/deps/html-stream-server.js +3 -0
  332. package/dist/deps/html-stream-server.js.map +1 -0
  333. package/dist/deps/rsc.d.ts +2 -0
  334. package/dist/deps/rsc.d.ts.map +1 -0
  335. package/dist/deps/rsc.js +4 -0
  336. package/dist/deps/rsc.js.map +1 -0
  337. package/dist/deps/ssr.d.ts +2 -0
  338. package/dist/deps/ssr.d.ts.map +1 -0
  339. package/dist/deps/ssr.js +3 -0
  340. package/dist/deps/ssr.js.map +1 -0
  341. package/dist/errors.d.ts +174 -0
  342. package/dist/errors.d.ts.map +1 -0
  343. package/dist/errors.js +241 -0
  344. package/dist/errors.js.map +1 -0
  345. package/dist/handle.d.ts +78 -0
  346. package/dist/handle.d.ts.map +1 -0
  347. package/dist/handle.js +82 -0
  348. package/dist/handle.js.map +1 -0
  349. package/dist/handles/MetaTags.d.ts +14 -0
  350. package/dist/handles/MetaTags.d.ts.map +1 -0
  351. package/dist/handles/MetaTags.js +136 -0
  352. package/dist/handles/MetaTags.js.map +1 -0
  353. package/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
  354. package/dist/handles/index.d.ts.map +1 -0
  355. package/dist/handles/index.js +6 -0
  356. package/dist/handles/index.js.map +1 -0
  357. package/dist/handles/meta.d.ts +39 -0
  358. package/dist/handles/meta.d.ts.map +1 -0
  359. package/dist/handles/meta.js +202 -0
  360. package/dist/handles/meta.js.map +1 -0
  361. package/dist/host/__tests__/errors.test.d.ts +2 -0
  362. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  363. package/dist/host/__tests__/errors.test.js +76 -0
  364. package/dist/host/__tests__/errors.test.js.map +1 -0
  365. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  369. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  370. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  372. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  373. package/dist/host/__tests__/router.test.d.ts +2 -0
  374. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  375. package/dist/host/__tests__/router.test.js +241 -0
  376. package/dist/host/__tests__/router.test.js.map +1 -0
  377. package/dist/host/__tests__/testing.test.d.ts +2 -0
  378. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  379. package/dist/host/__tests__/testing.test.js +64 -0
  380. package/dist/host/__tests__/testing.test.js.map +1 -0
  381. package/dist/host/__tests__/utils.test.d.ts +2 -0
  382. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  383. package/dist/host/__tests__/utils.test.js +29 -0
  384. package/dist/host/__tests__/utils.test.js.map +1 -0
  385. package/dist/host/cookie-handler.d.ts +34 -0
  386. package/dist/host/cookie-handler.d.ts.map +1 -0
  387. package/dist/host/cookie-handler.js +124 -0
  388. package/dist/host/cookie-handler.js.map +1 -0
  389. package/dist/host/errors.d.ts +56 -0
  390. package/dist/host/errors.d.ts.map +1 -0
  391. package/dist/host/errors.js +79 -0
  392. package/dist/host/errors.js.map +1 -0
  393. package/dist/host/index.d.ts +29 -0
  394. package/dist/host/index.d.ts.map +1 -0
  395. package/dist/host/index.js +32 -0
  396. package/dist/host/index.js.map +1 -0
  397. package/dist/host/pattern-matcher.d.ts +36 -0
  398. package/dist/host/pattern-matcher.d.ts.map +1 -0
  399. package/dist/host/pattern-matcher.js +172 -0
  400. package/dist/host/pattern-matcher.js.map +1 -0
  401. package/dist/host/router.d.ts +26 -0
  402. package/dist/host/router.d.ts.map +1 -0
  403. package/dist/host/router.js +218 -0
  404. package/dist/host/router.js.map +1 -0
  405. package/dist/host/testing.d.ts +36 -0
  406. package/dist/host/testing.d.ts.map +1 -0
  407. package/dist/host/testing.js +55 -0
  408. package/dist/host/testing.js.map +1 -0
  409. package/dist/host/types.d.ts +115 -0
  410. package/dist/host/types.d.ts.map +1 -0
  411. package/dist/host/types.js +7 -0
  412. package/dist/host/types.js.map +1 -0
  413. package/dist/host/utils.d.ts +21 -0
  414. package/dist/host/utils.d.ts.map +1 -0
  415. package/dist/host/utils.js +23 -0
  416. package/dist/host/utils.js.map +1 -0
  417. package/dist/href-client.d.ts +131 -0
  418. package/dist/href-client.d.ts.map +1 -0
  419. package/dist/href-client.js +64 -0
  420. package/dist/href-client.js.map +1 -0
  421. package/dist/href-context.d.ts +29 -0
  422. package/dist/href-context.d.ts.map +1 -0
  423. package/dist/href-context.js +21 -0
  424. package/dist/href-context.js.map +1 -0
  425. package/dist/index.d.ts +73 -0
  426. package/dist/index.d.ts.map +1 -0
  427. package/dist/index.js +91 -0
  428. package/dist/index.js.map +1 -0
  429. package/dist/index.rsc.d.ts +32 -0
  430. package/dist/index.rsc.d.ts.map +1 -0
  431. package/dist/index.rsc.js +40 -0
  432. package/dist/index.rsc.js.map +1 -0
  433. package/dist/internal-debug.d.ts +2 -0
  434. package/dist/internal-debug.d.ts.map +1 -0
  435. package/dist/internal-debug.js +5 -0
  436. package/dist/internal-debug.js.map +1 -0
  437. package/dist/loader.d.ts +14 -0
  438. package/dist/loader.d.ts.map +1 -0
  439. package/dist/loader.js +20 -0
  440. package/dist/loader.js.map +1 -0
  441. package/dist/loader.rsc.d.ts +19 -0
  442. package/dist/loader.rsc.d.ts.map +1 -0
  443. package/dist/loader.rsc.js +99 -0
  444. package/dist/loader.rsc.js.map +1 -0
  445. package/dist/network-error-thrower.d.ts +17 -0
  446. package/dist/network-error-thrower.d.ts.map +1 -0
  447. package/dist/network-error-thrower.js +14 -0
  448. package/dist/network-error-thrower.js.map +1 -0
  449. package/dist/outlet-context.d.ts +13 -0
  450. package/dist/outlet-context.d.ts.map +1 -0
  451. package/dist/outlet-context.js +3 -0
  452. package/dist/outlet-context.js.map +1 -0
  453. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  454. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  456. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  457. package/dist/prerender/param-hash.d.ts +16 -0
  458. package/dist/prerender/param-hash.d.ts.map +1 -0
  459. package/dist/prerender/param-hash.js +36 -0
  460. package/dist/prerender/param-hash.js.map +1 -0
  461. package/dist/prerender/store.d.ts +38 -0
  462. package/dist/prerender/store.d.ts.map +1 -0
  463. package/dist/prerender/store.js +61 -0
  464. package/dist/prerender/store.js.map +1 -0
  465. package/dist/prerender.d.ts +66 -0
  466. package/dist/prerender.d.ts.map +1 -0
  467. package/dist/prerender.js +57 -0
  468. package/dist/prerender.js.map +1 -0
  469. package/dist/reverse.d.ts +196 -0
  470. package/dist/reverse.d.ts.map +1 -0
  471. package/dist/reverse.js +78 -0
  472. package/dist/reverse.js.map +1 -0
  473. package/dist/root-error-boundary.d.ts +33 -0
  474. package/dist/root-error-boundary.d.ts.map +1 -0
  475. package/dist/root-error-boundary.js +165 -0
  476. package/dist/root-error-boundary.js.map +1 -0
  477. package/dist/route-content-wrapper.d.ts +46 -0
  478. package/dist/route-content-wrapper.d.ts.map +1 -0
  479. package/dist/route-content-wrapper.js +77 -0
  480. package/dist/route-content-wrapper.js.map +1 -0
  481. package/dist/route-definition.d.ts +421 -0
  482. package/dist/route-definition.d.ts.map +1 -0
  483. package/dist/route-definition.js +868 -0
  484. package/dist/route-definition.js.map +1 -0
  485. package/dist/route-map-builder.d.ts +155 -0
  486. package/dist/route-map-builder.d.ts.map +1 -0
  487. package/dist/route-map-builder.js +237 -0
  488. package/dist/route-map-builder.js.map +1 -0
  489. package/dist/route-types.d.ts +165 -0
  490. package/dist/route-types.d.ts.map +1 -0
  491. package/dist/route-types.js +7 -0
  492. package/dist/route-types.js.map +1 -0
  493. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  494. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.js +65 -0
  496. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  497. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  501. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  502. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  503. package/dist/router/__tests__/match-context.test.js +92 -0
  504. package/dist/router/__tests__/match-context.test.js.map +1 -0
  505. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  506. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  508. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  509. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  510. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  511. package/dist/router/__tests__/match-result.test.js +457 -0
  512. package/dist/router/__tests__/match-result.test.js.map +1 -0
  513. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  514. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  515. package/dist/router/__tests__/on-error.test.js +678 -0
  516. package/dist/router/__tests__/on-error.test.js.map +1 -0
  517. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  518. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  520. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  521. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  525. package/dist/router/error-handling.d.ts +77 -0
  526. package/dist/router/error-handling.d.ts.map +1 -0
  527. package/dist/router/error-handling.js +202 -0
  528. package/dist/router/error-handling.js.map +1 -0
  529. package/dist/router/handler-context.d.ts +20 -0
  530. package/dist/router/handler-context.d.ts.map +1 -0
  531. package/dist/router/handler-context.js +198 -0
  532. package/dist/router/handler-context.js.map +1 -0
  533. package/dist/router/intercept-resolution.d.ts +66 -0
  534. package/dist/router/intercept-resolution.d.ts.map +1 -0
  535. package/dist/router/intercept-resolution.js +246 -0
  536. package/dist/router/intercept-resolution.js.map +1 -0
  537. package/dist/router/loader-resolution.d.ts +64 -0
  538. package/dist/router/loader-resolution.d.ts.map +1 -0
  539. package/dist/router/loader-resolution.js +284 -0
  540. package/dist/router/loader-resolution.js.map +1 -0
  541. package/dist/router/logging.d.ts +15 -0
  542. package/dist/router/logging.d.ts.map +1 -0
  543. package/dist/router/logging.js +99 -0
  544. package/dist/router/logging.js.map +1 -0
  545. package/dist/router/manifest.d.ts +22 -0
  546. package/dist/router/manifest.d.ts.map +1 -0
  547. package/dist/router/manifest.js +181 -0
  548. package/dist/router/manifest.js.map +1 -0
  549. package/dist/router/match-api.d.ts +35 -0
  550. package/dist/router/match-api.d.ts.map +1 -0
  551. package/dist/router/match-api.js +406 -0
  552. package/dist/router/match-api.js.map +1 -0
  553. package/dist/router/match-context.d.ts +206 -0
  554. package/dist/router/match-context.d.ts.map +1 -0
  555. package/dist/router/match-context.js +17 -0
  556. package/dist/router/match-context.js.map +1 -0
  557. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  558. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.js +75 -0
  560. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  561. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  562. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.js +257 -0
  564. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  565. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  566. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  567. package/dist/router/match-middleware/cache-store.js +108 -0
  568. package/dist/router/match-middleware/cache-store.js.map +1 -0
  569. package/dist/router/match-middleware/index.d.ts +81 -0
  570. package/dist/router/match-middleware/index.d.ts.map +1 -0
  571. package/dist/router/match-middleware/index.js +80 -0
  572. package/dist/router/match-middleware/index.js.map +1 -0
  573. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  574. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  576. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  577. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  578. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.js +53 -0
  580. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  581. package/dist/router/match-pipelines.d.ts +147 -0
  582. package/dist/router/match-pipelines.d.ts.map +1 -0
  583. package/dist/router/match-pipelines.js +82 -0
  584. package/dist/router/match-pipelines.js.map +1 -0
  585. package/dist/router/match-result.d.ts +126 -0
  586. package/dist/router/match-result.d.ts.map +1 -0
  587. package/dist/router/match-result.js +93 -0
  588. package/dist/router/match-result.js.map +1 -0
  589. package/dist/router/metrics.d.ts +20 -0
  590. package/dist/router/metrics.d.ts.map +1 -0
  591. package/dist/router/metrics.js +47 -0
  592. package/dist/router/metrics.js.map +1 -0
  593. package/dist/router/middleware.d.ts +249 -0
  594. package/dist/router/middleware.d.ts.map +1 -0
  595. package/dist/router/middleware.js +434 -0
  596. package/dist/router/middleware.js.map +1 -0
  597. package/dist/router/middleware.test.d.ts +2 -0
  598. package/dist/router/middleware.test.d.ts.map +1 -0
  599. package/dist/router/middleware.test.js +816 -0
  600. package/dist/router/middleware.test.js.map +1 -0
  601. package/dist/router/pattern-matching.d.ts +149 -0
  602. package/dist/router/pattern-matching.d.ts.map +1 -0
  603. package/dist/router/pattern-matching.js +349 -0
  604. package/dist/router/pattern-matching.js.map +1 -0
  605. package/dist/router/revalidation.d.ts +44 -0
  606. package/dist/router/revalidation.d.ts.map +1 -0
  607. package/dist/router/revalidation.js +147 -0
  608. package/dist/router/revalidation.js.map +1 -0
  609. package/dist/router/router-context.d.ts +135 -0
  610. package/dist/router/router-context.d.ts.map +1 -0
  611. package/dist/router/router-context.js +36 -0
  612. package/dist/router/router-context.js.map +1 -0
  613. package/dist/router/segment-resolution.d.ts +127 -0
  614. package/dist/router/segment-resolution.d.ts.map +1 -0
  615. package/dist/router/segment-resolution.js +919 -0
  616. package/dist/router/segment-resolution.js.map +1 -0
  617. package/dist/router/trie-matching.d.ts +40 -0
  618. package/dist/router/trie-matching.d.ts.map +1 -0
  619. package/dist/router/trie-matching.js +127 -0
  620. package/dist/router/trie-matching.js.map +1 -0
  621. package/dist/router/types.d.ts +136 -0
  622. package/dist/router/types.d.ts.map +1 -0
  623. package/dist/router/types.js +7 -0
  624. package/dist/router/types.js.map +1 -0
  625. package/dist/router.d.ts +753 -0
  626. package/dist/router.d.ts.map +1 -0
  627. package/dist/router.gen.d.ts +6 -0
  628. package/dist/router.gen.d.ts.map +1 -0
  629. package/dist/router.gen.js +6 -0
  630. package/dist/router.gen.js.map +1 -0
  631. package/dist/router.js +1304 -0
  632. package/dist/router.js.map +1 -0
  633. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  634. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.js +140 -0
  636. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  637. package/dist/rsc/handler.d.ts +45 -0
  638. package/dist/rsc/handler.d.ts.map +1 -0
  639. package/dist/rsc/handler.js +1172 -0
  640. package/dist/rsc/handler.js.map +1 -0
  641. package/dist/rsc/helpers.d.ts +16 -0
  642. package/dist/rsc/helpers.d.ts.map +1 -0
  643. package/dist/rsc/helpers.js +55 -0
  644. package/dist/rsc/helpers.js.map +1 -0
  645. package/dist/rsc/index.d.ts +22 -0
  646. package/dist/rsc/index.d.ts.map +1 -0
  647. package/dist/rsc/index.js +23 -0
  648. package/dist/rsc/index.js.map +1 -0
  649. package/dist/rsc/nonce.d.ts +9 -0
  650. package/dist/rsc/nonce.d.ts.map +1 -0
  651. package/dist/rsc/nonce.js +18 -0
  652. package/dist/rsc/nonce.js.map +1 -0
  653. package/dist/rsc/types.d.ts +206 -0
  654. package/dist/rsc/types.d.ts.map +1 -0
  655. package/dist/rsc/types.js +8 -0
  656. package/dist/rsc/types.js.map +1 -0
  657. package/dist/search-params.d.ts +103 -0
  658. package/dist/search-params.d.ts.map +1 -0
  659. package/dist/search-params.js +74 -0
  660. package/dist/search-params.js.map +1 -0
  661. package/dist/segment-system.d.ts +75 -0
  662. package/dist/segment-system.d.ts.map +1 -0
  663. package/dist/segment-system.js +336 -0
  664. package/dist/segment-system.js.map +1 -0
  665. package/dist/server/context.d.ts +245 -0
  666. package/dist/server/context.d.ts.map +1 -0
  667. package/dist/server/context.js +197 -0
  668. package/dist/server/context.js.map +1 -0
  669. package/dist/server/fetchable-loader-store.d.ts +18 -0
  670. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  671. package/dist/server/fetchable-loader-store.js +18 -0
  672. package/dist/server/fetchable-loader-store.js.map +1 -0
  673. package/dist/server/handle-store.d.ts +85 -0
  674. package/dist/server/handle-store.d.ts.map +1 -0
  675. package/dist/server/handle-store.js +142 -0
  676. package/dist/server/handle-store.js.map +1 -0
  677. package/dist/server/loader-registry.d.ts +55 -0
  678. package/dist/server/loader-registry.d.ts.map +1 -0
  679. package/dist/server/loader-registry.js +132 -0
  680. package/dist/server/loader-registry.js.map +1 -0
  681. package/dist/server/request-context.d.ts +226 -0
  682. package/dist/server/request-context.d.ts.map +1 -0
  683. package/dist/server/request-context.js +290 -0
  684. package/dist/server/request-context.js.map +1 -0
  685. package/dist/server/root-layout.d.ts +4 -0
  686. package/dist/server/root-layout.d.ts.map +1 -0
  687. package/dist/server/root-layout.js +5 -0
  688. package/dist/server/root-layout.js.map +1 -0
  689. package/dist/server.d.ts +15 -0
  690. package/dist/server.d.ts.map +1 -0
  691. package/dist/server.js +20 -0
  692. package/dist/server.js.map +1 -0
  693. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  697. package/dist/ssr/index.d.ts +98 -0
  698. package/dist/ssr/index.d.ts.map +1 -0
  699. package/dist/ssr/index.js +158 -0
  700. package/dist/ssr/index.js.map +1 -0
  701. package/dist/static-handler.d.ts +50 -0
  702. package/dist/static-handler.d.ts.map +1 -0
  703. package/dist/static-handler.gen.d.ts +5 -0
  704. package/dist/static-handler.gen.d.ts.map +1 -0
  705. package/dist/static-handler.gen.js +5 -0
  706. package/dist/static-handler.gen.js.map +1 -0
  707. package/dist/static-handler.js +29 -0
  708. package/dist/static-handler.js.map +1 -0
  709. package/dist/theme/ThemeProvider.d.ts +20 -0
  710. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  711. package/dist/theme/ThemeProvider.js +240 -0
  712. package/dist/theme/ThemeProvider.js.map +1 -0
  713. package/dist/theme/ThemeScript.d.ts +48 -0
  714. package/dist/theme/ThemeScript.d.ts.map +1 -0
  715. package/dist/theme/ThemeScript.js +13 -0
  716. package/dist/theme/ThemeScript.js.map +1 -0
  717. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  718. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  719. package/dist/theme/__tests__/theme.test.js +103 -0
  720. package/dist/theme/__tests__/theme.test.js.map +1 -0
  721. package/dist/theme/constants.d.ts +29 -0
  722. package/dist/theme/constants.d.ts.map +1 -0
  723. package/dist/theme/constants.js +48 -0
  724. package/dist/theme/constants.js.map +1 -0
  725. package/dist/theme/index.d.ts +31 -0
  726. package/dist/theme/index.d.ts.map +1 -0
  727. package/dist/theme/index.js +36 -0
  728. package/dist/theme/index.js.map +1 -0
  729. package/dist/theme/theme-context.d.ts +40 -0
  730. package/dist/theme/theme-context.d.ts.map +1 -0
  731. package/dist/theme/theme-context.js +60 -0
  732. package/dist/theme/theme-context.js.map +1 -0
  733. package/dist/theme/theme-script.d.ts +27 -0
  734. package/dist/theme/theme-script.d.ts.map +1 -0
  735. package/dist/theme/theme-script.js +147 -0
  736. package/dist/theme/theme-script.js.map +1 -0
  737. package/dist/theme/types.d.ts +163 -0
  738. package/dist/theme/types.d.ts.map +1 -0
  739. package/dist/theme/types.js +11 -0
  740. package/dist/theme/types.js.map +1 -0
  741. package/dist/theme/use-theme.d.ts +12 -0
  742. package/dist/theme/use-theme.d.ts.map +1 -0
  743. package/dist/theme/use-theme.js +40 -0
  744. package/dist/theme/use-theme.js.map +1 -0
  745. package/dist/types.d.ts +1479 -0
  746. package/dist/types.d.ts.map +1 -0
  747. package/dist/types.js +10 -0
  748. package/dist/types.js.map +1 -0
  749. package/dist/urls.d.ts +441 -0
  750. package/dist/urls.d.ts.map +1 -0
  751. package/dist/urls.gen.d.ts +8 -0
  752. package/dist/urls.gen.d.ts.map +1 -0
  753. package/dist/urls.gen.js +8 -0
  754. package/dist/urls.gen.js.map +1 -0
  755. package/dist/urls.js +443 -0
  756. package/dist/urls.js.map +1 -0
  757. package/dist/use-loader.d.ts +127 -0
  758. package/dist/use-loader.d.ts.map +1 -0
  759. package/dist/use-loader.js +237 -0
  760. package/dist/use-loader.js.map +1 -0
  761. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  762. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  765. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  766. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  769. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  770. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  773. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  774. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  776. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  777. package/dist/vite/ast-handler-extract.d.ts +49 -0
  778. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  779. package/dist/vite/ast-handler-extract.js +249 -0
  780. package/dist/vite/ast-handler-extract.js.map +1 -0
  781. package/dist/vite/expose-action-id.d.ts +19 -0
  782. package/dist/vite/expose-action-id.d.ts.map +1 -0
  783. package/dist/vite/expose-action-id.js +250 -0
  784. package/dist/vite/expose-action-id.js.map +1 -0
  785. package/dist/vite/expose-id-utils.d.ts +69 -0
  786. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  787. package/dist/vite/expose-id-utils.js +289 -0
  788. package/dist/vite/expose-id-utils.js.map +1 -0
  789. package/dist/vite/expose-internal-ids.d.ts +22 -0
  790. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  791. package/dist/vite/expose-internal-ids.js +886 -0
  792. package/dist/vite/expose-internal-ids.js.map +1 -0
  793. package/dist/vite/index.d.ts +149 -0
  794. package/dist/vite/index.d.ts.map +1 -0
  795. package/dist/vite/index.js +307 -26
  796. package/dist/vite/index.js.bak +5448 -0
  797. package/dist/vite/index.js.map +1 -0
  798. package/dist/vite/index.named-routes.gen.ts +103 -0
  799. package/dist/vite/package-resolution.d.ts +43 -0
  800. package/dist/vite/package-resolution.d.ts.map +1 -0
  801. package/dist/vite/package-resolution.js +112 -0
  802. package/dist/vite/package-resolution.js.map +1 -0
  803. package/dist/vite/virtual-entries.d.ts +25 -0
  804. package/dist/vite/virtual-entries.d.ts.map +1 -0
  805. package/dist/vite/virtual-entries.js +110 -0
  806. package/dist/vite/virtual-entries.js.map +1 -0
  807. package/package.json +19 -18
  808. package/skills/breadcrumbs/SKILL.md +60 -0
  809. package/skills/server-actions/SKILL.md +25 -1
  810. package/skills/testing/SKILL.md +17 -17
  811. package/skills/testing/cache-prerender.md +29 -3
  812. package/skills/testing/flight.md +13 -10
  813. package/skills/testing/render-handler.md +3 -0
  814. package/skills/testing/server-tree.md +1 -1
  815. package/skills/testing/setup.md +1 -1
  816. package/src/browser/partial-update.ts +22 -1
  817. package/src/browser/react/use-router.ts +2 -1
  818. package/src/browser/rsc-router.tsx +8 -1
  819. package/src/browser/server-action-bridge.ts +51 -3
  820. package/src/browser/types.ts +23 -4
  821. package/src/browser/validate-redirect-origin.ts +43 -15
  822. package/src/build/index.ts +8 -9
  823. package/src/build/route-trie.ts +43 -11
  824. package/src/cache/cache-runtime.ts +21 -0
  825. package/src/cache/document-cache.ts +10 -0
  826. package/src/cache/profile-registry.ts +6 -34
  827. package/src/client.rsc.tsx +3 -0
  828. package/src/client.tsx +5 -0
  829. package/src/context-var.ts +12 -0
  830. package/src/defer.ts +196 -0
  831. package/src/handles/breadcrumbs.ts +16 -5
  832. package/src/index.rsc.ts +7 -0
  833. package/src/index.ts +7 -0
  834. package/src/redirect-origin.ts +100 -0
  835. package/src/route-definition/redirect.ts +32 -8
  836. package/src/route-definition/resolve-handler-use.ts +6 -0
  837. package/src/router/find-match.ts +0 -1
  838. package/src/router/loader-resolution.ts +22 -21
  839. package/src/router/match-middleware/cache-lookup.ts +95 -125
  840. package/src/router/match-middleware/segment-resolution.ts +0 -1
  841. package/src/router/middleware-types.ts +0 -1
  842. package/src/router/middleware.ts +71 -31
  843. package/src/router/pattern-matching.ts +4 -23
  844. package/src/router/prerender-match.ts +27 -6
  845. package/src/router/revalidation.ts +9 -4
  846. package/src/router/route-snapshot.ts +0 -1
  847. package/src/router/router-context.ts +0 -1
  848. package/src/router/router-interfaces.ts +10 -0
  849. package/src/router/segment-resolution/loader-cache.ts +25 -10
  850. package/src/router/segment-resolution/revalidation.ts +185 -243
  851. package/src/router/segment-wrappers.ts +0 -3
  852. package/src/router/trie-matching.ts +3 -5
  853. package/src/router.ts +4 -9
  854. package/src/rsc/handler-context.ts +1 -0
  855. package/src/rsc/handler.ts +9 -2
  856. package/src/rsc/helpers.ts +56 -3
  857. package/src/rsc/json-route-result.ts +38 -0
  858. package/src/rsc/origin-guard.ts +10 -4
  859. package/src/rsc/progressive-enhancement.ts +8 -0
  860. package/src/rsc/redirect-guard.ts +99 -0
  861. package/src/rsc/response-route-handler.ts +23 -18
  862. package/src/rsc/server-action.ts +4 -1
  863. package/src/rsc/types.ts +6 -2
  864. package/src/server/request-context.ts +22 -13
  865. package/src/testing/cache-status.ts +44 -1
  866. package/src/testing/dispatch.ts +43 -6
  867. package/src/testing/e2e/index.ts +1 -0
  868. package/src/testing/flight.ts +48 -2
  869. package/src/testing/index.ts +1 -0
  870. package/src/testing/render-handler.ts +31 -12
  871. package/src/testing/render-route.tsx +75 -13
  872. package/src/types/handler-context.ts +28 -1
  873. package/src/vite/discovery/discover-routers.ts +22 -11
  874. package/src/vite/discovery/prerender-collection.ts +2 -4
  875. package/src/vite/discovery/state.ts +5 -0
  876. package/src/vite/plugin-types.ts +32 -8
  877. package/src/vite/plugins/refresh-cmd.ts +1 -1
  878. package/src/vite/plugins/use-cache-transform.ts +21 -10
  879. package/src/vite/rango.ts +1 -0
  880. package/src/vite/router-discovery.ts +7 -0
  881. package/src/router/middleware-cookies.ts +0 -42
@@ -14,6 +14,7 @@ import {
14
14
  getParallelEntries,
15
15
  getParallelSlotEntries,
16
16
  type EntryData,
17
+ type ParallelEntryData,
17
18
  } from "../../server/context";
18
19
  import type {
19
20
  HandlerContext,
@@ -386,6 +387,97 @@ export function buildEntryRevalidateMap(
386
387
  return map;
387
388
  }
388
389
 
390
+ /**
391
+ * Resolve the component for a single parallel slot on the revalidation path.
392
+ * Pure component resolution shared verbatim by
393
+ * resolveParallelSegmentsWithRevalidation and the orphan-inlined loop in
394
+ * resolveOrphanLayoutWithRevalidation: try the static slot cache, else run the
395
+ * slot handler (pinning _currentSegmentId to the slot id so handle pushes land
396
+ * in the slot's own bucket, and wrapping a streamed handler). Returns the
397
+ * resolved component and whether the handler actually ran. Does NOT touch the
398
+ * revalidate-default policy (the caller decides shouldResolve, including the
399
+ * orphan-vs-main defaultOverride divergence) or loader-resolution ordering.
400
+ */
401
+ async function resolveParallelSlotComponent<TEnv>(args: {
402
+ shouldResolve: boolean;
403
+ parallelEntry: ParallelEntryData;
404
+ slot: string;
405
+ parallelId: string;
406
+ handler:
407
+ | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)
408
+ | ReactNode
409
+ | undefined;
410
+ context: HandlerContext<any, TEnv>;
411
+ deps: SegmentResolutionDeps<TEnv>;
412
+ routeKey: string;
413
+ params: Record<string, string>;
414
+ }): Promise<{ component: ReactNode | undefined; handlerRan: boolean }> {
415
+ const {
416
+ shouldResolve,
417
+ parallelEntry,
418
+ slot,
419
+ parallelId,
420
+ handler,
421
+ context,
422
+ deps,
423
+ routeKey,
424
+ params,
425
+ } = args;
426
+
427
+ let component: ReactNode | undefined;
428
+ let handlerRan = false;
429
+ if (shouldResolve) {
430
+ component = await tryStaticSlot(parallelEntry, slot, parallelId);
431
+ // tryStaticSlot returning a value means the static cache supplied the
432
+ // component — handler did NOT run. handlerRan stays false.
433
+ }
434
+ if (component === undefined) {
435
+ const hasLoadingFallback =
436
+ parallelEntry.loading !== undefined && parallelEntry.loading !== false;
437
+ if (!shouldResolve) {
438
+ component = null;
439
+ } else if (handler === undefined) {
440
+ // Handler evicted (production static slot) but static lookup missed.
441
+ // Nothing to render — use null so the client keeps its cached version.
442
+ component = null;
443
+ } else {
444
+ // Slot-keyed pushes — slot owns its own bucket, parent layout owns its
445
+ // own. On slot-only revalidations the partial merge updates only the
446
+ // slot's bucket; the parent's bucket stays intact.
447
+ (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
448
+ parallelId;
449
+ handlerRan = true;
450
+ if (hasLoadingFallback) {
451
+ const result =
452
+ typeof handler === "function" ? handler(context) : handler;
453
+ if (result instanceof Promise) {
454
+ warnOnStreamedResponse(result, parallelId);
455
+ const tracked = deps.trackHandler(result, {
456
+ segmentId: parallelId,
457
+ segmentType: "parallel",
458
+ });
459
+ observeStreamedHandler(
460
+ tracked,
461
+ parallelId,
462
+ "parallel",
463
+ context.pathname,
464
+ routeKey,
465
+ params,
466
+ );
467
+ component = tracked as ReactNode;
468
+ } else {
469
+ component = result as ReactNode;
470
+ }
471
+ } else {
472
+ component =
473
+ typeof handler === "function" ? await handler(context) : handler;
474
+ }
475
+ }
476
+ }
477
+
478
+ return { component, handlerRan };
479
+ }
480
+
389
481
  /**
390
482
  * Resolve parallel segments with revalidation.
391
483
  */
@@ -403,9 +495,30 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
403
495
  deps: SegmentResolutionDeps<TEnv>,
404
496
  actionContext?: ActionContext,
405
497
  stale?: boolean,
498
+ options?: {
499
+ /**
500
+ * Seed for an unknown parent-chain slot (slot not in clientSegmentIds) when
501
+ * there are no deciding revalidate fns. "type-derived" (default, main path):
502
+ * `belongsToRoute || isNewParent`. "force-render" (orphan path): always
503
+ * `true` — orphan parallels always belong to the route and must render
504
+ * unless the user opts out via revalidate(); the #482 blank-parent-chain-
505
+ * slot guard.
506
+ */
507
+ parentChainDefault?: "type-derived" | "force-render";
508
+ /**
509
+ * When a slot's loaders are resolved relative to the slot segment push.
510
+ * "after" (default, main path) pushes the slot segment first; "before"
511
+ * (orphan path) resolves loaders first. This only changes the
512
+ * segments/matchedIds emission ORDER (the client reconciler is insensitive
513
+ * to it: loader sub-ids are filtered out and slots are re-grouped by parent).
514
+ */
515
+ loaderOrder?: "after" | "before";
516
+ },
406
517
  ): Promise<SegmentRevalidationResult> {
407
518
  const segments: ResolvedSegment[] = [];
408
519
  const matchedIds: string[] = [];
520
+ const parentChainDefault = options?.parentChainDefault ?? "type-derived";
521
+ const loaderOrder = options?.loaderOrder ?? "after";
409
522
 
410
523
  const resolvedParallelEntries = new Set<string>();
411
524
  for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
@@ -430,6 +543,34 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
430
543
 
431
544
  const isFullRefetch = clientSegmentIds.size === 0;
432
545
  const isNewParent = !clientSegmentIds.has(entry.shortCode);
546
+
547
+ // A slot's loaders (never cached) are deduped per parallel entry and
548
+ // emitted either before or after the slot segment per loaderOrder.
549
+ const resolveSlotLoaders = async () => {
550
+ if (resolvedParallelEntries.has(parallelEntry.id)) return;
551
+ const loaderResult = await resolveLoadersWithRevalidation(
552
+ parallelEntry,
553
+ context,
554
+ belongsToRoute,
555
+ clientSegmentIds,
556
+ prevParams,
557
+ request,
558
+ prevUrl,
559
+ nextUrl,
560
+ routeKey,
561
+ deps,
562
+ actionContext,
563
+ entry.shortCode,
564
+ stale,
565
+ );
566
+ segments.push(...loaderResult.segments);
567
+ matchedIds.push(...loaderResult.matchedIds);
568
+ resolvedParallelEntries.add(parallelEntry.id);
569
+ };
570
+
571
+ if (loaderOrder === "before") {
572
+ await resolveSlotLoaders();
573
+ }
433
574
  // Always announce the slot in matchedIds — it's unconditionally appended
434
575
  // to `segments` below, and a segment present in segments but missing from
435
576
  // matched lets the client prune it (then it's missing from clientSegmentIds
@@ -449,7 +590,10 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
449
590
  // soft chain seeds with the right "new segment" / "parent-chain" value.
450
591
  let defaultOverride: { value: boolean; reason: string } | undefined;
451
592
  if (!clientSegmentIds.has(parallelId)) {
452
- const value = belongsToRoute || isNewParent;
593
+ const value =
594
+ parentChainDefault === "force-render"
595
+ ? true
596
+ : belongsToRoute || isNewParent;
453
597
  defaultOverride = {
454
598
  value,
455
599
  reason: value ? "new-segment" : "skip-parent-chain",
@@ -497,56 +641,17 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
497
641
  shouldResolve,
498
642
  );
499
643
 
500
- let component: ReactNode | undefined;
501
- let handlerRan = false;
502
- if (shouldResolve) {
503
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
504
- // tryStaticSlot returning a value means the static cache supplied the
505
- // component — handler did NOT run. handlerRan stays false.
506
- }
507
- if (component === undefined) {
508
- const hasLoadingFallback =
509
- parallelEntry.loading !== undefined && parallelEntry.loading !== false;
510
- if (!shouldResolve) {
511
- component = null;
512
- } else if (handler === undefined) {
513
- // Handler evicted (production static slot) but static lookup missed.
514
- // Nothing to render — use null so the client keeps its cached version.
515
- component = null;
516
- } else {
517
- // Slot-keyed pushes — slot owns its own bucket, parent layout owns
518
- // its own. On slot-only revalidations the partial merge updates only
519
- // the slot's bucket; the parent's bucket stays intact.
520
- (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
521
- parallelId;
522
- handlerRan = true;
523
- if (hasLoadingFallback) {
524
- const result =
525
- typeof handler === "function" ? handler(context) : handler;
526
- if (result instanceof Promise) {
527
- warnOnStreamedResponse(result, parallelId);
528
- const tracked = deps.trackHandler(result, {
529
- segmentId: parallelId,
530
- segmentType: "parallel",
531
- });
532
- observeStreamedHandler(
533
- tracked,
534
- parallelId,
535
- "parallel",
536
- context.pathname,
537
- routeKey,
538
- params,
539
- );
540
- component = tracked as ReactNode;
541
- } else {
542
- component = result as ReactNode;
543
- }
544
- } else {
545
- component =
546
- typeof handler === "function" ? await handler(context) : handler;
547
- }
548
- }
549
- }
644
+ const { component, handlerRan } = await resolveParallelSlotComponent({
645
+ shouldResolve,
646
+ parallelEntry,
647
+ slot,
648
+ parallelId,
649
+ handler,
650
+ context,
651
+ deps,
652
+ routeKey,
653
+ params,
654
+ });
550
655
 
551
656
  segments.push({
552
657
  id: parallelId,
@@ -569,28 +674,9 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
569
674
  : {}),
570
675
  });
571
676
 
572
- if (resolvedParallelEntries.has(parallelEntry.id)) {
573
- continue;
677
+ if (loaderOrder === "after") {
678
+ await resolveSlotLoaders();
574
679
  }
575
-
576
- const loaderResult = await resolveLoadersWithRevalidation(
577
- parallelEntry,
578
- context,
579
- belongsToRoute,
580
- clientSegmentIds,
581
- prevParams,
582
- request,
583
- prevUrl,
584
- nextUrl,
585
- routeKey,
586
- deps,
587
- actionContext,
588
- entry.shortCode,
589
- stale,
590
- );
591
- segments.push(...loaderResult.segments);
592
- matchedIds.push(...loaderResult.matchedIds);
593
- resolvedParallelEntries.add(parallelEntry.id);
594
680
  }
595
681
 
596
682
  return { segments, matchedIds };
@@ -798,7 +884,6 @@ export async function resolveSegmentWithRevalidation<TEnv>(
798
884
  request: Request,
799
885
  prevUrl: URL,
800
886
  nextUrl: URL,
801
- loaderPromises: Map<string, Promise<any>>,
802
887
  deps: SegmentResolutionDeps<TEnv>,
803
888
  actionContext?: ActionContext,
804
889
  stale?: boolean,
@@ -1113,174 +1198,33 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1113
1198
  ...(orphan.mountPath ? { mountPath: orphan.mountPath } : {}),
1114
1199
  });
1115
1200
 
1116
- const resolvedParallelEntries = new Set<string>();
1117
- for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
1118
- orphan.parallel,
1119
- )) {
1120
- invariant(
1121
- parallelEntry.type === "parallel",
1122
- `Expected parallel entry, got: ${parallelEntry.type}`,
1123
- );
1124
-
1125
- if (!resolvedParallelEntries.has(parallelEntry.id)) {
1126
- // shortCodeOverride must match the parent layout, not the parallel entry.
1127
- const loaderResult = await resolveLoadersWithRevalidation(
1128
- parallelEntry,
1129
- context,
1130
- belongsToRoute,
1131
- clientSegmentIds,
1132
- prevParams,
1133
- request,
1134
- prevUrl,
1135
- nextUrl,
1136
- routeKey,
1137
- deps,
1138
- actionContext,
1139
- orphan.shortCode,
1140
- stale,
1141
- );
1142
- segments.push(...loaderResult.segments);
1143
- matchedIds.push(...loaderResult.matchedIds);
1144
- resolvedParallelEntries.add(parallelEntry.id);
1145
- }
1146
-
1147
- const slots = parallelEntry.handler as Record<
1148
- `@${string}`,
1149
- | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)
1150
- | ReactNode
1151
- >;
1152
- // Handler may be undefined in production after static handler eviction.
1153
- const handler = slots[slot];
1154
-
1155
- // Use orphan.shortCode (the parent layout) to match the SSR path
1156
- // (resolveParallelEntry receives parentShortCode = orphan.shortCode).
1157
- // Using parallelEntry.shortCode would generate IDs the client doesn't know about.
1158
- const parallelId = `${orphan.shortCode}.${slot}`;
1159
- matchedIds.push(parallelId);
1160
-
1161
- const isFullRefetch = clientSegmentIds.size === 0;
1162
- let shouldResolve: boolean;
1163
- if (isFullRefetch) {
1164
- // Same load-bearing rationale as the main parallel path: full refetch
1165
- // means the client has nothing to fall back to, so the slot must render.
1166
- traceFullRefetchedParallelSlot(parallelId, belongsToRoute);
1167
- shouldResolve = true;
1168
- } else {
1169
- // When slot is unknown to the client, seed the soft chain with `true`
1170
- // (orphan parallels always belong to the route — we want them rendered
1171
- // unless the user explicitly opts out via revalidate()).
1172
- const defaultOverride = clientSegmentIds.has(parallelId)
1173
- ? undefined
1174
- : { value: true, reason: "new-segment" };
1175
-
1176
- const dummySegment: ResolvedSegment = {
1177
- id: parallelId,
1178
- namespace: parallelEntry.id,
1179
- type: "parallel",
1180
- index: 0,
1181
- component: null as any,
1182
- params,
1183
- slot,
1184
- belongsToRoute,
1185
- parallelName: `${parallelEntry.id}.${slot}`,
1186
- ...(parallelEntry.mountPath
1187
- ? { mountPath: parallelEntry.mountPath }
1188
- : {}),
1189
- };
1190
-
1191
- shouldResolve = await evaluateRevalidation({
1192
- segment: dummySegment,
1193
- prevParams,
1194
- getPrevSegment: null,
1195
- request,
1196
- prevUrl,
1197
- nextUrl,
1198
- revalidations: parallelEntry.revalidate.map((fn, i) => ({
1199
- name: `revalidate${i}`,
1200
- fn,
1201
- })),
1202
- routeKey,
1203
- context,
1204
- actionContext,
1205
- stale,
1206
- traceSource: "parallel",
1207
- defaultOverride,
1208
- });
1209
- }
1210
- emitRevalidationDecision(
1211
- parallelId,
1212
- context.pathname,
1213
- routeKey,
1214
- shouldResolve,
1215
- );
1216
-
1217
- let component: ReactNode | undefined;
1218
- let handlerRan = false;
1219
- if (shouldResolve) {
1220
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
1221
- }
1222
- if (component === undefined) {
1223
- const hasLoadingFallback =
1224
- parallelEntry.loading !== undefined && parallelEntry.loading !== false;
1225
- if (!shouldResolve) {
1226
- component = null;
1227
- } else if (handler === undefined) {
1228
- // Handler evicted (production static slot) but static lookup missed.
1229
- component = null;
1230
- } else {
1231
- // Slot-keyed pushes — see resolveParallelSegmentsWithRevalidation.
1232
- (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
1233
- parallelId;
1234
- handlerRan = true;
1235
- if (hasLoadingFallback) {
1236
- const result =
1237
- typeof handler === "function" ? handler(context) : handler;
1238
- if (result instanceof Promise) {
1239
- warnOnStreamedResponse(result, parallelId);
1240
- const tracked = deps.trackHandler(result, {
1241
- segmentId: parallelId,
1242
- segmentType: "parallel",
1243
- });
1244
- observeStreamedHandler(
1245
- tracked,
1246
- parallelId,
1247
- "parallel",
1248
- context.pathname,
1249
- routeKey,
1250
- params,
1251
- );
1252
- component = tracked as ReactNode;
1253
- } else {
1254
- component = result as ReactNode;
1255
- }
1256
- } else {
1257
- component =
1258
- typeof handler === "function" ? await handler(context) : handler;
1259
- }
1260
- }
1261
- }
1262
-
1263
- segments.push({
1264
- id: parallelId,
1265
- namespace: parallelEntry.id,
1266
- type: "parallel",
1267
- index: 0,
1268
- component,
1269
- loading: parallelEntry.loading === false ? null : parallelEntry.loading,
1270
- transition: applyViewTransitionDefault(
1271
- parallelEntry.transition,
1272
- deps.viewTransitionDefault,
1273
- ),
1274
- params,
1275
- slot,
1276
- _handlerRan: handlerRan,
1277
- belongsToRoute,
1278
- parallelName: `${parallelEntry.id}.${slot}`,
1279
- ...(parallelEntry.mountPath
1280
- ? { mountPath: parallelEntry.mountPath }
1281
- : {}),
1282
- });
1283
- }
1201
+ // Resolve the orphan layout's parallel slots through the shared main-path
1202
+ // helper. The orphan policy is carried by explicit args, byte-for-byte:
1203
+ // - parentChainDefault "force-render": an unknown parent-chain slot seeds
1204
+ // `true` (orphan parallels always belong to the route — the #482 guard),
1205
+ // where the main path would seed `belongsToRoute || isNewParent`.
1206
+ // - loaderOrder "before": a slot's loaders are emitted before the slot
1207
+ // segment, matching the prior inlined order.
1208
+ // `entry.shortCode` inside the helper is `orphan.shortCode` (orphan is passed
1209
+ // as `entry`), so the parallel ids + loader shortCodeOverride are unchanged.
1210
+ const parallelResult = await resolveParallelSegmentsWithRevalidation(
1211
+ orphan,
1212
+ params,
1213
+ context,
1214
+ belongsToRoute,
1215
+ clientSegmentIds,
1216
+ prevParams,
1217
+ request,
1218
+ prevUrl,
1219
+ nextUrl,
1220
+ routeKey,
1221
+ deps,
1222
+ actionContext,
1223
+ stale,
1224
+ { parentChainDefault: "force-render", loaderOrder: "before" },
1225
+ );
1226
+ segments.push(...parallelResult.segments);
1227
+ matchedIds.push(...parallelResult.matchedIds);
1284
1228
 
1285
1229
  return { segments, matchedIds };
1286
1230
  }
@@ -1298,7 +1242,6 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1298
1242
  request: Request,
1299
1243
  prevUrl: URL,
1300
1244
  nextUrl: URL,
1301
- loaderPromises: Map<string, Promise<any>>,
1302
1245
  actionContext: ActionContext | undefined,
1303
1246
  interceptResult: { intercept: any; entry: EntryData } | null,
1304
1247
  localRouteName: string,
@@ -1350,7 +1293,6 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1350
1293
  request,
1351
1294
  prevUrl,
1352
1295
  nextUrl,
1353
- loaderPromises,
1354
1296
  deps,
1355
1297
  actionContext,
1356
1298
  stale,
@@ -68,7 +68,6 @@ export interface SegmentWrappers<TEnv = any> {
68
68
  request: Request,
69
69
  prevUrl: URL,
70
70
  nextUrl: URL,
71
- loaderPromises: Map<string, Promise<any>>,
72
71
  actionContext:
73
72
  | {
74
73
  actionId?: string;
@@ -192,7 +191,6 @@ export function createSegmentWrappers<TEnv = any>(
192
191
  request: Request,
193
192
  prevUrl: URL,
194
193
  nextUrl: URL,
195
- loaderPromises: Map<string, Promise<any>>,
196
194
  actionContext:
197
195
  | {
198
196
  actionId?: string;
@@ -216,7 +214,6 @@ export function createSegmentWrappers<TEnv = any>(
216
214
  request,
217
215
  prevUrl,
218
216
  nextUrl,
219
- loaderPromises,
220
217
  actionContext,
221
218
  interceptResult,
222
219
  localRouteName,
@@ -15,10 +15,6 @@ export interface TrieMatchResult {
15
15
  sp: string;
16
16
  /** Matched route params */
17
17
  params: Record<string, string>;
18
- /** Optional param names declared on the route. Absent params are omitted
19
- * from `params` (read as `undefined`), matching the
20
- * `ExtractParams<"/:locale?/...">` type. */
21
- optionalParams?: string[];
22
18
  /** Redirect target if trailing slash requires it */
23
19
  redirectTo?: string;
24
20
  /** Route has pre-rendered data available */
@@ -182,6 +178,9 @@ function walkTrie(
182
178
  }
183
179
 
184
180
  if (node.xp) {
181
+ // node.xp keys are pre-sorted longest-suffix-first at build time
182
+ // (route-trie.ts sortSuffixParams), so the first match is the most specific
183
+ // suffix: `/app.min.js` matches `:file.min.js` before `:file.js`.
185
184
  for (const suffix in node.xp) {
186
185
  if (segment.endsWith(suffix) && segment.length > suffix.length) {
187
186
  const paramValue = segment.slice(0, -suffix.length);
@@ -274,7 +273,6 @@ function validateAndBuild(
274
273
  params,
275
274
  };
276
275
 
277
- if (leaf.op) result.optionalParams = leaf.op;
278
276
  if (redirectTo) result.redirectTo = redirectTo;
279
277
  if (leaf.pr) result.pr = true;
280
278
  if (leaf.pt) result.pt = true;
package/src/router.ts CHANGED
@@ -1,9 +1,6 @@
1
1
  import { type ReactNode } from "react";
2
2
  import { createCacheScope } from "./cache/cache-scope.js";
3
- import {
4
- setCacheProfiles,
5
- resolveCacheProfiles,
6
- } from "./cache/profile-registry.js";
3
+ import { resolveCacheProfiles } from "./cache/profile-registry.js";
7
4
  import { isCachedFunction } from "./cache/taint.js";
8
5
  import { assertClientComponent } from "./component-utils.js";
9
6
  import { DefaultDocument } from "./components/DefaultDocument.js";
@@ -181,11 +178,10 @@ export function createRouter<TEnv = any>(
181
178
  // Resolve telemetry sink (no-op when not configured)
182
179
  const telemetry = resolveSink(telemetrySink);
183
180
 
184
- // Resolve cache profiles: merge user config with guaranteed default profile.
185
- // This resolved map is both stored on the router (for per-request context)
186
- // and written to the global registry (for DSL-time cache("profileName")).
181
+ // Resolve cache profiles: merge user config with the guaranteed default
182
+ // profile. This resolved map is threaded onto each request context; the
183
+ // "use cache: <profile>" runtime path reads it request-scoped.
187
184
  const resolvedCacheProfiles = resolveCacheProfiles(cacheProfilesOption);
188
- setCacheProfiles(resolvedCacheProfiles);
189
185
 
190
186
  // Source file: prefer Vite-injected path (zero cost), fall back to
191
187
  // stack trace parsing for non-Vite environments (e.g. tests).
@@ -355,7 +351,6 @@ export function createRouter<TEnv = any>(
355
351
  regex,
356
352
  paramNames,
357
353
  handler,
358
- mountPrefix,
359
354
  });
360
355
  }
361
356
 
@@ -31,6 +31,7 @@ export interface HandlerContext<TEnv = unknown> {
31
31
  createRedirectFlightResponse: (
32
32
  redirectUrl: string,
33
33
  locationState?: Record<string, unknown>,
34
+ external?: boolean,
34
35
  ) => Response;
35
36
 
36
37
  /**
@@ -31,6 +31,7 @@ import {
31
31
  interceptRedirectForPartial,
32
32
  buildRouteMiddlewareEntries,
33
33
  } from "./helpers.js";
34
+ import { guardOutgoingRedirect } from "./redirect-guard.js";
34
35
  import { isWebSocketUpgradeResponse } from "../response-utils.js";
35
36
  import {
36
37
  handleResponseRoute,
@@ -292,12 +293,13 @@ export function createRSCHandler<
292
293
  function createRedirectFlightResponse(
293
294
  redirectUrl: string,
294
295
  locationState?: Record<string, unknown>,
296
+ external?: boolean,
295
297
  ): Response {
296
298
  const redirectPayload: RscPayload = {
297
299
  metadata: {
298
300
  pathname: redirectUrl,
299
301
  segments: [],
300
- redirect: { url: redirectUrl },
302
+ redirect: { url: redirectUrl, ...(external && { external: true }) },
301
303
  ...(locationState && { locationState }),
302
304
  },
303
305
  };
@@ -570,7 +572,12 @@ export function createRSCHandler<
570
572
  response.headers.set("Server-Timing", fullTiming);
571
573
  }
572
574
 
573
- return response;
575
+ // Single open-redirect chokepoint: every response (PE, full-page,
576
+ // middleware short-circuit, response-route) funnels through here, so
577
+ // guarding browser-followed (3xx) redirects once covers them all and any
578
+ // future redirect exit. Soft SPA/Flight redirects are 200/204 and pass
579
+ // through untouched (validated client-side instead).
580
+ return guardOutgoingRedirect(response, url.origin, router.basename);
574
581
  });
575
582
  };
576
583