@rangojs/router 0.0.0-experimental.c65e9248 → 0.0.0-experimental.c7e2ee4c

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 (984) hide show
  1. package/README.md +188 -35
  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 +133 -47
  81. package/dist/bin/rango.js.map +1 -0
  82. package/dist/browser/event-controller.d.ts +191 -0
  83. package/dist/browser/event-controller.d.ts.map +1 -0
  84. package/dist/browser/event-controller.js +559 -0
  85. package/dist/browser/event-controller.js.map +1 -0
  86. package/dist/browser/index.d.ts +2 -0
  87. package/dist/browser/index.d.ts.map +1 -0
  88. package/dist/browser/index.js +14 -0
  89. package/dist/browser/index.js.map +1 -0
  90. package/dist/browser/link-interceptor.d.ts +38 -0
  91. package/dist/browser/link-interceptor.d.ts.map +1 -0
  92. package/dist/browser/link-interceptor.js +99 -0
  93. package/dist/browser/link-interceptor.js.map +1 -0
  94. package/dist/browser/logging.d.ts +10 -0
  95. package/dist/browser/logging.d.ts.map +1 -0
  96. package/dist/browser/logging.js +29 -0
  97. package/dist/browser/logging.js.map +1 -0
  98. package/dist/browser/lru-cache.d.ts +17 -0
  99. package/dist/browser/lru-cache.d.ts.map +1 -0
  100. package/dist/browser/lru-cache.js +50 -0
  101. package/dist/browser/lru-cache.js.map +1 -0
  102. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  103. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  104. package/dist/browser/merge-segment-loaders.js +102 -0
  105. package/dist/browser/merge-segment-loaders.js.map +1 -0
  106. package/dist/browser/navigation-bridge.d.ts +102 -0
  107. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  108. package/dist/browser/navigation-bridge.js +708 -0
  109. package/dist/browser/navigation-bridge.js.map +1 -0
  110. package/dist/browser/navigation-client.d.ts +25 -0
  111. package/dist/browser/navigation-client.d.ts.map +1 -0
  112. package/dist/browser/navigation-client.js +157 -0
  113. package/dist/browser/navigation-client.js.map +1 -0
  114. package/dist/browser/navigation-store.d.ts +101 -0
  115. package/dist/browser/navigation-store.d.ts.map +1 -0
  116. package/dist/browser/navigation-store.js +625 -0
  117. package/dist/browser/navigation-store.js.map +1 -0
  118. package/dist/browser/partial-update.d.ts +75 -0
  119. package/dist/browser/partial-update.d.ts.map +1 -0
  120. package/dist/browser/partial-update.js +426 -0
  121. package/dist/browser/partial-update.js.map +1 -0
  122. package/dist/browser/react/Link.d.ts +86 -0
  123. package/dist/browser/react/Link.d.ts.map +1 -0
  124. package/dist/browser/react/Link.js +128 -0
  125. package/dist/browser/react/Link.js.map +1 -0
  126. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  127. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  128. package/dist/browser/react/NavigationProvider.js +216 -0
  129. package/dist/browser/react/NavigationProvider.js.map +1 -0
  130. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  132. package/dist/browser/react/ScrollRestoration.js +57 -0
  133. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  134. package/dist/browser/react/context.d.ts +46 -0
  135. package/dist/browser/react/context.d.ts.map +1 -0
  136. package/dist/browser/react/context.js +10 -0
  137. package/dist/browser/react/context.js.map +1 -0
  138. package/dist/browser/react/index.d.ts +11 -0
  139. package/dist/browser/react/index.d.ts.map +1 -0
  140. package/dist/browser/react/index.js +22 -0
  141. package/dist/browser/react/index.js.map +1 -0
  142. package/dist/browser/react/location-state-shared.d.ts +63 -0
  143. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  144. package/dist/browser/react/location-state-shared.js +81 -0
  145. package/dist/browser/react/location-state-shared.js.map +1 -0
  146. package/dist/browser/react/location-state.d.ts +23 -0
  147. package/dist/browser/react/location-state.d.ts.map +1 -0
  148. package/dist/browser/react/location-state.js +29 -0
  149. package/dist/browser/react/location-state.js.map +1 -0
  150. package/dist/browser/react/mount-context.d.ts +24 -0
  151. package/dist/browser/react/mount-context.d.ts.map +1 -0
  152. package/dist/browser/react/mount-context.js +24 -0
  153. package/dist/browser/react/mount-context.js.map +1 -0
  154. package/dist/browser/react/use-action.d.ts +64 -0
  155. package/dist/browser/react/use-action.d.ts.map +1 -0
  156. package/dist/browser/react/use-action.js +134 -0
  157. package/dist/browser/react/use-action.js.map +1 -0
  158. package/dist/browser/react/use-client-cache.d.ts +41 -0
  159. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  160. package/dist/browser/react/use-client-cache.js +39 -0
  161. package/dist/browser/react/use-client-cache.js.map +1 -0
  162. package/dist/browser/react/use-handle.d.ts +31 -0
  163. package/dist/browser/react/use-handle.d.ts.map +1 -0
  164. package/dist/browser/react/use-handle.js +144 -0
  165. package/dist/browser/react/use-handle.js.map +1 -0
  166. package/dist/browser/react/use-href.d.ts +33 -0
  167. package/dist/browser/react/use-href.d.ts.map +1 -0
  168. package/dist/browser/react/use-href.js +39 -0
  169. package/dist/browser/react/use-href.js.map +1 -0
  170. package/dist/browser/react/use-link-status.d.ts +37 -0
  171. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  172. package/dist/browser/react/use-link-status.js +99 -0
  173. package/dist/browser/react/use-link-status.js.map +1 -0
  174. package/dist/browser/react/use-mount.d.ts +25 -0
  175. package/dist/browser/react/use-mount.d.ts.map +1 -0
  176. package/dist/browser/react/use-mount.js +30 -0
  177. package/dist/browser/react/use-mount.js.map +1 -0
  178. package/dist/browser/react/use-navigation.d.ts +27 -0
  179. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  180. package/dist/browser/react/use-navigation.js +87 -0
  181. package/dist/browser/react/use-navigation.js.map +1 -0
  182. package/dist/browser/react/use-segments.d.ts +38 -0
  183. package/dist/browser/react/use-segments.d.ts.map +1 -0
  184. package/dist/browser/react/use-segments.js +130 -0
  185. package/dist/browser/react/use-segments.js.map +1 -0
  186. package/dist/browser/request-controller.d.ts +26 -0
  187. package/dist/browser/request-controller.d.ts.map +1 -0
  188. package/dist/browser/request-controller.js +147 -0
  189. package/dist/browser/request-controller.js.map +1 -0
  190. package/dist/browser/rsc-router.d.ts +129 -0
  191. package/dist/browser/rsc-router.d.ts.map +1 -0
  192. package/dist/browser/rsc-router.js +195 -0
  193. package/dist/browser/rsc-router.js.map +1 -0
  194. package/dist/browser/scroll-restoration.d.ts +93 -0
  195. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  196. package/dist/browser/scroll-restoration.js +321 -0
  197. package/dist/browser/scroll-restoration.js.map +1 -0
  198. package/dist/browser/segment-structure-assert.d.ts +17 -0
  199. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  200. package/dist/browser/segment-structure-assert.js +59 -0
  201. package/dist/browser/segment-structure-assert.js.map +1 -0
  202. package/dist/browser/server-action-bridge.d.ts +26 -0
  203. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  204. package/dist/browser/server-action-bridge.js +668 -0
  205. package/dist/browser/server-action-bridge.js.map +1 -0
  206. package/dist/browser/shallow.d.ts +12 -0
  207. package/dist/browser/shallow.d.ts.map +1 -0
  208. package/dist/browser/shallow.js +34 -0
  209. package/dist/browser/shallow.js.map +1 -0
  210. package/dist/browser/types.d.ts +369 -0
  211. package/dist/browser/types.d.ts.map +1 -0
  212. package/dist/browser/types.js +2 -0
  213. package/dist/browser/types.js.map +1 -0
  214. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  216. package/dist/build/__tests__/generate-cli.test.js +237 -0
  217. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  218. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  220. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  221. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  222. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  224. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  225. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  226. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  228. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  230. package/dist/build/generate-manifest.d.ts +81 -0
  231. package/dist/build/generate-manifest.d.ts.map +1 -0
  232. package/dist/build/generate-manifest.js +276 -0
  233. package/dist/build/generate-manifest.js.map +1 -0
  234. package/dist/build/generate-route-types.d.ts +115 -0
  235. package/dist/build/generate-route-types.d.ts.map +1 -0
  236. package/dist/build/generate-route-types.js +740 -0
  237. package/dist/build/generate-route-types.js.map +1 -0
  238. package/dist/build/index.d.ts +21 -0
  239. package/dist/build/index.d.ts.map +1 -0
  240. package/dist/build/index.js +21 -0
  241. package/dist/build/index.js.map +1 -0
  242. package/dist/build/route-trie.d.ts +71 -0
  243. package/dist/build/route-trie.d.ts.map +1 -0
  244. package/dist/build/route-trie.js +175 -0
  245. package/dist/build/route-trie.js.map +1 -0
  246. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  248. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  249. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  250. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  252. package/dist/cache/__tests__/document-cache.test.js +345 -0
  253. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  258. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  260. package/dist/cache/__tests__/memory-store.test.js +367 -0
  261. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  262. package/dist/cache/cache-scope.d.ts +102 -0
  263. package/dist/cache/cache-scope.d.ts.map +1 -0
  264. package/dist/cache/cache-scope.js +440 -0
  265. package/dist/cache/cache-scope.js.map +1 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  270. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  272. package/dist/cache/cf/cf-cache-store.js +242 -0
  273. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  274. package/dist/cache/cf/index.d.ts +14 -0
  275. package/dist/cache/cf/index.d.ts.map +1 -0
  276. package/dist/cache/cf/index.js +17 -0
  277. package/dist/cache/cf/index.js.map +1 -0
  278. package/dist/cache/document-cache.d.ts +64 -0
  279. package/dist/cache/document-cache.d.ts.map +1 -0
  280. package/dist/cache/document-cache.js +228 -0
  281. package/dist/cache/document-cache.js.map +1 -0
  282. package/dist/cache/index.d.ts +19 -0
  283. package/dist/cache/index.d.ts.map +1 -0
  284. package/dist/cache/index.js +21 -0
  285. package/dist/cache/index.js.map +1 -0
  286. package/dist/cache/memory-segment-store.d.ts +110 -0
  287. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  288. package/dist/cache/memory-segment-store.js +117 -0
  289. package/dist/cache/memory-segment-store.js.map +1 -0
  290. package/dist/cache/memory-store.d.ts +41 -0
  291. package/dist/cache/memory-store.d.ts.map +1 -0
  292. package/dist/cache/memory-store.js +191 -0
  293. package/dist/cache/memory-store.js.map +1 -0
  294. package/dist/cache/types.d.ts +317 -0
  295. package/dist/cache/types.d.ts.map +1 -0
  296. package/dist/cache/types.js +12 -0
  297. package/dist/cache/types.js.map +1 -0
  298. package/dist/client.d.ts +248 -0
  299. package/dist/client.d.ts.map +1 -0
  300. package/dist/client.js +367 -0
  301. package/dist/client.js.map +1 -0
  302. package/dist/client.rsc.d.ts +26 -0
  303. package/dist/client.rsc.d.ts.map +1 -0
  304. package/dist/client.rsc.js +46 -0
  305. package/dist/client.rsc.js.map +1 -0
  306. package/dist/component-utils.d.ts +36 -0
  307. package/dist/component-utils.d.ts.map +1 -0
  308. package/dist/component-utils.js +61 -0
  309. package/dist/component-utils.js.map +1 -0
  310. package/dist/components/DefaultDocument.d.ts +13 -0
  311. package/dist/components/DefaultDocument.d.ts.map +1 -0
  312. package/dist/components/DefaultDocument.js +15 -0
  313. package/dist/components/DefaultDocument.js.map +1 -0
  314. package/dist/debug.d.ts +58 -0
  315. package/dist/debug.d.ts.map +1 -0
  316. package/dist/debug.js +157 -0
  317. package/dist/debug.js.map +1 -0
  318. package/dist/default-error-boundary.d.ts +11 -0
  319. package/dist/default-error-boundary.d.ts.map +1 -0
  320. package/dist/default-error-boundary.js +45 -0
  321. package/dist/default-error-boundary.js.map +1 -0
  322. package/dist/deps/browser.d.ts +2 -0
  323. package/dist/deps/browser.d.ts.map +1 -0
  324. package/dist/deps/browser.js +3 -0
  325. package/dist/deps/browser.js.map +1 -0
  326. package/dist/deps/html-stream-client.d.ts +2 -0
  327. package/dist/deps/html-stream-client.d.ts.map +1 -0
  328. package/dist/deps/html-stream-client.js +3 -0
  329. package/dist/deps/html-stream-client.js.map +1 -0
  330. package/dist/deps/html-stream-server.d.ts +2 -0
  331. package/dist/deps/html-stream-server.d.ts.map +1 -0
  332. package/dist/deps/html-stream-server.js +3 -0
  333. package/dist/deps/html-stream-server.js.map +1 -0
  334. package/dist/deps/rsc.d.ts +2 -0
  335. package/dist/deps/rsc.d.ts.map +1 -0
  336. package/dist/deps/rsc.js +4 -0
  337. package/dist/deps/rsc.js.map +1 -0
  338. package/dist/deps/ssr.d.ts +2 -0
  339. package/dist/deps/ssr.d.ts.map +1 -0
  340. package/dist/deps/ssr.js +3 -0
  341. package/dist/deps/ssr.js.map +1 -0
  342. package/dist/errors.d.ts +174 -0
  343. package/dist/errors.d.ts.map +1 -0
  344. package/dist/errors.js +241 -0
  345. package/dist/errors.js.map +1 -0
  346. package/dist/handle.d.ts +78 -0
  347. package/dist/handle.d.ts.map +1 -0
  348. package/dist/handle.js +82 -0
  349. package/dist/handle.js.map +1 -0
  350. package/dist/handles/MetaTags.d.ts +14 -0
  351. package/dist/handles/MetaTags.d.ts.map +1 -0
  352. package/dist/handles/MetaTags.js +136 -0
  353. package/dist/handles/MetaTags.js.map +1 -0
  354. package/dist/handles/index.d.ts +6 -0
  355. package/dist/handles/index.d.ts.map +1 -0
  356. package/dist/handles/index.js +6 -0
  357. package/dist/handles/index.js.map +1 -0
  358. package/dist/handles/meta.d.ts +39 -0
  359. package/dist/handles/meta.d.ts.map +1 -0
  360. package/dist/handles/meta.js +202 -0
  361. package/dist/handles/meta.js.map +1 -0
  362. package/dist/host/__tests__/errors.test.d.ts +2 -0
  363. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  364. package/dist/host/__tests__/errors.test.js +76 -0
  365. package/dist/host/__tests__/errors.test.js.map +1 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  370. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  372. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  374. package/dist/host/__tests__/router.test.d.ts +2 -0
  375. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  376. package/dist/host/__tests__/router.test.js +241 -0
  377. package/dist/host/__tests__/router.test.js.map +1 -0
  378. package/dist/host/__tests__/testing.test.d.ts +2 -0
  379. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  380. package/dist/host/__tests__/testing.test.js +64 -0
  381. package/dist/host/__tests__/testing.test.js.map +1 -0
  382. package/dist/host/__tests__/utils.test.d.ts +2 -0
  383. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  384. package/dist/host/__tests__/utils.test.js +29 -0
  385. package/dist/host/__tests__/utils.test.js.map +1 -0
  386. package/dist/host/cookie-handler.d.ts +34 -0
  387. package/dist/host/cookie-handler.d.ts.map +1 -0
  388. package/dist/host/cookie-handler.js +124 -0
  389. package/dist/host/cookie-handler.js.map +1 -0
  390. package/dist/host/errors.d.ts +56 -0
  391. package/dist/host/errors.d.ts.map +1 -0
  392. package/dist/host/errors.js +79 -0
  393. package/dist/host/errors.js.map +1 -0
  394. package/dist/host/index.d.ts +29 -0
  395. package/dist/host/index.d.ts.map +1 -0
  396. package/dist/host/index.js +32 -0
  397. package/dist/host/index.js.map +1 -0
  398. package/dist/host/pattern-matcher.d.ts +36 -0
  399. package/dist/host/pattern-matcher.d.ts.map +1 -0
  400. package/dist/host/pattern-matcher.js +172 -0
  401. package/dist/host/pattern-matcher.js.map +1 -0
  402. package/dist/host/router.d.ts +26 -0
  403. package/dist/host/router.d.ts.map +1 -0
  404. package/dist/host/router.js +218 -0
  405. package/dist/host/router.js.map +1 -0
  406. package/dist/host/testing.d.ts +36 -0
  407. package/dist/host/testing.d.ts.map +1 -0
  408. package/dist/host/testing.js +55 -0
  409. package/dist/host/testing.js.map +1 -0
  410. package/dist/host/types.d.ts +115 -0
  411. package/dist/host/types.d.ts.map +1 -0
  412. package/dist/host/types.js +7 -0
  413. package/dist/host/types.js.map +1 -0
  414. package/dist/host/utils.d.ts +21 -0
  415. package/dist/host/utils.d.ts.map +1 -0
  416. package/dist/host/utils.js +23 -0
  417. package/dist/host/utils.js.map +1 -0
  418. package/dist/href-client.d.ts +131 -0
  419. package/dist/href-client.d.ts.map +1 -0
  420. package/dist/href-client.js +64 -0
  421. package/dist/href-client.js.map +1 -0
  422. package/dist/href-context.d.ts +29 -0
  423. package/dist/href-context.d.ts.map +1 -0
  424. package/dist/href-context.js +21 -0
  425. package/dist/href-context.js.map +1 -0
  426. package/dist/index.d.ts +73 -0
  427. package/dist/index.d.ts.map +1 -0
  428. package/dist/index.js +91 -0
  429. package/dist/index.js.map +1 -0
  430. package/dist/index.rsc.d.ts +32 -0
  431. package/dist/index.rsc.d.ts.map +1 -0
  432. package/dist/index.rsc.js +40 -0
  433. package/dist/index.rsc.js.map +1 -0
  434. package/dist/internal-debug.d.ts +2 -0
  435. package/dist/internal-debug.d.ts.map +1 -0
  436. package/dist/internal-debug.js +5 -0
  437. package/dist/internal-debug.js.map +1 -0
  438. package/dist/loader.d.ts +14 -0
  439. package/dist/loader.d.ts.map +1 -0
  440. package/dist/loader.js +20 -0
  441. package/dist/loader.js.map +1 -0
  442. package/dist/loader.rsc.d.ts +19 -0
  443. package/dist/loader.rsc.d.ts.map +1 -0
  444. package/dist/loader.rsc.js +99 -0
  445. package/dist/loader.rsc.js.map +1 -0
  446. package/dist/network-error-thrower.d.ts +17 -0
  447. package/dist/network-error-thrower.d.ts.map +1 -0
  448. package/dist/network-error-thrower.js +14 -0
  449. package/dist/network-error-thrower.js.map +1 -0
  450. package/dist/outlet-context.d.ts +13 -0
  451. package/dist/outlet-context.d.ts.map +1 -0
  452. package/dist/outlet-context.js +3 -0
  453. package/dist/outlet-context.js.map +1 -0
  454. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  456. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  457. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  458. package/dist/prerender/param-hash.d.ts +16 -0
  459. package/dist/prerender/param-hash.d.ts.map +1 -0
  460. package/dist/prerender/param-hash.js +36 -0
  461. package/dist/prerender/param-hash.js.map +1 -0
  462. package/dist/prerender/store.d.ts +38 -0
  463. package/dist/prerender/store.d.ts.map +1 -0
  464. package/dist/prerender/store.js +61 -0
  465. package/dist/prerender/store.js.map +1 -0
  466. package/dist/prerender.d.ts +66 -0
  467. package/dist/prerender.d.ts.map +1 -0
  468. package/dist/prerender.js +57 -0
  469. package/dist/prerender.js.map +1 -0
  470. package/dist/reverse.d.ts +196 -0
  471. package/dist/reverse.d.ts.map +1 -0
  472. package/dist/reverse.js +78 -0
  473. package/dist/reverse.js.map +1 -0
  474. package/dist/root-error-boundary.d.ts +33 -0
  475. package/dist/root-error-boundary.d.ts.map +1 -0
  476. package/dist/root-error-boundary.js +165 -0
  477. package/dist/root-error-boundary.js.map +1 -0
  478. package/dist/route-content-wrapper.d.ts +46 -0
  479. package/dist/route-content-wrapper.d.ts.map +1 -0
  480. package/dist/route-content-wrapper.js +77 -0
  481. package/dist/route-content-wrapper.js.map +1 -0
  482. package/dist/route-definition.d.ts +421 -0
  483. package/dist/route-definition.d.ts.map +1 -0
  484. package/dist/route-definition.js +868 -0
  485. package/dist/route-definition.js.map +1 -0
  486. package/dist/route-map-builder.d.ts +155 -0
  487. package/dist/route-map-builder.d.ts.map +1 -0
  488. package/dist/route-map-builder.js +237 -0
  489. package/dist/route-map-builder.js.map +1 -0
  490. package/dist/route-types.d.ts +165 -0
  491. package/dist/route-types.d.ts.map +1 -0
  492. package/dist/route-types.js +7 -0
  493. package/dist/route-types.js.map +1 -0
  494. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  496. package/dist/router/__tests__/handler-context.test.js +65 -0
  497. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  502. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  503. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  504. package/dist/router/__tests__/match-context.test.js +92 -0
  505. package/dist/router/__tests__/match-context.test.js.map +1 -0
  506. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  508. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  509. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  510. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  511. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  512. package/dist/router/__tests__/match-result.test.js +457 -0
  513. package/dist/router/__tests__/match-result.test.js.map +1 -0
  514. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  515. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  516. package/dist/router/__tests__/on-error.test.js +678 -0
  517. package/dist/router/__tests__/on-error.test.js.map +1 -0
  518. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  520. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  521. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  526. package/dist/router/error-handling.d.ts +77 -0
  527. package/dist/router/error-handling.d.ts.map +1 -0
  528. package/dist/router/error-handling.js +202 -0
  529. package/dist/router/error-handling.js.map +1 -0
  530. package/dist/router/handler-context.d.ts +20 -0
  531. package/dist/router/handler-context.d.ts.map +1 -0
  532. package/dist/router/handler-context.js +198 -0
  533. package/dist/router/handler-context.js.map +1 -0
  534. package/dist/router/intercept-resolution.d.ts +66 -0
  535. package/dist/router/intercept-resolution.d.ts.map +1 -0
  536. package/dist/router/intercept-resolution.js +246 -0
  537. package/dist/router/intercept-resolution.js.map +1 -0
  538. package/dist/router/loader-resolution.d.ts +64 -0
  539. package/dist/router/loader-resolution.d.ts.map +1 -0
  540. package/dist/router/loader-resolution.js +284 -0
  541. package/dist/router/loader-resolution.js.map +1 -0
  542. package/dist/router/logging.d.ts +15 -0
  543. package/dist/router/logging.d.ts.map +1 -0
  544. package/dist/router/logging.js +99 -0
  545. package/dist/router/logging.js.map +1 -0
  546. package/dist/router/manifest.d.ts +22 -0
  547. package/dist/router/manifest.d.ts.map +1 -0
  548. package/dist/router/manifest.js +181 -0
  549. package/dist/router/manifest.js.map +1 -0
  550. package/dist/router/match-api.d.ts +35 -0
  551. package/dist/router/match-api.d.ts.map +1 -0
  552. package/dist/router/match-api.js +406 -0
  553. package/dist/router/match-api.js.map +1 -0
  554. package/dist/router/match-context.d.ts +206 -0
  555. package/dist/router/match-context.d.ts.map +1 -0
  556. package/dist/router/match-context.js +17 -0
  557. package/dist/router/match-context.js.map +1 -0
  558. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  560. package/dist/router/match-middleware/background-revalidation.js +75 -0
  561. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  562. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  564. package/dist/router/match-middleware/cache-lookup.js +257 -0
  565. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  566. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  567. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  568. package/dist/router/match-middleware/cache-store.js +108 -0
  569. package/dist/router/match-middleware/cache-store.js.map +1 -0
  570. package/dist/router/match-middleware/index.d.ts +81 -0
  571. package/dist/router/match-middleware/index.d.ts.map +1 -0
  572. package/dist/router/match-middleware/index.js +80 -0
  573. package/dist/router/match-middleware/index.js.map +1 -0
  574. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  576. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  577. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  578. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  580. package/dist/router/match-middleware/segment-resolution.js +53 -0
  581. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  582. package/dist/router/match-pipelines.d.ts +147 -0
  583. package/dist/router/match-pipelines.d.ts.map +1 -0
  584. package/dist/router/match-pipelines.js +82 -0
  585. package/dist/router/match-pipelines.js.map +1 -0
  586. package/dist/router/match-result.d.ts +126 -0
  587. package/dist/router/match-result.d.ts.map +1 -0
  588. package/dist/router/match-result.js +93 -0
  589. package/dist/router/match-result.js.map +1 -0
  590. package/dist/router/metrics.d.ts +20 -0
  591. package/dist/router/metrics.d.ts.map +1 -0
  592. package/dist/router/metrics.js +47 -0
  593. package/dist/router/metrics.js.map +1 -0
  594. package/dist/router/middleware.d.ts +249 -0
  595. package/dist/router/middleware.d.ts.map +1 -0
  596. package/dist/router/middleware.js +434 -0
  597. package/dist/router/middleware.js.map +1 -0
  598. package/dist/router/middleware.test.d.ts +2 -0
  599. package/dist/router/middleware.test.d.ts.map +1 -0
  600. package/dist/router/middleware.test.js +816 -0
  601. package/dist/router/middleware.test.js.map +1 -0
  602. package/dist/router/pattern-matching.d.ts +149 -0
  603. package/dist/router/pattern-matching.d.ts.map +1 -0
  604. package/dist/router/pattern-matching.js +349 -0
  605. package/dist/router/pattern-matching.js.map +1 -0
  606. package/dist/router/revalidation.d.ts +44 -0
  607. package/dist/router/revalidation.d.ts.map +1 -0
  608. package/dist/router/revalidation.js +147 -0
  609. package/dist/router/revalidation.js.map +1 -0
  610. package/dist/router/router-context.d.ts +135 -0
  611. package/dist/router/router-context.d.ts.map +1 -0
  612. package/dist/router/router-context.js +36 -0
  613. package/dist/router/router-context.js.map +1 -0
  614. package/dist/router/segment-resolution.d.ts +127 -0
  615. package/dist/router/segment-resolution.d.ts.map +1 -0
  616. package/dist/router/segment-resolution.js +919 -0
  617. package/dist/router/segment-resolution.js.map +1 -0
  618. package/dist/router/trie-matching.d.ts +40 -0
  619. package/dist/router/trie-matching.d.ts.map +1 -0
  620. package/dist/router/trie-matching.js +127 -0
  621. package/dist/router/trie-matching.js.map +1 -0
  622. package/dist/router/types.d.ts +136 -0
  623. package/dist/router/types.d.ts.map +1 -0
  624. package/dist/router/types.js +7 -0
  625. package/dist/router/types.js.map +1 -0
  626. package/dist/router.d.ts +753 -0
  627. package/dist/router.d.ts.map +1 -0
  628. package/dist/router.gen.d.ts +6 -0
  629. package/dist/router.gen.d.ts.map +1 -0
  630. package/dist/router.gen.js +6 -0
  631. package/dist/router.gen.js.map +1 -0
  632. package/dist/router.js +1304 -0
  633. package/dist/router.js.map +1 -0
  634. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  636. package/dist/rsc/__tests__/helpers.test.js +140 -0
  637. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  638. package/dist/rsc/handler.d.ts +45 -0
  639. package/dist/rsc/handler.d.ts.map +1 -0
  640. package/dist/rsc/handler.js +1172 -0
  641. package/dist/rsc/handler.js.map +1 -0
  642. package/dist/rsc/helpers.d.ts +16 -0
  643. package/dist/rsc/helpers.d.ts.map +1 -0
  644. package/dist/rsc/helpers.js +55 -0
  645. package/dist/rsc/helpers.js.map +1 -0
  646. package/dist/rsc/index.d.ts +22 -0
  647. package/dist/rsc/index.d.ts.map +1 -0
  648. package/dist/rsc/index.js +23 -0
  649. package/dist/rsc/index.js.map +1 -0
  650. package/dist/rsc/nonce.d.ts +9 -0
  651. package/dist/rsc/nonce.d.ts.map +1 -0
  652. package/dist/rsc/nonce.js +18 -0
  653. package/dist/rsc/nonce.js.map +1 -0
  654. package/dist/rsc/types.d.ts +206 -0
  655. package/dist/rsc/types.d.ts.map +1 -0
  656. package/dist/rsc/types.js +8 -0
  657. package/dist/rsc/types.js.map +1 -0
  658. package/dist/search-params.d.ts +103 -0
  659. package/dist/search-params.d.ts.map +1 -0
  660. package/dist/search-params.js +74 -0
  661. package/dist/search-params.js.map +1 -0
  662. package/dist/segment-system.d.ts +75 -0
  663. package/dist/segment-system.d.ts.map +1 -0
  664. package/dist/segment-system.js +336 -0
  665. package/dist/segment-system.js.map +1 -0
  666. package/dist/server/context.d.ts +245 -0
  667. package/dist/server/context.d.ts.map +1 -0
  668. package/dist/server/context.js +197 -0
  669. package/dist/server/context.js.map +1 -0
  670. package/dist/server/fetchable-loader-store.d.ts +18 -0
  671. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  672. package/dist/server/fetchable-loader-store.js +18 -0
  673. package/dist/server/fetchable-loader-store.js.map +1 -0
  674. package/dist/server/handle-store.d.ts +85 -0
  675. package/dist/server/handle-store.d.ts.map +1 -0
  676. package/dist/server/handle-store.js +142 -0
  677. package/dist/server/handle-store.js.map +1 -0
  678. package/dist/server/loader-registry.d.ts +55 -0
  679. package/dist/server/loader-registry.d.ts.map +1 -0
  680. package/dist/server/loader-registry.js +132 -0
  681. package/dist/server/loader-registry.js.map +1 -0
  682. package/dist/server/request-context.d.ts +226 -0
  683. package/dist/server/request-context.d.ts.map +1 -0
  684. package/dist/server/request-context.js +290 -0
  685. package/dist/server/request-context.js.map +1 -0
  686. package/dist/server/root-layout.d.ts +4 -0
  687. package/dist/server/root-layout.d.ts.map +1 -0
  688. package/dist/server/root-layout.js +5 -0
  689. package/dist/server/root-layout.js.map +1 -0
  690. package/dist/server.d.ts +15 -0
  691. package/dist/server.d.ts.map +1 -0
  692. package/dist/server.js +20 -0
  693. package/dist/server.js.map +1 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  698. package/dist/ssr/index.d.ts +98 -0
  699. package/dist/ssr/index.d.ts.map +1 -0
  700. package/dist/ssr/index.js +158 -0
  701. package/dist/ssr/index.js.map +1 -0
  702. package/dist/static-handler.d.ts +50 -0
  703. package/dist/static-handler.d.ts.map +1 -0
  704. package/dist/static-handler.gen.d.ts +5 -0
  705. package/dist/static-handler.gen.d.ts.map +1 -0
  706. package/dist/static-handler.gen.js +5 -0
  707. package/dist/static-handler.gen.js.map +1 -0
  708. package/dist/static-handler.js +29 -0
  709. package/dist/static-handler.js.map +1 -0
  710. package/dist/theme/ThemeProvider.d.ts +20 -0
  711. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  712. package/dist/theme/ThemeProvider.js +240 -0
  713. package/dist/theme/ThemeProvider.js.map +1 -0
  714. package/dist/theme/ThemeScript.d.ts +48 -0
  715. package/dist/theme/ThemeScript.d.ts.map +1 -0
  716. package/dist/theme/ThemeScript.js +13 -0
  717. package/dist/theme/ThemeScript.js.map +1 -0
  718. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  719. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  720. package/dist/theme/__tests__/theme.test.js +103 -0
  721. package/dist/theme/__tests__/theme.test.js.map +1 -0
  722. package/dist/theme/constants.d.ts +29 -0
  723. package/dist/theme/constants.d.ts.map +1 -0
  724. package/dist/theme/constants.js +48 -0
  725. package/dist/theme/constants.js.map +1 -0
  726. package/dist/theme/index.d.ts +31 -0
  727. package/dist/theme/index.d.ts.map +1 -0
  728. package/dist/theme/index.js +36 -0
  729. package/dist/theme/index.js.map +1 -0
  730. package/dist/theme/theme-context.d.ts +40 -0
  731. package/dist/theme/theme-context.d.ts.map +1 -0
  732. package/dist/theme/theme-context.js +60 -0
  733. package/dist/theme/theme-context.js.map +1 -0
  734. package/dist/theme/theme-script.d.ts +27 -0
  735. package/dist/theme/theme-script.d.ts.map +1 -0
  736. package/dist/theme/theme-script.js +147 -0
  737. package/dist/theme/theme-script.js.map +1 -0
  738. package/dist/theme/types.d.ts +163 -0
  739. package/dist/theme/types.d.ts.map +1 -0
  740. package/dist/theme/types.js +11 -0
  741. package/dist/theme/types.js.map +1 -0
  742. package/dist/theme/use-theme.d.ts +12 -0
  743. package/dist/theme/use-theme.d.ts.map +1 -0
  744. package/dist/theme/use-theme.js +40 -0
  745. package/dist/theme/use-theme.js.map +1 -0
  746. package/dist/types.d.ts +1479 -0
  747. package/dist/types.d.ts.map +1 -0
  748. package/dist/types.js +10 -0
  749. package/dist/types.js.map +1 -0
  750. package/dist/urls.d.ts +441 -0
  751. package/dist/urls.d.ts.map +1 -0
  752. package/dist/urls.gen.d.ts +8 -0
  753. package/dist/urls.gen.d.ts.map +1 -0
  754. package/dist/urls.gen.js +8 -0
  755. package/dist/urls.gen.js.map +1 -0
  756. package/dist/urls.js +443 -0
  757. package/dist/urls.js.map +1 -0
  758. package/dist/use-loader.d.ts +127 -0
  759. package/dist/use-loader.d.ts.map +1 -0
  760. package/dist/use-loader.js +237 -0
  761. package/dist/use-loader.js.map +1 -0
  762. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  766. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  770. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  774. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  778. package/dist/vite/ast-handler-extract.d.ts +49 -0
  779. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  780. package/dist/vite/ast-handler-extract.js +249 -0
  781. package/dist/vite/ast-handler-extract.js.map +1 -0
  782. package/dist/vite/expose-action-id.d.ts +19 -0
  783. package/dist/vite/expose-action-id.d.ts.map +1 -0
  784. package/dist/vite/expose-action-id.js +250 -0
  785. package/dist/vite/expose-action-id.js.map +1 -0
  786. package/dist/vite/expose-id-utils.d.ts +69 -0
  787. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  788. package/dist/vite/expose-id-utils.js +289 -0
  789. package/dist/vite/expose-id-utils.js.map +1 -0
  790. package/dist/vite/expose-internal-ids.d.ts +22 -0
  791. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  792. package/dist/vite/expose-internal-ids.js +886 -0
  793. package/dist/vite/expose-internal-ids.js.map +1 -0
  794. package/dist/vite/index.d.ts +149 -0
  795. package/dist/vite/index.d.ts.map +1 -0
  796. package/dist/vite/index.js +1890 -540
  797. package/dist/vite/index.js.bak +5448 -0
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/index.named-routes.gen.ts +103 -0
  800. package/dist/vite/package-resolution.d.ts +43 -0
  801. package/dist/vite/package-resolution.d.ts.map +1 -0
  802. package/dist/vite/package-resolution.js +112 -0
  803. package/dist/vite/package-resolution.js.map +1 -0
  804. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  805. package/dist/vite/virtual-entries.d.ts +25 -0
  806. package/dist/vite/virtual-entries.d.ts.map +1 -0
  807. package/dist/vite/virtual-entries.js +110 -0
  808. package/dist/vite/virtual-entries.js.map +1 -0
  809. package/package.json +7 -5
  810. package/skills/breadcrumbs/SKILL.md +3 -1
  811. package/skills/cache-guide/SKILL.md +32 -0
  812. package/skills/caching/SKILL.md +8 -0
  813. package/skills/handler-use/SKILL.md +362 -0
  814. package/skills/hooks/SKILL.md +33 -20
  815. package/skills/i18n/SKILL.md +276 -0
  816. package/skills/intercept/SKILL.md +20 -0
  817. package/skills/layout/SKILL.md +22 -0
  818. package/skills/links/SKILL.md +93 -17
  819. package/skills/loader/SKILL.md +123 -46
  820. package/skills/middleware/SKILL.md +36 -3
  821. package/skills/migrate-nextjs/SKILL.md +562 -0
  822. package/skills/migrate-react-router/SKILL.md +769 -0
  823. package/skills/parallel/SKILL.md +192 -0
  824. package/skills/prerender/SKILL.md +110 -68
  825. package/skills/rango/SKILL.md +26 -22
  826. package/skills/response-routes/SKILL.md +8 -0
  827. package/skills/route/SKILL.md +75 -0
  828. package/skills/router-setup/SKILL.md +87 -2
  829. package/skills/server-actions/SKILL.md +739 -0
  830. package/skills/streams-and-websockets/SKILL.md +283 -0
  831. package/skills/typesafety/SKILL.md +19 -1
  832. package/src/__internal.ts +1 -1
  833. package/src/browser/app-shell.ts +52 -0
  834. package/src/browser/app-version.ts +14 -0
  835. package/src/browser/event-controller.ts +49 -4
  836. package/src/browser/navigation-bridge.ts +95 -7
  837. package/src/browser/navigation-client.ts +132 -70
  838. package/src/browser/navigation-store.ts +68 -9
  839. package/src/browser/partial-update.ts +93 -12
  840. package/src/browser/prefetch/cache.ts +134 -26
  841. package/src/browser/prefetch/fetch.ts +168 -31
  842. package/src/browser/prefetch/queue.ts +92 -29
  843. package/src/browser/prefetch/resource-ready.ts +77 -0
  844. package/src/browser/rango-state.ts +53 -13
  845. package/src/browser/react/Link.tsx +72 -8
  846. package/src/browser/react/NavigationProvider.tsx +82 -21
  847. package/src/browser/react/context.ts +7 -2
  848. package/src/browser/react/filter-segment-order.ts +51 -7
  849. package/src/browser/react/use-handle.ts +9 -58
  850. package/src/browser/react/use-navigation.ts +22 -2
  851. package/src/browser/react/use-params.ts +17 -4
  852. package/src/browser/react/use-router.ts +29 -9
  853. package/src/browser/react/use-segments.ts +11 -8
  854. package/src/browser/rsc-router.tsx +82 -10
  855. package/src/browser/scroll-restoration.ts +10 -8
  856. package/src/browser/segment-reconciler.ts +36 -9
  857. package/src/browser/server-action-bridge.ts +8 -6
  858. package/src/browser/types.ts +46 -5
  859. package/src/build/generate-manifest.ts +6 -6
  860. package/src/build/generate-route-types.ts +3 -0
  861. package/src/build/route-trie.ts +52 -25
  862. package/src/build/route-types/include-resolution.ts +8 -1
  863. package/src/build/route-types/router-processing.ts +211 -72
  864. package/src/build/route-types/scan-filter.ts +8 -1
  865. package/src/cache/cache-runtime.ts +15 -11
  866. package/src/cache/cache-scope.ts +46 -5
  867. package/src/cache/cf/cf-cache-store.ts +5 -7
  868. package/src/cache/document-cache.ts +17 -7
  869. package/src/cache/taint.ts +55 -0
  870. package/src/client.tsx +84 -230
  871. package/src/context-var.ts +72 -2
  872. package/src/debug.ts +2 -2
  873. package/src/handle.ts +40 -0
  874. package/src/index.rsc.ts +6 -1
  875. package/src/index.ts +49 -6
  876. package/src/outlet-context.ts +1 -1
  877. package/src/prerender/store.ts +5 -4
  878. package/src/prerender.ts +138 -77
  879. package/src/response-utils.ts +28 -0
  880. package/src/reverse.ts +28 -2
  881. package/src/route-definition/dsl-helpers.ts +240 -40
  882. package/src/route-definition/helpers-types.ts +73 -20
  883. package/src/route-definition/index.ts +3 -0
  884. package/src/route-definition/redirect.ts +9 -1
  885. package/src/route-definition/resolve-handler-use.ts +155 -0
  886. package/src/route-types.ts +18 -0
  887. package/src/router/content-negotiation.ts +100 -1
  888. package/src/router/handler-context.ts +102 -25
  889. package/src/router/intercept-resolution.ts +9 -4
  890. package/src/router/lazy-includes.ts +8 -7
  891. package/src/router/loader-resolution.ts +159 -21
  892. package/src/router/logging.ts +1 -1
  893. package/src/router/manifest.ts +28 -15
  894. package/src/router/match-api.ts +128 -192
  895. package/src/router/match-handlers.ts +1 -0
  896. package/src/router/match-middleware/background-revalidation.ts +30 -2
  897. package/src/router/match-middleware/cache-lookup.ts +94 -17
  898. package/src/router/match-middleware/cache-store.ts +53 -10
  899. package/src/router/match-middleware/intercept-resolution.ts +9 -7
  900. package/src/router/match-middleware/segment-resolution.ts +60 -5
  901. package/src/router/match-result.ts +123 -10
  902. package/src/router/metrics.ts +6 -1
  903. package/src/router/middleware-types.ts +20 -33
  904. package/src/router/middleware.ts +56 -12
  905. package/src/router/navigation-snapshot.ts +182 -0
  906. package/src/router/pattern-matching.ts +101 -17
  907. package/src/router/prerender-match.ts +110 -10
  908. package/src/router/preview-match.ts +30 -102
  909. package/src/router/request-classification.ts +310 -0
  910. package/src/router/revalidation.ts +15 -1
  911. package/src/router/route-snapshot.ts +245 -0
  912. package/src/router/router-context.ts +1 -0
  913. package/src/router/router-interfaces.ts +36 -4
  914. package/src/router/router-options.ts +37 -11
  915. package/src/router/segment-resolution/fresh.ts +206 -20
  916. package/src/router/segment-resolution/helpers.ts +29 -24
  917. package/src/router/segment-resolution/loader-cache.ts +1 -0
  918. package/src/router/segment-resolution/revalidation.ts +447 -282
  919. package/src/router/trie-matching.ts +18 -13
  920. package/src/router/types.ts +1 -0
  921. package/src/router/url-params.ts +49 -0
  922. package/src/router.ts +56 -8
  923. package/src/rsc/handler.ts +478 -374
  924. package/src/rsc/helpers.ts +69 -41
  925. package/src/rsc/loader-fetch.ts +23 -3
  926. package/src/rsc/manifest-init.ts +5 -1
  927. package/src/rsc/progressive-enhancement.ts +18 -2
  928. package/src/rsc/response-route-handler.ts +14 -1
  929. package/src/rsc/rsc-rendering.ts +20 -1
  930. package/src/rsc/server-action.ts +12 -0
  931. package/src/rsc/ssr-setup.ts +2 -2
  932. package/src/rsc/types.ts +15 -1
  933. package/src/segment-content-promise.ts +67 -0
  934. package/src/segment-loader-promise.ts +122 -0
  935. package/src/segment-system.tsx +131 -31
  936. package/src/server/context.ts +166 -17
  937. package/src/server/handle-store.ts +19 -0
  938. package/src/server/loader-registry.ts +9 -8
  939. package/src/server/request-context.ts +185 -57
  940. package/src/ssr/index.tsx +9 -1
  941. package/src/static-handler.ts +18 -6
  942. package/src/types/cache-types.ts +4 -4
  943. package/src/types/handler-context.ts +145 -68
  944. package/src/types/loader-types.ts +41 -15
  945. package/src/types/request-scope.ts +126 -0
  946. package/src/types/route-entry.ts +12 -1
  947. package/src/types/segments.ts +19 -0
  948. package/src/urls/include-helper.ts +24 -14
  949. package/src/urls/path-helper-types.ts +39 -6
  950. package/src/urls/path-helper.ts +48 -13
  951. package/src/urls/pattern-types.ts +12 -0
  952. package/src/urls/response-types.ts +18 -16
  953. package/src/use-loader.tsx +77 -5
  954. package/src/vite/debug.ts +184 -0
  955. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  956. package/src/vite/discovery/discover-routers.ts +36 -4
  957. package/src/vite/discovery/gate-state.ts +171 -0
  958. package/src/vite/discovery/prerender-collection.ts +175 -74
  959. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  960. package/src/vite/discovery/state.ts +13 -4
  961. package/src/vite/index.ts +4 -0
  962. package/src/vite/plugin-types.ts +60 -5
  963. package/src/vite/plugins/cjs-to-esm.ts +5 -0
  964. package/src/vite/plugins/client-ref-dedup.ts +16 -0
  965. package/src/vite/plugins/client-ref-hashing.ts +16 -4
  966. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  967. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  968. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  969. package/src/vite/plugins/expose-action-id.ts +52 -28
  970. package/src/vite/plugins/expose-id-utils.ts +12 -0
  971. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  972. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  973. package/src/vite/plugins/expose-internal-ids.ts +563 -316
  974. package/src/vite/plugins/performance-tracks.ts +96 -0
  975. package/src/vite/plugins/refresh-cmd.ts +88 -26
  976. package/src/vite/plugins/use-cache-transform.ts +56 -43
  977. package/src/vite/plugins/version-injector.ts +37 -11
  978. package/src/vite/plugins/version-plugin.ts +9 -0
  979. package/src/vite/rango.ts +63 -11
  980. package/src/vite/router-discovery.ts +732 -86
  981. package/src/vite/utils/banner.ts +4 -4
  982. package/src/vite/utils/package-resolution.ts +41 -1
  983. package/src/vite/utils/prerender-utils.ts +38 -5
  984. package/src/vite/utils/shared-utils.ts +3 -2
