@rangojs/router 0.0.0-experimental.debug-cache-fix → 0.0.0-experimental.df7974ff

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 (979) hide show
  1. package/README.md +188 -35
  2. package/dist/__internal.d.ts +83 -0
  3. package/dist/__internal.d.ts.map +1 -0
  4. package/dist/__internal.js +19 -0
  5. package/dist/__internal.js.map +1 -0
  6. package/dist/__mocks__/version.d.ts +7 -0
  7. package/dist/__mocks__/version.d.ts.map +1 -0
  8. package/dist/__mocks__/version.js +7 -0
  9. package/dist/__mocks__/version.js.map +1 -0
  10. package/dist/__tests__/client-href.test.d.ts +2 -0
  11. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  12. package/dist/__tests__/client-href.test.js +74 -0
  13. package/dist/__tests__/client-href.test.js.map +1 -0
  14. package/dist/__tests__/component-utils.test.d.ts +2 -0
  15. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  16. package/dist/__tests__/component-utils.test.js +51 -0
  17. package/dist/__tests__/component-utils.test.js.map +1 -0
  18. package/dist/__tests__/event-controller.test.d.ts +2 -0
  19. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  20. package/dist/__tests__/event-controller.test.js +538 -0
  21. package/dist/__tests__/event-controller.test.js.map +1 -0
  22. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  24. package/dist/__tests__/helpers/route-tree.js +374 -0
  25. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  26. package/dist/__tests__/match-result.test.d.ts +2 -0
  27. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  28. package/dist/__tests__/match-result.test.js +154 -0
  29. package/dist/__tests__/match-result.test.js.map +1 -0
  30. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  31. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  32. package/dist/__tests__/navigation-store.test.js +440 -0
  33. package/dist/__tests__/navigation-store.test.js.map +1 -0
  34. package/dist/__tests__/partial-update.test.d.ts +2 -0
  35. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  36. package/dist/__tests__/partial-update.test.js +1009 -0
  37. package/dist/__tests__/partial-update.test.js.map +1 -0
  38. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  39. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  40. package/dist/__tests__/reverse-types.test.js +656 -0
  41. package/dist/__tests__/reverse-types.test.js.map +1 -0
  42. package/dist/__tests__/route-definition.test.d.ts +2 -0
  43. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  44. package/dist/__tests__/route-definition.test.js +55 -0
  45. package/dist/__tests__/route-definition.test.js.map +1 -0
  46. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  47. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  48. package/dist/__tests__/router-helpers.test.js +377 -0
  49. package/dist/__tests__/router-helpers.test.js.map +1 -0
  50. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  52. package/dist/__tests__/router-integration-2.test.js +426 -0
  53. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  54. package/dist/__tests__/router-integration.test.d.ts +2 -0
  55. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  56. package/dist/__tests__/router-integration.test.js +1051 -0
  57. package/dist/__tests__/router-integration.test.js.map +1 -0
  58. package/dist/__tests__/search-params.test.d.ts +5 -0
  59. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  60. package/dist/__tests__/search-params.test.js +306 -0
  61. package/dist/__tests__/search-params.test.js.map +1 -0
  62. package/dist/__tests__/segment-system.test.d.ts +2 -0
  63. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  64. package/dist/__tests__/segment-system.test.js +627 -0
  65. package/dist/__tests__/segment-system.test.js.map +1 -0
  66. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  68. package/dist/__tests__/static-handler-types.test.js +63 -0
  69. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  70. package/dist/__tests__/urls.test.d.ts +2 -0
  71. package/dist/__tests__/urls.test.d.ts.map +1 -0
  72. package/dist/__tests__/urls.test.js +421 -0
  73. package/dist/__tests__/urls.test.js.map +1 -0
  74. package/dist/__tests__/use-mount.test.d.ts +2 -0
  75. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  76. package/dist/__tests__/use-mount.test.js +35 -0
  77. package/dist/__tests__/use-mount.test.js.map +1 -0
  78. package/dist/bin/rango.d.ts +2 -0
  79. package/dist/bin/rango.d.ts.map +1 -0
  80. package/dist/bin/rango.js +130 -47
  81. package/dist/bin/rango.js.map +1 -0
  82. package/dist/browser/event-controller.d.ts +191 -0
  83. package/dist/browser/event-controller.d.ts.map +1 -0
  84. package/dist/browser/event-controller.js +559 -0
  85. package/dist/browser/event-controller.js.map +1 -0
  86. package/dist/browser/index.d.ts +2 -0
  87. package/dist/browser/index.d.ts.map +1 -0
  88. package/dist/browser/index.js +14 -0
  89. package/dist/browser/index.js.map +1 -0
  90. package/dist/browser/link-interceptor.d.ts +38 -0
  91. package/dist/browser/link-interceptor.d.ts.map +1 -0
  92. package/dist/browser/link-interceptor.js +99 -0
  93. package/dist/browser/link-interceptor.js.map +1 -0
  94. package/dist/browser/logging.d.ts +10 -0
  95. package/dist/browser/logging.d.ts.map +1 -0
  96. package/dist/browser/logging.js +29 -0
  97. package/dist/browser/logging.js.map +1 -0
  98. package/dist/browser/lru-cache.d.ts +17 -0
  99. package/dist/browser/lru-cache.d.ts.map +1 -0
  100. package/dist/browser/lru-cache.js +50 -0
  101. package/dist/browser/lru-cache.js.map +1 -0
  102. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  103. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  104. package/dist/browser/merge-segment-loaders.js +102 -0
  105. package/dist/browser/merge-segment-loaders.js.map +1 -0
  106. package/dist/browser/navigation-bridge.d.ts +102 -0
  107. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  108. package/dist/browser/navigation-bridge.js +708 -0
  109. package/dist/browser/navigation-bridge.js.map +1 -0
  110. package/dist/browser/navigation-client.d.ts +25 -0
  111. package/dist/browser/navigation-client.d.ts.map +1 -0
  112. package/dist/browser/navigation-client.js +157 -0
  113. package/dist/browser/navigation-client.js.map +1 -0
  114. package/dist/browser/navigation-store.d.ts +101 -0
  115. package/dist/browser/navigation-store.d.ts.map +1 -0
  116. package/dist/browser/navigation-store.js +625 -0
  117. package/dist/browser/navigation-store.js.map +1 -0
  118. package/dist/browser/partial-update.d.ts +75 -0
  119. package/dist/browser/partial-update.d.ts.map +1 -0
  120. package/dist/browser/partial-update.js +426 -0
  121. package/dist/browser/partial-update.js.map +1 -0
  122. package/dist/browser/react/Link.d.ts +86 -0
  123. package/dist/browser/react/Link.d.ts.map +1 -0
  124. package/dist/browser/react/Link.js +128 -0
  125. package/dist/browser/react/Link.js.map +1 -0
  126. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  127. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  128. package/dist/browser/react/NavigationProvider.js +216 -0
  129. package/dist/browser/react/NavigationProvider.js.map +1 -0
  130. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  132. package/dist/browser/react/ScrollRestoration.js +57 -0
  133. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  134. package/dist/browser/react/context.d.ts +46 -0
  135. package/dist/browser/react/context.d.ts.map +1 -0
  136. package/dist/browser/react/context.js +10 -0
  137. package/dist/browser/react/context.js.map +1 -0
  138. package/dist/browser/react/index.d.ts +11 -0
  139. package/dist/browser/react/index.d.ts.map +1 -0
  140. package/dist/browser/react/index.js +22 -0
  141. package/dist/browser/react/index.js.map +1 -0
  142. package/dist/browser/react/location-state-shared.d.ts +63 -0
  143. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  144. package/dist/browser/react/location-state-shared.js +81 -0
  145. package/dist/browser/react/location-state-shared.js.map +1 -0
  146. package/dist/browser/react/location-state.d.ts +23 -0
  147. package/dist/browser/react/location-state.d.ts.map +1 -0
  148. package/dist/browser/react/location-state.js +29 -0
  149. package/dist/browser/react/location-state.js.map +1 -0
  150. package/dist/browser/react/mount-context.d.ts +24 -0
  151. package/dist/browser/react/mount-context.d.ts.map +1 -0
  152. package/dist/browser/react/mount-context.js +24 -0
  153. package/dist/browser/react/mount-context.js.map +1 -0
  154. package/dist/browser/react/use-action.d.ts +64 -0
  155. package/dist/browser/react/use-action.d.ts.map +1 -0
  156. package/dist/browser/react/use-action.js +134 -0
  157. package/dist/browser/react/use-action.js.map +1 -0
  158. package/dist/browser/react/use-client-cache.d.ts +41 -0
  159. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  160. package/dist/browser/react/use-client-cache.js +39 -0
  161. package/dist/browser/react/use-client-cache.js.map +1 -0
  162. package/dist/browser/react/use-handle.d.ts +31 -0
  163. package/dist/browser/react/use-handle.d.ts.map +1 -0
  164. package/dist/browser/react/use-handle.js +144 -0
  165. package/dist/browser/react/use-handle.js.map +1 -0
  166. package/dist/browser/react/use-href.d.ts +33 -0
  167. package/dist/browser/react/use-href.d.ts.map +1 -0
  168. package/dist/browser/react/use-href.js +39 -0
  169. package/dist/browser/react/use-href.js.map +1 -0
  170. package/dist/browser/react/use-link-status.d.ts +37 -0
  171. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  172. package/dist/browser/react/use-link-status.js +99 -0
  173. package/dist/browser/react/use-link-status.js.map +1 -0
  174. package/dist/browser/react/use-mount.d.ts +25 -0
  175. package/dist/browser/react/use-mount.d.ts.map +1 -0
  176. package/dist/browser/react/use-mount.js +30 -0
  177. package/dist/browser/react/use-mount.js.map +1 -0
  178. package/dist/browser/react/use-navigation.d.ts +27 -0
  179. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  180. package/dist/browser/react/use-navigation.js +87 -0
  181. package/dist/browser/react/use-navigation.js.map +1 -0
  182. package/dist/browser/react/use-segments.d.ts +38 -0
  183. package/dist/browser/react/use-segments.d.ts.map +1 -0
  184. package/dist/browser/react/use-segments.js +130 -0
  185. package/dist/browser/react/use-segments.js.map +1 -0
  186. package/dist/browser/request-controller.d.ts +26 -0
  187. package/dist/browser/request-controller.d.ts.map +1 -0
  188. package/dist/browser/request-controller.js +147 -0
  189. package/dist/browser/request-controller.js.map +1 -0
  190. package/dist/browser/rsc-router.d.ts +129 -0
  191. package/dist/browser/rsc-router.d.ts.map +1 -0
  192. package/dist/browser/rsc-router.js +195 -0
  193. package/dist/browser/rsc-router.js.map +1 -0
  194. package/dist/browser/scroll-restoration.d.ts +93 -0
  195. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  196. package/dist/browser/scroll-restoration.js +321 -0
  197. package/dist/browser/scroll-restoration.js.map +1 -0
  198. package/dist/browser/segment-structure-assert.d.ts +17 -0
  199. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  200. package/dist/browser/segment-structure-assert.js +59 -0
  201. package/dist/browser/segment-structure-assert.js.map +1 -0
  202. package/dist/browser/server-action-bridge.d.ts +26 -0
  203. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  204. package/dist/browser/server-action-bridge.js +668 -0
  205. package/dist/browser/server-action-bridge.js.map +1 -0
  206. package/dist/browser/shallow.d.ts +12 -0
  207. package/dist/browser/shallow.d.ts.map +1 -0
  208. package/dist/browser/shallow.js +34 -0
  209. package/dist/browser/shallow.js.map +1 -0
  210. package/dist/browser/types.d.ts +369 -0
  211. package/dist/browser/types.d.ts.map +1 -0
  212. package/dist/browser/types.js +2 -0
  213. package/dist/browser/types.js.map +1 -0
  214. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  216. package/dist/build/__tests__/generate-cli.test.js +237 -0
  217. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  218. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  220. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  221. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  222. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  224. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  225. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  226. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  228. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  230. package/dist/build/generate-manifest.d.ts +81 -0
  231. package/dist/build/generate-manifest.d.ts.map +1 -0
  232. package/dist/build/generate-manifest.js +276 -0
  233. package/dist/build/generate-manifest.js.map +1 -0
  234. package/dist/build/generate-route-types.d.ts +115 -0
  235. package/dist/build/generate-route-types.d.ts.map +1 -0
  236. package/dist/build/generate-route-types.js +740 -0
  237. package/dist/build/generate-route-types.js.map +1 -0
  238. package/dist/build/index.d.ts +21 -0
  239. package/dist/build/index.d.ts.map +1 -0
  240. package/dist/build/index.js +21 -0
  241. package/dist/build/index.js.map +1 -0
  242. package/dist/build/route-trie.d.ts +71 -0
  243. package/dist/build/route-trie.d.ts.map +1 -0
  244. package/dist/build/route-trie.js +175 -0
  245. package/dist/build/route-trie.js.map +1 -0
  246. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  248. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  249. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  250. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  252. package/dist/cache/__tests__/document-cache.test.js +345 -0
  253. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  254. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  258. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  260. package/dist/cache/__tests__/memory-store.test.js +367 -0
  261. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  262. package/dist/cache/cache-scope.d.ts +102 -0
  263. package/dist/cache/cache-scope.d.ts.map +1 -0
  264. package/dist/cache/cache-scope.js +440 -0
  265. package/dist/cache/cache-scope.js.map +1 -0
  266. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  270. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  272. package/dist/cache/cf/cf-cache-store.js +242 -0
  273. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  274. package/dist/cache/cf/index.d.ts +14 -0
  275. package/dist/cache/cf/index.d.ts.map +1 -0
  276. package/dist/cache/cf/index.js +17 -0
  277. package/dist/cache/cf/index.js.map +1 -0
  278. package/dist/cache/document-cache.d.ts +64 -0
  279. package/dist/cache/document-cache.d.ts.map +1 -0
  280. package/dist/cache/document-cache.js +228 -0
  281. package/dist/cache/document-cache.js.map +1 -0
  282. package/dist/cache/index.d.ts +19 -0
  283. package/dist/cache/index.d.ts.map +1 -0
  284. package/dist/cache/index.js +21 -0
  285. package/dist/cache/index.js.map +1 -0
  286. package/dist/cache/memory-segment-store.d.ts +110 -0
  287. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  288. package/dist/cache/memory-segment-store.js +117 -0
  289. package/dist/cache/memory-segment-store.js.map +1 -0
  290. package/dist/cache/memory-store.d.ts +41 -0
  291. package/dist/cache/memory-store.d.ts.map +1 -0
  292. package/dist/cache/memory-store.js +191 -0
  293. package/dist/cache/memory-store.js.map +1 -0
  294. package/dist/cache/types.d.ts +317 -0
  295. package/dist/cache/types.d.ts.map +1 -0
  296. package/dist/cache/types.js +12 -0
  297. package/dist/cache/types.js.map +1 -0
  298. package/dist/client.d.ts +248 -0
  299. package/dist/client.d.ts.map +1 -0
  300. package/dist/client.js +367 -0
  301. package/dist/client.js.map +1 -0
  302. package/dist/client.rsc.d.ts +26 -0
  303. package/dist/client.rsc.d.ts.map +1 -0
  304. package/dist/client.rsc.js +46 -0
  305. package/dist/client.rsc.js.map +1 -0
  306. package/dist/component-utils.d.ts +36 -0
  307. package/dist/component-utils.d.ts.map +1 -0
  308. package/dist/component-utils.js +61 -0
  309. package/dist/component-utils.js.map +1 -0
  310. package/dist/components/DefaultDocument.d.ts +13 -0
  311. package/dist/components/DefaultDocument.d.ts.map +1 -0
  312. package/dist/components/DefaultDocument.js +15 -0
  313. package/dist/components/DefaultDocument.js.map +1 -0
  314. package/dist/debug.d.ts +58 -0
  315. package/dist/debug.d.ts.map +1 -0
  316. package/dist/debug.js +157 -0
  317. package/dist/debug.js.map +1 -0
  318. package/dist/default-error-boundary.d.ts +11 -0
  319. package/dist/default-error-boundary.d.ts.map +1 -0
  320. package/dist/default-error-boundary.js +45 -0
  321. package/dist/default-error-boundary.js.map +1 -0
  322. package/dist/deps/browser.d.ts +2 -0
  323. package/dist/deps/browser.d.ts.map +1 -0
  324. package/dist/deps/browser.js +3 -0
  325. package/dist/deps/browser.js.map +1 -0
  326. package/dist/deps/html-stream-client.d.ts +2 -0
  327. package/dist/deps/html-stream-client.d.ts.map +1 -0
  328. package/dist/deps/html-stream-client.js +3 -0
  329. package/dist/deps/html-stream-client.js.map +1 -0
  330. package/dist/deps/html-stream-server.d.ts +2 -0
  331. package/dist/deps/html-stream-server.d.ts.map +1 -0
  332. package/dist/deps/html-stream-server.js +3 -0
  333. package/dist/deps/html-stream-server.js.map +1 -0
  334. package/dist/deps/rsc.d.ts +2 -0
  335. package/dist/deps/rsc.d.ts.map +1 -0
  336. package/dist/deps/rsc.js +4 -0
  337. package/dist/deps/rsc.js.map +1 -0
  338. package/dist/deps/ssr.d.ts +2 -0
  339. package/dist/deps/ssr.d.ts.map +1 -0
  340. package/dist/deps/ssr.js +3 -0
  341. package/dist/deps/ssr.js.map +1 -0
  342. package/dist/errors.d.ts +174 -0
  343. package/dist/errors.d.ts.map +1 -0
  344. package/dist/errors.js +241 -0
  345. package/dist/errors.js.map +1 -0
  346. package/dist/handle.d.ts +78 -0
  347. package/dist/handle.d.ts.map +1 -0
  348. package/dist/handle.js +82 -0
  349. package/dist/handle.js.map +1 -0
  350. package/dist/handles/MetaTags.d.ts +14 -0
  351. package/dist/handles/MetaTags.d.ts.map +1 -0
  352. package/dist/handles/MetaTags.js +136 -0
  353. package/dist/handles/MetaTags.js.map +1 -0
  354. package/dist/handles/index.d.ts +6 -0
  355. package/dist/handles/index.d.ts.map +1 -0
  356. package/dist/handles/index.js +6 -0
  357. package/dist/handles/index.js.map +1 -0
  358. package/dist/handles/meta.d.ts +39 -0
  359. package/dist/handles/meta.d.ts.map +1 -0
  360. package/dist/handles/meta.js +202 -0
  361. package/dist/handles/meta.js.map +1 -0
  362. package/dist/host/__tests__/errors.test.d.ts +2 -0
  363. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  364. package/dist/host/__tests__/errors.test.js +76 -0
  365. package/dist/host/__tests__/errors.test.js.map +1 -0
  366. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  370. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  372. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  374. package/dist/host/__tests__/router.test.d.ts +2 -0
  375. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  376. package/dist/host/__tests__/router.test.js +241 -0
  377. package/dist/host/__tests__/router.test.js.map +1 -0
  378. package/dist/host/__tests__/testing.test.d.ts +2 -0
  379. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  380. package/dist/host/__tests__/testing.test.js +64 -0
  381. package/dist/host/__tests__/testing.test.js.map +1 -0
  382. package/dist/host/__tests__/utils.test.d.ts +2 -0
  383. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  384. package/dist/host/__tests__/utils.test.js +29 -0
  385. package/dist/host/__tests__/utils.test.js.map +1 -0
  386. package/dist/host/cookie-handler.d.ts +34 -0
  387. package/dist/host/cookie-handler.d.ts.map +1 -0
  388. package/dist/host/cookie-handler.js +124 -0
  389. package/dist/host/cookie-handler.js.map +1 -0
  390. package/dist/host/errors.d.ts +56 -0
  391. package/dist/host/errors.d.ts.map +1 -0
  392. package/dist/host/errors.js +79 -0
  393. package/dist/host/errors.js.map +1 -0
  394. package/dist/host/index.d.ts +29 -0
  395. package/dist/host/index.d.ts.map +1 -0
  396. package/dist/host/index.js +32 -0
  397. package/dist/host/index.js.map +1 -0
  398. package/dist/host/pattern-matcher.d.ts +36 -0
  399. package/dist/host/pattern-matcher.d.ts.map +1 -0
  400. package/dist/host/pattern-matcher.js +172 -0
  401. package/dist/host/pattern-matcher.js.map +1 -0
  402. package/dist/host/router.d.ts +26 -0
  403. package/dist/host/router.d.ts.map +1 -0
  404. package/dist/host/router.js +218 -0
  405. package/dist/host/router.js.map +1 -0
  406. package/dist/host/testing.d.ts +36 -0
  407. package/dist/host/testing.d.ts.map +1 -0
  408. package/dist/host/testing.js +55 -0
  409. package/dist/host/testing.js.map +1 -0
  410. package/dist/host/types.d.ts +115 -0
  411. package/dist/host/types.d.ts.map +1 -0
  412. package/dist/host/types.js +7 -0
  413. package/dist/host/types.js.map +1 -0
  414. package/dist/host/utils.d.ts +21 -0
  415. package/dist/host/utils.d.ts.map +1 -0
  416. package/dist/host/utils.js +23 -0
  417. package/dist/host/utils.js.map +1 -0
  418. package/dist/href-client.d.ts +131 -0
  419. package/dist/href-client.d.ts.map +1 -0
  420. package/dist/href-client.js +64 -0
  421. package/dist/href-client.js.map +1 -0
  422. package/dist/href-context.d.ts +29 -0
  423. package/dist/href-context.d.ts.map +1 -0
  424. package/dist/href-context.js +21 -0
  425. package/dist/href-context.js.map +1 -0
  426. package/dist/index.d.ts +73 -0
  427. package/dist/index.d.ts.map +1 -0
  428. package/dist/index.js +91 -0
  429. package/dist/index.js.map +1 -0
  430. package/dist/index.rsc.d.ts +32 -0
  431. package/dist/index.rsc.d.ts.map +1 -0
  432. package/dist/index.rsc.js +40 -0
  433. package/dist/index.rsc.js.map +1 -0
  434. package/dist/internal-debug.d.ts +2 -0
  435. package/dist/internal-debug.d.ts.map +1 -0
  436. package/dist/internal-debug.js +5 -0
  437. package/dist/internal-debug.js.map +1 -0
  438. package/dist/loader.d.ts +14 -0
  439. package/dist/loader.d.ts.map +1 -0
  440. package/dist/loader.js +20 -0
  441. package/dist/loader.js.map +1 -0
  442. package/dist/loader.rsc.d.ts +19 -0
  443. package/dist/loader.rsc.d.ts.map +1 -0
  444. package/dist/loader.rsc.js +99 -0
  445. package/dist/loader.rsc.js.map +1 -0
  446. package/dist/network-error-thrower.d.ts +17 -0
  447. package/dist/network-error-thrower.d.ts.map +1 -0
  448. package/dist/network-error-thrower.js +14 -0
  449. package/dist/network-error-thrower.js.map +1 -0
  450. package/dist/outlet-context.d.ts +13 -0
  451. package/dist/outlet-context.d.ts.map +1 -0
  452. package/dist/outlet-context.js +3 -0
  453. package/dist/outlet-context.js.map +1 -0
  454. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  456. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  457. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  458. package/dist/prerender/param-hash.d.ts +16 -0
  459. package/dist/prerender/param-hash.d.ts.map +1 -0
  460. package/dist/prerender/param-hash.js +36 -0
  461. package/dist/prerender/param-hash.js.map +1 -0
  462. package/dist/prerender/store.d.ts +38 -0
  463. package/dist/prerender/store.d.ts.map +1 -0
  464. package/dist/prerender/store.js +61 -0
  465. package/dist/prerender/store.js.map +1 -0
  466. package/dist/prerender.d.ts +66 -0
  467. package/dist/prerender.d.ts.map +1 -0
  468. package/dist/prerender.js +57 -0
  469. package/dist/prerender.js.map +1 -0
  470. package/dist/reverse.d.ts +196 -0
  471. package/dist/reverse.d.ts.map +1 -0
  472. package/dist/reverse.js +78 -0
  473. package/dist/reverse.js.map +1 -0
  474. package/dist/root-error-boundary.d.ts +33 -0
  475. package/dist/root-error-boundary.d.ts.map +1 -0
  476. package/dist/root-error-boundary.js +165 -0
  477. package/dist/root-error-boundary.js.map +1 -0
  478. package/dist/route-content-wrapper.d.ts +46 -0
  479. package/dist/route-content-wrapper.d.ts.map +1 -0
  480. package/dist/route-content-wrapper.js +77 -0
  481. package/dist/route-content-wrapper.js.map +1 -0
  482. package/dist/route-definition.d.ts +421 -0
  483. package/dist/route-definition.d.ts.map +1 -0
  484. package/dist/route-definition.js +868 -0
  485. package/dist/route-definition.js.map +1 -0
  486. package/dist/route-map-builder.d.ts +155 -0
  487. package/dist/route-map-builder.d.ts.map +1 -0
  488. package/dist/route-map-builder.js +237 -0
  489. package/dist/route-map-builder.js.map +1 -0
  490. package/dist/route-types.d.ts +165 -0
  491. package/dist/route-types.d.ts.map +1 -0
  492. package/dist/route-types.js +7 -0
  493. package/dist/route-types.js.map +1 -0
  494. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  496. package/dist/router/__tests__/handler-context.test.js +65 -0
  497. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  498. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  502. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  503. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  504. package/dist/router/__tests__/match-context.test.js +92 -0
  505. package/dist/router/__tests__/match-context.test.js.map +1 -0
  506. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  508. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  509. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  510. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  511. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  512. package/dist/router/__tests__/match-result.test.js +457 -0
  513. package/dist/router/__tests__/match-result.test.js.map +1 -0
  514. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  515. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  516. package/dist/router/__tests__/on-error.test.js +678 -0
  517. package/dist/router/__tests__/on-error.test.js.map +1 -0
  518. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  520. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  521. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  522. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  526. package/dist/router/error-handling.d.ts +77 -0
  527. package/dist/router/error-handling.d.ts.map +1 -0
  528. package/dist/router/error-handling.js +202 -0
  529. package/dist/router/error-handling.js.map +1 -0
  530. package/dist/router/handler-context.d.ts +20 -0
  531. package/dist/router/handler-context.d.ts.map +1 -0
  532. package/dist/router/handler-context.js +198 -0
  533. package/dist/router/handler-context.js.map +1 -0
  534. package/dist/router/intercept-resolution.d.ts +66 -0
  535. package/dist/router/intercept-resolution.d.ts.map +1 -0
  536. package/dist/router/intercept-resolution.js +246 -0
  537. package/dist/router/intercept-resolution.js.map +1 -0
  538. package/dist/router/loader-resolution.d.ts +64 -0
  539. package/dist/router/loader-resolution.d.ts.map +1 -0
  540. package/dist/router/loader-resolution.js +284 -0
  541. package/dist/router/loader-resolution.js.map +1 -0
  542. package/dist/router/logging.d.ts +15 -0
  543. package/dist/router/logging.d.ts.map +1 -0
  544. package/dist/router/logging.js +99 -0
  545. package/dist/router/logging.js.map +1 -0
  546. package/dist/router/manifest.d.ts +22 -0
  547. package/dist/router/manifest.d.ts.map +1 -0
  548. package/dist/router/manifest.js +181 -0
  549. package/dist/router/manifest.js.map +1 -0
  550. package/dist/router/match-api.d.ts +35 -0
  551. package/dist/router/match-api.d.ts.map +1 -0
  552. package/dist/router/match-api.js +406 -0
  553. package/dist/router/match-api.js.map +1 -0
  554. package/dist/router/match-context.d.ts +206 -0
  555. package/dist/router/match-context.d.ts.map +1 -0
  556. package/dist/router/match-context.js +17 -0
  557. package/dist/router/match-context.js.map +1 -0
  558. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  560. package/dist/router/match-middleware/background-revalidation.js +75 -0
  561. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  562. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  564. package/dist/router/match-middleware/cache-lookup.js +257 -0
  565. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  566. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  567. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  568. package/dist/router/match-middleware/cache-store.js +108 -0
  569. package/dist/router/match-middleware/cache-store.js.map +1 -0
  570. package/dist/router/match-middleware/index.d.ts +81 -0
  571. package/dist/router/match-middleware/index.d.ts.map +1 -0
  572. package/dist/router/match-middleware/index.js +80 -0
  573. package/dist/router/match-middleware/index.js.map +1 -0
  574. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  576. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  577. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  578. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  580. package/dist/router/match-middleware/segment-resolution.js +53 -0
  581. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  582. package/dist/router/match-pipelines.d.ts +147 -0
  583. package/dist/router/match-pipelines.d.ts.map +1 -0
  584. package/dist/router/match-pipelines.js +82 -0
  585. package/dist/router/match-pipelines.js.map +1 -0
  586. package/dist/router/match-result.d.ts +126 -0
  587. package/dist/router/match-result.d.ts.map +1 -0
  588. package/dist/router/match-result.js +93 -0
  589. package/dist/router/match-result.js.map +1 -0
  590. package/dist/router/metrics.d.ts +20 -0
  591. package/dist/router/metrics.d.ts.map +1 -0
  592. package/dist/router/metrics.js +47 -0
  593. package/dist/router/metrics.js.map +1 -0
  594. package/dist/router/middleware.d.ts +249 -0
  595. package/dist/router/middleware.d.ts.map +1 -0
  596. package/dist/router/middleware.js +434 -0
  597. package/dist/router/middleware.js.map +1 -0
  598. package/dist/router/middleware.test.d.ts +2 -0
  599. package/dist/router/middleware.test.d.ts.map +1 -0
  600. package/dist/router/middleware.test.js +816 -0
  601. package/dist/router/middleware.test.js.map +1 -0
  602. package/dist/router/pattern-matching.d.ts +149 -0
  603. package/dist/router/pattern-matching.d.ts.map +1 -0
  604. package/dist/router/pattern-matching.js +349 -0
  605. package/dist/router/pattern-matching.js.map +1 -0
  606. package/dist/router/revalidation.d.ts +44 -0
  607. package/dist/router/revalidation.d.ts.map +1 -0
  608. package/dist/router/revalidation.js +147 -0
  609. package/dist/router/revalidation.js.map +1 -0
  610. package/dist/router/router-context.d.ts +135 -0
  611. package/dist/router/router-context.d.ts.map +1 -0
  612. package/dist/router/router-context.js +36 -0
  613. package/dist/router/router-context.js.map +1 -0
  614. package/dist/router/segment-resolution.d.ts +127 -0
  615. package/dist/router/segment-resolution.d.ts.map +1 -0
  616. package/dist/router/segment-resolution.js +919 -0
  617. package/dist/router/segment-resolution.js.map +1 -0
  618. package/dist/router/trie-matching.d.ts +40 -0
  619. package/dist/router/trie-matching.d.ts.map +1 -0
  620. package/dist/router/trie-matching.js +127 -0
  621. package/dist/router/trie-matching.js.map +1 -0
  622. package/dist/router/types.d.ts +136 -0
  623. package/dist/router/types.d.ts.map +1 -0
  624. package/dist/router/types.js +7 -0
  625. package/dist/router/types.js.map +1 -0
  626. package/dist/router.d.ts +753 -0
  627. package/dist/router.d.ts.map +1 -0
  628. package/dist/router.gen.d.ts +6 -0
  629. package/dist/router.gen.d.ts.map +1 -0
  630. package/dist/router.gen.js +6 -0
  631. package/dist/router.gen.js.map +1 -0
  632. package/dist/router.js +1304 -0
  633. package/dist/router.js.map +1 -0
  634. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  636. package/dist/rsc/__tests__/helpers.test.js +140 -0
  637. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  638. package/dist/rsc/handler.d.ts +45 -0
  639. package/dist/rsc/handler.d.ts.map +1 -0
  640. package/dist/rsc/handler.js +1172 -0
  641. package/dist/rsc/handler.js.map +1 -0
  642. package/dist/rsc/helpers.d.ts +16 -0
  643. package/dist/rsc/helpers.d.ts.map +1 -0
  644. package/dist/rsc/helpers.js +55 -0
  645. package/dist/rsc/helpers.js.map +1 -0
  646. package/dist/rsc/index.d.ts +22 -0
  647. package/dist/rsc/index.d.ts.map +1 -0
  648. package/dist/rsc/index.js +23 -0
  649. package/dist/rsc/index.js.map +1 -0
  650. package/dist/rsc/nonce.d.ts +9 -0
  651. package/dist/rsc/nonce.d.ts.map +1 -0
  652. package/dist/rsc/nonce.js +18 -0
  653. package/dist/rsc/nonce.js.map +1 -0
  654. package/dist/rsc/types.d.ts +206 -0
  655. package/dist/rsc/types.d.ts.map +1 -0
  656. package/dist/rsc/types.js +8 -0
  657. package/dist/rsc/types.js.map +1 -0
  658. package/dist/search-params.d.ts +103 -0
  659. package/dist/search-params.d.ts.map +1 -0
  660. package/dist/search-params.js +74 -0
  661. package/dist/search-params.js.map +1 -0
  662. package/dist/segment-system.d.ts +75 -0
  663. package/dist/segment-system.d.ts.map +1 -0
  664. package/dist/segment-system.js +336 -0
  665. package/dist/segment-system.js.map +1 -0
  666. package/dist/server/context.d.ts +245 -0
  667. package/dist/server/context.d.ts.map +1 -0
  668. package/dist/server/context.js +197 -0
  669. package/dist/server/context.js.map +1 -0
  670. package/dist/server/fetchable-loader-store.d.ts +18 -0
  671. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  672. package/dist/server/fetchable-loader-store.js +18 -0
  673. package/dist/server/fetchable-loader-store.js.map +1 -0
  674. package/dist/server/handle-store.d.ts +85 -0
  675. package/dist/server/handle-store.d.ts.map +1 -0
  676. package/dist/server/handle-store.js +142 -0
  677. package/dist/server/handle-store.js.map +1 -0
  678. package/dist/server/loader-registry.d.ts +55 -0
  679. package/dist/server/loader-registry.d.ts.map +1 -0
  680. package/dist/server/loader-registry.js +132 -0
  681. package/dist/server/loader-registry.js.map +1 -0
  682. package/dist/server/request-context.d.ts +226 -0
  683. package/dist/server/request-context.d.ts.map +1 -0
  684. package/dist/server/request-context.js +290 -0
  685. package/dist/server/request-context.js.map +1 -0
  686. package/dist/server/root-layout.d.ts +4 -0
  687. package/dist/server/root-layout.d.ts.map +1 -0
  688. package/dist/server/root-layout.js +5 -0
  689. package/dist/server/root-layout.js.map +1 -0
  690. package/dist/server.d.ts +15 -0
  691. package/dist/server.d.ts.map +1 -0
  692. package/dist/server.js +20 -0
  693. package/dist/server.js.map +1 -0
  694. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  698. package/dist/ssr/index.d.ts +98 -0
  699. package/dist/ssr/index.d.ts.map +1 -0
  700. package/dist/ssr/index.js +158 -0
  701. package/dist/ssr/index.js.map +1 -0
  702. package/dist/static-handler.d.ts +50 -0
  703. package/dist/static-handler.d.ts.map +1 -0
  704. package/dist/static-handler.gen.d.ts +5 -0
  705. package/dist/static-handler.gen.d.ts.map +1 -0
  706. package/dist/static-handler.gen.js +5 -0
  707. package/dist/static-handler.gen.js.map +1 -0
  708. package/dist/static-handler.js +29 -0
  709. package/dist/static-handler.js.map +1 -0
  710. package/dist/theme/ThemeProvider.d.ts +20 -0
  711. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  712. package/dist/theme/ThemeProvider.js +240 -0
  713. package/dist/theme/ThemeProvider.js.map +1 -0
  714. package/dist/theme/ThemeScript.d.ts +48 -0
  715. package/dist/theme/ThemeScript.d.ts.map +1 -0
  716. package/dist/theme/ThemeScript.js +13 -0
  717. package/dist/theme/ThemeScript.js.map +1 -0
  718. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  719. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  720. package/dist/theme/__tests__/theme.test.js +103 -0
  721. package/dist/theme/__tests__/theme.test.js.map +1 -0
  722. package/dist/theme/constants.d.ts +29 -0
  723. package/dist/theme/constants.d.ts.map +1 -0
  724. package/dist/theme/constants.js +48 -0
  725. package/dist/theme/constants.js.map +1 -0
  726. package/dist/theme/index.d.ts +31 -0
  727. package/dist/theme/index.d.ts.map +1 -0
  728. package/dist/theme/index.js +36 -0
  729. package/dist/theme/index.js.map +1 -0
  730. package/dist/theme/theme-context.d.ts +40 -0
  731. package/dist/theme/theme-context.d.ts.map +1 -0
  732. package/dist/theme/theme-context.js +60 -0
  733. package/dist/theme/theme-context.js.map +1 -0
  734. package/dist/theme/theme-script.d.ts +27 -0
  735. package/dist/theme/theme-script.d.ts.map +1 -0
  736. package/dist/theme/theme-script.js +147 -0
  737. package/dist/theme/theme-script.js.map +1 -0
  738. package/dist/theme/types.d.ts +163 -0
  739. package/dist/theme/types.d.ts.map +1 -0
  740. package/dist/theme/types.js +11 -0
  741. package/dist/theme/types.js.map +1 -0
  742. package/dist/theme/use-theme.d.ts +12 -0
  743. package/dist/theme/use-theme.d.ts.map +1 -0
  744. package/dist/theme/use-theme.js +40 -0
  745. package/dist/theme/use-theme.js.map +1 -0
  746. package/dist/types.d.ts +1479 -0
  747. package/dist/types.d.ts.map +1 -0
  748. package/dist/types.js +10 -0
  749. package/dist/types.js.map +1 -0
  750. package/dist/urls.d.ts +441 -0
  751. package/dist/urls.d.ts.map +1 -0
  752. package/dist/urls.gen.d.ts +8 -0
  753. package/dist/urls.gen.d.ts.map +1 -0
  754. package/dist/urls.gen.js +8 -0
  755. package/dist/urls.gen.js.map +1 -0
  756. package/dist/urls.js +443 -0
  757. package/dist/urls.js.map +1 -0
  758. package/dist/use-loader.d.ts +127 -0
  759. package/dist/use-loader.d.ts.map +1 -0
  760. package/dist/use-loader.js +237 -0
  761. package/dist/use-loader.js.map +1 -0
  762. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  766. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  770. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  774. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  778. package/dist/vite/ast-handler-extract.d.ts +49 -0
  779. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  780. package/dist/vite/ast-handler-extract.js +249 -0
  781. package/dist/vite/ast-handler-extract.js.map +1 -0
  782. package/dist/vite/expose-action-id.d.ts +19 -0
  783. package/dist/vite/expose-action-id.d.ts.map +1 -0
  784. package/dist/vite/expose-action-id.js +250 -0
  785. package/dist/vite/expose-action-id.js.map +1 -0
  786. package/dist/vite/expose-id-utils.d.ts +69 -0
  787. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  788. package/dist/vite/expose-id-utils.js +289 -0
  789. package/dist/vite/expose-id-utils.js.map +1 -0
  790. package/dist/vite/expose-internal-ids.d.ts +22 -0
  791. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  792. package/dist/vite/expose-internal-ids.js +886 -0
  793. package/dist/vite/expose-internal-ids.js.map +1 -0
  794. package/dist/vite/index.d.ts +149 -0
  795. package/dist/vite/index.d.ts.map +1 -0
  796. package/dist/vite/index.js +1884 -537
  797. package/dist/vite/index.js.bak +5448 -0
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/index.named-routes.gen.ts +103 -0
  800. package/dist/vite/package-resolution.d.ts +43 -0
  801. package/dist/vite/package-resolution.d.ts.map +1 -0
  802. package/dist/vite/package-resolution.js +112 -0
  803. package/dist/vite/package-resolution.js.map +1 -0
  804. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  805. package/dist/vite/virtual-entries.d.ts +25 -0
  806. package/dist/vite/virtual-entries.d.ts.map +1 -0
  807. package/dist/vite/virtual-entries.js +110 -0
  808. package/dist/vite/virtual-entries.js.map +1 -0
  809. package/package.json +7 -5
  810. package/skills/breadcrumbs/SKILL.md +3 -1
  811. package/skills/cache-guide/SKILL.md +32 -0
  812. package/skills/caching/SKILL.md +8 -0
  813. package/skills/handler-use/SKILL.md +364 -0
  814. package/skills/hooks/SKILL.md +54 -20
  815. package/skills/i18n/SKILL.md +276 -0
  816. package/skills/intercept/SKILL.md +45 -0
  817. package/skills/layout/SKILL.md +24 -0
  818. package/skills/links/SKILL.md +237 -17
  819. package/skills/loader/SKILL.md +123 -46
  820. package/skills/middleware/SKILL.md +36 -3
  821. package/skills/migrate-nextjs/SKILL.md +562 -0
  822. package/skills/migrate-react-router/SKILL.md +769 -0
  823. package/skills/parallel/SKILL.md +68 -0
  824. package/skills/prerender/SKILL.md +110 -68
  825. package/skills/rango/SKILL.md +26 -22
  826. package/skills/response-routes/SKILL.md +8 -0
  827. package/skills/route/SKILL.md +79 -0
  828. package/skills/router-setup/SKILL.md +87 -2
  829. package/skills/server-actions/SKILL.md +739 -0
  830. package/skills/streams-and-websockets/SKILL.md +283 -0
  831. package/skills/typesafety/SKILL.md +19 -1
  832. package/skills/view-transitions/SKILL.md +212 -0
  833. package/src/__internal.ts +1 -1
  834. package/src/browser/app-shell.ts +52 -0
  835. package/src/browser/app-version.ts +14 -0
  836. package/src/browser/event-controller.ts +44 -4
  837. package/src/browser/navigation-bridge.ts +156 -10
  838. package/src/browser/navigation-client.ts +128 -53
  839. package/src/browser/navigation-store.ts +68 -9
  840. package/src/browser/partial-update.ts +84 -16
  841. package/src/browser/prefetch/cache.ts +129 -21
  842. package/src/browser/prefetch/fetch.ts +156 -18
  843. package/src/browser/prefetch/queue.ts +92 -29
  844. package/src/browser/prefetch/resource-ready.ts +77 -0
  845. package/src/browser/rango-state.ts +53 -13
  846. package/src/browser/react/Link.tsx +72 -8
  847. package/src/browser/react/NavigationProvider.tsx +82 -21
  848. package/src/browser/react/context.ts +7 -2
  849. package/src/browser/react/filter-segment-order.ts +51 -7
  850. package/src/browser/react/index.ts +3 -0
  851. package/src/browser/react/use-handle.ts +9 -58
  852. package/src/browser/react/use-navigation.ts +22 -2
  853. package/src/browser/react/use-params.ts +17 -4
  854. package/src/browser/react/use-reverse.ts +99 -0
  855. package/src/browser/react/use-router.ts +29 -9
  856. package/src/browser/react/use-segments.ts +11 -8
  857. package/src/browser/rsc-router.tsx +60 -9
  858. package/src/browser/scroll-restoration.ts +38 -33
  859. package/src/browser/segment-reconciler.ts +36 -14
  860. package/src/browser/server-action-bridge.ts +8 -6
  861. package/src/browser/types.ts +46 -5
  862. package/src/build/generate-manifest.ts +6 -6
  863. package/src/build/generate-route-types.ts +3 -0
  864. package/src/build/route-trie.ts +52 -25
  865. package/src/build/route-types/include-resolution.ts +8 -1
  866. package/src/build/route-types/router-processing.ts +211 -72
  867. package/src/build/route-types/scan-filter.ts +8 -1
  868. package/src/cache/cache-scope.ts +12 -14
  869. package/src/cache/cf/cf-cache-store.ts +5 -7
  870. package/src/cache/taint.ts +55 -0
  871. package/src/client.rsc.tsx +3 -0
  872. package/src/client.tsx +89 -231
  873. package/src/context-var.ts +72 -2
  874. package/src/handle.ts +40 -0
  875. package/src/href-client.ts +4 -1
  876. package/src/index.rsc.ts +6 -1
  877. package/src/index.ts +49 -6
  878. package/src/outlet-context.ts +1 -1
  879. package/src/prerender/store.ts +5 -4
  880. package/src/prerender.ts +138 -77
  881. package/src/response-utils.ts +28 -0
  882. package/src/reverse.ts +62 -15
  883. package/src/route-definition/dsl-helpers.ts +210 -35
  884. package/src/route-definition/helpers-types.ts +73 -20
  885. package/src/route-definition/index.ts +3 -0
  886. package/src/route-definition/redirect.ts +9 -1
  887. package/src/route-definition/resolve-handler-use.ts +155 -0
  888. package/src/route-types.ts +18 -0
  889. package/src/router/content-negotiation.ts +100 -1
  890. package/src/router/handler-context.ts +77 -38
  891. package/src/router/intercept-resolution.ts +9 -4
  892. package/src/router/lazy-includes.ts +6 -6
  893. package/src/router/loader-resolution.ts +159 -21
  894. package/src/router/manifest.ts +22 -13
  895. package/src/router/match-api.ts +128 -192
  896. package/src/router/match-handlers.ts +1 -0
  897. package/src/router/match-middleware/cache-lookup.ts +28 -8
  898. package/src/router/match-middleware/segment-resolution.ts +53 -0
  899. package/src/router/match-result.ts +101 -4
  900. package/src/router/middleware-types.ts +20 -33
  901. package/src/router/middleware.ts +56 -12
  902. package/src/router/navigation-snapshot.ts +182 -0
  903. package/src/router/pattern-matching.ts +101 -17
  904. package/src/router/prerender-match.ts +110 -10
  905. package/src/router/preview-match.ts +30 -102
  906. package/src/router/request-classification.ts +310 -0
  907. package/src/router/revalidation.ts +15 -1
  908. package/src/router/route-snapshot.ts +245 -0
  909. package/src/router/router-interfaces.ts +36 -4
  910. package/src/router/router-options.ts +37 -11
  911. package/src/router/segment-resolution/fresh.ts +88 -9
  912. package/src/router/segment-resolution/helpers.ts +29 -24
  913. package/src/router/segment-resolution/revalidation.ts +219 -108
  914. package/src/router/substitute-pattern-params.ts +56 -0
  915. package/src/router/trie-matching.ts +18 -13
  916. package/src/router/types.ts +1 -0
  917. package/src/router/url-params.ts +49 -0
  918. package/src/router.ts +55 -7
  919. package/src/rsc/handler.ts +478 -374
  920. package/src/rsc/helpers.ts +69 -41
  921. package/src/rsc/loader-fetch.ts +23 -3
  922. package/src/rsc/manifest-init.ts +5 -1
  923. package/src/rsc/progressive-enhancement.ts +18 -2
  924. package/src/rsc/response-route-handler.ts +14 -1
  925. package/src/rsc/rsc-rendering.ts +20 -1
  926. package/src/rsc/server-action.ts +12 -0
  927. package/src/rsc/ssr-setup.ts +2 -2
  928. package/src/rsc/types.ts +15 -1
  929. package/src/segment-content-promise.ts +67 -0
  930. package/src/segment-loader-promise.ts +122 -0
  931. package/src/segment-system.tsx +71 -70
  932. package/src/server/context.ts +76 -4
  933. package/src/server/handle-store.ts +19 -0
  934. package/src/server/loader-registry.ts +9 -8
  935. package/src/server/request-context.ts +185 -57
  936. package/src/ssr/index.tsx +8 -1
  937. package/src/static-handler.ts +18 -6
  938. package/src/types/cache-types.ts +4 -4
  939. package/src/types/handler-context.ts +47 -56
  940. package/src/types/loader-types.ts +41 -15
  941. package/src/types/request-scope.ts +126 -0
  942. package/src/types/route-entry.ts +12 -1
  943. package/src/types/segments.ts +18 -1
  944. package/src/urls/include-helper.ts +24 -14
  945. package/src/urls/path-helper-types.ts +39 -6
  946. package/src/urls/path-helper.ts +47 -12
  947. package/src/urls/pattern-types.ts +12 -0
  948. package/src/urls/response-types.ts +18 -16
  949. package/src/use-loader.tsx +77 -5
  950. package/src/vite/debug.ts +184 -0
  951. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  952. package/src/vite/discovery/discover-routers.ts +36 -4
  953. package/src/vite/discovery/gate-state.ts +171 -0
  954. package/src/vite/discovery/prerender-collection.ts +175 -74
  955. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  956. package/src/vite/discovery/state.ts +13 -4
  957. package/src/vite/index.ts +4 -0
  958. package/src/vite/plugin-types.ts +60 -5
  959. package/src/vite/plugins/cjs-to-esm.ts +5 -0
  960. package/src/vite/plugins/client-ref-dedup.ts +16 -0
  961. package/src/vite/plugins/client-ref-hashing.ts +16 -4
  962. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  963. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  964. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  965. package/src/vite/plugins/expose-action-id.ts +52 -28
  966. package/src/vite/plugins/expose-id-utils.ts +12 -0
  967. package/src/vite/plugins/expose-ids/handler-transform.ts +30 -0
  968. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  969. package/src/vite/plugins/expose-internal-ids.ts +563 -316
  970. package/src/vite/plugins/performance-tracks.ts +96 -0
  971. package/src/vite/plugins/refresh-cmd.ts +88 -26
  972. package/src/vite/plugins/use-cache-transform.ts +56 -43
  973. package/src/vite/plugins/version-injector.ts +37 -11
  974. package/src/vite/rango.ts +63 -11
  975. package/src/vite/router-discovery.ts +732 -86
  976. package/src/vite/utils/banner.ts +1 -1
  977. package/src/vite/utils/package-resolution.ts +41 -1
  978. package/src/vite/utils/prerender-utils.ts +38 -5
  979. package/src/vite/utils/shared-utils.ts +3 -2
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Create initial pipeline state
3
+ */
4
+ export function createPipelineState() {
5
+ return {
6
+ cacheHit: false,
7
+ segments: [],
8
+ matchedIds: [],
9
+ interceptSegments: [],
10
+ slots: {},
11
+ };
12
+ }
13
+ // Note: createMatchContext() will be implemented in Step J10 when we wire everything together.
14
+ // It requires access to RouterContext (findMatch, loadManifest, etc.) which are closure
15
+ // functions from createRouter(). The implementation will live in router.ts initially
16
+ // and call getRouterContext() to access these dependencies.
17
+ //# sourceMappingURL=match-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-context.js","sourceRoot":"","sources":["../../src/router/match-context.ts"],"names":[],"mappings":"AAsOA;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE,EAAE;QACrB,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAmBD,+FAA+F;AAC/F,wFAAwF;AACxF,qFAAqF;AACrF,4DAA4D"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Background Revalidation Middleware
3
+ *
4
+ * Implements SWR (stale-while-revalidate) pattern.
5
+ * Triggers background refresh when cached data is stale.
6
+ *
7
+ * FLOW DIAGRAM
8
+ * ============
9
+ *
10
+ * source (from cache-store)
11
+ * |
12
+ * v
13
+ * +---------------------------+
14
+ * | yield* source | Pure pass-through
15
+ * | (no modifications) |
16
+ * +---------------------------+
17
+ * |
18
+ * v
19
+ * +---------------------+
20
+ * | Should revalidate? |
21
+ * | - shouldRevalidate |──no───> return
22
+ * | - cacheHit |
23
+ * | - cacheScope |
24
+ * +---------------------+
25
+ * | yes
26
+ * v
27
+ * +---------------------------+
28
+ * | requestCtx.waitUntil() | Non-blocking background task
29
+ * +---------------------------+
30
+ * |
31
+ * v (async, doesn't block response)
32
+ * +---------------------------+
33
+ * | Create fresh handleStore | Isolate from response stream
34
+ * +---------------------------+
35
+ * |
36
+ * v
37
+ * +---------------------+
38
+ * | isFullMatch? |
39
+ * +---------------------+
40
+ * |
41
+ * +-----+-----+
42
+ * | |
43
+ * yes no
44
+ * | |
45
+ * v v
46
+ * resolveAll resolveWithRevalidation
47
+ * Segments + resolveIntercepts
48
+ * | |
49
+ * +-----------+
50
+ * |
51
+ * v
52
+ * +---------------------------+
53
+ * | cacheScope.cacheRoute() | Update cache with fresh data
54
+ * +---------------------------+
55
+ *
56
+ *
57
+ * SWR PATTERN
58
+ * ===========
59
+ *
60
+ * Stale-While-Revalidate provides fast responses with eventual consistency:
61
+ *
62
+ * Timeline:
63
+ * ---------
64
+ * T0: Request arrives
65
+ * T1: Cache lookup finds stale entry
66
+ * T2: Return stale data immediately (fast!)
67
+ * T3: Response sent to client
68
+ * T4: waitUntil() triggers background revalidation
69
+ * T5: Fresh data resolved
70
+ * T6: Cache updated with fresh data
71
+ * T7: Next request gets fresh data from cache
72
+ *
73
+ * Benefits:
74
+ * - Fast initial response (cached data)
75
+ * - Eventually consistent (background refresh)
76
+ * - No blocking on revalidation
77
+ *
78
+ *
79
+ * WHEN IS CACHE STALE?
80
+ * ====================
81
+ *
82
+ * The cache-lookup middleware sets state.shouldRevalidate based on:
83
+ * - TTL (time-to-live) expiration
84
+ * - Cache entry metadata
85
+ * - Configured staleness rules
86
+ *
87
+ * This middleware only acts on the flag, it doesn't determine staleness.
88
+ *
89
+ *
90
+ * ISOLATION FROM RESPONSE
91
+ * =======================
92
+ *
93
+ * The background revalidation creates a fresh handleStore:
94
+ *
95
+ * requestCtx._handleStore = createHandleStore();
96
+ *
97
+ * This prevents background handle.push() calls from:
98
+ * - Polluting the current response stream
99
+ * - Causing duplicate data in the client
100
+ * - Creating race conditions
101
+ *
102
+ *
103
+ * FULL VS PARTIAL REVALIDATION
104
+ * ============================
105
+ *
106
+ * Full Match (document request):
107
+ * - Simple resolveAllSegments()
108
+ * - No need to compare with previous state
109
+ *
110
+ * Partial Match (navigation):
111
+ * - resolveAllSegmentsWithRevalidation()
112
+ * - Also resolves intercept segments if applicable
113
+ * - More complex but handles all scenarios
114
+ */
115
+ import type { ResolvedSegment } from "../../types.js";
116
+ import type { MatchContext, MatchPipelineState } from "../match-context.js";
117
+ import type { GeneratorMiddleware } from "./cache-lookup.js";
118
+ /**
119
+ * Creates background revalidation middleware
120
+ *
121
+ * If cache was stale (state.shouldRevalidate === true):
122
+ * - Triggers background resolution via waitUntil
123
+ * - Observes segments but doesn't modify them
124
+ * - Updates cache with fresh segments after revalidation completes
125
+ */
126
+ export declare function withBackgroundRevalidation<TEnv>(ctx: MatchContext<TEnv>, state: MatchPipelineState): GeneratorMiddleware<ResolvedSegment>;
127
+ //# sourceMappingURL=background-revalidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-revalidation.d.ts","sourceRoot":"","sources":["../../../src/router/match-middleware/background-revalidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiHG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAC7C,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,EACvB,KAAK,EAAE,kBAAkB,GACxB,mBAAmB,CAAC,eAAe,CAAC,CA+GtC"}
@@ -0,0 +1,75 @@
1
+ import { getRouterContext } from "../router-context.js";
2
+ import { debugLog, debugWarn } from "../logging.js";
3
+ /**
4
+ * Creates background revalidation middleware
5
+ *
6
+ * If cache was stale (state.shouldRevalidate === true):
7
+ * - Triggers background resolution via waitUntil
8
+ * - Observes segments but doesn't modify them
9
+ * - Updates cache with fresh segments after revalidation completes
10
+ */
11
+ export function withBackgroundRevalidation(ctx, state) {
12
+ return async function* (source) {
13
+ // Pass through all segments unchanged
14
+ for await (const segment of source) {
15
+ yield segment;
16
+ }
17
+ // Only trigger background revalidation if:
18
+ // 1. Cache was hit and stale
19
+ // 2. Cache scope exists
20
+ if (!state.shouldRevalidate || !state.cacheHit || !ctx.cacheScope) {
21
+ return;
22
+ }
23
+ const { getRequestContext, createHandleStore, resolveAllSegmentsWithRevalidation, resolveAllSegments, resolveInterceptEntry, } = getRouterContext();
24
+ const requestCtx = getRequestContext();
25
+ const cacheScope = ctx.cacheScope;
26
+ requestCtx?.waitUntil(async () => {
27
+ debugLog("backgroundRevalidation", "revalidating stale route", {
28
+ pathname: ctx.pathname,
29
+ fullMatch: ctx.isFullMatch,
30
+ });
31
+ try {
32
+ // Create a fresh handleStore for background revalidation
33
+ // to avoid polluting the current response's handle stream
34
+ if (requestCtx) {
35
+ requestCtx._handleStore = createHandleStore();
36
+ }
37
+ let freshSegments;
38
+ if (ctx.isFullMatch) {
39
+ // Full match (document request) - simple resolution
40
+ freshSegments = await resolveAllSegments(ctx.entries, ctx.routeKey, ctx.matched.params, ctx.handlerContext, ctx.loaderPromises);
41
+ }
42
+ else {
43
+ // Partial match (navigation) - resolution with revalidation
44
+ const freshResult = await resolveAllSegmentsWithRevalidation(ctx.entries, ctx.routeKey, ctx.matched.params, ctx.handlerContext, ctx.clientSegmentSet, ctx.prevParams, ctx.request, ctx.prevUrl, ctx.url, ctx.loaderPromises, ctx.actionContext, ctx.interceptResult, ctx.localRouteName, ctx.pathname);
45
+ freshSegments = freshResult.segments;
46
+ // For intercept revalidation, also resolve fresh intercept segments
47
+ if (ctx.interceptResult) {
48
+ const freshInterceptSegments = await resolveInterceptEntry(ctx.interceptResult.intercept, ctx.interceptResult.entry, ctx.matched.params, ctx.handlerContext, true, {
49
+ clientSegmentIds: ctx.clientSegmentSet,
50
+ prevParams: ctx.prevParams,
51
+ request: ctx.request,
52
+ prevUrl: ctx.prevUrl,
53
+ nextUrl: ctx.url,
54
+ routeKey: ctx.routeKey,
55
+ actionContext: ctx.actionContext,
56
+ stale: false,
57
+ });
58
+ freshSegments = [...freshSegments, ...freshInterceptSegments];
59
+ }
60
+ }
61
+ await cacheScope.cacheRoute(ctx.pathname, ctx.matched.params, freshSegments, ctx.isIntercept);
62
+ debugLog("backgroundRevalidation", "revalidation complete", {
63
+ pathname: ctx.pathname,
64
+ });
65
+ }
66
+ catch (error) {
67
+ debugWarn("backgroundRevalidation", "revalidation failed", {
68
+ pathname: ctx.pathname,
69
+ error: String(error),
70
+ });
71
+ }
72
+ });
73
+ };
74
+ }
75
+ //# sourceMappingURL=background-revalidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-revalidation.js","sourceRoot":"","sources":["../../../src/router/match-middleware/background-revalidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Cache Lookup Middleware
3
+ *
4
+ * First middleware in the pipeline. Checks cache before segment resolution.
5
+ *
6
+ * FLOW DIAGRAM
7
+ * ============
8
+ *
9
+ * source (empty)
10
+ * |
11
+ * v
12
+ * +---------------------+
13
+ * | Is action request? |──yes──> yield* source (pass through)
14
+ * +---------------------+
15
+ * | no
16
+ * v
17
+ * +---------------------+
18
+ * | Cache enabled? |──no───> yield* source (pass through)
19
+ * +---------------------+
20
+ * | yes
21
+ * v
22
+ * +---------------------+
23
+ * | Lookup cache |
24
+ * | (pathname, params) |
25
+ * +---------------------+
26
+ * |
27
+ * +-----+-----+
28
+ * | |
29
+ * miss hit
30
+ * | |
31
+ * v v
32
+ * yield* Set state.cacheHit = true
33
+ * source Set state.shouldRevalidate
34
+ * | |
35
+ * | v
36
+ * | +---------------------------+
37
+ * | | For each cached segment: |
38
+ * | | - Apply revalidation |
39
+ * | | - Set component = null |
40
+ * | | if client has it |
41
+ * | +---------------------------+
42
+ * | |
43
+ * | v
44
+ * | +---------------------------+
45
+ * | | Resolve fresh loaders | <-- Loaders are NEVER cached
46
+ * | | (always fresh data) |
47
+ * | +---------------------------+
48
+ * | |
49
+ * | v
50
+ * | yield cached segments
51
+ * | yield fresh loader segments
52
+ * | |
53
+ * +-----------+
54
+ * |
55
+ * v
56
+ * next middleware
57
+ *
58
+ *
59
+ * CACHE BEHAVIOR
60
+ * ==============
61
+ *
62
+ * Cache HIT:
63
+ * - state.cacheHit = true signals downstream middleware to skip
64
+ * - Cached segments have their components nullified if client already has them
65
+ * - Loaders are always re-resolved for fresh data
66
+ * - state.shouldRevalidate triggers background SWR if cache was stale
67
+ *
68
+ * Cache MISS:
69
+ * - Passes through to segment-resolution middleware
70
+ * - No segments yielded from this middleware
71
+ *
72
+ * Loaders:
73
+ * - NEVER cached by design
74
+ * - Always resolved fresh on every request
75
+ * - Ensures data freshness even with cached UI components
76
+ *
77
+ *
78
+ * REVALIDATION RULES
79
+ * ==================
80
+ *
81
+ * Each cached segment is evaluated against its revalidation rules:
82
+ *
83
+ * 1. No rules defined -> use default (skip if client has segment)
84
+ * 2. Rules return false -> skip re-render (nullify component)
85
+ * 3. Rules return true -> re-render (keep component)
86
+ *
87
+ * Revalidation context includes:
88
+ * - Previous/next URL and params
89
+ * - Request object
90
+ * - Action context (if POST)
91
+ */
92
+ import type { ResolvedSegment } from "../../types.js";
93
+ import type { MatchContext, MatchPipelineState } from "../match-context.js";
94
+ /**
95
+ * Async generator middleware type
96
+ */
97
+ export type GeneratorMiddleware<T> = (source: AsyncGenerator<T>) => AsyncGenerator<T>;
98
+ /**
99
+ * Creates cache lookup middleware
100
+ *
101
+ * Checks cache for segments. If cache hit:
102
+ * - Applies revalidation to determine which segments need re-rendering
103
+ * - Resolves loaders fresh (loaders are NOT cached by design)
104
+ * - Sets state.cacheHit = true
105
+ * - Sets state.shouldRevalidate if SWR needed
106
+ * - Yields cached segments + fresh loader segments
107
+ *
108
+ * If cache miss:
109
+ * - Passes through to next middleware
110
+ */
111
+ export declare function withCacheLookup<TEnv>(ctx: MatchContext<TEnv>, state: MatchPipelineState): GeneratorMiddleware<ResolvedSegment>;
112
+ //# sourceMappingURL=cache-lookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-lookup.d.ts","sourceRoot":"","sources":["../../../src/router/match-middleware/cache-lookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA6H5E;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CACnC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,KACtB,cAAc,CAAC,CAAC,CAAC,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAClC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,EACvB,KAAK,EAAE,kBAAkB,GACxB,mBAAmB,CAAC,eAAe,CAAC,CAqMtC"}
@@ -0,0 +1,257 @@
1
+ import { getRouterContext } from "../router-context.js";
2
+ // Lazily initialized prerender store singleton and dynamically imported deps.
3
+ // Dynamic imports prevent pulling in @vitejs/plugin-rsc/rsc virtual module at
4
+ // top-level, which breaks vitest (only URLs with file:, data:, node: schemes).
5
+ let prerenderStoreInstance;
6
+ let _deserializeSegments;
7
+ let _hashParams;
8
+ let _getRequestContext;
9
+ async function ensurePrerenderDeps() {
10
+ if (!_deserializeSegments) {
11
+ const [cache, paramHash, reqCtx, store] = await Promise.all([
12
+ import("../../cache/cache-scope.js"),
13
+ import("../../prerender/param-hash.js"),
14
+ import("../../server/request-context.js"),
15
+ import("../../prerender/store.js"),
16
+ ]);
17
+ _deserializeSegments = cache.deserializeSegments;
18
+ _hashParams = paramHash.hashParams;
19
+ _getRequestContext = reqCtx.getRequestContext;
20
+ if (prerenderStoreInstance === undefined) {
21
+ prerenderStoreInstance = store.createPrerenderStore();
22
+ }
23
+ }
24
+ }
25
+ /**
26
+ * Shared yield logic for prerender and static handler store entries.
27
+ * Deserializes segments, replays handle data, yields segments with partial
28
+ * navigation nullification, and resolves fresh loaders.
29
+ */
30
+ async function* yieldFromStore(entry, ctx, state, pipelineStart) {
31
+ const { resolveLoadersOnlyWithRevalidation, resolveLoadersOnly, } = getRouterContext();
32
+ if (!_deserializeSegments || !_hashParams || !_getRequestContext) {
33
+ throw new Error("yieldFromStore called before ensurePrerenderDeps");
34
+ }
35
+ const segments = await _deserializeSegments(entry.segments);
36
+ // Replay handle data (same as runtime cache hit path)
37
+ const handleStore = _getRequestContext()?._handleStore;
38
+ if (handleStore) {
39
+ for (const [segId, segHandles] of Object.entries(entry.handles)) {
40
+ if (Object.keys(segHandles).length > 0) {
41
+ handleStore.replaySegmentData(segId, segHandles);
42
+ }
43
+ }
44
+ }
45
+ state.cacheHit = true;
46
+ state.cachedSegments = segments;
47
+ state.cachedMatchedIds = segments.map((s) => s.id);
48
+ // For partial navigation, nullify components the client already has
49
+ // so parent layouts stay live (client keeps its existing versions).
50
+ // When params changed (e.g., different guide slug), the segments have
51
+ // different content, so we must NOT nullify.
52
+ const paramsChanged = !ctx.isFullMatch &&
53
+ JSON.stringify(ctx.matched.params) !== JSON.stringify(ctx.prevParams);
54
+ for (const segment of segments) {
55
+ if (!ctx.isFullMatch && !paramsChanged && ctx.clientSegmentSet.has(segment.id)) {
56
+ segment.component = null;
57
+ segment.loading = undefined;
58
+ }
59
+ yield segment;
60
+ }
61
+ // Resolve loaders fresh (loaders are never pre-rendered/cached)
62
+ if (ctx.isFullMatch) {
63
+ if (resolveLoadersOnly) {
64
+ const loaderSegments = await ctx.Store.run(() => resolveLoadersOnly(ctx.entries, ctx.handlerContext));
65
+ state.matchedIds = state.cachedMatchedIds;
66
+ for (const segment of loaderSegments) {
67
+ yield segment;
68
+ }
69
+ }
70
+ else {
71
+ state.matchedIds = state.cachedMatchedIds;
72
+ }
73
+ }
74
+ else {
75
+ if (resolveLoadersOnlyWithRevalidation) {
76
+ const loaderResult = await ctx.Store.run(() => resolveLoadersOnlyWithRevalidation(ctx.entries, ctx.handlerContext, ctx.clientSegmentSet, ctx.prevParams, ctx.request, ctx.prevUrl, ctx.url, ctx.routeKey, ctx.actionContext));
77
+ state.matchedIds = [
78
+ ...state.cachedMatchedIds,
79
+ ...loaderResult.matchedIds,
80
+ ];
81
+ for (const segment of loaderResult.segments) {
82
+ yield segment;
83
+ }
84
+ }
85
+ else {
86
+ state.matchedIds = state.cachedMatchedIds;
87
+ }
88
+ }
89
+ const ms = ctx.metricsStore;
90
+ if (ms) {
91
+ ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
92
+ }
93
+ }
94
+ /**
95
+ * Creates cache lookup middleware
96
+ *
97
+ * Checks cache for segments. If cache hit:
98
+ * - Applies revalidation to determine which segments need re-rendering
99
+ * - Resolves loaders fresh (loaders are NOT cached by design)
100
+ * - Sets state.cacheHit = true
101
+ * - Sets state.shouldRevalidate if SWR needed
102
+ * - Yields cached segments + fresh loader segments
103
+ *
104
+ * If cache miss:
105
+ * - Passes through to next middleware
106
+ */
107
+ export function withCacheLookup(ctx, state) {
108
+ return async function* (source) {
109
+ const pipelineStart = performance.now();
110
+ const ms = ctx.metricsStore;
111
+ const { evaluateRevalidation, buildEntryRevalidateMap, resolveLoadersOnlyWithRevalidation, resolveLoadersOnly, } = getRouterContext();
112
+ // Prerender lookup: check build-time cached data before runtime cache.
113
+ // Prerender data is available regardless of runtime cache configuration.
114
+ if (!ctx.isAction && ctx.matched.pr) {
115
+ await ensurePrerenderDeps();
116
+ if (prerenderStoreInstance) {
117
+ const paramHash = _hashParams(ctx.matched.params);
118
+ const entry = await prerenderStoreInstance.get(ctx.matched.routeKey, paramHash, { pathname: ctx.pathname });
119
+ if (entry) {
120
+ yield* yieldFromStore(entry, ctx, state, pipelineStart);
121
+ return;
122
+ }
123
+ }
124
+ }
125
+ // Dev-mode static handler interception for non-Node.js runtimes.
126
+ // __PRERENDER_DEV_URL is set by the Vite plugin when the RSC environment
127
+ // lacks a Node.js module runner (e.g. workerd, Deno workers). In those
128
+ // runtimes, handlers that depend on Node APIs like node:fs can't run
129
+ // in-process. We redirect them to the /__rsc_prerender endpoint which
130
+ // resolves segments in a Node.js temp server, same as prerender routes.
131
+ // In Node.js dev mode this variable is undefined -- handlers run
132
+ // in-process where Node APIs work, so no interception is needed.
133
+ if (!ctx.isAction && !ctx.matched.pr && globalThis.__PRERENDER_DEV_URL) {
134
+ const hasStatic = ctx.entries.some((e) => (e.type === "layout" || e.type === "route" || e.type === "parallel") && e.isStaticPrerender);
135
+ if (hasStatic) {
136
+ await ensurePrerenderDeps();
137
+ if (prerenderStoreInstance) {
138
+ const paramHash = _hashParams(ctx.matched.params);
139
+ const entry = await prerenderStoreInstance.get(ctx.matched.routeKey, paramHash, { pathname: ctx.pathname });
140
+ if (entry) {
141
+ yield* yieldFromStore(entry, ctx, state, pipelineStart);
142
+ return;
143
+ }
144
+ }
145
+ }
146
+ }
147
+ // Skip cache during actions
148
+ if (ctx.isAction || !ctx.cacheScope?.enabled) {
149
+ // Cache miss - pass through to segment resolution
150
+ yield* source;
151
+ if (ms) {
152
+ ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
153
+ }
154
+ return;
155
+ }
156
+ // Lookup cache
157
+ const cacheResult = await ctx.cacheScope.lookupRoute(ctx.pathname, ctx.matched.params, ctx.isIntercept);
158
+ if (!cacheResult) {
159
+ // Cache miss - pass through to segment resolution
160
+ yield* source;
161
+ if (ms) {
162
+ ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
163
+ }
164
+ return;
165
+ }
166
+ // Cache HIT
167
+ state.cacheHit = true;
168
+ state.shouldRevalidate = cacheResult.shouldRevalidate;
169
+ state.cachedSegments = cacheResult.segments;
170
+ state.cachedMatchedIds = cacheResult.segments.map((s) => s.id);
171
+ // Apply revalidation to cached segments
172
+ const entryRevalidateMap = buildEntryRevalidateMap?.(ctx.entries);
173
+ for (const segment of cacheResult.segments) {
174
+ // Skip segments client doesn't have - they need their component
175
+ if (!ctx.clientSegmentSet.has(segment.id)) {
176
+ yield segment;
177
+ continue;
178
+ }
179
+ // Skip intercept segments - they're handled separately
180
+ if (segment.namespace?.startsWith("intercept:")) {
181
+ yield segment;
182
+ continue;
183
+ }
184
+ // Look up revalidation rules for this segment
185
+ const entryInfo = entryRevalidateMap?.get(segment.id);
186
+ if (!entryInfo || entryInfo.revalidate.length === 0) {
187
+ // No revalidation rules, use default behavior (skip if client has)
188
+ segment.component = null;
189
+ segment.loading = undefined;
190
+ yield segment;
191
+ continue;
192
+ }
193
+ // Evaluate revalidation rules
194
+ const shouldRevalidate = await evaluateRevalidation({
195
+ segment,
196
+ prevParams: ctx.prevParams,
197
+ getPrevSegment: null,
198
+ request: ctx.request,
199
+ prevUrl: ctx.prevUrl,
200
+ nextUrl: ctx.url,
201
+ revalidations: entryInfo.revalidate.map((fn, i) => ({
202
+ name: `revalidate${i}`,
203
+ fn,
204
+ })),
205
+ routeKey: ctx.routeKey,
206
+ context: ctx.handlerContext,
207
+ actionContext: ctx.actionContext,
208
+ });
209
+ if (!shouldRevalidate) {
210
+ // Client has it, no revalidation needed
211
+ segment.component = null;
212
+ segment.loading = undefined;
213
+ }
214
+ yield segment;
215
+ }
216
+ // Resolve loaders fresh (loaders are NOT cached by default)
217
+ // This ensures fresh data even on cache hit
218
+ const Store = ctx.Store;
219
+ if (ctx.isFullMatch) {
220
+ // Full match (document request) - simple loader resolution without revalidation
221
+ if (resolveLoadersOnly) {
222
+ const loaderSegments = await Store.run(() => resolveLoadersOnly(ctx.entries, ctx.handlerContext));
223
+ // Update state - full match doesn't track matchedIds separately
224
+ state.matchedIds = state.cachedMatchedIds;
225
+ // Yield fresh loader segments
226
+ for (const segment of loaderSegments) {
227
+ yield segment;
228
+ }
229
+ }
230
+ else {
231
+ state.matchedIds = state.cachedMatchedIds;
232
+ }
233
+ }
234
+ else {
235
+ // Partial match (navigation) - loader resolution with revalidation
236
+ if (resolveLoadersOnlyWithRevalidation) {
237
+ const loaderResult = await Store.run(() => resolveLoadersOnlyWithRevalidation(ctx.entries, ctx.handlerContext, ctx.clientSegmentSet, ctx.prevParams, ctx.request, ctx.prevUrl, ctx.url, ctx.routeKey, ctx.actionContext));
238
+ // Update state with fresh loader matchedIds
239
+ state.matchedIds = [
240
+ ...state.cachedMatchedIds,
241
+ ...loaderResult.matchedIds,
242
+ ];
243
+ // Yield fresh loader segments
244
+ for (const segment of loaderResult.segments) {
245
+ yield segment;
246
+ }
247
+ }
248
+ else {
249
+ state.matchedIds = state.cachedMatchedIds;
250
+ }
251
+ }
252
+ if (ms) {
253
+ ms.metrics.push({ label: "pipeline:cache-lookup", duration: performance.now() - pipelineStart, startTime: pipelineStart - ms.requestStart });
254
+ }
255
+ };
256
+ }
257
+ //# sourceMappingURL=cache-lookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-lookup.js","sourceRoot":"","sources":["../../../src/router/match-middleware/cache-lookup.ts"],"names":[],"mappings":"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"}