@rangojs/router 0.0.0-experimental.137 → 0.0.0-experimental.139

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 (866) hide show
  1. package/README.md +273 -924
  2. package/dist/bin/rango.js +265 -56
  3. package/dist/vite/index.js +710 -119
  4. package/package.json +16 -1
  5. package/skills/comparison/SKILL.md +50 -0
  6. package/skills/comparison/agents/openai.yaml +4 -0
  7. package/skills/comparison/references/framework-comparison.md +837 -0
  8. package/skills/composability/SKILL.md +50 -0
  9. package/skills/host-router/SKILL.md +45 -3
  10. package/skills/layout/SKILL.md +26 -9
  11. package/skills/middleware/SKILL.md +6 -2
  12. package/skills/migrate-nextjs/SKILL.md +12 -0
  13. package/skills/observability/SKILL.md +23 -1
  14. package/skills/parallel/SKILL.md +11 -3
  15. package/skills/rango/SKILL.md +76 -24
  16. package/skills/response-routes/SKILL.md +14 -0
  17. package/skills/route/SKILL.md +19 -3
  18. package/skills/router-setup/SKILL.md +13 -0
  19. package/skills/shell-manifest/SKILL.md +185 -0
  20. package/skills/testing/reverse-and-types.md +8 -7
  21. package/skills/vercel/SKILL.md +128 -0
  22. package/src/build/generate-manifest.ts +155 -131
  23. package/src/build/generate-route-types.ts +1 -0
  24. package/src/build/index.ts +3 -1
  25. package/src/build/route-types/include-resolution.ts +347 -47
  26. package/src/build/route-types/router-processing.ts +77 -27
  27. package/src/build/runtime-discovery.ts +4 -1
  28. package/src/cache/cf/cf-cache-store.ts +22 -0
  29. package/src/cache/index.ts +12 -0
  30. package/src/cache/vercel/index.ts +11 -0
  31. package/src/cache/vercel/vercel-cache-store.ts +948 -0
  32. package/src/host/errors.ts +15 -0
  33. package/src/host/index.ts +1 -0
  34. package/src/router/find-match.ts +71 -7
  35. package/src/router/lazy-includes.ts +64 -10
  36. package/src/router/manifest.ts +43 -6
  37. package/src/router/match-api.ts +2 -2
  38. package/src/router/navigation-snapshot.ts +7 -5
  39. package/src/router/prerender-match.ts +4 -2
  40. package/src/router/preview-match.ts +3 -1
  41. package/src/router/request-classification.ts +3 -1
  42. package/src/router/route-snapshot.ts +4 -2
  43. package/src/router/router-context.ts +3 -1
  44. package/src/router/router-interfaces.ts +9 -1
  45. package/src/router.ts +9 -2
  46. package/src/rsc/manifest-init.ts +1 -1
  47. package/src/testing/dispatch.ts +3 -3
  48. package/src/testing/generated-routes.ts +27 -11
  49. package/src/urls/include-helper.ts +10 -8
  50. package/src/urls/include-provider.ts +71 -0
  51. package/src/urls/path-helper-types.ts +25 -1
  52. package/src/vercel/index.ts +11 -0
  53. package/src/vercel/tracing.ts +88 -0
  54. package/src/vite/discovery/discover-routers.ts +1 -1
  55. package/src/vite/discovery/state.ts +1 -1
  56. package/src/vite/index.ts +2 -0
  57. package/src/vite/plugin-types.ts +84 -2
  58. package/src/vite/plugins/vercel-output.ts +384 -0
  59. package/src/vite/plugins/virtual-entries.ts +72 -0
  60. package/src/vite/rango.ts +128 -21
  61. package/src/vite/router-discovery.ts +8 -0
  62. package/src/vite/utils/shared-utils.ts +52 -2
  63. package/dist/__internal.d.ts +0 -83
  64. package/dist/__internal.d.ts.map +0 -1
  65. package/dist/__internal.js +0 -19
  66. package/dist/__internal.js.map +0 -1
  67. package/dist/__mocks__/version.d.ts +0 -7
  68. package/dist/__mocks__/version.d.ts.map +0 -1
  69. package/dist/__mocks__/version.js +0 -7
  70. package/dist/__mocks__/version.js.map +0 -1
  71. package/dist/__tests__/client-href.test.d.ts +0 -2
  72. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  73. package/dist/__tests__/client-href.test.js +0 -74
  74. package/dist/__tests__/client-href.test.js.map +0 -1
  75. package/dist/__tests__/component-utils.test.d.ts +0 -2
  76. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  77. package/dist/__tests__/component-utils.test.js +0 -51
  78. package/dist/__tests__/component-utils.test.js.map +0 -1
  79. package/dist/__tests__/event-controller.test.d.ts +0 -2
  80. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  81. package/dist/__tests__/event-controller.test.js +0 -538
  82. package/dist/__tests__/event-controller.test.js.map +0 -1
  83. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  84. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  85. package/dist/__tests__/helpers/route-tree.js +0 -374
  86. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  87. package/dist/__tests__/match-result.test.d.ts +0 -2
  88. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  89. package/dist/__tests__/match-result.test.js +0 -154
  90. package/dist/__tests__/match-result.test.js.map +0 -1
  91. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  92. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  93. package/dist/__tests__/navigation-store.test.js +0 -440
  94. package/dist/__tests__/navigation-store.test.js.map +0 -1
  95. package/dist/__tests__/partial-update.test.d.ts +0 -2
  96. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  97. package/dist/__tests__/partial-update.test.js +0 -1009
  98. package/dist/__tests__/partial-update.test.js.map +0 -1
  99. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  100. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  101. package/dist/__tests__/reverse-types.test.js +0 -656
  102. package/dist/__tests__/reverse-types.test.js.map +0 -1
  103. package/dist/__tests__/route-definition.test.d.ts +0 -2
  104. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  105. package/dist/__tests__/route-definition.test.js +0 -55
  106. package/dist/__tests__/route-definition.test.js.map +0 -1
  107. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  108. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  109. package/dist/__tests__/router-helpers.test.js +0 -377
  110. package/dist/__tests__/router-helpers.test.js.map +0 -1
  111. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  112. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  113. package/dist/__tests__/router-integration-2.test.js +0 -426
  114. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  115. package/dist/__tests__/router-integration.test.d.ts +0 -2
  116. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  117. package/dist/__tests__/router-integration.test.js +0 -1051
  118. package/dist/__tests__/router-integration.test.js.map +0 -1
  119. package/dist/__tests__/search-params.test.d.ts +0 -5
  120. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  121. package/dist/__tests__/search-params.test.js +0 -306
  122. package/dist/__tests__/search-params.test.js.map +0 -1
  123. package/dist/__tests__/segment-system.test.d.ts +0 -2
  124. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  125. package/dist/__tests__/segment-system.test.js +0 -627
  126. package/dist/__tests__/segment-system.test.js.map +0 -1
  127. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  128. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  129. package/dist/__tests__/static-handler-types.test.js +0 -63
  130. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  131. package/dist/__tests__/urls.test.d.ts +0 -2
  132. package/dist/__tests__/urls.test.d.ts.map +0 -1
  133. package/dist/__tests__/urls.test.js +0 -421
  134. package/dist/__tests__/urls.test.js.map +0 -1
  135. package/dist/__tests__/use-mount.test.d.ts +0 -2
  136. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  137. package/dist/__tests__/use-mount.test.js +0 -35
  138. package/dist/__tests__/use-mount.test.js.map +0 -1
  139. package/dist/bin/rango.d.ts +0 -2
  140. package/dist/bin/rango.d.ts.map +0 -1
  141. package/dist/bin/rango.js.map +0 -1
  142. package/dist/browser/event-controller.d.ts +0 -191
  143. package/dist/browser/event-controller.d.ts.map +0 -1
  144. package/dist/browser/event-controller.js +0 -559
  145. package/dist/browser/event-controller.js.map +0 -1
  146. package/dist/browser/index.d.ts +0 -2
  147. package/dist/browser/index.d.ts.map +0 -1
  148. package/dist/browser/index.js +0 -14
  149. package/dist/browser/index.js.map +0 -1
  150. package/dist/browser/link-interceptor.d.ts +0 -38
  151. package/dist/browser/link-interceptor.d.ts.map +0 -1
  152. package/dist/browser/link-interceptor.js +0 -99
  153. package/dist/browser/link-interceptor.js.map +0 -1
  154. package/dist/browser/logging.d.ts +0 -10
  155. package/dist/browser/logging.d.ts.map +0 -1
  156. package/dist/browser/logging.js +0 -29
  157. package/dist/browser/logging.js.map +0 -1
  158. package/dist/browser/lru-cache.d.ts +0 -17
  159. package/dist/browser/lru-cache.d.ts.map +0 -1
  160. package/dist/browser/lru-cache.js +0 -50
  161. package/dist/browser/lru-cache.js.map +0 -1
  162. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  163. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  164. package/dist/browser/merge-segment-loaders.js +0 -102
  165. package/dist/browser/merge-segment-loaders.js.map +0 -1
  166. package/dist/browser/navigation-bridge.d.ts +0 -102
  167. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  168. package/dist/browser/navigation-bridge.js +0 -708
  169. package/dist/browser/navigation-bridge.js.map +0 -1
  170. package/dist/browser/navigation-client.d.ts +0 -25
  171. package/dist/browser/navigation-client.d.ts.map +0 -1
  172. package/dist/browser/navigation-client.js +0 -157
  173. package/dist/browser/navigation-client.js.map +0 -1
  174. package/dist/browser/navigation-store.d.ts +0 -101
  175. package/dist/browser/navigation-store.d.ts.map +0 -1
  176. package/dist/browser/navigation-store.js +0 -625
  177. package/dist/browser/navigation-store.js.map +0 -1
  178. package/dist/browser/partial-update.d.ts +0 -75
  179. package/dist/browser/partial-update.d.ts.map +0 -1
  180. package/dist/browser/partial-update.js +0 -426
  181. package/dist/browser/partial-update.js.map +0 -1
  182. package/dist/browser/react/Link.d.ts +0 -86
  183. package/dist/browser/react/Link.d.ts.map +0 -1
  184. package/dist/browser/react/Link.js +0 -128
  185. package/dist/browser/react/Link.js.map +0 -1
  186. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  187. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  188. package/dist/browser/react/NavigationProvider.js +0 -216
  189. package/dist/browser/react/NavigationProvider.js.map +0 -1
  190. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  191. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  192. package/dist/browser/react/ScrollRestoration.js +0 -57
  193. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  194. package/dist/browser/react/context.d.ts +0 -46
  195. package/dist/browser/react/context.d.ts.map +0 -1
  196. package/dist/browser/react/context.js +0 -10
  197. package/dist/browser/react/context.js.map +0 -1
  198. package/dist/browser/react/index.d.ts +0 -11
  199. package/dist/browser/react/index.d.ts.map +0 -1
  200. package/dist/browser/react/index.js +0 -22
  201. package/dist/browser/react/index.js.map +0 -1
  202. package/dist/browser/react/location-state-shared.d.ts +0 -63
  203. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  204. package/dist/browser/react/location-state-shared.js +0 -81
  205. package/dist/browser/react/location-state-shared.js.map +0 -1
  206. package/dist/browser/react/location-state.d.ts +0 -23
  207. package/dist/browser/react/location-state.d.ts.map +0 -1
  208. package/dist/browser/react/location-state.js +0 -29
  209. package/dist/browser/react/location-state.js.map +0 -1
  210. package/dist/browser/react/mount-context.d.ts +0 -24
  211. package/dist/browser/react/mount-context.d.ts.map +0 -1
  212. package/dist/browser/react/mount-context.js +0 -24
  213. package/dist/browser/react/mount-context.js.map +0 -1
  214. package/dist/browser/react/use-action.d.ts +0 -64
  215. package/dist/browser/react/use-action.d.ts.map +0 -1
  216. package/dist/browser/react/use-action.js +0 -134
  217. package/dist/browser/react/use-action.js.map +0 -1
  218. package/dist/browser/react/use-client-cache.d.ts +0 -41
  219. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  220. package/dist/browser/react/use-client-cache.js +0 -39
  221. package/dist/browser/react/use-client-cache.js.map +0 -1
  222. package/dist/browser/react/use-handle.d.ts +0 -31
  223. package/dist/browser/react/use-handle.d.ts.map +0 -1
  224. package/dist/browser/react/use-handle.js +0 -144
  225. package/dist/browser/react/use-handle.js.map +0 -1
  226. package/dist/browser/react/use-href.d.ts +0 -33
  227. package/dist/browser/react/use-href.d.ts.map +0 -1
  228. package/dist/browser/react/use-href.js +0 -39
  229. package/dist/browser/react/use-href.js.map +0 -1
  230. package/dist/browser/react/use-link-status.d.ts +0 -37
  231. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  232. package/dist/browser/react/use-link-status.js +0 -99
  233. package/dist/browser/react/use-link-status.js.map +0 -1
  234. package/dist/browser/react/use-mount.d.ts +0 -25
  235. package/dist/browser/react/use-mount.d.ts.map +0 -1
  236. package/dist/browser/react/use-mount.js +0 -30
  237. package/dist/browser/react/use-mount.js.map +0 -1
  238. package/dist/browser/react/use-navigation.d.ts +0 -27
  239. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  240. package/dist/browser/react/use-navigation.js +0 -87
  241. package/dist/browser/react/use-navigation.js.map +0 -1
  242. package/dist/browser/react/use-segments.d.ts +0 -38
  243. package/dist/browser/react/use-segments.d.ts.map +0 -1
  244. package/dist/browser/react/use-segments.js +0 -130
  245. package/dist/browser/react/use-segments.js.map +0 -1
  246. package/dist/browser/request-controller.d.ts +0 -26
  247. package/dist/browser/request-controller.d.ts.map +0 -1
  248. package/dist/browser/request-controller.js +0 -147
  249. package/dist/browser/request-controller.js.map +0 -1
  250. package/dist/browser/rsc-router.d.ts +0 -129
  251. package/dist/browser/rsc-router.d.ts.map +0 -1
  252. package/dist/browser/rsc-router.js +0 -195
  253. package/dist/browser/rsc-router.js.map +0 -1
  254. package/dist/browser/scroll-restoration.d.ts +0 -93
  255. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  256. package/dist/browser/scroll-restoration.js +0 -321
  257. package/dist/browser/scroll-restoration.js.map +0 -1
  258. package/dist/browser/segment-structure-assert.d.ts +0 -17
  259. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  260. package/dist/browser/segment-structure-assert.js +0 -59
  261. package/dist/browser/segment-structure-assert.js.map +0 -1
  262. package/dist/browser/server-action-bridge.d.ts +0 -26
  263. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  264. package/dist/browser/server-action-bridge.js +0 -668
  265. package/dist/browser/server-action-bridge.js.map +0 -1
  266. package/dist/browser/shallow.d.ts +0 -12
  267. package/dist/browser/shallow.d.ts.map +0 -1
  268. package/dist/browser/shallow.js +0 -34
  269. package/dist/browser/shallow.js.map +0 -1
  270. package/dist/browser/types.d.ts +0 -369
  271. package/dist/browser/types.d.ts.map +0 -1
  272. package/dist/browser/types.js +0 -2
  273. package/dist/browser/types.js.map +0 -1
  274. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  275. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  276. package/dist/build/__tests__/generate-cli.test.js +0 -237
  277. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  278. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  279. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  280. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  281. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  282. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  283. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  284. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  285. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  286. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  287. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  288. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  289. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  290. package/dist/build/generate-manifest.d.ts +0 -81
  291. package/dist/build/generate-manifest.d.ts.map +0 -1
  292. package/dist/build/generate-manifest.js +0 -276
  293. package/dist/build/generate-manifest.js.map +0 -1
  294. package/dist/build/generate-route-types.d.ts +0 -115
  295. package/dist/build/generate-route-types.d.ts.map +0 -1
  296. package/dist/build/generate-route-types.js +0 -740
  297. package/dist/build/generate-route-types.js.map +0 -1
  298. package/dist/build/index.d.ts +0 -21
  299. package/dist/build/index.d.ts.map +0 -1
  300. package/dist/build/index.js +0 -21
  301. package/dist/build/index.js.map +0 -1
  302. package/dist/build/route-trie.d.ts +0 -71
  303. package/dist/build/route-trie.d.ts.map +0 -1
  304. package/dist/build/route-trie.js +0 -175
  305. package/dist/build/route-trie.js.map +0 -1
  306. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  307. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  308. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  309. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  310. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  311. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  312. package/dist/cache/__tests__/document-cache.test.js +0 -345
  313. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  314. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  315. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  316. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  317. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  318. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  319. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  320. package/dist/cache/__tests__/memory-store.test.js +0 -367
  321. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  322. package/dist/cache/cache-scope.d.ts +0 -102
  323. package/dist/cache/cache-scope.d.ts.map +0 -1
  324. package/dist/cache/cache-scope.js +0 -440
  325. package/dist/cache/cache-scope.js.map +0 -1
  326. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  327. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  328. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  329. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  330. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  331. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  332. package/dist/cache/cf/cf-cache-store.js +0 -242
  333. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  334. package/dist/cache/cf/index.d.ts +0 -14
  335. package/dist/cache/cf/index.d.ts.map +0 -1
  336. package/dist/cache/cf/index.js +0 -17
  337. package/dist/cache/cf/index.js.map +0 -1
  338. package/dist/cache/document-cache.d.ts +0 -64
  339. package/dist/cache/document-cache.d.ts.map +0 -1
  340. package/dist/cache/document-cache.js +0 -228
  341. package/dist/cache/document-cache.js.map +0 -1
  342. package/dist/cache/index.d.ts +0 -19
  343. package/dist/cache/index.d.ts.map +0 -1
  344. package/dist/cache/index.js +0 -21
  345. package/dist/cache/index.js.map +0 -1
  346. package/dist/cache/memory-segment-store.d.ts +0 -110
  347. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  348. package/dist/cache/memory-segment-store.js +0 -117
  349. package/dist/cache/memory-segment-store.js.map +0 -1
  350. package/dist/cache/memory-store.d.ts +0 -41
  351. package/dist/cache/memory-store.d.ts.map +0 -1
  352. package/dist/cache/memory-store.js +0 -191
  353. package/dist/cache/memory-store.js.map +0 -1
  354. package/dist/cache/types.d.ts +0 -317
  355. package/dist/cache/types.d.ts.map +0 -1
  356. package/dist/cache/types.js +0 -12
  357. package/dist/cache/types.js.map +0 -1
  358. package/dist/client.d.ts +0 -248
  359. package/dist/client.d.ts.map +0 -1
  360. package/dist/client.js +0 -367
  361. package/dist/client.js.map +0 -1
  362. package/dist/client.rsc.d.ts +0 -26
  363. package/dist/client.rsc.d.ts.map +0 -1
  364. package/dist/client.rsc.js +0 -46
  365. package/dist/client.rsc.js.map +0 -1
  366. package/dist/component-utils.d.ts +0 -36
  367. package/dist/component-utils.d.ts.map +0 -1
  368. package/dist/component-utils.js +0 -61
  369. package/dist/component-utils.js.map +0 -1
  370. package/dist/components/DefaultDocument.d.ts +0 -13
  371. package/dist/components/DefaultDocument.d.ts.map +0 -1
  372. package/dist/components/DefaultDocument.js +0 -15
  373. package/dist/components/DefaultDocument.js.map +0 -1
  374. package/dist/debug.d.ts +0 -58
  375. package/dist/debug.d.ts.map +0 -1
  376. package/dist/debug.js +0 -157
  377. package/dist/debug.js.map +0 -1
  378. package/dist/default-error-boundary.d.ts +0 -11
  379. package/dist/default-error-boundary.d.ts.map +0 -1
  380. package/dist/default-error-boundary.js +0 -45
  381. package/dist/default-error-boundary.js.map +0 -1
  382. package/dist/deps/browser.d.ts +0 -2
  383. package/dist/deps/browser.d.ts.map +0 -1
  384. package/dist/deps/browser.js +0 -3
  385. package/dist/deps/browser.js.map +0 -1
  386. package/dist/deps/html-stream-client.d.ts +0 -2
  387. package/dist/deps/html-stream-client.d.ts.map +0 -1
  388. package/dist/deps/html-stream-client.js +0 -3
  389. package/dist/deps/html-stream-client.js.map +0 -1
  390. package/dist/deps/html-stream-server.d.ts +0 -2
  391. package/dist/deps/html-stream-server.d.ts.map +0 -1
  392. package/dist/deps/html-stream-server.js +0 -3
  393. package/dist/deps/html-stream-server.js.map +0 -1
  394. package/dist/deps/rsc.d.ts +0 -2
  395. package/dist/deps/rsc.d.ts.map +0 -1
  396. package/dist/deps/rsc.js +0 -4
  397. package/dist/deps/rsc.js.map +0 -1
  398. package/dist/deps/ssr.d.ts +0 -2
  399. package/dist/deps/ssr.d.ts.map +0 -1
  400. package/dist/deps/ssr.js +0 -3
  401. package/dist/deps/ssr.js.map +0 -1
  402. package/dist/errors.d.ts +0 -174
  403. package/dist/errors.d.ts.map +0 -1
  404. package/dist/errors.js +0 -241
  405. package/dist/errors.js.map +0 -1
  406. package/dist/handle.d.ts +0 -78
  407. package/dist/handle.d.ts.map +0 -1
  408. package/dist/handle.js +0 -82
  409. package/dist/handle.js.map +0 -1
  410. package/dist/handles/MetaTags.d.ts +0 -14
  411. package/dist/handles/MetaTags.d.ts.map +0 -1
  412. package/dist/handles/MetaTags.js +0 -136
  413. package/dist/handles/MetaTags.js.map +0 -1
  414. package/dist/handles/index.d.ts +0 -6
  415. package/dist/handles/index.d.ts.map +0 -1
  416. package/dist/handles/index.js +0 -6
  417. package/dist/handles/index.js.map +0 -1
  418. package/dist/handles/meta.d.ts +0 -39
  419. package/dist/handles/meta.d.ts.map +0 -1
  420. package/dist/handles/meta.js +0 -202
  421. package/dist/handles/meta.js.map +0 -1
  422. package/dist/host/__tests__/errors.test.d.ts +0 -2
  423. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  424. package/dist/host/__tests__/errors.test.js +0 -76
  425. package/dist/host/__tests__/errors.test.js.map +0 -1
  426. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  427. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  428. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  429. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  430. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  431. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  432. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  433. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  434. package/dist/host/__tests__/router.test.d.ts +0 -2
  435. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  436. package/dist/host/__tests__/router.test.js +0 -241
  437. package/dist/host/__tests__/router.test.js.map +0 -1
  438. package/dist/host/__tests__/testing.test.d.ts +0 -2
  439. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  440. package/dist/host/__tests__/testing.test.js +0 -64
  441. package/dist/host/__tests__/testing.test.js.map +0 -1
  442. package/dist/host/__tests__/utils.test.d.ts +0 -2
  443. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  444. package/dist/host/__tests__/utils.test.js +0 -29
  445. package/dist/host/__tests__/utils.test.js.map +0 -1
  446. package/dist/host/cookie-handler.d.ts +0 -34
  447. package/dist/host/cookie-handler.d.ts.map +0 -1
  448. package/dist/host/cookie-handler.js +0 -124
  449. package/dist/host/cookie-handler.js.map +0 -1
  450. package/dist/host/errors.d.ts +0 -56
  451. package/dist/host/errors.d.ts.map +0 -1
  452. package/dist/host/errors.js +0 -79
  453. package/dist/host/errors.js.map +0 -1
  454. package/dist/host/index.d.ts +0 -29
  455. package/dist/host/index.d.ts.map +0 -1
  456. package/dist/host/index.js +0 -32
  457. package/dist/host/index.js.map +0 -1
  458. package/dist/host/pattern-matcher.d.ts +0 -36
  459. package/dist/host/pattern-matcher.d.ts.map +0 -1
  460. package/dist/host/pattern-matcher.js +0 -172
  461. package/dist/host/pattern-matcher.js.map +0 -1
  462. package/dist/host/router.d.ts +0 -26
  463. package/dist/host/router.d.ts.map +0 -1
  464. package/dist/host/router.js +0 -218
  465. package/dist/host/router.js.map +0 -1
  466. package/dist/host/testing.d.ts +0 -36
  467. package/dist/host/testing.d.ts.map +0 -1
  468. package/dist/host/testing.js +0 -55
  469. package/dist/host/testing.js.map +0 -1
  470. package/dist/host/types.d.ts +0 -115
  471. package/dist/host/types.d.ts.map +0 -1
  472. package/dist/host/types.js +0 -7
  473. package/dist/host/types.js.map +0 -1
  474. package/dist/host/utils.d.ts +0 -21
  475. package/dist/host/utils.d.ts.map +0 -1
  476. package/dist/host/utils.js +0 -23
  477. package/dist/host/utils.js.map +0 -1
  478. package/dist/href-client.d.ts +0 -131
  479. package/dist/href-client.d.ts.map +0 -1
  480. package/dist/href-client.js +0 -64
  481. package/dist/href-client.js.map +0 -1
  482. package/dist/href-context.d.ts +0 -29
  483. package/dist/href-context.d.ts.map +0 -1
  484. package/dist/href-context.js +0 -21
  485. package/dist/href-context.js.map +0 -1
  486. package/dist/index.d.ts +0 -73
  487. package/dist/index.d.ts.map +0 -1
  488. package/dist/index.js +0 -91
  489. package/dist/index.js.map +0 -1
  490. package/dist/index.rsc.d.ts +0 -32
  491. package/dist/index.rsc.d.ts.map +0 -1
  492. package/dist/index.rsc.js +0 -40
  493. package/dist/index.rsc.js.map +0 -1
  494. package/dist/internal-debug.d.ts +0 -2
  495. package/dist/internal-debug.d.ts.map +0 -1
  496. package/dist/internal-debug.js +0 -5
  497. package/dist/internal-debug.js.map +0 -1
  498. package/dist/loader.d.ts +0 -14
  499. package/dist/loader.d.ts.map +0 -1
  500. package/dist/loader.js +0 -20
  501. package/dist/loader.js.map +0 -1
  502. package/dist/loader.rsc.d.ts +0 -19
  503. package/dist/loader.rsc.d.ts.map +0 -1
  504. package/dist/loader.rsc.js +0 -99
  505. package/dist/loader.rsc.js.map +0 -1
  506. package/dist/network-error-thrower.d.ts +0 -17
  507. package/dist/network-error-thrower.d.ts.map +0 -1
  508. package/dist/network-error-thrower.js +0 -14
  509. package/dist/network-error-thrower.js.map +0 -1
  510. package/dist/outlet-context.d.ts +0 -13
  511. package/dist/outlet-context.d.ts.map +0 -1
  512. package/dist/outlet-context.js +0 -3
  513. package/dist/outlet-context.js.map +0 -1
  514. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  515. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  516. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  517. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  518. package/dist/prerender/param-hash.d.ts +0 -16
  519. package/dist/prerender/param-hash.d.ts.map +0 -1
  520. package/dist/prerender/param-hash.js +0 -36
  521. package/dist/prerender/param-hash.js.map +0 -1
  522. package/dist/prerender/store.d.ts +0 -38
  523. package/dist/prerender/store.d.ts.map +0 -1
  524. package/dist/prerender/store.js +0 -61
  525. package/dist/prerender/store.js.map +0 -1
  526. package/dist/prerender.d.ts +0 -66
  527. package/dist/prerender.d.ts.map +0 -1
  528. package/dist/prerender.js +0 -57
  529. package/dist/prerender.js.map +0 -1
  530. package/dist/reverse.d.ts +0 -196
  531. package/dist/reverse.d.ts.map +0 -1
  532. package/dist/reverse.js +0 -78
  533. package/dist/reverse.js.map +0 -1
  534. package/dist/root-error-boundary.d.ts +0 -33
  535. package/dist/root-error-boundary.d.ts.map +0 -1
  536. package/dist/root-error-boundary.js +0 -165
  537. package/dist/root-error-boundary.js.map +0 -1
  538. package/dist/route-content-wrapper.d.ts +0 -46
  539. package/dist/route-content-wrapper.d.ts.map +0 -1
  540. package/dist/route-content-wrapper.js +0 -77
  541. package/dist/route-content-wrapper.js.map +0 -1
  542. package/dist/route-definition.d.ts +0 -421
  543. package/dist/route-definition.d.ts.map +0 -1
  544. package/dist/route-definition.js +0 -868
  545. package/dist/route-definition.js.map +0 -1
  546. package/dist/route-map-builder.d.ts +0 -155
  547. package/dist/route-map-builder.d.ts.map +0 -1
  548. package/dist/route-map-builder.js +0 -237
  549. package/dist/route-map-builder.js.map +0 -1
  550. package/dist/route-types.d.ts +0 -165
  551. package/dist/route-types.d.ts.map +0 -1
  552. package/dist/route-types.js +0 -7
  553. package/dist/route-types.js.map +0 -1
  554. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  555. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  556. package/dist/router/__tests__/handler-context.test.js +0 -65
  557. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  558. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  559. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  560. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  561. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  562. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  563. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  564. package/dist/router/__tests__/match-context.test.js +0 -92
  565. package/dist/router/__tests__/match-context.test.js.map +0 -1
  566. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  567. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  568. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  569. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  570. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  571. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  572. package/dist/router/__tests__/match-result.test.js +0 -457
  573. package/dist/router/__tests__/match-result.test.js.map +0 -1
  574. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  575. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  576. package/dist/router/__tests__/on-error.test.js +0 -678
  577. package/dist/router/__tests__/on-error.test.js.map +0 -1
  578. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  579. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  580. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  581. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  582. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  583. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  584. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  585. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  586. package/dist/router/error-handling.d.ts +0 -77
  587. package/dist/router/error-handling.d.ts.map +0 -1
  588. package/dist/router/error-handling.js +0 -202
  589. package/dist/router/error-handling.js.map +0 -1
  590. package/dist/router/handler-context.d.ts +0 -20
  591. package/dist/router/handler-context.d.ts.map +0 -1
  592. package/dist/router/handler-context.js +0 -198
  593. package/dist/router/handler-context.js.map +0 -1
  594. package/dist/router/intercept-resolution.d.ts +0 -66
  595. package/dist/router/intercept-resolution.d.ts.map +0 -1
  596. package/dist/router/intercept-resolution.js +0 -246
  597. package/dist/router/intercept-resolution.js.map +0 -1
  598. package/dist/router/loader-resolution.d.ts +0 -64
  599. package/dist/router/loader-resolution.d.ts.map +0 -1
  600. package/dist/router/loader-resolution.js +0 -284
  601. package/dist/router/loader-resolution.js.map +0 -1
  602. package/dist/router/logging.d.ts +0 -15
  603. package/dist/router/logging.d.ts.map +0 -1
  604. package/dist/router/logging.js +0 -99
  605. package/dist/router/logging.js.map +0 -1
  606. package/dist/router/manifest.d.ts +0 -22
  607. package/dist/router/manifest.d.ts.map +0 -1
  608. package/dist/router/manifest.js +0 -181
  609. package/dist/router/manifest.js.map +0 -1
  610. package/dist/router/match-api.d.ts +0 -35
  611. package/dist/router/match-api.d.ts.map +0 -1
  612. package/dist/router/match-api.js +0 -406
  613. package/dist/router/match-api.js.map +0 -1
  614. package/dist/router/match-context.d.ts +0 -206
  615. package/dist/router/match-context.d.ts.map +0 -1
  616. package/dist/router/match-context.js +0 -17
  617. package/dist/router/match-context.js.map +0 -1
  618. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  619. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  620. package/dist/router/match-middleware/background-revalidation.js +0 -75
  621. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  622. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  623. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  624. package/dist/router/match-middleware/cache-lookup.js +0 -257
  625. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  626. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  627. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  628. package/dist/router/match-middleware/cache-store.js +0 -108
  629. package/dist/router/match-middleware/cache-store.js.map +0 -1
  630. package/dist/router/match-middleware/index.d.ts +0 -81
  631. package/dist/router/match-middleware/index.d.ts.map +0 -1
  632. package/dist/router/match-middleware/index.js +0 -80
  633. package/dist/router/match-middleware/index.js.map +0 -1
  634. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  635. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  636. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  637. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  638. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  639. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  640. package/dist/router/match-middleware/segment-resolution.js +0 -53
  641. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  642. package/dist/router/match-pipelines.d.ts +0 -147
  643. package/dist/router/match-pipelines.d.ts.map +0 -1
  644. package/dist/router/match-pipelines.js +0 -82
  645. package/dist/router/match-pipelines.js.map +0 -1
  646. package/dist/router/match-result.d.ts +0 -126
  647. package/dist/router/match-result.d.ts.map +0 -1
  648. package/dist/router/match-result.js +0 -93
  649. package/dist/router/match-result.js.map +0 -1
  650. package/dist/router/metrics.d.ts +0 -20
  651. package/dist/router/metrics.d.ts.map +0 -1
  652. package/dist/router/metrics.js +0 -47
  653. package/dist/router/metrics.js.map +0 -1
  654. package/dist/router/middleware.d.ts +0 -249
  655. package/dist/router/middleware.d.ts.map +0 -1
  656. package/dist/router/middleware.js +0 -434
  657. package/dist/router/middleware.js.map +0 -1
  658. package/dist/router/middleware.test.d.ts +0 -2
  659. package/dist/router/middleware.test.d.ts.map +0 -1
  660. package/dist/router/middleware.test.js +0 -816
  661. package/dist/router/middleware.test.js.map +0 -1
  662. package/dist/router/pattern-matching.d.ts +0 -149
  663. package/dist/router/pattern-matching.d.ts.map +0 -1
  664. package/dist/router/pattern-matching.js +0 -349
  665. package/dist/router/pattern-matching.js.map +0 -1
  666. package/dist/router/revalidation.d.ts +0 -44
  667. package/dist/router/revalidation.d.ts.map +0 -1
  668. package/dist/router/revalidation.js +0 -147
  669. package/dist/router/revalidation.js.map +0 -1
  670. package/dist/router/router-context.d.ts +0 -135
  671. package/dist/router/router-context.d.ts.map +0 -1
  672. package/dist/router/router-context.js +0 -36
  673. package/dist/router/router-context.js.map +0 -1
  674. package/dist/router/segment-resolution.d.ts +0 -127
  675. package/dist/router/segment-resolution.d.ts.map +0 -1
  676. package/dist/router/segment-resolution.js +0 -919
  677. package/dist/router/segment-resolution.js.map +0 -1
  678. package/dist/router/trie-matching.d.ts +0 -40
  679. package/dist/router/trie-matching.d.ts.map +0 -1
  680. package/dist/router/trie-matching.js +0 -127
  681. package/dist/router/trie-matching.js.map +0 -1
  682. package/dist/router/types.d.ts +0 -136
  683. package/dist/router/types.d.ts.map +0 -1
  684. package/dist/router/types.js +0 -7
  685. package/dist/router/types.js.map +0 -1
  686. package/dist/router.d.ts +0 -753
  687. package/dist/router.d.ts.map +0 -1
  688. package/dist/router.gen.d.ts +0 -6
  689. package/dist/router.gen.d.ts.map +0 -1
  690. package/dist/router.gen.js +0 -6
  691. package/dist/router.gen.js.map +0 -1
  692. package/dist/router.js +0 -1304
  693. package/dist/router.js.map +0 -1
  694. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  695. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  696. package/dist/rsc/__tests__/helpers.test.js +0 -140
  697. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  698. package/dist/rsc/handler.d.ts +0 -45
  699. package/dist/rsc/handler.d.ts.map +0 -1
  700. package/dist/rsc/handler.js +0 -1172
  701. package/dist/rsc/handler.js.map +0 -1
  702. package/dist/rsc/helpers.d.ts +0 -16
  703. package/dist/rsc/helpers.d.ts.map +0 -1
  704. package/dist/rsc/helpers.js +0 -55
  705. package/dist/rsc/helpers.js.map +0 -1
  706. package/dist/rsc/index.d.ts +0 -22
  707. package/dist/rsc/index.d.ts.map +0 -1
  708. package/dist/rsc/index.js +0 -23
  709. package/dist/rsc/index.js.map +0 -1
  710. package/dist/rsc/nonce.d.ts +0 -9
  711. package/dist/rsc/nonce.d.ts.map +0 -1
  712. package/dist/rsc/nonce.js +0 -18
  713. package/dist/rsc/nonce.js.map +0 -1
  714. package/dist/rsc/types.d.ts +0 -206
  715. package/dist/rsc/types.d.ts.map +0 -1
  716. package/dist/rsc/types.js +0 -8
  717. package/dist/rsc/types.js.map +0 -1
  718. package/dist/search-params.d.ts +0 -103
  719. package/dist/search-params.d.ts.map +0 -1
  720. package/dist/search-params.js +0 -74
  721. package/dist/search-params.js.map +0 -1
  722. package/dist/segment-system.d.ts +0 -75
  723. package/dist/segment-system.d.ts.map +0 -1
  724. package/dist/segment-system.js +0 -336
  725. package/dist/segment-system.js.map +0 -1
  726. package/dist/server/context.d.ts +0 -245
  727. package/dist/server/context.d.ts.map +0 -1
  728. package/dist/server/context.js +0 -197
  729. package/dist/server/context.js.map +0 -1
  730. package/dist/server/fetchable-loader-store.d.ts +0 -18
  731. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  732. package/dist/server/fetchable-loader-store.js +0 -18
  733. package/dist/server/fetchable-loader-store.js.map +0 -1
  734. package/dist/server/handle-store.d.ts +0 -85
  735. package/dist/server/handle-store.d.ts.map +0 -1
  736. package/dist/server/handle-store.js +0 -142
  737. package/dist/server/handle-store.js.map +0 -1
  738. package/dist/server/loader-registry.d.ts +0 -55
  739. package/dist/server/loader-registry.d.ts.map +0 -1
  740. package/dist/server/loader-registry.js +0 -132
  741. package/dist/server/loader-registry.js.map +0 -1
  742. package/dist/server/request-context.d.ts +0 -226
  743. package/dist/server/request-context.d.ts.map +0 -1
  744. package/dist/server/request-context.js +0 -290
  745. package/dist/server/request-context.js.map +0 -1
  746. package/dist/server/root-layout.d.ts +0 -4
  747. package/dist/server/root-layout.d.ts.map +0 -1
  748. package/dist/server/root-layout.js +0 -5
  749. package/dist/server/root-layout.js.map +0 -1
  750. package/dist/server.d.ts +0 -15
  751. package/dist/server.d.ts.map +0 -1
  752. package/dist/server.js +0 -20
  753. package/dist/server.js.map +0 -1
  754. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  755. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  756. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  757. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  758. package/dist/ssr/index.d.ts +0 -98
  759. package/dist/ssr/index.d.ts.map +0 -1
  760. package/dist/ssr/index.js +0 -158
  761. package/dist/ssr/index.js.map +0 -1
  762. package/dist/static-handler.d.ts +0 -50
  763. package/dist/static-handler.d.ts.map +0 -1
  764. package/dist/static-handler.gen.d.ts +0 -5
  765. package/dist/static-handler.gen.d.ts.map +0 -1
  766. package/dist/static-handler.gen.js +0 -5
  767. package/dist/static-handler.gen.js.map +0 -1
  768. package/dist/static-handler.js +0 -29
  769. package/dist/static-handler.js.map +0 -1
  770. package/dist/theme/ThemeProvider.d.ts +0 -20
  771. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  772. package/dist/theme/ThemeProvider.js +0 -240
  773. package/dist/theme/ThemeProvider.js.map +0 -1
  774. package/dist/theme/ThemeScript.d.ts +0 -48
  775. package/dist/theme/ThemeScript.d.ts.map +0 -1
  776. package/dist/theme/ThemeScript.js +0 -13
  777. package/dist/theme/ThemeScript.js.map +0 -1
  778. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  779. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  780. package/dist/theme/__tests__/theme.test.js +0 -103
  781. package/dist/theme/__tests__/theme.test.js.map +0 -1
  782. package/dist/theme/constants.d.ts +0 -29
  783. package/dist/theme/constants.d.ts.map +0 -1
  784. package/dist/theme/constants.js +0 -48
  785. package/dist/theme/constants.js.map +0 -1
  786. package/dist/theme/index.d.ts +0 -31
  787. package/dist/theme/index.d.ts.map +0 -1
  788. package/dist/theme/index.js +0 -36
  789. package/dist/theme/index.js.map +0 -1
  790. package/dist/theme/theme-context.d.ts +0 -40
  791. package/dist/theme/theme-context.d.ts.map +0 -1
  792. package/dist/theme/theme-context.js +0 -60
  793. package/dist/theme/theme-context.js.map +0 -1
  794. package/dist/theme/theme-script.d.ts +0 -27
  795. package/dist/theme/theme-script.d.ts.map +0 -1
  796. package/dist/theme/theme-script.js +0 -147
  797. package/dist/theme/theme-script.js.map +0 -1
  798. package/dist/theme/types.d.ts +0 -163
  799. package/dist/theme/types.d.ts.map +0 -1
  800. package/dist/theme/types.js +0 -11
  801. package/dist/theme/types.js.map +0 -1
  802. package/dist/theme/use-theme.d.ts +0 -12
  803. package/dist/theme/use-theme.d.ts.map +0 -1
  804. package/dist/theme/use-theme.js +0 -40
  805. package/dist/theme/use-theme.js.map +0 -1
  806. package/dist/types.d.ts +0 -1479
  807. package/dist/types.d.ts.map +0 -1
  808. package/dist/types.js +0 -10
  809. package/dist/types.js.map +0 -1
  810. package/dist/urls.d.ts +0 -441
  811. package/dist/urls.d.ts.map +0 -1
  812. package/dist/urls.gen.d.ts +0 -8
  813. package/dist/urls.gen.d.ts.map +0 -1
  814. package/dist/urls.gen.js +0 -8
  815. package/dist/urls.gen.js.map +0 -1
  816. package/dist/urls.js +0 -443
  817. package/dist/urls.js.map +0 -1
  818. package/dist/use-loader.d.ts +0 -127
  819. package/dist/use-loader.d.ts.map +0 -1
  820. package/dist/use-loader.js +0 -237
  821. package/dist/use-loader.js.map +0 -1
  822. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  823. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  824. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  825. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  826. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  827. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  828. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  829. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  830. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  831. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  832. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  833. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  834. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  835. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  836. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  837. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  838. package/dist/vite/ast-handler-extract.d.ts +0 -49
  839. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  840. package/dist/vite/ast-handler-extract.js +0 -249
  841. package/dist/vite/ast-handler-extract.js.map +0 -1
  842. package/dist/vite/expose-action-id.d.ts +0 -19
  843. package/dist/vite/expose-action-id.d.ts.map +0 -1
  844. package/dist/vite/expose-action-id.js +0 -250
  845. package/dist/vite/expose-action-id.js.map +0 -1
  846. package/dist/vite/expose-id-utils.d.ts +0 -69
  847. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  848. package/dist/vite/expose-id-utils.js +0 -289
  849. package/dist/vite/expose-id-utils.js.map +0 -1
  850. package/dist/vite/expose-internal-ids.d.ts +0 -22
  851. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  852. package/dist/vite/expose-internal-ids.js +0 -886
  853. package/dist/vite/expose-internal-ids.js.map +0 -1
  854. package/dist/vite/index.d.ts +0 -149
  855. package/dist/vite/index.d.ts.map +0 -1
  856. package/dist/vite/index.js.bak +0 -5448
  857. package/dist/vite/index.js.map +0 -1
  858. package/dist/vite/index.named-routes.gen.ts +0 -103
  859. package/dist/vite/package-resolution.d.ts +0 -43
  860. package/dist/vite/package-resolution.d.ts.map +0 -1
  861. package/dist/vite/package-resolution.js +0 -112
  862. package/dist/vite/package-resolution.js.map +0 -1
  863. package/dist/vite/virtual-entries.d.ts +0 -25
  864. package/dist/vite/virtual-entries.d.ts.map +0 -1
  865. package/dist/vite/virtual-entries.js +0 -110
  866. package/dist/vite/virtual-entries.js.map +0 -1
