@rangojs/router 0.0.0-experimental.41 → 0.0.0-experimental.43

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 (837) hide show
  1. package/dist/bin/rango.js +3 -2
  2. package/dist/vite/index.js +131 -196
  3. package/package.json +1 -1
  4. package/skills/caching/SKILL.md +37 -4
  5. package/src/browser/navigation-bridge.ts +1 -3
  6. package/src/browser/navigation-client.ts +70 -24
  7. package/src/browser/navigation-transaction.ts +11 -9
  8. package/src/browser/partial-update.ts +39 -9
  9. package/src/browser/prefetch/cache.ts +54 -2
  10. package/src/browser/prefetch/fetch.ts +22 -12
  11. package/src/browser/prefetch/queue.ts +53 -13
  12. package/src/browser/react/Link.tsx +9 -1
  13. package/src/browser/react/NavigationProvider.tsx +27 -0
  14. package/src/browser/scroll-restoration.ts +20 -7
  15. package/src/browser/types.ts +9 -0
  16. package/src/build/route-types/router-processing.ts +12 -2
  17. package/src/cache/cache-scope.ts +2 -2
  18. package/src/cache/cf/cf-cache-store.ts +453 -11
  19. package/src/cache/cf/index.ts +5 -1
  20. package/src/cache/index.ts +1 -0
  21. package/src/route-definition/redirect.ts +2 -2
  22. package/src/route-map-builder.ts +7 -1
  23. package/src/router/find-match.ts +4 -2
  24. package/src/router/lazy-includes.ts +2 -0
  25. package/src/router/manifest.ts +3 -1
  26. package/src/router/middleware.ts +2 -1
  27. package/src/router.ts +4 -0
  28. package/src/server/request-context.ts +10 -4
  29. package/src/types/route-entry.ts +7 -0
  30. package/src/vite/discovery/state.ts +0 -2
  31. package/src/vite/plugin-types.ts +0 -83
  32. package/src/vite/plugins/expose-action-id.ts +1 -3
  33. package/src/vite/rango.ts +144 -209
  34. package/src/vite/router-discovery.ts +0 -8
  35. package/dist/__internal.d.ts +0 -83
  36. package/dist/__internal.d.ts.map +0 -1
  37. package/dist/__internal.js +0 -19
  38. package/dist/__internal.js.map +0 -1
  39. package/dist/__mocks__/version.d.ts +0 -7
  40. package/dist/__mocks__/version.d.ts.map +0 -1
  41. package/dist/__mocks__/version.js +0 -7
  42. package/dist/__mocks__/version.js.map +0 -1
  43. package/dist/__tests__/client-href.test.d.ts +0 -2
  44. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  45. package/dist/__tests__/client-href.test.js +0 -74
  46. package/dist/__tests__/client-href.test.js.map +0 -1
  47. package/dist/__tests__/component-utils.test.d.ts +0 -2
  48. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  49. package/dist/__tests__/component-utils.test.js +0 -51
  50. package/dist/__tests__/component-utils.test.js.map +0 -1
  51. package/dist/__tests__/event-controller.test.d.ts +0 -2
  52. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  53. package/dist/__tests__/event-controller.test.js +0 -538
  54. package/dist/__tests__/event-controller.test.js.map +0 -1
  55. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  56. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  57. package/dist/__tests__/helpers/route-tree.js +0 -374
  58. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  59. package/dist/__tests__/match-result.test.d.ts +0 -2
  60. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  61. package/dist/__tests__/match-result.test.js +0 -154
  62. package/dist/__tests__/match-result.test.js.map +0 -1
  63. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  64. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  65. package/dist/__tests__/navigation-store.test.js +0 -440
  66. package/dist/__tests__/navigation-store.test.js.map +0 -1
  67. package/dist/__tests__/partial-update.test.d.ts +0 -2
  68. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  69. package/dist/__tests__/partial-update.test.js +0 -1009
  70. package/dist/__tests__/partial-update.test.js.map +0 -1
  71. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  72. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  73. package/dist/__tests__/reverse-types.test.js +0 -656
  74. package/dist/__tests__/reverse-types.test.js.map +0 -1
  75. package/dist/__tests__/route-definition.test.d.ts +0 -2
  76. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  77. package/dist/__tests__/route-definition.test.js +0 -55
  78. package/dist/__tests__/route-definition.test.js.map +0 -1
  79. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  80. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  81. package/dist/__tests__/router-helpers.test.js +0 -377
  82. package/dist/__tests__/router-helpers.test.js.map +0 -1
  83. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  84. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  85. package/dist/__tests__/router-integration-2.test.js +0 -426
  86. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  87. package/dist/__tests__/router-integration.test.d.ts +0 -2
  88. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  89. package/dist/__tests__/router-integration.test.js +0 -1051
  90. package/dist/__tests__/router-integration.test.js.map +0 -1
  91. package/dist/__tests__/search-params.test.d.ts +0 -5
  92. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  93. package/dist/__tests__/search-params.test.js +0 -306
  94. package/dist/__tests__/search-params.test.js.map +0 -1
  95. package/dist/__tests__/segment-system.test.d.ts +0 -2
  96. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  97. package/dist/__tests__/segment-system.test.js +0 -627
  98. package/dist/__tests__/segment-system.test.js.map +0 -1
  99. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  100. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  101. package/dist/__tests__/static-handler-types.test.js +0 -63
  102. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  103. package/dist/__tests__/urls.test.d.ts +0 -2
  104. package/dist/__tests__/urls.test.d.ts.map +0 -1
  105. package/dist/__tests__/urls.test.js +0 -421
  106. package/dist/__tests__/urls.test.js.map +0 -1
  107. package/dist/__tests__/use-mount.test.d.ts +0 -2
  108. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  109. package/dist/__tests__/use-mount.test.js +0 -35
  110. package/dist/__tests__/use-mount.test.js.map +0 -1
  111. package/dist/bin/rango.d.ts +0 -2
  112. package/dist/bin/rango.d.ts.map +0 -1
  113. package/dist/bin/rango.js.map +0 -1
  114. package/dist/browser/event-controller.d.ts +0 -191
  115. package/dist/browser/event-controller.d.ts.map +0 -1
  116. package/dist/browser/event-controller.js +0 -559
  117. package/dist/browser/event-controller.js.map +0 -1
  118. package/dist/browser/index.d.ts +0 -2
  119. package/dist/browser/index.d.ts.map +0 -1
  120. package/dist/browser/index.js +0 -14
  121. package/dist/browser/index.js.map +0 -1
  122. package/dist/browser/link-interceptor.d.ts +0 -38
  123. package/dist/browser/link-interceptor.d.ts.map +0 -1
  124. package/dist/browser/link-interceptor.js +0 -99
  125. package/dist/browser/link-interceptor.js.map +0 -1
  126. package/dist/browser/logging.d.ts +0 -10
  127. package/dist/browser/logging.d.ts.map +0 -1
  128. package/dist/browser/logging.js +0 -29
  129. package/dist/browser/logging.js.map +0 -1
  130. package/dist/browser/lru-cache.d.ts +0 -17
  131. package/dist/browser/lru-cache.d.ts.map +0 -1
  132. package/dist/browser/lru-cache.js +0 -50
  133. package/dist/browser/lru-cache.js.map +0 -1
  134. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  135. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  136. package/dist/browser/merge-segment-loaders.js +0 -102
  137. package/dist/browser/merge-segment-loaders.js.map +0 -1
  138. package/dist/browser/navigation-bridge.d.ts +0 -102
  139. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  140. package/dist/browser/navigation-bridge.js +0 -708
  141. package/dist/browser/navigation-bridge.js.map +0 -1
  142. package/dist/browser/navigation-client.d.ts +0 -25
  143. package/dist/browser/navigation-client.d.ts.map +0 -1
  144. package/dist/browser/navigation-client.js +0 -157
  145. package/dist/browser/navigation-client.js.map +0 -1
  146. package/dist/browser/navigation-store.d.ts +0 -101
  147. package/dist/browser/navigation-store.d.ts.map +0 -1
  148. package/dist/browser/navigation-store.js +0 -625
  149. package/dist/browser/navigation-store.js.map +0 -1
  150. package/dist/browser/partial-update.d.ts +0 -75
  151. package/dist/browser/partial-update.d.ts.map +0 -1
  152. package/dist/browser/partial-update.js +0 -426
  153. package/dist/browser/partial-update.js.map +0 -1
  154. package/dist/browser/react/Link.d.ts +0 -86
  155. package/dist/browser/react/Link.d.ts.map +0 -1
  156. package/dist/browser/react/Link.js +0 -128
  157. package/dist/browser/react/Link.js.map +0 -1
  158. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  159. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  160. package/dist/browser/react/NavigationProvider.js +0 -216
  161. package/dist/browser/react/NavigationProvider.js.map +0 -1
  162. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  163. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  164. package/dist/browser/react/ScrollRestoration.js +0 -57
  165. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  166. package/dist/browser/react/context.d.ts +0 -46
  167. package/dist/browser/react/context.d.ts.map +0 -1
  168. package/dist/browser/react/context.js +0 -10
  169. package/dist/browser/react/context.js.map +0 -1
  170. package/dist/browser/react/index.d.ts +0 -11
  171. package/dist/browser/react/index.d.ts.map +0 -1
  172. package/dist/browser/react/index.js +0 -22
  173. package/dist/browser/react/index.js.map +0 -1
  174. package/dist/browser/react/location-state-shared.d.ts +0 -63
  175. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  176. package/dist/browser/react/location-state-shared.js +0 -81
  177. package/dist/browser/react/location-state-shared.js.map +0 -1
  178. package/dist/browser/react/location-state.d.ts +0 -23
  179. package/dist/browser/react/location-state.d.ts.map +0 -1
  180. package/dist/browser/react/location-state.js +0 -29
  181. package/dist/browser/react/location-state.js.map +0 -1
  182. package/dist/browser/react/mount-context.d.ts +0 -24
  183. package/dist/browser/react/mount-context.d.ts.map +0 -1
  184. package/dist/browser/react/mount-context.js +0 -24
  185. package/dist/browser/react/mount-context.js.map +0 -1
  186. package/dist/browser/react/use-action.d.ts +0 -64
  187. package/dist/browser/react/use-action.d.ts.map +0 -1
  188. package/dist/browser/react/use-action.js +0 -134
  189. package/dist/browser/react/use-action.js.map +0 -1
  190. package/dist/browser/react/use-client-cache.d.ts +0 -41
  191. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  192. package/dist/browser/react/use-client-cache.js +0 -39
  193. package/dist/browser/react/use-client-cache.js.map +0 -1
  194. package/dist/browser/react/use-handle.d.ts +0 -31
  195. package/dist/browser/react/use-handle.d.ts.map +0 -1
  196. package/dist/browser/react/use-handle.js +0 -144
  197. package/dist/browser/react/use-handle.js.map +0 -1
  198. package/dist/browser/react/use-href.d.ts +0 -33
  199. package/dist/browser/react/use-href.d.ts.map +0 -1
  200. package/dist/browser/react/use-href.js +0 -39
  201. package/dist/browser/react/use-href.js.map +0 -1
  202. package/dist/browser/react/use-link-status.d.ts +0 -37
  203. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  204. package/dist/browser/react/use-link-status.js +0 -99
  205. package/dist/browser/react/use-link-status.js.map +0 -1
  206. package/dist/browser/react/use-mount.d.ts +0 -25
  207. package/dist/browser/react/use-mount.d.ts.map +0 -1
  208. package/dist/browser/react/use-mount.js +0 -30
  209. package/dist/browser/react/use-mount.js.map +0 -1
  210. package/dist/browser/react/use-navigation.d.ts +0 -27
  211. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  212. package/dist/browser/react/use-navigation.js +0 -87
  213. package/dist/browser/react/use-navigation.js.map +0 -1
  214. package/dist/browser/react/use-segments.d.ts +0 -38
  215. package/dist/browser/react/use-segments.d.ts.map +0 -1
  216. package/dist/browser/react/use-segments.js +0 -130
  217. package/dist/browser/react/use-segments.js.map +0 -1
  218. package/dist/browser/request-controller.d.ts +0 -26
  219. package/dist/browser/request-controller.d.ts.map +0 -1
  220. package/dist/browser/request-controller.js +0 -147
  221. package/dist/browser/request-controller.js.map +0 -1
  222. package/dist/browser/rsc-router.d.ts +0 -129
  223. package/dist/browser/rsc-router.d.ts.map +0 -1
  224. package/dist/browser/rsc-router.js +0 -195
  225. package/dist/browser/rsc-router.js.map +0 -1
  226. package/dist/browser/scroll-restoration.d.ts +0 -93
  227. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  228. package/dist/browser/scroll-restoration.js +0 -321
  229. package/dist/browser/scroll-restoration.js.map +0 -1
  230. package/dist/browser/segment-structure-assert.d.ts +0 -17
  231. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  232. package/dist/browser/segment-structure-assert.js +0 -59
  233. package/dist/browser/segment-structure-assert.js.map +0 -1
  234. package/dist/browser/server-action-bridge.d.ts +0 -26
  235. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  236. package/dist/browser/server-action-bridge.js +0 -668
  237. package/dist/browser/server-action-bridge.js.map +0 -1
  238. package/dist/browser/shallow.d.ts +0 -12
  239. package/dist/browser/shallow.d.ts.map +0 -1
  240. package/dist/browser/shallow.js +0 -34
  241. package/dist/browser/shallow.js.map +0 -1
  242. package/dist/browser/types.d.ts +0 -369
  243. package/dist/browser/types.d.ts.map +0 -1
  244. package/dist/browser/types.js +0 -2
  245. package/dist/browser/types.js.map +0 -1
  246. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  247. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  248. package/dist/build/__tests__/generate-cli.test.js +0 -237
  249. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  250. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  251. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  252. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  253. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  254. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  255. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  256. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  257. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  258. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  259. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  260. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  261. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  262. package/dist/build/generate-manifest.d.ts +0 -81
  263. package/dist/build/generate-manifest.d.ts.map +0 -1
  264. package/dist/build/generate-manifest.js +0 -276
  265. package/dist/build/generate-manifest.js.map +0 -1
  266. package/dist/build/generate-route-types.d.ts +0 -115
  267. package/dist/build/generate-route-types.d.ts.map +0 -1
  268. package/dist/build/generate-route-types.js +0 -740
  269. package/dist/build/generate-route-types.js.map +0 -1
  270. package/dist/build/index.d.ts +0 -21
  271. package/dist/build/index.d.ts.map +0 -1
  272. package/dist/build/index.js +0 -21
  273. package/dist/build/index.js.map +0 -1
  274. package/dist/build/route-trie.d.ts +0 -71
  275. package/dist/build/route-trie.d.ts.map +0 -1
  276. package/dist/build/route-trie.js +0 -175
  277. package/dist/build/route-trie.js.map +0 -1
  278. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  279. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  280. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  281. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  282. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  283. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  284. package/dist/cache/__tests__/document-cache.test.js +0 -345
  285. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  286. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  287. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  288. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  289. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  290. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  291. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  292. package/dist/cache/__tests__/memory-store.test.js +0 -367
  293. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  294. package/dist/cache/cache-scope.d.ts +0 -102
  295. package/dist/cache/cache-scope.d.ts.map +0 -1
  296. package/dist/cache/cache-scope.js +0 -440
  297. package/dist/cache/cache-scope.js.map +0 -1
  298. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  299. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  300. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  301. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  302. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  303. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  304. package/dist/cache/cf/cf-cache-store.js +0 -242
  305. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  306. package/dist/cache/cf/index.d.ts +0 -14
  307. package/dist/cache/cf/index.d.ts.map +0 -1
  308. package/dist/cache/cf/index.js +0 -17
  309. package/dist/cache/cf/index.js.map +0 -1
  310. package/dist/cache/document-cache.d.ts +0 -64
  311. package/dist/cache/document-cache.d.ts.map +0 -1
  312. package/dist/cache/document-cache.js +0 -228
  313. package/dist/cache/document-cache.js.map +0 -1
  314. package/dist/cache/index.d.ts +0 -19
  315. package/dist/cache/index.d.ts.map +0 -1
  316. package/dist/cache/index.js +0 -21
  317. package/dist/cache/index.js.map +0 -1
  318. package/dist/cache/memory-segment-store.d.ts +0 -110
  319. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  320. package/dist/cache/memory-segment-store.js +0 -117
  321. package/dist/cache/memory-segment-store.js.map +0 -1
  322. package/dist/cache/memory-store.d.ts +0 -41
  323. package/dist/cache/memory-store.d.ts.map +0 -1
  324. package/dist/cache/memory-store.js +0 -191
  325. package/dist/cache/memory-store.js.map +0 -1
  326. package/dist/cache/types.d.ts +0 -317
  327. package/dist/cache/types.d.ts.map +0 -1
  328. package/dist/cache/types.js +0 -12
  329. package/dist/cache/types.js.map +0 -1
  330. package/dist/client.d.ts +0 -248
  331. package/dist/client.d.ts.map +0 -1
  332. package/dist/client.js +0 -367
  333. package/dist/client.js.map +0 -1
  334. package/dist/client.rsc.d.ts +0 -26
  335. package/dist/client.rsc.d.ts.map +0 -1
  336. package/dist/client.rsc.js +0 -46
  337. package/dist/client.rsc.js.map +0 -1
  338. package/dist/component-utils.d.ts +0 -36
  339. package/dist/component-utils.d.ts.map +0 -1
  340. package/dist/component-utils.js +0 -61
  341. package/dist/component-utils.js.map +0 -1
  342. package/dist/components/DefaultDocument.d.ts +0 -13
  343. package/dist/components/DefaultDocument.d.ts.map +0 -1
  344. package/dist/components/DefaultDocument.js +0 -15
  345. package/dist/components/DefaultDocument.js.map +0 -1
  346. package/dist/debug.d.ts +0 -58
  347. package/dist/debug.d.ts.map +0 -1
  348. package/dist/debug.js +0 -157
  349. package/dist/debug.js.map +0 -1
  350. package/dist/default-error-boundary.d.ts +0 -11
  351. package/dist/default-error-boundary.d.ts.map +0 -1
  352. package/dist/default-error-boundary.js +0 -45
  353. package/dist/default-error-boundary.js.map +0 -1
  354. package/dist/deps/browser.d.ts +0 -2
  355. package/dist/deps/browser.d.ts.map +0 -1
  356. package/dist/deps/browser.js +0 -3
  357. package/dist/deps/browser.js.map +0 -1
  358. package/dist/deps/html-stream-client.d.ts +0 -2
  359. package/dist/deps/html-stream-client.d.ts.map +0 -1
  360. package/dist/deps/html-stream-client.js +0 -3
  361. package/dist/deps/html-stream-client.js.map +0 -1
  362. package/dist/deps/html-stream-server.d.ts +0 -2
  363. package/dist/deps/html-stream-server.d.ts.map +0 -1
  364. package/dist/deps/html-stream-server.js +0 -3
  365. package/dist/deps/html-stream-server.js.map +0 -1
  366. package/dist/deps/rsc.d.ts +0 -2
  367. package/dist/deps/rsc.d.ts.map +0 -1
  368. package/dist/deps/rsc.js +0 -4
  369. package/dist/deps/rsc.js.map +0 -1
  370. package/dist/deps/ssr.d.ts +0 -2
  371. package/dist/deps/ssr.d.ts.map +0 -1
  372. package/dist/deps/ssr.js +0 -3
  373. package/dist/deps/ssr.js.map +0 -1
  374. package/dist/errors.d.ts +0 -174
  375. package/dist/errors.d.ts.map +0 -1
  376. package/dist/errors.js +0 -241
  377. package/dist/errors.js.map +0 -1
  378. package/dist/handle.d.ts +0 -78
  379. package/dist/handle.d.ts.map +0 -1
  380. package/dist/handle.js +0 -82
  381. package/dist/handle.js.map +0 -1
  382. package/dist/handles/MetaTags.d.ts +0 -14
  383. package/dist/handles/MetaTags.d.ts.map +0 -1
  384. package/dist/handles/MetaTags.js +0 -136
  385. package/dist/handles/MetaTags.js.map +0 -1
  386. package/dist/handles/index.d.ts +0 -6
  387. package/dist/handles/index.d.ts.map +0 -1
  388. package/dist/handles/index.js +0 -6
  389. package/dist/handles/index.js.map +0 -1
  390. package/dist/handles/meta.d.ts +0 -39
  391. package/dist/handles/meta.d.ts.map +0 -1
  392. package/dist/handles/meta.js +0 -202
  393. package/dist/handles/meta.js.map +0 -1
  394. package/dist/host/__tests__/errors.test.d.ts +0 -2
  395. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  396. package/dist/host/__tests__/errors.test.js +0 -76
  397. package/dist/host/__tests__/errors.test.js.map +0 -1
  398. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  399. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  400. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  401. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  402. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  403. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  404. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  405. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  406. package/dist/host/__tests__/router.test.d.ts +0 -2
  407. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  408. package/dist/host/__tests__/router.test.js +0 -241
  409. package/dist/host/__tests__/router.test.js.map +0 -1
  410. package/dist/host/__tests__/testing.test.d.ts +0 -2
  411. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  412. package/dist/host/__tests__/testing.test.js +0 -64
  413. package/dist/host/__tests__/testing.test.js.map +0 -1
  414. package/dist/host/__tests__/utils.test.d.ts +0 -2
  415. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  416. package/dist/host/__tests__/utils.test.js +0 -29
  417. package/dist/host/__tests__/utils.test.js.map +0 -1
  418. package/dist/host/cookie-handler.d.ts +0 -34
  419. package/dist/host/cookie-handler.d.ts.map +0 -1
  420. package/dist/host/cookie-handler.js +0 -124
  421. package/dist/host/cookie-handler.js.map +0 -1
  422. package/dist/host/errors.d.ts +0 -56
  423. package/dist/host/errors.d.ts.map +0 -1
  424. package/dist/host/errors.js +0 -79
  425. package/dist/host/errors.js.map +0 -1
  426. package/dist/host/index.d.ts +0 -29
  427. package/dist/host/index.d.ts.map +0 -1
  428. package/dist/host/index.js +0 -32
  429. package/dist/host/index.js.map +0 -1
  430. package/dist/host/pattern-matcher.d.ts +0 -36
  431. package/dist/host/pattern-matcher.d.ts.map +0 -1
  432. package/dist/host/pattern-matcher.js +0 -172
  433. package/dist/host/pattern-matcher.js.map +0 -1
  434. package/dist/host/router.d.ts +0 -26
  435. package/dist/host/router.d.ts.map +0 -1
  436. package/dist/host/router.js +0 -218
  437. package/dist/host/router.js.map +0 -1
  438. package/dist/host/testing.d.ts +0 -36
  439. package/dist/host/testing.d.ts.map +0 -1
  440. package/dist/host/testing.js +0 -55
  441. package/dist/host/testing.js.map +0 -1
  442. package/dist/host/types.d.ts +0 -115
  443. package/dist/host/types.d.ts.map +0 -1
  444. package/dist/host/types.js +0 -7
  445. package/dist/host/types.js.map +0 -1
  446. package/dist/host/utils.d.ts +0 -21
  447. package/dist/host/utils.d.ts.map +0 -1
  448. package/dist/host/utils.js +0 -23
  449. package/dist/host/utils.js.map +0 -1
  450. package/dist/href-client.d.ts +0 -131
  451. package/dist/href-client.d.ts.map +0 -1
  452. package/dist/href-client.js +0 -64
  453. package/dist/href-client.js.map +0 -1
  454. package/dist/href-context.d.ts +0 -29
  455. package/dist/href-context.d.ts.map +0 -1
  456. package/dist/href-context.js +0 -21
  457. package/dist/href-context.js.map +0 -1
  458. package/dist/index.d.ts +0 -73
  459. package/dist/index.d.ts.map +0 -1
  460. package/dist/index.js +0 -91
  461. package/dist/index.js.map +0 -1
  462. package/dist/index.rsc.d.ts +0 -32
  463. package/dist/index.rsc.d.ts.map +0 -1
  464. package/dist/index.rsc.js +0 -40
  465. package/dist/index.rsc.js.map +0 -1
  466. package/dist/internal-debug.d.ts +0 -2
  467. package/dist/internal-debug.d.ts.map +0 -1
  468. package/dist/internal-debug.js +0 -5
  469. package/dist/internal-debug.js.map +0 -1
  470. package/dist/loader.d.ts +0 -14
  471. package/dist/loader.d.ts.map +0 -1
  472. package/dist/loader.js +0 -20
  473. package/dist/loader.js.map +0 -1
  474. package/dist/loader.rsc.d.ts +0 -19
  475. package/dist/loader.rsc.d.ts.map +0 -1
  476. package/dist/loader.rsc.js +0 -99
  477. package/dist/loader.rsc.js.map +0 -1
  478. package/dist/network-error-thrower.d.ts +0 -17
  479. package/dist/network-error-thrower.d.ts.map +0 -1
  480. package/dist/network-error-thrower.js +0 -14
  481. package/dist/network-error-thrower.js.map +0 -1
  482. package/dist/outlet-context.d.ts +0 -13
  483. package/dist/outlet-context.d.ts.map +0 -1
  484. package/dist/outlet-context.js +0 -3
  485. package/dist/outlet-context.js.map +0 -1
  486. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  487. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  488. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  489. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  490. package/dist/prerender/param-hash.d.ts +0 -16
  491. package/dist/prerender/param-hash.d.ts.map +0 -1
  492. package/dist/prerender/param-hash.js +0 -36
  493. package/dist/prerender/param-hash.js.map +0 -1
  494. package/dist/prerender/store.d.ts +0 -38
  495. package/dist/prerender/store.d.ts.map +0 -1
  496. package/dist/prerender/store.js +0 -61
  497. package/dist/prerender/store.js.map +0 -1
  498. package/dist/prerender.d.ts +0 -66
  499. package/dist/prerender.d.ts.map +0 -1
  500. package/dist/prerender.js +0 -57
  501. package/dist/prerender.js.map +0 -1
  502. package/dist/reverse.d.ts +0 -196
  503. package/dist/reverse.d.ts.map +0 -1
  504. package/dist/reverse.js +0 -78
  505. package/dist/reverse.js.map +0 -1
  506. package/dist/root-error-boundary.d.ts +0 -33
  507. package/dist/root-error-boundary.d.ts.map +0 -1
  508. package/dist/root-error-boundary.js +0 -165
  509. package/dist/root-error-boundary.js.map +0 -1
  510. package/dist/route-content-wrapper.d.ts +0 -46
  511. package/dist/route-content-wrapper.d.ts.map +0 -1
  512. package/dist/route-content-wrapper.js +0 -77
  513. package/dist/route-content-wrapper.js.map +0 -1
  514. package/dist/route-definition.d.ts +0 -421
  515. package/dist/route-definition.d.ts.map +0 -1
  516. package/dist/route-definition.js +0 -868
  517. package/dist/route-definition.js.map +0 -1
  518. package/dist/route-map-builder.d.ts +0 -155
  519. package/dist/route-map-builder.d.ts.map +0 -1
  520. package/dist/route-map-builder.js +0 -237
  521. package/dist/route-map-builder.js.map +0 -1
  522. package/dist/route-types.d.ts +0 -165
  523. package/dist/route-types.d.ts.map +0 -1
  524. package/dist/route-types.js +0 -7
  525. package/dist/route-types.js.map +0 -1
  526. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  527. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  528. package/dist/router/__tests__/handler-context.test.js +0 -65
  529. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  530. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  531. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  532. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  533. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  534. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  535. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  536. package/dist/router/__tests__/match-context.test.js +0 -92
  537. package/dist/router/__tests__/match-context.test.js.map +0 -1
  538. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  539. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  540. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  541. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  542. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  543. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  544. package/dist/router/__tests__/match-result.test.js +0 -457
  545. package/dist/router/__tests__/match-result.test.js.map +0 -1
  546. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  547. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  548. package/dist/router/__tests__/on-error.test.js +0 -678
  549. package/dist/router/__tests__/on-error.test.js.map +0 -1
  550. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  551. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  552. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  553. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  554. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  555. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  556. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  557. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  558. package/dist/router/error-handling.d.ts +0 -77
  559. package/dist/router/error-handling.d.ts.map +0 -1
  560. package/dist/router/error-handling.js +0 -202
  561. package/dist/router/error-handling.js.map +0 -1
  562. package/dist/router/handler-context.d.ts +0 -20
  563. package/dist/router/handler-context.d.ts.map +0 -1
  564. package/dist/router/handler-context.js +0 -198
  565. package/dist/router/handler-context.js.map +0 -1
  566. package/dist/router/intercept-resolution.d.ts +0 -66
  567. package/dist/router/intercept-resolution.d.ts.map +0 -1
  568. package/dist/router/intercept-resolution.js +0 -246
  569. package/dist/router/intercept-resolution.js.map +0 -1
  570. package/dist/router/loader-resolution.d.ts +0 -64
  571. package/dist/router/loader-resolution.d.ts.map +0 -1
  572. package/dist/router/loader-resolution.js +0 -284
  573. package/dist/router/loader-resolution.js.map +0 -1
  574. package/dist/router/logging.d.ts +0 -15
  575. package/dist/router/logging.d.ts.map +0 -1
  576. package/dist/router/logging.js +0 -99
  577. package/dist/router/logging.js.map +0 -1
  578. package/dist/router/manifest.d.ts +0 -22
  579. package/dist/router/manifest.d.ts.map +0 -1
  580. package/dist/router/manifest.js +0 -181
  581. package/dist/router/manifest.js.map +0 -1
  582. package/dist/router/match-api.d.ts +0 -35
  583. package/dist/router/match-api.d.ts.map +0 -1
  584. package/dist/router/match-api.js +0 -406
  585. package/dist/router/match-api.js.map +0 -1
  586. package/dist/router/match-context.d.ts +0 -206
  587. package/dist/router/match-context.d.ts.map +0 -1
  588. package/dist/router/match-context.js +0 -17
  589. package/dist/router/match-context.js.map +0 -1
  590. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  591. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  592. package/dist/router/match-middleware/background-revalidation.js +0 -75
  593. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  594. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  595. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  596. package/dist/router/match-middleware/cache-lookup.js +0 -257
  597. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  598. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  599. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  600. package/dist/router/match-middleware/cache-store.js +0 -108
  601. package/dist/router/match-middleware/cache-store.js.map +0 -1
  602. package/dist/router/match-middleware/index.d.ts +0 -81
  603. package/dist/router/match-middleware/index.d.ts.map +0 -1
  604. package/dist/router/match-middleware/index.js +0 -80
  605. package/dist/router/match-middleware/index.js.map +0 -1
  606. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  607. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  608. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  609. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  610. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  611. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  612. package/dist/router/match-middleware/segment-resolution.js +0 -53
  613. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  614. package/dist/router/match-pipelines.d.ts +0 -147
  615. package/dist/router/match-pipelines.d.ts.map +0 -1
  616. package/dist/router/match-pipelines.js +0 -82
  617. package/dist/router/match-pipelines.js.map +0 -1
  618. package/dist/router/match-result.d.ts +0 -126
  619. package/dist/router/match-result.d.ts.map +0 -1
  620. package/dist/router/match-result.js +0 -93
  621. package/dist/router/match-result.js.map +0 -1
  622. package/dist/router/metrics.d.ts +0 -20
  623. package/dist/router/metrics.d.ts.map +0 -1
  624. package/dist/router/metrics.js +0 -47
  625. package/dist/router/metrics.js.map +0 -1
  626. package/dist/router/middleware.d.ts +0 -249
  627. package/dist/router/middleware.d.ts.map +0 -1
  628. package/dist/router/middleware.js +0 -434
  629. package/dist/router/middleware.js.map +0 -1
  630. package/dist/router/middleware.test.d.ts +0 -2
  631. package/dist/router/middleware.test.d.ts.map +0 -1
  632. package/dist/router/middleware.test.js +0 -816
  633. package/dist/router/middleware.test.js.map +0 -1
  634. package/dist/router/pattern-matching.d.ts +0 -149
  635. package/dist/router/pattern-matching.d.ts.map +0 -1
  636. package/dist/router/pattern-matching.js +0 -349
  637. package/dist/router/pattern-matching.js.map +0 -1
  638. package/dist/router/revalidation.d.ts +0 -44
  639. package/dist/router/revalidation.d.ts.map +0 -1
  640. package/dist/router/revalidation.js +0 -147
  641. package/dist/router/revalidation.js.map +0 -1
  642. package/dist/router/router-context.d.ts +0 -135
  643. package/dist/router/router-context.d.ts.map +0 -1
  644. package/dist/router/router-context.js +0 -36
  645. package/dist/router/router-context.js.map +0 -1
  646. package/dist/router/segment-resolution.d.ts +0 -127
  647. package/dist/router/segment-resolution.d.ts.map +0 -1
  648. package/dist/router/segment-resolution.js +0 -919
  649. package/dist/router/segment-resolution.js.map +0 -1
  650. package/dist/router/trie-matching.d.ts +0 -40
  651. package/dist/router/trie-matching.d.ts.map +0 -1
  652. package/dist/router/trie-matching.js +0 -127
  653. package/dist/router/trie-matching.js.map +0 -1
  654. package/dist/router/types.d.ts +0 -136
  655. package/dist/router/types.d.ts.map +0 -1
  656. package/dist/router/types.js +0 -7
  657. package/dist/router/types.js.map +0 -1
  658. package/dist/router.d.ts +0 -753
  659. package/dist/router.d.ts.map +0 -1
  660. package/dist/router.gen.d.ts +0 -6
  661. package/dist/router.gen.d.ts.map +0 -1
  662. package/dist/router.gen.js +0 -6
  663. package/dist/router.gen.js.map +0 -1
  664. package/dist/router.js +0 -1304
  665. package/dist/router.js.map +0 -1
  666. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  667. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  668. package/dist/rsc/__tests__/helpers.test.js +0 -140
  669. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  670. package/dist/rsc/handler.d.ts +0 -45
  671. package/dist/rsc/handler.d.ts.map +0 -1
  672. package/dist/rsc/handler.js +0 -1172
  673. package/dist/rsc/handler.js.map +0 -1
  674. package/dist/rsc/helpers.d.ts +0 -16
  675. package/dist/rsc/helpers.d.ts.map +0 -1
  676. package/dist/rsc/helpers.js +0 -55
  677. package/dist/rsc/helpers.js.map +0 -1
  678. package/dist/rsc/index.d.ts +0 -22
  679. package/dist/rsc/index.d.ts.map +0 -1
  680. package/dist/rsc/index.js +0 -23
  681. package/dist/rsc/index.js.map +0 -1
  682. package/dist/rsc/nonce.d.ts +0 -9
  683. package/dist/rsc/nonce.d.ts.map +0 -1
  684. package/dist/rsc/nonce.js +0 -18
  685. package/dist/rsc/nonce.js.map +0 -1
  686. package/dist/rsc/types.d.ts +0 -206
  687. package/dist/rsc/types.d.ts.map +0 -1
  688. package/dist/rsc/types.js +0 -8
  689. package/dist/rsc/types.js.map +0 -1
  690. package/dist/search-params.d.ts +0 -103
  691. package/dist/search-params.d.ts.map +0 -1
  692. package/dist/search-params.js +0 -74
  693. package/dist/search-params.js.map +0 -1
  694. package/dist/segment-system.d.ts +0 -75
  695. package/dist/segment-system.d.ts.map +0 -1
  696. package/dist/segment-system.js +0 -336
  697. package/dist/segment-system.js.map +0 -1
  698. package/dist/server/context.d.ts +0 -245
  699. package/dist/server/context.d.ts.map +0 -1
  700. package/dist/server/context.js +0 -197
  701. package/dist/server/context.js.map +0 -1
  702. package/dist/server/fetchable-loader-store.d.ts +0 -18
  703. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  704. package/dist/server/fetchable-loader-store.js +0 -18
  705. package/dist/server/fetchable-loader-store.js.map +0 -1
  706. package/dist/server/handle-store.d.ts +0 -85
  707. package/dist/server/handle-store.d.ts.map +0 -1
  708. package/dist/server/handle-store.js +0 -142
  709. package/dist/server/handle-store.js.map +0 -1
  710. package/dist/server/loader-registry.d.ts +0 -55
  711. package/dist/server/loader-registry.d.ts.map +0 -1
  712. package/dist/server/loader-registry.js +0 -132
  713. package/dist/server/loader-registry.js.map +0 -1
  714. package/dist/server/request-context.d.ts +0 -226
  715. package/dist/server/request-context.d.ts.map +0 -1
  716. package/dist/server/request-context.js +0 -290
  717. package/dist/server/request-context.js.map +0 -1
  718. package/dist/server/root-layout.d.ts +0 -4
  719. package/dist/server/root-layout.d.ts.map +0 -1
  720. package/dist/server/root-layout.js +0 -5
  721. package/dist/server/root-layout.js.map +0 -1
  722. package/dist/server.d.ts +0 -15
  723. package/dist/server.d.ts.map +0 -1
  724. package/dist/server.js +0 -20
  725. package/dist/server.js.map +0 -1
  726. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  727. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  728. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  729. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  730. package/dist/ssr/index.d.ts +0 -98
  731. package/dist/ssr/index.d.ts.map +0 -1
  732. package/dist/ssr/index.js +0 -158
  733. package/dist/ssr/index.js.map +0 -1
  734. package/dist/static-handler.d.ts +0 -50
  735. package/dist/static-handler.d.ts.map +0 -1
  736. package/dist/static-handler.gen.d.ts +0 -5
  737. package/dist/static-handler.gen.d.ts.map +0 -1
  738. package/dist/static-handler.gen.js +0 -5
  739. package/dist/static-handler.gen.js.map +0 -1
  740. package/dist/static-handler.js +0 -29
  741. package/dist/static-handler.js.map +0 -1
  742. package/dist/theme/ThemeProvider.d.ts +0 -20
  743. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  744. package/dist/theme/ThemeProvider.js +0 -240
  745. package/dist/theme/ThemeProvider.js.map +0 -1
  746. package/dist/theme/ThemeScript.d.ts +0 -48
  747. package/dist/theme/ThemeScript.d.ts.map +0 -1
  748. package/dist/theme/ThemeScript.js +0 -13
  749. package/dist/theme/ThemeScript.js.map +0 -1
  750. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  751. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  752. package/dist/theme/__tests__/theme.test.js +0 -103
  753. package/dist/theme/__tests__/theme.test.js.map +0 -1
  754. package/dist/theme/constants.d.ts +0 -29
  755. package/dist/theme/constants.d.ts.map +0 -1
  756. package/dist/theme/constants.js +0 -48
  757. package/dist/theme/constants.js.map +0 -1
  758. package/dist/theme/index.d.ts +0 -31
  759. package/dist/theme/index.d.ts.map +0 -1
  760. package/dist/theme/index.js +0 -36
  761. package/dist/theme/index.js.map +0 -1
  762. package/dist/theme/theme-context.d.ts +0 -40
  763. package/dist/theme/theme-context.d.ts.map +0 -1
  764. package/dist/theme/theme-context.js +0 -60
  765. package/dist/theme/theme-context.js.map +0 -1
  766. package/dist/theme/theme-script.d.ts +0 -27
  767. package/dist/theme/theme-script.d.ts.map +0 -1
  768. package/dist/theme/theme-script.js +0 -147
  769. package/dist/theme/theme-script.js.map +0 -1
  770. package/dist/theme/types.d.ts +0 -163
  771. package/dist/theme/types.d.ts.map +0 -1
  772. package/dist/theme/types.js +0 -11
  773. package/dist/theme/types.js.map +0 -1
  774. package/dist/theme/use-theme.d.ts +0 -12
  775. package/dist/theme/use-theme.d.ts.map +0 -1
  776. package/dist/theme/use-theme.js +0 -40
  777. package/dist/theme/use-theme.js.map +0 -1
  778. package/dist/types.d.ts +0 -1479
  779. package/dist/types.d.ts.map +0 -1
  780. package/dist/types.js +0 -10
  781. package/dist/types.js.map +0 -1
  782. package/dist/urls.d.ts +0 -441
  783. package/dist/urls.d.ts.map +0 -1
  784. package/dist/urls.gen.d.ts +0 -8
  785. package/dist/urls.gen.d.ts.map +0 -1
  786. package/dist/urls.gen.js +0 -8
  787. package/dist/urls.gen.js.map +0 -1
  788. package/dist/urls.js +0 -443
  789. package/dist/urls.js.map +0 -1
  790. package/dist/use-loader.d.ts +0 -127
  791. package/dist/use-loader.d.ts.map +0 -1
  792. package/dist/use-loader.js +0 -237
  793. package/dist/use-loader.js.map +0 -1
  794. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  795. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  796. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  797. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  798. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  799. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  800. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  801. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  802. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  803. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  804. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  805. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  806. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  807. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  808. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  809. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  810. package/dist/vite/ast-handler-extract.d.ts +0 -49
  811. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  812. package/dist/vite/ast-handler-extract.js +0 -249
  813. package/dist/vite/ast-handler-extract.js.map +0 -1
  814. package/dist/vite/expose-action-id.d.ts +0 -19
  815. package/dist/vite/expose-action-id.d.ts.map +0 -1
  816. package/dist/vite/expose-action-id.js +0 -250
  817. package/dist/vite/expose-action-id.js.map +0 -1
  818. package/dist/vite/expose-id-utils.d.ts +0 -69
  819. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  820. package/dist/vite/expose-id-utils.js +0 -289
  821. package/dist/vite/expose-id-utils.js.map +0 -1
  822. package/dist/vite/expose-internal-ids.d.ts +0 -22
  823. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  824. package/dist/vite/expose-internal-ids.js +0 -886
  825. package/dist/vite/expose-internal-ids.js.map +0 -1
  826. package/dist/vite/index.d.ts +0 -149
  827. package/dist/vite/index.d.ts.map +0 -1
  828. package/dist/vite/index.js.map +0 -1
  829. package/dist/vite/index.named-routes.gen.ts +0 -103
  830. package/dist/vite/package-resolution.d.ts +0 -43
  831. package/dist/vite/package-resolution.d.ts.map +0 -1
  832. package/dist/vite/package-resolution.js +0 -112
  833. package/dist/vite/package-resolution.js.map +0 -1
  834. package/dist/vite/virtual-entries.d.ts +0 -25
  835. package/dist/vite/virtual-entries.d.ts.map +0 -1
  836. package/dist/vite/virtual-entries.js +0 -110
  837. package/dist/vite/virtual-entries.js.map +0 -1