@@ -10,7 +10,11 @@ import type { ReactNode } from "react";
10
10
  import { invariant } from "../../errors";
11
11
  import { revalidate } from "../loader-resolution.js";
12
12
  import { evaluateRevalidation } from "../revalidation.js";
13
- import type { EntryData } from "../../server/context";
13
+ import {
14
+ getParallelEntries,
15
+ getParallelSlotEntries,
16
+ type EntryData,
17
+ } from "../../server/context";
14
18
  import type {
15
19
  HandlerContext,
16
20
  InternalHandlerContext,
@@ -37,7 +41,11 @@ import {
37
41
  } from "./helpers.js";
38
42
  import { getRouterContext } from "../router-context.js";
39
43
  import { resolveSink, safeEmit } from "../telemetry.js";
40
- import { track } from "../../server/context.js";
44
+ import {
45
+ track,
46
+ RSCRouterContext,
47
+ runInsideLoaderScope,
48
+ } from "../../server/context.js";
41
49
 
42
50
  // ---------------------------------------------------------------------------
43
51
  // Telemetry helpers
@@ -81,6 +89,27 @@ function observeStreamedHandler(
81
89
  });
82
90
  }
83
91
 
92
+ /**
93
+ * Trace a parallel slot that's being force-rendered on a full refetch (client
94
+ * has no cached state). User revalidate fns are bypassed in this case — see
95
+ * the call sites for the load-bearing rationale.
96
+ */
97
+ function traceFullRefetchedParallelSlot(
98
+ parallelId: string,
99
+ belongsToRoute: boolean,
100
+ ): void {
101
+ if (!isTraceActive()) return;
102
+ pushRevalidationTraceEntry({
103
+ segmentId: parallelId,
104
+ segmentType: "parallel",
105
+ belongsToRoute,
106
+ source: "parallel",
107
+ defaultShouldRevalidate: true,
108
+ finalShouldRevalidate: true,
109
+ reason: "full-refetch",
110
+ });
111
+ }
112
+
84
113
  // ---------------------------------------------------------------------------