@@ -0,0 +1,185 @@
1
+ ---
2
+ name: shell-manifest
3
+ description: Shell manifest pattern — replayed handles as cache metadata that live loaders read, e.g. a prerendered product list with batched live prices
4
+ argument-hint:
5
+ ---
6
+
7
+ # Shell Manifest — cache metadata for live loaders
8
+
9
+ Use this when a cached or prerendered shell has dynamic holes, and the live
10
+ data layer needs to know **what the shell actually contains** — which
11
+ products, which slots, which keys. The frozen render describes itself
12
+ through a handle; loaders (always live) read that description and fetch
13
+ exactly the dynamic data the shell needs, in one batch.
14
+
15
+ Canonical case: a prerendered product list where prices must stay live.
16
+
17
+ ## The problem this solves
18
+
19
+ Any cached-shell-plus-live-holes design has a coordination gap: how does the
20
+ live layer know what the holes need?
21
+
22
+ - **Per-hole fetching** (each `<Price>` component fetching for itself) is the
23
+ N+1 default — N visible products, N queries.
24
+ - **A loader that re-queries the list** ("current top products") drifts from
25
+ a stale shell — right prices attached to wrong products.
26
+
27
+ The shell manifest closes the gap with a consistency guarantee: the loader
28
+ reads the ids the shell _actually rendered_, replayed from the same stored
29
+ artifact, so the holes can never desync from the shell and the query is
30
+ batched.
31
+
32
+ ## The mechanism (three features composed)
33
+
34
+ 1. **Handles record data at render time.** The handler pushes to a handle
35
+ (`ctx.use(Handle)`) while it renders — at build time for `Prerender`, on
36
+ the cache miss for `cache()`.
37
+ 2. **Replay on every hit.** Handle data is stored with the Flight payload
38
+ and replayed into the handle store on cache/prerender hits — handler code
39
+ does not re-run, but its pushes do.
40
+ 3. **Loaders read after the render barrier.** A DSL loader can
41
+ `await ctx.rendered()` (waits for all non-loader segments to settle —
42
+ fresh render or replay alike), then `ctx.use(Handle)` returns the
43
+ **collected** handle data.
44
+
45
+ Loaders are live by default, so the read happens on every request even when
46
+ the shell is a hit.
47
+
48
+ ## Canonical example: prerendered list, live prices
49
+
50
+ ```tsx
51
+ // handles/rendered-products.ts
52
+ import { createHandle } from "@rangojs/router";
53
+
54
+ // TData = string (one push per product id), collected to a flat string[]
55
+ export const RenderedProducts = createHandle<string, string[]>((segments) =>
56
+ segments.flat(),
57
+ );
58
+ ```
59
+
60
+ ```tsx
61
+ // routes/products.tsx — the list is baked at build time; prices are not
62
+ import { Prerender } from "@rangojs/router";
63
+ import { RenderedProducts } from "../handles/rendered-products";
64
+ import { Price } from "../components/price";
65
+
66
+ export const ProductList = Prerender(
67
+ async () => [{ category: "espresso" }, { category: "filter" }],
68
+ async (ctx) => {
69
+ const products = await db.productsByCategory(ctx.params.category);
70
+ const track = ctx.use(RenderedProducts);
71
+ for (const p of products) track(p.id);
72
+ return (
73
+ <ul>
74
+ {products.map((p) => (
75
+ <li key={p.id}>
76
+ {p.name} <Price id={p.id} />
77
+ </li>
78
+ ))}
79
+ </ul>
80
+ );
81
+ },
82
+ );
83
+ ```
84
+
85
+ ```ts
86
+ // loaders/prices.ts — one batched query for exactly the rendered products
87
+ import { createLoader } from "@rangojs/router";
88
+ import { RenderedProducts } from "../handles/rendered-products";
89
+
90
+ export const PriceLoader = createLoader(async (ctx) => {
91
+ "use server";
92
+ await ctx.rendered();
93
+ const ids = ctx.use(RenderedProducts);
94
+ return db.pricesFor(ids); // Map<string, number> keyed by product id
95
+ });
96
+ ```
97
+
98
+ ```tsx
99
+ // urls.tsx — wire the route and register the loader
100
+ path("/products/:category", ProductList, { name: "products" }, () => [
101
+ loader(PriceLoader),
102
+ ]);
103
+ ```
104
+
105
+ ```tsx
106
+ // components/price.tsx — live hole in the frozen shell
107
+ "use client";
108
+ import { useLoader } from "@rangojs/router/client";
109
+ import { PriceLoader } from "../loaders/prices";
110
+
111
+ export function Price({ id }: { id: string }) {
112
+ const { data } = useLoader(PriceLoader);
113
+ return <span>{formatPrice(data[id])}</span>;
114
+ }
115
+ ```
116
+
117
+ Request flow on a hit: stored payload replays (handler never runs) → handle
118
+ data lands in the store → render barrier resolves → `PriceLoader` reads the
119
+ replayed ids → one query → prices stream into `<Price>` components.
120
+
121
+ ## Works with runtime cache() too
122
+
123
+ `Prerender` is build-time caching; the replay mechanism is identical for the
124
+ runtime segment cache. Wrap the route in `cache()` instead and the handler
125
+ pushes on the miss, replays on every hit:
126
+
127
+ ```tsx
128
+ cache({ ttl: 600, tags: ["products"] }, () => [
129
+ path("/products/:category", ProductList, { name: "products" }, () => [
130
+ loader(PriceLoader),
131
+ ]),
132
+ ]);
133
+ ```
134
+
135
+ ## Contract and gotchas
136
+
137
+ - **The manifest is exactly as fresh as the shell.** Replayed handle data is
138
+ frozen with the payload. To change _which_ products render, invalidate the
139
+ shell (`updateTag("products")`, TTL expiry, rebuild) — never treat the
140
+ loader as the refresh path for the list itself. This is the point:
141
+ shell and holes cannot desync because they share one artifact.
142
+ - **No request-scoped data in a manifest handle.** The handle data is baked
143
+ into a shared artifact — the same cross-user rule as any cached content.
144
+ Ids, slugs, slot names, variant keys: yes. Anything derived from
145
+ `cookies()`/`headers()`: no.
146
+ - **`ctx.rendered()` is experimental and DSL-loaders-only.** It throws in
147
+ fetchable/standalone loader calls that run outside a route render.
148
+ - **The reading loader serializes after the shell.** `await ctx.rendered()`
149
+ deliberately gives up loader/render parallelism — on a miss the loader
150
+ waits for segment resolution; on a hit (the common case for a cached
151
+ shell) replay is immediate and the wait is negligible. A
152
+ `debugPerformance` waterfall shows this loader after the render bar; for
153
+ this pattern that is the contract, not a regression.
154
+ - **`ctx.use(Handle)` before `await ctx.rendered()` throws** in a loader,
155
+ with an error saying to await the barrier first.
156
+ - **Deferred handle values are resolved before storage** (resolve-by-default),
157
+ so the manifest read always sees plain values, never promises.
158
+
159
+ ## Testing
160
+
161
+ `runLoader` seeds the barrier and the collected handle value directly —
162
+ matched by handle reference (the same seeding style as loader deps):
163
+
164
+ ```ts
165
+ import { runLoader } from "@rangojs/router/testing";
166
+
167
+ const prices = await runLoader(PriceLoader, {
168
+ rendered: true,
169
+ handles: [[RenderedProducts, ["widget-a", "widget-b"]]],
170
+ env: { DB: fakeDb },
171
+ });
172
+ ```
173
+
174
+ This tests the loader's post-barrier logic. The real
175
+ push → store → replay → barrier wiring is covered at the e2e tier (dev +
176
+ production), like every cache-path behavior.
177
+
178
+ ## Related
179
+
180
+ - `/prerender` — `Prerender`/`Passthrough`, build flow, passthrough fallback
181
+ - `/caching` — segment `cache()`, stores, tags
182
+ - `/loader` — loader context, `ctx.rendered()`, streaming
183
+ - `/hooks` — `useHandle` for reading handle data in client components
184
+ - `/rango` → "Passing data down the tree" — this pattern is the frozen→live
185
+ counterpart of that ladder
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Layer:** unit (node) + typecheck · **Import:** `@rangojs/router/client` (useReverse), `@rangojs/router/testing` (assertGeneratedRoutesMatch) · **DSL it tests:** `reverse`/`href`/`useReverse` (see `/typesafety`, `/links`)
4
4
 
