@rangojs/router 0.0.0-experimental.13221847 → 0.0.0-experimental.133

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 (1198) hide show
  1. package/AGENTS.md +8 -0
  2. package/README.md +245 -49
  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/dist/__mocks__/version.js +7 -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 +433 -131
  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/{src/browser/react/use-client-cache.ts → dist/browser/react/use-client-cache.js} +9 -28
  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/{src/handles/index.ts → dist/handles/index.d.ts} +1 -2
  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/dist/href-context.d.ts +29 -0
  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/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +3356 -1095
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/dist/vite/package-resolution.js +112 -0
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/dist/vite/virtual-entries.js +110 -0
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +66 -12
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +64 -2
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +247 -23
  816. package/skills/caching/SKILL.md +281 -11
  817. package/skills/composability/SKILL.md +27 -2
  818. package/skills/css/SKILL.md +76 -0
  819. package/skills/debug-manifest/SKILL.md +4 -2
  820. package/skills/document-cache/SKILL.md +78 -55
  821. package/skills/handler-use/SKILL.md +364 -0
  822. package/skills/hooks/SKILL.md +250 -30
  823. package/skills/host-router/SKILL.md +83 -23
  824. package/skills/i18n/SKILL.md +276 -0
  825. package/skills/intercept/SKILL.md +50 -6
  826. package/skills/layout/SKILL.md +35 -9
  827. package/skills/links/SKILL.md +249 -17
  828. package/skills/loader/SKILL.md +279 -53
  829. package/skills/middleware/SKILL.md +52 -13
  830. package/skills/migrate-nextjs/SKILL.md +584 -0
  831. package/skills/migrate-react-router/SKILL.md +771 -0
  832. package/skills/mime-routes/SKILL.md +28 -1
  833. package/skills/observability/SKILL.md +172 -0
  834. package/skills/parallel/SKILL.md +144 -7
  835. package/skills/prerender/SKILL.md +153 -109
  836. package/skills/rango/SKILL.md +251 -22
  837. package/skills/react-compiler/SKILL.md +168 -0
  838. package/skills/response-routes/SKILL.md +123 -48
  839. package/skills/route/SKILL.md +101 -5
  840. package/skills/router-setup/SKILL.md +116 -8
  841. package/skills/scripts/SKILL.md +179 -0
  842. package/skills/server-actions/SKILL.md +775 -0
  843. package/skills/streams-and-websockets/SKILL.md +283 -0
  844. package/skills/tailwind/SKILL.md +27 -3
  845. package/skills/testing/SKILL.md +129 -0
  846. package/skills/testing/bindings.md +103 -0
  847. package/skills/testing/cache-prerender.md +127 -0
  848. package/skills/testing/client-components.md +124 -0
  849. package/skills/testing/e2e-parity.md +125 -0
  850. package/skills/testing/flight.md +91 -0
  851. package/skills/testing/handles.md +129 -0
  852. package/skills/testing/loader.md +128 -0
  853. package/skills/testing/middleware.md +99 -0
  854. package/skills/testing/render-handler.md +121 -0
  855. package/skills/testing/response-routes.md +95 -0
  856. package/skills/testing/reverse-and-types.md +84 -0
  857. package/skills/testing/server-actions.md +107 -0
  858. package/skills/testing/server-tree.md +128 -0
  859. package/skills/testing/setup.md +123 -0
  860. package/skills/typesafety/SKILL.md +332 -29
  861. package/skills/use-cache/SKILL.md +46 -14
  862. package/skills/view-transitions/SKILL.md +294 -0
  863. package/src/__augment-tests__/augment.ts +81 -0
  864. package/src/__augment-tests__/augmented.check.ts +116 -0
  865. package/src/__internal.ts +1 -66
  866. package/src/browser/action-coordinator.ts +53 -36
  867. package/src/browser/action-fence.ts +47 -0
  868. package/src/browser/app-shell.ts +39 -0
  869. package/src/browser/app-version.ts +14 -0
  870. package/src/browser/connection-warmup.ts +134 -0
  871. package/src/browser/cookie-name.ts +140 -0
  872. package/src/browser/event-controller.ts +192 -150
  873. package/src/browser/history-state.ts +21 -0
  874. package/src/browser/index.ts +3 -3
  875. package/src/browser/invalidate-client-cache.ts +52 -0
  876. package/src/browser/navigation-bridge.ts +66 -14
  877. package/src/browser/navigation-client.ts +173 -86
  878. package/src/browser/navigation-store-handle.ts +38 -0
  879. package/src/browser/navigation-store.ts +76 -67
  880. package/src/browser/navigation-transaction.ts +9 -59
  881. package/src/browser/partial-update.ts +124 -110
  882. package/src/browser/prefetch/cache.ts +197 -62
  883. package/src/browser/prefetch/fetch.ts +320 -40
  884. package/src/browser/prefetch/queue.ts +95 -29
  885. package/src/browser/prefetch/resource-ready.ts +77 -0
  886. package/src/browser/rango-state.ts +158 -76
  887. package/src/browser/react/Link.tsx +102 -15
  888. package/src/browser/react/NavigationProvider.tsx +106 -119
  889. package/src/browser/react/ScrollRestoration.tsx +10 -6
  890. package/src/browser/react/context.ts +7 -2
  891. package/src/browser/react/filter-segment-order.ts +66 -7
  892. package/src/browser/react/index.ts +0 -48
  893. package/src/browser/react/location-state-shared.ts +178 -8
  894. package/src/browser/react/location-state.ts +39 -14
  895. package/src/browser/react/use-action.ts +6 -15
  896. package/src/browser/react/use-handle.ts +23 -69
  897. package/src/browser/react/use-href.tsx +8 -1
  898. package/src/browser/react/use-link-status.ts +33 -8
  899. package/src/browser/react/use-navigation.ts +32 -7
  900. package/src/browser/react/use-params.ts +20 -10
  901. package/src/browser/react/use-reverse.ts +106 -0
  902. package/src/browser/react/use-router.ts +46 -11
  903. package/src/browser/react/use-search-params.ts +0 -5
  904. package/src/browser/react/use-segments.ts +11 -21
  905. package/src/browser/response-adapter.ts +66 -4
  906. package/src/browser/rsc-router.tsx +114 -24
  907. package/src/browser/scroll-restoration.ts +37 -22
  908. package/src/browser/segment-reconciler.ts +36 -14
  909. package/src/browser/segment-structure-assert.ts +2 -2
  910. package/src/browser/server-action-bridge.ts +222 -61
  911. package/src/browser/types.ts +73 -11
  912. package/src/browser/validate-redirect-origin.ts +43 -16
  913. package/src/build/collect-fallback-refs.ts +107 -0
  914. package/src/build/generate-manifest.ts +65 -40
  915. package/src/build/generate-route-types.ts +5 -1
  916. package/src/build/index.ts +8 -2
  917. package/src/build/prefix-tree-utils.ts +123 -0
  918. package/src/build/route-trie.ts +165 -36
  919. package/src/build/route-types/ast-route-extraction.ts +15 -8
  920. package/src/build/route-types/codegen.ts +16 -5
  921. package/src/build/route-types/include-resolution.ts +125 -24
  922. package/src/build/route-types/param-extraction.ts +6 -3
  923. package/src/build/route-types/per-module-writer.ts +22 -6
  924. package/src/build/route-types/router-processing.ts +260 -94
  925. package/src/build/route-types/scan-filter.ts +9 -2
  926. package/src/build/route-types/source-scan.ts +216 -0
  927. package/src/build/runtime-discovery.ts +9 -20
  928. package/src/cache/cache-error.ts +104 -0
  929. package/src/cache/cache-key-utils.ts +29 -13
  930. package/src/cache/cache-policy.ts +108 -34
  931. package/src/cache/cache-runtime.ts +199 -37
  932. package/src/cache/cache-scope.ts +234 -87
  933. package/src/cache/cache-tag.ts +103 -0
  934. package/src/cache/cf/cf-base64.ts +33 -0
  935. package/src/cache/cf/cf-cache-constants.ts +127 -0
  936. package/src/cache/cf/cf-cache-store.ts +1989 -378
  937. package/src/cache/cf/cf-cache-types.ts +349 -0
  938. package/src/cache/cf/cf-kv-utils.ts +46 -0
  939. package/src/cache/cf/cf-tag-marker-memo.ts +105 -0
  940. package/src/cache/cf/index.ts +6 -16
  941. package/src/cache/document-cache.ts +72 -20
  942. package/src/cache/handle-snapshot.ts +70 -0
  943. package/src/cache/index.ts +10 -20
  944. package/src/cache/memory-segment-store.ts +136 -37
  945. package/src/cache/profile-registry.ts +31 -31
  946. package/src/cache/read-through-swr.ts +41 -11
  947. package/src/cache/segment-codec.ts +9 -17
  948. package/src/cache/tag-invalidation.ts +230 -0
  949. package/src/cache/taint.ts +55 -0
  950. package/src/cache/types.ts +37 -100
  951. package/src/client.rsc.tsx +44 -21
  952. package/src/client.tsx +119 -290
  953. package/src/cloudflare/index.ts +11 -0
  954. package/src/cloudflare/tracing.ts +109 -0
  955. package/src/component-utils.ts +19 -0
  956. package/src/components/DefaultDocument.tsx +8 -2
  957. package/src/context-var.ts +84 -2
  958. package/src/decode-loader-results.ts +52 -0
  959. package/src/defer.ts +196 -0
  960. package/src/deps/ssr.ts +0 -1
  961. package/src/encode-kv.ts +49 -0
  962. package/src/errors.ts +30 -4
  963. package/src/escape-script.ts +52 -0
  964. package/src/handle.ts +70 -22
  965. package/src/handles/MetaTags.tsx +56 -19
  966. package/src/handles/Scripts.tsx +183 -0
  967. package/src/handles/breadcrumbs.ts +37 -8
  968. package/src/handles/is-thenable.ts +19 -0
  969. package/src/handles/meta.ts +51 -40
  970. package/src/handles/script.ts +244 -0
  971. package/src/host/cookie-handler.ts +9 -60
  972. package/src/host/errors.ts +0 -24
  973. package/src/host/index.ts +8 -2
  974. package/src/host/pattern-matcher.ts +23 -52
  975. package/src/host/router.ts +107 -99
  976. package/src/host/testing.ts +40 -27
  977. package/src/host/types.ts +37 -4
  978. package/src/host/utils.ts +1 -1
  979. package/src/href-client.ts +137 -22
  980. package/src/index.rsc.ts +93 -12
  981. package/src/index.ts +133 -15
  982. package/src/internal-debug.ts +2 -4
  983. package/src/loader-store.ts +500 -0
  984. package/src/loader.rsc.ts +20 -13
  985. package/src/loader.ts +12 -11
  986. package/src/missing-id-error.ts +68 -0
  987. package/src/network-error-thrower.tsx +1 -6
  988. package/src/outlet-context.ts +1 -1
  989. package/src/outlet-provider.tsx +1 -5
  990. package/src/prerender/param-hash.ts +16 -16
  991. package/src/prerender/store.ts +37 -41
  992. package/src/prerender.ts +198 -82
  993. package/src/redirect-origin.ts +100 -0
  994. package/src/regex-escape.ts +8 -0
  995. package/src/response-utils.ts +62 -0
  996. package/src/reverse.ts +65 -15
  997. package/src/root-error-boundary.tsx +1 -19
  998. package/src/route-content-wrapper.tsx +7 -72
  999. package/src/route-definition/dsl-helpers.ts +445 -277
  1000. package/src/route-definition/helper-factories.ts +29 -139
  1001. package/src/route-definition/helpers-types.ts +113 -37
  1002. package/src/route-definition/index.ts +3 -0
  1003. package/src/route-definition/redirect.ts +51 -10
  1004. package/src/route-definition/resolve-handler-use.ts +161 -0
  1005. package/src/route-definition/use-item-types.ts +32 -0
  1006. package/src/route-map-builder.ts +0 -16
  1007. package/src/route-types.ts +37 -41
  1008. package/src/router/basename.ts +14 -0
  1009. package/src/router/content-negotiation.ts +164 -17
  1010. package/src/router/error-handling.ts +45 -18
  1011. package/src/router/find-match.ts +44 -23
  1012. package/src/router/handler-context.ts +83 -39
  1013. package/src/router/instrument.ts +350 -0
  1014. package/src/router/intercept-resolution.ts +48 -24
  1015. package/src/router/lazy-includes.ts +15 -52
  1016. package/src/router/loader-resolution.ts +274 -56
  1017. package/src/router/logging.ts +0 -6
  1018. package/src/router/manifest.ts +40 -42
  1019. package/src/router/match-api.ts +120 -204
  1020. package/src/router/match-context.ts +0 -22
  1021. package/src/router/match-handlers.ts +58 -58
  1022. package/src/router/match-middleware/background-revalidation.ts +15 -5
  1023. package/src/router/match-middleware/cache-lookup.ts +178 -277
  1024. package/src/router/match-middleware/cache-store.ts +42 -28
  1025. package/src/router/match-middleware/intercept-resolution.ts +0 -22
  1026. package/src/router/match-middleware/segment-resolution.ts +45 -14
  1027. package/src/router/match-pipelines.ts +1 -42
  1028. package/src/router/match-result.ts +87 -39
  1029. package/src/router/metrics.ts +0 -34
  1030. package/src/router/middleware-types.ts +13 -142
  1031. package/src/router/middleware.ts +268 -171
  1032. package/src/router/navigation-snapshot.ts +131 -0
  1033. package/src/router/params-util.ts +23 -0
  1034. package/src/router/pattern-matching.ts +132 -90
  1035. package/src/router/prefetch-cache-ttl.ts +51 -0
  1036. package/src/router/prerender-match.ts +195 -56
  1037. package/src/router/preview-match.ts +32 -102
  1038. package/src/router/request-classification.ts +276 -0
  1039. package/src/router/revalidation.ts +123 -73
  1040. package/src/router/route-snapshot.ts +244 -0
  1041. package/src/router/router-context.ts +3 -27
  1042. package/src/router/router-interfaces.ts +115 -35
  1043. package/src/router/router-options.ts +172 -15
  1044. package/src/router/router-registry.ts +2 -5
  1045. package/src/router/segment-resolution/fresh.ts +167 -87
  1046. package/src/router/segment-resolution/helpers.ts +115 -30
  1047. package/src/router/segment-resolution/loader-cache.ts +62 -37
  1048. package/src/router/segment-resolution/revalidation.ts +351 -319
  1049. package/src/router/segment-resolution/static-store.ts +19 -5
  1050. package/src/router/segment-resolution/streamed-handler-telemetry.ts +52 -0
  1051. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  1052. package/src/router/segment-resolution.ts +5 -1
  1053. package/src/router/segment-wrappers.ts +6 -5
  1054. package/src/router/state-cookie-name.ts +33 -0
  1055. package/src/router/substitute-pattern-params.ts +56 -0
  1056. package/src/router/telemetry-otel.ts +161 -199
  1057. package/src/router/telemetry.ts +96 -19
  1058. package/src/router/timeout.ts +0 -20
  1059. package/src/router/tracing.ts +206 -0
  1060. package/src/router/trie-matching.ts +163 -59
  1061. package/src/router/types.ts +10 -63
  1062. package/src/router/url-params.ts +44 -0
  1063. package/src/router.ts +158 -54
  1064. package/src/rsc/handler-context.ts +3 -2
  1065. package/src/rsc/handler.ts +658 -511
  1066. package/src/rsc/helpers.ts +168 -46
  1067. package/src/rsc/index.ts +2 -5
  1068. package/src/rsc/json-route-result.ts +38 -0
  1069. package/src/rsc/loader-fetch.ts +127 -31
  1070. package/src/rsc/manifest-init.ts +33 -42
  1071. package/src/rsc/origin-guard.ts +39 -25
  1072. package/src/rsc/progressive-enhancement.ts +77 -11
  1073. package/src/rsc/redirect-guard.ts +99 -0
  1074. package/src/rsc/response-cache-serve.ts +238 -0
  1075. package/src/rsc/response-error.ts +79 -12
  1076. package/src/rsc/response-route-handler.ts +99 -189
  1077. package/src/rsc/rsc-rendering.ts +105 -72
  1078. package/src/rsc/runtime-warnings.ts +23 -10
  1079. package/src/rsc/server-action.ts +263 -112
  1080. package/src/rsc/ssr-setup.ts +18 -2
  1081. package/src/rsc/types.ts +32 -6
  1082. package/src/runtime-env.ts +18 -0
  1083. package/src/search-params.ts +35 -30
  1084. package/src/segment-content-promise.ts +67 -0
  1085. package/src/segment-loader-promise.ts +149 -0
  1086. package/src/segment-system.tsx +218 -202
  1087. package/src/serialize.ts +243 -0
  1088. package/src/server/context.ts +222 -51
  1089. package/src/server/cookie-parse.ts +32 -0
  1090. package/src/server/cookie-store.ts +80 -5
  1091. package/src/server/handle-store.ts +40 -38
  1092. package/src/server/loader-registry.ts +26 -46
  1093. package/src/server/request-context.ts +390 -170
  1094. package/src/ssr/index.tsx +24 -16
  1095. package/src/static-handler.ts +27 -18
  1096. package/src/testing/cache-status.ts +162 -0
  1097. package/src/testing/collect-handle.ts +40 -0
  1098. package/src/testing/dispatch.ts +701 -0
  1099. package/src/testing/dom.entry.ts +22 -0
  1100. package/src/testing/e2e/fixture.ts +188 -0
  1101. package/src/testing/e2e/index.ts +128 -0
  1102. package/src/testing/e2e/matchers.ts +35 -0
  1103. package/src/testing/e2e/page-helpers.ts +272 -0
  1104. package/src/testing/e2e/parity.ts +387 -0
  1105. package/src/testing/e2e/server.ts +195 -0
  1106. package/src/testing/flight-matchers.ts +97 -0
  1107. package/src/testing/flight-normalize.ts +11 -0
  1108. package/src/testing/flight-runtime.d.ts +57 -0
  1109. package/src/testing/flight-tree.ts +682 -0
  1110. package/src/testing/flight.entry.ts +52 -0
  1111. package/src/testing/flight.ts +257 -0
  1112. package/src/testing/generated-routes.ts +183 -0
  1113. package/src/testing/index.ts +99 -0
  1114. package/src/testing/internal/context.ts +371 -0
  1115. package/src/testing/internal/flight-client-globals.ts +30 -0
  1116. package/src/testing/internal/seed-vars.ts +54 -0
  1117. package/src/testing/render-handler.ts +343 -0
  1118. package/src/testing/render-route.tsx +581 -0
  1119. package/src/testing/run-loader.ts +385 -0
  1120. package/src/testing/run-middleware.ts +205 -0
  1121. package/src/testing/vitest-stubs/cloudflare-email.ts +9 -0
  1122. package/src/testing/vitest-stubs/cloudflare-workers.ts +21 -0
  1123. package/src/testing/vitest-stubs/plugin-rsc.ts +16 -0
  1124. package/src/testing/vitest-stubs/version.ts +5 -0
  1125. package/src/testing/vitest.ts +305 -0
  1126. package/src/theme/ThemeProvider.tsx +20 -58
  1127. package/src/theme/ThemeScript.tsx +7 -9
  1128. package/src/theme/constants.ts +52 -13
  1129. package/src/theme/index.ts +0 -7
  1130. package/src/theme/theme-context.ts +1 -5
  1131. package/src/theme/theme-script.ts +22 -21
  1132. package/src/theme/use-theme.ts +0 -3
  1133. package/src/types/boundaries.ts +0 -35
  1134. package/src/types/cache-types.ts +17 -8
  1135. package/src/types/error-types.ts +30 -90
  1136. package/src/types/global-namespace.ts +54 -41
  1137. package/src/types/handler-context.ts +144 -78
  1138. package/src/types/index.ts +1 -10
  1139. package/src/types/loader-types.ts +44 -15
  1140. package/src/types/request-scope.ts +112 -0
  1141. package/src/types/route-config.ts +6 -50
  1142. package/src/types/route-entry.ts +12 -7
  1143. package/src/types/segments.ts +36 -15
  1144. package/src/urls/include-helper.ts +33 -70
  1145. package/src/urls/index.ts +1 -11
  1146. package/src/urls/path-helper-types.ts +58 -11
  1147. package/src/urls/path-helper.ts +57 -111
  1148. package/src/urls/pattern-types.ts +48 -19
  1149. package/src/urls/response-types.ts +25 -22
  1150. package/src/urls/type-extraction.ts +58 -139
  1151. package/src/urls/urls-function.ts +1 -18
  1152. package/src/use-loader.tsx +346 -89
  1153. package/src/vite/debug.ts +185 -0
  1154. package/src/vite/discovery/bundle-postprocess.ts +36 -38
  1155. package/src/vite/discovery/discover-routers.ts +130 -85
  1156. package/src/vite/discovery/discovery-errors.ts +194 -0
  1157. package/src/vite/discovery/gate-state.ts +171 -0
  1158. package/src/vite/discovery/prerender-collection.ts +214 -132
  1159. package/src/vite/discovery/route-types-writer.ts +40 -84
  1160. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  1161. package/src/vite/discovery/state.ts +57 -4
  1162. package/src/vite/discovery/virtual-module-codegen.ts +14 -34
  1163. package/src/vite/index.ts +6 -0
  1164. package/src/vite/plugin-types.ts +178 -5
  1165. package/src/vite/plugins/cjs-to-esm.ts +16 -19
  1166. package/src/vite/plugins/client-ref-dedup.ts +16 -11
  1167. package/src/vite/plugins/client-ref-hashing.ts +28 -15
  1168. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1169. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1170. package/src/vite/plugins/cloudflare-protocol-stub.ts +194 -0
  1171. package/src/vite/plugins/expose-action-id.ts +48 -95
  1172. package/src/vite/plugins/expose-id-utils.ts +96 -51
  1173. package/src/vite/plugins/expose-ids/export-analysis.ts +101 -34
  1174. package/src/vite/plugins/expose-ids/handler-transform.ts +15 -64
  1175. package/src/vite/plugins/expose-ids/loader-transform.ts +14 -24
  1176. package/src/vite/plugins/expose-ids/router-transform.ts +118 -29
  1177. package/src/vite/plugins/expose-internal-ids.ts +553 -317
  1178. package/src/vite/plugins/performance-tracks.ts +89 -0
  1179. package/src/vite/plugins/refresh-cmd.ts +89 -27
  1180. package/src/vite/plugins/use-cache-transform.ts +73 -83
  1181. package/src/vite/plugins/version-injector.ts +21 -25
  1182. package/src/vite/plugins/version-plugin.ts +37 -40
  1183. package/src/vite/plugins/virtual-entries.ts +13 -18
  1184. package/src/vite/rango.ts +119 -111
  1185. package/src/vite/router-discovery.ts +939 -135
  1186. package/src/vite/utils/ast-handler-extract.ts +26 -35
  1187. package/src/vite/utils/banner.ts +1 -1
  1188. package/src/vite/utils/bundle-analysis.ts +10 -15
  1189. package/src/vite/utils/client-chunks.ts +184 -0
  1190. package/src/vite/utils/directive-prologue.ts +40 -0
  1191. package/src/vite/utils/forward-user-plugins.ts +171 -0
  1192. package/src/vite/utils/manifest-utils.ts +4 -59
  1193. package/src/vite/utils/package-resolution.ts +20 -52
  1194. package/src/vite/utils/prerender-utils.ts +81 -34
  1195. package/src/vite/utils/shared-utils.ts +92 -42
  1196. package/src/browser/action-response-classifier.ts +0 -99
  1197. package/src/browser/shallow.ts +0 -40
  1198. package/src/router/middleware-cookies.ts +0 -55