85
114
  // Revalidation telemetry helper
86
115
  // ---------------------------------------------------------------------------
@@ -228,7 +257,9 @@ export async function resolveLoadersWithRevalidation<TEnv>(
228
257
  params: ctx.params,
229
258
  loaderId: loader.$$id,
230
259
  loaderData: deps.wrapLoaderPromise(
231
- resolveLoaderData(loaderEntry, ctx, ctx.pathname),
260
+ runInsideLoaderScope(() =>
261
+ resolveLoaderData(loaderEntry, ctx, ctx.pathname),
262
+ ),
232
263
  entry,
233
264
  segmentId,
234
265
  ctx.pathname,
@@ -258,26 +289,95 @@ export async function resolveLoadersOnlyWithRevalidation<TEnv>(
258
289
  ): Promise<{ segments: ResolvedSegment[]; matchedIds: string[] }> {
259
290
  const allLoaderSegments: ResolvedSegment[] = [];
260
291
  const allMatchedIds: string[] = [];
292
+ const seenIds = new Set<string>();
293
+
294
+ async function collectEntryLoaders(
295
+ entry: EntryData,
296
+ belongsToRoute: boolean,
297
+ shortCodeOverride?: string,
298
+ ): Promise<void> {
299
+ // Skip if all loaders from this entry have already been resolved
300
+ // via a parent (e.g., cache boundary wrapping a layout with shared loaders).
301
+ const loaderEntries = entry.loader ?? [];
302
+ const sc = shortCodeOverride ?? entry.shortCode;
303
+ const allAlreadySeen =
304
+ loaderEntries.length > 0 &&
305
+ loaderEntries.every((le, i) =>
306
+ seenIds.has(`${sc}D${i}.${le.loader.$$id}`),
307
+ );
308
+ if (!allAlreadySeen) {
309
+ const { segments, matchedIds } = await resolveLoadersWithRevalidation(
310
+ entry,
311
+ context,
312
+ belongsToRoute,
313
+ clientSegmentIds,
314
+ prevParams,
315
+ request,
316
+ prevUrl,
317
+ nextUrl,
318
+ routeKey,
319
+ deps,
320
+ actionContext,
321
+ shortCodeOverride,
322
+ stale,
323
+ );
324
+ for (const seg of segments) {
325
+ if (!seenIds.has(seg.id)) {
326
+ seenIds.add(seg.id);
327
+ allLoaderSegments.push(seg);
328
+ }
329
+ }
330
+ allMatchedIds.push(...matchedIds);
331
+ }
332
+
333
+ const seenParallelEntryIds = new Set<string>();
334
+ for (const parallelEntry of getParallelEntries(entry.parallel)) {
335
+ if (seenParallelEntryIds.has(parallelEntry.id)) continue;
336
+ seenParallelEntryIds.add(parallelEntry.id);
337
+ await collectEntryLoaders(parallelEntry, belongsToRoute, entry.shortCode);
338
+ }
339
+
340
+ const childBelongsToRoute = belongsToRoute || entry.type === "route";
341
+ for (const layoutEntry of entry.layout) {
342
+ await collectEntryLoaders(layoutEntry, childBelongsToRoute);
343
+ // Inherit route loaders for orphan layouts with parallels.
344
+ // Resolve directly — do NOT re-enter collectEntryLoaders with the
345
+ // route entry, as that would re-iterate route.layout and loop.
346
+ if (
347
+ entry.type === "route" &&
348
+ entry.loader &&
349
+ entry.loader.length > 0 &&
350
+ Object.keys(layoutEntry.parallel).length > 0
351
+ ) {
352
+ const inherited = await resolveLoadersWithRevalidation(
353
+ entry,
354
+ context,
355
+ childBelongsToRoute,
356
+ clientSegmentIds,
357
+ prevParams,
358
+ request,
359
+ prevUrl,
360
+ nextUrl,
361
+ routeKey,
362
+ deps,
363
+ actionContext,
364
+ layoutEntry.shortCode,
365
+ stale,
366
+ );
367
+ for (const seg of inherited.segments) {
368
+ if (!seenIds.has(seg.id)) {
369
+ seenIds.add(seg.id);
370
+ seg._inherited = true;
371
+ allLoaderSegments.push(seg);
372
+ }
373
+ }
374
+ allMatchedIds.push(...inherited.matchedIds);
375
+ }
376
+ }
377
+ }
261
378
 
262
379
  for (const entry of entries) {
263
- const belongsToRoute = entry.type === "route";
264
- const { segments, matchedIds } = await resolveLoadersWithRevalidation(
265
- entry,
266
- context,
267
- belongsToRoute,
268
- clientSegmentIds,
269
- prevParams,
270
- request,
271
- prevUrl,
272
- nextUrl,
273
- routeKey,
274
- deps,
275
- actionContext,
276
- undefined, // shortCodeOverride
277
- stale,
278
- );
279
- allLoaderSegments.push(...segments);
280
- allMatchedIds.push(...matchedIds);
380
+ await collectEntryLoaders(entry, entry.type === "route");
281
381
  }
282
382
 
283
383
  return { segments: allLoaderSegments, matchedIds: allMatchedIds };
@@ -301,22 +401,20 @@ export function buildEntryRevalidateMap(
301
401
  map.set(entry.shortCode, { entry, revalidate: entry.revalidate });
302
402
 
303
403
  if (entry.type !== "parallel") {
304
- for (const parallelEntry of entry.parallel) {
305
- if (parallelEntry.type === "parallel") {
306
- const slots = Object.keys(parallelEntry.handler) as `@${string}`[];
307
- for (const slot of slots) {
308
- const parallelId = `${parallelEntry.shortCode}.${slot}`;
309
- map.set(parallelId, {
310
- entry: parallelEntry,
311
- revalidate: parallelEntry.revalidate,
312
- });
313
- }
314
- }
404
+ for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
405
+ entry.parallel,
406
+ )) {
407
+ const parallelParentShortCode = parentShortCode ?? entry.shortCode;
408
+ const parallelId = `${parallelParentShortCode}.${slot}`;
409
+ map.set(parallelId, {
410
+ entry: parallelEntry,
411
+ revalidate: parallelEntry.revalidate,
412
+ });
315
413
  }
316
414
  }
317
415
 
318
416
  for (const layoutEntry of entry.layout) {
319
- processEntry(layoutEntry);
417
+ processEntry(layoutEntry, entry.shortCode);
320
418
  }
321
419
  }
322
420
 
@@ -348,7 +446,10 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
348
446
  const segments: ResolvedSegment[] = [];
349
447
  const matchedIds: string[] = [];
350
448
 
351
- for (const parallelEntry of entry.parallel) {
449
+ const resolvedParallelEntries = new Set<string>();
450
+ for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
451
+ entry.parallel,
452
+ )) {
352
453
  invariant(
353
454
  parallelEntry.type === "parallel",
354
455
  `Expected parallel entry, got: ${parallelEntry.type}`,
@@ -359,108 +460,106 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
359
460
  | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)
360
461
  | ReactNode
361
462
  >;
362
-
363
- for (const [slot, handler] of Object.entries(slots)) {
364
- const parallelId = `${entry.shortCode}.${slot}`;
365
-
366
- const isFullRefetch = clientSegmentIds.size === 0;
367
- // When the parent layout is new (not in client's segment set),
368
- // all its parallel children must be resolved and tracked.
369
- // Without this, navigating to a new layout with parallels
370
- // (e.g., BlogLayout with @sidebar) from a different route
371
- // would silently drop those parallel segments.
372
- const isNewParent = !clientSegmentIds.has(entry.shortCode);
373
- if (
374
- isFullRefetch ||
375
- clientSegmentIds.has(parallelId) ||
376
- belongsToRoute ||
377
- isNewParent
378
- ) {
379
- matchedIds.push(parallelId);
463
+ // In production, static handler bodies are evicted and the slot value
464
+ // may be undefined. The static store holds the pre-rendered component.
465
+ // We defer the handler check until after tryStaticSlot.
466
+ const handler = slots[slot];
467
+
468
+ const parallelId = `${entry.shortCode}.${slot}`;
469
+
470
+ const isFullRefetch = clientSegmentIds.size === 0;
471
+ const isNewParent = !clientSegmentIds.has(entry.shortCode);
472
+ // Always announce the slot in matchedIds — it's unconditionally appended
473
+ // to `segments` below, and a segment present in segments but missing from
474
+ // matched lets the client prune it (then it's missing from clientSegmentIds
475
+ // on the next request, perpetuating the staleness).
476
+ matchedIds.push(parallelId);
477
+
478
+ let shouldResolve: boolean;
479
+ if (isFullRefetch) {
480
+ // Client has nothing cached — slot MUST render. User revalidate fns are
481
+ // bypassed here because returning false would leave the segment blank
482
+ // with no client-side fallback.
483
+ traceFullRefetchedParallelSlot(parallelId, belongsToRoute);
484
+ shouldResolve = true;
485
+ } else {
486
+ // For non-empty client sets, consult user revalidate fns. When the slot
487
+ // is unknown to the client, override the type-derived default so the
488
+ // soft chain seeds with the right "new segment" / "parent-chain" value.
489
+ let defaultOverride: { value: boolean; reason: string } | undefined;
490
+ if (!clientSegmentIds.has(parallelId)) {
491
+ const value = belongsToRoute || isNewParent;
492
+ defaultOverride = {
493
+ value,
494
+ reason: value ? "new-segment" : "skip-parent-chain",
495
+ };
380
496
  }
381
497
 
382
- const shouldResolve = await (async () => {
383
- if (isFullRefetch) {
384
- if (isTraceActive()) {
385
- pushRevalidationTraceEntry({
386
- segmentId: parallelId,
387
- segmentType: "parallel",
388
- belongsToRoute,
389
- source: "parallel",
390
- defaultShouldRevalidate: true,
391
- finalShouldRevalidate: true,
392
- reason: "full-refetch",
393
- });
394
- }
395
- return true;
396
- }
397
- if (!clientSegmentIds.has(parallelId)) {
398
- const result = belongsToRoute || isNewParent;
399
- if (isTraceActive()) {
400
- pushRevalidationTraceEntry({
401
- segmentId: parallelId,
402
- segmentType: "parallel",
403
- belongsToRoute,
404
- source: "parallel",
405
- defaultShouldRevalidate: result,
406
- finalShouldRevalidate: result,
407
- reason: result ? "new-segment" : "skip-parent-chain",
408
- });
409
- }
410
- return result;
411
- }
412
-
413
- const dummySegment: ResolvedSegment = {
414
- id: parallelId,
415
- namespace: parallelEntry.id,
416
- type: "parallel",
417
- index: 0,
418
- component: null as any,
419
- params,
420
- slot,
421
- belongsToRoute,
422
- parallelName: `${parallelEntry.id}.${slot}`,
423
- ...(parallelEntry.mountPath
424
- ? { mountPath: parallelEntry.mountPath }
425
- : {}),
426
- };
498
+ const dummySegment: ResolvedSegment = {
499
+ id: parallelId,
500
+ namespace: parallelEntry.id,
501
+ type: "parallel",
502
+ index: 0,
503
+ component: null as any,
504
+ params,
505
+ slot,
506
+ belongsToRoute,
507
+ parallelName: `${parallelEntry.id}.${slot}`,
508
+ ...(parallelEntry.mountPath
509
+ ? { mountPath: parallelEntry.mountPath }
510
+ : {}),
511
+ };
427
512
 
428
- return await evaluateRevalidation({
429
- segment: dummySegment,
430
- prevParams,
431
- getPrevSegment: null,
432
- request,
433
- prevUrl,
434
- nextUrl,
435
- revalidations: parallelEntry.revalidate.map((fn, i) => ({
436
- name: `revalidate${i}`,
437
- fn,
438
- })),
439
- routeKey,
440
- context,
441
- actionContext,
442
- stale,
443
- traceSource: "parallel",
444
- });
445
- })();
446
- emitRevalidationDecision(
447
- parallelId,
448
- context.pathname,
513
+ shouldResolve = await evaluateRevalidation({
514
+ segment: dummySegment,
515
+ prevParams,
516
+ getPrevSegment: null,
517
+ request,
518
+ prevUrl,
519
+ nextUrl,
520
+ revalidations: parallelEntry.revalidate.map((fn, i) => ({
521
+ name: `revalidate${i}`,
522
+ fn,
523
+ })),
449
524
  routeKey,
450
- shouldResolve,
451
- );
525
+ context,
526
+ actionContext,
527
+ stale,
528
+ traceSource: "parallel",
529
+ defaultOverride,
530
+ });
531
+ }
532
+ emitRevalidationDecision(
533
+ parallelId,
534
+ context.pathname,
535
+ routeKey,
536
+ shouldResolve,
537
+ );
452
538
 
453
- let component: ReactNode | undefined;
454
- if (shouldResolve) {
455
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
456
- }
457
- if (component === undefined) {
458
- const hasLoadingFallback =
459
- parallelEntry.loading !== undefined &&
460
- parallelEntry.loading !== false;
461
- if (!shouldResolve) {
462
- component = null;
463
- } else if (hasLoadingFallback) {
539
+ let component: ReactNode | undefined;
540
+ let handlerRan = false;
541
+ if (shouldResolve) {
542
+ component = await tryStaticSlot(parallelEntry, slot, parallelId);
543
+ // tryStaticSlot returning a value means the static cache supplied the
544
+ // component — handler did NOT run. handlerRan stays false.
545
+ }
546
+ if (component === undefined) {
547
+ const hasLoadingFallback =
548
+ parallelEntry.loading !== undefined && parallelEntry.loading !== false;
549
+ if (!shouldResolve) {
550
+ component = null;
551
+ } else if (handler === undefined) {
552
+ // Handler evicted (production static slot) but static lookup missed.
553
+ // Nothing to render — use null so the client keeps its cached version.
554
+ component = null;
555
+ } else {
556
+ // Slot-keyed pushes — slot owns its own bucket, parent layout owns
557
+ // its own. On slot-only revalidations the partial merge updates only
558
+ // the slot's bucket; the parent's bucket stays intact.
559
+ (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
560
+ parallelId;
561
+ handlerRan = true;
562
+ if (hasLoadingFallback) {
464
563
  const result =
465
564
  typeof handler === "function" ? handler(context) : handler;
466
565
  if (result instanceof Promise) {
@@ -485,44 +584,48 @@ export async function resolveParallelSegmentsWithRevalidation<TEnv>(
485
584
  typeof handler === "function" ? await handler(context) : handler;
486
585
  }
487
586
  }
488
-
489
- segments.push({
490
- id: parallelId,
491
- namespace: parallelEntry.id,
492
- type: "parallel",
493
- index: 0,
494
- component,
495
- loading: parallelEntry.loading === false ? null : parallelEntry.loading,
496
- transition: parallelEntry.transition,
497
- params,
498
- slot,
499
- belongsToRoute,
500
- parallelName: `${parallelEntry.id}.${slot}`,
501
- ...(parallelEntry.mountPath
502
- ? { mountPath: parallelEntry.mountPath }
503
- : {}),
504
- });
505
587
  }
506
588
 
507
- if (!parallelEntry.loading) {
508
- const loaderResult = await resolveLoadersWithRevalidation(
509
- parallelEntry,
510
- context,
511
- belongsToRoute,
512
- clientSegmentIds,
513
- prevParams,
514
- request,
515
- prevUrl,
516
- nextUrl,
517
- routeKey,
518
- deps,
519
- actionContext,
520
- entry.shortCode,
521
- stale,
522
- );
523
- segments.push(...loaderResult.segments);
524
- matchedIds.push(...loaderResult.matchedIds);
589
+ segments.push({
590
+ id: parallelId,
591
+ namespace: parallelEntry.id,
592
+ type: "parallel",
593
+ index: 0,
594
+ component,
595
+ loading: parallelEntry.loading === false ? null : parallelEntry.loading,
596
+ transition: parallelEntry.transition,
597
+ params,
598
+ slot,
599
+ _handlerRan: handlerRan,
600
+ belongsToRoute,
601
+ parallelName: `${parallelEntry.id}.${slot}`,
602
+ ...(parallelEntry.mountPath
603
+ ? { mountPath: parallelEntry.mountPath }
604
+ : {}),
605
+ });
606
+
607
+ if (resolvedParallelEntries.has(parallelEntry.id)) {
608
+ continue;
525
609
  }
610
+
611
+ const loaderResult = await resolveLoadersWithRevalidation(
612
+ parallelEntry,
613
+ context,
614
+ belongsToRoute,
615
+ clientSegmentIds,
616
+ prevParams,
617
+ request,
618
+ prevUrl,
619
+ nextUrl,
620
+ routeKey,
621
+ deps,
622
+ actionContext,
623
+ entry.shortCode,
624
+ stale,
625
+ );
626
+ segments.push(...loaderResult.segments);
627
+ matchedIds.push(...loaderResult.matchedIds);
628
+ resolvedParallelEntries.add(parallelEntry.id);
526
629
  }
527
630
 
528
631
  return { segments, matchedIds };
@@ -548,6 +651,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
548
651
  ): Promise<{ segment: ResolvedSegment; matchedId: string }> {
549
652
  const matchedId = entry.shortCode;
550
653
 
654
+ let handlerRan = false;
551
655
  const component = await revalidate(
552
656
  async () => {
553
657
  const hasSegment = clientSegmentIds.has(entry.shortCode);
@@ -624,6 +728,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
624
728
  return shouldRevalidate;
625
729
  },
626
730
  async () => {
731
+ handlerRan = true;
627
732
  const doneHandler = track(`handler:${entry.id}`, 2);
628
733
  (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
629
734
  entry.shortCode;
@@ -638,13 +743,20 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
638
743
  return staticComponent;
639
744
  }
640
745
  const routeEntry = entry as Extract<EntryData, { type: "route" }>;
746
+ // For Passthrough routes at runtime, use the live handler instead of
747
+ // the build handler. At build time (context.build === true), always
748
+ // use the build handler from routeEntry.handler.
749
+ const handler =
750
+ !context.build && routeEntry.liveHandler
751
+ ? routeEntry.liveHandler
752
+ : routeEntry.handler;
641
753
  if (!routeEntry.loading) {
642
- const result = handleHandlerResult(await routeEntry.handler(context));
754
+ const result = handleHandlerResult(await handler(context));
643
755
  doneHandler();
644
756
  return result;
645
757
  }
646
758
  if (!actionContext) {
647
- const result = handleHandlerResult(routeEntry.handler(context));
759
+ const result = handleHandlerResult(handler(context));
648
760
  if (result instanceof Promise) {
649
761
  result.finally(doneHandler).catch(() => {});
650
762
  const tracked = deps.trackHandler(result, {
@@ -667,9 +779,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
667
779
  debugLog("segment.action", "resolving action route with awaited value", {
668
780
  entryId: entry.id,
669
781
  });
670
- const actionResult = handleHandlerResult(
671
- await routeEntry.handler(context),
672
- );
782
+ const actionResult = handleHandlerResult(await handler(context));
673
783
  doneHandler();
674
784
  return {
675
785
  content: Promise.resolve(actionResult),
@@ -678,10 +788,12 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
678
788
  () => null,
679
789
  );
680
790
 
791
+ // Normalize void handlers (undefined) to null so the reconciler's
792
+ // component === null checks work consistently for both void and explicit null.
681
793
  const resolvedComponent =
682
794
  component && typeof component === "object" && "content" in component
683
- ? (component as { content: ReactNode }).content
684
- : component;
795
+ ? ((component as { content: ReactNode }).content ?? null)
796
+ : (component ?? null);
685
797
 
686
798
  const segment: ResolvedSegment = {
687
799
  id: entry.shortCode,
@@ -698,6 +810,7 @@ export async function resolveEntryHandlerWithRevalidation<TEnv>(
698
810
  ? { layoutName: entry.id }
699
811
  : {}),
700
812
  ...(entry.mountPath ? { mountPath: entry.mountPath } : {}),
813
+ _handlerRan: handlerRan,
701
814
  };
702
815
 
703
816
  return { segment, matchedId };
@@ -778,11 +891,11 @@ export async function resolveSegmentWithRevalidation<TEnv>(
778
891
  prevUrl,
779
892
  nextUrl,
780
893
  routeKey,
781
- loaderPromises,
782
894
  true,
783
895
  deps,
784
896
  actionContext,
785
897
  stale,
898
+ entry,
786
899
  );
787
900
  segments.push(...orphanResult.segments);
788
901
  matchedIds.push(...orphanResult.matchedIds);
@@ -862,7 +975,6 @@ export async function resolveSegmentWithRevalidation<TEnv>(
862
975
  prevUrl,
863
976
  nextUrl,
864
977
  routeKey,
865
- loaderPromises,
866
978
  false,
867
979
  deps,
868
980
  actionContext,
@@ -889,11 +1001,12 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
889
1001
  prevUrl: URL,
890
1002
  nextUrl: URL,
891
1003
  routeKey: string,
892
- loaderPromises: Map<string, Promise<any>>,
893
1004
  belongsToRoute: boolean,
894
1005
  deps: SegmentResolutionDeps<TEnv>,
895
1006
  actionContext?: ActionContext,
896
1007
  stale?: boolean,
1008
+ /** Parent route entry — its loaders are inherited so parallel slots can access them. */
1009
+ parentRouteEntry?: EntryData,
897
1010
  ): Promise<SegmentRevalidationResult> {
898
1011
  invariant(
899
1012
  orphan.type === "layout" || orphan.type === "cache",
@@ -921,6 +1034,37 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
921
1034
  segments.push(...loaderResult.segments);
922
1035
  matchedIds.push(...loaderResult.matchedIds);
923
1036
 
1037
+ // Inherit parent route's loaders so parallel slots inside this layout
1038
+ // can access them via useLoader(). See resolveOrphanLayout in fresh.ts.
1039
+ if (
1040
+ parentRouteEntry &&
1041
+ parentRouteEntry.loader &&
1042
+ parentRouteEntry.loader.length > 0 &&
1043
+ Object.keys(orphan.parallel).length > 0
1044
+ ) {
1045
+ const inheritedResult = await resolveLoadersWithRevalidation(
1046
+ parentRouteEntry,
1047
+ context,
1048
+ belongsToRoute,
1049
+ clientSegmentIds,
1050
+ prevParams,
1051
+ request,
1052
+ prevUrl,
1053
+ nextUrl,
1054
+ routeKey,
1055
+ deps,
1056
+ actionContext,
1057
+ orphan.shortCode,
1058
+ stale,
1059
+ );
1060
+ // Tag as inherited so buildMatchResult can deduplicate when safe
1061
+ for (const s of inheritedResult.segments) {
1062
+ s._inherited = true;
1063
+ }
1064
+ segments.push(...inheritedResult.segments);
1065
+ matchedIds.push(...inheritedResult.matchedIds);
1066
+ }
1067
+
924
1068
  // Handler-first: resolve orphan layout handler before its parallels
925
1069
  // so ctx.set() values are visible to parallel children.
926
1070
  matchedIds.push(orphan.shortCode);
@@ -997,110 +1141,126 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
997
1141
  ...(orphan.mountPath ? { mountPath: orphan.mountPath } : {}),
998
1142
  });
999
1143
 
1000
- for (const parallelEntry of orphan.parallel) {
1144
+ const resolvedParallelEntries = new Set<string>();
1145
+ for (const { slot, entry: parallelEntry } of getParallelSlotEntries(
1146
+ orphan.parallel,
1147
+ )) {
1001
1148
  invariant(
1002
1149
  parallelEntry.type === "parallel",
1003
1150
  `Expected parallel entry, got: ${parallelEntry.type}`,
1004
1151
  );
1005
1152
 
1006
- const loaderResult = await resolveLoadersWithRevalidation(
1007
- parallelEntry,
1008
- context,
1009
- belongsToRoute,
1010
- clientSegmentIds,
1011
- prevParams,
1012
- request,
1013
- prevUrl,
1014
- nextUrl,
1015
- routeKey,
1016
- deps,
1017
- actionContext,
1018
- undefined,
1019
- stale,
1020
- );
1021
- segments.push(...loaderResult.segments);
1022
- matchedIds.push(...loaderResult.matchedIds);
1153
+ if (!resolvedParallelEntries.has(parallelEntry.id)) {
1154
+ // shortCodeOverride must match the parent layout, not the parallel entry.
1155
+ const loaderResult = await resolveLoadersWithRevalidation(
1156
+ parallelEntry,
1157
+ context,
1158
+ belongsToRoute,
1159
+ clientSegmentIds,
1160
+ prevParams,
1161
+ request,
1162
+ prevUrl,
1163
+ nextUrl,
1164
+ routeKey,
1165
+ deps,
1166
+ actionContext,
1167
+ orphan.shortCode,
1168
+ stale,
1169
+ );
1170
+ segments.push(...loaderResult.segments);
1171
+ matchedIds.push(...loaderResult.matchedIds);
1172
+ resolvedParallelEntries.add(parallelEntry.id);
1173
+ }
1023
1174
 
1024
1175
  const slots = parallelEntry.handler as Record<
1025
1176
  `@${string}`,
1026
1177
  | ((ctx: HandlerContext<any, TEnv>) => ReactNode | Promise<ReactNode>)
1027
1178
  | ReactNode
1028
1179
  >;
1180
+ // Handler may be undefined in production after static handler eviction.
1181
+ const handler = slots[slot];
1182
+
1183
+ // Use orphan.shortCode (the parent layout) to match the SSR path
1184
+ // (resolveParallelEntry receives parentShortCode = orphan.shortCode).
1185
+ // Using parallelEntry.shortCode would generate IDs the client doesn't know about.
1186
+ const parallelId = `${orphan.shortCode}.${slot}`;
1187
+ matchedIds.push(parallelId);
1188
+
1189
+ const isFullRefetch = clientSegmentIds.size === 0;
1190
+ let shouldResolve: boolean;
1191
+ if (isFullRefetch) {
1192
+ // Same load-bearing rationale as the main parallel path: full refetch
1193
+ // means the client has nothing to fall back to, so the slot must render.
1194
+ traceFullRefetchedParallelSlot(parallelId, belongsToRoute);
1195
+ shouldResolve = true;
1196
+ } else {
1197
+ // When slot is unknown to the client, seed the soft chain with `true`
1198
+ // (orphan parallels always belong to the route — we want them rendered
1199
+ // unless the user explicitly opts out via revalidate()).
1200
+ const defaultOverride = clientSegmentIds.has(parallelId)
1201
+ ? undefined
1202
+ : { value: true, reason: "new-segment" };
1029
1203
 
1030
- for (const [slot, handler] of Object.entries(slots)) {
1031
- // Use orphan.shortCode (the parent layout) to match the SSR path
1032
- // (resolveParallelEntry receives parentShortCode = orphan.shortCode).
1033
- // Using parallelEntry.shortCode would generate IDs the client doesn't know about.
1034
- const parallelId = `${orphan.shortCode}.${slot}`;
1035
- matchedIds.push(parallelId);
1036
-
1037
- const shouldResolve = await (async () => {
1038
- if (!clientSegmentIds.has(parallelId)) {
1039
- if (isTraceActive()) {
1040
- pushRevalidationTraceEntry({
1041
- segmentId: parallelId,
1042
- segmentType: "parallel",
1043
- belongsToRoute,
1044
- source: "parallel",
1045
- defaultShouldRevalidate: true,
1046
- finalShouldRevalidate: true,
1047
- reason: "new-segment",
1048
- });
1049
- }
1050
- return true;
1051
- }
1052
-
1053
- const dummySegment: ResolvedSegment = {
1054
- id: parallelId,
1055
- namespace: parallelEntry.id,
1056
- type: "parallel",
1057
- index: 0,
1058
- component: null as any,
1059
- params,
1060
- slot,
1061
- belongsToRoute,
1062
- parallelName: `${parallelEntry.id}.${slot}`,
1063
- ...(parallelEntry.mountPath
1064
- ? { mountPath: parallelEntry.mountPath }
1065
- : {}),
1066
- };
1204
+ const dummySegment: ResolvedSegment = {
1205
+ id: parallelId,
1206
+ namespace: parallelEntry.id,
1207
+ type: "parallel",
1208
+ index: 0,
1209
+ component: null as any,
1210
+ params,
1211
+ slot,
1212
+ belongsToRoute,
1213
+ parallelName: `${parallelEntry.id}.${slot}`,
1214
+ ...(parallelEntry.mountPath
1215
+ ? { mountPath: parallelEntry.mountPath }
1216
+ : {}),
1217
+ };
1067
1218
 
1068
- return await evaluateRevalidation({
1069
- segment: dummySegment,
1070
- prevParams,
1071
- getPrevSegment: null,
1072
- request,
1073
- prevUrl,
1074
- nextUrl,
1075
- revalidations: parallelEntry.revalidate.map((fn, i) => ({
1076
- name: `revalidate${i}`,
1077
- fn,
1078
- })),
1079
- routeKey,
1080
- context,
1081
- actionContext,
1082
- stale,
1083
- traceSource: "parallel",
1084
- });
1085
- })();
1086
- emitRevalidationDecision(
1087
- parallelId,
1088
- context.pathname,
1219
+ shouldResolve = await evaluateRevalidation({
1220
+ segment: dummySegment,
1221
+ prevParams,
1222
+ getPrevSegment: null,
1223
+ request,
1224
+ prevUrl,
1225
+ nextUrl,
1226
+ revalidations: parallelEntry.revalidate.map((fn, i) => ({
1227
+ name: `revalidate${i}`,
1228
+ fn,
1229
+ })),
1089
1230
  routeKey,
1090
- shouldResolve,
1091
- );
1231
+ context,
1232
+ actionContext,
1233
+ stale,
1234
+ traceSource: "parallel",
1235
+ defaultOverride,
1236
+ });
1237
+ }
1238
+ emitRevalidationDecision(
1239
+ parallelId,
1240
+ context.pathname,
1241
+ routeKey,
1242
+ shouldResolve,
1243
+ );
1092
1244
 
1093
- let component: ReactNode | undefined;
1094
- if (shouldResolve) {
1095
- component = await tryStaticSlot(parallelEntry, slot, parallelId);
1096
- }
1097
- if (component === undefined) {
1098
- const hasLoadingFallback =
1099
- parallelEntry.loading !== undefined &&
1100
- parallelEntry.loading !== false;
1101
- if (!shouldResolve) {
1102
- component = null;
1103
- } else if (hasLoadingFallback) {
1245
+ let component: ReactNode | undefined;
1246
+ let handlerRan = false;
1247
+ if (shouldResolve) {
1248
+ component = await tryStaticSlot(parallelEntry, slot, parallelId);
1249
+ }
1250
+ if (component === undefined) {
1251
+ const hasLoadingFallback =
1252
+ parallelEntry.loading !== undefined && parallelEntry.loading !== false;
1253
+ if (!shouldResolve) {
1254
+ component = null;
1255
+ } else if (handler === undefined) {
1256
+ // Handler evicted (production static slot) but static lookup missed.
1257
+ component = null;
1258
+ } else {
1259
+ // Slot-keyed pushes — see resolveParallelSegmentsWithRevalidation.
1260
+ (context as InternalHandlerContext<any, TEnv>)._currentSegmentId =
1261
+ parallelId;
1262
+ handlerRan = true;
1263
+ if (hasLoadingFallback) {
1104
1264
  const result =
1105
1265
  typeof handler === "function" ? handler(context) : handler;
1106
1266
  if (result instanceof Promise) {
@@ -1125,24 +1285,25 @@ export async function resolveOrphanLayoutWithRevalidation<TEnv>(
1125
1285
  typeof handler === "function" ? await handler(context) : handler;
1126
1286
  }
1127
1287
  }
1128
-
1129
- segments.push({
1130
- id: parallelId,
1131
- namespace: parallelEntry.id,
1132
- type: "parallel",
1133
- index: 0,
1134
- component,
1135
- loading: parallelEntry.loading === false ? null : parallelEntry.loading,
1136
- transition: parallelEntry.transition,
1137
- params,
1138
- slot,
1139
- belongsToRoute,
1140
- parallelName: `${parallelEntry.id}.${slot}`,
1141
- ...(parallelEntry.mountPath
1142
- ? { mountPath: parallelEntry.mountPath }
1143
- : {}),
1144
- });
1145
1288
  }
1289
+
1290
+ segments.push({
1291
+ id: parallelId,
1292
+ namespace: parallelEntry.id,
1293
+ type: "parallel",
1294
+ index: 0,
1295
+ component,
1296
+ loading: parallelEntry.loading === false ? null : parallelEntry.loading,
1297
+ transition: parallelEntry.transition,
1298
+ params,
1299
+ slot,
1300
+ _handlerRan: handlerRan,
1301
+ belongsToRoute,
1302
+ parallelName: `${parallelEntry.id}.${slot}`,
1303
+ ...(parallelEntry.mountPath
1304
+ ? { mountPath: parallelEntry.mountPath }
1305
+ : {}),
1306
+ });
1146
1307
  }
1147
1308
 
1148
1309
  return { segments, matchedIds };
@@ -1194,6 +1355,10 @@ export async function resolveAllSegmentsWithRevalidation<TEnv>(
1194
1355
  }
1195
1356
 
1196
1357
  const nonParallelEntry = entry as Exclude<EntryData, { type: "parallel" }>;
1358
+ if (entry.type === "cache") {
1359
+ const store = RSCRouterContext.getStore();
1360
+ if (store) store.insideCacheScope = true;
1361
+ }
1197
1362
  const doneEntry = track(`segment:${entry.id}`, 1);
1198
1363
  const resolved = await resolveWithErrorBoundary(
1199
1364
  nonParallelEntry,