5
- The reverse/href/params/env types are a real contract: a wrong route name, a missing param, or an unknown env binding should be a COMPILE error, not a runtime surprise. The type-test recipes have no runtime API — `tsc --noEmit` IS the assertion. `assertGeneratedRoutesMatch` is the one runtime helper here: it runs the router's real matching to expand lazy includes, then diffs the live `routeMap` against the generated named-routes map you seed.
5
+ The reverse/href/params/env types are a real contract: a wrong route name, a missing param, or an unknown env binding should be a COMPILE error, not a runtime surprise. The type-test recipes have no runtime API — `tsc --noEmit` IS the assertion. `assertGeneratedRoutesMatch` is the one runtime helper here: it runs the router's real matching to expand lazy includes, then diffs the live `routeMap` against the generated named-routes map you seed. It (and `diffGeneratedRoutes`) are **async — `await` them** — because expanding an async `include(prefix, () => import("./routes"))` group means importing that module first.
6
6
 
7
7
  ## API
8
8
 
@@ -13,7 +13,7 @@ The reverse/href/params/env types are a real contract: a wrong route name, a mis
13
13
  | `router` | `{ routeMap; findMatch? }` | Your router (real impl). `routeMap` is the live name→pattern map; `findMatch` (when present) is called to force-expand lazy `include()`d routes. |
