@rangojs/router 0.0.0-experimental.ce770c9a → 0.0.0-experimental.dc0369d7

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 (915) hide show
  1. package/README.md +76 -18
  2. package/dist/bin/rango.js +130 -47
  3. package/dist/vite/index.js +421 -121
  4. package/package.json +2 -2
  5. package/skills/cache-guide/SKILL.md +32 -0
  6. package/skills/caching/SKILL.md +8 -0
  7. package/skills/links/SKILL.md +3 -1
  8. package/skills/loader/SKILL.md +53 -43
  9. package/skills/middleware/SKILL.md +2 -0
  10. package/skills/parallel/SKILL.md +67 -0
  11. package/skills/prerender/SKILL.md +110 -68
  12. package/skills/route/SKILL.md +31 -0
  13. package/skills/router-setup/SKILL.md +87 -2
  14. package/skills/typesafety/SKILL.md +10 -0
  15. package/src/__internal.ts +1 -1
  16. package/src/browser/app-version.ts +14 -0
  17. package/src/browser/navigation-bridge.ts +16 -3
  18. package/src/browser/navigation-client.ts +64 -40
  19. package/src/browser/navigation-store.ts +43 -8
  20. package/src/browser/partial-update.ts +37 -4
  21. package/src/browser/prefetch/fetch.ts +8 -2
  22. package/src/browser/prefetch/queue.ts +61 -29
  23. package/src/browser/prefetch/resource-ready.ts +77 -0
  24. package/src/browser/react/Link.tsx +44 -8
  25. package/src/browser/react/NavigationProvider.tsx +13 -4
  26. package/src/browser/react/context.ts +7 -2
  27. package/src/browser/react/use-handle.ts +9 -58
  28. package/src/browser/react/use-router.ts +21 -8
  29. package/src/browser/rsc-router.tsx +26 -3
  30. package/src/browser/scroll-restoration.ts +10 -8
  31. package/src/browser/server-action-bridge.ts +8 -6
  32. package/src/browser/types.ts +27 -5
  33. package/src/build/generate-manifest.ts +6 -6
  34. package/src/build/generate-route-types.ts +3 -0
  35. package/src/build/route-types/include-resolution.ts +8 -1
  36. package/src/build/route-types/router-processing.ts +211 -72
  37. package/src/build/route-types/scan-filter.ts +8 -1
  38. package/src/cache/cache-runtime.ts +15 -11
  39. package/src/cache/cache-scope.ts +46 -5
  40. package/src/cache/taint.ts +55 -0
  41. package/src/client.tsx +2 -56
  42. package/src/context-var.ts +72 -2
  43. package/src/handle.ts +40 -0
  44. package/src/index.rsc.ts +3 -1
  45. package/src/index.ts +8 -0
  46. package/src/prerender/store.ts +5 -4
  47. package/src/prerender.ts +138 -77
  48. package/src/reverse.ts +22 -1
  49. package/src/route-definition/dsl-helpers.ts +42 -19
  50. package/src/route-definition/helpers-types.ts +10 -6
  51. package/src/route-definition/index.ts +3 -0
  52. package/src/route-definition/redirect.ts +9 -1
  53. package/src/route-definition/resolve-handler-use.ts +149 -0
  54. package/src/route-types.ts +11 -0
  55. package/src/router/content-negotiation.ts +100 -1
  56. package/src/router/handler-context.ts +79 -23
  57. package/src/router/intercept-resolution.ts +9 -4
  58. package/src/router/loader-resolution.ts +122 -10
  59. package/src/router/match-api.ts +124 -189
  60. package/src/router/match-middleware/background-revalidation.ts +12 -1
  61. package/src/router/match-middleware/cache-lookup.ts +64 -9
  62. package/src/router/match-middleware/cache-store.ts +21 -4
  63. package/src/router/match-middleware/segment-resolution.ts +53 -0
  64. package/src/router/match-result.ts +11 -5
  65. package/src/router/middleware-types.ts +6 -8
  66. package/src/router/middleware.ts +2 -5
  67. package/src/router/navigation-snapshot.ts +182 -0
  68. package/src/router/prerender-match.ts +110 -10
  69. package/src/router/preview-match.ts +30 -102
  70. package/src/router/request-classification.ts +310 -0
  71. package/src/router/route-snapshot.ts +245 -0
  72. package/src/router/router-context.ts +1 -0
  73. package/src/router/router-interfaces.ts +36 -4
  74. package/src/router/router-options.ts +37 -11
  75. package/src/router/segment-resolution/fresh.ts +88 -21
  76. package/src/router/segment-resolution/helpers.ts +29 -24
  77. package/src/router/segment-resolution/revalidation.ts +100 -29
  78. package/src/router/types.ts +1 -0
  79. package/src/router.ts +54 -5
  80. package/src/rsc/handler.ts +460 -368
  81. package/src/rsc/manifest-init.ts +5 -1
  82. package/src/rsc/progressive-enhancement.ts +4 -0
  83. package/src/rsc/rsc-rendering.ts +5 -0
  84. package/src/rsc/server-action.ts +2 -0
  85. package/src/rsc/ssr-setup.ts +2 -2
  86. package/src/rsc/types.ts +8 -1
  87. package/src/server/context.ts +50 -1
  88. package/src/server/loader-registry.ts +9 -8
  89. package/src/server/request-context.ts +145 -14
  90. package/src/ssr/index.tsx +3 -0
  91. package/src/static-handler.ts +18 -6
  92. package/src/types/cache-types.ts +4 -4
  93. package/src/types/handler-context.ts +137 -33
  94. package/src/types/loader-types.ts +36 -9
  95. package/src/types/route-entry.ts +1 -1
  96. package/src/urls/path-helper-types.ts +9 -2
  97. package/src/urls/path-helper.ts +47 -12
  98. package/src/urls/pattern-types.ts +12 -0
  99. package/src/urls/response-types.ts +16 -6
  100. package/src/use-loader.tsx +73 -4
  101. package/src/vite/discovery/bundle-postprocess.ts +30 -33
  102. package/src/vite/discovery/discover-routers.ts +5 -1
  103. package/src/vite/discovery/prerender-collection.ts +14 -1
  104. package/src/vite/discovery/state.ts +13 -4
  105. package/src/vite/index.ts +4 -0
  106. package/src/vite/plugin-types.ts +60 -5
  107. package/src/vite/plugins/performance-tracks.ts +88 -0
  108. package/src/vite/plugins/refresh-cmd.ts +88 -26
  109. package/src/vite/rango.ts +19 -2
  110. package/src/vite/router-discovery.ts +153 -34
  111. package/src/vite/utils/prerender-utils.ts +18 -0
  112. package/src/vite/utils/shared-utils.ts +3 -2
  113. package/dist/__internal.d.ts +0 -83
  114. package/dist/__internal.d.ts.map +0 -1
  115. package/dist/__internal.js +0 -19
  116. package/dist/__internal.js.map +0 -1
  117. package/dist/__mocks__/version.d.ts +0 -7
  118. package/dist/__mocks__/version.d.ts.map +0 -1
  119. package/dist/__mocks__/version.js +0 -7
  120. package/dist/__mocks__/version.js.map +0 -1
  121. package/dist/__tests__/client-href.test.d.ts +0 -2
  122. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  123. package/dist/__tests__/client-href.test.js +0 -74
  124. package/dist/__tests__/client-href.test.js.map +0 -1
  125. package/dist/__tests__/component-utils.test.d.ts +0 -2
  126. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  127. package/dist/__tests__/component-utils.test.js +0 -51
  128. package/dist/__tests__/component-utils.test.js.map +0 -1
  129. package/dist/__tests__/event-controller.test.d.ts +0 -2
  130. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  131. package/dist/__tests__/event-controller.test.js +0 -538
  132. package/dist/__tests__/event-controller.test.js.map +0 -1
  133. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  134. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  135. package/dist/__tests__/helpers/route-tree.js +0 -374
  136. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  137. package/dist/__tests__/match-result.test.d.ts +0 -2
  138. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  139. package/dist/__tests__/match-result.test.js +0 -154
  140. package/dist/__tests__/match-result.test.js.map +0 -1
  141. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  142. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  143. package/dist/__tests__/navigation-store.test.js +0 -440
  144. package/dist/__tests__/navigation-store.test.js.map +0 -1
  145. package/dist/__tests__/partial-update.test.d.ts +0 -2
  146. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  147. package/dist/__tests__/partial-update.test.js +0 -1009
  148. package/dist/__tests__/partial-update.test.js.map +0 -1
  149. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  150. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  151. package/dist/__tests__/reverse-types.test.js +0 -656
  152. package/dist/__tests__/reverse-types.test.js.map +0 -1
  153. package/dist/__tests__/route-definition.test.d.ts +0 -2
  154. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  155. package/dist/__tests__/route-definition.test.js +0 -55
  156. package/dist/__tests__/route-definition.test.js.map +0 -1
  157. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  158. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  159. package/dist/__tests__/router-helpers.test.js +0 -377
  160. package/dist/__tests__/router-helpers.test.js.map +0 -1
  161. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  162. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  163. package/dist/__tests__/router-integration-2.test.js +0 -426
  164. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  165. package/dist/__tests__/router-integration.test.d.ts +0 -2
  166. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  167. package/dist/__tests__/router-integration.test.js +0 -1051
  168. package/dist/__tests__/router-integration.test.js.map +0 -1
  169. package/dist/__tests__/search-params.test.d.ts +0 -5
  170. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  171. package/dist/__tests__/search-params.test.js +0 -306
  172. package/dist/__tests__/search-params.test.js.map +0 -1
  173. package/dist/__tests__/segment-system.test.d.ts +0 -2
  174. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  175. package/dist/__tests__/segment-system.test.js +0 -627
  176. package/dist/__tests__/segment-system.test.js.map +0 -1
  177. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  178. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  179. package/dist/__tests__/static-handler-types.test.js +0 -63
  180. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  181. package/dist/__tests__/urls.test.d.ts +0 -2
  182. package/dist/__tests__/urls.test.d.ts.map +0 -1
  183. package/dist/__tests__/urls.test.js +0 -421
  184. package/dist/__tests__/urls.test.js.map +0 -1
  185. package/dist/__tests__/use-mount.test.d.ts +0 -2
  186. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  187. package/dist/__tests__/use-mount.test.js +0 -35
  188. package/dist/__tests__/use-mount.test.js.map +0 -1
  189. package/dist/bin/rango.d.ts +0 -2
  190. package/dist/bin/rango.d.ts.map +0 -1
  191. package/dist/bin/rango.js.map +0 -1
  192. package/dist/browser/event-controller.d.ts +0 -191
  193. package/dist/browser/event-controller.d.ts.map +0 -1
  194. package/dist/browser/event-controller.js +0 -559
  195. package/dist/browser/event-controller.js.map +0 -1
  196. package/dist/browser/index.d.ts +0 -2
  197. package/dist/browser/index.d.ts.map +0 -1
  198. package/dist/browser/index.js +0 -14
  199. package/dist/browser/index.js.map +0 -1
  200. package/dist/browser/link-interceptor.d.ts +0 -38
  201. package/dist/browser/link-interceptor.d.ts.map +0 -1
  202. package/dist/browser/link-interceptor.js +0 -99
  203. package/dist/browser/link-interceptor.js.map +0 -1
  204. package/dist/browser/logging.d.ts +0 -10
  205. package/dist/browser/logging.d.ts.map +0 -1
  206. package/dist/browser/logging.js +0 -29
  207. package/dist/browser/logging.js.map +0 -1
  208. package/dist/browser/lru-cache.d.ts +0 -17
  209. package/dist/browser/lru-cache.d.ts.map +0 -1
  210. package/dist/browser/lru-cache.js +0 -50
  211. package/dist/browser/lru-cache.js.map +0 -1
  212. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  213. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  214. package/dist/browser/merge-segment-loaders.js +0 -102
  215. package/dist/browser/merge-segment-loaders.js.map +0 -1
  216. package/dist/browser/navigation-bridge.d.ts +0 -102
  217. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  218. package/dist/browser/navigation-bridge.js +0 -708
  219. package/dist/browser/navigation-bridge.js.map +0 -1
  220. package/dist/browser/navigation-client.d.ts +0 -25
  221. package/dist/browser/navigation-client.d.ts.map +0 -1
  222. package/dist/browser/navigation-client.js +0 -157
  223. package/dist/browser/navigation-client.js.map +0 -1
  224. package/dist/browser/navigation-store.d.ts +0 -101
  225. package/dist/browser/navigation-store.d.ts.map +0 -1
  226. package/dist/browser/navigation-store.js +0 -625
  227. package/dist/browser/navigation-store.js.map +0 -1
  228. package/dist/browser/partial-update.d.ts +0 -75
  229. package/dist/browser/partial-update.d.ts.map +0 -1
  230. package/dist/browser/partial-update.js +0 -426
  231. package/dist/browser/partial-update.js.map +0 -1
  232. package/dist/browser/react/Link.d.ts +0 -86
  233. package/dist/browser/react/Link.d.ts.map +0 -1
  234. package/dist/browser/react/Link.js +0 -128
  235. package/dist/browser/react/Link.js.map +0 -1
  236. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  237. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  238. package/dist/browser/react/NavigationProvider.js +0 -216
  239. package/dist/browser/react/NavigationProvider.js.map +0 -1
  240. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  241. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  242. package/dist/browser/react/ScrollRestoration.js +0 -57
  243. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  244. package/dist/browser/react/context.d.ts +0 -46
  245. package/dist/browser/react/context.d.ts.map +0 -1
  246. package/dist/browser/react/context.js +0 -10
  247. package/dist/browser/react/context.js.map +0 -1
  248. package/dist/browser/react/index.d.ts +0 -11
  249. package/dist/browser/react/index.d.ts.map +0 -1
  250. package/dist/browser/react/index.js +0 -22
  251. package/dist/browser/react/index.js.map +0 -1
  252. package/dist/browser/react/location-state-shared.d.ts +0 -63
  253. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  254. package/dist/browser/react/location-state-shared.js +0 -81
  255. package/dist/browser/react/location-state-shared.js.map +0 -1
  256. package/dist/browser/react/location-state.d.ts +0 -23
  257. package/dist/browser/react/location-state.d.ts.map +0 -1
  258. package/dist/browser/react/location-state.js +0 -29
  259. package/dist/browser/react/location-state.js.map +0 -1
  260. package/dist/browser/react/mount-context.d.ts +0 -24
  261. package/dist/browser/react/mount-context.d.ts.map +0 -1
  262. package/dist/browser/react/mount-context.js +0 -24
  263. package/dist/browser/react/mount-context.js.map +0 -1
  264. package/dist/browser/react/use-action.d.ts +0 -64
  265. package/dist/browser/react/use-action.d.ts.map +0 -1
  266. package/dist/browser/react/use-action.js +0 -134
  267. package/dist/browser/react/use-action.js.map +0 -1
  268. package/dist/browser/react/use-client-cache.d.ts +0 -41
  269. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  270. package/dist/browser/react/use-client-cache.js +0 -39
  271. package/dist/browser/react/use-client-cache.js.map +0 -1
  272. package/dist/browser/react/use-handle.d.ts +0 -31
  273. package/dist/browser/react/use-handle.d.ts.map +0 -1
  274. package/dist/browser/react/use-handle.js +0 -144
  275. package/dist/browser/react/use-handle.js.map +0 -1
  276. package/dist/browser/react/use-href.d.ts +0 -33
  277. package/dist/browser/react/use-href.d.ts.map +0 -1
  278. package/dist/browser/react/use-href.js +0 -39
  279. package/dist/browser/react/use-href.js.map +0 -1
  280. package/dist/browser/react/use-link-status.d.ts +0 -37
  281. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  282. package/dist/browser/react/use-link-status.js +0 -99
  283. package/dist/browser/react/use-link-status.js.map +0 -1
  284. package/dist/browser/react/use-mount.d.ts +0 -25
  285. package/dist/browser/react/use-mount.d.ts.map +0 -1
  286. package/dist/browser/react/use-mount.js +0 -30
  287. package/dist/browser/react/use-mount.js.map +0 -1
  288. package/dist/browser/react/use-navigation.d.ts +0 -27
  289. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  290. package/dist/browser/react/use-navigation.js +0 -87
  291. package/dist/browser/react/use-navigation.js.map +0 -1
  292. package/dist/browser/react/use-segments.d.ts +0 -38
  293. package/dist/browser/react/use-segments.d.ts.map +0 -1
  294. package/dist/browser/react/use-segments.js +0 -130
  295. package/dist/browser/react/use-segments.js.map +0 -1
  296. package/dist/browser/request-controller.d.ts +0 -26
  297. package/dist/browser/request-controller.d.ts.map +0 -1
  298. package/dist/browser/request-controller.js +0 -147
  299. package/dist/browser/request-controller.js.map +0 -1
  300. package/dist/browser/rsc-router.d.ts +0 -129
  301. package/dist/browser/rsc-router.d.ts.map +0 -1
  302. package/dist/browser/rsc-router.js +0 -195
  303. package/dist/browser/rsc-router.js.map +0 -1
  304. package/dist/browser/scroll-restoration.d.ts +0 -93
  305. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  306. package/dist/browser/scroll-restoration.js +0 -321
  307. package/dist/browser/scroll-restoration.js.map +0 -1
  308. package/dist/browser/segment-structure-assert.d.ts +0 -17
  309. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  310. package/dist/browser/segment-structure-assert.js +0 -59
  311. package/dist/browser/segment-structure-assert.js.map +0 -1
  312. package/dist/browser/server-action-bridge.d.ts +0 -26
  313. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  314. package/dist/browser/server-action-bridge.js +0 -668
  315. package/dist/browser/server-action-bridge.js.map +0 -1
  316. package/dist/browser/shallow.d.ts +0 -12
  317. package/dist/browser/shallow.d.ts.map +0 -1
  318. package/dist/browser/shallow.js +0 -34
  319. package/dist/browser/shallow.js.map +0 -1
  320. package/dist/browser/types.d.ts +0 -369
  321. package/dist/browser/types.d.ts.map +0 -1
  322. package/dist/browser/types.js +0 -2
  323. package/dist/browser/types.js.map +0 -1
  324. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  325. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  326. package/dist/build/__tests__/generate-cli.test.js +0 -237
  327. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  328. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  329. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  330. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  331. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  332. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  333. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  334. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  335. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  336. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  337. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  338. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  339. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  340. package/dist/build/generate-manifest.d.ts +0 -81
  341. package/dist/build/generate-manifest.d.ts.map +0 -1
  342. package/dist/build/generate-manifest.js +0 -276
  343. package/dist/build/generate-manifest.js.map +0 -1
  344. package/dist/build/generate-route-types.d.ts +0 -115
  345. package/dist/build/generate-route-types.d.ts.map +0 -1
  346. package/dist/build/generate-route-types.js +0 -740
  347. package/dist/build/generate-route-types.js.map +0 -1
  348. package/dist/build/index.d.ts +0 -21
  349. package/dist/build/index.d.ts.map +0 -1
  350. package/dist/build/index.js +0 -21
  351. package/dist/build/index.js.map +0 -1
  352. package/dist/build/route-trie.d.ts +0 -71
  353. package/dist/build/route-trie.d.ts.map +0 -1
  354. package/dist/build/route-trie.js +0 -175
  355. package/dist/build/route-trie.js.map +0 -1
  356. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  357. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  358. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  359. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  360. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  361. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  362. package/dist/cache/__tests__/document-cache.test.js +0 -345
  363. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  364. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  365. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  366. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  367. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  368. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  369. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  370. package/dist/cache/__tests__/memory-store.test.js +0 -367
  371. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  372. package/dist/cache/cache-scope.d.ts +0 -102
  373. package/dist/cache/cache-scope.d.ts.map +0 -1
  374. package/dist/cache/cache-scope.js +0 -440
  375. package/dist/cache/cache-scope.js.map +0 -1
  376. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  377. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  378. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  379. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  380. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  381. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  382. package/dist/cache/cf/cf-cache-store.js +0 -242
  383. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  384. package/dist/cache/cf/index.d.ts +0 -14
  385. package/dist/cache/cf/index.d.ts.map +0 -1
  386. package/dist/cache/cf/index.js +0 -17
  387. package/dist/cache/cf/index.js.map +0 -1
  388. package/dist/cache/document-cache.d.ts +0 -64
  389. package/dist/cache/document-cache.d.ts.map +0 -1
  390. package/dist/cache/document-cache.js +0 -228
  391. package/dist/cache/document-cache.js.map +0 -1
  392. package/dist/cache/index.d.ts +0 -19
  393. package/dist/cache/index.d.ts.map +0 -1
  394. package/dist/cache/index.js +0 -21
  395. package/dist/cache/index.js.map +0 -1
  396. package/dist/cache/memory-segment-store.d.ts +0 -110
  397. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  398. package/dist/cache/memory-segment-store.js +0 -117
  399. package/dist/cache/memory-segment-store.js.map +0 -1
  400. package/dist/cache/memory-store.d.ts +0 -41
  401. package/dist/cache/memory-store.d.ts.map +0 -1
  402. package/dist/cache/memory-store.js +0 -191
  403. package/dist/cache/memory-store.js.map +0 -1
  404. package/dist/cache/types.d.ts +0 -317
  405. package/dist/cache/types.d.ts.map +0 -1
  406. package/dist/cache/types.js +0 -12
  407. package/dist/cache/types.js.map +0 -1
  408. package/dist/client.d.ts +0 -248
  409. package/dist/client.d.ts.map +0 -1
  410. package/dist/client.js +0 -367
  411. package/dist/client.js.map +0 -1
  412. package/dist/client.rsc.d.ts +0 -26
  413. package/dist/client.rsc.d.ts.map +0 -1
  414. package/dist/client.rsc.js +0 -46
  415. package/dist/client.rsc.js.map +0 -1
  416. package/dist/component-utils.d.ts +0 -36
  417. package/dist/component-utils.d.ts.map +0 -1
  418. package/dist/component-utils.js +0 -61
  419. package/dist/component-utils.js.map +0 -1
  420. package/dist/components/DefaultDocument.d.ts +0 -13
  421. package/dist/components/DefaultDocument.d.ts.map +0 -1
  422. package/dist/components/DefaultDocument.js +0 -15
  423. package/dist/components/DefaultDocument.js.map +0 -1
  424. package/dist/debug.d.ts +0 -58
  425. package/dist/debug.d.ts.map +0 -1
  426. package/dist/debug.js +0 -157
  427. package/dist/debug.js.map +0 -1
  428. package/dist/default-error-boundary.d.ts +0 -11
  429. package/dist/default-error-boundary.d.ts.map +0 -1
  430. package/dist/default-error-boundary.js +0 -45
  431. package/dist/default-error-boundary.js.map +0 -1
  432. package/dist/deps/browser.d.ts +0 -2
  433. package/dist/deps/browser.d.ts.map +0 -1
  434. package/dist/deps/browser.js +0 -3
  435. package/dist/deps/browser.js.map +0 -1
  436. package/dist/deps/html-stream-client.d.ts +0 -2
  437. package/dist/deps/html-stream-client.d.ts.map +0 -1
  438. package/dist/deps/html-stream-client.js +0 -3
  439. package/dist/deps/html-stream-client.js.map +0 -1
  440. package/dist/deps/html-stream-server.d.ts +0 -2
  441. package/dist/deps/html-stream-server.d.ts.map +0 -1
  442. package/dist/deps/html-stream-server.js +0 -3
  443. package/dist/deps/html-stream-server.js.map +0 -1
  444. package/dist/deps/rsc.d.ts +0 -2
  445. package/dist/deps/rsc.d.ts.map +0 -1
  446. package/dist/deps/rsc.js +0 -4
  447. package/dist/deps/rsc.js.map +0 -1
  448. package/dist/deps/ssr.d.ts +0 -2
  449. package/dist/deps/ssr.d.ts.map +0 -1
  450. package/dist/deps/ssr.js +0 -3
  451. package/dist/deps/ssr.js.map +0 -1
  452. package/dist/errors.d.ts +0 -174
  453. package/dist/errors.d.ts.map +0 -1
  454. package/dist/errors.js +0 -241
  455. package/dist/errors.js.map +0 -1
  456. package/dist/handle.d.ts +0 -78
  457. package/dist/handle.d.ts.map +0 -1
  458. package/dist/handle.js +0 -82
  459. package/dist/handle.js.map +0 -1
  460. package/dist/handles/MetaTags.d.ts +0 -14
  461. package/dist/handles/MetaTags.d.ts.map +0 -1
  462. package/dist/handles/MetaTags.js +0 -136
  463. package/dist/handles/MetaTags.js.map +0 -1
  464. package/dist/handles/index.d.ts +0 -6
  465. package/dist/handles/index.d.ts.map +0 -1
  466. package/dist/handles/index.js +0 -6
  467. package/dist/handles/index.js.map +0 -1
  468. package/dist/handles/meta.d.ts +0 -39
  469. package/dist/handles/meta.d.ts.map +0 -1
  470. package/dist/handles/meta.js +0 -202
  471. package/dist/handles/meta.js.map +0 -1
  472. package/dist/host/__tests__/errors.test.d.ts +0 -2
  473. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  474. package/dist/host/__tests__/errors.test.js +0 -76
  475. package/dist/host/__tests__/errors.test.js.map +0 -1
  476. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  477. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  478. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  479. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  480. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  481. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  482. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  483. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  484. package/dist/host/__tests__/router.test.d.ts +0 -2
  485. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  486. package/dist/host/__tests__/router.test.js +0 -241
  487. package/dist/host/__tests__/router.test.js.map +0 -1
  488. package/dist/host/__tests__/testing.test.d.ts +0 -2
  489. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  490. package/dist/host/__tests__/testing.test.js +0 -64
  491. package/dist/host/__tests__/testing.test.js.map +0 -1
  492. package/dist/host/__tests__/utils.test.d.ts +0 -2
  493. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  494. package/dist/host/__tests__/utils.test.js +0 -29
  495. package/dist/host/__tests__/utils.test.js.map +0 -1
  496. package/dist/host/cookie-handler.d.ts +0 -34
  497. package/dist/host/cookie-handler.d.ts.map +0 -1
  498. package/dist/host/cookie-handler.js +0 -124
  499. package/dist/host/cookie-handler.js.map +0 -1
  500. package/dist/host/errors.d.ts +0 -56
  501. package/dist/host/errors.d.ts.map +0 -1
  502. package/dist/host/errors.js +0 -79
  503. package/dist/host/errors.js.map +0 -1
  504. package/dist/host/index.d.ts +0 -29
  505. package/dist/host/index.d.ts.map +0 -1
  506. package/dist/host/index.js +0 -32
  507. package/dist/host/index.js.map +0 -1
  508. package/dist/host/pattern-matcher.d.ts +0 -36
  509. package/dist/host/pattern-matcher.d.ts.map +0 -1
  510. package/dist/host/pattern-matcher.js +0 -172
  511. package/dist/host/pattern-matcher.js.map +0 -1
  512. package/dist/host/router.d.ts +0 -26
  513. package/dist/host/router.d.ts.map +0 -1
  514. package/dist/host/router.js +0 -218
  515. package/dist/host/router.js.map +0 -1
  516. package/dist/host/testing.d.ts +0 -36
  517. package/dist/host/testing.d.ts.map +0 -1
  518. package/dist/host/testing.js +0 -55
  519. package/dist/host/testing.js.map +0 -1
  520. package/dist/host/types.d.ts +0 -115
  521. package/dist/host/types.d.ts.map +0 -1
  522. package/dist/host/types.js +0 -7
  523. package/dist/host/types.js.map +0 -1
  524. package/dist/host/utils.d.ts +0 -21
  525. package/dist/host/utils.d.ts.map +0 -1
  526. package/dist/host/utils.js +0 -23
  527. package/dist/host/utils.js.map +0 -1
  528. package/dist/href-client.d.ts +0 -131
  529. package/dist/href-client.d.ts.map +0 -1
  530. package/dist/href-client.js +0 -64
  531. package/dist/href-client.js.map +0 -1
  532. package/dist/href-context.d.ts +0 -29
  533. package/dist/href-context.d.ts.map +0 -1
  534. package/dist/href-context.js +0 -21
  535. package/dist/href-context.js.map +0 -1
  536. package/dist/index.d.ts +0 -73
  537. package/dist/index.d.ts.map +0 -1
  538. package/dist/index.js +0 -91
  539. package/dist/index.js.map +0 -1
  540. package/dist/index.rsc.d.ts +0 -32
  541. package/dist/index.rsc.d.ts.map +0 -1
  542. package/dist/index.rsc.js +0 -40
  543. package/dist/index.rsc.js.map +0 -1
  544. package/dist/internal-debug.d.ts +0 -2
  545. package/dist/internal-debug.d.ts.map +0 -1
  546. package/dist/internal-debug.js +0 -5
  547. package/dist/internal-debug.js.map +0 -1
  548. package/dist/loader.d.ts +0 -14
  549. package/dist/loader.d.ts.map +0 -1
  550. package/dist/loader.js +0 -20
  551. package/dist/loader.js.map +0 -1
  552. package/dist/loader.rsc.d.ts +0 -19
  553. package/dist/loader.rsc.d.ts.map +0 -1
  554. package/dist/loader.rsc.js +0 -99
  555. package/dist/loader.rsc.js.map +0 -1
  556. package/dist/network-error-thrower.d.ts +0 -17
  557. package/dist/network-error-thrower.d.ts.map +0 -1
  558. package/dist/network-error-thrower.js +0 -14
  559. package/dist/network-error-thrower.js.map +0 -1
  560. package/dist/outlet-context.d.ts +0 -13
  561. package/dist/outlet-context.d.ts.map +0 -1
  562. package/dist/outlet-context.js +0 -3
  563. package/dist/outlet-context.js.map +0 -1
  564. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  565. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  566. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  567. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  568. package/dist/prerender/param-hash.d.ts +0 -16
  569. package/dist/prerender/param-hash.d.ts.map +0 -1
  570. package/dist/prerender/param-hash.js +0 -36
  571. package/dist/prerender/param-hash.js.map +0 -1
  572. package/dist/prerender/store.d.ts +0 -38
  573. package/dist/prerender/store.d.ts.map +0 -1
  574. package/dist/prerender/store.js +0 -61
  575. package/dist/prerender/store.js.map +0 -1
  576. package/dist/prerender.d.ts +0 -66
  577. package/dist/prerender.d.ts.map +0 -1
  578. package/dist/prerender.js +0 -57
  579. package/dist/prerender.js.map +0 -1
  580. package/dist/reverse.d.ts +0 -196
  581. package/dist/reverse.d.ts.map +0 -1
  582. package/dist/reverse.js +0 -78
  583. package/dist/reverse.js.map +0 -1
  584. package/dist/root-error-boundary.d.ts +0 -33
  585. package/dist/root-error-boundary.d.ts.map +0 -1
  586. package/dist/root-error-boundary.js +0 -165
  587. package/dist/root-error-boundary.js.map +0 -1
  588. package/dist/route-content-wrapper.d.ts +0 -46
  589. package/dist/route-content-wrapper.d.ts.map +0 -1
  590. package/dist/route-content-wrapper.js +0 -77
  591. package/dist/route-content-wrapper.js.map +0 -1
  592. package/dist/route-definition.d.ts +0 -421
  593. package/dist/route-definition.d.ts.map +0 -1
  594. package/dist/route-definition.js +0 -868
  595. package/dist/route-definition.js.map +0 -1
  596. package/dist/route-map-builder.d.ts +0 -155
  597. package/dist/route-map-builder.d.ts.map +0 -1
  598. package/dist/route-map-builder.js +0 -237
  599. package/dist/route-map-builder.js.map +0 -1
  600. package/dist/route-types.d.ts +0 -165
  601. package/dist/route-types.d.ts.map +0 -1
  602. package/dist/route-types.js +0 -7
  603. package/dist/route-types.js.map +0 -1
  604. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  605. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  606. package/dist/router/__tests__/handler-context.test.js +0 -65
  607. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  608. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  609. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  610. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  611. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  612. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  613. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  614. package/dist/router/__tests__/match-context.test.js +0 -92
  615. package/dist/router/__tests__/match-context.test.js.map +0 -1
  616. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  617. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  618. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  619. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  620. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  621. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  622. package/dist/router/__tests__/match-result.test.js +0 -457
  623. package/dist/router/__tests__/match-result.test.js.map +0 -1
  624. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  625. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  626. package/dist/router/__tests__/on-error.test.js +0 -678
  627. package/dist/router/__tests__/on-error.test.js.map +0 -1
  628. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  629. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  630. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  631. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  632. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  633. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  634. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  635. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  636. package/dist/router/error-handling.d.ts +0 -77
  637. package/dist/router/error-handling.d.ts.map +0 -1
  638. package/dist/router/error-handling.js +0 -202
  639. package/dist/router/error-handling.js.map +0 -1
  640. package/dist/router/handler-context.d.ts +0 -20
  641. package/dist/router/handler-context.d.ts.map +0 -1
  642. package/dist/router/handler-context.js +0 -198
  643. package/dist/router/handler-context.js.map +0 -1
  644. package/dist/router/intercept-resolution.d.ts +0 -66
  645. package/dist/router/intercept-resolution.d.ts.map +0 -1
  646. package/dist/router/intercept-resolution.js +0 -246
  647. package/dist/router/intercept-resolution.js.map +0 -1
  648. package/dist/router/loader-resolution.d.ts +0 -64
  649. package/dist/router/loader-resolution.d.ts.map +0 -1
  650. package/dist/router/loader-resolution.js +0 -284
  651. package/dist/router/loader-resolution.js.map +0 -1
  652. package/dist/router/logging.d.ts +0 -15
  653. package/dist/router/logging.d.ts.map +0 -1
  654. package/dist/router/logging.js +0 -99
  655. package/dist/router/logging.js.map +0 -1
  656. package/dist/router/manifest.d.ts +0 -22
  657. package/dist/router/manifest.d.ts.map +0 -1
  658. package/dist/router/manifest.js +0 -181
  659. package/dist/router/manifest.js.map +0 -1
  660. package/dist/router/match-api.d.ts +0 -35
  661. package/dist/router/match-api.d.ts.map +0 -1
  662. package/dist/router/match-api.js +0 -406
  663. package/dist/router/match-api.js.map +0 -1
  664. package/dist/router/match-context.d.ts +0 -206
  665. package/dist/router/match-context.d.ts.map +0 -1
  666. package/dist/router/match-context.js +0 -17
  667. package/dist/router/match-context.js.map +0 -1
  668. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  669. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  670. package/dist/router/match-middleware/background-revalidation.js +0 -75
  671. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  672. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  673. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  674. package/dist/router/match-middleware/cache-lookup.js +0 -257
  675. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  676. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  677. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  678. package/dist/router/match-middleware/cache-store.js +0 -108
  679. package/dist/router/match-middleware/cache-store.js.map +0 -1
  680. package/dist/router/match-middleware/index.d.ts +0 -81
  681. package/dist/router/match-middleware/index.d.ts.map +0 -1
  682. package/dist/router/match-middleware/index.js +0 -80
  683. package/dist/router/match-middleware/index.js.map +0 -1
  684. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  685. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  686. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  687. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  688. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  689. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  690. package/dist/router/match-middleware/segment-resolution.js +0 -53
  691. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  692. package/dist/router/match-pipelines.d.ts +0 -147
  693. package/dist/router/match-pipelines.d.ts.map +0 -1
  694. package/dist/router/match-pipelines.js +0 -82
  695. package/dist/router/match-pipelines.js.map +0 -1
  696. package/dist/router/match-result.d.ts +0 -126
  697. package/dist/router/match-result.d.ts.map +0 -1
  698. package/dist/router/match-result.js +0 -93
  699. package/dist/router/match-result.js.map +0 -1
  700. package/dist/router/metrics.d.ts +0 -20
  701. package/dist/router/metrics.d.ts.map +0 -1
  702. package/dist/router/metrics.js +0 -47
  703. package/dist/router/metrics.js.map +0 -1
  704. package/dist/router/middleware.d.ts +0 -249
  705. package/dist/router/middleware.d.ts.map +0 -1
  706. package/dist/router/middleware.js +0 -434
  707. package/dist/router/middleware.js.map +0 -1
  708. package/dist/router/middleware.test.d.ts +0 -2
  709. package/dist/router/middleware.test.d.ts.map +0 -1
  710. package/dist/router/middleware.test.js +0 -816
  711. package/dist/router/middleware.test.js.map +0 -1
  712. package/dist/router/pattern-matching.d.ts +0 -149
  713. package/dist/router/pattern-matching.d.ts.map +0 -1
  714. package/dist/router/pattern-matching.js +0 -349
  715. package/dist/router/pattern-matching.js.map +0 -1
  716. package/dist/router/revalidation.d.ts +0 -44
  717. package/dist/router/revalidation.d.ts.map +0 -1
  718. package/dist/router/revalidation.js +0 -147
  719. package/dist/router/revalidation.js.map +0 -1
  720. package/dist/router/router-context.d.ts +0 -135
  721. package/dist/router/router-context.d.ts.map +0 -1
  722. package/dist/router/router-context.js +0 -36
  723. package/dist/router/router-context.js.map +0 -1
  724. package/dist/router/segment-resolution.d.ts +0 -127
  725. package/dist/router/segment-resolution.d.ts.map +0 -1
  726. package/dist/router/segment-resolution.js +0 -919
  727. package/dist/router/segment-resolution.js.map +0 -1
  728. package/dist/router/trie-matching.d.ts +0 -40
  729. package/dist/router/trie-matching.d.ts.map +0 -1
  730. package/dist/router/trie-matching.js +0 -127
  731. package/dist/router/trie-matching.js.map +0 -1
  732. package/dist/router/types.d.ts +0 -136
  733. package/dist/router/types.d.ts.map +0 -1
  734. package/dist/router/types.js +0 -7
  735. package/dist/router/types.js.map +0 -1
  736. package/dist/router.d.ts +0 -753
  737. package/dist/router.d.ts.map +0 -1
  738. package/dist/router.gen.d.ts +0 -6
  739. package/dist/router.gen.d.ts.map +0 -1
  740. package/dist/router.gen.js +0 -6
  741. package/dist/router.gen.js.map +0 -1
  742. package/dist/router.js +0 -1304
  743. package/dist/router.js.map +0 -1
  744. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  745. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  746. package/dist/rsc/__tests__/helpers.test.js +0 -140
  747. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  748. package/dist/rsc/handler.d.ts +0 -45
  749. package/dist/rsc/handler.d.ts.map +0 -1
  750. package/dist/rsc/handler.js +0 -1172
  751. package/dist/rsc/handler.js.map +0 -1
  752. package/dist/rsc/helpers.d.ts +0 -16
  753. package/dist/rsc/helpers.d.ts.map +0 -1
  754. package/dist/rsc/helpers.js +0 -55
  755. package/dist/rsc/helpers.js.map +0 -1
  756. package/dist/rsc/index.d.ts +0 -22
  757. package/dist/rsc/index.d.ts.map +0 -1
  758. package/dist/rsc/index.js +0 -23
  759. package/dist/rsc/index.js.map +0 -1
  760. package/dist/rsc/nonce.d.ts +0 -9
  761. package/dist/rsc/nonce.d.ts.map +0 -1
  762. package/dist/rsc/nonce.js +0 -18
  763. package/dist/rsc/nonce.js.map +0 -1
  764. package/dist/rsc/types.d.ts +0 -206
  765. package/dist/rsc/types.d.ts.map +0 -1
  766. package/dist/rsc/types.js +0 -8
  767. package/dist/rsc/types.js.map +0 -1
  768. package/dist/search-params.d.ts +0 -103
  769. package/dist/search-params.d.ts.map +0 -1
  770. package/dist/search-params.js +0 -74
  771. package/dist/search-params.js.map +0 -1
  772. package/dist/segment-system.d.ts +0 -75
  773. package/dist/segment-system.d.ts.map +0 -1
  774. package/dist/segment-system.js +0 -336
  775. package/dist/segment-system.js.map +0 -1
  776. package/dist/server/context.d.ts +0 -245
  777. package/dist/server/context.d.ts.map +0 -1
  778. package/dist/server/context.js +0 -197
  779. package/dist/server/context.js.map +0 -1
  780. package/dist/server/fetchable-loader-store.d.ts +0 -18
  781. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  782. package/dist/server/fetchable-loader-store.js +0 -18
  783. package/dist/server/fetchable-loader-store.js.map +0 -1
  784. package/dist/server/handle-store.d.ts +0 -85
  785. package/dist/server/handle-store.d.ts.map +0 -1
  786. package/dist/server/handle-store.js +0 -142
  787. package/dist/server/handle-store.js.map +0 -1
  788. package/dist/server/loader-registry.d.ts +0 -55
  789. package/dist/server/loader-registry.d.ts.map +0 -1
  790. package/dist/server/loader-registry.js +0 -132
  791. package/dist/server/loader-registry.js.map +0 -1
  792. package/dist/server/request-context.d.ts +0 -226
  793. package/dist/server/request-context.d.ts.map +0 -1
  794. package/dist/server/request-context.js +0 -290
  795. package/dist/server/request-context.js.map +0 -1
  796. package/dist/server/root-layout.d.ts +0 -4
  797. package/dist/server/root-layout.d.ts.map +0 -1
  798. package/dist/server/root-layout.js +0 -5
  799. package/dist/server/root-layout.js.map +0 -1
  800. package/dist/server.d.ts +0 -15
  801. package/dist/server.d.ts.map +0 -1
  802. package/dist/server.js +0 -20
  803. package/dist/server.js.map +0 -1
  804. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  805. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  806. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  807. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  808. package/dist/ssr/index.d.ts +0 -98
  809. package/dist/ssr/index.d.ts.map +0 -1
  810. package/dist/ssr/index.js +0 -158
  811. package/dist/ssr/index.js.map +0 -1
  812. package/dist/static-handler.d.ts +0 -50
  813. package/dist/static-handler.d.ts.map +0 -1
  814. package/dist/static-handler.gen.d.ts +0 -5
  815. package/dist/static-handler.gen.d.ts.map +0 -1
  816. package/dist/static-handler.gen.js +0 -5
  817. package/dist/static-handler.gen.js.map +0 -1
  818. package/dist/static-handler.js +0 -29
  819. package/dist/static-handler.js.map +0 -1
  820. package/dist/theme/ThemeProvider.d.ts +0 -20
  821. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  822. package/dist/theme/ThemeProvider.js +0 -240
  823. package/dist/theme/ThemeProvider.js.map +0 -1
  824. package/dist/theme/ThemeScript.d.ts +0 -48
  825. package/dist/theme/ThemeScript.d.ts.map +0 -1
  826. package/dist/theme/ThemeScript.js +0 -13
  827. package/dist/theme/ThemeScript.js.map +0 -1
  828. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  829. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  830. package/dist/theme/__tests__/theme.test.js +0 -103
  831. package/dist/theme/__tests__/theme.test.js.map +0 -1
  832. package/dist/theme/constants.d.ts +0 -29
  833. package/dist/theme/constants.d.ts.map +0 -1
  834. package/dist/theme/constants.js +0 -48
  835. package/dist/theme/constants.js.map +0 -1
  836. package/dist/theme/index.d.ts +0 -31
  837. package/dist/theme/index.d.ts.map +0 -1
  838. package/dist/theme/index.js +0 -36
  839. package/dist/theme/index.js.map +0 -1
  840. package/dist/theme/theme-context.d.ts +0 -40
  841. package/dist/theme/theme-context.d.ts.map +0 -1
  842. package/dist/theme/theme-context.js +0 -60
  843. package/dist/theme/theme-context.js.map +0 -1
  844. package/dist/theme/theme-script.d.ts +0 -27
  845. package/dist/theme/theme-script.d.ts.map +0 -1
  846. package/dist/theme/theme-script.js +0 -147
  847. package/dist/theme/theme-script.js.map +0 -1
  848. package/dist/theme/types.d.ts +0 -163
  849. package/dist/theme/types.d.ts.map +0 -1
  850. package/dist/theme/types.js +0 -11
  851. package/dist/theme/types.js.map +0 -1
  852. package/dist/theme/use-theme.d.ts +0 -12
  853. package/dist/theme/use-theme.d.ts.map +0 -1
  854. package/dist/theme/use-theme.js +0 -40
  855. package/dist/theme/use-theme.js.map +0 -1
  856. package/dist/types.d.ts +0 -1479
  857. package/dist/types.d.ts.map +0 -1
  858. package/dist/types.js +0 -10
  859. package/dist/types.js.map +0 -1
  860. package/dist/urls.d.ts +0 -441
  861. package/dist/urls.d.ts.map +0 -1
  862. package/dist/urls.gen.d.ts +0 -8
  863. package/dist/urls.gen.d.ts.map +0 -1
  864. package/dist/urls.gen.js +0 -8
  865. package/dist/urls.gen.js.map +0 -1
  866. package/dist/urls.js +0 -443
  867. package/dist/urls.js.map +0 -1
  868. package/dist/use-loader.d.ts +0 -127
  869. package/dist/use-loader.d.ts.map +0 -1
  870. package/dist/use-loader.js +0 -237
  871. package/dist/use-loader.js.map +0 -1
  872. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  873. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  874. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  875. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  876. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  877. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  878. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  879. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  880. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  881. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  882. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  883. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  884. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  885. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  886. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  887. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  888. package/dist/vite/ast-handler-extract.d.ts +0 -49
  889. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  890. package/dist/vite/ast-handler-extract.js +0 -249
  891. package/dist/vite/ast-handler-extract.js.map +0 -1
  892. package/dist/vite/expose-action-id.d.ts +0 -19
  893. package/dist/vite/expose-action-id.d.ts.map +0 -1
  894. package/dist/vite/expose-action-id.js +0 -250
  895. package/dist/vite/expose-action-id.js.map +0 -1
  896. package/dist/vite/expose-id-utils.d.ts +0 -69
  897. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  898. package/dist/vite/expose-id-utils.js +0 -289
  899. package/dist/vite/expose-id-utils.js.map +0 -1
  900. package/dist/vite/expose-internal-ids.d.ts +0 -22
  901. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  902. package/dist/vite/expose-internal-ids.js +0 -886
  903. package/dist/vite/expose-internal-ids.js.map +0 -1
  904. package/dist/vite/index.d.ts +0 -149
  905. package/dist/vite/index.d.ts.map +0 -1
  906. package/dist/vite/index.js.map +0 -1
  907. package/dist/vite/index.named-routes.gen.ts +0 -103
  908. package/dist/vite/package-resolution.d.ts +0 -43
  909. package/dist/vite/package-resolution.d.ts.map +0 -1
  910. package/dist/vite/package-resolution.js +0 -112
  911. package/dist/vite/package-resolution.js.map +0 -1
  912. package/dist/vite/virtual-entries.d.ts +0 -25
  913. package/dist/vite/virtual-entries.d.ts.map +0 -1
  914. package/dist/vite/virtual-entries.js +0 -110
  915. package/dist/vite/virtual-entries.js.map +0 -1
