@rangojs/router 0.0.0-experimental.2 → 0.0.0-experimental.204030a9

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 (1195) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +1037 -4
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/{src/__mocks__/version.ts → dist/__mocks__/version.js} +1 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +1779 -0
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +6440 -809
  798. package/dist/vite/index.js.bak +5448 -0
  799. package/dist/vite/index.js.map +1 -0
  800. package/dist/vite/index.named-routes.gen.ts +103 -0
  801. package/dist/vite/package-resolution.d.ts +43 -0
  802. package/dist/vite/package-resolution.d.ts.map +1 -0
  803. package/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
  804. package/dist/vite/package-resolution.js.map +1 -0
  805. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  806. package/dist/vite/virtual-entries.d.ts +25 -0
  807. package/dist/vite/virtual-entries.d.ts.map +1 -0
  808. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +18 -17
  809. package/dist/vite/virtual-entries.js.map +1 -0
  810. package/package.json +140 -57
  811. package/skills/breadcrumbs/SKILL.md +252 -0
  812. package/skills/bundle-analysis/SKILL.md +159 -0
  813. package/skills/cache-guide/SKILL.md +484 -0
  814. package/skills/caching/SKILL.md +276 -226
  815. package/skills/composability/SKILL.md +197 -0
  816. package/skills/debug-manifest/SKILL.md +112 -0
  817. package/skills/document-cache/SKILL.md +106 -53
  818. package/skills/fonts/SKILL.md +167 -0
  819. package/skills/handler-use/SKILL.md +364 -0
  820. package/skills/hooks/SKILL.md +621 -67
  821. package/skills/host-router/SKILL.md +243 -0
  822. package/skills/i18n/SKILL.md +276 -0
  823. package/skills/intercept/SKILL.md +265 -202
  824. package/skills/layout/SKILL.md +261 -146
  825. package/skills/links/SKILL.md +471 -0
  826. package/skills/loader/SKILL.md +701 -250
  827. package/skills/middleware/SKILL.md +254 -320
  828. package/skills/migrate-nextjs/SKILL.md +562 -0
  829. package/skills/migrate-react-router/SKILL.md +769 -0
  830. package/skills/mime-routes/SKILL.md +155 -0
  831. package/skills/observability/SKILL.md +137 -0
  832. package/skills/parallel/SKILL.md +399 -158
  833. package/skills/prerender/SKILL.md +666 -0
  834. package/skills/rango/SKILL.md +338 -0
  835. package/skills/react-compiler/SKILL.md +168 -0
  836. package/skills/response-routes/SKILL.md +468 -0
  837. package/skills/route/SKILL.md +417 -89
  838. package/skills/router-setup/SKILL.md +389 -268
  839. package/skills/server-actions/SKILL.md +751 -0
  840. package/skills/streams-and-websockets/SKILL.md +283 -0
  841. package/skills/tailwind/SKILL.md +129 -0
  842. package/skills/testing/SKILL.md +549 -0
  843. package/skills/theme/SKILL.md +36 -11
  844. package/skills/typesafety/SKILL.md +747 -174
  845. package/skills/use-cache/SKILL.md +353 -0
  846. package/skills/view-transitions/SKILL.md +294 -0
  847. package/src/__augment-tests__/augment.ts +81 -0
  848. package/src/__augment-tests__/augmented.check.ts +117 -0
  849. package/src/__internal.ts +273 -0
  850. package/src/bin/rango.ts +321 -0
  851. package/src/browser/action-coordinator.ts +114 -0
  852. package/src/browser/app-shell.ts +52 -0
  853. package/src/browser/app-version.ts +14 -0
  854. package/src/browser/event-controller.ts +172 -128
  855. package/src/browser/history-state.ts +101 -0
  856. package/src/browser/index.ts +3 -3
  857. package/src/browser/intercept-utils.ts +52 -0
  858. package/src/browser/link-interceptor.ts +24 -4
  859. package/src/browser/logging.ts +55 -0
  860. package/src/browser/merge-segment-loaders.ts +20 -12
  861. package/src/browser/navigation-bridge.ts +390 -557
  862. package/src/browser/navigation-client.ts +228 -70
  863. package/src/browser/navigation-store.ts +104 -63
  864. package/src/browser/navigation-transaction.ts +279 -0
  865. package/src/browser/network-error-handler.ts +61 -0
  866. package/src/browser/partial-update.ts +397 -303
  867. package/src/browser/prefetch/cache.ts +314 -0
  868. package/src/browser/prefetch/fetch.ts +282 -0
  869. package/src/browser/prefetch/observer.ts +65 -0
  870. package/src/browser/prefetch/policy.ts +48 -0
  871. package/src/browser/prefetch/queue.ts +191 -0
  872. package/src/browser/prefetch/resource-ready.ts +77 -0
  873. package/src/browser/rango-state.ts +152 -0
  874. package/src/browser/react/Link.tsx +258 -74
  875. package/src/browser/react/NavigationProvider.tsx +237 -49
  876. package/src/browser/react/context.ts +11 -0
  877. package/src/browser/react/filter-segment-order.ts +55 -0
  878. package/src/browser/react/index.ts +15 -12
  879. package/src/browser/react/location-state-shared.ts +269 -56
  880. package/src/browser/react/location-state.ts +90 -19
  881. package/src/browser/react/mount-context.ts +37 -0
  882. package/src/browser/react/nonce-context.ts +23 -0
  883. package/src/browser/react/shallow-equal.ts +27 -0
  884. package/src/browser/react/use-action.ts +29 -51
  885. package/src/browser/react/use-client-cache.ts +5 -3
  886. package/src/browser/react/use-handle.ts +41 -98
  887. package/src/browser/react/use-href.tsx +20 -188
  888. package/src/browser/react/use-link-status.ts +6 -5
  889. package/src/browser/react/use-mount.ts +31 -0
  890. package/src/browser/react/use-navigation.ts +49 -80
  891. package/src/browser/react/use-params.ts +77 -0
  892. package/src/browser/react/use-pathname.ts +47 -0
  893. package/src/browser/react/use-reverse.ts +106 -0
  894. package/src/browser/react/use-router.ts +96 -0
  895. package/src/browser/react/use-search-params.ts +56 -0
  896. package/src/browser/react/use-segments.ts +85 -99
  897. package/src/browser/response-adapter.ts +98 -0
  898. package/src/browser/rsc-router.tsx +273 -78
  899. package/src/browser/scroll-restoration.ts +132 -49
  900. package/src/browser/segment-reconciler.ts +243 -0
  901. package/src/browser/segment-structure-assert.ts +83 -0
  902. package/src/browser/server-action-bridge.ts +504 -589
  903. package/src/browser/shallow.ts +6 -1
  904. package/src/browser/types.ts +184 -58
  905. package/src/browser/validate-redirect-origin.ts +29 -0
  906. package/src/build/collect-fallback-refs.ts +107 -0
  907. package/src/build/generate-manifest.ts +463 -0
  908. package/src/build/generate-route-types.ts +41 -0
  909. package/src/build/index.ts +37 -0
  910. package/src/build/route-trie.ts +292 -0
  911. package/src/build/route-types/ast-helpers.ts +25 -0
  912. package/src/build/route-types/ast-route-extraction.ts +98 -0
  913. package/src/build/route-types/codegen.ts +102 -0
  914. package/src/build/route-types/include-resolution.ts +418 -0
  915. package/src/build/route-types/param-extraction.ts +48 -0
  916. package/src/build/route-types/per-module-writer.ts +131 -0
  917. package/src/build/route-types/router-processing.ts +659 -0
  918. package/src/build/route-types/scan-filter.ts +85 -0
  919. package/src/build/route-types/source-scan.ts +118 -0
  920. package/src/build/runtime-discovery.ts +220 -0
  921. package/src/cache/background-task.ts +34 -0
  922. package/src/cache/cache-key-utils.ts +44 -0
  923. package/src/cache/cache-policy.ts +125 -0
  924. package/src/cache/cache-runtime.ts +342 -0
  925. package/src/cache/cache-scope.ts +150 -306
  926. package/src/cache/cf/cf-cache-store.ts +619 -24
  927. package/src/cache/cf/index.ts +13 -3
  928. package/src/cache/document-cache.ts +116 -77
  929. package/src/cache/handle-capture.ts +81 -0
  930. package/src/cache/handle-snapshot.ts +41 -0
  931. package/src/cache/index.ts +1 -15
  932. package/src/cache/memory-segment-store.ts +191 -13
  933. package/src/cache/profile-registry.ts +73 -0
  934. package/src/cache/read-through-swr.ts +134 -0
  935. package/src/cache/segment-codec.ts +256 -0
  936. package/src/cache/taint.ts +153 -0
  937. package/src/cache/types.ts +76 -121
  938. package/src/client.rsc.tsx +15 -15
  939. package/src/client.tsx +145 -309
  940. package/src/component-utils.ts +4 -4
  941. package/src/components/DefaultDocument.tsx +6 -2
  942. package/src/context-var.ts +156 -0
  943. package/src/debug.ts +243 -0
  944. package/src/decode-loader-results.ts +36 -0
  945. package/src/errors.ts +138 -3
  946. package/src/handle.ts +90 -22
  947. package/src/handles/MetaTags.tsx +76 -23
  948. package/src/handles/breadcrumbs.ts +66 -0
  949. package/src/handles/index.ts +1 -0
  950. package/src/handles/meta.ts +32 -15
  951. package/src/host/cookie-handler.ts +165 -0
  952. package/src/host/errors.ts +97 -0
  953. package/src/host/index.ts +53 -0
  954. package/src/host/pattern-matcher.ts +214 -0
  955. package/src/host/router.ts +424 -0
  956. package/src/host/testing.ts +79 -0
  957. package/src/host/types.ts +175 -0
  958. package/src/host/utils.ts +25 -0
  959. package/src/href-client.ts +263 -49
  960. package/src/index.rsc.ts +190 -29
  961. package/src/index.ts +278 -38
  962. package/src/internal-debug.ts +11 -0
  963. package/src/loader-store.ts +500 -0
  964. package/src/loader.rsc.ts +24 -142
  965. package/src/loader.ts +21 -11
  966. package/src/missing-id-error.ts +68 -0
  967. package/src/network-error-thrower.tsx +3 -1
  968. package/src/outlet-context.ts +1 -1
  969. package/src/outlet-provider.tsx +45 -0
  970. package/src/prerender/param-hash.ts +37 -0
  971. package/src/prerender/store.ts +186 -0
  972. package/src/prerender.ts +524 -0
  973. package/src/response-utils.ts +37 -0
  974. package/src/reverse.ts +380 -0
  975. package/src/root-error-boundary.tsx +41 -29
  976. package/src/route-content-wrapper.tsx +15 -39
  977. package/src/route-definition/dsl-helpers.ts +1109 -0
  978. package/src/route-definition/helper-factories.ts +90 -0
  979. package/src/route-definition/helpers-types.ts +506 -0
  980. package/src/route-definition/index.ts +55 -0
  981. package/src/route-definition/redirect.ts +101 -0
  982. package/src/route-definition/resolve-handler-use.ts +155 -0
  983. package/src/route-definition/use-item-types.ts +32 -0
  984. package/src/route-definition.ts +1 -1371
  985. package/src/route-map-builder.ts +247 -112
  986. package/src/route-name.ts +53 -0
  987. package/src/route-types.ts +99 -42
  988. package/src/router/basename.ts +14 -0
  989. package/src/router/content-negotiation.ts +228 -0
  990. package/src/router/debug-manifest.ts +72 -0
  991. package/src/router/error-handling.ts +10 -10
  992. package/src/router/find-match.ts +160 -0
  993. package/src/router/handler-context.ts +420 -88
  994. package/src/router/intercept-resolution.ts +388 -0
  995. package/src/router/lazy-includes.ts +237 -0
  996. package/src/router/loader-resolution.ts +374 -128
  997. package/src/router/logging.ts +251 -0
  998. package/src/router/manifest.ts +187 -43
  999. package/src/router/match-api.ts +556 -0
  1000. package/src/router/match-context.ts +6 -4
  1001. package/src/router/match-handlers.ts +483 -0
  1002. package/src/router/match-middleware/background-revalidation.ts +108 -93
  1003. package/src/router/match-middleware/cache-lookup.ts +413 -10
  1004. package/src/router/match-middleware/cache-store.ts +99 -26
  1005. package/src/router/match-middleware/intercept-resolution.ts +57 -17
  1006. package/src/router/match-middleware/segment-resolution.ts +80 -6
  1007. package/src/router/match-pipelines.ts +10 -45
  1008. package/src/router/match-result.ts +156 -36
  1009. package/src/router/metrics.ts +241 -16
  1010. package/src/router/middleware-cookies.ts +55 -0
  1011. package/src/router/middleware-types.ts +209 -0
  1012. package/src/router/middleware.ts +359 -346
  1013. package/src/router/navigation-snapshot.ts +182 -0
  1014. package/src/router/pattern-matching.ts +416 -41
  1015. package/src/router/prerender-match.ts +502 -0
  1016. package/src/router/preview-match.ts +100 -0
  1017. package/src/router/request-classification.ts +286 -0
  1018. package/src/router/revalidation.ts +195 -40
  1019. package/src/router/route-snapshot.ts +245 -0
  1020. package/src/router/router-context.ts +45 -23
  1021. package/src/router/router-interfaces.ts +501 -0
  1022. package/src/router/router-options.ts +657 -0
  1023. package/src/router/router-registry.ts +21 -0
  1024. package/src/router/segment-resolution/fresh.ts +769 -0
  1025. package/src/router/segment-resolution/helpers.ts +268 -0
  1026. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1027. package/src/router/segment-resolution/revalidation.ts +1420 -0
  1028. package/src/router/segment-resolution/static-store.ts +67 -0
  1029. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  1030. package/src/router/segment-resolution.ts +21 -0
  1031. package/src/router/segment-wrappers.ts +291 -0
  1032. package/src/router/substitute-pattern-params.ts +56 -0
  1033. package/src/router/telemetry-otel.ts +299 -0
  1034. package/src/router/telemetry.ts +399 -0
  1035. package/src/router/timeout.ts +148 -0
  1036. package/src/router/trie-matching.ts +244 -0
  1037. package/src/router/types.ts +87 -4
  1038. package/src/router/url-params.ts +49 -0
  1039. package/src/router.ts +768 -3574
  1040. package/src/rsc/handler-context.ts +45 -0
  1041. package/src/rsc/handler.ts +894 -806
  1042. package/src/rsc/helpers.ts +201 -19
  1043. package/src/rsc/index.ts +5 -25
  1044. package/src/rsc/loader-fetch.ts +229 -0
  1045. package/src/rsc/manifest-init.ts +90 -0
  1046. package/src/rsc/nonce.ts +14 -0
  1047. package/src/rsc/origin-guard.ts +159 -0
  1048. package/src/rsc/progressive-enhancement.ts +395 -0
  1049. package/src/rsc/response-error.ts +37 -0
  1050. package/src/rsc/response-route-handler.ts +340 -0
  1051. package/src/rsc/rsc-rendering.ts +230 -0
  1052. package/src/rsc/runtime-warnings.ts +41 -0
  1053. package/src/rsc/server-action.ts +336 -0
  1054. package/src/rsc/ssr-setup.ts +144 -0
  1055. package/src/rsc/types.ts +54 -14
  1056. package/src/search-params.ts +230 -0
  1057. package/src/segment-content-promise.ts +67 -0
  1058. package/src/segment-loader-promise.ts +122 -0
  1059. package/src/segment-system.tsx +265 -115
  1060. package/src/serialize.ts +243 -0
  1061. package/src/server/context.ts +480 -90
  1062. package/src/server/cookie-store.ts +214 -0
  1063. package/src/server/fetchable-loader-store.ts +37 -0
  1064. package/src/server/handle-store.ts +117 -20
  1065. package/src/server/loader-registry.ts +24 -64
  1066. package/src/server/request-context.ts +613 -109
  1067. package/src/server.ts +36 -131
  1068. package/src/ssr/index.tsx +164 -25
  1069. package/src/static-handler.ts +126 -0
  1070. package/src/testing/cache-status.ts +166 -0
  1071. package/src/testing/collect-handle.ts +63 -0
  1072. package/src/testing/dispatch.ts +440 -0
  1073. package/src/testing/dom.entry.ts +22 -0
  1074. package/src/testing/e2e/fixture.ts +154 -0
  1075. package/src/testing/e2e/index.ts +149 -0
  1076. package/src/testing/e2e/matchers.ts +51 -0
  1077. package/src/testing/e2e/page-helpers.ts +272 -0
  1078. package/src/testing/e2e/parity.ts +306 -0
  1079. package/src/testing/e2e/server.ts +183 -0
  1080. package/src/testing/flight-matchers.ts +104 -0
  1081. package/src/testing/flight-runtime.d.ts +21 -0
  1082. package/src/testing/flight.entry.ts +22 -0
  1083. package/src/testing/flight.ts +182 -0
  1084. package/src/testing/generated-routes.ts +223 -0
  1085. package/src/testing/index.ts +98 -0
  1086. package/src/testing/internal/context.ts +151 -0
  1087. package/src/testing/render-route.tsx +536 -0
  1088. package/src/testing/run-loader.ts +296 -0
  1089. package/src/testing/run-middleware.ts +170 -0
  1090. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1091. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1092. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1093. package/src/testing/vitest-stubs/version.ts +5 -0
  1094. package/src/testing/vitest.ts +112 -0
  1095. package/src/theme/ThemeProvider.tsx +21 -15
  1096. package/src/theme/ThemeScript.tsx +5 -5
  1097. package/src/theme/constants.ts +11 -4
  1098. package/src/theme/index.ts +4 -14
  1099. package/src/theme/theme-context.ts +5 -31
  1100. package/src/theme/theme-script.ts +21 -18
  1101. package/src/theme/types.ts +1 -1
  1102. package/src/types/boundaries.ts +158 -0
  1103. package/src/types/cache-types.ts +198 -0
  1104. package/src/types/error-types.ts +192 -0
  1105. package/src/types/global-namespace.ts +113 -0
  1106. package/src/types/handler-context.ts +809 -0
  1107. package/src/types/index.ts +89 -0
  1108. package/src/types/loader-types.ts +209 -0
  1109. package/src/types/request-scope.ts +126 -0
  1110. package/src/types/route-config.ts +170 -0
  1111. package/src/types/route-entry.ts +120 -0
  1112. package/src/types/segments.ts +184 -0
  1113. package/src/types.ts +1 -1561
  1114. package/src/urls/include-helper.ts +164 -0
  1115. package/src/urls/index.ts +50 -0
  1116. package/src/urls/path-helper-types.ts +380 -0
  1117. package/src/urls/path-helper.ts +329 -0
  1118. package/src/urls/pattern-types.ts +124 -0
  1119. package/src/urls/response-types.ts +109 -0
  1120. package/src/urls/type-extraction.ts +282 -0
  1121. package/src/urls/urls-function.ts +94 -0
  1122. package/src/urls.ts +1 -726
  1123. package/src/use-loader.tsx +559 -108
  1124. package/src/vite/debug.ts +185 -0
  1125. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1126. package/src/vite/discovery/discover-routers.ts +398 -0
  1127. package/src/vite/discovery/discovery-errors.ts +194 -0
  1128. package/src/vite/discovery/gate-state.ts +171 -0
  1129. package/src/vite/discovery/prerender-collection.ts +480 -0
  1130. package/src/vite/discovery/route-types-writer.ts +214 -0
  1131. package/src/vite/discovery/self-gen-tracking.ts +73 -0
  1132. package/src/vite/discovery/state.ts +150 -0
  1133. package/src/vite/discovery/virtual-module-codegen.ts +193 -0
  1134. package/src/vite/index.ts +20 -785
  1135. package/src/vite/plugin-types.ts +170 -0
  1136. package/src/vite/plugins/cjs-to-esm.ts +94 -0
  1137. package/src/vite/plugins/client-ref-dedup.ts +131 -0
  1138. package/src/vite/plugins/client-ref-hashing.ts +128 -0
  1139. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1140. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1141. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1142. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +109 -66
  1143. package/src/vite/plugins/expose-id-utils.ts +303 -0
  1144. package/src/vite/plugins/expose-ids/export-analysis.ts +376 -0
  1145. package/src/vite/plugins/expose-ids/handler-transform.ts +156 -0
  1146. package/src/vite/plugins/expose-ids/loader-transform.ts +72 -0
  1147. package/src/vite/plugins/expose-ids/router-transform.ts +127 -0
  1148. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1149. package/src/vite/plugins/expose-internal-ids.ts +796 -0
  1150. package/src/vite/plugins/performance-tracks.ts +92 -0
  1151. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1152. package/src/vite/plugins/use-cache-transform.ts +338 -0
  1153. package/src/vite/plugins/version-injector.ts +99 -0
  1154. package/src/vite/plugins/version-plugin.ts +323 -0
  1155. package/src/vite/plugins/virtual-entries.ts +123 -0
  1156. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1157. package/src/vite/rango.ts +549 -0
  1158. package/src/vite/router-discovery.ts +1568 -0
  1159. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1160. package/src/vite/utils/banner.ts +36 -0
  1161. package/src/vite/utils/bundle-analysis.ts +139 -0
  1162. package/src/vite/utils/client-chunks.ts +190 -0
  1163. package/src/vite/utils/forward-user-plugins.ts +193 -0
  1164. package/src/vite/utils/manifest-utils.ts +86 -0
  1165. package/src/vite/utils/package-resolution.ts +161 -0
  1166. package/src/vite/utils/prerender-utils.ts +222 -0
  1167. package/src/vite/utils/shared-utils.ts +251 -0
  1168. package/CLAUDE.md +0 -7
  1169. package/src/__tests__/component-utils.test.ts +0 -76
  1170. package/src/__tests__/route-definition.test.ts +0 -63
  1171. package/src/__tests__/urls.test.tsx +0 -436
  1172. package/src/browser/lru-cache.ts +0 -69
  1173. package/src/browser/request-controller.ts +0 -164
  1174. package/src/cache/__tests__/document-cache.test.ts +0 -522
  1175. package/src/cache/__tests__/memory-segment-store.test.ts +0 -487
  1176. package/src/cache/__tests__/memory-store.test.ts +0 -484
  1177. package/src/cache/cf/__tests__/cf-cache-store.test.ts +0 -428
  1178. package/src/cache/memory-store.ts +0 -253
  1179. package/src/href.ts +0 -177
  1180. package/src/route-utils.ts +0 -89
  1181. package/src/router/__tests__/match-context.test.ts +0 -104
  1182. package/src/router/__tests__/match-pipelines.test.ts +0 -537
  1183. package/src/router/__tests__/match-result.test.ts +0 -566
  1184. package/src/router/__tests__/on-error.test.ts +0 -935
  1185. package/src/router/__tests__/pattern-matching.test.ts +0 -577
  1186. package/src/router/middleware.test.ts +0 -1355
  1187. package/src/rsc/__tests__/helpers.test.ts +0 -175
  1188. package/src/server/__tests__/request-context.test.ts +0 -171
  1189. package/src/ssr/__tests__/ssr-handler.test.tsx +0 -188
  1190. package/src/theme/__tests__/theme.test.ts +0 -120
  1191. package/src/vite/__tests__/expose-loader-id.test.ts +0 -117
  1192. package/src/vite/expose-handle-id.ts +0 -209
  1193. package/src/vite/expose-loader-id.ts +0 -357
  1194. package/src/vite/expose-location-state-id.ts +0 -177
  1195. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Request Classification