14
14
  | `generatedMap` | `Record<string, unknown>` (optional) | The imported `*.named-routes.gen.ts` map (name→pattern, or `{ path }` objects). Omit to diff against the global route map (`getGlobalRouteMap()`) instead. |
15
15
 
16
- ### Context — `GeneratedRoutesDiff` (what `diffGeneratedRoutes` returns)
16
+ ### Context — `GeneratedRoutesDiff` (what `diffGeneratedRoutes` resolves to)
17
17
 
18
18
  | Field | Type | Meaning |
19
19
  | ---------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -24,7 +24,7 @@ The reverse/href/params/env types are a real contract: a wrong route name, a mis
24
24
 
25
25
  ### Returns — `assertGeneratedRoutesMatch`
26
26
 
27
- `void` on match. On drift, throws an `Error` listing every missing, extra, and mismatched route plus a "regenerate the `*.named-routes.gen.ts` file" hint. (`diffGeneratedRoutes` returns the `GeneratedRoutesDiff` above without throwing.)
27
+ `Promise<void>` — **await it**. Resolves on match; on drift the promise REJECTS with an `Error` listing every missing, extra, and mismatched route plus a "regenerate the `*.named-routes.gen.ts` file" hint. (`diffGeneratedRoutes` resolves to the `GeneratedRoutesDiff` above and never rejects.) Both are async so an async `include(() => import())` group is imported and spliced into `routeMap` before the diff — call them without `await` and every route in that group reads as a false `missing`.
28
28
 
