@rangojs/router 0.0.0-experimental.114 → 0.0.0-experimental.116

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 (844) hide show
  1. package/dist/vite/index.js +205 -95
  2. package/package.json +17 -18
  3. package/skills/api-client/SKILL.md +211 -0
  4. package/skills/mime-routes/SKILL.md +1 -1
  5. package/skills/rango/SKILL.md +1 -0
  6. package/skills/response-routes/SKILL.md +61 -43
  7. package/skills/typesafety/SKILL.md +3 -3
  8. package/src/__augment-tests__/augmented.check.ts +2 -3
  9. package/src/build/collect-fallback-refs.ts +107 -0
  10. package/src/build/generate-manifest.ts +28 -1
  11. package/src/build/index.ts +8 -1
  12. package/src/build/prefix-tree-utils.ts +123 -0
  13. package/src/build/route-trie.ts +43 -0
  14. package/src/client.tsx +4 -23
  15. package/src/errors.ts +0 -3
  16. package/src/href-client.ts +7 -8
  17. package/src/index.rsc.ts +1 -2
  18. package/src/index.ts +1 -2
  19. package/src/router/find-match.ts +54 -6
  20. package/src/router/lazy-includes.ts +33 -14
  21. package/src/router/manifest.ts +19 -6
  22. package/src/router/pattern-matching.ts +15 -2
  23. package/src/router/router-interfaces.ts +11 -0
  24. package/src/router/trie-matching.ts +22 -3
  25. package/src/router.ts +21 -7
  26. package/src/rsc/manifest-init.ts +28 -41
  27. package/src/rsc/response-error.ts +79 -12
  28. package/src/rsc/response-route-handler.ts +16 -13
  29. package/src/urls/index.ts +1 -2
  30. package/src/urls/type-extraction.ts +33 -24
  31. package/src/vite/debug.ts +1 -0
  32. package/src/vite/discovery/discover-routers.ts +46 -29
  33. package/src/vite/discovery/state.ts +7 -0
  34. package/src/vite/index.ts +2 -0
  35. package/src/vite/plugin-types.ts +67 -0
  36. package/src/vite/plugins/client-ref-hashing.ts +12 -1
  37. package/src/vite/rango.ts +40 -0
  38. package/src/vite/utils/client-chunks.ts +190 -0
  39. package/src/vite/utils/manifest-utils.ts +8 -75
  40. package/src/vite/utils/shared-utils.ts +68 -3
  41. package/dist/__internal.d.ts +0 -83
  42. package/dist/__internal.d.ts.map +0 -1
  43. package/dist/__internal.js +0 -19
  44. package/dist/__internal.js.map +0 -1
  45. package/dist/__mocks__/version.d.ts +0 -7
  46. package/dist/__mocks__/version.d.ts.map +0 -1
  47. package/dist/__mocks__/version.js +0 -7
  48. package/dist/__mocks__/version.js.map +0 -1
  49. package/dist/__tests__/client-href.test.d.ts +0 -2
  50. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  51. package/dist/__tests__/client-href.test.js +0 -74
  52. package/dist/__tests__/client-href.test.js.map +0 -1
  53. package/dist/__tests__/component-utils.test.d.ts +0 -2
  54. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  55. package/dist/__tests__/component-utils.test.js +0 -51
  56. package/dist/__tests__/component-utils.test.js.map +0 -1
  57. package/dist/__tests__/event-controller.test.d.ts +0 -2
  58. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  59. package/dist/__tests__/event-controller.test.js +0 -538
  60. package/dist/__tests__/event-controller.test.js.map +0 -1
  61. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  62. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  63. package/dist/__tests__/helpers/route-tree.js +0 -374
  64. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  65. package/dist/__tests__/match-result.test.d.ts +0 -2
  66. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  67. package/dist/__tests__/match-result.test.js +0 -154
  68. package/dist/__tests__/match-result.test.js.map +0 -1
  69. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  70. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  71. package/dist/__tests__/navigation-store.test.js +0 -440
  72. package/dist/__tests__/navigation-store.test.js.map +0 -1
  73. package/dist/__tests__/partial-update.test.d.ts +0 -2
  74. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  75. package/dist/__tests__/partial-update.test.js +0 -1009
  76. package/dist/__tests__/partial-update.test.js.map +0 -1
  77. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  78. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  79. package/dist/__tests__/reverse-types.test.js +0 -656
  80. package/dist/__tests__/reverse-types.test.js.map +0 -1
  81. package/dist/__tests__/route-definition.test.d.ts +0 -2
  82. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  83. package/dist/__tests__/route-definition.test.js +0 -55
  84. package/dist/__tests__/route-definition.test.js.map +0 -1
  85. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  86. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  87. package/dist/__tests__/router-helpers.test.js +0 -377
  88. package/dist/__tests__/router-helpers.test.js.map +0 -1
  89. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  90. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  91. package/dist/__tests__/router-integration-2.test.js +0 -426
  92. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  93. package/dist/__tests__/router-integration.test.d.ts +0 -2
  94. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  95. package/dist/__tests__/router-integration.test.js +0 -1051
  96. package/dist/__tests__/router-integration.test.js.map +0 -1
  97. package/dist/__tests__/search-params.test.d.ts +0 -5
  98. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  99. package/dist/__tests__/search-params.test.js +0 -306
  100. package/dist/__tests__/search-params.test.js.map +0 -1
  101. package/dist/__tests__/segment-system.test.d.ts +0 -2
  102. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  103. package/dist/__tests__/segment-system.test.js +0 -627
  104. package/dist/__tests__/segment-system.test.js.map +0 -1
  105. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  106. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  107. package/dist/__tests__/static-handler-types.test.js +0 -63
  108. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  109. package/dist/__tests__/urls.test.d.ts +0 -2
  110. package/dist/__tests__/urls.test.d.ts.map +0 -1
  111. package/dist/__tests__/urls.test.js +0 -421
  112. package/dist/__tests__/urls.test.js.map +0 -1
  113. package/dist/__tests__/use-mount.test.d.ts +0 -2
  114. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  115. package/dist/__tests__/use-mount.test.js +0 -35
  116. package/dist/__tests__/use-mount.test.js.map +0 -1
  117. package/dist/bin/rango.d.ts +0 -2
  118. package/dist/bin/rango.d.ts.map +0 -1
  119. package/dist/bin/rango.js.map +0 -1
  120. package/dist/browser/event-controller.d.ts +0 -191
  121. package/dist/browser/event-controller.d.ts.map +0 -1
  122. package/dist/browser/event-controller.js +0 -559
  123. package/dist/browser/event-controller.js.map +0 -1
  124. package/dist/browser/index.d.ts +0 -2
  125. package/dist/browser/index.d.ts.map +0 -1
  126. package/dist/browser/index.js +0 -14
  127. package/dist/browser/index.js.map +0 -1
  128. package/dist/browser/link-interceptor.d.ts +0 -38
  129. package/dist/browser/link-interceptor.d.ts.map +0 -1
  130. package/dist/browser/link-interceptor.js +0 -99
  131. package/dist/browser/link-interceptor.js.map +0 -1
  132. package/dist/browser/logging.d.ts +0 -10
  133. package/dist/browser/logging.d.ts.map +0 -1
  134. package/dist/browser/logging.js +0 -29
  135. package/dist/browser/logging.js.map +0 -1
  136. package/dist/browser/lru-cache.d.ts +0 -17
  137. package/dist/browser/lru-cache.d.ts.map +0 -1
  138. package/dist/browser/lru-cache.js +0 -50
  139. package/dist/browser/lru-cache.js.map +0 -1
  140. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  141. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  142. package/dist/browser/merge-segment-loaders.js +0 -102
  143. package/dist/browser/merge-segment-loaders.js.map +0 -1
  144. package/dist/browser/navigation-bridge.d.ts +0 -102
  145. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  146. package/dist/browser/navigation-bridge.js +0 -708
  147. package/dist/browser/navigation-bridge.js.map +0 -1
  148. package/dist/browser/navigation-client.d.ts +0 -25
  149. package/dist/browser/navigation-client.d.ts.map +0 -1
  150. package/dist/browser/navigation-client.js +0 -157
  151. package/dist/browser/navigation-client.js.map +0 -1
  152. package/dist/browser/navigation-store.d.ts +0 -101
  153. package/dist/browser/navigation-store.d.ts.map +0 -1
  154. package/dist/browser/navigation-store.js +0 -625
  155. package/dist/browser/navigation-store.js.map +0 -1
  156. package/dist/browser/partial-update.d.ts +0 -75
  157. package/dist/browser/partial-update.d.ts.map +0 -1
  158. package/dist/browser/partial-update.js +0 -426
  159. package/dist/browser/partial-update.js.map +0 -1
  160. package/dist/browser/react/Link.d.ts +0 -86
  161. package/dist/browser/react/Link.d.ts.map +0 -1
  162. package/dist/browser/react/Link.js +0 -128
  163. package/dist/browser/react/Link.js.map +0 -1
  164. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  165. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  166. package/dist/browser/react/NavigationProvider.js +0 -216
  167. package/dist/browser/react/NavigationProvider.js.map +0 -1
  168. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  169. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  170. package/dist/browser/react/ScrollRestoration.js +0 -57
  171. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  172. package/dist/browser/react/context.d.ts +0 -46
  173. package/dist/browser/react/context.d.ts.map +0 -1
  174. package/dist/browser/react/context.js +0 -10
  175. package/dist/browser/react/context.js.map +0 -1
  176. package/dist/browser/react/index.d.ts +0 -11
  177. package/dist/browser/react/index.d.ts.map +0 -1
  178. package/dist/browser/react/index.js +0 -22
  179. package/dist/browser/react/index.js.map +0 -1
  180. package/dist/browser/react/location-state-shared.d.ts +0 -63
  181. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  182. package/dist/browser/react/location-state-shared.js +0 -81
  183. package/dist/browser/react/location-state-shared.js.map +0 -1
  184. package/dist/browser/react/location-state.d.ts +0 -23
  185. package/dist/browser/react/location-state.d.ts.map +0 -1
  186. package/dist/browser/react/location-state.js +0 -29
  187. package/dist/browser/react/location-state.js.map +0 -1
  188. package/dist/browser/react/mount-context.d.ts +0 -24
  189. package/dist/browser/react/mount-context.d.ts.map +0 -1
  190. package/dist/browser/react/mount-context.js +0 -24
  191. package/dist/browser/react/mount-context.js.map +0 -1
  192. package/dist/browser/react/use-action.d.ts +0 -64
  193. package/dist/browser/react/use-action.d.ts.map +0 -1
  194. package/dist/browser/react/use-action.js +0 -134
  195. package/dist/browser/react/use-action.js.map +0 -1
  196. package/dist/browser/react/use-client-cache.d.ts +0 -41
  197. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  198. package/dist/browser/react/use-client-cache.js +0 -39
  199. package/dist/browser/react/use-client-cache.js.map +0 -1
  200. package/dist/browser/react/use-handle.d.ts +0 -31
  201. package/dist/browser/react/use-handle.d.ts.map +0 -1
  202. package/dist/browser/react/use-handle.js +0 -144
  203. package/dist/browser/react/use-handle.js.map +0 -1
  204. package/dist/browser/react/use-href.d.ts +0 -33
  205. package/dist/browser/react/use-href.d.ts.map +0 -1
  206. package/dist/browser/react/use-href.js +0 -39
  207. package/dist/browser/react/use-href.js.map +0 -1
  208. package/dist/browser/react/use-link-status.d.ts +0 -37
  209. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  210. package/dist/browser/react/use-link-status.js +0 -99
  211. package/dist/browser/react/use-link-status.js.map +0 -1
  212. package/dist/browser/react/use-mount.d.ts +0 -25
  213. package/dist/browser/react/use-mount.d.ts.map +0 -1
  214. package/dist/browser/react/use-mount.js +0 -30
  215. package/dist/browser/react/use-mount.js.map +0 -1
  216. package/dist/browser/react/use-navigation.d.ts +0 -27
  217. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  218. package/dist/browser/react/use-navigation.js +0 -87
  219. package/dist/browser/react/use-navigation.js.map +0 -1
  220. package/dist/browser/react/use-segments.d.ts +0 -38
  221. package/dist/browser/react/use-segments.d.ts.map +0 -1
  222. package/dist/browser/react/use-segments.js +0 -130
  223. package/dist/browser/react/use-segments.js.map +0 -1
  224. package/dist/browser/request-controller.d.ts +0 -26
  225. package/dist/browser/request-controller.d.ts.map +0 -1
  226. package/dist/browser/request-controller.js +0 -147
  227. package/dist/browser/request-controller.js.map +0 -1
  228. package/dist/browser/rsc-router.d.ts +0 -129
  229. package/dist/browser/rsc-router.d.ts.map +0 -1
  230. package/dist/browser/rsc-router.js +0 -195
  231. package/dist/browser/rsc-router.js.map +0 -1
  232. package/dist/browser/scroll-restoration.d.ts +0 -93
  233. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  234. package/dist/browser/scroll-restoration.js +0 -321
  235. package/dist/browser/scroll-restoration.js.map +0 -1
  236. package/dist/browser/segment-structure-assert.d.ts +0 -17
  237. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  238. package/dist/browser/segment-structure-assert.js +0 -59
  239. package/dist/browser/segment-structure-assert.js.map +0 -1
  240. package/dist/browser/server-action-bridge.d.ts +0 -26
  241. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  242. package/dist/browser/server-action-bridge.js +0 -668
  243. package/dist/browser/server-action-bridge.js.map +0 -1
  244. package/dist/browser/shallow.d.ts +0 -12
  245. package/dist/browser/shallow.d.ts.map +0 -1
  246. package/dist/browser/shallow.js +0 -34
  247. package/dist/browser/shallow.js.map +0 -1
  248. package/dist/browser/types.d.ts +0 -369
  249. package/dist/browser/types.d.ts.map +0 -1
  250. package/dist/browser/types.js +0 -2
  251. package/dist/browser/types.js.map +0 -1
  252. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  253. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  254. package/dist/build/__tests__/generate-cli.test.js +0 -237
  255. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  256. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  257. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  258. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  259. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  260. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  261. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  262. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  263. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  264. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  265. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  266. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  267. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  268. package/dist/build/generate-manifest.d.ts +0 -81
  269. package/dist/build/generate-manifest.d.ts.map +0 -1
  270. package/dist/build/generate-manifest.js +0 -276
  271. package/dist/build/generate-manifest.js.map +0 -1
  272. package/dist/build/generate-route-types.d.ts +0 -115
  273. package/dist/build/generate-route-types.d.ts.map +0 -1
  274. package/dist/build/generate-route-types.js +0 -740
  275. package/dist/build/generate-route-types.js.map +0 -1
  276. package/dist/build/index.d.ts +0 -21
  277. package/dist/build/index.d.ts.map +0 -1
  278. package/dist/build/index.js +0 -21
  279. package/dist/build/index.js.map +0 -1
  280. package/dist/build/route-trie.d.ts +0 -71
  281. package/dist/build/route-trie.d.ts.map +0 -1
  282. package/dist/build/route-trie.js +0 -175
  283. package/dist/build/route-trie.js.map +0 -1
  284. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  285. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  286. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  287. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  288. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  289. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  290. package/dist/cache/__tests__/document-cache.test.js +0 -345
  291. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  292. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  293. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  294. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  295. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  296. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  297. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  298. package/dist/cache/__tests__/memory-store.test.js +0 -367
  299. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  300. package/dist/cache/cache-scope.d.ts +0 -102
  301. package/dist/cache/cache-scope.d.ts.map +0 -1
  302. package/dist/cache/cache-scope.js +0 -440
  303. package/dist/cache/cache-scope.js.map +0 -1
  304. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  305. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  306. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  307. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  308. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  309. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  310. package/dist/cache/cf/cf-cache-store.js +0 -242
  311. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  312. package/dist/cache/cf/index.d.ts +0 -14
  313. package/dist/cache/cf/index.d.ts.map +0 -1
  314. package/dist/cache/cf/index.js +0 -17
  315. package/dist/cache/cf/index.js.map +0 -1
  316. package/dist/cache/document-cache.d.ts +0 -64
  317. package/dist/cache/document-cache.d.ts.map +0 -1
  318. package/dist/cache/document-cache.js +0 -228
  319. package/dist/cache/document-cache.js.map +0 -1
  320. package/dist/cache/index.d.ts +0 -19
  321. package/dist/cache/index.d.ts.map +0 -1
  322. package/dist/cache/index.js +0 -21
  323. package/dist/cache/index.js.map +0 -1
  324. package/dist/cache/memory-segment-store.d.ts +0 -110
  325. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  326. package/dist/cache/memory-segment-store.js +0 -117
  327. package/dist/cache/memory-segment-store.js.map +0 -1
  328. package/dist/cache/memory-store.d.ts +0 -41
  329. package/dist/cache/memory-store.d.ts.map +0 -1
  330. package/dist/cache/memory-store.js +0 -191
  331. package/dist/cache/memory-store.js.map +0 -1
  332. package/dist/cache/types.d.ts +0 -317
  333. package/dist/cache/types.d.ts.map +0 -1
  334. package/dist/cache/types.js +0 -12
  335. package/dist/cache/types.js.map +0 -1
  336. package/dist/client.d.ts +0 -248
  337. package/dist/client.d.ts.map +0 -1
  338. package/dist/client.js +0 -367
  339. package/dist/client.js.map +0 -1
  340. package/dist/client.rsc.d.ts +0 -26
  341. package/dist/client.rsc.d.ts.map +0 -1
  342. package/dist/client.rsc.js +0 -46
  343. package/dist/client.rsc.js.map +0 -1
  344. package/dist/component-utils.d.ts +0 -36
  345. package/dist/component-utils.d.ts.map +0 -1
  346. package/dist/component-utils.js +0 -61
  347. package/dist/component-utils.js.map +0 -1
  348. package/dist/components/DefaultDocument.d.ts +0 -13
  349. package/dist/components/DefaultDocument.d.ts.map +0 -1
  350. package/dist/components/DefaultDocument.js +0 -15
  351. package/dist/components/DefaultDocument.js.map +0 -1
  352. package/dist/debug.d.ts +0 -58
  353. package/dist/debug.d.ts.map +0 -1
  354. package/dist/debug.js +0 -157
  355. package/dist/debug.js.map +0 -1
  356. package/dist/default-error-boundary.d.ts +0 -11
  357. package/dist/default-error-boundary.d.ts.map +0 -1
  358. package/dist/default-error-boundary.js +0 -45
  359. package/dist/default-error-boundary.js.map +0 -1
  360. package/dist/deps/browser.d.ts +0 -2
  361. package/dist/deps/browser.d.ts.map +0 -1
  362. package/dist/deps/browser.js +0 -3
  363. package/dist/deps/browser.js.map +0 -1
  364. package/dist/deps/html-stream-client.d.ts +0 -2
  365. package/dist/deps/html-stream-client.d.ts.map +0 -1
  366. package/dist/deps/html-stream-client.js +0 -3
  367. package/dist/deps/html-stream-client.js.map +0 -1
  368. package/dist/deps/html-stream-server.d.ts +0 -2
  369. package/dist/deps/html-stream-server.d.ts.map +0 -1
  370. package/dist/deps/html-stream-server.js +0 -3
  371. package/dist/deps/html-stream-server.js.map +0 -1
  372. package/dist/deps/rsc.d.ts +0 -2
  373. package/dist/deps/rsc.d.ts.map +0 -1
  374. package/dist/deps/rsc.js +0 -4
  375. package/dist/deps/rsc.js.map +0 -1
  376. package/dist/deps/ssr.d.ts +0 -2
  377. package/dist/deps/ssr.d.ts.map +0 -1
  378. package/dist/deps/ssr.js +0 -3
  379. package/dist/deps/ssr.js.map +0 -1
  380. package/dist/errors.d.ts +0 -174
  381. package/dist/errors.d.ts.map +0 -1
  382. package/dist/errors.js +0 -241
  383. package/dist/errors.js.map +0 -1
  384. package/dist/handle.d.ts +0 -78
  385. package/dist/handle.d.ts.map +0 -1
  386. package/dist/handle.js +0 -82
  387. package/dist/handle.js.map +0 -1
  388. package/dist/handles/MetaTags.d.ts +0 -14
  389. package/dist/handles/MetaTags.d.ts.map +0 -1
  390. package/dist/handles/MetaTags.js +0 -136
  391. package/dist/handles/MetaTags.js.map +0 -1
  392. package/dist/handles/index.d.ts +0 -6
  393. package/dist/handles/index.d.ts.map +0 -1
  394. package/dist/handles/index.js +0 -6
  395. package/dist/handles/index.js.map +0 -1
  396. package/dist/handles/meta.d.ts +0 -39
  397. package/dist/handles/meta.d.ts.map +0 -1
  398. package/dist/handles/meta.js +0 -202
  399. package/dist/handles/meta.js.map +0 -1
  400. package/dist/host/__tests__/errors.test.d.ts +0 -2
  401. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  402. package/dist/host/__tests__/errors.test.js +0 -76
  403. package/dist/host/__tests__/errors.test.js.map +0 -1
  404. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  405. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  406. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  407. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  408. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  409. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  410. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  411. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  412. package/dist/host/__tests__/router.test.d.ts +0 -2
  413. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  414. package/dist/host/__tests__/router.test.js +0 -241
  415. package/dist/host/__tests__/router.test.js.map +0 -1
  416. package/dist/host/__tests__/testing.test.d.ts +0 -2
  417. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  418. package/dist/host/__tests__/testing.test.js +0 -64
  419. package/dist/host/__tests__/testing.test.js.map +0 -1
  420. package/dist/host/__tests__/utils.test.d.ts +0 -2
  421. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  422. package/dist/host/__tests__/utils.test.js +0 -29
  423. package/dist/host/__tests__/utils.test.js.map +0 -1
  424. package/dist/host/cookie-handler.d.ts +0 -34
  425. package/dist/host/cookie-handler.d.ts.map +0 -1
  426. package/dist/host/cookie-handler.js +0 -124
  427. package/dist/host/cookie-handler.js.map +0 -1
  428. package/dist/host/errors.d.ts +0 -56
  429. package/dist/host/errors.d.ts.map +0 -1
  430. package/dist/host/errors.js +0 -79
  431. package/dist/host/errors.js.map +0 -1
  432. package/dist/host/index.d.ts +0 -29
  433. package/dist/host/index.d.ts.map +0 -1
  434. package/dist/host/index.js +0 -32
  435. package/dist/host/index.js.map +0 -1
  436. package/dist/host/pattern-matcher.d.ts +0 -36
  437. package/dist/host/pattern-matcher.d.ts.map +0 -1
  438. package/dist/host/pattern-matcher.js +0 -172
  439. package/dist/host/pattern-matcher.js.map +0 -1
  440. package/dist/host/router.d.ts +0 -26
  441. package/dist/host/router.d.ts.map +0 -1
  442. package/dist/host/router.js +0 -218
  443. package/dist/host/router.js.map +0 -1
  444. package/dist/host/testing.d.ts +0 -36
  445. package/dist/host/testing.d.ts.map +0 -1
  446. package/dist/host/testing.js +0 -55
  447. package/dist/host/testing.js.map +0 -1
  448. package/dist/host/types.d.ts +0 -115
  449. package/dist/host/types.d.ts.map +0 -1
  450. package/dist/host/types.js +0 -7
  451. package/dist/host/types.js.map +0 -1
  452. package/dist/host/utils.d.ts +0 -21
  453. package/dist/host/utils.d.ts.map +0 -1
  454. package/dist/host/utils.js +0 -23
  455. package/dist/host/utils.js.map +0 -1
  456. package/dist/href-client.d.ts +0 -131
  457. package/dist/href-client.d.ts.map +0 -1
  458. package/dist/href-client.js +0 -64
  459. package/dist/href-client.js.map +0 -1
  460. package/dist/href-context.d.ts +0 -29
  461. package/dist/href-context.d.ts.map +0 -1
  462. package/dist/href-context.js +0 -21
  463. package/dist/href-context.js.map +0 -1
  464. package/dist/index.d.ts +0 -73
  465. package/dist/index.d.ts.map +0 -1
  466. package/dist/index.js +0 -91
  467. package/dist/index.js.map +0 -1
  468. package/dist/index.rsc.d.ts +0 -32
  469. package/dist/index.rsc.d.ts.map +0 -1
  470. package/dist/index.rsc.js +0 -40
  471. package/dist/index.rsc.js.map +0 -1
  472. package/dist/internal-debug.d.ts +0 -2
  473. package/dist/internal-debug.d.ts.map +0 -1
  474. package/dist/internal-debug.js +0 -5
  475. package/dist/internal-debug.js.map +0 -1
  476. package/dist/loader.d.ts +0 -14
  477. package/dist/loader.d.ts.map +0 -1
  478. package/dist/loader.js +0 -20
  479. package/dist/loader.js.map +0 -1
  480. package/dist/loader.rsc.d.ts +0 -19
  481. package/dist/loader.rsc.d.ts.map +0 -1
  482. package/dist/loader.rsc.js +0 -99
  483. package/dist/loader.rsc.js.map +0 -1
  484. package/dist/network-error-thrower.d.ts +0 -17
  485. package/dist/network-error-thrower.d.ts.map +0 -1
  486. package/dist/network-error-thrower.js +0 -14
  487. package/dist/network-error-thrower.js.map +0 -1
  488. package/dist/outlet-context.d.ts +0 -13
  489. package/dist/outlet-context.d.ts.map +0 -1
  490. package/dist/outlet-context.js +0 -3
  491. package/dist/outlet-context.js.map +0 -1
  492. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  493. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  494. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  495. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  496. package/dist/prerender/param-hash.d.ts +0 -16
  497. package/dist/prerender/param-hash.d.ts.map +0 -1
  498. package/dist/prerender/param-hash.js +0 -36
  499. package/dist/prerender/param-hash.js.map +0 -1
  500. package/dist/prerender/store.d.ts +0 -38
  501. package/dist/prerender/store.d.ts.map +0 -1
  502. package/dist/prerender/store.js +0 -61
  503. package/dist/prerender/store.js.map +0 -1
  504. package/dist/prerender.d.ts +0 -66
  505. package/dist/prerender.d.ts.map +0 -1
  506. package/dist/prerender.js +0 -57
  507. package/dist/prerender.js.map +0 -1
  508. package/dist/reverse.d.ts +0 -196
  509. package/dist/reverse.d.ts.map +0 -1
  510. package/dist/reverse.js +0 -78
  511. package/dist/reverse.js.map +0 -1
  512. package/dist/root-error-boundary.d.ts +0 -33
  513. package/dist/root-error-boundary.d.ts.map +0 -1
  514. package/dist/root-error-boundary.js +0 -165
  515. package/dist/root-error-boundary.js.map +0 -1
  516. package/dist/route-content-wrapper.d.ts +0 -46
  517. package/dist/route-content-wrapper.d.ts.map +0 -1
  518. package/dist/route-content-wrapper.js +0 -77
  519. package/dist/route-content-wrapper.js.map +0 -1
  520. package/dist/route-definition.d.ts +0 -421
  521. package/dist/route-definition.d.ts.map +0 -1
  522. package/dist/route-definition.js +0 -868
  523. package/dist/route-definition.js.map +0 -1
  524. package/dist/route-map-builder.d.ts +0 -155
  525. package/dist/route-map-builder.d.ts.map +0 -1
  526. package/dist/route-map-builder.js +0 -237
  527. package/dist/route-map-builder.js.map +0 -1
  528. package/dist/route-types.d.ts +0 -165
  529. package/dist/route-types.d.ts.map +0 -1
  530. package/dist/route-types.js +0 -7
  531. package/dist/route-types.js.map +0 -1
  532. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  533. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  534. package/dist/router/__tests__/handler-context.test.js +0 -65
  535. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  536. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  537. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  538. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  539. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  540. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  541. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  542. package/dist/router/__tests__/match-context.test.js +0 -92
  543. package/dist/router/__tests__/match-context.test.js.map +0 -1
  544. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  545. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  546. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  547. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  548. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  549. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  550. package/dist/router/__tests__/match-result.test.js +0 -457
  551. package/dist/router/__tests__/match-result.test.js.map +0 -1
  552. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  553. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  554. package/dist/router/__tests__/on-error.test.js +0 -678
  555. package/dist/router/__tests__/on-error.test.js.map +0 -1
  556. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  557. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  558. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  559. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  560. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  561. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  562. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  563. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  564. package/dist/router/error-handling.d.ts +0 -77
  565. package/dist/router/error-handling.d.ts.map +0 -1
  566. package/dist/router/error-handling.js +0 -202
  567. package/dist/router/error-handling.js.map +0 -1
  568. package/dist/router/handler-context.d.ts +0 -20
  569. package/dist/router/handler-context.d.ts.map +0 -1
  570. package/dist/router/handler-context.js +0 -198
  571. package/dist/router/handler-context.js.map +0 -1
  572. package/dist/router/intercept-resolution.d.ts +0 -66
  573. package/dist/router/intercept-resolution.d.ts.map +0 -1
  574. package/dist/router/intercept-resolution.js +0 -246
  575. package/dist/router/intercept-resolution.js.map +0 -1
  576. package/dist/router/loader-resolution.d.ts +0 -64
  577. package/dist/router/loader-resolution.d.ts.map +0 -1
  578. package/dist/router/loader-resolution.js +0 -284
  579. package/dist/router/loader-resolution.js.map +0 -1
  580. package/dist/router/logging.d.ts +0 -15
  581. package/dist/router/logging.d.ts.map +0 -1
  582. package/dist/router/logging.js +0 -99
  583. package/dist/router/logging.js.map +0 -1
  584. package/dist/router/manifest.d.ts +0 -22
  585. package/dist/router/manifest.d.ts.map +0 -1
  586. package/dist/router/manifest.js +0 -181
  587. package/dist/router/manifest.js.map +0 -1
  588. package/dist/router/match-api.d.ts +0 -35
  589. package/dist/router/match-api.d.ts.map +0 -1
  590. package/dist/router/match-api.js +0 -406
  591. package/dist/router/match-api.js.map +0 -1
  592. package/dist/router/match-context.d.ts +0 -206
  593. package/dist/router/match-context.d.ts.map +0 -1
  594. package/dist/router/match-context.js +0 -17
  595. package/dist/router/match-context.js.map +0 -1
  596. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  597. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  598. package/dist/router/match-middleware/background-revalidation.js +0 -75
  599. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  600. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  601. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  602. package/dist/router/match-middleware/cache-lookup.js +0 -257
  603. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  604. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  605. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  606. package/dist/router/match-middleware/cache-store.js +0 -108
  607. package/dist/router/match-middleware/cache-store.js.map +0 -1
  608. package/dist/router/match-middleware/index.d.ts +0 -81
  609. package/dist/router/match-middleware/index.d.ts.map +0 -1
  610. package/dist/router/match-middleware/index.js +0 -80
  611. package/dist/router/match-middleware/index.js.map +0 -1
  612. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  613. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  614. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  615. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  616. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  617. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  618. package/dist/router/match-middleware/segment-resolution.js +0 -53
  619. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  620. package/dist/router/match-pipelines.d.ts +0 -147
  621. package/dist/router/match-pipelines.d.ts.map +0 -1
  622. package/dist/router/match-pipelines.js +0 -82
  623. package/dist/router/match-pipelines.js.map +0 -1
  624. package/dist/router/match-result.d.ts +0 -126
  625. package/dist/router/match-result.d.ts.map +0 -1
  626. package/dist/router/match-result.js +0 -93
  627. package/dist/router/match-result.js.map +0 -1
  628. package/dist/router/metrics.d.ts +0 -20
  629. package/dist/router/metrics.d.ts.map +0 -1
  630. package/dist/router/metrics.js +0 -47
  631. package/dist/router/metrics.js.map +0 -1
  632. package/dist/router/middleware.d.ts +0 -249
  633. package/dist/router/middleware.d.ts.map +0 -1
  634. package/dist/router/middleware.js +0 -434
  635. package/dist/router/middleware.js.map +0 -1
  636. package/dist/router/middleware.test.d.ts +0 -2
  637. package/dist/router/middleware.test.d.ts.map +0 -1
  638. package/dist/router/middleware.test.js +0 -816
  639. package/dist/router/middleware.test.js.map +0 -1
  640. package/dist/router/pattern-matching.d.ts +0 -149
  641. package/dist/router/pattern-matching.d.ts.map +0 -1
  642. package/dist/router/pattern-matching.js +0 -349
  643. package/dist/router/pattern-matching.js.map +0 -1
  644. package/dist/router/revalidation.d.ts +0 -44
  645. package/dist/router/revalidation.d.ts.map +0 -1
  646. package/dist/router/revalidation.js +0 -147
  647. package/dist/router/revalidation.js.map +0 -1
  648. package/dist/router/router-context.d.ts +0 -135
  649. package/dist/router/router-context.d.ts.map +0 -1
  650. package/dist/router/router-context.js +0 -36
  651. package/dist/router/router-context.js.map +0 -1
  652. package/dist/router/segment-resolution.d.ts +0 -127
  653. package/dist/router/segment-resolution.d.ts.map +0 -1
  654. package/dist/router/segment-resolution.js +0 -919
  655. package/dist/router/segment-resolution.js.map +0 -1
  656. package/dist/router/trie-matching.d.ts +0 -40
  657. package/dist/router/trie-matching.d.ts.map +0 -1
  658. package/dist/router/trie-matching.js +0 -127
  659. package/dist/router/trie-matching.js.map +0 -1
  660. package/dist/router/types.d.ts +0 -136
  661. package/dist/router/types.d.ts.map +0 -1
  662. package/dist/router/types.js +0 -7
  663. package/dist/router/types.js.map +0 -1
  664. package/dist/router.d.ts +0 -753
  665. package/dist/router.d.ts.map +0 -1
  666. package/dist/router.gen.d.ts +0 -6
  667. package/dist/router.gen.d.ts.map +0 -1
  668. package/dist/router.gen.js +0 -6
  669. package/dist/router.gen.js.map +0 -1
  670. package/dist/router.js +0 -1304
  671. package/dist/router.js.map +0 -1
  672. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  673. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  674. package/dist/rsc/__tests__/helpers.test.js +0 -140
  675. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  676. package/dist/rsc/handler.d.ts +0 -45
  677. package/dist/rsc/handler.d.ts.map +0 -1
  678. package/dist/rsc/handler.js +0 -1172
  679. package/dist/rsc/handler.js.map +0 -1
  680. package/dist/rsc/helpers.d.ts +0 -16
  681. package/dist/rsc/helpers.d.ts.map +0 -1
  682. package/dist/rsc/helpers.js +0 -55
  683. package/dist/rsc/helpers.js.map +0 -1
  684. package/dist/rsc/index.d.ts +0 -22
  685. package/dist/rsc/index.d.ts.map +0 -1
  686. package/dist/rsc/index.js +0 -23
  687. package/dist/rsc/index.js.map +0 -1
  688. package/dist/rsc/nonce.d.ts +0 -9
  689. package/dist/rsc/nonce.d.ts.map +0 -1
  690. package/dist/rsc/nonce.js +0 -18
  691. package/dist/rsc/nonce.js.map +0 -1
  692. package/dist/rsc/types.d.ts +0 -206
  693. package/dist/rsc/types.d.ts.map +0 -1
  694. package/dist/rsc/types.js +0 -8
  695. package/dist/rsc/types.js.map +0 -1
  696. package/dist/search-params.d.ts +0 -103
  697. package/dist/search-params.d.ts.map +0 -1
  698. package/dist/search-params.js +0 -74
  699. package/dist/search-params.js.map +0 -1
  700. package/dist/segment-system.d.ts +0 -75
  701. package/dist/segment-system.d.ts.map +0 -1
  702. package/dist/segment-system.js +0 -336
  703. package/dist/segment-system.js.map +0 -1
  704. package/dist/server/context.d.ts +0 -245
  705. package/dist/server/context.d.ts.map +0 -1
  706. package/dist/server/context.js +0 -197
  707. package/dist/server/context.js.map +0 -1
  708. package/dist/server/fetchable-loader-store.d.ts +0 -18
  709. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  710. package/dist/server/fetchable-loader-store.js +0 -18
  711. package/dist/server/fetchable-loader-store.js.map +0 -1
  712. package/dist/server/handle-store.d.ts +0 -85
  713. package/dist/server/handle-store.d.ts.map +0 -1
  714. package/dist/server/handle-store.js +0 -142
  715. package/dist/server/handle-store.js.map +0 -1
  716. package/dist/server/loader-registry.d.ts +0 -55
  717. package/dist/server/loader-registry.d.ts.map +0 -1
  718. package/dist/server/loader-registry.js +0 -132
  719. package/dist/server/loader-registry.js.map +0 -1
  720. package/dist/server/request-context.d.ts +0 -226
  721. package/dist/server/request-context.d.ts.map +0 -1
  722. package/dist/server/request-context.js +0 -290
  723. package/dist/server/request-context.js.map +0 -1
  724. package/dist/server/root-layout.d.ts +0 -4
  725. package/dist/server/root-layout.d.ts.map +0 -1
  726. package/dist/server/root-layout.js +0 -5
  727. package/dist/server/root-layout.js.map +0 -1
  728. package/dist/server.d.ts +0 -15
  729. package/dist/server.d.ts.map +0 -1
  730. package/dist/server.js +0 -20
  731. package/dist/server.js.map +0 -1
  732. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  733. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  734. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  735. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  736. package/dist/ssr/index.d.ts +0 -98
  737. package/dist/ssr/index.d.ts.map +0 -1
  738. package/dist/ssr/index.js +0 -158
  739. package/dist/ssr/index.js.map +0 -1
  740. package/dist/static-handler.d.ts +0 -50
  741. package/dist/static-handler.d.ts.map +0 -1
  742. package/dist/static-handler.gen.d.ts +0 -5
  743. package/dist/static-handler.gen.d.ts.map +0 -1
  744. package/dist/static-handler.gen.js +0 -5
  745. package/dist/static-handler.gen.js.map +0 -1
  746. package/dist/static-handler.js +0 -29
  747. package/dist/static-handler.js.map +0 -1
  748. package/dist/theme/ThemeProvider.d.ts +0 -20
  749. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  750. package/dist/theme/ThemeProvider.js +0 -240
  751. package/dist/theme/ThemeProvider.js.map +0 -1
  752. package/dist/theme/ThemeScript.d.ts +0 -48
  753. package/dist/theme/ThemeScript.d.ts.map +0 -1
  754. package/dist/theme/ThemeScript.js +0 -13
  755. package/dist/theme/ThemeScript.js.map +0 -1
  756. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  757. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  758. package/dist/theme/__tests__/theme.test.js +0 -103
  759. package/dist/theme/__tests__/theme.test.js.map +0 -1
  760. package/dist/theme/constants.d.ts +0 -29
  761. package/dist/theme/constants.d.ts.map +0 -1
  762. package/dist/theme/constants.js +0 -48
  763. package/dist/theme/constants.js.map +0 -1
  764. package/dist/theme/index.d.ts +0 -31
  765. package/dist/theme/index.d.ts.map +0 -1
  766. package/dist/theme/index.js +0 -36
  767. package/dist/theme/index.js.map +0 -1
  768. package/dist/theme/theme-context.d.ts +0 -40
  769. package/dist/theme/theme-context.d.ts.map +0 -1
  770. package/dist/theme/theme-context.js +0 -60
  771. package/dist/theme/theme-context.js.map +0 -1
  772. package/dist/theme/theme-script.d.ts +0 -27
  773. package/dist/theme/theme-script.d.ts.map +0 -1
  774. package/dist/theme/theme-script.js +0 -147
  775. package/dist/theme/theme-script.js.map +0 -1
  776. package/dist/theme/types.d.ts +0 -163
  777. package/dist/theme/types.d.ts.map +0 -1
  778. package/dist/theme/types.js +0 -11
  779. package/dist/theme/types.js.map +0 -1
  780. package/dist/theme/use-theme.d.ts +0 -12
  781. package/dist/theme/use-theme.d.ts.map +0 -1
  782. package/dist/theme/use-theme.js +0 -40
  783. package/dist/theme/use-theme.js.map +0 -1
  784. package/dist/types.d.ts +0 -1479
  785. package/dist/types.d.ts.map +0 -1
  786. package/dist/types.js +0 -10
  787. package/dist/types.js.map +0 -1
  788. package/dist/urls.d.ts +0 -441
  789. package/dist/urls.d.ts.map +0 -1
  790. package/dist/urls.gen.d.ts +0 -8
  791. package/dist/urls.gen.d.ts.map +0 -1
  792. package/dist/urls.gen.js +0 -8
  793. package/dist/urls.gen.js.map +0 -1
  794. package/dist/urls.js +0 -443
  795. package/dist/urls.js.map +0 -1
  796. package/dist/use-loader.d.ts +0 -127
  797. package/dist/use-loader.d.ts.map +0 -1
  798. package/dist/use-loader.js +0 -237
  799. package/dist/use-loader.js.map +0 -1
  800. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  801. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  802. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  803. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  804. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  805. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  806. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  807. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  808. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  809. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  810. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  811. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  812. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  813. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  814. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  815. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  816. package/dist/vite/ast-handler-extract.d.ts +0 -49
  817. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  818. package/dist/vite/ast-handler-extract.js +0 -249
  819. package/dist/vite/ast-handler-extract.js.map +0 -1
  820. package/dist/vite/expose-action-id.d.ts +0 -19
  821. package/dist/vite/expose-action-id.d.ts.map +0 -1
  822. package/dist/vite/expose-action-id.js +0 -250
  823. package/dist/vite/expose-action-id.js.map +0 -1
  824. package/dist/vite/expose-id-utils.d.ts +0 -69
  825. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  826. package/dist/vite/expose-id-utils.js +0 -289
  827. package/dist/vite/expose-id-utils.js.map +0 -1
  828. package/dist/vite/expose-internal-ids.d.ts +0 -22
  829. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  830. package/dist/vite/expose-internal-ids.js +0 -886
  831. package/dist/vite/expose-internal-ids.js.map +0 -1
  832. package/dist/vite/index.d.ts +0 -149
  833. package/dist/vite/index.d.ts.map +0 -1
  834. package/dist/vite/index.js.bak +0 -5448
  835. package/dist/vite/index.js.map +0 -1
  836. package/dist/vite/index.named-routes.gen.ts +0 -103
  837. package/dist/vite/package-resolution.d.ts +0 -43
  838. package/dist/vite/package-resolution.d.ts.map +0 -1
  839. package/dist/vite/package-resolution.js +0 -112
  840. package/dist/vite/package-resolution.js.map +0 -1
  841. package/dist/vite/virtual-entries.d.ts +0 -25
  842. package/dist/vite/virtual-entries.d.ts.map +0 -1
  843. package/dist/vite/virtual-entries.js +0 -110
  844. package/dist/vite/virtual-entries.js.map +0 -1
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: api-client
3
+ description: Build a typed client for consuming your own response-route JSON APIs (no codegen)
4
+ ---
5
+
6
+ # Typed API Client
7
+
8
+ Response routes (`path.json()`) already ship typed responses — `RouteResponse<typeof patterns, "name">` resolves to the **bare payload**, inferred from your handler with no codegen. This skill wraps that inference in a small **typed client** so first-party TypeScript code calls your endpoints like functions instead of hand-writing `fetch` + URL building per call site.
9
+
10
+ This is a **recipe, not a framework feature** — copy the helper below into your app. It depends only on **type-only** imports from `@rangojs/router` (`RouteResponse`, `ExtractParams`, `ProblemDetails`), which are erased at build time, so it runs anywhere a `fetch` does — **browser, worker, or server**. Nothing new to install or version.
11
+
12
+ > **Scope:** the typed client is a **first-party TypeScript** convenience. External/third-party consumers use the plain wire directly — bare JSON on success, RFC 9457 `application/problem+json` on error — which needs no client. (Language-agnostic OpenAPI generation is a separate, future feature.)
13
+
14
+ ## What you get
15
+
16
+ ```ts
17
+ const api = createApiClient(apiShopPatterns, routes, { baseUrl });
18
+
19
+ await api.health.get(); // no params → callable bare
20
+ await api.product.get({ params: { productId } }); // params typed + required
21
+ await api.cart.post({ body: { productId, qty: 2 } }); // body sent as JSON
22
+ // ^ result is the bare payload type (RouteResponse), not `any`, no `.data`
23
+ ```
24
+
25
+ - **Output typed** from the handler's return (`RouteResponse`), zero codegen.
26
+ - **Params required + typed** from the route pattern (`/catalog/:productId` → `{ productId: string }`); a missing or misspelled param is a **compile error**, not a runtime 404.
27
+ - **Autocomplete** over every route name; rename-safe.
28
+ - **Errors throw a typed `ApiError`** carrying the `ProblemDetails` body.
29
+
30
+ (`search` and `body` are _not_ route-typed — see Notes.)
31
+
32
+ ## The two inputs
33
+
34
+ 1. **The `urls()` patterns value** — the type source. `typeof apiShopPatterns` carries the per-route response payloads (`_responses`) and patterns (`_routes`).
35
+ 2. **The generated route map** — the name → pattern source. `rango generate` emits a per-module `<name>.gen.ts` exporting `routes`:
36
+
37
+ ```ts
38
+ // api-shop.gen.ts (generated — do not edit)
39
+ export const routes = {
40
+ catalog: "/catalog",
41
+ product: "/catalog/:productId",
42
+ cart: "/cart",
43
+ // ...
44
+ } as const;
45
+ ```
46
+
47
+ Routes that declare a **search schema** are generated as objects instead — `index: { path: "/", search: { q: "string" } }`. The helper accepts both the string and `{ path }` forms. If a `urls()` block is mounted under a name prefix, build a local-keyed map from your global `NamedRoutes` so the keys match the block's route names (e.g. `{ catalog: NamedRoutes["apiShop.catalog"], ... } as const`).
48
+
49
+ ## The helper (copy into your app)
50
+
51
+ ```ts
52
+ // lib/api-client.ts
53
+ import type {
54
+ RouteResponse,
55
+ ExtractParams,
56
+ ProblemDetails,
57
+ } from "@rangojs/router";
58
+
59
+ type SearchParams = Record<string, string | number | boolean>;
60
+
61
+ // A generated route-map entry is a pattern string, or an object with `path`
62
+ // (routes that declare a search schema generate the object form).
63
+ type RouteMapEntry = string | { readonly path: string };
64
+ type PatternOf<E> = E extends string
65
+ ? E
66
+ : E extends { readonly path: infer P extends string }
67
+ ? P
68
+ : never;
69
+
70
+ // `params` is optional when the route has no *required* params (incl.
71
+ // optional-only routes like `/:locale?`), required otherwise. Typed as
72
+ // `ExtractParams` (not `undefined`) so optional params can still be passed.
73
+ type Args<TPattern extends string> =
74
+ {} extends ExtractParams<TPattern>
75
+ ? {
76
+ params?: ExtractParams<TPattern>;
77
+ search?: SearchParams;
78
+ body?: unknown;
79
+ }
80
+ : {
81
+ params: ExtractParams<TPattern>;
82
+ search?: SearchParams;
83
+ body?: unknown;
84
+ };
85
+
86
+ type Method<TPatterns, K extends string, TEntry> =
87
+ {} extends ExtractParams<PatternOf<TEntry>>
88
+ ? (args?: Args<PatternOf<TEntry>>) => Promise<RouteResponse<TPatterns, K>>
89
+ : (args: Args<PatternOf<TEntry>>) => Promise<RouteResponse<TPatterns, K>>;
90
+
91
+ type ApiClient<TPatterns, TRouteMap extends Record<string, RouteMapEntry>> = {
92
+ [K in keyof TRouteMap & string]: {
93
+ get: Method<TPatterns, K, TRouteMap[K]>;
94
+ post: Method<TPatterns, K, TRouteMap[K]>;
95
+ put: Method<TPatterns, K, TRouteMap[K]>;
96
+ patch: Method<TPatterns, K, TRouteMap[K]>;
97
+ delete: Method<TPatterns, K, TRouteMap[K]>;
98
+ };
99
+ };
100
+
101
+ /** Thrown on a non-2xx response; carries the RFC 9457 problem body. */
102
+ export class ApiError extends Error {
103
+ status: number;
104
+ problem: ProblemDetails;
105
+ constructor(status: number, problem: ProblemDetails) {
106
+ super(problem.detail || `HTTP ${status}`);
107
+ this.name = "ApiError";
108
+ this.status = status;
109
+ this.problem = problem;
110
+ }
111
+ }
112
+
113
+ // Client-safe path builder: substitutes :params (incl. optional/constrained
114
+ // forms) into the pattern. No dependency on the server-only createReverse.
115
+ function fillPath(pattern: string, params?: Record<string, string>): string {
116
+ return pattern
117
+ .replace(/:([A-Za-z0-9_]+)(?:\([^)]*\))?\??/g, (_m, name: string) => {
118
+ const v = params?.[name];
119
+ return v == null ? "" : encodeURIComponent(String(v));
120
+ })
121
+ .replace(/\/{2,}/g, "/");
122
+ }
123
+
124
+ export function createApiClient<
125
+ TPatterns,
126
+ const TRouteMap extends Record<string, RouteMapEntry>,
127
+ >(
128
+ _patterns: TPatterns,
129
+ routeMap: TRouteMap,
130
+ opts: { baseUrl?: string; fetch?: typeof fetch } = {},
131
+ ): ApiClient<TPatterns, TRouteMap> {
132
+ const doFetch = opts.fetch ?? fetch;
133
+ const baseUrl = opts.baseUrl ?? "";
134
+ const call =
135
+ (name: string, method: string) =>
136
+ async (args?: {
137
+ params?: Record<string, string>;
138
+ search?: SearchParams;
139
+ body?: unknown;
140
+ }) => {
141
+ const entry = routeMap[name];
142
+ const pattern = typeof entry === "string" ? entry : entry.path;
143
+ let url = baseUrl + fillPath(pattern, args?.params);
144
+ if (args?.search) {
145
+ const qs = new URLSearchParams();
146
+ for (const [k, v] of Object.entries(args.search)) {
147
+ if (v != null) qs.append(k, String(v));
148
+ }
149
+ const s = qs.toString();
150
+ if (s) url += (url.includes("?") ? "&" : "?") + s;
151
+ }
152
+ const res = await doFetch(url, {
153
+ method,
154
+ ...(args?.body !== undefined
155
+ ? {
156
+ body: JSON.stringify(args.body),
157
+ headers: { "content-type": "application/json" },
158
+ }
159
+ : {}),
160
+ });
161
+ if (!res.ok) {
162
+ const problem = (await res.json().catch(() => ({}))) as ProblemDetails;
163
+ throw new ApiError(res.status, problem);
164
+ }
165
+ return res.json();
166
+ };
167
+ return new Proxy({} as any, {
168
+ get: (_t, name: string) => ({
169
+ get: call(name, "GET"),
170
+ post: call(name, "POST"),
171
+ put: call(name, "PUT"),
172
+ patch: call(name, "PATCH"),
173
+ delete: call(name, "DELETE"),
174
+ }),
175
+ }) as ApiClient<TPatterns, TRouteMap>;
176
+ }
177
+ ```
178
+
179
+ ## Using it
180
+
181
+ ```ts
182
+ import { apiShopPatterns } from "./urls/api-shop";
183
+ import { routes } from "./urls/api-shop.gen";
184
+ import { createApiClient, ApiError } from "./lib/api-client";
185
+
186
+ const api = createApiClient(apiShopPatterns, routes, {
187
+ baseUrl: import.meta.env.VITE_API_URL ?? "",
188
+ });
189
+
190
+ try {
191
+ const product = await api.product.get({ params: { productId: "42" } });
192
+ // `product` is the handler's bare return type — e.g. `product.name` is typed.
193
+ } catch (err) {
194
+ if (err instanceof ApiError && err.status === 404) {
195
+ console.warn(err.problem.code, err.problem.detail); // typed ProblemDetails
196
+ } else {
197
+ throw err;
198
+ }
199
+ }
200
+ ```
201
+
202
+ ## Notes
203
+
204
+ - **Client-safe by construction.** The helper imports only **types** from `@rangojs/router` (erased at build) and builds URLs itself by substituting `:params` into the pattern — it does **not** use `createReverse`, which is a server/RSC-only export that throws in the browser. So `createApiClient` works in client components, workers, and on the server alike.
205
+ - **Params are route-typed; search and body are not.** Path params come from the route pattern (`ExtractParams`), so they are precise and required. `search` is generically typed (`Record<string, string | number | boolean>`), and `body` is `unknown` (serialized to JSON). Typed request **input** needs a declared schema layer, which is intentionally out of scope here — thread per-route schemas in yourself if you want typed search/body.
206
+ - **Verb-agnostic wire.** Rango response routes do not dispatch on HTTP method — `.get`/`.post`/etc. set the request method but hit the same handler. Use whichever verb reads best for the operation.
207
+ - **Path building.** `fillPath` handles standard `:param`, optional `:param?`, and constrained `:param(a|b)` forms. For exotic patterns or strict trailing-slash policies, swap in your own builder (or the router's `reverse` on the server).
208
+ - **Want a return-based style instead of throwing?** Branch on `res.ok` yourself: the wire is the bare value on 2xx and `ProblemDetails` on non-2xx (see `/response-routes`). Wrapping the calls in a `{ ok, data } | { ok: false, error }` result type is a small variation on the same helper.
209
+ - **Third parties.** The typed client is TypeScript-only and needs your route types. External consumers in any language use the plain wire as-is (bare JSON + problem+json); no client required.
210
+
211
+ See `/response-routes` for the endpoint side and `/typesafety` for how `RouteResponse` / `PathResponse` inference works.
@@ -133,7 +133,7 @@ declare global {
133
133
 
134
134
  `RegisteredRoutes` is what exposes the richer routeMap entries containing
135
135
  response payload metadata. Without it, URL-pattern response lookup has paths but
136
- no payloads, so response types resolve to `ResponseEnvelope<never>`.
136
+ no payloads, so response types resolve to `never`.
137
137
 
138
138
  ## How It Works
139
139
 
@@ -192,6 +192,7 @@ Grouped by concern — read when you need to…
192
192
  | `/host-router` | Multi-app host routing with domain/subdomain patterns |
193
193
  | `/links` | URL generation: ctx.reverse, href, useHref, useMount, scopedReverse |
194
194
  | `/response-routes` | JSON/text/HTML/XML/stream endpoints with `path.json()`, `path.text()` |
195
+ | `/api-client` | Typed client for consuming your own response-route JSON APIs (recipe) |
195
196
  | `/mime-routes` | Content negotiation — same URL, different response types via Accept header |
196
197
  | `/streams-and-websockets` | SSE via `path.stream` and WebSocket upgrades via `path.any` |
197
198
  | `/handler-use` | Attach default loaders/middleware to a handler via `handler.use` |
@@ -68,16 +68,16 @@ export const urlpatterns = urls(({ path, layout, include }) => [
68
68
 
69
69
  ## Available Tags
70
70
 
71
- | Tag | Usage | Handler returns | Auto-wrap |
72
- | -------- | --------------- | ------------------ | ------------------------ |
73
- | `json` | `path.json()` | plain object/array | `{ data: T }` envelope |
74
- | `text` | `path.text()` | string | text/plain Response |
75
- | `html` | `path.html()` | string | text/html Response |
76
- | `xml` | `path.xml()` | string | application/xml Response |
77
- | `md` | `path.md()` | string | text/markdown Response |
78
- | `image` | `path.image()` | Response | pass-through |
79
- | `stream` | `path.stream()` | Response | pass-through |
80
- | `any` | `path.any()` | Response | pass-through |
71
+ | Tag | Usage | Handler returns | Auto-wrap |
72
+ | -------- | --------------- | ------------------ | ----------------------------- |
73
+ | `json` | `path.json()` | plain object/array | bare JSON value (no envelope) |
74
+ | `text` | `path.text()` | string | text/plain Response |
75
+ | `html` | `path.html()` | string | text/html Response |
76
+ | `xml` | `path.xml()` | string | application/xml Response |
77
+ | `md` | `path.md()` | string | text/markdown Response |
78
+ | `image` | `path.image()` | Response | pass-through |
79
+ | `stream` | `path.stream()` | Response | pass-through |
80
+ | `any` | `path.any()` | Response | pass-through |
81
81
 
82
82
  ## ResponseHandlerContext
83
83
 
@@ -139,22 +139,31 @@ path.json(
139
139
  );
140
140
  ```
141
141
 
142
- ## JSON Envelope
142
+ ## JSON Wire Shape
143
143
 
144
- `path.json()` handlers return plain data. The framework auto-wraps it
145
- in a `ResponseEnvelope<T>` discriminated union:
144
+ `path.json()` handlers return plain data. The framework serializes the handler's
145
+ return value **verbatim** (no envelope) on success, and an RFC 9457 `problem+json`
146
+ body on error. Discriminate with `res.ok` / the HTTP status — there is no in-body
147
+ `data`/`error` union:
146
148
 
147
149
  ```typescript
148
- // Success: HTTP 200
149
- { "data": { "status": "ok", "timestamp": 1700000000 } }
150
-
151
- // Error: HTTP 404 (or whatever status RouterError specifies)
152
- { "error": { "message": "Product 999 not found", "code": "NOT_FOUND" } }
150
+ // Success: HTTP 200, content-type application/json
151
+ { "status": "ok", "timestamp": 1700000000 }
152
+
153
+ // Error: HTTP 404 (or whatever status RouterError specifies),
154
+ // content-type application/problem+json
155
+ {
156
+ "title": "Not Found",
157
+ "status": 404,
158
+ "detail": "Product 999 not found",
159
+ "code": "NOT_FOUND"
160
+ // "stack": included in development only
161
+ }
153
162
  ```
154
163
 
155
164
  ### Error Handling with RouterError
156
165
 
157
- Throw `RouterError` to return structured error envelopes:
166
+ Throw `RouterError` to return a structured `problem+json` body:
158
167
 
159
168
  ```typescript
160
169
  import { RouterError } from "@rangojs/router";
@@ -199,25 +208,27 @@ path.json(
199
208
 
200
209
  ## Client-Side Type Safety
201
210
 
202
- ### ResponseEnvelope and isResponseError
211
+ ### Discriminating success vs. error with res.ok
212
+
213
+ Success bodies are the bare value; error bodies are RFC 9457 `ProblemDetails`.
214
+ Branch on `res.ok` (or the HTTP status) — not an in-body union:
203
215
 
204
216
  ```typescript
205
217
  "use client";
206
- import type { ResponseEnvelope, ResponseError } from "@rangojs/router/client";
207
- import { isResponseError } from "@rangojs/router/client";
218
+ import type { ProblemDetails } from "@rangojs/router";
208
219
 
209
220
  // Fetch a typed response
210
221
  const res = await fetch("/api/products/1");
211
- const result: ResponseEnvelope<Product> = await res.json();
212
222
 
213
- if (isResponseError(result)) {
214
- // result.error: ResponseError (message, code?, type?)
215
- // result.data: undefined
216
- console.error(result.error.message);
223
+ if (!res.ok) {
224
+ // Error body: application/problem+json
225
+ const problem: ProblemDetails = await res.json();
226
+ // problem.detail: string, problem.code: string, problem.status: number
227
+ console.error(problem.code, problem.detail);
217
228
  } else {
218
- // result.data: Product
219
- // result.error: undefined
220
- console.log(result.data.name);
229
+ // Success body: the bare value (no envelope)
230
+ const product: Product = await res.json();
231
+ console.log(product.name);
221
232
  }
222
233
  ```
223
234
 
@@ -230,20 +241,23 @@ import type { RouteResponse } from "@rangojs/router";
230
241
 
231
242
  // From the apiPatterns module (before include)
232
243
  type HealthData = RouteResponse<typeof apiPatterns, "health">;
233
- // = ResponseEnvelope<{ status: string; timestamp: number }>
244
+ // = { status: string; timestamp: number }
234
245
 
235
246
  type ProductsData = RouteResponse<typeof apiPatterns, "products">;
236
- // = ResponseEnvelope<{ id: string; name: string; price: number }[]>
247
+ // = { id: string; name: string; price: number }[]
237
248
  ```
238
249
 
250
+ `RouteResponse` is the bare success payload (the JSON wire shape) — the same value
251
+ a `fetch().then(r => r.json())` yields on a 2xx. Error bodies are `ProblemDetails`,
252
+ keyed off `res.ok` at runtime, not part of this type.
253
+
239
254
  ### Rango.PathResponse (global lookup by URL pattern or concrete path)
240
255
 
241
256
  `Rango.PathResponse` is ambient (no import) and reads from `RegisteredRoutes`,
242
257
  which carries response payload metadata. That surface is **not** auto-wired —
243
258
  without the augmentation below, `Rango.PathResponse` falls back to the generated
244
259
  path/search map, or to a permissive map when nothing is generated. Either way, it
245
- has no response payload metadata, so response routes resolve to
246
- `ResponseEnvelope<never>`:
260
+ has no response payload metadata, so response routes resolve to `never`:
247
261
 
248
262
  ```typescript
249
263
  // router.tsx
@@ -261,11 +275,11 @@ With that in place, look up the response type by URL pattern (ambient, no import
261
275
  ```typescript
262
276
  // After include("/api", apiPatterns) in main urls
263
277
  type Health = Rango.PathResponse<"/api/health">;
264
- // = ResponseEnvelope<{ status: string; timestamp: number }>
278
+ // = { status: string; timestamp: number }
265
279
 
266
- // RSC routes return ResponseEnvelope<never>
280
+ // RSC routes (no JSON payload) return never
267
281
  type Home = Rango.PathResponse<"/">;
268
- // = ResponseEnvelope<never>
282
+ // = never
269
283
  ```
270
284
 
271
285
  `Rango.PathResponse` also accepts a **concrete path**, so it types a `fetch`
@@ -280,7 +294,7 @@ async function get<T extends Rango.Path>(
280
294
  return fetch(href(path)).then((r) => r.json());
281
295
  }
282
296
 
283
- const product = await get("/api/products/42"); // ResponseEnvelope<Product>
297
+ const product = await get("/api/products/42"); // Product (bare value)
284
298
  ```
285
299
 
286
300
  Pattern keys (`/:id`) match exactly; a concrete path under a _nested_ dynamic
@@ -288,7 +302,7 @@ route can match several patterns and union their responses.
288
302
 
289
303
  `Rango.PathResponse` reports the JSON **wire** shape, not the handler's raw
290
304
  return: `path.json()` serializes with `JSON.stringify`, so a handler returning
291
- `{ createdAt: Date }` resolves to `ResponseEnvelope<{ createdAt: string }>`. This
305
+ `{ createdAt: Date }` resolves to the bare `{ createdAt: string }`. This
292
306
  runs through the ambient `Rango.JsonSerialize<T>` transform (`Date -> string`,
293
307
  honors `toJSON()`, drops functions/`undefined`, `bigint -> never`). The
294
308
  `RouteResponse` surface below applies the same `Rango.JsonSerialize` transform, so
@@ -412,13 +426,13 @@ import type { ParamsFor } from "@rangojs/router/client";
412
426
 
413
427
  // Scoped (before mount) -- use the module directly, no global wiring needed
414
428
  type Stats = RouteResponse<typeof blogApiPatterns, "stats">;
415
- // = ResponseEnvelope<{ views: number; visitors: number }>
429
+ // = { views: number; visitors: number }
416
430
 
417
431
  // After mounting -- names get prefixed.
418
432
  // Rango.PathResponse needs `RegisteredRoutes extends typeof router.routeMap` (see above),
419
- // otherwise it resolves to ResponseEnvelope<never>.
433
+ // otherwise it resolves to never.
420
434
  type BlogStats = Rango.PathResponse<"/blog/api/stats">;
421
- // = ResponseEnvelope<{ views: number; visitors: number }>
435
+ // = { views: number; visitors: number }
422
436
 
423
437
  // Params work through nested includes
424
438
  type LikesParams = ParamsFor<"blog.api.likes">;
@@ -462,7 +476,11 @@ best-effort basis.
462
476
  1. `path.json()` tags the route at the trie level with a MIME type
463
477
  2. `coreRequestHandler()` checks the tag before the RSC pipeline
464
478
  3. Tagged routes short-circuit: handler runs, Response is returned directly
465
- 4. JSON routes auto-wrap return values in `{ data }` / `{ error }` envelope
479
+ 4. JSON routes serialize the return value verbatim (bare) on success; a thrown error becomes an RFC 9457 `problem+json` body (`application/problem+json`)
466
480
  5. Client-side navigation to response routes gets `X-RSC-Reload` header, triggering hard navigation
467
481
  6. Response types flow through `_responses` phantom type on `UrlPatterns`, propagated by `include()`
468
482
  7. When multiple routes share a URL pattern, the trie merges them for content negotiation (see `/mime-routes`)
483
+
484
+ ## Consuming response routes
485
+
486
+ To call your own response-route JSON APIs from first-party TypeScript with a typed client (typed params, typed payloads inferred from the handler, no `.data`, typed `ProblemDetails` errors), see `/api-client` — a copy-paste recipe over `RouteResponse` + `ExtractParams` + a client-safe path builder. External/third-party consumers use the plain wire directly: bare JSON on success, `application/problem+json` on error.
@@ -57,7 +57,7 @@ the auto-generated `GeneratedRouteMap`, so **`rango generate` alone gives you
57
57
  path-checked `href()`** with no manual augmentation. Response and MIME payload
58
58
  inference is the exception: it comes only from `typeof router.routeMap` (via
59
59
  `RegisteredRoutes`), because `GeneratedRouteMap` carries paths + search but no
60
- payloads — so `Rango.PathResponse` resolves to `ResponseEnvelope<never>` until you wire
60
+ payloads — so `Rango.PathResponse` resolves to `never` until you wire
61
61
  `RegisteredRoutes`.
62
62
 
63
63
  Recommended setup:
@@ -237,7 +237,7 @@ async function get<T extends Rango.Path>(
237
237
  ): Promise<Rango.PathResponse<T>> {
238
238
  return fetch(href(path)).then((r) => r.json());
239
239
  }
240
- const product = await get("/api/products/42"); // ResponseEnvelope<Product>
240
+ const product = await get("/api/products/42"); // Product (bare value)
241
241
  ```
242
242
 
243
243
  Pattern keys (`/:id`) match exactly; a concrete path under a _nested_ dynamic
@@ -245,7 +245,7 @@ route can match several patterns and union their responses.
245
245
 
246
246
  `Rango.PathResponse` describes the JSON **wire** shape, not the handler's raw
247
247
  return. A `path.json()` handler returning `{ createdAt: Date }` resolves here to
248
- `ResponseEnvelope<{ createdAt: string }>`, matching what `r.json()` yields. This
248
+ `{ createdAt: string }` (bare value), matching what `r.json()` yields. This
249
249
  is applied via the ambient `Rango.JsonSerialize<T>` transform (`Date -> string`,
250
250
  honors `toJSON()`, drops functions/`undefined`, `bigint -> never`). A separate
251
251
  `Rango.FlightSerialize<T>` models the higher-fidelity RSC Flight boundary
@@ -9,7 +9,6 @@ import "./augment.js";
9
9
  import type { Handler, RouteParams, RouteSearchParams } from "../index.js";
10
10
  import type { DefaultRouteName } from "../types/global-namespace.js";
11
11
  import { href } from "../href-client.js";
12
- import type { ResponseEnvelope } from "../urls.js";
13
12
  import type { Money, TestBindings } from "./augment.js";
14
13
 
15
14
  type Expect<T extends true> = T;
@@ -79,13 +78,13 @@ wrappedHref("/not-a-route");
79
78
  type _orderWireByPattern = Expect<
80
79
  Equal<
81
80
  Rango.PathResponse<"/orders/:id">,
82
- ResponseEnvelope<{ id: string; total: number; placedAt: string }>
81
+ { id: string; total: number; placedAt: string }
83
82
  >
84
83
  >;
85
84
  type _orderWireByPath = Expect<
86
85
  Equal<
87
86
  Rango.PathResponse<"/orders/42">,
88
- ResponseEnvelope<{ id: string; total: number; placedAt: string }>
87
+ { id: string; total: number; placedAt: string }
89
88
  >
90
89
  >;
91
90
 
@@ -0,0 +1,107 @@
1
+ // Collect the `"use client"` client-reference keys reachable from an error /
2
+ // notFound boundary registration, for routing them into the dedicated
3
+ // `app-fallback` chunk (see vite/utils/client-chunks.ts).
4
+ //
5
+ // A boundary registration is not always a bare client element. The common,
6
+ // load-bearing pattern wraps the client boundary in providers a thrown handler
7
+ // needs (the layout that would normally supply them did not mount):
8
+ //
9
+ // defaultErrorBoundary: ({ error }) => (
10
+ // <FallbackIntl locales={...}>
11
+ // <ThemedError error={error} /> // <- the real "use client" boundary
12
+ // </FallbackIntl>
13
+ // )
14
+ //
15
+ // So the value may be (a) a handler FUNCTION returning a tree, or (b) an element
16
+ // tree with the client boundary nested below server wrappers. We:
17
+ // 1. If it's a function, CALL it with synthetic props to get the returned tree.
18
+ // This only constructs JSX — the inner components are element `type`s, never
19
+ // invoked — so no hooks run. Guarded: a boundary that needs a real render
20
+ // context (request globals, etc.) throws and is skipped (graceful: it simply
21
+ // stays on the default grouping, as before).
22
+ // 2. Walk the resulting tree and report every element whose `.type` is a
23
+ // plugin-rsc client reference.
24
+ //
25
+ // Limit: a boundary that *conditionally* renders different client components based
26
+ // on the runtime error cannot be resolved statically — only the branch taken with
27
+ // the synthetic error is seen. Such cases fall back to the default chunk; the
28
+ // custom `clientChunks` function is the escape hatch.
29
+
30
+ const CLIENT_REF = Symbol.for("react.client.reference");
31
+ const MAX_DEPTH = 40;
32
+
33
+ // Synthetic props covering the error-boundary (`{ error, reset }`) and notFound
34
+ // (`{ pathname }`) handler shapes. The handler destructures what it needs.
35
+ const SYNTHETIC_PROPS = {
36
+ error: new Error("rango: build-time fallback-chunk discovery"),
37
+ reset: () => {},
38
+ pathname: "/",
39
+ info: { componentStack: "" },
40
+ };
41
+
42
+ interface MaybeElement {
43
+ type?: { $$typeof?: symbol; $$id?: string };
44
+ props?: Record<string, unknown>;
45
+ }
46
+
47
+ function isReactNodeLike(v: unknown): boolean {
48
+ return (
49
+ Array.isArray(v) ||
50
+ (typeof v === "object" && v !== null && "$$typeof" in (v as object))
51
+ );
52
+ }
53
+
54
+ function walkElementTree(
55
+ node: unknown,
56
+ report: (refKey: string) => void,
57
+ depth: number,
58
+ ): void {
59
+ if (node == null || depth > MAX_DEPTH) return;
60
+ if (Array.isArray(node)) {
61
+ for (const child of node) walkElementTree(child, report, depth + 1);
62
+ return;
63
+ }
64
+ if (typeof node !== "object") return;
65
+
66
+ const el = node as MaybeElement;
67
+ const type = el.type;
68
+ if (type?.$$typeof === CLIENT_REF && typeof type.$$id === "string") {
69
+ // $$id is `<referenceKey>#<exportName>` in build mode — keep the referenceKey.
70
+ report(type.$$id.split("#")[0]);
71
+ }
72
+
73
+ const props = el.props;
74
+ if (props && typeof props === "object") {
75
+ // Children are always nodes; other props are followed only when they look
76
+ // like React nodes (slots/icons), never arbitrary data objects.
77
+ walkElementTree(props.children, report, depth + 1);
78
+ for (const key in props) {
79
+ if (key === "children") continue;
80
+ const value = props[key];
81
+ if (isReactNodeLike(value)) walkElementTree(value, report, depth + 1);
82
+ }
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Report every `"use client"` client-reference key reachable from a single
88
+ * error/notFound boundary registration (handler function or element tree).
89
+ */
90
+ export function collectFallbackClientRefs(
91
+ boundary: unknown,
92
+ report: (refKey: string) => void,
93
+ ): void {
94
+ try {
95
+ let node = boundary;
96
+ if (typeof node === "function") {
97
+ node = (node as (props: unknown) => unknown)(SYNTHETIC_PROPS);
98
+ }
99
+ walkElementTree(node, report, 0);
100
+ } catch {
101
+ // The boundary needs a real render context (request globals, hooks at the
102
+ // top level) or its tree has hostile getters. Its client refs can't be
103
+ // resolved statically — skip. It stays on the default grouping (no
104
+ // regression vs. not collecting), and the custom clientChunks fn is the
105
+ // escape hatch for such cases.
106
+ }
107
+ }
@@ -16,6 +16,7 @@ import type { EntryData, TrackedInclude } from "../server/context.js";
16
16
  import type { TrailingSlashMode } from "../types.js";
17
17
  import { createRouteHelpers } from "../route-definition.js";
18
18
  import MapRootLayout from "../server/root-layout.js";
19
+ import { collectFallbackClientRefs } from "./collect-fallback-refs.js";
19
20
 
20
21
  /**
21
22
  * Node in the prefix tree
@@ -290,7 +291,17 @@ export function generateManifest<TEnv>(
290
291
  export function generateManifestFull<TEnv>(
291
292
  urlpatterns: UrlPatterns<TEnv, any>,
292
293
  mountIndex: number = 0,
293
- options?: { urlPrefix?: string },
294
+ options?: {
295
+ urlPrefix?: string;
296
+ /**
297
+ * Called once per `"use client"` component registered as an
298
+ * errorBoundary/notFoundBoundary fallback, with its client-reference key
299
+ * (`$$id`). Lets the build collect fallback module ids for dedicated
300
+ * chunking without exposing the otherwise-discarded EntryData tree. The
301
+ * EntryData map built below is local; this is the only seam that surfaces it.
302
+ */
303
+ collectClientFallbackRef?: (refKey: string) => void;
304
+ },
294
305
  ): FullManifest {
295
306
  const routeManifest: Record<string, string> = {};
296
307
  const routeAncestry: Record<string, string[]> = {};
@@ -328,6 +339,22 @@ export function generateManifestFull<TEnv>(
328
339
  },
329
340
  );
330
341
 
342
+ // Surface the "use client" components registered as error/notFound fallbacks
343
+ // (route-tree errorBoundary()/notFoundBoundary() helpers, stored on EntryData).
344
+ // The boundary may be a handler function and/or wrap the client boundary in
345
+ // server providers, so walk the whole tree (see collectFallbackClientRefs).
346
+ if (options?.collectClientFallbackRef) {
347
+ const report = options.collectClientFallbackRef;
348
+ const collect = (boundary: unknown[] | undefined) => {
349
+ for (const item of boundary ?? [])
350
+ collectFallbackClientRefs(item, report);
351
+ };
352
+ for (const entry of manifest.values()) {
353
+ collect(entry.errorBoundary);
354
+ collect(entry.notFoundBoundary);
355
+ }
356
+ }
357
+
331
358
  // Collect root-level routes and trailing slash config
332
359
  const routeTrailingSlash: Record<string, string> = {};
333
360
  for (const [name, pattern] of patternsMap.entries()) {
@@ -22,7 +22,14 @@ export {
22
22
  type GeneratedManifest,
23
23
  } from "./generate-manifest.js";
24
24
 
25
- export { buildRouteTrie, type TrieNode, type TrieLeaf } from "./route-trie.js";
25
+ export {
26
+ buildRouteTrie,
27
+ buildPerRouterTrie,
28
+ type TrieNode,
29
+ type TrieLeaf,
30
+ } from "./route-trie.js";
31
+
32
+ export { collectFallbackClientRefs } from "./collect-fallback-refs.js";
26
33
 
27
34
  export {
28
35
  writePerModuleRouteTypes,