3
+ *
4
+ * Replaces the implicit "preview then match again" model with a clean
5
+ * two-stage architecture:
6
+ *
7
+ * 1. Classification — classifyRequest() produces a RequestPlan that answers
8
+ * all routing questions once: target route, request mode, route middleware,
9
+ * response-route info, negotiation state.
10
+ *
11
+ * 2. Execution — executeRequest() dispatches on the plan to the appropriate
12
+ * handler (response route, loader fetch, full render, partial render,
13
+ * action revalidation, PE render).
14
+ *
15
+ * Builds on RouteSnapshot from route-snapshot.ts.
16
+ */
17
+
18
+ import { RouteNotFoundError } from "../errors.js";
19
+ import type { EntryData } from "../server/context.js";
20
+ import type { CollectedMiddleware } from "./middleware-types.js";
21
+ import type { RouteMatchResult } from "./pattern-matching.js";
22
+ import { negotiateRoute } from "./content-negotiation.js";
23
+ import { stripInternalParams } from "./handler-context.js";
24
+ import { resolveRoute, type RouteSnapshot } from "./route-snapshot.js";
25
+
26
+ // ---------------------------------------------------------------------------
27
+ // RequestPlan — discriminated union
28
+ // ---------------------------------------------------------------------------
29
+
30
+ interface RedirectPlan<TEnv = any> {
31
+ mode: "redirect";
32
+ route: RouteSnapshot<TEnv>;
33
+ redirectUrl: string;
34
+ }
35
+
36
+ interface VersionMismatchPlan<TEnv = any> {
37
+ mode: "version-mismatch";
38
+ /** May be undefined when version mismatch is detected before route resolution */
39
+ route?: RouteSnapshot<TEnv>;
40
+ reloadUrl: string;
41
+ }
42
+
43
+ interface ResponseRoutePlan<TEnv = any> {
44
+ mode: "response";
45
+ route: RouteSnapshot<TEnv>;
46
+ handler: Function;
47
+ responseType: string;
48
+ negotiated: boolean;
49
+ manifestEntry: EntryData;
50
+ routeMiddleware: CollectedMiddleware[];
51
+ }
52
+
53
+ interface LoaderFetchPlan<TEnv = any> {
54
+ mode: "loader";
55
+ route: RouteSnapshot<TEnv>;
56
+ }
57
+
58
+ interface PeRenderPlan<TEnv = any> {
59
+ mode: "pe-render";
60
+ route: RouteSnapshot<TEnv>;
61
+ }
62
+
63
+ interface ActionPlan<TEnv = any> {
64
+ mode: "action";
65
+ route: RouteSnapshot<TEnv>;
66
+ actionId: string;
67
+ negotiated: boolean;
68
+ }
69
+
70
+ interface FullRenderPlan<TEnv = any> {
71
+ mode: "full-render";
72
+ route: RouteSnapshot<TEnv>;
73
+ negotiated: boolean;
74
+ }
75
+
76
+ interface PartialRenderPlan<TEnv = any> {
77
+ mode: "partial-render";
78
+ route: RouteSnapshot<TEnv>;
79
+ negotiated: boolean;
80
+ }
81
+
82
+ /**
83
+ * The output of request classification. A discriminated union where each
84
+ * variant carries exactly the fields needed for its execution path.
85
+ */
86
+ export type RequestPlan<TEnv = any> =
87
+ | RedirectPlan<TEnv>
88
+ | VersionMismatchPlan<TEnv>
89
+ | ResponseRoutePlan<TEnv>
90
+ | LoaderFetchPlan<TEnv>
91
+ | PeRenderPlan<TEnv>
92
+ | ActionPlan<TEnv>
93
+ | FullRenderPlan<TEnv>
94
+ | PartialRenderPlan<TEnv>;
95
+
96
+ /**
97
+ * Plans that have passed the terminal-check gate (version-mismatch handled)
98
+ * and are ready for execution. Always have a `route` field.
99
+ */
100
+ export type ExecutableRequestPlan<TEnv = any> = Exclude<
101
+ RequestPlan<TEnv>,
102
+ VersionMismatchPlan<TEnv>
103
+ >;
104
+
105
+ /**
106
+ * Re-export individual plan types for consumers that need to narrow.
107
+ */
108
+ export type {
109
+ RedirectPlan,
110
+ VersionMismatchPlan,
111
+ ResponseRoutePlan,
112
+ LoaderFetchPlan,
113
+ PeRenderPlan,
114
+ ActionPlan,
115
+ FullRenderPlan,
116
+ PartialRenderPlan,
117
+ };
118
+
119
+ // ---------------------------------------------------------------------------
120
+ // classifyRequest — the single authoritative classification step
121
+ // ---------------------------------------------------------------------------
122
+
123
+ export interface ClassifyRequestDeps<TEnv = any> {
124
+ findMatch: (pathname: string) => RouteMatchResult<TEnv> | null;
125
+ routerVersion: string;
126
+ routerId: string;
127
+ }
128
+
129
+ /**
130
+ * Classify an incoming request into a RequestPlan.
131
+ *
132
+ * This is the single source of truth for request mode detection. It replaces
133
+ * the scattered previewMatch + isAction/isLoaderFetch/isPartial checks in
134
+ * handler.ts.
135
+ *
136
+ * Classification order:
137
+ * 1. Route resolution (findMatch + loadManifest via resolveRoute lite)
138
+ * 2. Redirect detection
139
+ * 3. Version mismatch
140
+ * 4. Response route + content negotiation
141
+ * 5. Mode detection from headers/params
142
+ */
143
+ export async function classifyRequest<TEnv = any>(
144
+ request: Request,
145
+ url: URL,
146
+ deps: ClassifyRequestDeps<TEnv>,
147
+ ): Promise<RequestPlan<TEnv>> {
148
+ const pathname = url.pathname;
149
+ const isAction =
150
+ request.headers.has("rsc-action") || url.searchParams.has("_rsc_action");
151
+
152
+ // Version mismatch — runs BEFORE route resolution so stale clients
153
+ // requesting removed routes get a reload, not a 404.
154
+ const clientVersion = url.searchParams.get("_rsc_v");
155
+ if (
156
+ deps.routerVersion &&
157
+ clientVersion &&
158
+ clientVersion !== deps.routerVersion
159
+ ) {
160
+ // Strip internal _rsc_* params so the browser reloads to a clean URL
161
+ let reloadUrl = stripInternalParams(url).toString();
162
+ if (isAction) {
163
+ const referer = request.headers.get("referer");
164
+ if (referer) {
165
+ try {
166
+ const refererUrl = new URL(referer);
167
+ if (refererUrl.origin === url.origin) {
168
+ reloadUrl = referer;
169
+ }
170
+ } catch {
171
+ // Malformed referer, fall back to stripped url
172
+ }
173
+ }
174
+ }
175
+
176
+ return {
177
+ mode: "version-mismatch",
178
+ reloadUrl,
179
+ };
180
+ }
181
+
182
+ // No metricsStore — classification is a lightweight gating step.
183
+ // Route-matching and manifest-loading metrics belong in the match path
184
+ // (createMatchContextForFull/Partial) which runs the authoritative resolution.
185
+ const result = await resolveRoute<TEnv>(pathname, {
186
+ findMatch: deps.findMatch,
187
+ lite: true,
188
+ });
189
+
190
+ if (!result) {
191
+ throw new RouteNotFoundError(`No route matched for ${pathname}`, {
192
+ cause: { pathname, method: request.method },
193
+ });
194
+ }
195
+
196
+ // Redirect
197
+ if (result.type === "redirect") {
198
+ const snapshot: RouteSnapshot<TEnv> = {
199
+ matched: result as any,
200
+ manifestEntry: null as any,
201
+ entries: [],
202
+ routeKey: "",
203
+ localRouteName: "",
204
+ params: {},
205
+ routeMiddleware: [],
206
+ cacheScope: null,
207
+ isPassthrough: false,
208
+ };
209
+ return {
210
+ mode: "redirect",
211
+ route: snapshot,
212
+ redirectUrl: result.redirectTo + url.search,
213
+ };
214
+ }
215
+
216
+ const snapshot = result.snapshot;
217
+
218
+ // Response route — non-RSC short-circuit (JSON, streaming, etc.)
219
+ const responseResult = await classifyResponseRoute(
220
+ request,
221
+ pathname,
222
+ snapshot,
223
+ );
224
+ if (responseResult) {
225
+ return responseResult;
226
+ }
227
+
228
+ // Mode detection from request signals
229
+ const actionId =
230
+ request.headers.get("rsc-action") || url.searchParams.get("_rsc_action");
231
+ const isLoaderFetch = url.searchParams.has("_rsc_loader");
232
+
233
+ const hasVariants =
234
+ snapshot.matched.negotiateVariants &&
235
+ snapshot.matched.negotiateVariants.length > 0;
236
+ const negotiated = !!hasVariants;
237
+
238
+ if (isAction && actionId) {
239
+ return { mode: "action", route: snapshot, actionId, negotiated };
240
+ }
241
+
242
+ if (isLoaderFetch) {
243
+ return { mode: "loader", route: snapshot };
244
+ }
245
+
246
+ // PE detection: POST with form content-type, but not a server action
247
+ const contentType = request.headers.get("content-type") || "";
248
+ const isFormSubmission =
249
+ contentType.includes("multipart/form-data") ||
250
+ contentType.includes("application/x-www-form-urlencoded");
251
+ if (request.method === "POST" && !isAction && isFormSubmission) {
252
+ return { mode: "pe-render", route: snapshot };
253
+ }
254
+
255
+ // App switch: client's routerId doesn't match this router
256
+ const clientRouterId = url.searchParams.get("_rsc_rid");
257
+ const isAppSwitch = !!(clientRouterId && clientRouterId !== deps.routerId);
258
+ const isPartial = url.searchParams.has("_rsc_partial") && !isAppSwitch;
259
+
260
+ if (isPartial) {
261
+ return { mode: "partial-render", route: snapshot, negotiated };
262
+ }
263
+
264
+ return { mode: "full-render", route: snapshot, negotiated };
265
+ }
266
+
267
+ // ---------------------------------------------------------------------------
268
+ // Content negotiation for response routes
269
+ // ---------------------------------------------------------------------------
270
+
271
+ /**
272
+ * Check if the route is a response route and perform content negotiation
273
+ * if negotiate variants exist. Returns a ResponseRoutePlan if the route
274
+ * is a response route, null otherwise (RSC route).
275
+ */
276
+ async function classifyResponseRoute<TEnv>(
277
+ request: Request,
278
+ pathname: string,
279
+ snapshot: RouteSnapshot<TEnv>,
280
+ ): Promise<ResponseRoutePlan<TEnv> | null> {
281
+ // negotiateRoute returns the response plan (variant or plain) or null for RSC.
282
+ const negotiation = await negotiateRoute(request, pathname, snapshot);
283
+ return negotiation
284
+ ? { mode: "response", route: snapshot, ...negotiation }
285
+ : null;
286
+ }
@@ -4,8 +4,73 @@
4
4
  * Evaluates whether segments should revalidate based on params, actions, and custom functions.