29
29
  ## Recipe
30
30
 
@@ -57,14 +57,15 @@ expectTypeOf<
57
57
 
58
58
  ```ts
59
59
  // 3. assertGeneratedRoutesMatch — a one-liner whole-app drift test. Real
60
- // matching expands lazy include()d routes before the diff.
60
+ // matching expands lazy include()d routes before the diff. It is async
61
+ // (it awaits findMatch to import async include groups), so await it.
61
62
  import { it } from "vitest";
62
63
  import { assertGeneratedRoutesMatch } from "@rangojs/router/testing";
63
64
  import { router } from "../src/router";
64
65
  import generated from "../src/router.named-routes.gen";
65
66
 
66
- it("generated named-routes map is in sync with the router", () => {
67
- assertGeneratedRoutesMatch(router, generated);
67
+ it("generated named-routes map is in sync with the router", async () => {
68
+ await assertGeneratedRoutesMatch(router, generated);
68
69
  });
69
70
  ```
70
71
 
@@ -74,7 +75,7 @@ For a large type-only suite, collect recipe-1/2 assertions in `*.test-d.ts` file
74
75
 
75
76
  - Type tests run at TYPECHECK time (`tsc --noEmit`), NOT in the vitest runner. They are their own layer — wire them into CI as a real step (`pnpm run typecheck`). A type test nobody runs is just a comment.