@@ -10,14 +10,21 @@ declare global {
10
10
  /**
11
11
  * Cloudflare Edge Cache Store
12
12
  *
13
- * Production cache store using Cloudflare's Cache API.
14
- * Handles SWR atomically - get() checks staleness and marks REVALIDATING in one operation.
13
+ * Production cache store using Cloudflare's Cache API (L1) with optional
14
+ * KV persistence (L2).
15
+ *
16
+ * L1 (Cache API): Per-colo, fast, ephemeral. Handles SWR atomically.
17
+ * L2 (KV): Global, persistent, ~50ms reads. Auto-warms cold colos.
18
+ *
19
+ * Read flow: L1 hit → serve | L1 miss → L2 hit → serve + promote to L1 | both miss → render
20
+ * Write flow: L1 write + L2 write (both via waitUntil)
15
21
  *
16
22
  * Features:
17
23
  * - Extended TTL for SWR window (max-age = ttl + swr)
18
24
  * - Staleness via x-edge-cache-stale-at header
19
- * - Atomic REVALIDATING status for thundering herd prevention
25
+ * - Atomic REVALIDATING status for thundering herd prevention (L1 only)
20
26
  * - Non-blocking writes via waitUntil
27
+ * - KV L2 for cross-colo cache persistence
21
28
  */
22
29
 
23
30
  import type {
@@ -68,6 +75,67 @@ export interface ExecutionContext {
68
75
  passThroughOnException(): void;
69
76
  }
70
77
 
78
+ /**
79
+ * Minimal Cloudflare KV Namespace interface.
80
+ * Avoids hard dependency on @cloudflare/workers-types.
81
+ */
82
+ export interface KVNamespace {
83
+ get(key: string, options?: { type?: string }): Promise<any>;
84
+ put(
85
+ key: string,
86
+ value: string,
87
+ options?: { expirationTtl?: number },
88
+ ): Promise<void>;
89
+ delete(key: string): Promise<void>;
90
+ }
91
+
92
+ /**
93
+ * KV envelope for segment cache entries.
94
+ * @internal
95
+ */
96
+ interface KVSegmentEnvelope {
97
+ /** Cached segment data */
98
+ d: CachedEntryData;
99
+ /** When entry becomes stale (ms epoch) */
100
+ s: number;
101
+ /** When entry hard-expires (ms epoch) */
102
+ e: number;
103
+ }
104
+
105
+ /**
106
+ * KV envelope for function cache entries ("use cache").
107
+ * @internal
108
+ */
109
+ interface KVItemEnvelope {
110
+ /** RSC-serialized return value */
111
+ v: string;
112
+ /** Handle data */
113
+ h?: Record<string, Record<string, unknown[]>>;
114
+ /** When entry becomes stale (ms epoch) */
115
+ s: number;
116
+ /** When entry hard-expires (ms epoch) */
117
+ e: number;
118
+ }
119
+
120
+ /**
121
+ * KV envelope for document cache entries.
122
+ * @internal
123
+ */
124
+ interface KVResponseEnvelope {
125
+ /** Response body as base64-encoded string (safe for binary payloads) */
126
+ b: string;
127
+ /** HTTP status code */
128
+ st: number;
129
+ /** HTTP status text */
130
+ stx: string;
131
+ /** Serialized headers as key-value pairs */
132
+ hd: [string, string][];
133
+ /** When entry becomes stale (ms epoch) */
134
+ s: number;
135
+ /** When entry hard-expires (ms epoch) */
136
+ e: number;
137
+ }
138
+
71
139
  export interface CFCacheStoreOptions<TEnv = unknown> {
72
140
  /**
73
141
  * Cache namespace. If not provided, uses caches.default (recommended).
@@ -98,6 +166,20 @@ export interface CFCacheStoreOptions<TEnv = unknown> {
98
166
  */
99
167
  ctx: ExecutionContext;
100
168
 
169
+ /**
170
+ * Optional KV namespace for L2 cache persistence.
171
+ *
172
+ * When provided, KV acts as a global fallback behind the per-colo Cache API.
173
+ * On L1 miss, KV is checked and hits are promoted back to L1.
174
+ * On writes, data is persisted to both L1 and KV.
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * new CFCacheStore({ ctx: env.ctx, kv: env.CACHE_KV })
179
+ * ```
180
+ */
181
+ kv?: KVNamespace;
182
+
101
183
  /**
102
184
  * Cache version string override. When this changes, all cached entries are
103
185
  * effectively invalidated (new keys won't match old entries).
@@ -163,6 +245,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
163
245
  private readonly baseUrl: string;
164
246
  private readonly waitUntil?: (fn: () => Promise<void>) => void;
165
247
  private readonly version?: string;
248
+ private readonly kv?: KVNamespace;
166
249
 
167
250
  constructor(options: CFCacheStoreOptions<TEnv>) {
168
251
  if (!options.ctx) {
@@ -179,6 +262,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
179
262
  this.version = options.version ?? VERSION;
180
263
  this.keyGenerator = options.keyGenerator;
181
264
  this.waitUntil = (fn) => options.ctx.waitUntil(fn());
265
+ this.kv = options.kv;
182
266
  }
183
267
 
184
268
  /**
@@ -232,6 +316,10 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
232
316
  return caches.default;
233
317
  }
234
318
 
319
+ // ============================================================================
320
+ // Segment Cache Methods
321
+ // ============================================================================
322
+
235
323
  /**
236
324
  * Get cached entry data by key.
237
325
  *
@@ -240,7 +328,8 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
240
328
  * - If already REVALIDATING (and recent), returns shouldRevalidate: false
241
329
  * - If fresh, returns shouldRevalidate: false
242
330
  *
243
- * The atomic mark prevents thundering herd - only first request triggers revalidation.
331
+ * On L1 miss, falls back to KV (L2) if configured.
332
+ * KV hits are promoted to L1 in the background.
244
333
  */
245
334
  async get(key: string): Promise<CacheGetResult | null> {
246
335
  try {
@@ -249,7 +338,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
249
338
  const response = await cache.match(request);
250
339
 
251
340
  if (!response) {
252
- return null;
341
+ return this.kvGetSegment(key);
253
342
  }
254
343
 
255
344
  // Read status headers
@@ -292,6 +381,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
292
381
  /**
293
382
  * Store entry data with TTL and optional SWR window.
294
383
  * Uses waitUntil for non-blocking write when available.
384
+ * When KV is configured, also persists to L2.
295
385
  */
296
386
  async set(
297
387
  key: string,
@@ -308,7 +398,8 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
308
398
  const totalTtl = ttl + swrWindow;
309
399
  const staleAt = Date.now() + ttl * 1000;
310
400
 
311
- const response = new Response(JSON.stringify(data), {
401
+ const body = JSON.stringify(data);
402
+ const response = new Response(body, {
312
403
  headers: {
313
404
  "Content-Type": "application/json",
314
405
  "Cache-Control": `public, max-age=${totalTtl}`,
@@ -328,18 +419,35 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
328
419
  // Blocking fallback
329
420
  await putPromise;
330
421
  }
422
+
423
+ // L2: persist to KV
424
+ this.kvSetSegment(key, data, staleAt, totalTtl);
331
425
  } catch (error) {
332
426
  console.error("[CFCacheStore] set failed:", error);
333
427
  }
334
428
  }
335
429
 
336
430
  /**
337
- * Delete a cached entry
431
+ * Delete a cached entry from L1 and L2.
338
432
  */
339
433
  async delete(key: string): Promise<boolean> {
340
434
  try {
341
435
  const cache = await this.getCache();
342
- return await cache.delete(this.keyToRequest(key));
436
+ const result = await cache.delete(this.keyToRequest(key));
437
+
438
+ // L2: delete from KV
439
+ if (this.kv && this.waitUntil) {
440
+ const kvKey = this.toKVKey(key);
441
+ this.waitUntil(async () => {
442
+ try {
443
+ await this.kv!.delete(kvKey);
444
+ } catch {
445
+ // KV delete failures are non-critical
446
+ }
447
+ });
448
+ }
449
+
450
+ return result;
343
451
  } catch (error) {
344
452
  console.error("[CFCacheStore] delete failed:", error);
345
453
  return false;
@@ -353,6 +461,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
353
461
  /**
354
462
  * Get a cached Response by key (for document-level caching).
355
463
  * Returns the response and whether it should be revalidated (SWR).
464
+ * Falls back to KV (L2) on L1 miss.
356
465
  */
357
466
  async getResponse(
358
467
  key: string,
@@ -363,7 +472,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
363
472
  const response = await cache.match(request);
364
473
 
365
474
  if (!response || response.status !== 200) {
366
- return null;
475
+ return this.kvGetResponse(key);
367
476
  }
368
477
 
369
478
  // Check staleness
@@ -382,6 +491,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
382
491
 
383
492
  /**
384
493
  * Store a Response with TTL and optional SWR window (for document-level caching).
494
+ * When KV is configured, also persists to L2.
385
495
  */
386
496
  async putResponse(
387
497
  key: string,
@@ -398,12 +508,19 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
398
508
  const totalTtl = ttl + swrWindow;
399
509
  const staleAt = Date.now() + ttl * 1000;
400
510
 
511
+ // Clone body for potential KV write before consuming it for L1
512
+ const [l1Body, kvBody] = this.kv
513
+ ? response.body
514
+ ? response.body.tee()
515
+ : [null, null]
516
+ : [response.body, null];
517
+
401
518
  // Clone and add cache headers
402
519
  const headers = new Headers(response.headers);
403
520
  headers.set("Cache-Control", `public, max-age=${totalTtl}`);
404
521
  headers.set(CACHE_STALE_AT_HEADER, String(staleAt));
405
522
 
406
- const toCache = new Response(response.body, {
523
+ const toCache = new Response(l1Body, {
407
524
  status: response.status,
408
525
  statusText: response.statusText,
409
526
  headers,
@@ -420,6 +537,36 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
420
537
  // Blocking fallback
421
538
  await putPromise;
422
539
  }
540
+
541
+ // L2: persist to KV (KV requires expirationTtl >= 60s)
542
+ if (this.kv && this.waitUntil && totalTtl >= 60) {
543
+ const kvKey = this.toKVKey(`doc:${key}`);
544
+ const headersArray: [string, string][] = [];
545
+ response.headers.forEach((v, k) => headersArray.push([k, v]));
546
+ // Read body as ArrayBuffer and encode to base64 to preserve binary payloads
547
+ const bodyBuf = kvBody
548
+ ? await new Response(kvBody).arrayBuffer()
549
+ : new ArrayBuffer(0);
550
+ const bodyBase64 = bufferToBase64(bodyBuf);
551
+
552
+ this.waitUntil(async () => {
553
+ try {
554
+ const envelope: KVResponseEnvelope = {
555
+ b: bodyBase64,
556
+ st: response.status,
557
+ stx: response.statusText,
558
+ hd: headersArray,
559
+ s: staleAt,
560
+ e: staleAt + swrWindow * 1000,
561
+ };
562
+ await this.kv!.put(kvKey, JSON.stringify(envelope), {
563
+ expirationTtl: totalTtl,
564
+ });
565
+ } catch (error) {
566
+ console.error("[CFCacheStore] KV putResponse failed:", error);
567
+ }
568
+ });
569
+ }
423
570
  } catch (error) {
424
571
  console.error("[CFCacheStore] putResponse failed:", error);
425
572
  }
@@ -432,6 +579,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
432
579
  /**
433
580
  * Get a cached function result by key.
434
581
  * Follows the same SWR pattern as get() for segment caching.
582
+ * Falls back to KV (L2) on L1 miss.
435
583
  */
436
584
  async getItem(key: string): Promise<CacheItemResult | null> {
437
585
  try {
@@ -439,7 +587,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
439
587
  const request = this.keyToRequest(`fn:${key}`);
440
588
  const response = await cache.match(request);
441
589
 
442
- if (!response) return null;
590
+ if (!response) return this.kvGetItem(key);
443
591
 
444
592
  const staleAt = Number(
445
593
  response.headers.get(CACHE_STALE_AT_HEADER) ?? "0",
@@ -485,6 +633,7 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
485
633
 
486
634
  /**
487
635
  * Store a function result with TTL and optional SWR window.
636
+ * When KV is configured, also persists to L2.
488
637
  */
489
638
  async setItem(
490
639
  key: string,
@@ -519,11 +668,35 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
519
668
  } else {
520
669
  await putPromise;
521
670
  }
671
+
672
+ // L2: persist to KV (KV requires expirationTtl >= 60s)
673
+ if (this.kv && this.waitUntil && totalTtl >= 60) {
674
+ const kvKey = this.toKVKey(`fn:${key}`);
675
+ this.waitUntil(async () => {
676
+ try {
677
+ const envelope: KVItemEnvelope = {
678
+ v: value,
679
+ h: options?.handles,
680
+ s: staleAt,
681
+ e: staleAt + swrWindow * 1000,
682
+ };
683
+ await this.kv!.put(kvKey, JSON.stringify(envelope), {
684
+ expirationTtl: totalTtl,
685
+ });
686
+ } catch (error) {
687
+ console.error("[CFCacheStore] KV setItem failed:", error);
688
+ }
689
+ });
690
+ }
522
691
  } catch (error) {
523
692
  console.error("[CFCacheStore] setItem failed:", error);
524
693
  }
525
694
  }
526
695
 
696
+ // ============================================================================
697
+ // Key Helpers
698
+ // ============================================================================
699
+
527
700
  /**
528
701
  * Convert string key to Request object for CF Cache API.
529
702
  * Includes version in URL if specified (for cache invalidation on code changes).
@@ -537,4 +710,273 @@ export class CFCacheStore<TEnv = unknown> implements SegmentCacheStore<TEnv> {
537
710
  method: "GET",
538
711
  });
539
712
  }
713
+
714
+ /**
715
+ * Convert string key to KV key string.
716
+ * Uses same version prefix as Cache API for consistent invalidation.
717
+ * @internal
718
+ */
719
+ private toKVKey(key: string): string {
720
+ const versionPath = this.version ? `v/${this.version}/` : "";
721
+ return `${versionPath}${key}`;
722
+ }
723
+
724
+ // ============================================================================
725
+ // KV L2 Helpers
726
+ // ============================================================================
727
+
728
+ /**
729
+ * KV fallback for segment cache reads.
730
+ * Returns null if KV is not configured, entry is missing, or expired.
731
+ * Promotes hits to L1 via waitUntil.
732
+ * @internal
733
+ */
734
+ private async kvGetSegment(key: string): Promise<CacheGetResult | null> {
735
+ if (!this.kv) return null;
736
+
737
+ try {
738
+ const kvKey = this.toKVKey(key);
739
+ const raw = await this.kv.get(kvKey, { type: "json" });
740
+ if (!raw) return null;
741
+
742
+ const envelope = raw as KVSegmentEnvelope;
743
+ const now = Date.now();
744
+
745
+ // Hard-expired — treat as miss
746
+ if (now > envelope.e) return null;
747
+
748
+ const shouldRevalidate = now > envelope.s;
749
+
750
+ // Promote to L1 in background
751
+ this.promoteSegmentToL1(key, envelope);
752
+
753
+ return { data: envelope.d, shouldRevalidate };
754
+ } catch (error) {
755
+ console.error("[CFCacheStore] KV get failed:", error);
756
+ return null;
757
+ }
758
+ }
759
+
760
+ /**
761
+ * Write segment data to KV.
762
+ * @internal
763
+ */
764
+ private kvSetSegment(
765
+ key: string,
766
+ data: CachedEntryData,
767
+ staleAt: number,
768
+ totalTtl: number,
769
+ ): void {
770
+ // KV requires expirationTtl >= 60s. Skip write for short-lived entries.
771
+ if (!this.kv || !this.waitUntil || totalTtl < 60) return;
772
+
773
+ const kvKey = this.toKVKey(key);
774
+ const swrWindow = totalTtl * 1000 - (staleAt - Date.now());
775
+ const expiresAt = staleAt + swrWindow;
776
+
777
+ this.waitUntil(async () => {
778
+ try {
779
+ const envelope: KVSegmentEnvelope = {
780
+ d: data,
781
+ s: staleAt,
782
+ e: expiresAt,
783
+ };
784
+ await this.kv!.put(kvKey, JSON.stringify(envelope), {
785
+ expirationTtl: totalTtl,
786
+ });
787
+ } catch (error) {
788
+ console.error("[CFCacheStore] KV set failed:", error);
789
+ }
790
+ });
791
+ }
792
+
793
+ /**
794
+ * Promote segment data from KV to L1 Cache API.
795
+ * @internal
796
+ */
797
+ private promoteSegmentToL1(key: string, envelope: KVSegmentEnvelope): void {
798
+ if (!this.waitUntil) return;
799
+
800
+ this.waitUntil(async () => {
801
+ try {
802
+ const now = Date.now();
803
+ const remainingTtl = Math.max(1, Math.floor((envelope.e - now) / 1000));
804
+ const cache = await this.getCache();
805
+ const request = this.keyToRequest(key);
806
+
807
+ const response = new Response(JSON.stringify(envelope.d), {
808
+ headers: {
809
+ "Content-Type": "application/json",
810
+ "Cache-Control": `public, max-age=${remainingTtl}`,
811
+ [CACHE_STALE_AT_HEADER]: String(envelope.s),
812
+ [CACHE_STATUS_HEADER]: "HIT",
813
+ },
814
+ });
815
+
816
+ await cache.put(request, response);
817
+ } catch (error) {
818
+ console.error("[CFCacheStore] L1 promote failed:", error);
819
+ }
820
+ });
821
+ }
822
+
823
+ /**
824
+ * KV fallback for function cache reads.
825
+ * @internal
826
+ */
827
+ private async kvGetItem(key: string): Promise<CacheItemResult | null> {
828
+ if (!this.kv) return null;
829
+
830
+ try {
831
+ const kvKey = this.toKVKey(`fn:${key}`);
832
+ const raw = await this.kv.get(kvKey, { type: "json" });
833
+ if (!raw) return null;
834
+
835
+ const envelope = raw as KVItemEnvelope;
836
+ const now = Date.now();
837
+
838
+ if (now > envelope.e) return null;
839
+
840
+ const shouldRevalidate = now > envelope.s;
841
+
842
+ // Promote to L1
843
+ this.promoteItemToL1(key, envelope);
844
+
845
+ return {
846
+ value: envelope.v,
847
+ handles: envelope.h,
848
+ shouldRevalidate,
849
+ };
850
+ } catch (error) {
851
+ console.error("[CFCacheStore] KV getItem failed:", error);
852
+ return null;
853
+ }
854
+ }
855
+
856
+ /**
857
+ * Promote function cache data from KV to L1.
858
+ * @internal
859
+ */
860
+ private promoteItemToL1(key: string, envelope: KVItemEnvelope): void {
861
+ if (!this.waitUntil) return;
862
+
863
+ this.waitUntil(async () => {
864
+ try {
865
+ const now = Date.now();
866
+ const remainingTtl = Math.max(1, Math.floor((envelope.e - now) / 1000));
867
+ const cache = await this.getCache();
868
+ const request = this.keyToRequest(`fn:${key}`);
869
+
870
+ const body = JSON.stringify({ value: envelope.v, handles: envelope.h });
871
+ const response = new Response(body, {
872
+ headers: {
873
+ "Content-Type": "application/json",
874
+ "Cache-Control": `public, max-age=${remainingTtl}`,
875
+ [CACHE_STALE_AT_HEADER]: String(envelope.s),
876
+ [CACHE_STATUS_HEADER]: "HIT",
877
+ },
878
+ });
879
+
880
+ await cache.put(request, response);
881
+ } catch (error) {
882
+ console.error("[CFCacheStore] L1 item promote failed:", error);
883
+ }
884
+ });
885
+ }
886
+
887
+ /**
888
+ * KV fallback for document cache reads.
889
+ * @internal
890
+ */
891
+ private async kvGetResponse(
892
+ key: string,
893
+ ): Promise<{ response: Response; shouldRevalidate: boolean } | null> {
894
+ if (!this.kv) return null;
895
+
896
+ try {
897
+ const kvKey = this.toKVKey(`doc:${key}`);
898
+ const raw = await this.kv.get(kvKey, { type: "json" });
899
+ if (!raw) return null;
900
+
901
+ const envelope = raw as KVResponseEnvelope;
902
+ const now = Date.now();
903
+
904
+ if (now > envelope.e) return null;
905
+
906
+ const shouldRevalidate = now > envelope.s;
907
+
908
+ // Reconstruct Response (decode base64 → binary)
909
+ const headers = new Headers(envelope.hd);
910
+ const bodyBuffer = base64ToBuffer(envelope.b);
911
+ const response = new Response(bodyBuffer, {
912
+ status: envelope.st,
913
+ statusText: envelope.stx,
914
+ headers,
915
+ });
916
+
917
+ // Promote to L1
918
+ this.promoteResponseToL1(key, envelope);
919
+
920
+ return { response, shouldRevalidate };
921
+ } catch (error) {
922
+ console.error("[CFCacheStore] KV getResponse failed:", error);
923
+ return null;
924
+ }
925
+ }
926
+
927
+ /**
928
+ * Promote document cache data from KV to L1.
929
+ * @internal
930
+ */
931
+ private promoteResponseToL1(key: string, envelope: KVResponseEnvelope): void {
932
+ if (!this.waitUntil) return;
933
+
934
+ this.waitUntil(async () => {
935
+ try {
936
+ const now = Date.now();
937
+ const remainingTtl = Math.max(1, Math.floor((envelope.e - now) / 1000));
938
+ const cache = await this.getCache();
939
+ const request = this.keyToRequest(`doc:${key}`);
940
+
941
+ const headers = new Headers(envelope.hd);
942
+ headers.set("Cache-Control", `public, max-age=${remainingTtl}`);
943
+ headers.set(CACHE_STALE_AT_HEADER, String(envelope.s));
944
+
945
+ const bodyBuffer = base64ToBuffer(envelope.b);
946
+ const response = new Response(bodyBuffer, {
947
+ status: envelope.st,
948
+ statusText: envelope.stx,
949
+ headers,
950
+ });
951
+
952
+ await cache.put(request, response);
953
+ } catch (error) {
954
+ console.error("[CFCacheStore] L1 response promote failed:", error);
955
+ }
956
+ });
957
+ }
958
+ }
959
+
960
+ // ============================================================================
961
+ // Base64 Helpers (binary-safe response body encoding for KV)
962
+ // ============================================================================
963
+
964
+ /** Encode ArrayBuffer to base64 string. */
965
+ function bufferToBase64(buffer: ArrayBuffer): string {
966
+ const bytes = new Uint8Array(buffer);
967
+ let binary = "";
968
+ for (let i = 0; i < bytes.length; i++) {
969
+ binary += String.fromCharCode(bytes[i]!);
970
+ }
971
+ return btoa(binary);
972
+ }
973
+
974
+ /** Decode base64 string to ArrayBuffer. */
975
+ function base64ToBuffer(base64: string): ArrayBuffer {
976
+ const binary = atob(base64);
977
+ const bytes = new Uint8Array(binary.length);
978
+ for (let i = 0; i < binary.length; i++) {
979
+ bytes[i] = binary.charCodeAt(i);
980
+ }
981
+ return bytes.buffer;
540
982
  }
@@ -10,7 +10,11 @@
10
10
  */
11
11
 
12
12
  // Public API
13
- export { CFCacheStore, type CFCacheStoreOptions } from "./cf-cache-store.js";
13
+ export {
14
+ CFCacheStore,
15
+ type CFCacheStoreOptions,
16
+ type KVNamespace,
17
+ } from "./cf-cache-store.js";
14
18
 
15
19
  // Header constants for debugging and inspection
16
20
  export {
@@ -29,6 +29,7 @@ export { MemorySegmentCacheStore } from "./memory-segment-store.js";
29
29
  export {
30
30
  CFCacheStore,
31
31
  type CFCacheStoreOptions,
32
+ type KVNamespace,
32
33
  CACHE_STALE_AT_HEADER,
33
34
  CACHE_STATUS_HEADER,
34
35
  } from "./cf/index.js";
@@ -71,9 +71,9 @@ export function redirect(
71
71
  // actions both deliver state through Flight payloads, so suppress for those.
72
72
  if (
73
73
  reqCtx &&
74
- !reqCtx.url.searchParams.has("_rsc_partial") &&
74
+ !reqCtx.originalUrl.searchParams.has("_rsc_partial") &&
75
75
  !reqCtx.request.headers.has("rsc-action") &&
76
- !reqCtx.url.searchParams.has("_rsc_action")
76
+ !reqCtx.originalUrl.searchParams.has("_rsc_action")
77
77
  ) {
78
78
  console.warn(
79
79
  `[Router] redirect() with state during a full-page (SSR) request to "${url}". ` +
@@ -199,7 +199,13 @@ export function registerRouterManifestLoader(
199
199
  }
200
200
 
201
201
  export async function ensureRouterManifest(routerId: string): Promise<void> {
202
- if (perRouterManifestMap.has(routerId)) return;
202
+ // Check both manifest AND trie. The virtual module's setRouterManifest()
203
+ // pre-sets the manifest at startup, but the per-router trie is only
204
+ // available from the lazy loader. Without this, the lazy loader never
205
+ // runs and findMatch falls back to the global merged trie — which
206
+ // contains routes from ALL routers and breaks multi-router setups.
207
+ if (perRouterManifestMap.has(routerId) && perRouterTrieMap.has(routerId))
208
+ return;
203
209
  const loader = routerManifestLoaders.get(routerId);
204
210
  if (loader) {
205
211
  const mod = await loader();
@@ -52,8 +52,10 @@ export function createFindMatch<TEnv = any>(
52
52
  : undefined;
53
53
 
54
54
  // Phase 1: Try trie match (O(path_length))
55
- // Prefer per-router trie (isolated) over global trie (merged).
56
- const routeTrie = getRouterTrie(deps.routerId) ?? getRouteTrie();
55
+ // Only use the per-router trie. The global trie merges routes from ALL
56
+ // routers and must not be used — in multi-router setups (host routing)
57
+ // overlapping paths like "/" would match the wrong app's route.
58
+ const routeTrie = getRouterTrie(deps.routerId);
57
59
  if (routeTrie) {
58
60
  const trieStart = performance.now();
59
61
  const trieResult = tryTrieMatch(routeTrie, pathname);