5
5
  */
6
6
 
7
- import type { ResolvedSegment, HandlerContext } from "../types";
7
+ import type { ResolvedSegment, HandlerContext, ActionRef } from "../types";
8
8
  import type { ActionContext } from "./types";
9
+ import {
10
+ debugLog,
11
+ pushRevalidationTraceEntry,
12
+ isTraceActive,
13
+ } from "./logging.js";
14
+ import type { RevalidationTraceEntry } from "./logging.js";
15
+ import { _getRequestContext } from "../server/request-context.js";
16
+ import { isAutoGeneratedRouteName } from "../route-name.js";
17
+
18
+ /**
19
+ * Resolve a server-action reference's stable id, mirroring how the action
20
+ * boundary derives `actionContext.actionId` in `rsc/server-action.ts`
21
+ * (`$id ?? $$id`): the file-path `$id` set by the expose-action-id plugin in a
22
+ * production RSC build when present, otherwise React's `$$id`. Resolving both
23
+ * the incoming `actionId` and the reference with the same precedence makes
24
+ * `isAction()` form-agnostic across dev and production.
25
+ */
26
+ function resolveActionRefId(ref: unknown): string | undefined {
27
+ if (ref == null) return undefined;
28
+ const r = ref as { $id?: unknown; $$id?: unknown };
29
+ if (typeof r.$id === "string") return r.$id;
30
+ if (typeof r.$$id === "string") return r.$$id;
31
+ return undefined;
32
+ }
33
+
34
+ /**
35
+ * Build the `isAction()` helper bound to the current action's id. Matches a
36
+ * single imported action reference, several (variadic), or any export of a
37
+ * namespace import (`import * as Mod`). Returns `false` when there is no action
38
+ * (plain navigation) or nothing matches.
39
+ */
40
+ function makeIsAction(
41
+ currentActionId: string | undefined,
42
+ ): (...actions: ActionRef[]) => boolean {
43
+ return (...actions: ActionRef[]): boolean => {
44
+ if (!currentActionId) return false;
45
+ for (const action of actions) {
46
+ if (typeof action === "function") {
47
+ if (resolveActionRefId(action) === currentActionId) return true;
48
+ } else if (action && typeof action === "object") {
49
+ // Namespace import: match any export of the module.
50
+ for (const value of Object.values(action)) {
51
+ if (resolveActionRefId(value) === currentActionId) return true;
52
+ }
53
+ }
54
+ }
55
+ return false;
56
+ };
57
+ }
58
+
59
+ function paramsEqual(
60
+ a: Record<string, string>,
61
+ b: Record<string, string>,
62
+ ): boolean {
63
+ if (a === b) return true;
64
+
65
+ const keysA = Object.keys(a);
66
+ if (keysA.length !== Object.keys(b).length) return false;
67
+
68
+ for (const key of keysA) {
69
+ if (a[key] !== b[key]) return false;
70
+ }
71
+
72
+ return true;
73
+ }
9
74
 
