@rangojs/router 0.0.0-experimental.2 → 0.0.0-experimental.20

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 (1118) hide show
  1. package/AGENTS.md +5 -0
  2. package/README.md +850 -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/{src/__mocks__/version.ts → dist/__mocks__/version.js} +1 -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 +1601 -0
  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/theme/ThemeProvider.d.ts +20 -0
  712. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  713. package/dist/theme/ThemeProvider.js +240 -0
  714. package/dist/theme/ThemeProvider.js.map +1 -0
  715. package/dist/theme/ThemeScript.d.ts +48 -0
  716. package/dist/theme/ThemeScript.d.ts.map +1 -0
  717. package/dist/theme/ThemeScript.js +13 -0
  718. package/dist/theme/ThemeScript.js.map +1 -0
  719. package/dist/theme/__tests__/theme.test.d.ts +2 -0
  720. package/dist/theme/__tests__/theme.test.d.ts.map +1 -0
  721. package/dist/theme/__tests__/theme.test.js +103 -0
  722. package/dist/theme/__tests__/theme.test.js.map +1 -0
  723. package/dist/theme/constants.d.ts +29 -0
  724. package/dist/theme/constants.d.ts.map +1 -0
  725. package/dist/theme/constants.js +48 -0
  726. package/dist/theme/constants.js.map +1 -0
  727. package/dist/theme/index.d.ts +31 -0
  728. package/dist/theme/index.d.ts.map +1 -0
  729. package/dist/theme/index.js +36 -0
  730. package/dist/theme/index.js.map +1 -0
  731. package/dist/theme/theme-context.d.ts +40 -0
  732. package/dist/theme/theme-context.d.ts.map +1 -0
  733. package/dist/theme/theme-context.js +60 -0
  734. package/dist/theme/theme-context.js.map +1 -0
  735. package/dist/theme/theme-script.d.ts +27 -0
  736. package/dist/theme/theme-script.d.ts.map +1 -0
  737. package/dist/theme/theme-script.js +147 -0
  738. package/dist/theme/theme-script.js.map +1 -0
  739. package/dist/theme/types.d.ts +163 -0
  740. package/dist/theme/types.d.ts.map +1 -0
  741. package/dist/theme/types.js +11 -0
  742. package/dist/theme/types.js.map +1 -0
  743. package/dist/theme/use-theme.d.ts +12 -0
  744. package/dist/theme/use-theme.d.ts.map +1 -0
  745. package/dist/theme/use-theme.js +40 -0
  746. package/dist/theme/use-theme.js.map +1 -0
  747. package/dist/types.d.ts +1479 -0
  748. package/dist/types.d.ts.map +1 -0
  749. package/dist/types.js +10 -0
  750. package/dist/types.js.map +1 -0
  751. package/dist/urls.d.ts +441 -0
  752. package/dist/urls.d.ts.map +1 -0
  753. package/dist/urls.gen.d.ts +8 -0
  754. package/dist/urls.gen.d.ts.map +1 -0
  755. package/dist/urls.gen.js +8 -0
  756. package/dist/urls.gen.js.map +1 -0
  757. package/dist/urls.js +443 -0
  758. package/dist/urls.js.map +1 -0
  759. package/dist/use-loader.d.ts +127 -0
  760. package/dist/use-loader.d.ts.map +1 -0
  761. package/dist/use-loader.js +237 -0
  762. package/dist/use-loader.js.map +1 -0
  763. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +2 -0
  764. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +1 -0
  765. package/dist/vite/__tests__/ast-handler-extract.test.js +294 -0
  766. package/dist/vite/__tests__/ast-handler-extract.test.js.map +1 -0
  767. package/dist/vite/__tests__/expose-id-utils.test.d.ts +2 -0
  768. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +1 -0
  769. package/dist/vite/__tests__/expose-id-utils.test.js +224 -0
  770. package/dist/vite/__tests__/expose-id-utils.test.js.map +1 -0
  771. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +2 -0
  772. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +1 -0
  773. package/dist/vite/__tests__/expose-internal-ids.test.js +647 -0
  774. package/dist/vite/__tests__/expose-internal-ids.test.js.map +1 -0
  775. package/dist/vite/__tests__/expose-router-id.test.d.ts +2 -0
  776. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +1 -0
  777. package/dist/vite/__tests__/expose-router-id.test.js +39 -0
  778. package/dist/vite/__tests__/expose-router-id.test.js.map +1 -0
  779. package/dist/vite/ast-handler-extract.d.ts +49 -0
  780. package/dist/vite/ast-handler-extract.d.ts.map +1 -0
  781. package/dist/vite/ast-handler-extract.js +249 -0
  782. package/dist/vite/ast-handler-extract.js.map +1 -0
  783. package/dist/vite/expose-action-id.d.ts +19 -0
  784. package/dist/vite/expose-action-id.d.ts.map +1 -0
  785. package/dist/vite/expose-action-id.js +250 -0
  786. package/dist/vite/expose-action-id.js.map +1 -0
  787. package/dist/vite/expose-id-utils.d.ts +69 -0
  788. package/dist/vite/expose-id-utils.d.ts.map +1 -0
  789. package/dist/vite/expose-id-utils.js +289 -0
  790. package/dist/vite/expose-id-utils.js.map +1 -0
  791. package/dist/vite/expose-internal-ids.d.ts +22 -0
  792. package/dist/vite/expose-internal-ids.d.ts.map +1 -0
  793. package/dist/vite/expose-internal-ids.js +886 -0
  794. package/dist/vite/expose-internal-ids.js.map +1 -0
  795. package/dist/vite/index.d.ts +149 -0
  796. package/dist/vite/index.d.ts.map +1 -0
  797. package/dist/vite/index.js +4583 -749
  798. package/dist/vite/index.js.map +1 -0
  799. package/dist/vite/index.named-routes.gen.ts +103 -0
  800. package/dist/vite/package-resolution.d.ts +43 -0
  801. package/dist/vite/package-resolution.d.ts.map +1 -0
  802. package/dist/vite/package-resolution.js +112 -0
  803. package/dist/vite/package-resolution.js.map +1 -0
  804. package/dist/vite/virtual-entries.d.ts +25 -0
  805. package/dist/vite/virtual-entries.d.ts.map +1 -0
  806. package/{src/vite/virtual-entries.ts → dist/vite/virtual-entries.js} +18 -17
  807. package/dist/vite/virtual-entries.js.map +1 -0
  808. package/package.json +82 -46
  809. package/skills/cache-guide/SKILL.md +262 -0
  810. package/skills/caching/SKILL.md +139 -238
  811. package/skills/composability/SKILL.md +172 -0
  812. package/skills/debug-manifest/SKILL.md +112 -0
  813. package/skills/document-cache/SKILL.md +87 -57
  814. package/skills/fonts/SKILL.md +167 -0
  815. package/skills/hooks/SKILL.md +403 -60
  816. package/skills/intercept/SKILL.md +224 -203
  817. package/skills/layout/SKILL.md +243 -149
  818. package/skills/links/SKILL.md +239 -0
  819. package/skills/loader/SKILL.md +444 -253
  820. package/skills/middleware/SKILL.md +222 -325
  821. package/skills/mime-routes/SKILL.md +128 -0
  822. package/skills/parallel/SKILL.md +220 -170
  823. package/skills/prerender/SKILL.md +643 -0
  824. package/skills/rango/SKILL.md +119 -0
  825. package/skills/response-routes/SKILL.md +411 -0
  826. package/skills/route/SKILL.md +334 -89
  827. package/skills/router-setup/SKILL.md +305 -274
  828. package/skills/tailwind/SKILL.md +129 -0
  829. package/skills/testing/SKILL.md +226 -0
  830. package/skills/theme/SKILL.md +36 -11
  831. package/skills/typesafety/SKILL.md +437 -168
  832. package/skills/use-cache/SKILL.md +324 -0
  833. package/src/__internal.ts +181 -0
  834. package/src/bin/rango.ts +321 -0
  835. package/src/browser/action-coordinator.ts +97 -0
  836. package/src/browser/action-response-classifier.ts +99 -0
  837. package/src/browser/event-controller.ts +87 -64
  838. package/src/browser/history-state.ts +80 -0
  839. package/src/browser/intercept-utils.ts +52 -0
  840. package/src/browser/link-interceptor.ts +20 -4
  841. package/src/browser/logging.ts +55 -0
  842. package/src/browser/merge-segment-loaders.ts +20 -12
  843. package/src/browser/navigation-bridge.ts +217 -549
  844. package/src/browser/navigation-client.ts +74 -46
  845. package/src/browser/navigation-store.ts +33 -50
  846. package/src/browser/navigation-transaction.ts +295 -0
  847. package/src/browser/network-error-handler.ts +61 -0
  848. package/src/browser/partial-update.ts +288 -297
  849. package/src/browser/prefetch/cache.ts +67 -0
  850. package/src/browser/prefetch/fetch.ts +137 -0
  851. package/src/browser/prefetch/observer.ts +65 -0
  852. package/src/browser/prefetch/policy.ts +42 -0
  853. package/src/browser/prefetch/queue.ts +88 -0
  854. package/src/browser/rango-state.ts +112 -0
  855. package/src/browser/react/Link.tsx +173 -73
  856. package/src/browser/react/NavigationProvider.tsx +138 -27
  857. package/src/browser/react/context.ts +6 -0
  858. package/src/browser/react/filter-segment-order.ts +11 -0
  859. package/src/browser/react/index.ts +12 -12
  860. package/src/browser/react/location-state-shared.ts +95 -53
  861. package/src/browser/react/location-state.ts +60 -15
  862. package/src/browser/react/mount-context.ts +37 -0
  863. package/src/browser/react/nonce-context.ts +23 -0
  864. package/src/browser/react/shallow-equal.ts +27 -0
  865. package/src/browser/react/use-action.ts +29 -51
  866. package/src/browser/react/use-client-cache.ts +5 -3
  867. package/src/browser/react/use-handle.ts +49 -65
  868. package/src/browser/react/use-href.tsx +20 -188
  869. package/src/browser/react/use-link-status.ts +6 -5
  870. package/src/browser/react/use-mount.ts +31 -0
  871. package/src/browser/react/use-navigation.ts +27 -78
  872. package/src/browser/react/use-params.ts +65 -0
  873. package/src/browser/react/use-pathname.ts +47 -0
  874. package/src/browser/react/use-router.ts +63 -0
  875. package/src/browser/react/use-search-params.ts +56 -0
  876. package/src/browser/react/use-segments.ts +80 -97
  877. package/src/browser/response-adapter.ts +73 -0
  878. package/src/browser/rsc-router.tsx +104 -34
  879. package/src/browser/scroll-restoration.ts +92 -16
  880. package/src/browser/segment-reconciler.ts +216 -0
  881. package/src/browser/segment-structure-assert.ts +83 -0
  882. package/src/browser/server-action-bridge.ts +504 -584
  883. package/src/browser/shallow.ts +6 -1
  884. package/src/browser/types.ts +107 -57
  885. package/src/browser/validate-redirect-origin.ts +29 -0
  886. package/src/build/generate-manifest.ts +438 -0
  887. package/src/build/generate-route-types.ts +36 -0
  888. package/src/build/index.ts +35 -0
  889. package/src/build/route-trie.ts +249 -0
  890. package/src/build/route-types/ast-helpers.ts +25 -0
  891. package/src/build/route-types/ast-route-extraction.ts +98 -0
  892. package/src/build/route-types/codegen.ts +102 -0
  893. package/src/build/route-types/include-resolution.ts +411 -0
  894. package/src/build/route-types/param-extraction.ts +48 -0
  895. package/src/build/route-types/per-module-writer.ts +128 -0
  896. package/src/build/route-types/router-processing.ts +469 -0
  897. package/src/build/route-types/scan-filter.ts +78 -0
  898. package/src/build/runtime-discovery.ts +231 -0
  899. package/src/cache/background-task.ts +34 -0
  900. package/src/cache/cache-key-utils.ts +44 -0
  901. package/src/cache/cache-policy.ts +125 -0
  902. package/src/cache/cache-runtime.ts +338 -0
  903. package/src/cache/cache-scope.ts +120 -303
  904. package/src/cache/cf/cf-cache-store.ts +119 -7
  905. package/src/cache/cf/index.ts +8 -2
  906. package/src/cache/document-cache.ts +101 -72
  907. package/src/cache/handle-capture.ts +81 -0
  908. package/src/cache/handle-snapshot.ts +41 -0
  909. package/src/cache/index.ts +0 -15
  910. package/src/cache/memory-segment-store.ts +191 -13
  911. package/src/cache/profile-registry.ts +73 -0
  912. package/src/cache/read-through-swr.ts +134 -0
  913. package/src/cache/segment-codec.ts +256 -0
  914. package/src/cache/taint.ts +98 -0
  915. package/src/cache/types.ts +76 -121
  916. package/src/client.rsc.tsx +10 -14
  917. package/src/client.tsx +114 -89
  918. package/src/component-utils.ts +4 -4
  919. package/src/components/DefaultDocument.tsx +6 -2
  920. package/src/context-var.ts +86 -0
  921. package/src/debug.ts +243 -0
  922. package/src/errors.ts +108 -2
  923. package/src/handle.ts +34 -19
  924. package/src/handles/MetaTags.tsx +76 -23
  925. package/src/handles/meta.ts +32 -15
  926. package/src/host/cookie-handler.ts +165 -0
  927. package/src/host/errors.ts +97 -0
  928. package/src/host/index.ts +56 -0
  929. package/src/host/pattern-matcher.ts +214 -0
  930. package/src/host/router.ts +352 -0
  931. package/src/host/testing.ts +79 -0
  932. package/src/host/types.ts +146 -0
  933. package/src/host/utils.ts +25 -0
  934. package/src/href-client.ts +141 -47
  935. package/src/index.rsc.ts +209 -23
  936. package/src/index.ts +256 -32
  937. package/src/internal-debug.ts +11 -0
  938. package/src/loader.rsc.ts +27 -142
  939. package/src/loader.ts +27 -10
  940. package/src/network-error-thrower.tsx +3 -1
  941. package/src/outlet-provider.tsx +45 -0
  942. package/src/prerender/param-hash.ts +37 -0
  943. package/src/prerender/store.ts +144 -0
  944. package/src/prerender.ts +463 -0
  945. package/src/reverse.ts +330 -0
  946. package/src/root-error-boundary.tsx +41 -29
  947. package/src/route-content-wrapper.tsx +9 -11
  948. package/src/route-definition/dsl-helpers.ts +934 -0
  949. package/src/route-definition/helper-factories.ts +200 -0
  950. package/src/route-definition/helpers-types.ts +430 -0
  951. package/src/route-definition/index.ts +55 -0
  952. package/src/route-definition/redirect.ts +93 -0
  953. package/src/route-definition/route-function.ts +119 -0
  954. package/src/route-definition.ts +1 -1371
  955. package/src/route-map-builder.ts +241 -112
  956. package/src/route-name.ts +53 -0
  957. package/src/route-types.ts +70 -9
  958. package/src/router/content-negotiation.ts +116 -0
  959. package/src/router/debug-manifest.ts +72 -0
  960. package/src/router/error-handling.ts +9 -9
  961. package/src/router/find-match.ts +158 -0
  962. package/src/router/handler-context.ts +348 -82
  963. package/src/router/intercept-resolution.ts +395 -0
  964. package/src/router/lazy-includes.ts +234 -0
  965. package/src/router/loader-resolution.ts +215 -121
  966. package/src/router/logging.ts +248 -0
  967. package/src/router/manifest.ts +172 -43
  968. package/src/router/match-api.ts +620 -0
  969. package/src/router/match-context.ts +6 -4
  970. package/src/router/match-handlers.ts +440 -0
  971. package/src/router/match-middleware/background-revalidation.ts +80 -93
  972. package/src/router/match-middleware/cache-lookup.ts +382 -9
  973. package/src/router/match-middleware/cache-store.ts +51 -22
  974. package/src/router/match-middleware/intercept-resolution.ts +55 -17
  975. package/src/router/match-middleware/segment-resolution.ts +24 -6
  976. package/src/router/match-pipelines.ts +10 -45
  977. package/src/router/match-result.ts +34 -20
  978. package/src/router/metrics.ts +3 -3
  979. package/src/router/middleware-cookies.ts +55 -0
  980. package/src/router/middleware-types.ts +179 -0
  981. package/src/router/middleware.ts +239 -328
  982. package/src/router/pattern-matching.ts +302 -26
  983. package/src/router/prerender-match.ts +398 -0
  984. package/src/router/preview-match.ts +170 -0
  985. package/src/router/revalidation.ts +112 -33
  986. package/src/router/router-context.ts +40 -23
  987. package/src/router/router-interfaces.ts +439 -0
  988. package/src/router/router-options.ts +587 -0
  989. package/src/router/router-registry.ts +24 -0
  990. package/src/router/segment-resolution/fresh.ts +552 -0
  991. package/src/router/segment-resolution/helpers.ts +263 -0
  992. package/src/router/segment-resolution/loader-cache.ts +198 -0
  993. package/src/router/segment-resolution/revalidation.ts +1226 -0
  994. package/src/router/segment-resolution/static-store.ts +67 -0
  995. package/src/router/segment-resolution.ts +21 -0
  996. package/src/router/segment-wrappers.ts +289 -0
  997. package/src/router/telemetry-otel.ts +299 -0
  998. package/src/router/telemetry.ts +300 -0
  999. package/src/router/timeout.ts +148 -0
  1000. package/src/router/trie-matching.ts +221 -0
  1001. package/src/router/types.ts +78 -4
  1002. package/src/router.ts +672 -3566
  1003. package/src/rsc/handler-context.ts +45 -0
  1004. package/src/rsc/handler.ts +691 -757
  1005. package/src/rsc/helpers.ts +140 -6
  1006. package/src/rsc/index.ts +5 -5
  1007. package/src/rsc/loader-fetch.ts +209 -0
  1008. package/src/rsc/manifest-init.ts +86 -0
  1009. package/src/rsc/nonce.ts +14 -0
  1010. package/src/rsc/origin-guard.ts +141 -0
  1011. package/src/rsc/progressive-enhancement.ts +366 -0
  1012. package/src/rsc/response-error.ts +37 -0
  1013. package/src/rsc/response-route-handler.ts +347 -0
  1014. package/src/rsc/rsc-rendering.ts +250 -0
  1015. package/src/rsc/runtime-warnings.ts +42 -0
  1016. package/src/rsc/server-action.ts +344 -0
  1017. package/src/rsc/types.ts +38 -14
  1018. package/src/search-params.ts +227 -0
  1019. package/src/segment-system.tsx +59 -61
  1020. package/src/server/context.ts +217 -49
  1021. package/src/server/cookie-store.ts +190 -0
  1022. package/src/server/fetchable-loader-store.ts +37 -0
  1023. package/src/server/handle-store.ts +98 -20
  1024. package/src/server/loader-registry.ts +15 -56
  1025. package/src/server/request-context.ts +406 -65
  1026. package/src/server.ts +32 -133
  1027. package/src/ssr/index.tsx +157 -26
  1028. package/src/static-handler.ts +114 -0
  1029. package/src/theme/ThemeProvider.tsx +21 -15
  1030. package/src/theme/ThemeScript.tsx +5 -5
  1031. package/src/theme/constants.ts +11 -4
  1032. package/src/theme/index.ts +6 -7
  1033. package/src/theme/theme-context.ts +5 -31
  1034. package/src/theme/theme-script.ts +21 -18
  1035. package/src/theme/types.ts +1 -1
  1036. package/src/types/boundaries.ts +158 -0
  1037. package/src/types/cache-types.ts +198 -0
  1038. package/src/types/error-types.ts +192 -0
  1039. package/src/types/global-namespace.ts +100 -0
  1040. package/src/types/handler-context.ts +691 -0
  1041. package/src/types/index.ts +88 -0
  1042. package/src/types/loader-types.ts +183 -0
  1043. package/src/types/route-config.ts +161 -0
  1044. package/src/types/route-entry.ts +102 -0
  1045. package/src/types/segments.ts +153 -0
  1046. package/src/types.ts +1 -1561
  1047. package/src/urls/include-helper.ts +197 -0
  1048. package/src/urls/index.ts +53 -0
  1049. package/src/urls/path-helper-types.ts +339 -0
  1050. package/src/urls/path-helper.ts +329 -0
  1051. package/src/urls/pattern-types.ts +95 -0
  1052. package/src/urls/response-types.ts +106 -0
  1053. package/src/urls/type-extraction.ts +372 -0
  1054. package/src/urls/urls-function.ts +98 -0
  1055. package/src/urls.ts +1 -726
  1056. package/src/use-loader.tsx +85 -77
  1057. package/src/vite/discovery/bundle-postprocess.ts +209 -0
  1058. package/src/vite/discovery/discover-routers.ts +345 -0
  1059. package/src/vite/discovery/prerender-collection.ts +365 -0
  1060. package/src/vite/discovery/route-types-writer.ts +258 -0
  1061. package/src/vite/discovery/self-gen-tracking.ts +47 -0
  1062. package/src/vite/discovery/state.ts +113 -0
  1063. package/src/vite/discovery/virtual-module-codegen.ts +203 -0
  1064. package/src/vite/index.ts +10 -782
  1065. package/src/vite/plugin-types.ts +131 -0
  1066. package/src/vite/plugins/cjs-to-esm.ts +93 -0
  1067. package/src/vite/plugins/client-ref-dedup.ts +115 -0
  1068. package/src/vite/plugins/client-ref-hashing.ts +105 -0
  1069. package/src/vite/{expose-action-id.ts → plugins/expose-action-id.ts} +72 -51
  1070. package/src/vite/plugins/expose-id-utils.ts +287 -0
  1071. package/src/vite/plugins/expose-ids/export-analysis.ts +296 -0
  1072. package/src/vite/plugins/expose-ids/handler-transform.ts +179 -0
  1073. package/src/vite/plugins/expose-ids/loader-transform.ts +74 -0
  1074. package/src/vite/plugins/expose-ids/router-transform.ts +110 -0
  1075. package/src/vite/plugins/expose-ids/types.ts +45 -0
  1076. package/src/vite/plugins/expose-internal-ids.ts +569 -0
  1077. package/src/vite/plugins/use-cache-transform.ts +323 -0
  1078. package/src/vite/plugins/version-injector.ts +83 -0
  1079. package/src/vite/plugins/version-plugin.ts +254 -0
  1080. package/src/vite/plugins/virtual-entries.ts +123 -0
  1081. package/src/vite/plugins/virtual-stub-plugin.ts +29 -0
  1082. package/src/vite/rango.ts +510 -0
  1083. package/src/vite/router-discovery.ts +781 -0
  1084. package/src/vite/utils/ast-handler-extract.ts +517 -0
  1085. package/src/vite/utils/banner.ts +36 -0
  1086. package/src/vite/utils/bundle-analysis.ts +137 -0
  1087. package/src/vite/utils/manifest-utils.ts +70 -0
  1088. package/src/vite/{package-resolution.ts → utils/package-resolution.ts} +25 -29
  1089. package/src/vite/utils/prerender-utils.ts +129 -0
  1090. package/src/vite/utils/shared-utils.ts +169 -0
  1091. package/CLAUDE.md +0 -7
  1092. package/src/__tests__/component-utils.test.ts +0 -76
  1093. package/src/__tests__/route-definition.test.ts +0 -63
  1094. package/src/__tests__/urls.test.tsx +0 -436
  1095. package/src/browser/lru-cache.ts +0 -69
  1096. package/src/browser/request-controller.ts +0 -164
  1097. package/src/cache/__tests__/document-cache.test.ts +0 -522
  1098. package/src/cache/__tests__/memory-segment-store.test.ts +0 -487
  1099. package/src/cache/__tests__/memory-store.test.ts +0 -484
  1100. package/src/cache/cf/__tests__/cf-cache-store.test.ts +0 -428
  1101. package/src/cache/memory-store.ts +0 -253
  1102. package/src/href.ts +0 -177
  1103. package/src/route-utils.ts +0 -89
  1104. package/src/router/__tests__/match-context.test.ts +0 -104
  1105. package/src/router/__tests__/match-pipelines.test.ts +0 -537
  1106. package/src/router/__tests__/match-result.test.ts +0 -566
  1107. package/src/router/__tests__/on-error.test.ts +0 -935
  1108. package/src/router/__tests__/pattern-matching.test.ts +0 -577
  1109. package/src/router/middleware.test.ts +0 -1355
  1110. package/src/rsc/__tests__/helpers.test.ts +0 -175
  1111. package/src/server/__tests__/request-context.test.ts +0 -171
  1112. package/src/ssr/__tests__/ssr-handler.test.tsx +0 -188
  1113. package/src/theme/__tests__/theme.test.ts +0 -120
  1114. package/src/vite/__tests__/expose-loader-id.test.ts +0 -117
  1115. package/src/vite/expose-handle-id.ts +0 -209
  1116. package/src/vite/expose-loader-id.ts +0 -357
  1117. package/src/vite/expose-location-state-id.ts +0 -177
  1118. /package/src/vite/{version.d.ts → plugins/version.d.ts} +0 -0
