@rangojs/router 0.0.0-experimental.12 → 0.0.0-experimental.120

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 (1150) hide show
  1. package/AGENTS.md +9 -0
  2. package/README.md +1037 -4
  3. package/dist/__internal.d.ts +83 -0
  4. package/dist/__internal.d.ts.map +1 -0
  5. package/dist/__internal.js +19 -0
  6. package/dist/__internal.js.map +1 -0
  7. package/dist/__mocks__/version.d.ts +7 -0
  8. package/dist/__mocks__/version.d.ts.map +1 -0
  9. package/dist/__mocks__/version.js +7 -0
  10. package/dist/__mocks__/version.js.map +1 -0
  11. package/dist/__tests__/client-href.test.d.ts +2 -0
  12. package/dist/__tests__/client-href.test.d.ts.map +1 -0
  13. package/dist/__tests__/client-href.test.js +74 -0
  14. package/dist/__tests__/client-href.test.js.map +1 -0
  15. package/dist/__tests__/component-utils.test.d.ts +2 -0
  16. package/dist/__tests__/component-utils.test.d.ts.map +1 -0
  17. package/dist/__tests__/component-utils.test.js +51 -0
  18. package/dist/__tests__/component-utils.test.js.map +1 -0
  19. package/dist/__tests__/event-controller.test.d.ts +2 -0
  20. package/dist/__tests__/event-controller.test.d.ts.map +1 -0
  21. package/dist/__tests__/event-controller.test.js +538 -0
  22. package/dist/__tests__/event-controller.test.js.map +1 -0
  23. package/dist/__tests__/helpers/route-tree.d.ts +118 -0
  24. package/dist/__tests__/helpers/route-tree.d.ts.map +1 -0
  25. package/dist/__tests__/helpers/route-tree.js +374 -0
  26. package/dist/__tests__/helpers/route-tree.js.map +1 -0
  27. package/dist/__tests__/match-result.test.d.ts +2 -0
  28. package/dist/__tests__/match-result.test.d.ts.map +1 -0
  29. package/dist/__tests__/match-result.test.js +154 -0
  30. package/dist/__tests__/match-result.test.js.map +1 -0
  31. package/dist/__tests__/navigation-store.test.d.ts +2 -0
  32. package/dist/__tests__/navigation-store.test.d.ts.map +1 -0
  33. package/dist/__tests__/navigation-store.test.js +440 -0
  34. package/dist/__tests__/navigation-store.test.js.map +1 -0
  35. package/dist/__tests__/partial-update.test.d.ts +2 -0
  36. package/dist/__tests__/partial-update.test.d.ts.map +1 -0
  37. package/dist/__tests__/partial-update.test.js +1009 -0
  38. package/dist/__tests__/partial-update.test.js.map +1 -0
  39. package/dist/__tests__/reverse-types.test.d.ts +8 -0
  40. package/dist/__tests__/reverse-types.test.d.ts.map +1 -0
  41. package/dist/__tests__/reverse-types.test.js +656 -0
  42. package/dist/__tests__/reverse-types.test.js.map +1 -0
  43. package/dist/__tests__/route-definition.test.d.ts +2 -0
  44. package/dist/__tests__/route-definition.test.d.ts.map +1 -0
  45. package/dist/__tests__/route-definition.test.js +55 -0
  46. package/dist/__tests__/route-definition.test.js.map +1 -0
  47. package/dist/__tests__/router-helpers.test.d.ts +2 -0
  48. package/dist/__tests__/router-helpers.test.d.ts.map +1 -0
  49. package/dist/__tests__/router-helpers.test.js +377 -0
  50. package/dist/__tests__/router-helpers.test.js.map +1 -0
  51. package/dist/__tests__/router-integration-2.test.d.ts +2 -0
  52. package/dist/__tests__/router-integration-2.test.d.ts.map +1 -0
  53. package/dist/__tests__/router-integration-2.test.js +426 -0
  54. package/dist/__tests__/router-integration-2.test.js.map +1 -0
  55. package/dist/__tests__/router-integration.test.d.ts +2 -0
  56. package/dist/__tests__/router-integration.test.d.ts.map +1 -0
  57. package/dist/__tests__/router-integration.test.js +1051 -0
  58. package/dist/__tests__/router-integration.test.js.map +1 -0
  59. package/dist/__tests__/search-params.test.d.ts +5 -0
  60. package/dist/__tests__/search-params.test.d.ts.map +1 -0
  61. package/dist/__tests__/search-params.test.js +306 -0
  62. package/dist/__tests__/search-params.test.js.map +1 -0
  63. package/dist/__tests__/segment-system.test.d.ts +2 -0
  64. package/dist/__tests__/segment-system.test.d.ts.map +1 -0
  65. package/dist/__tests__/segment-system.test.js +627 -0
  66. package/dist/__tests__/segment-system.test.js.map +1 -0
  67. package/dist/__tests__/static-handler-types.test.d.ts +8 -0
  68. package/dist/__tests__/static-handler-types.test.d.ts.map +1 -0
  69. package/dist/__tests__/static-handler-types.test.js +63 -0
  70. package/dist/__tests__/static-handler-types.test.js.map +1 -0
  71. package/dist/__tests__/urls.test.d.ts +2 -0
  72. package/dist/__tests__/urls.test.d.ts.map +1 -0
  73. package/dist/__tests__/urls.test.js +421 -0
  74. package/dist/__tests__/urls.test.js.map +1 -0
  75. package/dist/__tests__/use-mount.test.d.ts +2 -0
  76. package/dist/__tests__/use-mount.test.d.ts.map +1 -0
  77. package/dist/__tests__/use-mount.test.js +35 -0
  78. package/dist/__tests__/use-mount.test.js.map +1 -0
  79. package/dist/bin/rango.d.ts +2 -0
  80. package/dist/bin/rango.d.ts.map +1 -0
  81. package/dist/bin/rango.js +1704 -212
  82. package/dist/bin/rango.js.map +1 -0
  83. package/dist/browser/event-controller.d.ts +191 -0
  84. package/dist/browser/event-controller.d.ts.map +1 -0
  85. package/dist/browser/event-controller.js +559 -0
  86. package/dist/browser/event-controller.js.map +1 -0
  87. package/dist/browser/index.d.ts +2 -0
  88. package/dist/browser/index.d.ts.map +1 -0
  89. package/dist/browser/index.js +14 -0
  90. package/dist/browser/index.js.map +1 -0
  91. package/dist/browser/link-interceptor.d.ts +38 -0
  92. package/dist/browser/link-interceptor.d.ts.map +1 -0
  93. package/dist/browser/link-interceptor.js +99 -0
  94. package/dist/browser/link-interceptor.js.map +1 -0
  95. package/dist/browser/logging.d.ts +10 -0
  96. package/dist/browser/logging.d.ts.map +1 -0
  97. package/dist/browser/logging.js +29 -0
  98. package/dist/browser/logging.js.map +1 -0
  99. package/dist/browser/lru-cache.d.ts +17 -0
  100. package/dist/browser/lru-cache.d.ts.map +1 -0
  101. package/dist/browser/lru-cache.js +50 -0
  102. package/dist/browser/lru-cache.js.map +1 -0
  103. package/dist/browser/merge-segment-loaders.d.ts +39 -0
  104. package/dist/browser/merge-segment-loaders.d.ts.map +1 -0
  105. package/dist/browser/merge-segment-loaders.js +102 -0
  106. package/dist/browser/merge-segment-loaders.js.map +1 -0
  107. package/dist/browser/navigation-bridge.d.ts +102 -0
  108. package/dist/browser/navigation-bridge.d.ts.map +1 -0
  109. package/dist/browser/navigation-bridge.js +708 -0
  110. package/dist/browser/navigation-bridge.js.map +1 -0
  111. package/dist/browser/navigation-client.d.ts +25 -0
  112. package/dist/browser/navigation-client.d.ts.map +1 -0
  113. package/dist/browser/navigation-client.js +157 -0
  114. package/dist/browser/navigation-client.js.map +1 -0
  115. package/dist/browser/navigation-store.d.ts +101 -0
  116. package/dist/browser/navigation-store.d.ts.map +1 -0
  117. package/dist/browser/navigation-store.js +625 -0
  118. package/dist/browser/navigation-store.js.map +1 -0
  119. package/dist/browser/partial-update.d.ts +75 -0
  120. package/dist/browser/partial-update.d.ts.map +1 -0
  121. package/dist/browser/partial-update.js +426 -0
  122. package/dist/browser/partial-update.js.map +1 -0
  123. package/dist/browser/react/Link.d.ts +86 -0
  124. package/dist/browser/react/Link.d.ts.map +1 -0
  125. package/dist/browser/react/Link.js +128 -0
  126. package/dist/browser/react/Link.js.map +1 -0
  127. package/dist/browser/react/NavigationProvider.d.ts +63 -0
  128. package/dist/browser/react/NavigationProvider.d.ts.map +1 -0
  129. package/dist/browser/react/NavigationProvider.js +216 -0
  130. package/dist/browser/react/NavigationProvider.js.map +1 -0
  131. package/dist/browser/react/ScrollRestoration.d.ts +75 -0
  132. package/dist/browser/react/ScrollRestoration.d.ts.map +1 -0
  133. package/dist/browser/react/ScrollRestoration.js +57 -0
  134. package/dist/browser/react/ScrollRestoration.js.map +1 -0
  135. package/dist/browser/react/context.d.ts +46 -0
  136. package/dist/browser/react/context.d.ts.map +1 -0
  137. package/dist/browser/react/context.js +10 -0
  138. package/dist/browser/react/context.js.map +1 -0
  139. package/dist/browser/react/index.d.ts +11 -0
  140. package/dist/browser/react/index.d.ts.map +1 -0
  141. package/dist/browser/react/index.js +22 -0
  142. package/dist/browser/react/index.js.map +1 -0
  143. package/dist/browser/react/location-state-shared.d.ts +63 -0
  144. package/dist/browser/react/location-state-shared.d.ts.map +1 -0
  145. package/dist/browser/react/location-state-shared.js +81 -0
  146. package/dist/browser/react/location-state-shared.js.map +1 -0
  147. package/dist/browser/react/location-state.d.ts +23 -0
  148. package/dist/browser/react/location-state.d.ts.map +1 -0
  149. package/dist/browser/react/location-state.js +29 -0
  150. package/dist/browser/react/location-state.js.map +1 -0
  151. package/dist/browser/react/mount-context.d.ts +24 -0
  152. package/dist/browser/react/mount-context.d.ts.map +1 -0
  153. package/dist/browser/react/mount-context.js +24 -0
  154. package/dist/browser/react/mount-context.js.map +1 -0
  155. package/dist/browser/react/use-action.d.ts +64 -0
  156. package/dist/browser/react/use-action.d.ts.map +1 -0
  157. package/dist/browser/react/use-action.js +134 -0
  158. package/dist/browser/react/use-action.js.map +1 -0
  159. package/dist/browser/react/use-client-cache.d.ts +41 -0
  160. package/dist/browser/react/use-client-cache.d.ts.map +1 -0
  161. package/dist/browser/react/use-client-cache.js +39 -0
  162. package/dist/browser/react/use-client-cache.js.map +1 -0
  163. package/dist/browser/react/use-handle.d.ts +31 -0
  164. package/dist/browser/react/use-handle.d.ts.map +1 -0
  165. package/dist/browser/react/use-handle.js +144 -0
  166. package/dist/browser/react/use-handle.js.map +1 -0
  167. package/dist/browser/react/use-href.d.ts +33 -0
  168. package/dist/browser/react/use-href.d.ts.map +1 -0
  169. package/dist/browser/react/use-href.js +39 -0
  170. package/dist/browser/react/use-href.js.map +1 -0
  171. package/dist/browser/react/use-link-status.d.ts +37 -0
  172. package/dist/browser/react/use-link-status.d.ts.map +1 -0
  173. package/dist/browser/react/use-link-status.js +99 -0
  174. package/dist/browser/react/use-link-status.js.map +1 -0
  175. package/dist/browser/react/use-mount.d.ts +25 -0
  176. package/dist/browser/react/use-mount.d.ts.map +1 -0
  177. package/dist/browser/react/use-mount.js +30 -0
  178. package/dist/browser/react/use-mount.js.map +1 -0
  179. package/dist/browser/react/use-navigation.d.ts +27 -0
  180. package/dist/browser/react/use-navigation.d.ts.map +1 -0
  181. package/dist/browser/react/use-navigation.js +87 -0
  182. package/dist/browser/react/use-navigation.js.map +1 -0
  183. package/dist/browser/react/use-segments.d.ts +38 -0
  184. package/dist/browser/react/use-segments.d.ts.map +1 -0
  185. package/dist/browser/react/use-segments.js +130 -0
  186. package/dist/browser/react/use-segments.js.map +1 -0
  187. package/dist/browser/request-controller.d.ts +26 -0
  188. package/dist/browser/request-controller.d.ts.map +1 -0
  189. package/dist/browser/request-controller.js +147 -0
  190. package/dist/browser/request-controller.js.map +1 -0
  191. package/dist/browser/rsc-router.d.ts +129 -0
  192. package/dist/browser/rsc-router.d.ts.map +1 -0
  193. package/dist/browser/rsc-router.js +195 -0
  194. package/dist/browser/rsc-router.js.map +1 -0
  195. package/dist/browser/scroll-restoration.d.ts +93 -0
  196. package/dist/browser/scroll-restoration.d.ts.map +1 -0
  197. package/dist/browser/scroll-restoration.js +321 -0
  198. package/dist/browser/scroll-restoration.js.map +1 -0
  199. package/dist/browser/segment-structure-assert.d.ts +17 -0
  200. package/dist/browser/segment-structure-assert.d.ts.map +1 -0
  201. package/dist/browser/segment-structure-assert.js +59 -0
  202. package/dist/browser/segment-structure-assert.js.map +1 -0
  203. package/dist/browser/server-action-bridge.d.ts +26 -0
  204. package/dist/browser/server-action-bridge.d.ts.map +1 -0
  205. package/dist/browser/server-action-bridge.js +668 -0
  206. package/dist/browser/server-action-bridge.js.map +1 -0
  207. package/dist/browser/shallow.d.ts +12 -0
  208. package/dist/browser/shallow.d.ts.map +1 -0
  209. package/dist/browser/shallow.js +34 -0
  210. package/dist/browser/shallow.js.map +1 -0
  211. package/dist/browser/types.d.ts +369 -0
  212. package/dist/browser/types.d.ts.map +1 -0
  213. package/dist/browser/types.js +2 -0
  214. package/dist/browser/types.js.map +1 -0
  215. package/dist/build/__tests__/generate-cli.test.d.ts +2 -0
  216. package/dist/build/__tests__/generate-cli.test.d.ts.map +1 -0
  217. package/dist/build/__tests__/generate-cli.test.js +237 -0
  218. package/dist/build/__tests__/generate-cli.test.js.map +1 -0
  219. package/dist/build/__tests__/generate-manifest.test.d.ts +2 -0
  220. package/dist/build/__tests__/generate-manifest.test.d.ts.map +1 -0
  221. package/dist/build/__tests__/generate-manifest.test.js +119 -0
  222. package/dist/build/__tests__/generate-manifest.test.js.map +1 -0
  223. package/dist/build/__tests__/generate-route-types.test.d.ts +2 -0
  224. package/dist/build/__tests__/generate-route-types.test.d.ts.map +1 -0
  225. package/dist/build/__tests__/generate-route-types.test.js +620 -0
  226. package/dist/build/__tests__/generate-route-types.test.js.map +1 -0
  227. package/dist/build/__tests__/per-router-manifest.test.d.ts +2 -0
  228. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +1 -0
  229. package/dist/build/__tests__/per-router-manifest.test.js +308 -0
  230. package/dist/build/__tests__/per-router-manifest.test.js.map +1 -0
  231. package/dist/build/generate-manifest.d.ts +81 -0
  232. package/dist/build/generate-manifest.d.ts.map +1 -0
  233. package/dist/build/generate-manifest.js +276 -0
  234. package/dist/build/generate-manifest.js.map +1 -0
  235. package/dist/build/generate-route-types.d.ts +115 -0
  236. package/dist/build/generate-route-types.d.ts.map +1 -0
  237. package/dist/build/generate-route-types.js +740 -0
  238. package/dist/build/generate-route-types.js.map +1 -0
  239. package/dist/build/index.d.ts +21 -0
  240. package/dist/build/index.d.ts.map +1 -0
  241. package/dist/build/index.js +21 -0
  242. package/dist/build/index.js.map +1 -0
  243. package/dist/build/route-trie.d.ts +71 -0
  244. package/dist/build/route-trie.d.ts.map +1 -0
  245. package/dist/build/route-trie.js +175 -0
  246. package/dist/build/route-trie.js.map +1 -0
  247. package/dist/cache/__tests__/cache-scope.test.d.ts +2 -0
  248. package/dist/cache/__tests__/cache-scope.test.d.ts.map +1 -0
  249. package/dist/cache/__tests__/cache-scope.test.js +208 -0
  250. package/dist/cache/__tests__/cache-scope.test.js.map +1 -0
  251. package/dist/cache/__tests__/document-cache.test.d.ts +2 -0
  252. package/dist/cache/__tests__/document-cache.test.d.ts.map +1 -0
  253. package/dist/cache/__tests__/document-cache.test.js +345 -0
  254. package/dist/cache/__tests__/document-cache.test.js.map +1 -0
  255. package/dist/cache/__tests__/memory-segment-store.test.d.ts +2 -0
  256. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +1 -0
  257. package/dist/cache/__tests__/memory-segment-store.test.js +425 -0
  258. package/dist/cache/__tests__/memory-segment-store.test.js.map +1 -0
  259. package/dist/cache/__tests__/memory-store.test.d.ts +2 -0
  260. package/dist/cache/__tests__/memory-store.test.d.ts.map +1 -0
  261. package/dist/cache/__tests__/memory-store.test.js +367 -0
  262. package/dist/cache/__tests__/memory-store.test.js.map +1 -0
  263. package/dist/cache/cache-scope.d.ts +102 -0
  264. package/dist/cache/cache-scope.d.ts.map +1 -0
  265. package/dist/cache/cache-scope.js +440 -0
  266. package/dist/cache/cache-scope.js.map +1 -0
  267. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +2 -0
  268. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +1 -0
  269. package/dist/cache/cf/__tests__/cf-cache-store.test.js +330 -0
  270. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +1 -0
  271. package/dist/cache/cf/cf-cache-store.d.ts +165 -0
  272. package/dist/cache/cf/cf-cache-store.d.ts.map +1 -0
  273. package/dist/cache/cf/cf-cache-store.js +242 -0
  274. package/dist/cache/cf/cf-cache-store.js.map +1 -0
  275. package/dist/cache/cf/index.d.ts +14 -0
  276. package/dist/cache/cf/index.d.ts.map +1 -0
  277. package/dist/cache/cf/index.js +17 -0
  278. package/dist/cache/cf/index.js.map +1 -0
  279. package/dist/cache/document-cache.d.ts +64 -0
  280. package/dist/cache/document-cache.d.ts.map +1 -0
  281. package/dist/cache/document-cache.js +228 -0
  282. package/dist/cache/document-cache.js.map +1 -0
  283. package/dist/cache/index.d.ts +19 -0
  284. package/dist/cache/index.d.ts.map +1 -0
  285. package/dist/cache/index.js +21 -0
  286. package/dist/cache/index.js.map +1 -0
  287. package/dist/cache/memory-segment-store.d.ts +110 -0
  288. package/dist/cache/memory-segment-store.d.ts.map +1 -0
  289. package/dist/cache/memory-segment-store.js +117 -0
  290. package/dist/cache/memory-segment-store.js.map +1 -0
  291. package/dist/cache/memory-store.d.ts +41 -0
  292. package/dist/cache/memory-store.d.ts.map +1 -0
  293. package/dist/cache/memory-store.js +191 -0
  294. package/dist/cache/memory-store.js.map +1 -0
  295. package/dist/cache/types.d.ts +317 -0
  296. package/dist/cache/types.d.ts.map +1 -0
  297. package/dist/cache/types.js +12 -0
  298. package/dist/cache/types.js.map +1 -0
  299. package/dist/client.d.ts +248 -0
  300. package/dist/client.d.ts.map +1 -0
  301. package/dist/client.js +367 -0
  302. package/dist/client.js.map +1 -0
  303. package/dist/client.rsc.d.ts +26 -0
  304. package/dist/client.rsc.d.ts.map +1 -0
  305. package/dist/client.rsc.js +46 -0
  306. package/dist/client.rsc.js.map +1 -0
  307. package/dist/component-utils.d.ts +36 -0
  308. package/dist/component-utils.d.ts.map +1 -0
  309. package/dist/component-utils.js +61 -0
  310. package/dist/component-utils.js.map +1 -0
  311. package/dist/components/DefaultDocument.d.ts +13 -0
  312. package/dist/components/DefaultDocument.d.ts.map +1 -0
  313. package/dist/components/DefaultDocument.js +15 -0
  314. package/dist/components/DefaultDocument.js.map +1 -0
  315. package/dist/debug.d.ts +58 -0
  316. package/dist/debug.d.ts.map +1 -0
  317. package/dist/debug.js +157 -0
  318. package/dist/debug.js.map +1 -0
  319. package/dist/default-error-boundary.d.ts +11 -0
  320. package/dist/default-error-boundary.d.ts.map +1 -0
  321. package/dist/default-error-boundary.js +45 -0
  322. package/dist/default-error-boundary.js.map +1 -0
  323. package/dist/deps/browser.d.ts +2 -0
  324. package/dist/deps/browser.d.ts.map +1 -0
  325. package/dist/deps/browser.js +3 -0
  326. package/dist/deps/browser.js.map +1 -0
  327. package/dist/deps/html-stream-client.d.ts +2 -0
  328. package/dist/deps/html-stream-client.d.ts.map +1 -0
  329. package/dist/deps/html-stream-client.js +3 -0
  330. package/dist/deps/html-stream-client.js.map +1 -0
  331. package/dist/deps/html-stream-server.d.ts +2 -0
  332. package/dist/deps/html-stream-server.d.ts.map +1 -0
  333. package/dist/deps/html-stream-server.js +3 -0
  334. package/dist/deps/html-stream-server.js.map +1 -0
  335. package/dist/deps/rsc.d.ts +2 -0
  336. package/dist/deps/rsc.d.ts.map +1 -0
  337. package/dist/deps/rsc.js +4 -0
  338. package/dist/deps/rsc.js.map +1 -0
  339. package/dist/deps/ssr.d.ts +2 -0
  340. package/dist/deps/ssr.d.ts.map +1 -0
  341. package/dist/deps/ssr.js +3 -0
  342. package/dist/deps/ssr.js.map +1 -0
  343. package/dist/errors.d.ts +174 -0
  344. package/dist/errors.d.ts.map +1 -0
  345. package/dist/errors.js +241 -0
  346. package/dist/errors.js.map +1 -0
  347. package/dist/handle.d.ts +78 -0
  348. package/dist/handle.d.ts.map +1 -0
  349. package/dist/handle.js +82 -0
  350. package/dist/handle.js.map +1 -0
  351. package/dist/handles/MetaTags.d.ts +14 -0
  352. package/dist/handles/MetaTags.d.ts.map +1 -0
  353. package/dist/handles/MetaTags.js +136 -0
  354. package/dist/handles/MetaTags.js.map +1 -0
  355. package/dist/handles/index.d.ts +6 -0
  356. package/dist/handles/index.d.ts.map +1 -0
  357. package/dist/handles/index.js +6 -0
  358. package/dist/handles/index.js.map +1 -0
  359. package/dist/handles/meta.d.ts +39 -0
  360. package/dist/handles/meta.d.ts.map +1 -0
  361. package/dist/handles/meta.js +202 -0
  362. package/dist/handles/meta.js.map +1 -0
  363. package/dist/host/__tests__/errors.test.d.ts +2 -0
  364. package/dist/host/__tests__/errors.test.d.ts.map +1 -0
  365. package/dist/host/__tests__/errors.test.js +76 -0
  366. package/dist/host/__tests__/errors.test.js.map +1 -0
  367. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +2 -0
  368. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +1 -0
  369. package/dist/host/__tests__/pattern-comprehensive.test.js +732 -0
  370. package/dist/host/__tests__/pattern-comprehensive.test.js.map +1 -0
  371. package/dist/host/__tests__/pattern-matcher.test.d.ts +2 -0
  372. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +1 -0
  373. package/dist/host/__tests__/pattern-matcher.test.js +251 -0
  374. package/dist/host/__tests__/pattern-matcher.test.js.map +1 -0
  375. package/dist/host/__tests__/router.test.d.ts +2 -0
  376. package/dist/host/__tests__/router.test.d.ts.map +1 -0
  377. package/dist/host/__tests__/router.test.js +241 -0
  378. package/dist/host/__tests__/router.test.js.map +1 -0
  379. package/dist/host/__tests__/testing.test.d.ts +2 -0
  380. package/dist/host/__tests__/testing.test.d.ts.map +1 -0
  381. package/dist/host/__tests__/testing.test.js +64 -0
  382. package/dist/host/__tests__/testing.test.js.map +1 -0
  383. package/dist/host/__tests__/utils.test.d.ts +2 -0
  384. package/dist/host/__tests__/utils.test.d.ts.map +1 -0
  385. package/dist/host/__tests__/utils.test.js +29 -0
  386. package/dist/host/__tests__/utils.test.js.map +1 -0
  387. package/dist/host/cookie-handler.d.ts +34 -0
  388. package/dist/host/cookie-handler.d.ts.map +1 -0
  389. package/dist/host/cookie-handler.js +124 -0
  390. package/dist/host/cookie-handler.js.map +1 -0
  391. package/dist/host/errors.d.ts +56 -0
  392. package/dist/host/errors.d.ts.map +1 -0
  393. package/dist/host/errors.js +79 -0
  394. package/dist/host/errors.js.map +1 -0
  395. package/dist/host/index.d.ts +29 -0
  396. package/dist/host/index.d.ts.map +1 -0
  397. package/dist/host/index.js +32 -0
  398. package/dist/host/index.js.map +1 -0
  399. package/dist/host/pattern-matcher.d.ts +36 -0
  400. package/dist/host/pattern-matcher.d.ts.map +1 -0
  401. package/dist/host/pattern-matcher.js +172 -0
  402. package/dist/host/pattern-matcher.js.map +1 -0
  403. package/dist/host/router.d.ts +26 -0
  404. package/dist/host/router.d.ts.map +1 -0
  405. package/dist/host/router.js +218 -0
  406. package/dist/host/router.js.map +1 -0
  407. package/dist/host/testing.d.ts +36 -0
  408. package/dist/host/testing.d.ts.map +1 -0
  409. package/dist/host/testing.js +55 -0
  410. package/dist/host/testing.js.map +1 -0
  411. package/dist/host/types.d.ts +115 -0
  412. package/dist/host/types.d.ts.map +1 -0
  413. package/dist/host/types.js +7 -0
  414. package/dist/host/types.js.map +1 -0
  415. package/dist/host/utils.d.ts +21 -0
  416. package/dist/host/utils.d.ts.map +1 -0
  417. package/dist/host/utils.js +23 -0
  418. package/dist/host/utils.js.map +1 -0
  419. package/dist/href-client.d.ts +131 -0
  420. package/dist/href-client.d.ts.map +1 -0
  421. package/dist/href-client.js +64 -0
  422. package/dist/href-client.js.map +1 -0
  423. package/{src/href-context.ts → dist/href-context.d.ts} +7 -11
  424. package/dist/href-context.d.ts.map +1 -0
  425. package/dist/href-context.js +21 -0
  426. package/dist/href-context.js.map +1 -0
  427. package/dist/index.d.ts +73 -0
  428. package/dist/index.d.ts.map +1 -0
  429. package/dist/index.js +91 -0
  430. package/dist/index.js.map +1 -0
  431. package/dist/index.rsc.d.ts +32 -0
  432. package/dist/index.rsc.d.ts.map +1 -0
  433. package/dist/index.rsc.js +40 -0
  434. package/dist/index.rsc.js.map +1 -0
  435. package/dist/internal-debug.d.ts +2 -0
  436. package/dist/internal-debug.d.ts.map +1 -0
  437. package/dist/internal-debug.js +5 -0
  438. package/dist/internal-debug.js.map +1 -0
  439. package/dist/loader.d.ts +14 -0
  440. package/dist/loader.d.ts.map +1 -0
  441. package/dist/loader.js +20 -0
  442. package/dist/loader.js.map +1 -0
  443. package/dist/loader.rsc.d.ts +19 -0
  444. package/dist/loader.rsc.d.ts.map +1 -0
  445. package/dist/loader.rsc.js +99 -0
  446. package/dist/loader.rsc.js.map +1 -0
  447. package/dist/network-error-thrower.d.ts +17 -0
  448. package/dist/network-error-thrower.d.ts.map +1 -0
  449. package/dist/network-error-thrower.js +14 -0
  450. package/dist/network-error-thrower.js.map +1 -0
  451. package/dist/outlet-context.d.ts +13 -0
  452. package/dist/outlet-context.d.ts.map +1 -0
  453. package/dist/outlet-context.js +3 -0
  454. package/dist/outlet-context.js.map +1 -0
  455. package/dist/prerender/__tests__/param-hash.test.d.ts +2 -0
  456. package/dist/prerender/__tests__/param-hash.test.d.ts.map +1 -0
  457. package/dist/prerender/__tests__/param-hash.test.js +148 -0
  458. package/dist/prerender/__tests__/param-hash.test.js.map +1 -0
  459. package/dist/prerender/param-hash.d.ts +16 -0
  460. package/dist/prerender/param-hash.d.ts.map +1 -0
  461. package/dist/prerender/param-hash.js +36 -0
  462. package/dist/prerender/param-hash.js.map +1 -0
  463. package/dist/prerender/store.d.ts +38 -0
  464. package/dist/prerender/store.d.ts.map +1 -0
  465. package/dist/prerender/store.js +61 -0
  466. package/dist/prerender/store.js.map +1 -0
  467. package/dist/prerender.d.ts +66 -0
  468. package/dist/prerender.d.ts.map +1 -0
  469. package/dist/prerender.js +57 -0
  470. package/dist/prerender.js.map +1 -0
  471. package/dist/reverse.d.ts +196 -0
  472. package/dist/reverse.d.ts.map +1 -0
  473. package/dist/reverse.js +78 -0
  474. package/dist/reverse.js.map +1 -0
  475. package/dist/root-error-boundary.d.ts +33 -0
  476. package/dist/root-error-boundary.d.ts.map +1 -0
  477. package/dist/root-error-boundary.js +165 -0
  478. package/dist/root-error-boundary.js.map +1 -0
  479. package/dist/route-content-wrapper.d.ts +46 -0
  480. package/dist/route-content-wrapper.d.ts.map +1 -0
  481. package/dist/route-content-wrapper.js +77 -0
  482. package/dist/route-content-wrapper.js.map +1 -0
  483. package/dist/route-definition.d.ts +421 -0
  484. package/dist/route-definition.d.ts.map +1 -0
  485. package/dist/route-definition.js +868 -0
  486. package/dist/route-definition.js.map +1 -0
  487. package/dist/route-map-builder.d.ts +155 -0
  488. package/dist/route-map-builder.d.ts.map +1 -0
  489. package/dist/route-map-builder.js +237 -0
  490. package/dist/route-map-builder.js.map +1 -0
  491. package/dist/route-types.d.ts +165 -0
  492. package/dist/route-types.d.ts.map +1 -0
  493. package/dist/route-types.js +7 -0
  494. package/dist/route-types.js.map +1 -0
  495. package/dist/router/__tests__/handler-context.test.d.ts +2 -0
  496. package/dist/router/__tests__/handler-context.test.d.ts.map +1 -0
  497. package/dist/router/__tests__/handler-context.test.js +65 -0
  498. package/dist/router/__tests__/handler-context.test.js.map +1 -0
  499. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +2 -0
  500. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +1 -0
  501. package/dist/router/__tests__/loader-cycle-detection.test.js +221 -0
  502. package/dist/router/__tests__/loader-cycle-detection.test.js.map +1 -0
  503. package/dist/router/__tests__/match-context.test.d.ts +2 -0
  504. package/dist/router/__tests__/match-context.test.d.ts.map +1 -0
  505. package/dist/router/__tests__/match-context.test.js +92 -0
  506. package/dist/router/__tests__/match-context.test.js.map +1 -0
  507. package/dist/router/__tests__/match-pipelines.test.d.ts +2 -0
  508. package/dist/router/__tests__/match-pipelines.test.d.ts.map +1 -0
  509. package/dist/router/__tests__/match-pipelines.test.js +417 -0
  510. package/dist/router/__tests__/match-pipelines.test.js.map +1 -0
  511. package/dist/router/__tests__/match-result.test.d.ts +2 -0
  512. package/dist/router/__tests__/match-result.test.d.ts.map +1 -0
  513. package/dist/router/__tests__/match-result.test.js +457 -0
  514. package/dist/router/__tests__/match-result.test.js.map +1 -0
  515. package/dist/router/__tests__/on-error.test.d.ts +2 -0
  516. package/dist/router/__tests__/on-error.test.d.ts.map +1 -0
  517. package/dist/router/__tests__/on-error.test.js +678 -0
  518. package/dist/router/__tests__/on-error.test.js.map +1 -0
  519. package/dist/router/__tests__/pattern-matching.test.d.ts +2 -0
  520. package/dist/router/__tests__/pattern-matching.test.d.ts.map +1 -0
  521. package/dist/router/__tests__/pattern-matching.test.js +629 -0
  522. package/dist/router/__tests__/pattern-matching.test.js.map +1 -0
  523. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +2 -0
  524. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +1 -0
  525. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +155 -0
  526. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +1 -0
  527. package/dist/router/error-handling.d.ts +77 -0
  528. package/dist/router/error-handling.d.ts.map +1 -0
  529. package/dist/router/error-handling.js +202 -0
  530. package/dist/router/error-handling.js.map +1 -0
  531. package/dist/router/handler-context.d.ts +20 -0
  532. package/dist/router/handler-context.d.ts.map +1 -0
  533. package/dist/router/handler-context.js +198 -0
  534. package/dist/router/handler-context.js.map +1 -0
  535. package/dist/router/intercept-resolution.d.ts +66 -0
  536. package/dist/router/intercept-resolution.d.ts.map +1 -0
  537. package/dist/router/intercept-resolution.js +246 -0
  538. package/dist/router/intercept-resolution.js.map +1 -0
  539. package/dist/router/loader-resolution.d.ts +64 -0
  540. package/dist/router/loader-resolution.d.ts.map +1 -0
  541. package/dist/router/loader-resolution.js +284 -0
  542. package/dist/router/loader-resolution.js.map +1 -0
  543. package/dist/router/logging.d.ts +15 -0
  544. package/dist/router/logging.d.ts.map +1 -0
  545. package/dist/router/logging.js +99 -0
  546. package/dist/router/logging.js.map +1 -0
  547. package/dist/router/manifest.d.ts +22 -0
  548. package/dist/router/manifest.d.ts.map +1 -0
  549. package/dist/router/manifest.js +181 -0
  550. package/dist/router/manifest.js.map +1 -0
  551. package/dist/router/match-api.d.ts +35 -0
  552. package/dist/router/match-api.d.ts.map +1 -0
  553. package/dist/router/match-api.js +406 -0
  554. package/dist/router/match-api.js.map +1 -0
  555. package/dist/router/match-context.d.ts +206 -0
  556. package/dist/router/match-context.d.ts.map +1 -0
  557. package/dist/router/match-context.js +17 -0
  558. package/dist/router/match-context.js.map +1 -0
  559. package/dist/router/match-middleware/background-revalidation.d.ts +127 -0
  560. package/dist/router/match-middleware/background-revalidation.d.ts.map +1 -0
  561. package/dist/router/match-middleware/background-revalidation.js +75 -0
  562. package/dist/router/match-middleware/background-revalidation.js.map +1 -0
  563. package/dist/router/match-middleware/cache-lookup.d.ts +112 -0
  564. package/dist/router/match-middleware/cache-lookup.d.ts.map +1 -0
  565. package/dist/router/match-middleware/cache-lookup.js +257 -0
  566. package/dist/router/match-middleware/cache-lookup.js.map +1 -0
  567. package/dist/router/match-middleware/cache-store.d.ts +113 -0
  568. package/dist/router/match-middleware/cache-store.d.ts.map +1 -0
  569. package/dist/router/match-middleware/cache-store.js +108 -0
  570. package/dist/router/match-middleware/cache-store.js.map +1 -0
  571. package/dist/router/match-middleware/index.d.ts +81 -0
  572. package/dist/router/match-middleware/index.d.ts.map +1 -0
  573. package/dist/router/match-middleware/index.js +80 -0
  574. package/dist/router/match-middleware/index.js.map +1 -0
  575. package/dist/router/match-middleware/intercept-resolution.d.ts +117 -0
  576. package/dist/router/match-middleware/intercept-resolution.d.ts.map +1 -0
  577. package/dist/router/match-middleware/intercept-resolution.js +134 -0
  578. package/dist/router/match-middleware/intercept-resolution.js.map +1 -0
  579. package/dist/router/match-middleware/segment-resolution.d.ts +99 -0
  580. package/dist/router/match-middleware/segment-resolution.d.ts.map +1 -0
  581. package/dist/router/match-middleware/segment-resolution.js +53 -0
  582. package/dist/router/match-middleware/segment-resolution.js.map +1 -0
  583. package/dist/router/match-pipelines.d.ts +147 -0
  584. package/dist/router/match-pipelines.d.ts.map +1 -0
  585. package/dist/router/match-pipelines.js +82 -0
  586. package/dist/router/match-pipelines.js.map +1 -0
  587. package/dist/router/match-result.d.ts +126 -0
  588. package/dist/router/match-result.d.ts.map +1 -0
  589. package/dist/router/match-result.js +93 -0
  590. package/dist/router/match-result.js.map +1 -0
  591. package/dist/router/metrics.d.ts +20 -0
  592. package/dist/router/metrics.d.ts.map +1 -0
  593. package/dist/router/metrics.js +47 -0
  594. package/dist/router/metrics.js.map +1 -0
  595. package/dist/router/middleware.d.ts +249 -0
  596. package/dist/router/middleware.d.ts.map +1 -0
  597. package/dist/router/middleware.js +434 -0
  598. package/dist/router/middleware.js.map +1 -0
  599. package/dist/router/middleware.test.d.ts +2 -0
  600. package/dist/router/middleware.test.d.ts.map +1 -0
  601. package/dist/router/middleware.test.js +816 -0
  602. package/dist/router/middleware.test.js.map +1 -0
  603. package/dist/router/pattern-matching.d.ts +149 -0
  604. package/dist/router/pattern-matching.d.ts.map +1 -0
  605. package/dist/router/pattern-matching.js +349 -0
  606. package/dist/router/pattern-matching.js.map +1 -0
  607. package/dist/router/revalidation.d.ts +44 -0
  608. package/dist/router/revalidation.d.ts.map +1 -0
  609. package/dist/router/revalidation.js +147 -0
  610. package/dist/router/revalidation.js.map +1 -0
  611. package/dist/router/router-context.d.ts +135 -0
  612. package/dist/router/router-context.d.ts.map +1 -0
  613. package/dist/router/router-context.js +36 -0
  614. package/dist/router/router-context.js.map +1 -0
  615. package/dist/router/segment-resolution.d.ts +127 -0
  616. package/dist/router/segment-resolution.d.ts.map +1 -0
  617. package/dist/router/segment-resolution.js +919 -0
  618. package/dist/router/segment-resolution.js.map +1 -0
  619. package/dist/router/trie-matching.d.ts +40 -0
  620. package/dist/router/trie-matching.d.ts.map +1 -0
  621. package/dist/router/trie-matching.js +127 -0
  622. package/dist/router/trie-matching.js.map +1 -0
  623. package/dist/router/types.d.ts +136 -0
  624. package/dist/router/types.d.ts.map +1 -0
  625. package/dist/router/types.js +7 -0
  626. package/dist/router/types.js.map +1 -0
  627. package/dist/router.d.ts +753 -0
  628. package/dist/router.d.ts.map +1 -0
  629. package/dist/router.gen.d.ts +6 -0
  630. package/dist/router.gen.d.ts.map +1 -0
  631. package/dist/router.gen.js +6 -0
  632. package/dist/router.gen.js.map +1 -0
  633. package/dist/router.js +1304 -0
  634. package/dist/router.js.map +1 -0
  635. package/dist/rsc/__tests__/helpers.test.d.ts +2 -0
  636. package/dist/rsc/__tests__/helpers.test.d.ts.map +1 -0
  637. package/dist/rsc/__tests__/helpers.test.js +140 -0
  638. package/dist/rsc/__tests__/helpers.test.js.map +1 -0
  639. package/dist/rsc/handler.d.ts +45 -0
  640. package/dist/rsc/handler.d.ts.map +1 -0
  641. package/dist/rsc/handler.js +1172 -0
  642. package/dist/rsc/handler.js.map +1 -0
  643. package/dist/rsc/helpers.d.ts +16 -0
  644. package/dist/rsc/helpers.d.ts.map +1 -0
  645. package/dist/rsc/helpers.js +55 -0
  646. package/dist/rsc/helpers.js.map +1 -0
  647. package/dist/rsc/index.d.ts +22 -0
  648. package/dist/rsc/index.d.ts.map +1 -0
  649. package/dist/rsc/index.js +23 -0
  650. package/dist/rsc/index.js.map +1 -0
  651. package/dist/rsc/nonce.d.ts +9 -0
  652. package/dist/rsc/nonce.d.ts.map +1 -0
  653. package/dist/rsc/nonce.js +18 -0
  654. package/dist/rsc/nonce.js.map +1 -0
  655. package/dist/rsc/types.d.ts +206 -0
  656. package/dist/rsc/types.d.ts.map +1 -0
  657. package/dist/rsc/types.js +8 -0
  658. package/dist/rsc/types.js.map +1 -0
  659. package/dist/search-params.d.ts +103 -0
  660. package/dist/search-params.d.ts.map +1 -0
  661. package/dist/search-params.js +74 -0
  662. package/dist/search-params.js.map +1 -0
  663. package/dist/segment-system.d.ts +75 -0
  664. package/dist/segment-system.d.ts.map +1 -0
  665. package/dist/segment-system.js +336 -0
  666. package/dist/segment-system.js.map +1 -0
  667. package/dist/server/context.d.ts +245 -0
  668. package/dist/server/context.d.ts.map +1 -0
  669. package/dist/server/context.js +197 -0
  670. package/dist/server/context.js.map +1 -0
  671. package/dist/server/fetchable-loader-store.d.ts +18 -0
  672. package/dist/server/fetchable-loader-store.d.ts.map +1 -0
  673. package/dist/server/fetchable-loader-store.js +18 -0
  674. package/dist/server/fetchable-loader-store.js.map +1 -0
  675. package/dist/server/handle-store.d.ts +85 -0
  676. package/dist/server/handle-store.d.ts.map +1 -0
  677. package/dist/server/handle-store.js +142 -0
  678. package/dist/server/handle-store.js.map +1 -0
  679. package/dist/server/loader-registry.d.ts +55 -0
  680. package/dist/server/loader-registry.d.ts.map +1 -0
  681. package/dist/server/loader-registry.js +132 -0
  682. package/dist/server/loader-registry.js.map +1 -0
  683. package/dist/server/request-context.d.ts +226 -0
  684. package/dist/server/request-context.d.ts.map +1 -0
  685. package/dist/server/request-context.js +290 -0
  686. package/dist/server/request-context.js.map +1 -0
  687. package/dist/server/root-layout.d.ts +4 -0
  688. package/dist/server/root-layout.d.ts.map +1 -0
  689. package/dist/server/root-layout.js +5 -0
  690. package/dist/server/root-layout.js.map +1 -0
  691. package/dist/server.d.ts +15 -0
  692. package/dist/server.d.ts.map +1 -0
  693. package/dist/server.js +20 -0
  694. package/dist/server.js.map +1 -0
  695. package/dist/ssr/__tests__/ssr-handler.test.d.ts +2 -0
  696. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +1 -0
  697. package/dist/ssr/__tests__/ssr-handler.test.js +132 -0
  698. package/dist/ssr/__tests__/ssr-handler.test.js.map +1 -0
  699. package/dist/ssr/index.d.ts +98 -0
  700. package/dist/ssr/index.d.ts.map +1 -0
  701. package/dist/ssr/index.js +158 -0
  702. package/dist/ssr/index.js.map +1 -0
  703. package/dist/static-handler.d.ts +50 -0
  704. package/dist/static-handler.d.ts.map +1 -0
  705. package/dist/static-handler.gen.d.ts +5 -0
  706. package/dist/static-handler.gen.d.ts.map +1 -0
  707. package/dist/static-handler.gen.js +5 -0
  708. package/dist/static-handler.gen.js.map +1 -0
  709. package/dist/static-handler.js +29 -0
  710. package/dist/static-handler.js.map +1 -0
  711. package/dist/testing/vitest.js +82 -0
  712. package/dist/theme/ThemeProvider.d.ts +20 -0
  713. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  714. package/dist/theme/ThemeProvider.js +240 -0
  715. package/dist/theme/ThemeProvider.js.map +1 -0
  716. package/dist/theme/ThemeScript.d.ts +48 -0
  717. package/dist/theme/ThemeScript.d.ts.map +1 -0
  718. package/dist/theme/ThemeScript.js +13 -0
  719. package/dist/theme/ThemeScript.js.map +1 -0
  720. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  721. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  722. package/dist/theme/__tests__/theme.test.js +103 -0
  723. package/dist/theme/__tests__/theme.test.js.map +1 -0
  724. package/dist/theme/constants.d.ts +29 -0
  725. package/dist/theme/constants.d.ts.map +1 -0
  726. package/dist/theme/constants.js +48 -0
  727. package/dist/theme/constants.js.map +1 -0
  728. package/dist/theme/index.d.ts +31 -0
  729. package/dist/theme/index.d.ts.map +1 -0
  730. package/dist/theme/index.js +36 -0
  731. package/dist/theme/index.js.map +1 -0
  732. package/dist/theme/theme-context.d.ts +40 -0
  733. package/dist/theme/theme-context.d.ts.map +1 -0
  734. package/dist/theme/theme-context.js +60 -0
  735. package/dist/theme/theme-context.js.map +1 -0
  736. package/dist/theme/theme-script.d.ts +27 -0
  737. package/dist/theme/theme-script.d.ts.map +1 -0
  738. package/dist/theme/theme-script.js +147 -0
  739. package/dist/theme/theme-script.js.map +1 -0
  740. package/dist/theme/types.d.ts +163 -0
  741. package/dist/theme/types.d.ts.map +1 -0
  742. package/dist/theme/types.js +11 -0
  743. package/dist/theme/types.js.map +1 -0
  744. package/dist/theme/use-theme.d.ts +12 -0
  745. package/dist/theme/use-theme.d.ts.map +1 -0
  746. package/dist/theme/use-theme.js +40 -0
  747. package/dist/theme/use-theme.js.map +1 -0
  748. package/dist/types.d.ts +1479 -0
  749. package/dist/types.d.ts.map +1 -0
  750. package/dist/types.js +10 -0
  751. package/dist/types.js.map +1 -0
  752. package/dist/urls.d.ts +441 -0
  753. package/dist/urls.d.ts.map +1 -0
  754. package/dist/urls.gen.d.ts +8 -0
  755. package/dist/urls.gen.d.ts.map +1 -0
  756. package/dist/urls.gen.js +8 -0
  757. package/dist/urls.gen.js.map +1 -0
  758. package/dist/urls.js +443 -0
  759. package/dist/urls.js.map +1 -0
  760. package/dist/use-loader.d.ts +127 -0
  761. package/dist/use-loader.d.ts.map +1 -0
  762. package/dist/use-loader.js +237 -0
  763. package/dist/use-loader.js.map +1 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  767. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  771. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  775. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  777. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  779. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  780. package/dist/vite/ast-handler-extract.d.ts +49 -0
  781. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  782. package/dist/vite/ast-handler-extract.js +249 -0
  783. package/dist/vite/ast-handler-extract.js.map +1 -0
  784. package/dist/vite/expose-action-id.d.ts +19 -0
  785. package/dist/vite/expose-action-id.d.ts.map +1 -0
  786. package/dist/vite/expose-action-id.js +250 -0
  787. package/dist/vite/expose-action-id.js.map +1 -0
  788. package/dist/vite/expose-id-utils.d.ts +69 -0
  789. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  790. package/dist/vite/expose-id-utils.js +289 -0
  791. package/dist/vite/expose-id-utils.js.map +1 -0
  792. package/dist/vite/expose-internal-ids.d.ts +22 -0
  793. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  794. package/dist/vite/expose-internal-ids.js +886 -0
  795. package/dist/vite/expose-internal-ids.js.map +1 -0
  796. package/dist/vite/index.d.ts +149 -0
  797. package/dist/vite/index.d.ts.map +1 -0
  798. package/dist/vite/index.js +5994 -2763
  799. package/dist/vite/index.js.bak +5448 -0
  800. package/dist/vite/index.js.map +1 -0
  801. package/dist/vite/index.named-routes.gen.ts +103 -0
  802. package/dist/vite/package-resolution.d.ts +43 -0
  803. package/dist/vite/package-resolution.d.ts.map +1 -0
  804. package/{src/vite/package-resolution.ts → dist/vite/package-resolution.js} +53 -66
  805. package/dist/vite/package-resolution.js.map +1 -0
  806. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  807. package/dist/vite/virtual-entries.d.ts +25 -0
  808. package/dist/vite/virtual-entries.d.ts.map +1 -0
  809. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +12 -16
  810. package/dist/vite/virtual-entries.js.map +1 -0
  811. package/package.json +64 -54
  812. package/skills/api-client/SKILL.md +211 -0
  813. package/skills/breadcrumbs/SKILL.md +252 -0
  814. package/skills/bundle-analysis/SKILL.md +159 -0
  815. package/skills/cache-guide/SKILL.md +484 -0
  816. package/skills/caching/SKILL.md +202 -24
  817. package/skills/composability/SKILL.md +197 -0
  818. package/skills/css/SKILL.md +76 -0
  819. package/skills/debug-manifest/SKILL.md +12 -8
  820. package/skills/document-cache/SKILL.md +87 -62
  821. package/skills/fonts/SKILL.md +6 -4
  822. package/skills/handler-use/SKILL.md +364 -0
  823. package/skills/hooks/SKILL.md +537 -70
  824. package/skills/host-router/SKILL.md +264 -0
  825. package/skills/i18n/SKILL.md +276 -0
  826. package/skills/intercept/SKILL.md +173 -8
  827. package/skills/layout/SKILL.md +123 -5
  828. package/skills/links/SKILL.md +304 -25
  829. package/skills/loader/SKILL.md +600 -54
  830. package/skills/middleware/SKILL.md +211 -37
  831. package/skills/migrate-nextjs/SKILL.md +562 -0
  832. package/skills/migrate-react-router/SKILL.md +769 -0
  833. package/skills/mime-routes/SKILL.md +41 -10
  834. package/skills/observability/SKILL.md +137 -0
  835. package/skills/parallel/SKILL.md +271 -3
  836. package/skills/prerender/SKILL.md +413 -52
  837. package/skills/rango/SKILL.md +301 -21
  838. package/skills/react-compiler/SKILL.md +168 -0
  839. package/skills/response-routes/SKILL.md +248 -120
  840. package/skills/route/SKILL.md +279 -21
  841. package/skills/router-setup/SKILL.md +211 -33
  842. package/skills/server-actions/SKILL.md +751 -0
  843. package/skills/streams-and-websockets/SKILL.md +283 -0
  844. package/skills/tailwind/SKILL.md +27 -3
  845. package/skills/theme/SKILL.md +9 -8
  846. package/skills/typesafety/SKILL.md +547 -107
  847. package/skills/use-cache/SKILL.md +353 -0
  848. package/skills/view-transitions/SKILL.md +294 -0
  849. package/src/__augment-tests__/augment.ts +81 -0
  850. package/src/__augment-tests__/augmented.check.ts +116 -0
  851. package/src/__internal.ts +102 -4
  852. package/src/bin/rango.ts +312 -15
  853. package/src/browser/action-coordinator.ts +114 -0
  854. package/src/browser/app-shell.ts +39 -0
  855. package/src/browser/app-version.ts +14 -0
  856. package/src/browser/event-controller.ts +172 -128
  857. package/src/browser/history-state.ts +101 -0
  858. package/src/browser/index.ts +3 -3
  859. package/src/browser/intercept-utils.ts +52 -0
  860. package/src/browser/link-interceptor.ts +24 -4
  861. package/src/browser/logging.ts +11 -0
  862. package/src/browser/merge-segment-loaders.ts +20 -12
  863. package/src/browser/navigation-bridge.ts +309 -562
  864. package/src/browser/navigation-client.ts +206 -75
  865. package/src/browser/navigation-store.ts +80 -63
  866. package/src/browser/navigation-transaction.ts +279 -0
  867. package/src/browser/network-error-handler.ts +61 -0
  868. package/src/browser/partial-update.ts +355 -314
  869. package/src/browser/prefetch/cache.ts +363 -0
  870. package/src/browser/prefetch/fetch.ts +350 -0
  871. package/src/browser/prefetch/observer.ts +65 -0
  872. package/src/browser/prefetch/policy.ts +48 -0
  873. package/src/browser/prefetch/queue.ts +191 -0
  874. package/src/browser/prefetch/resource-ready.ts +77 -0
  875. package/src/browser/rango-state.ts +136 -0
  876. package/src/browser/react/Link.tsx +255 -71
  877. package/src/browser/react/NavigationProvider.tsx +153 -33
  878. package/src/browser/react/context.ts +11 -0
  879. package/src/browser/react/filter-segment-order.ts +55 -0
  880. package/src/browser/react/index.ts +15 -12
  881. package/src/browser/react/location-state-shared.ts +269 -56
  882. package/src/browser/react/location-state.ts +90 -19
  883. package/src/browser/react/mount-context.ts +6 -1
  884. package/src/browser/react/nonce-context.ts +23 -0
  885. package/src/browser/react/shallow-equal.ts +27 -0
  886. package/src/browser/react/use-action.ts +29 -51
  887. package/src/browser/react/use-client-cache.ts +5 -3
  888. package/src/browser/react/use-handle.ts +41 -123
  889. package/src/browser/react/use-link-status.ts +6 -5
  890. package/src/browser/react/use-navigation.ts +44 -65
  891. package/src/browser/react/use-params.ts +77 -0
  892. package/src/browser/react/use-pathname.ts +47 -0
  893. package/src/browser/react/use-reverse.ts +106 -0
  894. package/src/browser/react/use-router.ts +97 -0
  895. package/src/browser/react/use-search-params.ts +56 -0
  896. package/src/browser/react/use-segments.ts +85 -99
  897. package/src/browser/response-adapter.ts +124 -0
  898. package/src/browser/rsc-router.tsx +275 -72
  899. package/src/browser/scroll-restoration.ts +132 -49
  900. package/src/browser/segment-reconciler.ts +243 -0
  901. package/src/browser/segment-structure-assert.ts +17 -1
  902. package/src/browser/server-action-bridge.ts +508 -610
  903. package/src/browser/shallow.ts +6 -1
  904. package/src/browser/types.ts +149 -48
  905. package/src/browser/validate-redirect-origin.ts +29 -0
  906. package/src/build/collect-fallback-refs.ts +107 -0
  907. package/src/build/generate-manifest.ts +123 -56
  908. package/src/build/generate-route-types.ts +41 -1029
  909. package/src/build/index.ts +4 -0
  910. package/src/build/prefix-tree-utils.ts +123 -0
  911. package/src/build/route-trie.ts +127 -31
  912. package/src/build/route-types/ast-helpers.ts +25 -0
  913. package/src/build/route-types/ast-route-extraction.ts +98 -0
  914. package/src/build/route-types/codegen.ts +102 -0
  915. package/src/build/route-types/include-resolution.ts +418 -0
  916. package/src/build/route-types/param-extraction.ts +48 -0
  917. package/src/build/route-types/per-module-writer.ts +131 -0
  918. package/src/build/route-types/router-processing.ts +659 -0
  919. package/src/build/route-types/scan-filter.ts +85 -0
  920. package/src/build/route-types/source-scan.ts +118 -0
  921. package/src/build/runtime-discovery.ts +220 -0
  922. package/src/cache/background-task.ts +34 -0
  923. package/src/cache/cache-key-utils.ts +44 -0
  924. package/src/cache/cache-policy.ts +125 -0
  925. package/src/cache/cache-runtime.ts +354 -0
  926. package/src/cache/cache-scope.ts +170 -308
  927. package/src/cache/cf/cf-cache-store.ts +696 -30
  928. package/src/cache/cf/index.ts +13 -3
  929. package/src/cache/document-cache.ts +116 -77
  930. package/src/cache/handle-capture.ts +81 -0
  931. package/src/cache/handle-snapshot.ts +144 -0
  932. package/src/cache/index.ts +1 -15
  933. package/src/cache/memory-segment-store.ts +192 -13
  934. package/src/cache/profile-registry.ts +73 -0
  935. package/src/cache/read-through-swr.ts +134 -0
  936. package/src/cache/segment-codec.ts +256 -0
  937. package/src/cache/taint.ts +153 -0
  938. package/src/cache/types.ts +78 -124
  939. package/src/client.rsc.tsx +6 -1
  940. package/src/client.tsx +117 -322
  941. package/src/component-utils.ts +4 -4
  942. package/src/components/DefaultDocument.tsx +5 -1
  943. package/src/context-var.ts +156 -0
  944. package/src/debug.ts +19 -9
  945. package/src/decode-loader-results.ts +36 -0
  946. package/src/errors.ts +106 -10
  947. package/src/handle.ts +54 -11
  948. package/src/handles/MetaTags.tsx +73 -20
  949. package/src/handles/breadcrumbs.ts +66 -0
  950. package/src/handles/index.ts +1 -0
  951. package/src/handles/meta.ts +30 -13
  952. package/src/host/cookie-handler.ts +21 -15
  953. package/src/host/errors.ts +8 -8
  954. package/src/host/index.ts +6 -9
  955. package/src/host/pattern-matcher.ts +27 -27
  956. package/src/host/router.ts +176 -82
  957. package/src/host/testing.ts +8 -8
  958. package/src/host/types.ts +46 -9
  959. package/src/host/utils.ts +2 -2
  960. package/src/href-client.ts +196 -57
  961. package/src/index.rsc.ts +112 -42
  962. package/src/index.ts +178 -74
  963. package/src/internal-debug.ts +9 -3
  964. package/src/loader-store.ts +500 -0
  965. package/src/loader.rsc.ts +15 -93
  966. package/src/loader.ts +20 -10
  967. package/src/missing-id-error.ts +68 -0
  968. package/src/network-error-thrower.tsx +3 -1
  969. package/src/outlet-context.ts +1 -1
  970. package/src/outlet-provider.tsx +45 -0
  971. package/src/prerender/param-hash.ts +4 -2
  972. package/src/prerender/store.ts +125 -18
  973. package/src/prerender.ts +389 -23
  974. package/src/response-utils.ts +37 -0
  975. package/src/reverse.ts +198 -128
  976. package/src/root-error-boundary.tsx +41 -29
  977. package/src/route-content-wrapper.tsx +13 -32
  978. package/src/route-definition/dsl-helpers.ts +1109 -0
  979. package/src/route-definition/helper-factories.ts +90 -0
  980. package/src/route-definition/helpers-types.ts +506 -0
  981. package/src/route-definition/index.ts +55 -0
  982. package/src/route-definition/redirect.ts +101 -0
  983. package/src/route-definition/resolve-handler-use.ts +155 -0
  984. package/src/route-definition/use-item-types.ts +32 -0
  985. package/src/route-definition.ts +1 -1450
  986. package/src/route-map-builder.ts +87 -133
  987. package/src/route-name.ts +53 -0
  988. package/src/route-types.ts +72 -41
  989. package/src/router/content-negotiation.ts +228 -0
  990. package/src/router/debug-manifest.ts +72 -0
  991. package/src/router/error-handling.ts +10 -10
  992. package/src/router/find-match.ts +208 -0
  993. package/src/router/handler-context.ts +372 -125
  994. package/src/router/intercept-resolution.ts +24 -26
  995. package/src/router/lazy-includes.ts +256 -0
  996. package/src/router/loader-resolution.ts +367 -140
  997. package/src/router/logging.ts +112 -6
  998. package/src/router/manifest.ts +89 -28
  999. package/src/router/match-api.ts +175 -238
  1000. package/src/router/match-context.ts +4 -2
  1001. package/src/router/match-handlers.ts +441 -0
  1002. package/src/router/match-middleware/background-revalidation.ts +97 -89
  1003. package/src/router/match-middleware/cache-lookup.ts +289 -54
  1004. package/src/router/match-middleware/cache-store.ts +78 -17
  1005. package/src/router/match-middleware/intercept-resolution.ts +45 -22
  1006. package/src/router/match-middleware/segment-resolution.ts +73 -9
  1007. package/src/router/match-pipelines.ts +10 -45
  1008. package/src/router/match-result.ts +146 -24
  1009. package/src/router/metrics.ts +241 -16
  1010. package/src/router/middleware-cookies.ts +55 -0
  1011. package/src/router/middleware-types.ts +209 -0
  1012. package/src/router/middleware.ts +354 -384
  1013. package/src/router/navigation-snapshot.ts +182 -0
  1014. package/src/router/pattern-matching.ts +279 -44
  1015. package/src/router/prerender-match.ts +527 -0
  1016. package/src/router/preview-match.ts +100 -0
  1017. package/src/router/request-classification.ts +313 -0
  1018. package/src/router/revalidation.ts +163 -16
  1019. package/src/router/route-snapshot.ts +245 -0
  1020. package/src/router/router-context.ts +41 -21
  1021. package/src/router/router-interfaces.ts +500 -0
  1022. package/src/router/router-options.ts +642 -0
  1023. package/src/router/router-registry.ts +21 -0
  1024. package/src/router/segment-resolution/fresh.ts +769 -0
  1025. package/src/router/segment-resolution/helpers.ts +268 -0
  1026. package/src/router/segment-resolution/loader-cache.ts +199 -0
  1027. package/src/router/segment-resolution/revalidation.ts +1420 -0
  1028. package/src/router/segment-resolution/static-store.ts +81 -0
  1029. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  1030. package/src/router/segment-resolution.ts +21 -1354
  1031. package/src/router/segment-wrappers.ts +291 -0
  1032. package/src/router/substitute-pattern-params.ts +56 -0
  1033. package/src/router/telemetry-otel.ts +299 -0
  1034. package/src/router/telemetry.ts +300 -0
  1035. package/src/router/timeout.ts +148 -0
  1036. package/src/router/trie-matching.ts +133 -42
  1037. package/src/router/types.ts +24 -9
  1038. package/src/router/url-params.ts +49 -0
  1039. package/src/router.ts +710 -2373
  1040. package/src/rsc/handler-context.ts +45 -0
  1041. package/src/rsc/handler.ts +821 -1128
  1042. package/src/rsc/helpers.ts +182 -19
  1043. package/src/rsc/index.ts +1 -21
  1044. package/src/rsc/loader-fetch.ts +229 -0
  1045. package/src/rsc/manifest-init.ts +77 -0
  1046. package/src/rsc/nonce.ts +14 -0
  1047. package/src/rsc/origin-guard.ts +161 -0
  1048. package/src/rsc/progressive-enhancement.ts +395 -0
  1049. package/src/rsc/response-error.ts +104 -0
  1050. package/src/rsc/response-route-handler.ts +362 -0
  1051. package/src/rsc/rsc-rendering.ts +240 -0
  1052. package/src/rsc/runtime-warnings.ts +41 -0
  1053. package/src/rsc/server-action.ts +350 -0
  1054. package/src/rsc/ssr-setup.ts +144 -0
  1055. package/src/rsc/types.ts +52 -11
  1056. package/src/search-params.ts +70 -58
  1057. package/src/segment-content-promise.ts +67 -0
  1058. package/src/segment-loader-promise.ts +122 -0
  1059. package/src/segment-system.tsx +237 -73
  1060. package/src/serialize.ts +243 -0
  1061. package/src/server/context.ts +439 -85
  1062. package/src/server/cookie-store.ts +214 -0
  1063. package/src/server/fetchable-loader-store.ts +11 -6
  1064. package/src/server/handle-store.ts +113 -15
  1065. package/src/server/loader-registry.ts +24 -64
  1066. package/src/server/request-context.ts +640 -107
  1067. package/src/server.ts +26 -164
  1068. package/src/ssr/index.tsx +107 -30
  1069. package/src/static-handler.ts +39 -9
  1070. package/src/theme/ThemeProvider.tsx +21 -15
  1071. package/src/theme/ThemeScript.tsx +5 -5
  1072. package/src/theme/constants.ts +5 -2
  1073. package/src/theme/index.ts +4 -14
  1074. package/src/theme/theme-context.ts +4 -30
  1075. package/src/theme/theme-script.ts +21 -18
  1076. package/src/types/boundaries.ts +158 -0
  1077. package/src/types/cache-types.ts +198 -0
  1078. package/src/types/error-types.ts +192 -0
  1079. package/src/types/global-namespace.ts +113 -0
  1080. package/src/types/handler-context.ts +809 -0
  1081. package/src/types/index.ts +89 -0
  1082. package/src/types/loader-types.ts +212 -0
  1083. package/src/types/request-scope.ts +126 -0
  1084. package/src/types/route-config.ts +170 -0
  1085. package/src/types/route-entry.ts +120 -0
  1086. package/src/types/segments.ts +184 -0
  1087. package/src/types.ts +1 -1795
  1088. package/src/urls/include-helper.ts +164 -0
  1089. package/src/urls/index.ts +49 -0
  1090. package/src/urls/path-helper-types.ts +386 -0
  1091. package/src/urls/path-helper.ts +329 -0
  1092. package/src/urls/pattern-types.ts +124 -0
  1093. package/src/urls/response-types.ts +109 -0
  1094. package/src/urls/type-extraction.ts +291 -0
  1095. package/src/urls/urls-function.ts +94 -0
  1096. package/src/urls.ts +1 -1323
  1097. package/src/use-loader.tsx +559 -108
  1098. package/src/vite/debug.ts +185 -0
  1099. package/src/vite/discovery/bundle-postprocess.ts +181 -0
  1100. package/src/vite/discovery/discover-routers.ts +379 -0
  1101. package/src/vite/discovery/discovery-errors.ts +194 -0
  1102. package/src/vite/discovery/gate-state.ts +171 -0
  1103. package/src/vite/discovery/prerender-collection.ts +480 -0
  1104. package/src/vite/discovery/route-types-writer.ts +214 -0
  1105. package/src/vite/discovery/self-gen-tracking.ts +73 -0
  1106. package/src/vite/discovery/state.ts +150 -0
  1107. package/src/vite/discovery/virtual-module-codegen.ts +193 -0
  1108. package/src/vite/index.ts +17 -2261
  1109. package/src/vite/plugin-types.ts +170 -0
  1110. package/src/vite/plugins/cjs-to-esm.ts +94 -0
  1111. package/src/vite/plugins/client-ref-dedup.ts +131 -0
  1112. package/src/vite/plugins/client-ref-hashing.ts +128 -0
  1113. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  1114. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  1115. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  1116. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +109 -60
  1117. package/src/vite/{expose-id-utils.ts → plugins/expose-id-utils.ts} +32 -51
  1118. package/src/vite/plugins/expose-ids/export-analysis.ts +376 -0
  1119. package/src/vite/plugins/expose-ids/handler-transform.ts +156 -0
  1120. package/src/vite/plugins/expose-ids/loader-transform.ts +72 -0
  1121. package/src/vite/plugins/expose-ids/router-transform.ts +127 -0
  1122. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1123. package/src/vite/plugins/expose-internal-ids.ts +796 -0
  1124. package/src/vite/plugins/performance-tracks.ts +92 -0
  1125. package/src/vite/plugins/refresh-cmd.ts +127 -0
  1126. package/src/vite/plugins/use-cache-transform.ts +338 -0
  1127. package/src/vite/plugins/version-injector.ts +99 -0
  1128. package/src/vite/plugins/version-plugin.ts +323 -0
  1129. package/src/vite/plugins/virtual-entries.ts +123 -0
  1130. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1131. package/src/vite/rango.ts +549 -0
  1132. package/src/vite/router-discovery.ts +1567 -0
  1133. package/src/vite/{ast-handler-extract.ts → utils/ast-handler-extract.ts} +194 -22
  1134. package/src/vite/utils/banner.ts +36 -0
  1135. package/src/vite/utils/bundle-analysis.ts +139 -0
  1136. package/src/vite/utils/client-chunks.ts +190 -0
  1137. package/src/vite/utils/forward-user-plugins.ts +193 -0
  1138. package/src/vite/utils/manifest-utils.ts +19 -0
  1139. package/src/vite/utils/package-resolution.ts +161 -0
  1140. package/src/vite/utils/prerender-utils.ts +222 -0
  1141. package/src/vite/utils/shared-utils.ts +251 -0
  1142. package/CLAUDE.md +0 -43
  1143. package/src/browser/lru-cache.ts +0 -69
  1144. package/src/browser/request-controller.ts +0 -164
  1145. package/src/cache/memory-store.ts +0 -253
  1146. package/src/router.gen.ts +0 -6
  1147. package/src/static-handler.gen.ts +0 -5
  1148. package/src/urls.gen.ts +0 -8
  1149. package/src/vite/expose-internal-ids.ts +0 -1167
  1150. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -8,6 +8,46 @@ argument-hint: [setup]