@@ -357,12 +357,17 @@ function buildRouteMapFromBlock(
357
357
  /**
358
358
  * Build route map and search schemas together.
359
359
  * Internal helper used by the include resolution path.
360
+ *
361
+ * @param inlineBlock - Optional pre-extracted code block (e.g. from an inline
362
+ * builder function). When provided, variableName is ignored and the block
363
+ * is parsed directly for path()/include() calls.
360
364
  */
361
365
  export function buildCombinedRouteMapWithSearch(
362
366
  filePath: string,
363
367
  variableName?: string,
364
368
  visited?: Set<string>,
365
369
  diagnosticsOut?: UnresolvableInclude[],
370
+ inlineBlock?: string,
366
371
  ): {
367
372
  routes: Record<string, string>;
368
373
  searchSchemas: Record<string, Record<string, string>>;
@@ -384,7 +389,9 @@ export function buildCombinedRouteMapWithSearch(
384
389
  }
385
390
 
386
391
  let block: string;
387
- if (variableName) {
392
+ if (inlineBlock) {
393
+ block = inlineBlock;
394
+ } else if (variableName) {
388
395
  const extracted = extractUrlsBlockForVariable(source, variableName);
389
396
  if (!extracted) return { routes: {}, searchSchemas: {} };
390
397
  block = extracted;
@@ -157,13 +157,26 @@ export function formatNestedRouterConflictError(
157
157
  // ---------------------------------------------------------------------------
158
158
 
159
159
  /**
160
- * Extract the url patterns variable from a router file using AST.
161
- * Detects two patterns:
160
+ * Result of extracting URL patterns from a router file.
161
+ * - "variable": a named variable reference (e.g., `.routes(patterns)` or `urls: patterns`)
162
+ * - "inline": an inline builder function (e.g., `.routes(({ path }) => [...])` or `urls: ({ path }) => [...]`)
163
+ */
164
+ export type UrlsExtractionResult =
165
+ | { kind: "variable"; name: string }
166
+ | { kind: "inline"; block: string };
167
+
168
+ /**
169
+ * Extract the url patterns from a router file using AST.
170
+ * Detects four patterns:
162
171
  * 1. createRouter(...).routes(variableName)
163
172
  * 2. createRouter({ urls: variableName, ... })
164
- * Returns the local variable name.
173
+ * 3. createRouter(...).routes(({ path, ... }) => [...])
174
+ * 4. createRouter({ urls: ({ path, ... }) => [...], ... })
175
+ * Returns either a variable name or an inline code block.
165
176
  */
166
- export function extractUrlsVariableFromRouter(code: string): string | null {
177
+ export function extractUrlsFromRouter(
178
+ code: string,
179
+ ): UrlsExtractionResult | null {
167
180
  const sourceFile = ts.createSourceFile(
168
181
  "router.tsx",
169
182
  code,
@@ -171,7 +184,7 @@ export function extractUrlsVariableFromRouter(code: string): string | null {
171
184
  true,
172
185
  ts.ScriptKind.TSX,
173
186
  );
174
- let result: string | null = null;
187
+ let result: UrlsExtractionResult | null = null;
175
188
 
176
189
  function isCreateRouterCall(node: ts.Node): boolean {
177
190
  if (!ts.isCallExpression(node)) return false;
@@ -179,44 +192,108 @@ export function extractUrlsVariableFromRouter(code: string): string | null {
179
192
  return ts.isIdentifier(callee) && callee.text === "createRouter";
180
193
  }
181
194
 
195
+ /** Check if a node is an arrow/function expression (inline builder). */
196
+ function isInlineBuilder(node: ts.Node): boolean {
197
+ return ts.isArrowFunction(node) || ts.isFunctionExpression(node);
198
+ }
199
+
200
+ /** Check if a .routes() call chains from createRouter(). */
201
+ function isRoutesOnCreateRouter(node: ts.CallExpression): boolean {
202
+ if (
203
+ !ts.isPropertyAccessExpression(node.expression) ||
204
+ node.expression.name.text !== "routes"
205
+ )
206
+ return false;
207
+ let inner: ts.Expression = node.expression.expression;
208
+ while (
209
+ ts.isCallExpression(inner) &&
210
+ ts.isPropertyAccessExpression(inner.expression)
211
+ ) {
212
+ inner = inner.expression.expression;
213
+ }
214
+ return isCreateRouterCall(inner);
215
+ }
216
+
182
217
  function visit(node: ts.Node) {
183
218
  if (result) return;
184
219
 
185
- // Pattern 1: createRouter(...).routes(variableName)
186
- // The AST shape is CallExpression(.routes) -> PropertyAccessExpression -> CallExpression(createRouter)
220
+ // Pattern 1 & 3: createRouter(...).routes(variableName | builder)
187
221
  if (
188
222
  ts.isCallExpression(node) &&
189
- ts.isPropertyAccessExpression(node.expression) &&
190
- node.expression.name.text === "routes" &&
191
223
  node.arguments.length >= 1 &&
192
- ts.isIdentifier(node.arguments[0])
224
+ isRoutesOnCreateRouter(node)
193
225
  ) {
194
- // Walk up the chain: createRouter().middleware(...).routes(x) etc.
195
- // The innermost call should be createRouter(...)
196
- let inner: ts.Expression = node.expression.expression;
197
- while (
198
- ts.isCallExpression(inner) &&
199
- ts.isPropertyAccessExpression(inner.expression)
200
- ) {
201
- inner = inner.expression.expression;
202
- }
203
- if (isCreateRouterCall(inner)) {
204
- result = (node.arguments[0] as ts.Identifier).text;
205
- return;
226
+ const arg = node.arguments[0];
227
+ if (ts.isIdentifier(arg)) {
228
+ result = { kind: "variable", name: arg.text };
229
+ } else if (isInlineBuilder(arg)) {
230
+ result = { kind: "inline", block: arg.getText(sourceFile) };
206
231
  }
232
+ return;
207
233
  }
208
234
 
209
- // Pattern 2: createRouter({ urls: variableName, ... })
235
+ // Pattern 2 & 4: createRouter({ urls: variableName | builder, ... })
210
236
  if (isCreateRouterCall(node)) {
211
237
  const callExpr = node as ts.CallExpression;
212
- for (const arg of callExpr.arguments) {
238
+ for (const callArg of callExpr.arguments) {
239
+ if (ts.isObjectLiteralExpression(callArg)) {
240
+ for (const prop of callArg.properties) {
241
+ if (
242
+ ts.isPropertyAssignment(prop) &&
243
+ ts.isIdentifier(prop.name) &&
244
+ prop.name.text === "urls"
245
+ ) {
246
+ if (ts.isIdentifier(prop.initializer)) {
247
+ result = { kind: "variable", name: prop.initializer.text };
248
+ } else if (isInlineBuilder(prop.initializer)) {
249
+ result = {
250
+ kind: "inline",
251
+ block: prop.initializer.getText(sourceFile),
252
+ };
253
+ }
254
+ return;
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
260
+
261
+ ts.forEachChild(node, visit);
262
+ }
263
+
264
+ visit(sourceFile);
265
+ return result;
266
+ }
267
+
268
+ /**
269
+ * Extract the `basename` string literal from createRouter({ basename: "..." }).
270
+ * Returns the basename value or undefined if not present.
271
+ */
272
+ export function extractBasenameFromRouter(code: string): string | undefined {
273
+ const sourceFile = ts.createSourceFile(
274
+ "router.tsx",
275
+ code,
276
+ ts.ScriptTarget.Latest,
277
+ true,
278
+ ts.ScriptKind.TSX,
279
+ );
280
+ let result: string | undefined;
281
+
282
+ function visit(node: ts.Node) {
283
+ if (result !== undefined) return;
284
+ if (
285
+ ts.isCallExpression(node) &&
286
+ ts.isIdentifier(node.expression) &&
287
+ node.expression.text === "createRouter"
288
+ ) {
289
+ for (const arg of node.arguments) {
213
290
  if (ts.isObjectLiteralExpression(arg)) {
214
291
  for (const prop of arg.properties) {
215
292
  if (
216
293
  ts.isPropertyAssignment(prop) &&
217
294
  ts.isIdentifier(prop.name) &&
218
- prop.name.text === "urls" &&
219
- ts.isIdentifier(prop.initializer)
295
+ prop.name.text === "basename" &&
296
+ ts.isStringLiteral(prop.initializer)
220
297
  ) {
221
298
  result = prop.initializer.text;
222
299
  return;
@@ -225,7 +302,6 @@ export function extractUrlsVariableFromRouter(code: string): string | null {
225
302
  }
226
303
  }
227
304
  }
228
-
229
305
  ts.forEachChild(node, visit);
230
306
  }
231
307
 
@@ -233,9 +309,40 @@ export function extractUrlsVariableFromRouter(code: string): string | null {
233
309
  return result;
234
310
  }
235
311
 
312
+ /** @deprecated Use extractUrlsFromRouter instead */
313
+ export function extractUrlsVariableFromRouter(code: string): string | null {
314
+ const result = extractUrlsFromRouter(code);
315
+ return result?.kind === "variable" ? result.name : null;
316
+ }
317
+
318
+ /** Apply a basename prefix to all route patterns in a result set. */
319
+ function applyBasenameToRoutes(
320
+ result: {
321
+ routes: Record<string, string>;
322
+ searchSchemas: Record<string, Record<string, string>>;
323
+ },
324
+ basename: string,
325
+ ): {
326
+ routes: Record<string, string>;
327
+ searchSchemas: Record<string, Record<string, string>>;
328
+ } {
329
+ const prefixed: Record<string, string> = {};
330
+ for (const [name, pattern] of Object.entries(result.routes)) {
331
+ if (pattern === "/") {
332
+ prefixed[name] = basename;
333
+ } else if (basename.endsWith("/") && pattern.startsWith("/")) {
334
+ prefixed[name] = basename + pattern.slice(1);
335
+ } else {
336
+ prefixed[name] = basename + pattern;
337
+ }
338
+ }
339
+ return { routes: prefixed, searchSchemas: result.searchSchemas };
340
+ }
341
+
236
342
  /**
237
343
  * Resolve routes and search schemas from a router source file by following the
238
- * variable passed to `.routes(...)` or `urls: ...` in createRouter options.
344
+ * variable passed to `.routes(...)` or `urls: ...` in createRouter options,
345
+ * or by parsing an inline builder function directly.
239
346
  */
240
347
  export function buildCombinedRouteMapForRouterFile(routerFilePath: string): {
241
348
  routes: Record<string, string>;
@@ -248,21 +355,54 @@ export function buildCombinedRouteMapForRouterFile(routerFilePath: string): {
248
355
  return { routes: {}, searchSchemas: {} };
249
356
  }
250
357
 
251
- const urlsVarName = extractUrlsVariableFromRouter(routerSource);
252
- if (!urlsVarName) {
358
+ const extraction = extractUrlsFromRouter(routerSource);
359
+ if (!extraction) {
253
360
  return { routes: {}, searchSchemas: {} };
254
361
  }
255
362
 
256
- const imported = resolveImportedVariable(routerSource, urlsVarName);
257
- if (imported) {
258
- const targetFile = resolveImportPath(imported.specifier, routerFilePath);
259
- if (!targetFile) {
260
- return { routes: {}, searchSchemas: {} };
363
+ // Detect basename from createRouter({ basename: "..." })
364
+ const rawBasename = extractBasenameFromRouter(routerSource);
365
+ const basename = rawBasename
366
+ ? ("/" + rawBasename.replace(/^\/+|\/+$/g, "")).replace(/^\/$/, "")
367
+ : undefined;
368
+
369
+ let result: {
370
+ routes: Record<string, string>;
371
+ searchSchemas: Record<string, Record<string, string>>;
372
+ };
373
+
374
+ // Inline builder: extract routes directly from the function body
375
+ if (extraction.kind === "inline") {
376
+ result = buildCombinedRouteMapWithSearch(
377
+ routerFilePath,
378
+ undefined,
379
+ undefined,
380
+ undefined,
381
+ extraction.block,
382
+ );
383
+ } else {
384
+ // Variable reference: follow imports or same-file declaration
385
+ const imported = resolveImportedVariable(routerSource, extraction.name);
386
+ if (imported) {
387
+ const targetFile = resolveImportPath(imported.specifier, routerFilePath);
388
+ if (!targetFile) {
389
+ return { routes: {}, searchSchemas: {} };
390
+ }
391
+ result = buildCombinedRouteMapWithSearch(
392
+ targetFile,
393
+ imported.exportedName,
394
+ );
395
+ } else {
396
+ result = buildCombinedRouteMapWithSearch(routerFilePath, extraction.name);
261
397
  }
262
- return buildCombinedRouteMapWithSearch(targetFile, imported.exportedName);
263
398
  }
264
399
 
265
- return buildCombinedRouteMapWithSearch(routerFilePath, urlsVarName);
400
+ // Apply basename prefix to all extracted route patterns
401
+ if (basename) {
402
+ result = applyBasenameToRoutes(result, basename);
403
+ }
404
+
405
+ return result;
266
406
  }
267
407
 
268
408
  // ---------------------------------------------------------------------------
@@ -285,12 +425,26 @@ export function detectUnresolvableIncludes(
285
425
  return [];
286
426
  }
287
427
 
288
- // Extract the urls variable from the router file
289
- const urlsVarName = extractUrlsVariableFromRouter(source);
290
- if (!urlsVarName) return [];
428
+ // Extract the urls source from the router file
429
+ const extraction = extractUrlsFromRouter(source);
430
+ if (!extraction) return [];
291
431
 
292
- // Resolve where the urls variable comes from
293
- const imported = resolveImportedVariable(source, urlsVarName);
432
+ const diagnostics: UnresolvableInclude[] = [];
433
+
434
+ if (extraction.kind === "inline") {
435
+ // Inline builder: parse directly
436
+ buildCombinedRouteMapWithSearch(
437
+ realPath,
438
+ undefined,
439
+ new Set(),
440
+ diagnostics,
441
+ extraction.block,
442
+ );
443
+ return diagnostics;
444
+ }
445
+
446
+ // Variable reference: resolve where it comes from
447
+ const imported = resolveImportedVariable(source, extraction.name);
294
448
  let targetFile: string;
295
449
  let exportedName: string | undefined;
296
450
 
@@ -312,10 +466,9 @@ export function detectUnresolvableIncludes(
312
466
  } else {
313
467
  // Same-file urls() definition
314
468
  targetFile = realPath;
315
- exportedName = urlsVarName;
469
+ exportedName = extraction.name;
316
470
  }
317
471
 
318
- const diagnostics: UnresolvableInclude[] = [];
319
472
  buildCombinedRouteMapWithSearch(
320
473
  targetFile,
321
474
  exportedName,
@@ -397,34 +550,20 @@ export function writeCombinedRouteTypes(
397
550
  }
398
551
 
399
552
  for (const routerFilePath of routerFilePaths) {
400
- let routerSource: string;
401
- try {
402
- routerSource = readFileSync(routerFilePath, "utf-8");
403
- } catch {
404
- continue;
405
- }
406
- // Extract the urls variable name from .routes(varName) or urls: varName
407
- const urlsVarName = extractUrlsVariableFromRouter(routerSource);
408
- if (!urlsVarName) continue;
409
-
410
- // Resolve the variable to its source module
411
- let result: {
412
- routes: Record<string, string>;
413
- searchSchemas: Record<string, Record<string, string>>;
414
- };
415
-
416
- const imported = resolveImportedVariable(routerSource, urlsVarName);
417
- if (imported) {
418
- // Variable is imported from another module
419
- const targetFile = resolveImportPath(imported.specifier, routerFilePath);
420
- if (!targetFile) continue;
421
- result = buildCombinedRouteMapWithSearch(
422
- targetFile,
423
- imported.exportedName,
424
- );
425
- } else {
426
- // Variable is defined in the same file
427
- result = buildCombinedRouteMapWithSearch(routerFilePath, urlsVarName);
553
+ const result = buildCombinedRouteMapForRouterFile(routerFilePath);
554
+ if (
555
+ Object.keys(result.routes).length === 0 &&
556
+ Object.keys(result.searchSchemas).length === 0
557
+ ) {
558
+ // Check if the file even has a createRouter call — if not, skip entirely.
559
+ // If it does, fall through to write an empty placeholder below.
560
+ let routerSource: string;
561
+ try {
562
+ routerSource = readFileSync(routerFilePath, "utf-8");
563
+ } catch {
564
+ continue;
565
+ }
566
+ if (!extractUrlsFromRouter(routerSource)) continue;
428
567
  }
429
568
 
430
569
  const routerBasename = pathBasename(routerFilePath).replace(
@@ -61,7 +61,14 @@ export function findTsFiles(dir: string, filter?: ScanFilter): string[] {
61
61
  for (const entry of entries) {
62
62
  const fullPath = join(dir, entry.name);
63
63
  if (entry.isDirectory()) {
64
- if (entry.name === "node_modules" || entry.name.startsWith(".")) continue;
64
+ if (
65
+ entry.name === "node_modules" ||
66
+ entry.name.startsWith(".") ||
67
+ entry.name === "dist" ||
68
+ entry.name === "build" ||
69
+ entry.name === "coverage"
70
+ )
71
+ continue;
65
72
  results.push(...findTsFiles(fullPath, filter));
66
73
  } else if (
67
74
  (entry.name.endsWith(".ts") ||
@@ -214,11 +214,21 @@ export function registerCachedFunction<T extends (...args: any[]) => any>(
214
214
  bgStopCapture = c.stop;
215
215
  }
216
216
 
217
- // Stamp tainted args and RequestContext so request-scoped
218
- // reads (cookies, headers) and side effects (ctx.set, etc.)
219
- // throw inside background revalidation, same as the miss path.
220
- // Uses ref-counted stamp/unstamp so overlapping executions
221
- // sharing the same ctx don't clear each other's guards.
217
+ // Stamp tainted ARGS only not requestCtx. The args stamp guards
218
+ // direct ctx method calls (ctx.set, ctx.header, ctx.onResponse, etc.)
219
+ // which is sufficient for correctness.
220
+ //
221
+ // We intentionally skip stamping requestCtx here because:
222
+ // 1. runBackground starts the async task synchronously (before the
223
+ // first await), so stampCacheExec would pollute the shared
224
+ // requestCtx while the foreground pipeline is still running.
225
+ // This causes assertNotInsideCacheExec to fire when cache-store
226
+ // later calls requestCtx.onResponse().
227
+ // 2. requestCtx methods are closure-bound to the original ctx, so
228
+ // neither Object.create() nor a proxy can isolate the stamp.
229
+ // 3. The foreground miss path already stamps requestCtx and catches
230
+ // cookies()/headers() misuse on first execution. The background
231
+ // re-runs the same function with the same request.
222
232
  const bgTaintedArgs: unknown[] = [];
223
233
  for (const arg of args) {
224
234
  if (isTainted(arg)) {
@@ -226,9 +236,6 @@ export function registerCachedFunction<T extends (...args: any[]) => any>(
226
236
  bgTaintedArgs.push(arg);
227
237
  }
228
238
  }
229
- if (requestCtx) {
230
- stampCacheExec(requestCtx as object);
231
- }
232
239
 
233
240
  try {
234
241
  const freshResult = await fn.apply(this, args);
@@ -249,9 +256,6 @@ export function registerCachedFunction<T extends (...args: any[]) => any>(
249
256
  for (const arg of bgTaintedArgs) {
250
257
  unstampCacheExec(arg as object);
251
258
  }
252
- if (requestCtx) {
253
- unstampCacheExec(requestCtx as object);
254
- }
255
259
  // Restore original handle store
256
260
  if (originalHandleStore && requestCtx) {
257
261
  requestCtx._handleStore = originalHandleStore;
@@ -328,22 +328,59 @@ export class CacheScope {
328
328
  // Check if this is a partial request (navigation) vs document request
329
329
  const isPartial = requestCtx.originalUrl.searchParams.has("_rsc_partial");
330
330
 
331
+ if (INTERNAL_RANGO_DEBUG) {
332
+ debugCacheLog(
333
+ `[CacheScope] cacheRoute: scheduling waitUntil for ${key} (${nonLoaderSegments.length} segments, isPartial=${isPartial})`,
334
+ );
335
+ }
336
+
331
337
  requestCtx.waitUntil(async () => {
338
+ if (INTERNAL_RANGO_DEBUG) {
339
+ debugCacheLog(
340
+ `[CacheScope] waitUntil: awaiting handleStore.settled for ${key}`,
341
+ );
342
+ }
343
+
332
344
  await handleStore.settled;
333
345
 
334
- // For document requests: only cache if ALL segments have components (complete render)
335
- // For partial requests: null components are expected (client already has them)
346
+ if (INTERNAL_RANGO_DEBUG) {
347
+ debugCacheLog(`[CacheScope] waitUntil: handleStore settled for ${key}`);
348
+ }
349
+
350
+ // For document requests: only cache if layout segments have components
351
+ // (complete render). Parallel and route segments may legitimately have
352
+ // null components — UI-less @meta parallels return null, and void route
353
+ // handlers produce null when the UI lives in parallel slots/layouts.
354
+ // Partial requests always allow null components (client already has them).
336
355
  if (!isPartial) {
337
- const hasAllComponents = nonLoaderSegments.every(
338
- (s) => s.component !== null,
356
+ const hasIncompleteLayouts = nonLoaderSegments.some(
357
+ (s) => s.component === null && s.type === "layout",
339
358
  );
340
- if (!hasAllComponents) return;
359
+ if (hasIncompleteLayouts) {
360
+ const nullSegments = nonLoaderSegments
361
+ .filter((s) => s.component === null && s.type === "layout")
362
+ .map((s) => s.id);
363
+ const error = new Error(
364
+ `[CacheScope] Cache write skipped: layout segments have null components ` +
365
+ `(${nullSegments.join(", ")}). This indicates an incomplete render — ` +
366
+ `layout handlers must return JSX for document requests to be cacheable.`,
367
+ );
368
+ error.name = "CacheScopeInvariantError";
369
+ console.error(error.message);
370
+ return;
371
+ }
341
372
  }
342
373
 
343
374
  // Collect handle data for non-loader segments only
344
375
  const handles = captureHandles(nonLoaderSegments, handleStore);
345
376
 
346
377
  try {
378
+ if (INTERNAL_RANGO_DEBUG) {
379
+ debugCacheLog(
380
+ `[CacheScope] waitUntil: serializing ${nonLoaderSegments.length} segments for ${key}`,
381
+ );
382
+ }
383
+
347
384
  // Serialize non-loader segments only
348
385
  const serializedSegments = await serializeSegments(nonLoaderSegments);
349
386
 
@@ -353,6 +390,10 @@ export class CacheScope {
353
390
  expiresAt: Date.now() + ttl * 1000,
354
391
  };
355
392
 
393
+ if (INTERNAL_RANGO_DEBUG) {
394
+ debugCacheLog(`[CacheScope] waitUntil: calling store.set for ${key}`);
395
+ }
396
+
356
397
  await store.set(key, data, ttl, swr);
357
398
 
358
399
  if (INTERNAL_RANGO_DEBUG) {
@@ -81,6 +81,61 @@ export function assertNotInsideCacheExec(
81
81
  }
82
82
  }
83
83
 
84
+ /**
85
+ * Symbol stamped on ctx when resolving handlers inside a cache() DSL boundary.
86
+ * Separate from INSIDE_CACHE_EXEC ("use cache") because cache() allows
87
+ * ctx.set() (children are also cached) but blocks response-level side effects
88
+ * (headers, cookies, status) which are lost on cache hit.
89
+ */
90
+ export const INSIDE_CACHE_SCOPE: unique symbol = Symbol.for(
91
+ "rango:inside-cache-scope",
92
+ ) as any;
93
+
94
+ /**
95
+ * Mark ctx as inside a cache() scope. Must be paired with unstampCacheScope.
96
+ */
97
+ export function stampCacheScope(obj: object): void {
98
+ const current = (obj as any)[INSIDE_CACHE_SCOPE] ?? 0;
99
+ (obj as any)[INSIDE_CACHE_SCOPE] = current + 1;
100
+ }
101
+
102
+ /**
103
+ * Remove cache() scope mark.
104
+ */
105
+ export function unstampCacheScope(obj: object): void {
106
+ const current = (obj as any)[INSIDE_CACHE_SCOPE] ?? 0;
107
+ if (current <= 1) {
108
+ delete (obj as any)[INSIDE_CACHE_SCOPE];
109
+ } else {
110
+ (obj as any)[INSIDE_CACHE_SCOPE] = current - 1;
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Throw if ctx is inside a cache() DSL boundary.
116
+ * Call from response-level side effects (header, setCookie, setStatus, etc.)
117
+ * which are lost on cache hit because the handler body is skipped.
118
+ * ctx.set() is allowed inside cache() — children are also cached and can
119
+ * read the value.
120
+ */
121
+ export function assertNotInsideCacheScope(
122
+ ctx: unknown,
123
+ methodName: string,
124
+ ): void {
125
+ if (
126
+ ctx !== null &&
127
+ ctx !== undefined &&
128
+ typeof ctx === "object" &&
129
+ (INSIDE_CACHE_SCOPE as symbol) in (ctx as Record<symbol, unknown>)
130
+ ) {
131
+ throw new Error(
132
+ `ctx.${methodName}() cannot be called inside a cache() boundary. ` +
133
+ `On cache hit the handler is skipped, so this side effect would be lost. ` +
134
+ `Move ctx.${methodName}() to a middleware or layout outside the cache() scope.`,
135
+ );
136
+ }
137
+ }
138
+
84
139
  /**
85
140
  * Brand symbol for functions wrapped by registerCachedFunction().
86
141
  * Used at runtime to detect when a "use cache" function is misused
package/src/client.tsx CHANGED
@@ -13,7 +13,6 @@ import {
13
13
  type ClientErrorBoundaryFallbackProps,
14
14
  type ErrorInfo,
15
15
  type LoaderDefinition,
16
- type LoaderFn,
17
16
  type ResolvedSegment,
18
17
  } from "./types";
19
18
  import {
@@ -313,57 +312,6 @@ export {
313
312
  type UseLoaderOptions,
314
313
  } from "./use-loader.js";
315
314
 
316
- /**
317
- * Client-safe createLoader factory
318
- *
319
- * Creates a loader definition that can be used with useLoader().
320
- * This is the client-side version that only stores the $$id - the function
321
- * is ignored since loaders only execute on the server.
322
- *
323
- * The $$id is injected by the exposeLoaderId Vite plugin. In most cases,
324
- * you should import the loader directly from the server file rather than
325
- * creating a reference manually.
326
- *
327
- * @param fn - Loader function (ignored on client, kept for API compatibility)
328
- * @param _fetchable - Optional fetchable flag (ignored on client)
329
- * @param __injectedId - $$id injected by Vite plugin
330
- *
331
- * @example
332
- * ```tsx
333
- * "use client";
334
- * import { useLoader } from "rsc-router/client";
335
- * import { CartLoader } from "../loaders/cart"; // Import from server file
336
- *
337
- * export function CartIcon() {
338
- * const cart = useLoader(CartLoader);
339
- * return <span>Cart ({cart?.items.length ?? 0})</span>;
340
- * }
341
- * ```
342
- */
343
- // Overload 1: With function only (not fetchable)
344
- export function createLoader<T>(
345
- fn: LoaderFn<T, Record<string, string | undefined>, any>,
346
- ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
347
-
348
- // Overload 2: With function and fetchable flag
349
- export function createLoader<T>(
350
- fn: LoaderFn<T, Record<string, string | undefined>, any>,
351
- fetchable: true,
352
- ): LoaderDefinition<Awaited<T>, Record<string, string | undefined>>;
353
-
354
- // Implementation - function is ignored at runtime on client
355
- // The $$id is injected by Vite plugin as hidden third parameter
356
- export function createLoader(
357
- _fn: LoaderFn<any, Record<string, string | undefined>, any>,
358
- _fetchable?: true,
359
- __injectedId?: string,
360
- ): LoaderDefinition<any, Record<string, string | undefined>> {
361
- return {
362
- __brand: "loader",
363
- $$id: __injectedId || "",
364
- };
365
- }
366
-
367
315
  /**
368
316
  * Props for the ErrorBoundary component
369
317
  */
@@ -534,10 +482,8 @@ export {
534
482
  type ScrollRestorationProps,
535
483
  } from "./browser/react/ScrollRestoration.js";
536
484
 
537
- // Handle API - for accumulating data across route segments
538
- export { createHandle, isHandle, type Handle } from "./handle.js";
539
-
540
- // Handle data hook
485
+ // Handle data hook (client-side only createHandle/isHandle are server APIs from the root export)
486
+ export { type Handle } from "./handle.js";
541
487
  export { useHandle } from "./browser/react/use-handle.js";
542
488
 
543
489
  // Built-in handles