@@ -0,0 +1,45 @@
1
+ "use client";
2
+
3
+ import { useContext, useMemo, type ReactNode } from "react";
4
+ import { OutletContext, type OutletContextValue } from "./outlet-context.js";
5
+ import type { ResolvedSegment } from "./types.js";
6
+
7
+ /**
8
+ * Provider for outlet content - used internally by renderSegments
9
+ *
10
+ * Stores a reference to parent context so useLoader can walk up the chain
11
+ * to find loader data from parent layouts. If this segment defines a loading
12
+ * component, Outlet will wrap content with Suspense using that as fallback.
13
+ */
14
+ export function OutletProvider({
15
+ content,
16
+ parallel,
17
+ segment,
18
+ loaderData,
19
+ children,
20
+ }: {
21
+ content: ReactNode;
22
+ parallel?: ResolvedSegment[];
23
+ segment?: ResolvedSegment;
24
+ loaderData?: Record<string, any>;
25
+ children: ReactNode;
26
+ }): ReactNode {
27
+ // Get parent context to enable walking up the chain for loader lookups
28
+ const parentContext = useContext(OutletContext);
29
+
30
+ const value = useMemo(
31
+ () => ({
32
+ content,
33
+ parallel,
34
+ segment,
35
+ loaderData,
36
+ parent: parentContext,
37
+ loading: segment?.loading,
38
+ }),
39
+ [content, parallel, segment, loaderData, parentContext],
40
+ );
41
+
42
+ return (
43
+ <OutletContext.Provider value={value}>{children}</OutletContext.Provider>
44
+ );
45
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Deterministic param hashing for prerender storage keys.
3
+ *
4
+ * Used at build time (child process) to generate filenames and at
5
+ * runtime (worker) to look up pre-rendered data. Both environments
6
+ * must produce identical hashes for the same params.
7
+ *
8
+ * Uses a simple DJB2-based hash that works in all JS environments
9
+ * (Node.js, Cloudflare Workers, browsers) without crypto imports.
10
+ */
11
+
12
+ /**
13
+ * Compute a deterministic hash string from route params.
14
+ * For static routes (no params), returns "_".
15
+ */
16
+ export function hashParams(params: Record<string, string>): string {
17
+ const entries = Object.entries(params);
18
+ if (entries.length === 0) return "_";
19
+
20
+ const sorted = entries.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
21
+ const str = sorted
22
+ .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
23
+ .join("&");
24
+ return djb2Hex(str);
25
+ }
26
+
27
+ /**
28
+ * DJB2 hash returning an 8-char hex string.
29
+ * Deterministic across all JS runtimes.
30
+ */
31
+ function djb2Hex(str: string): string {
32
+ let hash = 5381;
33
+ for (let i = 0; i < str.length; i++) {
34
+ hash = ((hash << 5) + hash + str.charCodeAt(i)) >>> 0;
35
+ }
36
+ return hash.toString(16).padStart(8, "0");
37
+ }
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Prerender Store
3
+ *
4
+ * Reads pre-rendered segment data from the worker bundle at build time.
5
+ * The data is stored as globalThis.__PRERENDER_MANIFEST, a map of
6
+ * "<routeName>/<paramHash>" to dynamic import functions that resolve
7
+ * individual prerender entry modules.
8
+ */
9
+
10
+ import type {
11
+ SerializedSegmentData,
12
+ SegmentHandleData,
13
+ } from "../cache/types.js";
14
+
15
+ export interface PrerenderEntry {
16
+ segments: SerializedSegmentData[];
17
+ handles: Record<string, SegmentHandleData>;
18
+ }
19
+
20
+ export interface PrerenderStore {
21
+ get(
22
+ routeName: string,
23
+ paramHash: string,
24
+ meta?: { pathname: string; isPassthroughRoute?: boolean },
25
+ ): PrerenderEntry | null | Promise<PrerenderEntry | null>;
26
+ }
27
+
28
+ export interface StaticEntry {
29
+ encoded: string;
30
+ handles: Record<string, unknown[]>;
31
+ }
32
+
33
+ export interface StaticStore {
34
+ get(handlerId: string): Promise<StaticEntry | null>;
35
+ }
36
+
37
+ declare global {
38
+ // Injected by closeBundle post-processing: map of key -> () => import("./assets/__pr-*.js")
39
+ // eslint-disable-next-line no-var
40
+ var __PRERENDER_MANIFEST:
41
+ | Record<string, () => Promise<{ default: PrerenderEntry }>>
42
+ | undefined;
43
+ // Injected by closeBundle post-processing: map of handlerId -> () => import("./assets/__st-*.js")
44
+ // Asset default export is either a string (no handles) or { encoded, handles } object.
45
+ // eslint-disable-next-line no-var
46
+ var __STATIC_MANIFEST:
47
+ | Record<string, () => Promise<{ default: string | StaticEntry }>>
48
+ | undefined;
49
+ // Injected by virtual module in dev mode for on-demand prerender
50
+ // eslint-disable-next-line no-var
51
+ var __PRERENDER_DEV_URL: string | undefined;
52
+ }
53
+
54
+ /**
55
+ * Create a dev-mode prerender store that fetches on-demand from the
56
+ * Vite dev server's /__rsc_prerender endpoint (runs in Node.js where
57
+ * node:fs works, unlike workerd).
58
+ */
59
+ export function createDevPrerenderStore(devUrl: string): PrerenderStore {
60
+ return {
61
+ async get(routeName, paramHash, meta) {
62
+ if (!meta?.pathname) return null;
63
+ const isIntercept = paramHash.endsWith("/i");
64
+ let url = `${devUrl}/__rsc_prerender?pathname=${encodeURIComponent(meta.pathname)}&routeName=${encodeURIComponent(routeName)}`;
65
+ if (isIntercept) url += "&intercept=1";
66
+ if (meta.isPassthroughRoute) url += "&passthrough=1";
67
+ try {
68
+ const res = await fetch(url);
69
+ if (!res.ok) return null;
70
+ return res.json();
71
+ } catch {
72
+ return null;
73
+ }
74
+ },
75
+ };
76
+ }
77
+
78
+ /**
79
+ * Create a prerender store.
80
+ * Dev mode: on-demand fetch from Vite dev server (node:fs works there).
81
+ * Production: backed by globalThis.__PRERENDER_MANIFEST injected at build time.
82
+ * Returns null if no prerender data is available.
83
+ */
84
+ export function createPrerenderStore(): PrerenderStore | null {
85
+ if (globalThis.__PRERENDER_DEV_URL) {
86
+ return createDevPrerenderStore(globalThis.__PRERENDER_DEV_URL);
87
+ }
88
+ const manifest = globalThis.__PRERENDER_MANIFEST;
89
+ if (!manifest || Object.keys(manifest).length === 0) return null;
90
+
91
+ const cache = new Map<string, Promise<PrerenderEntry | null>>();
92
+
93
+ return {
94
+ get(routeName: string, paramHash: string): Promise<PrerenderEntry | null> {
95
+ const key = `${routeName}/${paramHash}`;
96
+ const cached = cache.get(key);
97
+ if (cached) return cached;
98
+
99
+ const loader = manifest[key];
100
+ if (!loader) return Promise.resolve(null);
101
+
102
+ const promise = loader()
103
+ .then((mod) => mod.default)
104
+ .catch(() => null);
105
+ cache.set(key, promise);
106
+ return promise;
107
+ },
108
+ };
109
+ }
110
+
111
+ /**
112
+ * Create a static segment store.
113
+ * Production only: backed by globalThis.__STATIC_MANIFEST injected at build time.
114
+ * Returns null if no static data is available (dev mode or no Static handlers).
115
+ */
116
+ export function createStaticStore(): StaticStore | null {
117
+ const manifest = globalThis.__STATIC_MANIFEST;
118
+ if (!manifest || Object.keys(manifest).length === 0) return null;
119
+
120
+ const cache = new Map<string, Promise<StaticEntry | null>>();
121
+
122
+ return {
123
+ get(handlerId: string): Promise<StaticEntry | null> {
124
+ const cached = cache.get(handlerId);
125
+ if (cached) return cached;
126
+
127
+ const importFn = manifest[handlerId];
128
+ if (!importFn) return Promise.resolve(null);
129
+
130
+ const promise = importFn()
131
+ .then((mod) => {
132
+ const val = mod.default;
133
+ // Normalize: string-only (no handles) or { encoded, handles }
134
+ if (typeof val === "string") {
135
+ return { encoded: val, handles: {} } as StaticEntry;
136
+ }
137
+ return val as StaticEntry;
138
+ })
139
+ .catch(() => null);
140
+ cache.set(handlerId, promise);
141
+ return promise;
142
+ },
143
+ };
144
+ }
@@ -0,0 +1,463 @@
1
+ /**
2
+ * Pre-render handler definition for build-time rendering of route segments.
3
+ *
4
+ * Prerender wraps a handler so that in production (phase 2)
5
+ * it can be pre-rendered at build time and served as a static Flight payload.
6
+ * In dev mode (phase 1), it behaves as a normal handler — the handler runs
7
+ * on every request just like a regular path() handler.
8
+ *
9
+ * The $$id is auto-generated by the Vite exposeInternalIds plugin
10
+ * based on file path and export name. No manual naming required.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * // Static page — no params
15
+ * export const DocsPage = Prerender(async (ctx) => {
16
+ * return <div>Documentation</div>;
17
+ * });
18
+ *
19
+ * // Dynamic page — params first, handler second
20
+ * export const DocsArticle = Prerender(
21
+ * async () => [{ slug: "getting-started" }, { slug: "api-reference" }],
22
+ * async (ctx) => {
23
+ * return <div>{ctx.params.slug}</div>;
24
+ * }
25
+ * );
26
+ * ```
27
+ */
28
+ import type { ReactNode } from "react";
29
+ import type {
30
+ Handler,
31
+ HandlerContext,
32
+ DefaultEnv,
33
+ ExtractParams,
34
+ } from "./types.js";
35
+ import type { Handle } from "./handle.js";
36
+ import type { ContextVar } from "./context-var.js";
37
+ import type { ReverseFunction } from "./reverse.js";
38
+ import type { DefaultReverseRouteMap } from "./types/global-namespace.js";
39
+ import { isCachedFunction } from "./cache/taint.js";
40
+
41
+ // -- Named route resolution types -------------------------------------------
42
+
43
+ /**
44
+ * Reverse function for build contexts (BuildContext, StaticBuildContext, GetParamsContext).
45
+ * Global names get full autocomplete and param validation from the generated route map.
46
+ * Local `.name` calls are accepted but not validated (the include() scope is unknown
47
+ * at the type level).
48
+ */
49
+ type BuildReverseFunction = [DefaultReverseRouteMap] extends [
50
+ Record<string, string>,
51
+ ]
52
+ ? // No generated route map — permissive fallback
53
+ (
54
+ name: string,
55
+ params?: Record<string, string>,
56
+ search?: Record<string, unknown>,
57
+ ) => string
58
+ : // Generated route map available — typed globals + permissive locals
59
+ ReverseFunction<DefaultReverseRouteMap> & {
60
+ (
61
+ name: `.${string}`,
62
+ params?: Record<string, string>,
63
+ search?: Record<string, unknown>,
64
+ ): string;
65
+ };
66
+
67
+ /**
68
+ * Default route map for Prerender named route resolution.
69
+ * Uses GeneratedRouteMap (from gen file) to avoid circular dependencies.
70
+ */
71
+ type DefaultPrerenderRouteMap = keyof RSCRouter.GeneratedRouteMap extends never
72
+ ? {}
73
+ : RSCRouter.GeneratedRouteMap;
74
+
75
+ /** Extract params from a route map entry (string pattern or { path } object). */
76
+ type ExtractParamsFromEntry<TEntry> = TEntry extends string
77
+ ? ExtractParams<TEntry>
78
+ : TEntry extends { readonly path: infer P extends string }
79
+ ? ExtractParams<P>
80
+ : Record<string, string>;
81
+
82
+ /**
83
+ * Resolve params from Prerender's type parameter.
84
+ * Accepts named routes (global or .local) and explicit param objects.
85
+ *
86
+ * Resolution order:
87
+ * 1. ".local" string → look up in TRouteMap
88
+ * 2. Global route name string → look up in DefaultPrerenderRouteMap
89
+ * 3. Record<string, any> object → use as-is (explicit params)
90
+ * 4. Fallback → {}
91
+ */
92
+ type ResolvePrerenderParams<
93
+ T,
94
+ TRouteMap extends {} = DefaultPrerenderRouteMap,
95
+ > = T extends `.${infer Local}`
96
+ ? Local extends keyof TRouteMap
97
+ ? ExtractParamsFromEntry<TRouteMap[Local]>
98
+ : Record<string, string>
99
+ : T extends keyof DefaultPrerenderRouteMap
100
+ ? ExtractParamsFromEntry<DefaultPrerenderRouteMap[T]>
101
+ : T extends Record<string, any>
102
+ ? T
103
+ : {};
104
+
105
+ // -- Types ------------------------------------------------------------------
106
+
107
+ export interface PrerenderOptions {
108
+ /**
109
+ * Keep handler in server bundle for live fallback (default: false).
110
+ * false: handler replaced with stub, source-only APIs excluded from bundle.
111
+ * true: handler stays in bundle, unknown params render live at request time.
112
+ */
113
+ passthrough?: boolean;
114
+
115
+ /**
116
+ * Maximum number of param sets to render in parallel (default: 1).
117
+ * Only applies to dynamic Prerender handlers with getParams().
118
+ * Set to higher values to speed up builds with many routes.
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * export const BlogPost = Prerender(
123
+ * async () => allPosts.map(p => ({ slug: p.slug })),
124
+ * async (ctx) => <PostPage slug={ctx.params.slug} />,
125
+ * { concurrency: 4 },
126
+ * );
127
+ * ```
128
+ */
129
+ concurrency?: number;
130
+ }
131
+
132
+ /**
133
+ * Context passed to Prerender() handlers at build time.
134
+ * Has a synthetic URL from getParams, params, and pathname.
135
+ * No request, env, headers, cookies.
136
+ */
137
+ export interface BuildContext<TParams> {
138
+ /** Params extracted from the route pattern (populated from getParams). */
139
+ params: TParams;
140
+
141
+ /** True during build-time pre-rendering, false during passthrough live render. */
142
+ build: true;
143
+
144
+ /** Read a variable set by getParams or a parent handler. */
145
+ get: {
146
+ <T>(contextVar: ContextVar<T>): T | undefined;
147
+ (key: string): any;
148
+ };
149
+
150
+ /** Set a variable readable by child layouts and parallels. */
151
+ set: {
152
+ <T>(contextVar: ContextVar<T>, value: T): void;
153
+ (key: string, value: any): void;
154
+ };
155
+
156
+ /** Push handle data (frozen into pre-rendered output at build time). */
157
+ use: <T>(handle: Handle<T>) => (data: T) => void;
158
+
159
+ /** Synthetic URL built from pattern + params (no real request). */
160
+ url: URL;
161
+
162
+ /** Pathname portion of the synthetic URL. */
163
+ pathname: string;
164
+
165
+ /** URLSearchParams from the synthetic URL (always empty for prerender). */
166
+ searchParams: URLSearchParams;
167
+
168
+ /** Typed search params — always {} for prerender (no real query string). */
169
+ search: {};
170
+
171
+ /** URL generation by route name. */
172
+ reverse: BuildReverseFunction;
173
+
174
+ /**
175
+ * Signal that this param set should not produce a local prerender artifact.
176
+ * At runtime the handler runs live instead. Only valid on routes declared
177
+ * with `{ passthrough: true }`.
178
+ */
179
+ passthrough: () => PrerenderPassthroughResult;
180
+ }
181
+
182
+ /**
183
+ * Context passed to Static() handlers at build time.
184
+ * No URL, no params, no pathname — just renders content.
185
+ */
186
+ export interface StaticBuildContext {
187
+ /** Always true for Static handlers at build time. */
188
+ build: true;
189
+
190
+ /** Read a variable (available for type consistency with BuildContext). */
191
+ get: {
192
+ <T>(contextVar: ContextVar<T>): T | undefined;
193
+ (key: string): any;
194
+ };
195
+
196
+ /** Set a variable (available for type consistency with BuildContext). */
197
+ set: {
198
+ <T>(contextVar: ContextVar<T>, value: T): void;
199
+ (key: string, value: any): void;
200
+ };
201
+
202
+ /** Push handle data (frozen into pre-rendered output at build time). */
203
+ use: <T>(handle: Handle<T>) => (data: T) => void;
204
+
205
+ /** URL generation by route name. */
206
+ reverse: BuildReverseFunction;
207
+ }
208
+
209
+ /**
210
+ * Context passed to getParams() at build time.
211
+ * Allows sharing data with handler invocations via set().
212
+ */
213
+ export interface GetParamsContext {
214
+ /** Always true during build-time getParams execution. */
215
+ build: true;
216
+
217
+ /** Set a variable that will be available to each handler invocation via ctx.get(). */
218
+ set: {
219
+ <T>(contextVar: ContextVar<T>, value: T): void;
220
+ (key: string, value: any): void;
221
+ };
222
+
223
+ /** URL generation by route name. */
224
+ reverse: BuildReverseFunction;
225
+ }
226
+
227
+ /**
228
+ * Context type for passthrough Prerender handlers.
229
+ *
230
+ * When `passthrough: true`, the handler runs both at build time and at request
231
+ * time. The context is a full `HandlerContext` with `build: boolean`:
232
+ * - `ctx.build === true`: build-time, env/request/res throw at runtime
233
+ * - `ctx.build === false`: live request, full context available
234
+ *
235
+ * For `passthrough: false` (default), handlers receive `BuildContext` only.
236
+ */
237
+ export type PrerenderPassthroughContext<
238
+ TParams = {},
239
+ TEnv = DefaultEnv,
240
+ > = HandlerContext<TParams, TEnv> & {
241
+ passthrough: () => PrerenderPassthroughResult;
242
+ };
243
+
244
+ export interface PrerenderHandlerDefinition<
245
+ TParams extends Record<string, any> = any,
246
+ > {
247
+ readonly __brand: "prerenderHandler";
248
+ /** Auto-generated unique ID (injected by Vite plugin). */
249
+ $$id: string;
250
+ /** In dev mode, the actual handler function that path() can call. */
251
+ handler: Handler<TParams>;
252
+ /** Returns the list of param objects to pre-render (dynamic routes). */
253
+ getParams?: (ctx: GetParamsContext) => Promise<TParams[]> | TParams[];
254
+ /** Pre-render options. */
255
+ options?: PrerenderOptions;
256
+ }
257
+
258
+ // -- Overloads --------------------------------------------------------------
259
+ //
260
+ // T accepts: named route string (global or .local) OR explicit param object.
261
+ // Named routes resolve params from GeneratedRouteMap, e.g.:
262
+ // Prerender<"locale.detail"> → params = { locale: string; slug: string }
263
+ // Explicit params work as before:
264
+ // Prerender<{ slug: string }> → params = { slug: string }
265
+
266
+ // Overload 1: Static handler, no passthrough (build-time only)
267
+ export function Prerender<
268
+ T extends
269
+ | keyof DefaultPrerenderRouteMap
270
+ | `.${keyof TRouteMap & string}`
271
+ | Record<string, any> = {},
272
+ TRouteMap extends {} = DefaultPrerenderRouteMap,
273
+ >(
274
+ handler: (
275
+ ctx: BuildContext<ResolvePrerenderParams<T, TRouteMap>>,
276
+ ) => ReactNode | Promise<ReactNode>,
277
+ options?: PrerenderOptions & { passthrough?: false },
278
+ __injectedId?: string,
279
+ ): PrerenderHandlerDefinition<ResolvePrerenderParams<T, TRouteMap>>;
280
+
281
+ // Overload 2: Static handler, passthrough (build + live — full HandlerContext)
282
+ export function Prerender<
283
+ T extends
284
+ | keyof DefaultPrerenderRouteMap
285
+ | `.${keyof TRouteMap & string}`
286
+ | Record<string, any> = {},
287
+ TRouteMap extends {} = DefaultPrerenderRouteMap,
288
+ TEnv = DefaultEnv,
289
+ >(
290
+ handler: (
291
+ ctx: PrerenderPassthroughContext<
292
+ ResolvePrerenderParams<T, TRouteMap>,
293
+ TEnv
294
+ >,
295
+ ) =>
296
+ | ReactNode
297
+ | PrerenderPassthroughResult
298
+ | Promise<ReactNode | PrerenderPassthroughResult>,
299
+ options: PrerenderOptions & { passthrough: true },
300
+ __injectedId?: string,
301
+ ): PrerenderHandlerDefinition<ResolvePrerenderParams<T, TRouteMap>>;
302
+
303
+ // Overload 3: Dynamic handler, no passthrough (build-time only)
304
+ export function Prerender<
305
+ T extends
306
+ | keyof DefaultPrerenderRouteMap
307
+ | `.${keyof TRouteMap & string}`
308
+ | Record<string, any>,
309
+ TRouteMap extends {} = DefaultPrerenderRouteMap,
310
+ >(
311
+ getParams: (
312
+ ctx: GetParamsContext,
313
+ ) =>
314
+ | Promise<ResolvePrerenderParams<T, TRouteMap>[]>
315
+ | ResolvePrerenderParams<T, TRouteMap>[],
316
+ handler: (
317
+ ctx: BuildContext<ResolvePrerenderParams<T, TRouteMap>>,
318
+ ) => ReactNode | Promise<ReactNode>,
319
+ options?: PrerenderOptions & { passthrough?: false },
320
+ __injectedId?: string,
321
+ ): PrerenderHandlerDefinition<ResolvePrerenderParams<T, TRouteMap>>;
322
+
323
+ // Overload 4: Dynamic handler, passthrough (build + live — full HandlerContext)
324
+ export function Prerender<
325
+ T extends
326
+ | keyof DefaultPrerenderRouteMap
327
+ | `.${keyof TRouteMap & string}`
328
+ | Record<string, any>,
329
+ TRouteMap extends {} = DefaultPrerenderRouteMap,
330
+ TEnv = DefaultEnv,
331
+ >(
332
+ getParams: (
333
+ ctx: GetParamsContext,
334
+ ) =>
335
+ | Promise<ResolvePrerenderParams<T, TRouteMap>[]>
336
+ | ResolvePrerenderParams<T, TRouteMap>[],
337
+ handler: (
338
+ ctx: PrerenderPassthroughContext<
339
+ ResolvePrerenderParams<T, TRouteMap>,
340
+ TEnv
341
+ >,
342
+ ) =>
343
+ | ReactNode
344
+ | PrerenderPassthroughResult
345
+ | Promise<ReactNode | PrerenderPassthroughResult>,
346
+ options: PrerenderOptions & { passthrough: true },
347
+ __injectedId?: string,
348
+ ): PrerenderHandlerDefinition<ResolvePrerenderParams<T, TRouteMap>>;
349
+
350
+ // -- Implementation ---------------------------------------------------------
351
+
352
+ export function Prerender<TParams extends Record<string, any>>(
353
+ handlerOrGetParams: Function,
354
+ handlerOrOptions?: Function | PrerenderOptions,
355
+ optionsOrId?: PrerenderOptions | string,
356
+ maybeId?: string,
357
+ ): PrerenderHandlerDefinition<TParams> {
358
+ // Resolve overloads:
359
+ // 1 fn arg: Prerender(handler, options?, __injectedId?)
360
+ // 2 fn args: Prerender(getParams, handler, options?, __injectedId?)
361
+ let handler: Handler<TParams>;
362
+ let getParams: (() => Promise<TParams[]> | TParams[]) | undefined;
363
+ let options: PrerenderOptions | undefined;
364
+ let id: string;
365
+
366
+ if (typeof handlerOrOptions === "function") {
367
+ // Two function args: getParams + handler
368
+ getParams = handlerOrGetParams as () => Promise<TParams[]> | TParams[];
369
+ handler = handlerOrOptions as Handler<TParams>;
370
+ if (typeof optionsOrId === "string") {
371
+ id = optionsOrId;
372
+ } else {
373
+ options = optionsOrId as PrerenderOptions | undefined;
374
+ id = maybeId ?? "";
375
+ }
376
+ } else {
377
+ // Single function arg: handler only
378
+ handler = handlerOrGetParams as Handler<TParams>;
379
+ if (typeof handlerOrOptions === "object" && handlerOrOptions !== null) {
380
+ options = handlerOrOptions as PrerenderOptions;
381
+ }
382
+ if (typeof optionsOrId === "string") {
383
+ id = optionsOrId;
384
+ } else {
385
+ id = maybeId ?? "";
386
+ }
387
+ }
388
+
389
+ if (isCachedFunction(handler)) {
390
+ throw new Error(
391
+ 'A "use cache" function cannot be used as a Prerender() handler. ' +
392
+ "Prerender handlers are rendered at build time. Remove the " +
393
+ '"use cache" directive — Prerender already provides caching.',
394
+ );
395
+ }
396
+ if (getParams && isCachedFunction(getParams)) {
397
+ throw new Error(
398
+ 'A "use cache" function cannot be used as Prerender() getParams. ' +
399
+ "getParams runs at build time to enumerate params. Remove the " +
400
+ '"use cache" directive.',
401
+ );
402
+ }
403
+
404
+ if (!id) {
405
+ throw new Error(
406
+ "[rsc-router] Prerender: missing $$id. " +
407
+ "Ensure the exposeInternalIds Vite plugin is configured.",
408
+ );
409
+ }
410
+
411
+ return {
412
+ __brand: "prerenderHandler" as const,
413
+ $$id: id,
414
+ handler,
415
+ ...(getParams ? { getParams } : {}),
416
+ ...(options ? { options } : {}),
417
+ };
418
+ }
419
+
420
+ // -- Passthrough sentinel ---------------------------------------------------
421
+
422
+ /**
423
+ * Sentinel returned by `ctx.passthrough()` to signal that a specific param set
424
+ * should not produce a local prerender artifact. The build skips writing the
425
+ * entry; at runtime the handler runs live (requires `{ passthrough: true }`).
426
+ */
427
+ export const PRERENDER_PASSTHROUGH: Readonly<{
428
+ __brand: "prerenderPassthrough";
429
+ }> = Object.freeze({
430
+ __brand: "prerenderPassthrough" as const,
431
+ });
432
+
433
+ export type PrerenderPassthroughResult = typeof PRERENDER_PASSTHROUGH;
434
+
435
+ /**
436
+ * Type guard to check if a value is the passthrough sentinel.
437
+ */
438
+ export function isPrerenderPassthrough(
439
+ value: unknown,
440
+ ): value is PrerenderPassthroughResult {
441
+ return (
442
+ typeof value === "object" &&
443
+ value !== null &&
444
+ "__brand" in value &&
445
+ (value as { __brand: unknown }).__brand === "prerenderPassthrough"
446
+ );
447
+ }
448
+
449
+ // -- Type guard -------------------------------------------------------------
450
+
451
+ /**
452
+ * Type guard to check if a value is a PrerenderHandlerDefinition.
453
+ */
454
+ export function isPrerenderHandler(
455
+ value: unknown,
456
+ ): value is PrerenderHandlerDefinition {
457
+ return (
458
+ typeof value === "object" &&
459
+ value !== null &&
460
+ "__brand" in value &&
461
+ (value as { __brand: unknown }).__brand === "prerenderHandler"
462
+ );
463
+ }