76
77
  - `@ts-expect-error` ERRORS if the line below it ever starts compiling, so a regressed guard fails the typecheck. A runtime test cannot assert "this should not type-check".
77
- - `assertGeneratedRoutesMatch` force-expands lazy `include()`d routes (calls `findMatch` on a concrete path derived from each generated pattern) before diffing — otherwise every included route reads as a false `missing`. This makes the whole-app drift check work in a plain unit test. Routers without `findMatch` (a bare `{ routeMap }`) are left as-is.
78
+ - `assertGeneratedRoutesMatch` force-expands lazy `include()`d routes (awaits `findMatch` on a concrete path derived from each generated pattern) before diffing — otherwise every included route reads as a false `missing`. It is **async** so it can await the module import behind an async `include(() => import())` group; `await` the call (or the async group's routes read as `missing`). This makes the whole-app drift check work in a plain unit test. Routers without `findMatch` (a bare `{ routeMap }`) are left as-is.
78
79
  - MULTI-APP route-map isolation. `href()`/`reverse()` typing is GLOBAL — each app's generated file augments the one `Rango.GeneratedRouteMap` interface. A `renderRoute` suite that imports a client component from app B (which calls `href("/b-route")`) won't typecheck if the same tsconfig program also carries app A's augmentation: A's route union rejects B's name. `renderRoute` is app-agnostic at RUNTIME; the collision is purely the global `href` typing. Keep a `renderRoute` suite single-app, or give each app its OWN tsconfig program (see `/typesafety`); a quick sidestep is to probe `useMount`/`useHref` inline instead of importing the cross-app component.
79
80
 
80
81
  ## See also
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: vercel
3
+ description: Deploy a Rango app to Vercel Functions (Build Output API v3)
4
+ argument-hint:
5
+ ---
6
+
7
+ # Vercel deployment
8
+
9
+ The `vercel` preset builds like the `node` preset (Vercel runs Node Functions, not Workers): rango owns the RSC entry, folds `process.env.NODE_ENV` for the SSR/RSC build, and after `vite build` assembles a `.vercel/output` directory (Build Output API v3) from `dist/` — a single streaming Node Function plus the static client assets.
10
+
11
+ ## Setup
12
+
13
+ ```bash
14
+ npm install @vercel/functions
15
+ ```
16
+
17
+ ```typescript
18
+ // vite.config.ts
19
+ import { defineConfig } from "vite";
20
+ import react from "@vitejs/plugin-react";
21
+ import { rango } from "@rangojs/router/vite";
22
+
23
+ export default defineConfig({
24
+ plugins: [react(), rango({ preset: "vercel" })],
25
+ });
26
+ ```
27
+
28
+ `@vercel/functions` is required: it backs the generated function launcher (`waitUntil`) and `VercelCacheStore`. The build fails with a clear error if it is missing.
29
+
30
+ `vite build` produces `.vercel/output`; deploy with the Vercel CLI (`vercel deploy --prebuilt`) or via Git integration.
31
+
32
+ ## Function configuration
33
+
34
+ Per-function knobs go under `vercel` and are written into `.vc-config.json`:
35
+
36
+ ```typescript
37
+ rango({
38
+ preset: "vercel",
39
+ vercel: {
40
+ runtime: "nodejs22.x", // default
41
+ maxDuration: 30, // seconds, default
42
+ memory: 1024, // MB (platform default when omitted)
43
+ regions: ["fra1"], // pin regions (platform default when omitted)
44
+ functionName: "index", // the <name>.func dir + config.json route
45
+ },
46
+ });
47
+ ```
48
+
49
+ ## Runtime Cache
50
+
51
+ `VercelCacheStore` wraps the Vercel Runtime Cache. Locally (no `process.env.VERCEL`) fall back to an in-memory store so dev/preview work without the platform:
52
+
53
+ ```typescript
54
+ import {
55
+ MemorySegmentCacheStore,
56
+ VercelCacheStore,
57
+ } from "@rangojs/router/cache";
58
+ import { getCache, waitUntil } from "@vercel/functions";
59
+
60
+ const defaults = { ttl: 60, swr: 300 };
61
+ const memoryStore = new MemorySegmentCacheStore({ defaults });
62
+
63
+ function resolveCache() {
64
+ if (process.env.VERCEL) {
65
+ return {
66
+ store: new VercelCacheStore({
67
+ cache: getCache({ namespace: process.env.VERCEL_DEPLOYMENT_ID }),
68
+ waitUntil,
69
+ defaults,
70
+ }),
71
+ };
72
+ }
73
+ return { store: memoryStore };
74
+ }
75
+
76
+ export const router = createRouter({ cache: resolveCache }).routes(/* ... */);
77
+ ```
78
+
79
+ The cache factory receives `(env, ctx)`; on Vercel `env` is `process.env` and `ctx` is `{ waitUntil }`.
80
+
81
+ ## Host routers (multi-app)
82
+
83
+ A multi-app host router deploys as a **single function** running `hostRouter.match()` for every request (mirrors the Cloudflare single-worker model). Two requirements:
84
+
85
+ 1. The host module exports the `HostRouter` **instance** (default export, or a named `hostRouter`/`router` export) — not a Cloudflare-style `{ fetch }` object, because rango owns the entry and calls `match()` for you.
86
+ 2. Point at the host entry (a host app has several `createRouter()` sub-apps, so auto-discovery can't pick one). rango auto-detects a lone `createHostRouter()` file; set `hostRouter` to be explicit:
87
+
88
+ ```typescript
89
+ rango({ preset: "vercel", hostRouter: "./src/worker.rsc.tsx" });
90
+ ```
91
+
92
+ ```typescript
93
+ // src/worker.rsc.tsx
94
+ import { createHostRouter } from "@rangojs/router/host";
95
+
96
+ export const hostRouter = createHostRouter();
97
+ hostRouter.host(["admin.*"]).lazy(() => import("./apps/admin/handler.js"));
98
+ hostRouter.host(["."]).lazy(() => import("./apps/site/handler.js"));
99
+
100
+ export default hostRouter; // the instance
101
+ ```
102
+
103
+ `{ env, ctx }` is threaded unchanged from the function to each matched sub-app's handler and its `cache(env, ctx)` factory. See the `host-router` skill for sub-app structure and routing patterns.
104
+
105
+ ## Tracing (custom spans)
106
+
107
+ Vercel exposes tracing through OpenTelemetry. `createVercelTracing()` (from `@rangojs/router/vercel`) emits the router's `rango.*` phase spans onto the global OTel tracer that `@vercel/otel`'s `registerOTel()` installs:
108
+
109
+ ```typescript
110
+ // instrumentation.ts — install the provider, then export the tracing config so
111
+ // importing this module is what runs registerOTel(). A Rango/Vite app does NOT
112
+ // auto-load `instrumentation.ts` like Next.js does, so a standalone
113
+ // registerOTel() that nothing imports is a silent no-op.
114
+ import { registerOTel } from "@vercel/otel";
115
+ import { createVercelTracing } from "@rangojs/router/vercel";
116
+ registerOTel({ serviceName: "my-app" });
117
+ export const tracing = createVercelTracing();
118
+
119
+ // router.tsx — importing `tracing` runs instrumentation.ts (and registerOTel)
120
+ import { tracing } from "./instrumentation.js";
121
+ export const router = createRouter({ tracing }).routes(/* ... */);
122
+ ```
123
+
124
+ `createVercelTracing(opts?)` takes `{ enabled, spans, tracerName, tracer }` — same phase set as `createCloudflareTracing` (`rango.request/middleware/action/loader/render/ssr`). Caveats: Node-runtime only (Vercel custom spans are unsupported on Edge); `registerOTel()` must run before the first request; `@vercel/otel` is what unlocks Vercel Session Tracing + Trace Drains. The deploy bundles `@vercel/otel` and its `@opentelemetry/*` peers into the function (no `node_modules` at runtime), so they must be installed. See `examples/vercel-basic` for a worked hybrid setup and the `observability` skill for the cross-platform tracing model.
125
+
126
+ ## Local validation without deploying
127
+
128
+ `vite preview` serves the static client assets only. To preview the RSC **function**, serve the assembled `.vercel/output` behind filesystem-then-function routing — `examples/vercel-basic/scripts/preview.mjs` does this (and `pnpm preview:vercel` runs it). For a faithful deploy test (isolated filesystem, ESM, self-contained bundle), `examples/vercel-basic/scripts/smoke.mjs` serves it from a temp dir outside the repo. Both share `scripts/serve-vercel-output.mjs`.