10
75
  /**
11
76
  * Options for revalidation evaluation
@@ -33,6 +98,16 @@ interface EvaluateRevalidationOptions<TEnv> {
33
98
  actionContext?: ActionContext;
34
99
  /** If true, this is a stale cache revalidation request */
35
100
  stale?: boolean;
101
+ /** Trace source hint for the revalidation trace */
102
+ traceSource?: RevalidationTraceEntry["source"];
103
+ /**
104
+ * Override the segment-type-derived default. When set, the value is used as
105
+ * the seed `defaultShouldRevalidate` passed to user revalidate fns and the
106
+ * reason flows into the trace. Callers use this when client-knowledge
107
+ * (e.g. parallel slot not in clientSegmentIds) should dictate the seed
108
+ * instead of the params/method-based heuristic.
109
+ */
110
+ defaultOverride?: { value: boolean; reason: string };
36
111
  }
37
112
 
38
113
  /**
@@ -40,7 +115,7 @@ interface EvaluateRevalidationOptions<TEnv> {
40
115
  * Optimized to use prevParams directly and avoid building previous segments
41
116
  */
42
117
  export async function evaluateRevalidation<TEnv>(
43
- options: EvaluateRevalidationOptions<TEnv>
118
+ options: EvaluateRevalidationOptions<TEnv>,
44
119
  ): Promise<boolean> {
45
120
  const {
46
121
  segment,
@@ -54,71 +129,124 @@ export async function evaluateRevalidation<TEnv>(
54
129
  context,
55
130
  actionContext,
56
131
  stale,
132
+ traceSource,
133
+ defaultOverride,
57
134
  } = options;
58
135
  const nextParams = segment.params || {};
59
- const paramsChanged =
60
- Object.keys(nextParams).length !== Object.keys(prevParams).length ||
61
- Object.keys(nextParams).some(
62
- (key) => nextParams[key] !== prevParams[key]
63
- );
136
+ const paramsChanged = !paramsEqual(nextParams, prevParams);
137
+ const searchChanged = prevUrl.search !== nextUrl.search;
138
+
139
+ // Trace helper: push a structured entry to the request-scoped trace buffer.
140
+ // Guarded by isTraceActive() so object construction is skipped in production.
141
+ function pushTrace(
142
+ defaultVal: boolean,
143
+ finalVal: boolean,
144
+ reason: string,
145
+ ): void {
146
+ if (!isTraceActive()) return;
147
+ pushRevalidationTraceEntry({
148
+ segmentId: segment.id,
149
+ segmentType: segment.type,
150
+ belongsToRoute: segment.belongsToRoute ?? false,
151
+ source: traceSource ?? "segment-resolution",
152
+ defaultShouldRevalidate: defaultVal,
153
+ finalShouldRevalidate: finalVal,
154
+ reason,
155
+ customRevalidators: revalidations.length || undefined,
156
+ });
157
+ }
64
158
 
65
159
  // Calculate default revalidation based on segment type and request method
66
160
  let defaultShouldRevalidate: boolean;
161
+ let defaultReason: string;
67
162
 
68
- if (request.method === "POST") {
163
+ if (defaultOverride) {
164
+ // Caller injected the seed (e.g. parallel slot not in clientSegmentIds).
165
+ // Skip the type-derived heuristic — caller knows better in this context.
166
+ defaultShouldRevalidate = defaultOverride.value;
167
+ defaultReason = defaultOverride.reason;
168
+ } else if (request.method === "POST") {
69
169
  // Actions: revalidate segments that belong to the route, skip parent chain
70
170
  if (segment.type === "route") {
71
171
  // Route segment always revalidates on actions
72
172
  defaultShouldRevalidate = true;
173
+ defaultReason = "action:route-segment";
73
174
  } else if (segment.type === "loader") {
74
175
  // Loaders always revalidate on actions - they often contain action-sensitive data
75
176
  // (e.g., cart count after add-to-cart action)
76
177
  defaultShouldRevalidate = true;
178
+ defaultReason = "action:loader-segment";
77
179
  } else if (segment.belongsToRoute) {
78
180
  // Segment belongs to route (orphan layouts/parallels) - revalidate
79
181
  defaultShouldRevalidate = true;
182
+ defaultReason = "action:belongs-to-route";
80
183
  } else {
81
184
  // Parent chain segment (shared layouts/parallels) - don't revalidate
82
185
  defaultShouldRevalidate = false;
186
+ defaultReason = "action:parent-chain-skip";
83
187
  }
84
188
  } else {
85
189
  // Navigation (GET): Conservative defaults to minimize unnecessary revalidations
86
190
  // Only the route segment revalidates by default - all others require explicit opt-in
87
191
 
88
192
  if (segment.type === "route") {
89
- // Route segments revalidate when params change
90
- // Routes are the primary param-dependent content and always need updates
91
- defaultShouldRevalidate = paramsChanged;
92
- if (paramsChanged) {
93
- console.log(
94
- `[Router.evaluateRevalidation] ${segment.id}: ROUTE - params changed, revalidating`
95
- );
193
+ // Route segments revalidate when path params OR search params change.
194
+ // Search params (e.g., ?page=2&sort=price) are server-parsed via ctx.search,
195
+ // so the handler must re-execute to produce updated content.
196
+ const routeChanged = paramsChanged || searchChanged;
197
+ defaultShouldRevalidate = routeChanged;
198
+ defaultReason = paramsChanged
199
+ ? "nav:params-changed"
200
+ : searchChanged
201
+ ? "nav:search-changed"
202
+ : "nav:params-unchanged";
203
+ if (routeChanged) {
204
+ debugLog("revalidation", "route revalidating", {
205
+ segmentId: segment.id,
206
+ paramsChanged,
207
+ searchChanged,
208
+ });
96
209
  }
210
+ } else if (segment.belongsToRoute && (paramsChanged || searchChanged)) {
211
+ // Children of the route path (loaders, orphan layouts/parallels)
212
+ // revalidate when path params or search params change
213
+ defaultShouldRevalidate = true;
214
+ defaultReason = paramsChanged
215
+ ? "nav:route-child-params-changed"
216
+ : "nav:route-child-search-changed";
217
+ debugLog("revalidation", "route child revalidating", {
218
+ segmentId: segment.id,
219
+ segmentType: segment.type,
220
+ paramsChanged,
221
+ searchChanged,
222
+ });
97
223
  } else {
98
- // Layouts and parallels default to no revalidation
224
+ // Parent layouts and parallels default to no revalidation
99
225
  // Cannot assume these segments depend on params without explicit declaration
100
226
  // Use custom revalidation functions to opt-in when needed
101
227
  defaultShouldRevalidate = false;
102
- console.log(
103
- `[Router.evaluateRevalidation] ${
104
- segment.id
105
- }: ${segment.type.toUpperCase()} segment - skipping (override with custom revalidation if needed)`
106
- );
228
+ defaultReason = "nav:non-route-skip";
229
+ debugLog("revalidation", "non-route segment skipped by default", {
230
+ segmentId: segment.id,
231
+ segmentType: segment.type,
232
+ });
107
233
  }
108
234
  }
109
235
 
110
236
  // No custom revalidations defined - return default behavior without prev segment
111
237
  if (revalidations.length === 0) {
112
238
  if (defaultShouldRevalidate) {
113
- console.log(
114
- `[Router.evaluateRevalidation] ${segment.id}: PARAMS CHANGED (default) - revalidating`,
115
- { prev: prevParams, next: nextParams }
116
- );
239
+ debugLog("revalidation", "default revalidate=true", {
240
+ segmentId: segment.id,
241
+ prevParams,
242
+ nextParams,
243
+ });
117
244
  } else {
118
- console.log(
119
- `[Router.evaluateRevalidation] ${segment.id}: UNCHANGED (default) - skipping`
120
- );
245
+ debugLog("revalidation", "default revalidate=false", {
246
+ segmentId: segment.id,
247
+ });
121
248
  }
249
+ pushTrace(defaultShouldRevalidate, defaultShouldRevalidate, defaultReason);
122
250
  return defaultShouldRevalidate;
123
251
  }
124
252
 
@@ -129,6 +257,16 @@ export async function evaluateRevalidation<TEnv>(
129
257
  // Execute revalidation functions with soft/hard decision pattern
130
258
  let currentSuggestion = defaultShouldRevalidate;
131
259
 
260
+ // Compute public route names (filtered: undefined for auto-generated routes)
261
+ const toRouteName =
262
+ routeKey && !isAutoGeneratedRouteName(routeKey) ? routeKey : undefined;
263
+ const reqCtx = _getRequestContext();
264
+ const prevRouteKey = reqCtx?._prevRouteKey;
265
+ const fromRouteName =
266
+ prevRouteKey && !isAutoGeneratedRouteName(prevRouteKey)
267
+ ? prevRouteKey
268
+ : undefined;
269
+
132
270
  for (const { name, fn } of revalidations) {
133
271
  const result = fn({
134
272
  currentParams: prevSegment?.params || prevParams, // Use segment params if available, else route params
@@ -143,11 +281,14 @@ export async function evaluateRevalidation<TEnv>(
143
281
  slotName: segment.slot,
144
282
  // Action context (only populated when triggered by server action)
145
283
  actionId: actionContext?.actionId,
284
+ isAction: makeIsAction(actionContext?.actionId),
146
285
  actionUrl: actionContext?.actionUrl,
147
286
  actionResult: actionContext?.actionResult,
148
287
  formData: actionContext?.formData,
149
288
  method: request.method, // GET for navigation, POST for actions
150
- routeName: routeKey, // User-friendly route name (e.g., "products.detail")
289
+ routeName: toRouteName, // Navigation target route name (filtered)
290
+ fromRouteName, // Navigation source route name (filtered)
291
+ toRouteName, // Navigation target route name (filtered)
151
292
  // Stale cache context (only true for background revalidation after stale cache render)
152
293
  stale,
153
294
  });
@@ -158,9 +299,12 @@ export async function evaluateRevalidation<TEnv>(
158
299
  // - null/undefined: use default behavior (equivalent to returning { defaultShouldRevalidate })
159
300
  if (typeof result === "boolean") {
160
301
  // Hard decision - short-circuit
161
- console.log(
162
- `[Router.evaluateRevalidation] ${segment.id}: REVALIDATE (${name}) HARD: ${result}`
163
- );
302
+ debugLog("revalidation", "hard decision", {
303
+ segmentId: segment.id,
304
+ revalidator: name,
305
+ revalidate: result,
306
+ });
307
+ pushTrace(defaultShouldRevalidate, result, `hard:${name}`);
164
308
  return result;
165
309
  } else if (
166
310
  result &&
@@ -169,22 +313,33 @@ export async function evaluateRevalidation<TEnv>(
169
313
  ) {
170
314
  // Soft decision - update suggestion and continue
171
315
  currentSuggestion = result.defaultShouldRevalidate;
172
- console.log(
173
- `[Router.evaluateRevalidation] ${segment.id}: REVALIDATE (${name}) SOFT: ${currentSuggestion}`
174
- );
316
+ debugLog("revalidation", "soft decision", {
317
+ segmentId: segment.id,
318
+ revalidator: name,
319
+ revalidate: currentSuggestion,
320
+ });
175
321
  } else if (result === null || result === undefined) {
176
322
  // Defer to default - equivalent to { defaultShouldRevalidate: currentSuggestion }
177
323
  // This means "I don't care, use whatever the default is"
178
- console.log(
179
- `[Router.evaluateRevalidation] ${segment.id}: REVALIDATE (${name}) DEFER to default: ${currentSuggestion}`
180
- );
324
+ debugLog("revalidation", "deferred to current default", {
325
+ segmentId: segment.id,
326
+ revalidator: name,
327
+ revalidate: currentSuggestion,
328
+ });
181
329
  // currentSuggestion stays the same, continue to next function
182
330
  }
183
331
  }
184
332
 
185
333
  // All revalidators completed - use final suggestion
186
- console.log(
187
- `[Router.evaluateRevalidation] ${segment.id}: Final decision: ${currentSuggestion}`
334
+ debugLog("revalidation", "final decision", {
335
+ segmentId: segment.id,
336
+ revalidate: currentSuggestion,
337
+ });
338
+ const softNames = revalidations.map((r) => r.name).join(",");
339
+ pushTrace(
340
+ defaultShouldRevalidate,
341
+ currentSuggestion,
342
+ `soft-chain:${softNames}`,
188
343
  );
189
344
  return currentSuggestion;
190
345
  }