@@ -0,0 +1,276 @@
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
+ interface RedirectPlan<TEnv = any> {
27
+ mode: "redirect";
28
+ route: RouteSnapshot<TEnv>;
29
+ redirectUrl: string;
30
+ }
31
+
32
+ interface VersionMismatchPlan<TEnv = any> {
33
+ mode: "version-mismatch";
34
+ /** May be undefined when version mismatch is detected before route resolution */
35
+ route?: RouteSnapshot<TEnv>;
36
+ reloadUrl: string;
37
+ }
38
+
39
+ interface AppSwitchReloadPlan {
40
+ mode: "app-switch";
41
+ /** Clean target URL (internal _rsc_* params stripped) to navigate to. */
42
+ reloadUrl: string;
43
+ }
44
+
45
+ interface ResponseRoutePlan<TEnv = any> {
46
+ mode: "response";
47
+ route: RouteSnapshot<TEnv>;
48
+ handler: Function;
49
+ responseType: string;
50
+ negotiated: boolean;
51
+ manifestEntry: EntryData;
52
+ routeMiddleware: CollectedMiddleware[];
53
+ }
54
+
55
+ interface LoaderFetchPlan<TEnv = any> {
56
+ mode: "loader";
57
+ route: RouteSnapshot<TEnv>;
58
+ }
59
+
60
+ interface PeRenderPlan<TEnv = any> {
61
+ mode: "pe-render";
62
+ route: RouteSnapshot<TEnv>;
63
+ }
64
+
65
+ interface ActionPlan<TEnv = any> {
66
+ mode: "action";
67
+ route: RouteSnapshot<TEnv>;
68
+ actionId: string;
69
+ negotiated: boolean;
70
+ }
71
+
72
+ interface FullRenderPlan<TEnv = any> {
73
+ mode: "full-render";
74
+ route: RouteSnapshot<TEnv>;
75
+ negotiated: boolean;
76
+ }
77
+
78
+ interface PartialRenderPlan<TEnv = any> {
79
+ mode: "partial-render";
80
+ route: RouteSnapshot<TEnv>;
81
+ negotiated: boolean;
82
+ }
83
+
84
+ /**
85
+ * The output of request classification. A discriminated union where each
86
+ * variant carries exactly the fields needed for its execution path.
87
+ */
88
+ export type RequestPlan<TEnv = any> =
89
+ | RedirectPlan<TEnv>
90
+ | VersionMismatchPlan<TEnv>
91
+ | AppSwitchReloadPlan
92
+ | ResponseRoutePlan<TEnv>
93
+ | LoaderFetchPlan<TEnv>
94
+ | PeRenderPlan<TEnv>
95
+ | ActionPlan<TEnv>
96
+ | FullRenderPlan<TEnv>
97
+ | PartialRenderPlan<TEnv>;
98
+
99
+ /**
100
+ * Plans that have passed the terminal-check gate (version-mismatch and
101
+ * app-switch reloads handled) and are ready for execution. Always have a
102
+ * `route` field.
103
+ */
104
+ export type ExecutableRequestPlan<TEnv = any> = Exclude<
105
+ RequestPlan<TEnv>,
106
+ VersionMismatchPlan<TEnv> | AppSwitchReloadPlan
107
+ >;
108
+
109
+ /**
110
+ * Re-export individual plan types for consumers that need to narrow.
111
+ */
112
+ export type {
113
+ RedirectPlan,
114
+ VersionMismatchPlan,
115
+ ResponseRoutePlan,
116
+ LoaderFetchPlan,
117
+ PeRenderPlan,
118
+ ActionPlan,
119
+ FullRenderPlan,
120
+ PartialRenderPlan,
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
+ const clientVersion = url.searchParams.get("_rsc_v");
153
+ if (
154
+ deps.routerVersion &&
155
+ clientVersion &&
156
+ clientVersion !== deps.routerVersion
157
+ ) {
158
+ let reloadUrl = stripInternalParams(url).toString();
159
+ if (isAction) {
160
+ const referer = request.headers.get("referer");
161
+ if (referer) {
162
+ try {
163
+ const refererUrl = new URL(referer);
164
+ if (refererUrl.origin === url.origin) {
165
+ reloadUrl = referer;
166
+ }
167
+ } catch {}
168
+ }
169
+ }
170
+
171
+ return {
172
+ mode: "version-mismatch",
173
+ reloadUrl,
174
+ };
175
+ }
176
+
177
+ const clientRouterId = url.searchParams.get("_rsc_rid");
178
+ if (
179
+ clientRouterId &&
180
+ clientRouterId !== deps.routerId &&
181
+ url.searchParams.has("_rsc_partial")
182
+ ) {
183
+ return {
184
+ mode: "app-switch",
185
+ reloadUrl: stripInternalParams(url).toString(),
186
+ };
187
+ }
188
+
189
+ const result = await resolveRoute<TEnv>(pathname, {
190
+ findMatch: deps.findMatch,
191
+ lite: true,
192
+ });
193
+
194
+ if (!result) {
195
+ throw new RouteNotFoundError(`No route matched for ${pathname}`, {
196
+ cause: { pathname, method: request.method },
197
+ });
198
+ }
199
+
200
+ if (result.type === "redirect") {
201
+ const snapshot: RouteSnapshot<TEnv> = {
202
+ matched: result as any,
203
+ manifestEntry: null as any,
204
+ entries: [],
205
+ routeKey: "",
206
+ localRouteName: "",
207
+ params: {},
208
+ routeMiddleware: [],
209
+ cacheScope: null,
210
+ isPassthrough: false,
211
+ };
212
+ return {
213
+ mode: "redirect",
214
+ route: snapshot,
215
+ redirectUrl: result.redirectTo + url.search,
216
+ };
217
+ }
218
+
219
+ const snapshot = result.snapshot;
220
+
221
+ const responseResult = await classifyResponseRoute(
222
+ request,
223
+ pathname,
224
+ snapshot,
225
+ );
226
+ if (responseResult) {
227
+ return responseResult;
228
+ }
229
+
230
+ const actionId =
231
+ request.headers.get("rsc-action") || url.searchParams.get("_rsc_action");
232
+ const isLoaderFetch = url.searchParams.has("_rsc_loader");
233
+
234
+ const hasVariants =
235
+ snapshot.matched.negotiateVariants &&
236
+ snapshot.matched.negotiateVariants.length > 0;
237
+ const negotiated = !!hasVariants;
238
+
239
+ if (isAction && actionId) {
240
+ return { mode: "action", route: snapshot, actionId, negotiated };
241
+ }
242
+
243
+ if (isLoaderFetch) {
244
+ return { mode: "loader", route: snapshot };
245
+ }
246
+
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
+ if (url.searchParams.has("_rsc_partial")) {
256
+ return { mode: "partial-render", route: snapshot, negotiated };
257
+ }
258
+
259
+ return { mode: "full-render", route: snapshot, negotiated };
260
+ }
261
+
262
+ /**
263
+ * Check if the route is a response route and perform content negotiation
264
+ * if negotiate variants exist. Returns a ResponseRoutePlan if the route
265
+ * is a response route, null otherwise (RSC route).
266
+ */
267
+ async function classifyResponseRoute<TEnv>(
268
+ request: Request,
269
+ pathname: string,
270
+ snapshot: RouteSnapshot<TEnv>,
271
+ ): Promise<ResponseRoutePlan<TEnv> | null> {
272
+ const negotiation = await negotiateRoute(request, pathname, snapshot);
273
+ return negotiation
274
+ ? { mode: "response", route: snapshot, ...negotiation }
275
+ : null;
276
+ }
@@ -4,7 +4,7 @@
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
9
  import {
10
10
  debugLog,
@@ -14,21 +14,52 @@ import {
14
14
  import type { RevalidationTraceEntry } from "./logging.js";
15
15
  import { _getRequestContext } from "../server/request-context.js";
16
16
  import { isAutoGeneratedRouteName } from "../route-name.js";
17
+ import { paramsEqual } from "./params-util.js";
17
18
 
18
- function paramsEqual(
19
- a: Record<string, string>,
20
- b: Record<string, string>,
21
- ): boolean {
22
- if (a === b) return true;
23
-
24
- const keysA = Object.keys(a);
25
- if (keysA.length !== Object.keys(b).length) return false;
26
-
27
- for (const key of keysA) {
28
- if (a[key] !== b[key]) return false;
29
- }
19
+ /**
20
+ * Resolve a server-action reference's stable id, mirroring how the action
21
+ * boundary derives `actionContext.actionId` in `rsc/server-action.ts`
22
+ * (`$id ?? $$id`): the file-path `$id` set by the expose-action-id plugin in a
23
+ * production RSC build when present, otherwise React's `$$id`. Resolving both
24
+ * the incoming `actionId` and the reference with the same precedence makes
25
+ * `isAction()` form-agnostic across dev and production.
26
+ */
27
+ function resolveActionRefId(ref: unknown): string | undefined {
28
+ if (ref == null) return undefined;
29
+ const r = ref as { $id?: unknown; $$id?: unknown };
30
+ if (typeof r.$id === "string") return r.$id;
31
+ if (typeof r.$$id === "string") return r.$$id;
32
+ return undefined;
33
+ }
30
34
 
31
- return true;
35
+ /**
36
+ * Build the `isAction()` helper bound to the current action's id. Called with no
37
+ * arguments it answers "is this request an action at all?" (any action) — `true`
38
+ * during action handling, `false` on plain navigation. Called with one or more
39
+ * action references it narrows to those: a single imported action, several
40
+ * (variadic), or any export of a namespace import (`import * as Mod`). Returns
41
+ * `false` when there is no action (plain navigation) or nothing matches.
42
+ */
43
+ function makeIsAction(
44
+ currentActionId: string | undefined,
45
+ ): (...actions: ActionRef[]) => boolean {
46
+ return (...actions: ActionRef[]): boolean => {
47
+ if (!currentActionId) return false;
48
+ // Bare isAction(): an action is in flight (currentActionId is set) and the
49
+ // caller did not narrow to a specific action, so this is "any action".
50
+ if (actions.length === 0) return true;
51
+ for (const action of actions) {
52
+ if (typeof action === "function") {
53
+ if (resolveActionRefId(action) === currentActionId) return true;
54
+ } else if (action && typeof action === "object") {
55
+ // Namespace import: match any export of the module.
56
+ for (const value of Object.values(action)) {
57
+ if (resolveActionRefId(value) === currentActionId) return true;
58
+ }
59
+ }
60
+ }
61
+ return false;
62
+ };
32
63
  }
33
64
 
34
65
  /**
@@ -59,6 +90,14 @@ interface EvaluateRevalidationOptions<TEnv> {
59
90
  stale?: boolean;
60
91
  /** Trace source hint for the revalidation trace */
61
92
  traceSource?: RevalidationTraceEntry["source"];
93
+ /**
94
+ * Override the segment-type-derived default. When set, the value is used as
95
+ * the seed `defaultShouldRevalidate` passed to user revalidate fns and the
96
+ * reason flows into the trace. Callers use this when client-knowledge
97
+ * (e.g. parallel slot not in clientSegmentIds) should dictate the seed
98
+ * instead of the params/method-based heuristic.
99
+ */
100
+ defaultOverride?: { value: boolean; reason: string };
62
101
  }
63
102
 
64
103
  /**
@@ -81,13 +120,12 @@ export async function evaluateRevalidation<TEnv>(
81
120
  actionContext,
82
121
  stale,
83
122
  traceSource,
123
+ defaultOverride,
84
124
  } = options;
85
125
  const nextParams = segment.params || {};
86
126
  const paramsChanged = !paramsEqual(nextParams, prevParams);
87
127
  const searchChanged = prevUrl.search !== nextUrl.search;
88
128
 
89
- // Trace helper: push a structured entry to the request-scoped trace buffer.
90
- // Guarded by isTraceActive() so object construction is skipped in production.
91
129
  function pushTrace(
92
130
  defaultVal: boolean,
93
131
  finalVal: boolean,
@@ -106,38 +144,28 @@ export async function evaluateRevalidation<TEnv>(
106
144
  });
107
145
  }
108
146
 
109
- // Calculate default revalidation based on segment type and request method
110
147
  let defaultShouldRevalidate: boolean;
111
148
  let defaultReason: string;
112
149
 
113
- if (request.method === "POST") {
114
- // Actions: revalidate segments that belong to the route, skip parent chain
150
+ if (defaultOverride) {
151
+ defaultShouldRevalidate = defaultOverride.value;
152
+ defaultReason = defaultOverride.reason;
153
+ } else if (request.method === "POST") {
115
154
  if (segment.type === "route") {
116
- // Route segment always revalidates on actions
117
155
  defaultShouldRevalidate = true;
118
156
  defaultReason = "action:route-segment";
119
157
  } else if (segment.type === "loader") {
120
- // Loaders always revalidate on actions - they often contain action-sensitive data
121
- // (e.g., cart count after add-to-cart action)
122
158
  defaultShouldRevalidate = true;
123
159
  defaultReason = "action:loader-segment";
124
160
  } else if (segment.belongsToRoute) {
125
- // Segment belongs to route (orphan layouts/parallels) - revalidate
126
161
  defaultShouldRevalidate = true;
127
162
  defaultReason = "action:belongs-to-route";
128
163
  } else {
129
- // Parent chain segment (shared layouts/parallels) - don't revalidate
130
164
  defaultShouldRevalidate = false;
131
165
  defaultReason = "action:parent-chain-skip";
132
166
  }
133
167
  } else {
134
- // Navigation (GET): Conservative defaults to minimize unnecessary revalidations
135
- // Only the route segment revalidates by default - all others require explicit opt-in
136
-
137
168
  if (segment.type === "route") {
138
- // Route segments revalidate when path params OR search params change.
139
- // Search params (e.g., ?page=2&sort=price) are server-parsed via ctx.search,
140
- // so the handler must re-execute to produce updated content.
141
169
  const routeChanged = paramsChanged || searchChanged;
142
170
  defaultShouldRevalidate = routeChanged;
143
171
  defaultReason = paramsChanged
@@ -153,8 +181,6 @@ export async function evaluateRevalidation<TEnv>(
153
181
  });
154
182
  }
155
183
  } else if (segment.belongsToRoute && (paramsChanged || searchChanged)) {
156
- // Children of the route path (loaders, orphan layouts/parallels)
157
- // revalidate when path params or search params change
158
184
  defaultShouldRevalidate = true;
159
185
  defaultReason = paramsChanged
160
186
  ? "nav:route-child-params-changed"
@@ -166,9 +192,6 @@ export async function evaluateRevalidation<TEnv>(
166
192
  searchChanged,
167
193
  });
168
194
  } else {
169
- // Parent layouts and parallels default to no revalidation
170
- // Cannot assume these segments depend on params without explicit declaration
171
- // Use custom revalidation functions to opt-in when needed
172
195
  defaultShouldRevalidate = false;
173
196
  defaultReason = "nav:non-route-skip";
174
197
  debugLog("revalidation", "non-route segment skipped by default", {
@@ -178,7 +201,6 @@ export async function evaluateRevalidation<TEnv>(
178
201
  }
179
202
  }
180
203
 
181
- // No custom revalidations defined - return default behavior without prev segment
182
204
  if (revalidations.length === 0) {
183
205
  if (defaultShouldRevalidate) {
184
206
  debugLog("revalidation", "default revalidate=true", {
@@ -195,14 +217,10 @@ export async function evaluateRevalidation<TEnv>(
195
217
  return defaultShouldRevalidate;
196
218
  }
197
219
 
198
- // Custom revalidations exist - may need full prev segment
199
- // Lazy load prev segment only if getPrevSegment provided
200
220
  const prevSegment = getPrevSegment ? await getPrevSegment() : null;
201
221
 
202
- // Execute revalidation functions with soft/hard decision pattern
203
222
  let currentSuggestion = defaultShouldRevalidate;
204
223
 
205
- // Compute public route names (filtered: undefined for auto-generated routes)
206
224
  const toRouteName =
207
225
  routeKey && !isAutoGeneratedRouteName(routeKey) ? routeKey : undefined;
208
226
  const reqCtx = _getRequestContext();
@@ -213,36 +231,73 @@ export async function evaluateRevalidation<TEnv>(
213
231
  : undefined;
214
232
 
215
233
  for (const { name, fn } of revalidations) {
216
- const result = fn({
217
- currentParams: prevSegment?.params || prevParams, // Use segment params if available, else route params
218
- currentUrl: prevUrl,
219
- nextParams,
220
- nextUrl,
221
- defaultShouldRevalidate: currentSuggestion,
222
- context,
223
- // Segment metadata (which segment is being evaluated)
224
- segmentType: segment.type,
225
- layoutName: segment.layoutName,
226
- slotName: segment.slot,
227
- // Action context (only populated when triggered by server action)
228
- actionId: actionContext?.actionId,
229
- actionUrl: actionContext?.actionUrl,
230
- actionResult: actionContext?.actionResult,
231
- formData: actionContext?.formData,
232
- method: request.method, // GET for navigation, POST for actions
233
- routeName: toRouteName, // Navigation target route name (filtered)
234
- fromRouteName, // Navigation source route name (filtered)
235
- toRouteName, // Navigation target route name (filtered)
236
- // Stale cache context (only true for background revalidation after stale cache render)
237
- stale,
238
- });
234
+ let result: any;
235
+ try {
236
+ result = fn({
237
+ currentParams: prevSegment?.params || prevParams, // Use segment params if available, else route params
238
+ currentUrl: prevUrl,
239
+ nextParams,
240
+ nextUrl,
241
+ defaultShouldRevalidate: currentSuggestion,
242
+ context,
243
+ // Segment metadata (which segment is being evaluated)
244
+ segmentType: segment.type,
245
+ layoutName: segment.layoutName,
246
+ slotName: segment.slot,
247
+ // Action context (only populated when triggered by server action)
248
+ actionId: actionContext?.actionId,
249
+ isAction: makeIsAction(actionContext?.actionId),
250
+ actionUrl: actionContext?.actionUrl,
251
+ actionResult: actionContext?.actionResult,
252
+ formData: actionContext?.formData,
253
+ method: request.method,
254
+ routeName: toRouteName,
255
+ fromRouteName,
256
+ toRouteName,
257
+ stale,
258
+ });
259
+ } catch (error) {
260
+ // A thrown Response is control flow (e.g. `throw redirect(...)`), not a
261
+ // failure: re-throw it so the handler chokepoint (match-handlers.ts)
262
+ // turns it into the intended redirect/response. This mirrors how that
263
+ // catch special-cases `error instanceof Response`.
264
+ if (error instanceof Response) throw error;
265
+ // Fail open for genuine errors: a buggy user revalidate fn must not
266
+ // collapse the whole entry's loader batch into a failed partial render.
267
+ // Mirror the dynamic-tags fail-open in cache/cache-policy.ts: log and
268
+ // defer to the current default decision, leaving currentSuggestion
269
+ // unchanged. TODO: route through callOnError(phase "revalidation") once
270
+ // evaluateRevalidation is given the onError seam (today the error only
271
+ // reaches onError via the entry-collapse path in match-handlers.ts).
272
+ console.error(
273
+ `[revalidate] "${name}" threw for segment "${segment.id}"; using default decision:`,
274
+ error,
275
+ );
276
+ continue;
277
+ }
278
+
279
+ // The revalidate fn contract (handler-context.ts) is SYNCHRONOUS: it must
280
+ // return a boolean, a { defaultShouldRevalidate } object, or null/undefined.
281
+ // A Promise-returning (async) fn matches none of the decision branches below
282
+ // and silently falls through keeping the current default — a hard-to-find
283
+ // misuse. We do NOT await it (that would change the sync contract); instead
284
+ // we surface it as a dev-mode warning so the silent drop is diagnosable.
285
+ // Mirrors defer.ts: gated to dev, stripped from production builds.
286
+ if (
287
+ process.env.NODE_ENV !== "production" &&
288
+ result != null &&
289
+ typeof (result as { then?: unknown }).then === "function"
290
+ ) {
291
+ console.warn(
292
+ `[rango] revalidate fn "${name}" returned a Promise; revalidate ` +
293
+ `functions must be synchronous (return a boolean, ` +
294
+ `{ defaultShouldRevalidate }, or null/undefined). The async result ` +
295
+ `was IGNORED and the default (${currentSuggestion}) was kept. ` +
296
+ `Move async work into a loader instead.`,
297
+ );
298
+ }
239
299
 
240
- // Check return type:
241
- // - boolean: hard decision, short-circuit immediately
242
- // - { defaultShouldRevalidate: boolean }: soft decision, update suggestion and continue
243
- // - null/undefined: use default behavior (equivalent to returning { defaultShouldRevalidate })
244
300
  if (typeof result === "boolean") {
245
- // Hard decision - short-circuit
246
301
  debugLog("revalidation", "hard decision", {
247
302
  segmentId: segment.id,
248
303
  revalidator: name,
@@ -255,7 +310,6 @@ export async function evaluateRevalidation<TEnv>(
255
310
  typeof result === "object" &&
256
311
  "defaultShouldRevalidate" in result
257
312
  ) {
258
- // Soft decision - update suggestion and continue
259
313
  currentSuggestion = result.defaultShouldRevalidate;
260
314
  debugLog("revalidation", "soft decision", {
261
315
  segmentId: segment.id,
@@ -263,18 +317,14 @@ export async function evaluateRevalidation<TEnv>(
263
317
  revalidate: currentSuggestion,
264
318
  });
265
319
  } else if (result === null || result === undefined) {
266
- // Defer to default - equivalent to { defaultShouldRevalidate: currentSuggestion }
267
- // This means "I don't care, use whatever the default is"
268
320
  debugLog("revalidation", "deferred to current default", {
269
321
  segmentId: segment.id,
270
322
  revalidator: name,
271
323
  revalidate: currentSuggestion,
272
324
  });
273
- // currentSuggestion stays the same, continue to next function
274
325
  }
275
326
  }
276
327
 
277
- // All revalidators completed - use final suggestion
278
328
  debugLog("revalidation", "final decision", {
279
329
  segmentId: segment.id,
280
330
  revalidate: currentSuggestion,