8
8
 
9
9
  @rangojs/router supports segment-level caching with stale-while-revalidate (SWR) for optimal performance.
10
10
 
11
+ > SWR support is store-specific. `CFCacheStore` revalidates segment, response,
12
+ > and `"use cache"` entries in the background. `MemorySegmentCacheStore`
13
+ > supports SWR for response and `"use cache"` item entries, but its
14
+ > route-segment entries expire at TTL with no background revalidation — use
15
+ > `CFCacheStore` for real segment SWR. See `/cache-guide`.
16
+
17
+ ## cache() is Partial Prerendering (PPR)
18
+
19
+ `cache()` caches **everything except loaders**. On a cache hit, the cached
20
+ segments (layouts, route components, parallels — including any resolved
21
+ Suspense) are served from the store, and **loaders re-run fresh on every
22
+ request**, streaming their results into the same response. Loaders are the
23
+ dynamic "holes" of an otherwise-cached tree.
24
+
25
+ This means a `cache()` boundary at the document root **is** whole-document
26
+ Partial Prerendering: the static shell is cached and served instantly while
27
+ per-request/per-user data stays live — in one streamed response, no extra round
28
+ trip. The browser cannot tell the shell came from cache.
29
+
30
+ ```typescript
31
+ cache({ ttl: 60, swr: 300 }, () => [
32
+ layout(<RootLayout />), // cached shell
33
+ path("/dashboard", Dashboard, { name: "dashboard" }, () => [
34
+ loader(StatsLoader), // DYNAMIC HOLE — re-runs every request
35
+ ]),
36
+ ]);
37
+ ```
38
+
39
+ The consumer rule: **want it cached? render it inline. want it dynamic? put it
40
+ in a loader and read it with `useLoader()` in a client component.** Anything
41
+ read with `cookies()`, `headers()`, or a non-cacheable variable belongs in a
42
+ loader (loaders always run fresh). Reading it directly in a cached handler
43
+ throws; awaiting it with `ctx.use()` and rendering the result in a cached
44
+ handler silently bakes per-request data into the shared shell (see "Cache purity
45
+ & tainted objects" below).
46
+
47
+ Pre-rendering (`/prerender`) is the build-time twin: it caches the same shell at
48
+ build time instead of on first request. Both feed the segment system
49
+ identically, and loaders always run fresh at request time.
50
+
11
51
  ## Route-Level Caching with cache()
12
52
 
13
53
  Use the `cache()` DSL function to cache routes:
@@ -30,14 +70,45 @@ export const urlpatterns = urls(({ path, cache }) => [
30
70
  ## Cache Options
31
71
 
32
72
  ```typescript
33
- cache({
34
- ttl: 60, // Time-to-live in seconds (default: 60)
35
- swr: 300, // Stale-while-revalidate window (default: 300)
36
- }, () => [
37
- // Cached routes
38
- ])
73
+ cache(
74
+ {
75
+ ttl: 60, // Time-to-live in seconds (default: 60)
76
+ swr: 300, // Stale-while-revalidate window (default: 300)
77
+ },
78
+ () => [
79
+ // Cached routes
80
+ ],
81
+ );
82
+ ```
83
+
84
+ ## Named Profile Shorthand
85
+
86
+ Use a named cache profile string instead of an options object. The profile must be
87
+ defined in `createRouter({ cacheProfiles })`. Unknown names throw at boot time.
88
+
89
+ ```typescript
90
+ // Define profiles in router
91
+ createRouter({
92
+ cacheProfiles: {
93
+ default: { ttl: 900, swr: 1800 },
94
+ short: { ttl: 60, swr: 120 },
95
+ long: { ttl: 3600, swr: 7200 },
96
+ },
97
+ });
98
+
99
+ // Use by name in urls
100
+ export const urlpatterns = urls(({ path, cache }) => [
101
+ cache("long", () => [path("/blog", BlogIndex, { name: "blog" })]),
102
+
103
+ // Also works without children (orphan cache boundary)
104
+ cache("short"),
105
+ path("/feed", FeedPage, { name: "feed" }),
106
+ ]);
39
107
  ```
40
108
 
109
+ These profile names are shared with the `"use cache: <name>"` directive. See
110
+ `/use-cache` for function-level caching.
111
+
41
112
  ## Loader-Level Caching
42
113
 
43
114
  Cache individual loaders:
@@ -45,13 +116,11 @@ Cache individual loaders:
45
116
  ```typescript
46
117
  path("/product/:slug", ProductPage, { name: "product" }, () => [
47
118
  // Cache this loader's results
48
- loader(ProductLoader, () => [
49
- cache({ ttl: 300 }),
50
- ]),
119
+ loader(ProductLoader, () => [cache({ ttl: 300 })]),
51
120
 
52
121
  // This loader is not cached
53
122
  loader(CartLoader),
54
- ])
123
+ ]);
55
124
  ```
56
125
 
57
126
  ## Global Cache Configuration
@@ -60,7 +129,7 @@ Configure a cache store in the router:
60
129
 
61
130
  ```typescript
62
131
  import { createRouter } from "@rangojs/router";
63
- import { MemorySegmentCacheStore } from "@rangojs/router/rsc";
132
+ import { MemorySegmentCacheStore } from "@rangojs/router/cache";
64
133
 
65
134
  const store = new MemorySegmentCacheStore({
66
135
  defaults: { ttl: 60, swr: 300 },
@@ -83,34 +152,143 @@ const router = createRouter({
83
152
  For single-instance deployments:
84
153
 
85
154
  ```typescript
86
- import { MemorySegmentCacheStore } from "@rangojs/router/rsc";
155
+ import { MemorySegmentCacheStore } from "@rangojs/router/cache";
87
156
 
88
157
  const store = new MemorySegmentCacheStore({
89
158
  defaults: { ttl: 60, swr: 300 },
90
- maxSize: 1000, // Max entries
91
159
  });
92
160
  ```
93
161
 
94
- ### Cloudflare KV Store
162
+ ### Cloudflare Edge Cache Store
95
163
 
96
- For distributed caching on Cloudflare Workers:
164
+ For distributed caching on Cloudflare Workers using the Cache API:
97
165
 
98
166
  ```typescript
99
- import { CFCacheStore } from "@rangojs/router/cache/cf";
167
+ import { CFCacheStore } from "@rangojs/router/cache";
100
168
 
101
- const router = createRouter({
169
+ const router = createRouter<AppBindings>({
102
170
  document: Document,
103
171
  urls: urlpatterns,
104
- cache: (env) => ({
172
+ cache: (env, ctx) => ({
105
173
  store: new CFCacheStore({
106
- kv: env.Bindings.CACHE_KV,
107
- waitUntil: (fn) => env.ctx.waitUntil(fn),
174
+ ctx,
175
+ defaults: { ttl: 60, swr: 300 },
108
176
  }),
109
177
  enabled: true,
110
178
  }),
111
179
  });
112
180
  ```
113
181
 
182
+ ### With KV L2 Persistence
183
+
184
+ Add a KV namespace for global cross-colo persistence. On Cache API miss, KV is
185
+ checked and hits are promoted back to L1. Writes go to both layers.
186
+
187
+ ```typescript
188
+ import { CFCacheStore } from "@rangojs/router/cache";
189
+
190
+ const router = createRouter<AppBindings>({
191
+ document: Document,
192
+ urls: urlpatterns,
193
+ cache: (env, ctx) => ({
194
+ store: new CFCacheStore({
195
+ ctx,
196
+ kv: env.CACHE_KV, // optional KV namespace binding
197
+ defaults: { ttl: 60, swr: 300 },
198
+ }),
199
+ enabled: true,
200
+ }),
201
+ });
202
+ ```
203
+
204
+ **How the two layers work:**
205
+
206
+ | Scenario | L1 (Cache API) | L2 (KV) | Result |
207
+ | ------------ | -------------- | ------- | ----------------------------- |
208
+ | Hot request | HIT | — | Serve from L1 (fast) |
209
+ | Cold colo | MISS | HIT | Serve from KV, promote to L1 |
210
+ | First render | MISS | MISS | Render, write to both L1 + KV |
211
+
212
+ KV entries require `expirationTtl >= 60s`. Short-lived entries (< 60s total TTL)
213
+ are only cached in L1.
214
+
215
+ ## Cache purity & tainted objects
216
+
217
+ A `cache()` boundary caches everything except loaders, so anything read inside a
218
+ cached handler is **frozen into the shared cache entry** and served to every
219
+ subsequent visitor. To stop one user's request-scoped data from leaking to
220
+ another, request-scoped APIs are guarded inside a cache scope:
221
+
222
+ | Inside a `cache()` boundary | Behavior |
223
+ | --------------------------------------------------------------- | --------------------------------------------------- |
224
+ | `cookies()` / `headers()` (read or write) | **throws** — request-scoped, would poison the entry |
225
+ | `ctx.header()` / `setCookie()` / `setStatus()` / `onResponse()` | **throws** — response side effects lost on a hit |
226
+ | `ctx.get(var)` where the var is `{ cache: false }` | **throws** on read |
227
+ | `ctx.set(var, value)` for a cacheable var | allowed (children are cached too) |
228
+ | Any of the above **inside a loader** | **allowed** — loaders always run fresh |
229
+
230
+ **Tainted objects.** Request-scoped objects (`ctx`, `env`, `request`) carry an
231
+ internal taint symbol so they are excluded from `"use cache"` cache keys, and
232
+ the cache scope is tracked via async-local state. Two flags back the guards:
233
+ `INSIDE_CACHE_EXEC` (set while a `"use cache"` function runs) and the `cache()`
234
+ DSL scope (`isInsideCacheScope()`). `isInsideCacheScope()` deliberately returns
235
+ `false` inside loaders — which is exactly why loaders are the dynamic holes:
236
+ they may read `cookies()`/`headers()` and re-run on every request.
237
+
238
+ The fix for "I need request data in a cached route": register a `loader()` and
239
+ **consume it with `useLoader()` in a client component**. The loader is the
240
+ dynamic hole — its data rides the fresh (never-cached) loader segment and is
241
+ rendered in the client component, so it never lands in the cached shell.
242
+
243
+ This is NOT the same as awaiting the loader in the handler. A cached handler
244
+ that does `await ctx.use(Loader)` and renders the result bakes that per-request
245
+ data straight into the shared cached segment — the loader running "fresh" does
246
+ not help, because its output was inlined into the cached parent, and `ctx.use()`
247
+ is **not** guarded. `ctx.use()` is a server-side escape hatch for non-rendered
248
+ uses (set a ctx var, make a routing decision); never render its result inside a
249
+ cached handler.
250
+
251
+ ```typescript
252
+ // WRONG — throws: cookies() read directly in a cached handler
253
+ cache({ ttl: 60 }, () => [
254
+ path("/me", () => <Profile id={cookies().get("uid")?.value} />),
255
+ ]);
256
+
257
+ // ALSO WRONG (unguarded, but leaks) — the awaited loader data is rendered into
258
+ // the cached handler, so the user's data is frozen into the shared shell.
259
+ cache({ ttl: 60 }, () => [
260
+ path(
261
+ "/me",
262
+ async (ctx) => {
263
+ const { user } = await ctx.use(MeLoader); // runs fresh…
264
+ return <Profile user={user} />; // …but inlined into the CACHED segment → leak
265
+ },
266
+ { name: "me" },
267
+ () => [loader(MeLoader)],
268
+ ),
269
+ ]);
270
+
271
+ // RIGHT — consume the loader in a CLIENT component via useLoader(). The cached
272
+ // route segment holds only the <Profile/> reference; the user data rides the
273
+ // fresh loader segment and renders client-side.
274
+
275
+ // profile.tsx (client component)
276
+ "use client";
277
+ import { useLoader } from "@rangojs/router/client";
278
+
279
+ export function Profile() {
280
+ const { user } = useLoader(MeLoader); // fresh per request; never cached
281
+ return <span>{user.name}</span>;
282
+ }
283
+
284
+ // urls — register the loader; MeLoader reads cookies() inside the loader (allowed)
285
+ cache({ ttl: 60 }, () => [
286
+ path("/me", () => <Profile />, { name: "me" }, () => [loader(MeLoader)]),
287
+ ]);
288
+ ```
289
+
290
+ See `/cache-guide` for the full decision guide and the `cache()` vs `"use cache"` comparison.
291
+
114
292
  ## Nested Cache Boundaries
115
293
 
116
294
  Override cache settings for specific sections:
@@ -124,7 +302,7 @@ cache({ ttl: 300 }, () => [
124
302
  cache({ ttl: 30 }, () => [
125
303
  path("/blog/:slug", BlogPost, { name: "blogPost" }),
126
304
  ]),
127
- ])
305
+ ]);
128
306
  ```
129
307
 
130
308
  ## Custom Cache Store
@@ -139,14 +317,14 @@ const checkoutCache = new MemorySegmentCacheStore({
139
317
  // In urls
140
318
  cache({ store: checkoutCache }, () => [
141
319
  path("/checkout", CheckoutPage, { name: "checkout" }),
142
- ])
320
+ ]);
143
321
  ```
144
322
 
145
323
  ## Complete Example
146
324
 
147
325
  ```typescript
148
326
  import { urls } from "@rangojs/router";
149
- import { MemorySegmentCacheStore } from "@rangojs/router/rsc";
327
+ import { MemorySegmentCacheStore } from "@rangojs/router/cache";
150
328
 
151
329
  // Custom store for checkout (short TTL)
152
330
  const checkoutCache = new MemorySegmentCacheStore({
@@ -175,7 +353,7 @@ export const urlpatterns = urls(({ path, layout, cache, loader, revalidate }) =>
175
353
  path("/shop/product/:slug", ProductPage, { name: "product" }, () => [
176
354
  loader(ProductLoader, () => [cache({ ttl: 120 })]),
177
355
  loader(CartLoader, () => [
178
- revalidate(({ actionId }) => actionId?.includes("Cart") ?? false),
356
+ revalidate(({ actionId }) => actionId?.includes("Cart") || undefined),
179
357
  ]),
180
358
  ]),
181
359
  ]),
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: composability
3
+ description: Reusable composition patterns with globally importable route helpers in @rangojs/router
4
+ argument-hint: "pattern-name"
5
+ ---
6
+
7
+ # Composability
8
+
9
+ Route helpers can be imported directly from `@rangojs/router` and used to build reusable composition factories. This enables sharing common route configurations across multiple routes and modules.
10
+
11
+ ## Globally Importable Helpers
12
+
13
+ These helpers can be imported and called outside the `urls()` callback parameter:
14
+
15
+ ```typescript
16
+ import {
17
+ layout,
18
+ cache,
19
+ middleware,
20
+ revalidate,
21
+ loader,
22
+ loading,
23
+ parallel,
24
+ intercept,
25
+ when,
26
+ errorBoundary,
27
+ notFoundBoundary,
28
+ } from "@rangojs/router";
29
+ ```
30
+
31
+ They work because they use AsyncLocalStorage internally and resolve context at call time, not import time.
32
+
33
+ ## Why path() and include() Are Not Global
34
+
35
+ `path()` and `include()` remain exclusive to the `urls()` callback:
36
+
37
+ ```typescript
38
+ urls(({ path, include }) => [
39
+ path("/blog", BlogPage, { name: "blog" }),
40
+ include("/shop", shopPatterns, { name: "shop" }),
41
+ ]);
42
+ ```
43
+
44
+ They define the route structure -- the URL patterns and how modules compose. Keeping them in the `urls()` callback makes the route tree readable at a glance. When scanning a URL file, `path()` and `include()` calls show what renders where. Moving them into factories would hide the routing structure and make it harder to understand which URLs exist and how they nest.
45
+
46
+ The globally importable helpers (`cache`, `middleware`, `loading`, etc.) are configuration -- they modify behavior of routes but don't define routes themselves. Extracting them into factories doesn't obscure the route structure.
47
+
48
+ ## Composition Factories
49
+
50
+ Define reusable factories that return arrays of use items:
51
+
52
+ ```typescript
53
+ import { cache, revalidate, loading, errorBoundary, middleware } from "@rangojs/router";
54
+
55
+ // Shared caching configuration
56
+ const withCaching = () => [
57
+ cache({ ttl: 600_000 }),
58
+ // Defer on navigation (|| undefined) so each route keeps its own param/search
59
+ // revalidation default; only force a re-run when an action ran.
60
+ revalidate(({ actionId }) => (actionId ? true : undefined)),
61
+ ];
62
+
63
+ // Shared loading and error handling
64
+ const withLoadingAndError = (skeleton: ReactNode) => [
65
+ loading(skeleton),
66
+ errorBoundary(() => <div>Something went wrong</div>),
67
+ ];
68
+
69
+ // Shared auth middleware
70
+ const withAuth = () => [
71
+ middleware(authMiddleware),
72
+ middleware(loggingMiddleware),
73
+ ];
74
+ ```
75
+
76
+ > **Factories compose logic, not just values.** A `revalidate()` predicate in a
77
+ > shared factory applies its logic to _every_ route that composes it, so a
78
+ > footgun here is amplified across the app. Two rules:
79
+ >
80
+ > 1. Use `|| undefined` (defer), not `?? false` (hard short-circuit), in shared
81
+ > predicates — a hard `false` ends the chain and overrides each consuming
82
+ > route's own default, and a downstream revalidator never runs. See `/loader`
83
+ > → "`|| undefined` (defer) vs `?? false` (hard)".
84
+ > 2. Match actions with `ctx.isAction(Action)`, not an inline
85
+ > `actionId.includes("…")` buried in a factory: it resolves the action from an
86
+ > imported reference, so a rename is a compile error in one place instead of
87
+ > silent drift across every consumer.
88
+ >
89
+ > Remember the axis: a factory's `revalidate()` controls client-update
90
+ > selection, while its `cache()` controls stored-value freshness. They are
91
+ > independent even when bundled in the same factory (`/cache-guide` → "Two axes").
92
+
93
+ > **Keep factories small and intention-named.** The anti-pattern that kills
94
+ > readability is over-bundling — a `withDefaults()` that secretly adds five
95
+ > things — and factory-of-factories nesting (leaning on `.flat(3)`). Surprising
96
+ > config stays inline; extract only the boring, repeated parts; compose by
97
+ > _naming concerns_ (`withAuth()`, `withCaching()`), not by hiding them.
98
+
99
+ ## Using Factories in Routes
100
+
101
+ Place factory calls inside `path()` or `layout()` use callbacks. The returned arrays are flattened automatically (up to 3 levels):
102
+
103
+ ```typescript
104
+ import { urls } from "@rangojs/router";
105
+ import { withCaching, withLoadingAndError, withAuth } from "./route-config";
106
+
107
+ export const urlpatterns = urls(({ path, layout }) => [
108
+ layout(<AppLayout />, () => [
109
+ withAuth(),
110
+
111
+ path("/blog", BlogIndex, { name: "blog" }, () => [
112
+ withCaching(),
113
+ withLoadingAndError(<BlogSkeleton />),
114
+ ]),
115
+
116
+ path("/shop", ShopIndex, { name: "shop" }, () => [
117
+ withCaching(),
118
+ withLoadingAndError(<ShopSkeleton />),
119
+ ]),
120
+ ]),
121
+ ]);
122
+ ```
123
+
124
+ ## Sharing Across Modules
125
+
126
+ Factories can be defined in shared modules and reused across separate `urls()` definitions:
127
+
128
+ ```typescript
129
+ // src/route-config.ts
130
+ import { cache, revalidate, middleware } from "@rangojs/router";
131
+ import { authMiddleware } from "./middleware/auth";
132
+
133
+ export const withPublicDefaults = () => [
134
+ cache({ ttl: 300 }),
135
+ revalidate(({ actionId }) => (actionId ? true : undefined)),
136
+ ];
137
+
138
+ export const withProtectedDefaults = () => [
139
+ middleware(authMiddleware),
140
+ cache({ ttl: 60 }),
141
+ ];
142
+ ```
143
+
144
+ ```typescript
145
+ // src/urls/blog.ts
146
+ import { urls } from "@rangojs/router";
147
+ import { withPublicDefaults } from "../route-config";
148
+
149
+ export const blogPatterns = urls(({ path }) => [
150
+ path("/", BlogIndex, { name: "index" }, () => [withPublicDefaults()]),
151
+ ]);
152
+ ```
153
+
154
+ ```typescript
155
+ // src/urls/admin.ts
156
+ import { urls } from "@rangojs/router";
157
+ import { withProtectedDefaults } from "../route-config";
158
+
159
+ export const adminPatterns = urls(({ path }) => [
160
+ path("/", AdminDashboard, { name: "index" }, () => [withProtectedDefaults()]),
161
+ ]);
162
+ ```
163
+
164
+ ## Composition Types
165
+
166
+ For typed factories, import the composition types:
167
+
168
+ ```typescript
169
+ import type { RouteUseItem, LayoutUseItem, UseItems } from "@rangojs/router";
170
+
171
+ // Factory for path() use callbacks
172
+ const withCaching = (): RouteUseItem[] => [
173
+ cache({ ttl: 600_000 }),
174
+ ];
175
+
176
+ // Factory for layout() use callbacks
177
+ const withAuth = (): LayoutUseItem[] => [
178
+ middleware(authMiddleware),
179
+ ];
180
+
181
+ // Factory that nests other factories (use UseItems for nested arrays)
182
+ const withEverything = (): UseItems<RouteUseItem> => [
183
+ withCaching(),
184
+ loading(<Skeleton />),
185
+ ];
186
+ ```
187
+
188
+ - `RouteUseItem[]` -- flat array for `path()` use callbacks
189
+ - `LayoutUseItem[]` -- flat array for `layout()` use callbacks
190
+ - `UseItems<T>` -- allows nested arrays from composing factories together
191
+
192
+ ## Rules
193
+
194
+ - Helpers execute lazily -- factory functions are defined anywhere, but only called inside a `urls()` context (within `path()` or `layout()` use callbacks)
195
+ - Calling helpers outside a `urls()` context throws an error
196
+ - Nested arrays from factories are flattened automatically via `.flat(3)`
197
+ - `path()` and `include()` cannot be used in factories -- they define route structure and must remain visible in the `urls()` callback
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: css
3
+ description: Import and apply CSS in a Rango app. Render document/app stylesheets in the Document `<head>` with Vite's `?url` import plus a `precedence`-managed `<link rel="stylesheet">` (React 19 resource model — deduped, ordered, loaded before paint). Use when wiring global/app CSS or a Document `<head>` stylesheet, or when deciding between `?url` + `<link>` and side-effect imports. Cross-app (host-router) navigation is a full document load, so each app's document CSS is always re-established by its own load.
4
+ argument-hint:
5
+ ---
6
+
7
+ # CSS imports
8
+
9
+ Document/app CSS in Rango lives in the Document `<head>`, loaded with Vite's
10
+ `?url` import and a `precedence`-managed `<link rel="stylesheet">`. This page is
11
+ the why and the one cross-app caveat; `/tailwind` is the concrete setup, `/theme`
12
+ is dark mode, `/fonts` is fonts.
13
+
14
+ ## The pattern
15
+
16
+ ```tsx
17
+ // document.tsx
18
+ "use client";
19
+
20
+ import type { ReactNode } from "react";
21
+ import { MetaTags } from "@rangojs/router/client";
22
+ import styles from "./index.css?url";
23
+
24
+ export function Document({ children }: { children: ReactNode }) {
25
+ return (
26
+ <html lang="en">
27
+ <head>
28
+ <link rel="preload" href={styles} as="style" precedence="default" />
29
+ <link rel="stylesheet" href={styles} precedence="default" />
30
+ <MetaTags />
31
+ </head>
32
+ <body>{children}</body>
33
+ </html>
34
+ );
35
+ }
36
+ ```
37
+
38
+ - **`?url`** returns the processed file's hashed URL instead of injecting it as a
39
+ side effect, giving a stable asset path that works in dev and production.
40
+ - **`precedence`** opts the `<link rel="stylesheet">` into React 19's managed
41
+ stylesheet model: React de-duplicates it by `href`, orders it by precedence
42
+ (any string value — it only decides cascade order relative to other managed
43
+ sheets), and loads it **before paint**, so there is no flash of unstyled
44
+ content. This is the recommended way to render a stylesheet link.
45
+
46
+ ## Cross-app (host-router) navigation
47
+
48
+ You do **not** need to coordinate CSS across apps mounted under one host router.
49
+ A client-side navigation that crosses an app boundary is a **full document load**
50
+ (the server returns `X-RSC-Reload` on an app switch — see `/host-router`), so the
51
+ target app's entire document — its stylesheets, theme, meta — is re-established
52
+ by the target app's own load. Each app owns its document; how one app renders a
53
+ stylesheet has no effect on another.
54
+
55
+ (This replaced an earlier soft cross-app swap. Under it, a stylesheet shared
56
+ across apps by `href` — classically every app's `@import "tailwindcss"` compiling
57
+ to one hashed asset — could be silently dropped by React's by-`href` resource
58
+ dedup when the apps disagreed on `precedence` (one unmanaged, one managed). The
59
+ full reload removes that footgun entirely, which is the main reason cross-app
60
+ navigation is a hard boundary.)
61
+
62
+ ## Side-effect imports vs `?url`
63
+
64
+ A bare `import "./index.css"` (no `?url`, no `<link>`) also produces _managed_ CSS
65
+ — `@vitejs/plugin-rsc` collects it via `import.meta.viteRsc.loadCss` and injects
66
+ it with a precedence. It is fine for **component-local** CSS that loads with its
67
+ client chunk. For **document-level** CSS, prefer the `?url` + `<link precedence>`
68
+ form above: a side-effect import is not guaranteed to be in the initial streamed
69
+ `<head>` (an SSR-streaming caveat), whereas the explicit `<link>` is.
70
+
71
+ ## Related
72
+
73
+ - `/tailwind` — Tailwind v4 setup using this pattern.
74
+ - `/host-router` — multi-app routing; why cross-app navigation is a full reload.
75
+ - `/theme` — dark mode / theme attribute.
76
+ - `/fonts` — self-hosted fonts via `@fontsource`.
@@ -11,6 +11,7 @@ Inspect the route manifest to verify parent relationships, shortCodes, and route
11
11
  ## Quick Access
12
12
 
13
13
  In development, visit:
14
+
14
15
  ```
15
16
  http://localhost:PORT/__debug_manifest
16
17
  ```
@@ -62,13 +63,13 @@ if (process.env.NODE_ENV !== "production") {
62
63
 
63
64
  ## ShortCode Format
64
65
 
65
- | Prefix | Meaning |
66
- |--------|---------|
67
- | **M** | Mount index (multiple `.routes()` calls) |
68
- | **L** | Layout |
69
- | **C** | Cache boundary |
70
- | **R** | Route |
71
- | **P** | Parallel slot |
66
+ | Prefix | Meaning |
67
+ | ------ | ---------------------------------------- |
68
+ | **M** | Mount index (multiple `.routes()` calls) |
69
+ | **L** | Layout |
70
+ | **C** | Cache boundary |
71
+ | **R** | Route |
72
+ | **P** | Parallel slot |
72
73
 
73
74
  Example: `M0L0L1C0R0` = Mount 0 → Root Layout → Nested Layout → Cache → Route
74
75
 
@@ -85,7 +86,7 @@ Example: `M0L0L1C0R0` = Mount 0 → Root Layout → Nested Layout → Cache →
85
86
  import {
86
87
  serializeManifest,
87
88
  compareManifests,
88
- formatManifestDiff
89
+ formatManifestDiff,
89
90
  } from "@rangojs/router/__internal";
90
91
 
91
92
  const oldManifest = await router.debugManifest();
@@ -99,10 +100,13 @@ console.log(formatManifestDiff(diff));
99
100
  ## Common Issues
100
101
 
101
102
  ### Routes have `parentShortCode: null`
103
+
102
104
  Routes should have a layout parent. Check that `urls()` handler is being wrapped in root layout.
103
105
 
104
106
  ### Missing layouts in hierarchy
107
+
105
108
  Verify `layout()` calls wrap child routes correctly.
106
109
 
107
110
  ### Wrong mount index
111
+
108
112
  Multiple `.routes()` calls create separate mounts (M0, M1, etc.). Use `include()` to share context.