@rangojs/router 0.4.0 → 0.4.1

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 (482) hide show
  1. package/README.md +19 -1
  2. package/dist/types/browser/event-controller.d.ts +4 -0
  3. package/dist/types/browser/link-interceptor.d.ts +17 -7
  4. package/dist/types/browser/navigation-bridge.d.ts +13 -1
  5. package/dist/types/browser/notify-listeners.d.ts +2 -0
  6. package/dist/types/browser/prefetch/cache.d.ts +1 -1
  7. package/dist/types/browser/prefetch/default-strategy.d.ts +12 -3
  8. package/dist/types/browser/prefetch/invalidation.d.ts +6 -0
  9. package/dist/types/browser/prefetch/loader.d.ts +3 -1
  10. package/dist/types/browser/prefetch/observer.d.ts +3 -6
  11. package/dist/types/browser/rango-state.d.ts +4 -0
  12. package/dist/types/browser/react/Link.d.ts +4 -9
  13. package/dist/types/browser/react/context.d.ts +3 -0
  14. package/dist/types/browser/rsc-router.d.ts +7 -2
  15. package/dist/types/browser/types.d.ts +1 -0
  16. package/dist/types/cache/cache-key-utils.d.ts +11 -3
  17. package/dist/types/cache/cache-scope.d.ts +82 -3
  18. package/dist/types/cache/cf/cf-cache-store.d.ts +2 -2
  19. package/dist/types/cache/index.d.ts +3 -1
  20. package/dist/types/cache/search-params-filter.d.ts +64 -0
  21. package/dist/types/cache/shell-snapshot.d.ts +4 -4
  22. package/dist/types/cache/types.d.ts +30 -2
  23. package/dist/types/cache/vercel/vercel-cache-store.d.ts +2 -2
  24. package/dist/types/index.d.ts +1 -0
  25. package/dist/types/index.rsc.d.ts +1 -0
  26. package/dist/types/router/match-middleware/cache-lookup.d.ts +13 -0
  27. package/dist/types/router/navigation-snapshot.d.ts +29 -0
  28. package/dist/types/router/router-options.d.ts +27 -3
  29. package/dist/types/rsc/shell-build-manifest.d.ts +7 -1
  30. package/dist/types/rsc/shell-serve.d.ts +7 -1
  31. package/dist/types/rsc/types.d.ts +17 -0
  32. package/dist/types/server/request-context.d.ts +57 -4
  33. package/dist/types/testing/render-route.d.ts +10 -1
  34. package/dist/types/testing/shell-status.d.ts +6 -3
  35. package/dist/types/vite/plugin-types.d.ts +1 -1
  36. package/dist/vite/index.js +5 -5
  37. package/package.json +23 -22
  38. package/skills/caching/SKILL.md +39 -0
  39. package/skills/comparison/references/framework-comparison.md +7 -1
  40. package/skills/links/SKILL.md +24 -0
  41. package/skills/ppr/SKILL.md +53 -4
  42. package/skills/router-setup/SKILL.md +7 -2
  43. package/skills/testing/client-components.md +15 -14
  44. package/skills/vercel/SKILL.md +1 -1
  45. package/src/browser/event-controller.ts +110 -11
  46. package/src/browser/link-interceptor.ts +469 -20
  47. package/src/browser/navigation-bridge.ts +71 -2
  48. package/src/browser/navigation-store.ts +24 -1
  49. package/src/browser/notify-listeners.ts +22 -0
  50. package/src/browser/prefetch/cache.ts +4 -2
  51. package/src/browser/prefetch/default-strategy.ts +43 -3
  52. package/src/browser/prefetch/invalidation.ts +30 -0
  53. package/src/browser/prefetch/loader.ts +19 -12
  54. package/src/browser/prefetch/observer.ts +50 -22
  55. package/src/browser/rango-state.ts +21 -0
  56. package/src/browser/react/Link.tsx +97 -88
  57. package/src/browser/react/NavigationProvider.tsx +1 -0
  58. package/src/browser/react/context.ts +4 -0
  59. package/src/browser/rsc-router.tsx +22 -9
  60. package/src/browser/types.ts +1 -0
  61. package/src/cache/cache-key-utils.ts +18 -4
  62. package/src/cache/cache-runtime.ts +7 -2
  63. package/src/cache/cache-scope.ts +152 -23
  64. package/src/cache/cf/cf-cache-store.ts +51 -16
  65. package/src/cache/document-cache.ts +7 -1
  66. package/src/cache/index.ts +7 -0
  67. package/src/cache/search-params-filter.ts +118 -0
  68. package/src/cache/shell-snapshot.ts +8 -4
  69. package/src/cache/types.ts +33 -2
  70. package/src/cache/vercel/vercel-cache-store.ts +17 -3
  71. package/src/index.rsc.ts +4 -0
  72. package/src/index.ts +6 -0
  73. package/src/router/match-middleware/cache-lookup.ts +146 -33
  74. package/src/router/match-middleware/cache-store.ts +70 -0
  75. package/src/router/navigation-snapshot.ts +46 -6
  76. package/src/router/router-options.ts +31 -4
  77. package/src/rsc/handler.ts +9 -0
  78. package/src/rsc/response-cache-serve.ts +1 -1
  79. package/src/rsc/rsc-rendering.ts +252 -27
  80. package/src/rsc/shell-build-manifest.ts +8 -1
  81. package/src/rsc/shell-capture.ts +5 -0
  82. package/src/rsc/shell-serve.ts +8 -2
  83. package/src/rsc/types.ts +17 -0
  84. package/src/server/request-context.ts +62 -3
  85. package/src/testing/dispatch.ts +21 -3
  86. package/src/testing/render-route.tsx +86 -17
  87. package/src/testing/shell-status.ts +20 -3
  88. package/src/vite/plugin-types.ts +1 -1
  89. package/src/vite/plugins/vercel-output.ts +2 -2
  90. package/dist/types.backup/__internal.d.ts +0 -127
  91. package/dist/types.backup/bin/rango.d.ts +0 -1
  92. package/dist/types.backup/browser/action-coordinator.d.ts +0 -57
  93. package/dist/types.backup/browser/action-fence.d.ts +0 -33
  94. package/dist/types.backup/browser/app-shell.d.ts +0 -34
  95. package/dist/types.backup/browser/app-version.d.ts +0 -6
  96. package/dist/types.backup/browser/connection-warmup.d.ts +0 -31
  97. package/dist/types.backup/browser/cookie-name.d.ts +0 -66
  98. package/dist/types.backup/browser/event-controller.d.ts +0 -221
  99. package/dist/types.backup/browser/history-state.d.ts +0 -26
  100. package/dist/types.backup/browser/index.d.ts +0 -1
  101. package/dist/types.backup/browser/intercept-utils.d.ts +0 -30
  102. package/dist/types.backup/browser/invalidate-client-cache.d.ts +0 -17
  103. package/dist/types.backup/browser/link-interceptor.d.ts +0 -43
  104. package/dist/types.backup/browser/logging.d.ts +0 -33
  105. package/dist/types.backup/browser/merge-segment-loaders.d.ts +0 -38
  106. package/dist/types.backup/browser/navigation-bridge.d.ts +0 -27
  107. package/dist/types.backup/browser/navigation-client.d.ts +0 -17
  108. package/dist/types.backup/browser/navigation-store-handle.d.ts +0 -25
  109. package/dist/types.backup/browser/navigation-store.d.ts +0 -95
  110. package/dist/types.backup/browser/navigation-transaction.d.ts +0 -75
  111. package/dist/types.backup/browser/network-error-handler.d.ts +0 -35
  112. package/dist/types.backup/browser/partial-update.d.ts +0 -61
  113. package/dist/types.backup/browser/prefetch/cache.d.ts +0 -183
  114. package/dist/types.backup/browser/prefetch/fetch.d.ts +0 -52
  115. package/dist/types.backup/browser/prefetch/observer.d.ts +0 -27
  116. package/dist/types.backup/browser/prefetch/policy.d.ts +0 -13
  117. package/dist/types.backup/browser/prefetch/queue.d.ts +0 -48
  118. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +0 -28
  119. package/dist/types.backup/browser/rango-state.d.ts +0 -52
  120. package/dist/types.backup/browser/react/Link.d.ts +0 -140
  121. package/dist/types.backup/browser/react/NavigationProvider.d.ts +0 -88
  122. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +0 -78
  123. package/dist/types.backup/browser/react/context.d.ts +0 -54
  124. package/dist/types.backup/browser/react/filter-segment-order.d.ts +0 -35
  125. package/dist/types.backup/browser/react/index.d.ts +0 -1
  126. package/dist/types.backup/browser/react/location-state-shared.d.ts +0 -162
  127. package/dist/types.backup/browser/react/location-state.d.ts +0 -29
  128. package/dist/types.backup/browser/react/mount-context.d.ts +0 -23
  129. package/dist/types.backup/browser/react/nonce-context.d.ts +0 -14
  130. package/dist/types.backup/browser/react/shallow-equal.d.ts +0 -5
  131. package/dist/types.backup/browser/react/use-action.d.ts +0 -61
  132. package/dist/types.backup/browser/react/use-handle.d.ts +0 -21
  133. package/dist/types.backup/browser/react/use-href.d.ts +0 -32
  134. package/dist/types.backup/browser/react/use-link-status.d.ts +0 -36
  135. package/dist/types.backup/browser/react/use-mount.d.ts +0 -24
  136. package/dist/types.backup/browser/react/use-navigation.d.ts +0 -15
  137. package/dist/types.backup/browser/react/use-params.d.ts +0 -21
  138. package/dist/types.backup/browser/react/use-pathname.d.ts +0 -13
  139. package/dist/types.backup/browser/react/use-reverse.d.ts +0 -40
  140. package/dist/types.backup/browser/react/use-router.d.ts +0 -23
  141. package/dist/types.backup/browser/react/use-search-params.d.ts +0 -19
  142. package/dist/types.backup/browser/react/use-segments.d.ts +0 -29
  143. package/dist/types.backup/browser/response-adapter.d.ts +0 -58
  144. package/dist/types.backup/browser/rsc-router.d.ts +0 -141
  145. package/dist/types.backup/browser/scroll-restoration.d.ts +0 -103
  146. package/dist/types.backup/browser/segment-reconciler.d.ts +0 -74
  147. package/dist/types.backup/browser/segment-structure-assert.d.ts +0 -16
  148. package/dist/types.backup/browser/server-action-bridge.d.ts +0 -29
  149. package/dist/types.backup/browser/types.d.ts +0 -530
  150. package/dist/types.backup/browser/validate-redirect-origin.d.ts +0 -28
  151. package/dist/types.backup/build/collect-fallback-refs.d.ts +0 -5
  152. package/dist/types.backup/build/generate-manifest.d.ts +0 -100
  153. package/dist/types.backup/build/generate-route-types.d.ts +0 -8
  154. package/dist/types.backup/build/index.d.ts +0 -21
  155. package/dist/types.backup/build/prefix-tree-utils.d.ts +0 -56
  156. package/dist/types.backup/build/route-trie.d.ts +0 -89
  157. package/dist/types.backup/build/route-types/ast-helpers.d.ts +0 -3
  158. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +0 -13
  159. package/dist/types.backup/build/route-types/codegen.d.ts +0 -16
  160. package/dist/types.backup/build/route-types/include-resolution.d.ts +0 -74
  161. package/dist/types.backup/build/route-types/param-extraction.d.ts +0 -13
  162. package/dist/types.backup/build/route-types/per-module-writer.d.ts +0 -18
  163. package/dist/types.backup/build/route-types/router-processing.d.ts +0 -82
  164. package/dist/types.backup/build/route-types/scan-filter.d.ts +0 -17
  165. package/dist/types.backup/build/route-types/source-scan.d.ts +0 -13
  166. package/dist/types.backup/build/runtime-discovery.d.ts +0 -24
  167. package/dist/types.backup/cache/background-task.d.ts +0 -21
  168. package/dist/types.backup/cache/cache-error.d.ts +0 -71
  169. package/dist/types.backup/cache/cache-key-utils.d.ts +0 -35
  170. package/dist/types.backup/cache/cache-policy.d.ts +0 -59
  171. package/dist/types.backup/cache/cache-runtime.d.ts +0 -51
  172. package/dist/types.backup/cache/cache-scope.d.ts +0 -134
  173. package/dist/types.backup/cache/cache-tag.d.ts +0 -79
  174. package/dist/types.backup/cache/cf/cf-base64.d.ts +0 -4
  175. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +0 -105
  176. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +0 -481
  177. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +0 -300
  178. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +0 -22
  179. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +0 -15
  180. package/dist/types.backup/cache/cf/index.d.ts +0 -3
  181. package/dist/types.backup/cache/document-cache.d.ts +0 -69
  182. package/dist/types.backup/cache/handle-capture.d.ts +0 -23
  183. package/dist/types.backup/cache/handle-snapshot.d.ts +0 -39
  184. package/dist/types.backup/cache/index.d.ts +0 -7
  185. package/dist/types.backup/cache/memory-segment-store.d.ts +0 -163
  186. package/dist/types.backup/cache/profile-registry.d.ts +0 -40
  187. package/dist/types.backup/cache/read-through-swr.d.ts +0 -60
  188. package/dist/types.backup/cache/segment-codec.d.ts +0 -78
  189. package/dist/types.backup/cache/shell-snapshot.d.ts +0 -162
  190. package/dist/types.backup/cache/tag-invalidation.d.ts +0 -74
  191. package/dist/types.backup/cache/taint.d.ts +0 -71
  192. package/dist/types.backup/cache/types.d.ts +0 -407
  193. package/dist/types.backup/cache/vercel/index.d.ts +0 -1
  194. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +0 -267
  195. package/dist/types.backup/client.d.ts +0 -184
  196. package/dist/types.backup/client.rsc.d.ts +0 -39
  197. package/dist/types.backup/cloudflare/index.d.ts +0 -7
  198. package/dist/types.backup/cloudflare/tracing.d.ts +0 -53
  199. package/dist/types.backup/component-utils.d.ts +0 -46
  200. package/dist/types.backup/components/DefaultDocument.d.ts +0 -13
  201. package/dist/types.backup/context-var.d.ts +0 -84
  202. package/dist/types.backup/debug.d.ts +0 -57
  203. package/dist/types.backup/decode-loader-results.d.ts +0 -5
  204. package/dist/types.backup/default-error-boundary.d.ts +0 -10
  205. package/dist/types.backup/defer.d.ts +0 -89
  206. package/dist/types.backup/deps/browser.d.ts +0 -1
  207. package/dist/types.backup/deps/html-stream-client.d.ts +0 -1
  208. package/dist/types.backup/deps/html-stream-server.d.ts +0 -1
  209. package/dist/types.backup/deps/rsc.d.ts +0 -1
  210. package/dist/types.backup/deps/ssr.d.ts +0 -1
  211. package/dist/types.backup/encode-kv.d.ts +0 -35
  212. package/dist/types.backup/errors.d.ts +0 -226
  213. package/dist/types.backup/escape-script.d.ts +0 -44
  214. package/dist/types.backup/handle.d.ts +0 -93
  215. package/dist/types.backup/handles/MetaTags.d.ts +0 -17
  216. package/dist/types.backup/handles/Scripts.d.ts +0 -38
  217. package/dist/types.backup/handles/breadcrumbs.d.ts +0 -43
  218. package/dist/types.backup/handles/deferred-resolution.d.ts +0 -53
  219. package/dist/types.backup/handles/is-thenable.d.ts +0 -12
  220. package/dist/types.backup/handles/meta.d.ts +0 -43
  221. package/dist/types.backup/handles/script.d.ts +0 -139
  222. package/dist/types.backup/host/cookie-handler.d.ts +0 -8
  223. package/dist/types.backup/host/errors.d.ts +0 -40
  224. package/dist/types.backup/host/index.d.ts +0 -33
  225. package/dist/types.backup/host/pattern-matcher.d.ts +0 -30
  226. package/dist/types.backup/host/router.d.ts +0 -12
  227. package/dist/types.backup/host/testing.d.ts +0 -41
  228. package/dist/types.backup/host/types.d.ts +0 -148
  229. package/dist/types.backup/host/utils.d.ts +0 -20
  230. package/dist/types.backup/href-client.d.ts +0 -214
  231. package/dist/types.backup/index.d.ts +0 -112
  232. package/dist/types.backup/index.rsc.d.ts +0 -51
  233. package/dist/types.backup/internal-debug.d.ts +0 -1
  234. package/dist/types.backup/loader-store.d.ts +0 -193
  235. package/dist/types.backup/loader.d.ts +0 -18
  236. package/dist/types.backup/loader.rsc.d.ts +0 -18
  237. package/dist/types.backup/missing-id-error.d.ts +0 -1
  238. package/dist/types.backup/outlet-context.d.ts +0 -12
  239. package/dist/types.backup/outlet-provider.d.ts +0 -12
  240. package/dist/types.backup/prerender/build-shell-capture.d.ts +0 -104
  241. package/dist/types.backup/prerender/param-hash.d.ts +0 -6
  242. package/dist/types.backup/prerender/shell-manifest-key.d.ts +0 -18
  243. package/dist/types.backup/prerender/store.d.ts +0 -62
  244. package/dist/types.backup/prerender.d.ts +0 -292
  245. package/dist/types.backup/redirect-origin.d.ts +0 -55
  246. package/dist/types.backup/regex-escape.d.ts +0 -6
  247. package/dist/types.backup/render-error-thrower.d.ts +0 -13
  248. package/dist/types.backup/response-utils.d.ts +0 -35
  249. package/dist/types.backup/reverse.d.ts +0 -206
  250. package/dist/types.backup/root-error-boundary.d.ts +0 -32
  251. package/dist/types.backup/route-content-wrapper.d.ts +0 -40
  252. package/dist/types.backup/route-definition/dsl-helpers.d.ts +0 -130
  253. package/dist/types.backup/route-definition/helper-factories.d.ts +0 -22
  254. package/dist/types.backup/route-definition/helpers-types.d.ts +0 -392
  255. package/dist/types.backup/route-definition/index.d.ts +0 -7
  256. package/dist/types.backup/route-definition/redirect.d.ts +0 -48
  257. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +0 -19
  258. package/dist/types.backup/route-definition/use-item-types.d.ts +0 -1
  259. package/dist/types.backup/route-definition.d.ts +0 -1
  260. package/dist/types.backup/route-map-builder.d.ts +0 -127
  261. package/dist/types.backup/route-name.d.ts +0 -27
  262. package/dist/types.backup/route-types.d.ts +0 -172
  263. package/dist/types.backup/router/basename.d.ts +0 -10
  264. package/dist/types.backup/router/content-negotiation.d.ts +0 -91
  265. package/dist/types.backup/router/debug-manifest.d.ts +0 -7
  266. package/dist/types.backup/router/error-handling.d.ts +0 -76
  267. package/dist/types.backup/router/find-match.d.ts +0 -19
  268. package/dist/types.backup/router/handler-context.d.ts +0 -41
  269. package/dist/types.backup/router/instrument.d.ts +0 -161
  270. package/dist/types.backup/router/intercept-resolution.d.ts +0 -79
  271. package/dist/types.backup/router/lazy-includes.d.ts +0 -26
  272. package/dist/types.backup/router/loader-resolution.d.ts +0 -63
  273. package/dist/types.backup/router/logging.d.ts +0 -41
  274. package/dist/types.backup/router/manifest.d.ts +0 -8
  275. package/dist/types.backup/router/match-api.d.ts +0 -19
  276. package/dist/types.backup/router/match-context.d.ts +0 -184
  277. package/dist/types.backup/router/match-handlers.d.ts +0 -49
  278. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +0 -113
  279. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +0 -113
  280. package/dist/types.backup/router/match-middleware/cache-store.d.ts +0 -112
  281. package/dist/types.backup/router/match-middleware/index.d.ts +0 -80
  282. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +0 -116
  283. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +0 -94
  284. package/dist/types.backup/router/match-pipelines.d.ts +0 -103
  285. package/dist/types.backup/router/match-result.d.ts +0 -114
  286. package/dist/types.backup/router/metrics.d.ts +0 -6
  287. package/dist/types.backup/router/middleware-types.d.ts +0 -74
  288. package/dist/types.backup/router/middleware.d.ts +0 -116
  289. package/dist/types.backup/router/navigation-snapshot.d.ts +0 -22
  290. package/dist/types.backup/router/params-util.d.ts +0 -8
  291. package/dist/types.backup/router/parse-pattern.d.ts +0 -38
  292. package/dist/types.backup/router/pattern-matching.d.ts +0 -169
  293. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +0 -27
  294. package/dist/types.backup/router/prefetch-limits.d.ts +0 -20
  295. package/dist/types.backup/router/prerender-match.d.ts +0 -50
  296. package/dist/types.backup/router/preview-match.d.ts +0 -22
  297. package/dist/types.backup/router/request-classification.d.ts +0 -104
  298. package/dist/types.backup/router/revalidation.d.ts +0 -57
  299. package/dist/types.backup/router/route-snapshot.d.ts +0 -112
  300. package/dist/types.backup/router/router-context.d.ts +0 -137
  301. package/dist/types.backup/router/router-interfaces.d.ts +0 -432
  302. package/dist/types.backup/router/router-options.d.ts +0 -738
  303. package/dist/types.backup/router/router-registry.d.ts +0 -15
  304. package/dist/types.backup/router/segment-resolution/fresh.d.ts +0 -55
  305. package/dist/types.backup/router/segment-resolution/helpers.d.ts +0 -93
  306. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +0 -33
  307. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +0 -44
  308. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +0 -90
  309. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +0 -53
  310. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +0 -85
  311. package/dist/types.backup/router/segment-resolution/static-store.d.ts +0 -17
  312. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +0 -16
  313. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +0 -28
  314. package/dist/types.backup/router/segment-resolution.d.ts +0 -3
  315. package/dist/types.backup/router/segment-wrappers.d.ts +0 -53
  316. package/dist/types.backup/router/state-cookie-name.d.ts +0 -1
  317. package/dist/types.backup/router/substitute-pattern-params.d.ts +0 -23
  318. package/dist/types.backup/router/telemetry-otel.d.ts +0 -113
  319. package/dist/types.backup/router/telemetry.d.ts +0 -215
  320. package/dist/types.backup/router/timeout.d.ts +0 -68
  321. package/dist/types.backup/router/tracing.d.ts +0 -125
  322. package/dist/types.backup/router/trie-matching.d.ts +0 -32
  323. package/dist/types.backup/router/types.d.ts +0 -98
  324. package/dist/types.backup/router/url-params.d.ts +0 -26
  325. package/dist/types.backup/router.d.ts +0 -7
  326. package/dist/types.backup/rsc/capture-queue.d.ts +0 -6
  327. package/dist/types.backup/rsc/full-payload.d.ts +0 -22
  328. package/dist/types.backup/rsc/handler-context.d.ts +0 -31
  329. package/dist/types.backup/rsc/handler.d.ts +0 -9
  330. package/dist/types.backup/rsc/helpers.d.ts +0 -213
  331. package/dist/types.backup/rsc/index.d.ts +0 -17
  332. package/dist/types.backup/rsc/json-route-result.d.ts +0 -20
  333. package/dist/types.backup/rsc/loader-fetch.d.ts +0 -14
  334. package/dist/types.backup/rsc/manifest-init.d.ts +0 -18
  335. package/dist/types.backup/rsc/nonce.d.ts +0 -28
  336. package/dist/types.backup/rsc/origin-guard.d.ts +0 -50
  337. package/dist/types.backup/rsc/progressive-enhancement.d.ts +0 -19
  338. package/dist/types.backup/rsc/redirect-guard.d.ts +0 -35
  339. package/dist/types.backup/rsc/response-cache-serve.d.ts +0 -46
  340. package/dist/types.backup/rsc/response-error.d.ts +0 -19
  341. package/dist/types.backup/rsc/response-route-handler.d.ts +0 -29
  342. package/dist/types.backup/rsc/rsc-rendering.d.ts +0 -23
  343. package/dist/types.backup/rsc/runtime-warnings.d.ts +0 -22
  344. package/dist/types.backup/rsc/server-action.d.ts +0 -68
  345. package/dist/types.backup/rsc/shell-build-manifest.d.ts +0 -84
  346. package/dist/types.backup/rsc/shell-capture-constants.d.ts +0 -27
  347. package/dist/types.backup/rsc/shell-capture.d.ts +0 -374
  348. package/dist/types.backup/rsc/shell-serve.d.ts +0 -136
  349. package/dist/types.backup/rsc/ssr-setup.d.ts +0 -48
  350. package/dist/types.backup/rsc/transition-gate.d.ts +0 -27
  351. package/dist/types.backup/rsc/types.d.ts +0 -290
  352. package/dist/types.backup/runtime-env.d.ts +0 -1
  353. package/dist/types.backup/search-params.d.ts +0 -125
  354. package/dist/types.backup/segment-content-promise.d.ts +0 -13
  355. package/dist/types.backup/segment-fragments.d.ts +0 -56
  356. package/dist/types.backup/segment-loader-promise.d.ts +0 -22
  357. package/dist/types.backup/segment-system.d.ts +0 -84
  358. package/dist/types.backup/serialize.d.ts +0 -164
  359. package/dist/types.backup/server/context.d.ts +0 -494
  360. package/dist/types.backup/server/cookie-parse.d.ts +0 -10
  361. package/dist/types.backup/server/cookie-store.d.ts +0 -107
  362. package/dist/types.backup/server/fetchable-loader-store.d.ts +0 -20
  363. package/dist/types.backup/server/handle-store.d.ts +0 -100
  364. package/dist/types.backup/server/loader-registry.d.ts +0 -32
  365. package/dist/types.backup/server/request-context.d.ts +0 -596
  366. package/dist/types.backup/server/root-layout.d.ts +0 -3
  367. package/dist/types.backup/server.d.ts +0 -15
  368. package/dist/types.backup/ssr/index.d.ts +0 -233
  369. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +0 -3
  370. package/dist/types.backup/ssr/preinit-client-references.d.ts +0 -71
  371. package/dist/types.backup/ssr/ssr-root.d.ts +0 -69
  372. package/dist/types.backup/static-handler.d.ts +0 -57
  373. package/dist/types.backup/testing/cache-status.d.ts +0 -63
  374. package/dist/types.backup/testing/collect-handle.d.ts +0 -20
  375. package/dist/types.backup/testing/dispatch.d.ts +0 -123
  376. package/dist/types.backup/testing/dom.entry.d.ts +0 -15
  377. package/dist/types.backup/testing/e2e/fixture.d.ts +0 -37
  378. package/dist/types.backup/testing/e2e/index.d.ts +0 -30
  379. package/dist/types.backup/testing/e2e/matchers.d.ts +0 -17
  380. package/dist/types.backup/testing/e2e/page-helpers.d.ts +0 -62
  381. package/dist/types.backup/testing/e2e/parity.d.ts +0 -111
  382. package/dist/types.backup/testing/e2e/server.d.ts +0 -35
  383. package/dist/types.backup/testing/flight-matchers.d.ts +0 -55
  384. package/dist/types.backup/testing/flight-normalize.d.ts +0 -1
  385. package/dist/types.backup/testing/flight-tree.d.ts +0 -192
  386. package/dist/types.backup/testing/flight.d.ts +0 -115
  387. package/dist/types.backup/testing/flight.entry.d.ts +0 -27
  388. package/dist/types.backup/testing/generated-routes.d.ts +0 -66
  389. package/dist/types.backup/testing/index.d.ts +0 -52
  390. package/dist/types.backup/testing/internal/context.d.ts +0 -225
  391. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +0 -1
  392. package/dist/types.backup/testing/internal/seed-vars.d.ts +0 -30
  393. package/dist/types.backup/testing/render-handler.d.ts +0 -160
  394. package/dist/types.backup/testing/render-route.d.ts +0 -246
  395. package/dist/types.backup/testing/run-loader.d.ts +0 -186
  396. package/dist/types.backup/testing/run-middleware.d.ts +0 -132
  397. package/dist/types.backup/testing/run-transition-when.d.ts +0 -77
  398. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +0 -6
  399. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +0 -13
  400. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +0 -7
  401. package/dist/types.backup/testing/vitest-stubs/version.d.ts +0 -1
  402. package/dist/types.backup/testing/vitest.d.ts +0 -205
  403. package/dist/types.backup/theme/ThemeProvider.d.ts +0 -13
  404. package/dist/types.backup/theme/ThemeScript.d.ts +0 -45
  405. package/dist/types.backup/theme/constants.d.ts +0 -39
  406. package/dist/types.backup/theme/index.d.ts +0 -29
  407. package/dist/types.backup/theme/theme-context.d.ts +0 -21
  408. package/dist/types.backup/theme/theme-script.d.ts +0 -26
  409. package/dist/types.backup/theme/types.d.ts +0 -162
  410. package/dist/types.backup/theme/use-theme.d.ts +0 -8
  411. package/dist/types.backup/types/boundaries.d.ts +0 -93
  412. package/dist/types.backup/types/cache-types.d.ts +0 -191
  413. package/dist/types.backup/types/error-types.d.ts +0 -114
  414. package/dist/types.backup/types/global-namespace.d.ts +0 -90
  415. package/dist/types.backup/types/handler-context.d.ts +0 -658
  416. package/dist/types.backup/types/index.d.ts +0 -11
  417. package/dist/types.backup/types/loader-types.d.ts +0 -182
  418. package/dist/types.backup/types/request-scope.d.ts +0 -93
  419. package/dist/types.backup/types/route-config.d.ts +0 -105
  420. package/dist/types.backup/types/route-entry.d.ts +0 -95
  421. package/dist/types.backup/types/segments.d.ts +0 -234
  422. package/dist/types.backup/types.d.ts +0 -1
  423. package/dist/types.backup/urls/include-helper.d.ts +0 -17
  424. package/dist/types.backup/urls/include-provider.d.ts +0 -27
  425. package/dist/types.backup/urls/index.d.ts +0 -6
  426. package/dist/types.backup/urls/path-helper-types.d.ts +0 -197
  427. package/dist/types.backup/urls/path-helper.d.ts +0 -12
  428. package/dist/types.backup/urls/pattern-types.d.ts +0 -166
  429. package/dist/types.backup/urls/response-types.d.ts +0 -67
  430. package/dist/types.backup/urls/type-extraction.d.ts +0 -157
  431. package/dist/types.backup/urls/urls-function.d.ts +0 -24
  432. package/dist/types.backup/urls.d.ts +0 -1
  433. package/dist/types.backup/use-loader.d.ts +0 -150
  434. package/dist/types.backup/vercel/index.d.ts +0 -10
  435. package/dist/types.backup/vercel/tracing.d.ts +0 -70
  436. package/dist/types.backup/vite/debug.d.ts +0 -80
  437. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +0 -12
  438. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +0 -65
  439. package/dist/types.backup/vite/discovery/discover-routers.d.ts +0 -17
  440. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +0 -113
  441. package/dist/types.backup/vite/discovery/gate-state.d.ts +0 -79
  442. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +0 -24
  443. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +0 -32
  444. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +0 -22
  445. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +0 -40
  446. package/dist/types.backup/vite/discovery/state.d.ts +0 -162
  447. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +0 -15
  448. package/dist/types.backup/vite/index.d.ts +0 -11
  449. package/dist/types.backup/vite/inject-client-debug.d.ts +0 -56
  450. package/dist/types.backup/vite/plugin-types.d.ts +0 -298
  451. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +0 -6
  452. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +0 -40
  453. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +0 -35
  454. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +0 -64
  455. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +0 -18
  456. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +0 -37
  457. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +0 -19
  458. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +0 -10
  459. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +0 -8
  460. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +0 -13
  461. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +0 -29
  462. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +0 -6
  463. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +0 -25
  464. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +0 -20
  465. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +0 -20
  466. package/dist/types.backup/vite/plugins/vercel-output.d.ts +0 -85
  467. package/dist/types.backup/vite/plugins/version-injector.d.ts +0 -21
  468. package/dist/types.backup/vite/plugins/version-plugin.d.ts +0 -19
  469. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +0 -36
  470. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +0 -7
  471. package/dist/types.backup/vite/rango.d.ts +0 -29
  472. package/dist/types.backup/vite/router-discovery.d.ts +0 -23
  473. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +0 -64
  474. package/dist/types.backup/vite/utils/banner.d.ts +0 -2
  475. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +0 -28
  476. package/dist/types.backup/vite/utils/client-chunks.d.ts +0 -55
  477. package/dist/types.backup/vite/utils/directive-prologue.d.ts +0 -16
  478. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +0 -37
  479. package/dist/types.backup/vite/utils/manifest-utils.d.ts +0 -7
  480. package/dist/types.backup/vite/utils/package-resolution.d.ts +0 -6
  481. package/dist/types.backup/vite/utils/prerender-utils.d.ts +0 -32
  482. package/dist/types.backup/vite/utils/shared-utils.d.ts +0 -55
@@ -1,166 +0,0 @@
1
- import type { TrailingSlashMode } from "../types.js";
2
- import type { AllUseItems, UrlPatternsBrand } from "../route-types.js";
3
- import type { SearchSchema } from "../search-params.js";
4
- import { RESPONSE_TYPE } from "./response-types.js";
5
- import type { DefaultEnv } from "../types.js";
6
- import type { PathHelpers } from "./path-helper-types.js";
7
- /**
8
- * Builder function accepted by urls() and as a shorthand for routes()/urls option.
9
- * When passed directly to routes() or createRouter({ urls }), it is wrapped in urls() automatically.
10
- */
11
- export type UrlBuilder<TEnv = DefaultEnv, TItems extends readonly (AllUseItems | readonly AllUseItems[])[] = readonly AllUseItems[]> = (helpers: PathHelpers<TEnv>) => TItems;
12
- /**
13
- * Sentinel type for unnamed routes.
14
- * Using a branded string instead of `never` prevents TypeScript from
15
- * widening array type inference when mixing named and unnamed routes.
16
- */
17
- export type UnnamedRoute = "$unnamed";
18
- /**
19
- * Sentinel type for include() mounts that stay local to the mounted module.
20
- * This keeps child route names out of the parent/global type map while still
21
- * allowing the mounted module to use its own local route names internally.
22
- *
23
- * Branded with a symbol key so it cannot be accidentally produced by user code.
24
- */
25
- declare const LOCAL_ONLY_BRAND: unique symbol;
26
- export type LocalOnlyInclude = string & {
27
- [LOCAL_ONLY_BRAND]: void;
28
- };
29
- /**
30
- * Options for path() function
31
- */
32
- /**
33
- * Options for the `ppr` path option (PPR shell caching — Axis 2, see
34
- * docs/design/ppr-shell-resume.md and the /ppr skill). Declaring
35
- * `ppr: true | PartialPrerenderProps` on a page route opts that DOCUMENT into
36
- * shell capture: the rendered HTML shell (everything that is not a live hole) is
37
- * cached and, on a later GET, flushed immediately while fizz resumes only the
38
- * holes. Serving is integral to the router — there is no middleware to mount;
39
- * the shell store is the app-level `createRouter({ cache })` store (which must
40
- * implement the `getShell`/`putShell` family).
41
- */
42
- export interface PartialPrerenderProps {
43
- /**
44
- * Shell time-to-live in seconds. Defaults to 300 (`ppr: true` uses the same
45
- * default).
46
- */
47
- ttl?: number;
48
- /**
49
- * Stale-while-revalidate window in seconds: a stale shell is still served
50
- * while a background recapture refreshes it.
51
- */
52
- swr?: number;
53
- /**
54
- * Operational tags attached to the captured shell entry for
55
- * `updateTag()`/`revalidateTag()`-driven eviction. UNIONED with the tags the
56
- * capture render auto-collects (the shell's own non-loader request tags).
57
- */
58
- tags?: string[];
59
- /**
60
- * Upper bound (serialized UTF-8 bytes) on the capture data snapshot riding
61
- * inside the shell entry. The snapshot duplicates every cache-store value
62
- * the capture pinned, so a page over a large cache() segment can push the
63
- * entry toward store value limits (Cloudflare KV caps a value at 25 MiB).
64
- * Over the cap the snapshot is skipped: the shell is still stored and
65
- * served, but pinned reads fall back to the live store, so drifted cached
66
- * content can hydration-mismatch and be repaired client-side (the
67
- * pre-snapshot behavior). Reported once per key. Defaults to 8 MiB.
68
- */
69
- maxSnapshotBytes?: number;
70
- /**
71
- * Capture settle budget in MILLISECONDS (default 15000). Bounds the whole
72
- * background capture: the wait for deferred shell material — top-level
73
- * pushed handle promises (`ctx.use(Meta)(promise.then(...))` and friends)
74
- * are AWAITED and their settled values baked into the stored shell — AND
75
- * the fizz prerender deadline. Declare it to tighten the budget below the
76
- * default or when a route's shell material takes longer than 15s to
77
- * settle. A budget that expires with pushes still pending REFUSES the
78
- * capture (the route stays MISS with the once-per-key warning) — a shell
79
- * with missing head material is never stored. Capture is background work
80
- * (waitUntil), so a longer budget costs latency-to-HIT only, never a served
81
- * response; the platform waitUntil lifetime (workerd: ~30s past response
82
- * completion) is the physical ceiling — the default's derivation lives in
83
- * docs/design/ppr-shell-resume.md (Cost model). Build-time captures
84
- * (Prerender+ppr, producer B) honor the same budget with no platform
85
- * ceiling. Non-finite or sub-1ms values fall back to the default.
86
- */
87
- captureTimeout?: number;
88
- }
89
- export interface PathOptions<TName extends string = string, TSearch extends SearchSchema = {}> {
90
- /** Route name for href() lookups */
91
- name?: TName;
92
- /**
93
- * PPR shell caching opt-in for this page route (document-level). `true` uses
94
- * the default policy (ttl 300); an object sets ttl/swr/tags. See
95
- * {@link PartialPrerenderProps}. Routes without this option are pure axis 1 —
96
- * no capture, no store reads, no logs.
97
- */
98
- ppr?: boolean | PartialPrerenderProps;
99
- /** Search param schema for typed query parameters */
100
- search?: TSearch;
101
- /** Trailing slash behavior: "never" (redirect /path/ to /path), "always" (redirect /path to /path/), "ignore" (match both) */
102
- trailingSlash?: TrailingSlashMode;
103
- /** Response type marker (set by path.json(), etc.) */
104
- [RESPONSE_TYPE]?: string;
105
- }
106
- /**
107
- * Result of urls() - contains the route definitions
108
- */
109
- export interface UrlPatterns<TEnv = any, TRoutes extends Record<string, any> = Record<string, string>, TResponses extends Record<string, unknown> = Record<string, unknown>> {
110
- /** Internal: compiled handler function */
111
- readonly handler: () => AllUseItems[];
112
- /** Internal: trailing slash config per route name */
113
- readonly trailingSlash: Record<string, TrailingSlashMode>;
114
- /** Brand for type checking */
115
- readonly [UrlPatternsBrand]: void;
116
- /** Environment type brand (phantom) */
117
- readonly _env?: TEnv;
118
- /** Routes type brand (phantom) - carries route name -> pattern mapping */
119
- readonly _routes?: TRoutes;
120
- /** Responses type brand (phantom) - carries route name -> response data type mapping */
121
- readonly _responses?: TResponses;
122
- }
123
- /**
124
- * Extract the phantom env type carried by a UrlPatterns value.
125
- */
126
- export type UrlPatternsEnv<T> = T extends UrlPatterns<infer TEnv, any, any> ? TEnv : never;
127
- /**
128
- * Guards `routes()` env compatibility without over-constraining.
129
- *
130
- * - An env-agnostic block (its env is `unknown` — e.g. a shared urls() module,
131
- * or an app that does not augment `Rango.Env`) attaches to any router.
132
- * - A block carrying a concrete env is accepted only when the router env
133
- * (`TRouterEnv`) satisfies it; resolves to `never` otherwise, so a
134
- * `urls<{ DB: D1Database }>()` cannot be mounted on a `createRouter<{}>()`.
135
- *
136
- * Use as `patterns: T & EnvCompatible<T, TEnv>` so `T` still infers from the
137
- * argument — a bare `EnvCompatible<T, TEnv>` parameter sits in a non-inferrable
138
- * conditional position and would collapse `T` to its constraint.
139
- *
140
- * Known limitation: `TRouterEnv extends ...` distributes over a union router env,
141
- * so a `urls<A>()` block is accepted on `createRouter<A | B>()` even though the
142
- * `B` arm cannot supply `A`'s env. Suppressing distribution with
143
- * `[TRouterEnv] extends [...]` would close that edge but breaks the common
144
- * generic-`TEnv` call sites (a deferred type parameter can't resolve the tuple
145
- * conditional, so the intersection stops reducing to `T`). A router has one env,
146
- * so a union env is not a supported pattern; the distributive form is kept.
147
- */
148
- export type EnvCompatible<TPatterns, TRouterEnv> = unknown extends UrlPatternsEnv<TPatterns> ? TPatterns : TRouterEnv extends UrlPatternsEnv<TPatterns> ? TPatterns : never;
149
- /**
150
- * Options for include()
151
- */
152
- export interface IncludeOptions<TNamePrefix extends string = string> {
153
- /**
154
- * Name prefix for all routes in this pattern set.
155
- *
156
- * - `{ name: "blog" }` — children become `blog.index`, `blog.detail`, etc.
157
- * Visible in generated route types and resolvable globally via `reverse("blog.index")`.
158
- * - `{ name: "" }` — children merge into the parent namespace with no prefix.
159
- * Equivalent to defining the routes inline at the include site.
160
- * - Omitted — children live in a private local scope, hidden from the
161
- * generated route map and global reverse resolution. Only dot-local
162
- * reverse (e.g. `reverse(".child")`) works from inside the module.
163
- */
164
- name?: TNamePrefix;
165
- }
166
- export {};
@@ -1,67 +0,0 @@
1
- import type { ContextVar } from "../context-var.js";
2
- import type { ReverseFunction } from "../reverse.js";
3
- import type { DefaultReverseRouteMap, DefaultVars } from "../types/global-namespace.js";
4
- import type { UseItems, ResponseRouteUseItem } from "../route-types.js";
5
- import type { RequestScope } from "../types/request-scope.js";
6
- /**
7
- * Reverse function for response handler contexts.
8
- * Global names get autocomplete and param validation from the generated route map.
9
- * Local `.name` calls are accepted but not validated (scope unknown at type level).
10
- */
11
- type ResponseReverseFunction = [DefaultReverseRouteMap] extends [
12
- Record<string, string>
13
- ] ? (name: string, params?: Record<string, string>, search?: Record<string, unknown>) => string : ReverseFunction<DefaultReverseRouteMap> & {
14
- (name: `.${string}`, params?: Record<string, string>, search?: Record<string, unknown>): string;
15
- };
16
- /**
17
- * Symbol marking a route as a response route (non-RSC).
18
- * Stored on PathOptions and UrlPatterns to signal the trie to short-circuit.
19
- */
20
- export declare const RESPONSE_TYPE: unique symbol;
21
- /**
22
- * Shared shape of a response-route handler: a function returning TReturn (or a
23
- * promise of it), plus an optional composable `use` thunk merged at mount time.
24
- */
25
- type ResponseHandlerOf<TReturn, TParams = Record<string, string>, TEnv = any> = ((ctx: ResponseHandlerContext<TParams, TEnv>) => TReturn | Promise<TReturn>) & {
26
- /** Composable default DSL items merged when the handler is mounted. */
27
- use?: () => UseItems<ResponseRouteUseItem>;
28
- };
29
- /**
30
- * Handler that must return Response (not ReactNode).
31
- * Used by path.image(), path.stream(), path.any() (binary/streaming data).
32
- */
33
- export type ResponseHandler<TParams = Record<string, string>, TEnv = any> = ResponseHandlerOf<Response, TParams, TEnv>;
34
- /**
35
- * JSON-serializable value type for auto-wrap support.
36
- */
37
- export type JsonValue = string | number | boolean | null | JsonValue[] | {
38
- [key: string]: JsonValue;
39
- };
40
- /**
41
- * Handler for JSON response routes.
42
- * Can return a plain JSON-serializable value (auto-wrapped) or Response (pass-through).
43
- */
44
- export type JsonResponseHandler<TParams = Record<string, string>, TEnv = any> = ResponseHandlerOf<JsonValue | Response, TParams, TEnv>;
45
- /**
46
- * Handler for text-based response routes (text, html, xml).
47
- * Can return a string (auto-wrapped) or Response (pass-through).
48
- */
49
- export type TextResponseHandler<TParams = Record<string, string>, TEnv = any> = ResponseHandlerOf<string | Response, TParams, TEnv>;
50
- /**
51
- * Lighter handler context for response routes.
52
- * No ctx.use() (no loaders). Supports setting response headers via ctx.header().
53
- * Use the standalone cookies() function for cookie mutations.
54
- */
55
- export interface ResponseHandlerContext<TParams = Record<string, string>, TEnv = any> extends RequestScope<TEnv> {
56
- params: TParams;
57
- /** @internal Phantom property for params type invariance. Prevents mounting handlers on wrong routes. */
58
- readonly _paramCheck?: (params: TParams) => TParams;
59
- reverse: ResponseReverseFunction;
60
- /** Read a variable set by middleware via ctx.set(key, value) or ctx.set(ContextVar, value). */
61
- get: {
62
- <T>(contextVar: ContextVar<T>): T | undefined;
63
- } & (<K extends keyof DefaultVars>(key: K) => DefaultVars[K]);
64
- /** Set a response header. Merged into the auto-wrapped or pass-through Response. */
65
- header: (name: string, value: string) => void;
66
- }
67
- export {};
@@ -1,157 +0,0 @@
1
- import type { JsonSerialize } from "../serialize.js";
2
- import type { TypedRouteItem, TypedIncludeItem, TypedLayoutItem, TypedCacheItem, TypedTransitionItem } from "../route-types.js";
3
- import type { LocalOnlyInclude, UnnamedRoute } from "./pattern-types.js";
4
- /**
5
- * Prefix route names with a given prefix (e.g., "blog" + "post" = "blog.post")
6
- *
7
- * Filters out plain `string` index signatures to prevent dynamically-generated
8
- * routes from poisoning the route map. When TypeScript encounters very large
9
- * route sets (5000+ routes via Array.from), it may give up computing specific
10
- * types and fall back to Record<string, string>. Without filtering, PrefixRoutes
11
- * would map `string` to `${prefix}.${string}`, creating an index signature that
12
- * accepts ANY prefixed name and defeats type-safe route checking.
13
- *
14
- * Uses `string extends K` (conservative filter):
15
- * - Drops `string` keys (TypeScript fallback) -> prevents `[x: `site.${string}`]`
16
- * - Keeps template literal patterns like `item${number}` from Array.from loops,
17
- * which are imprecise but still allow writing paths like `/shop/product/1`
18
- *
19
- * A more aggressive alternative (`{} extends Record<K, 1>`) would also drop
20
- * template literal patterns. We chose conservative because loop-generated routes
21
- * with `${number}` patterns still provide some value: they don't appear in
22
- * named-routes.gen.ts or IDE autocomplete, but they do let you manually write
23
- * valid paths without type errors.
24
- */
25
- type PrefixRoutes<TRoutes extends Record<string, any>, TPrefix extends string> = TPrefix extends "" ? TRoutes : {
26
- [K in keyof TRoutes as K extends string ? string extends K ? never : `${TPrefix}.${K}` : never]: TRoutes[K];
27
- };
28
- /**
29
- * Prefix route patterns with a URL prefix (e.g., "/blog" + "/:slug" = "/blog/:slug")
30
- */
31
- type PrefixPatterns<TRoutes extends Record<string, any>, TUrlPrefix extends string> = {
32
- [K in keyof TRoutes]: TRoutes[K] extends string ? `${TUrlPrefix}${TRoutes[K]}` : TRoutes[K] extends {
33
- readonly path: infer P extends string;
34
- readonly search: infer S;
35
- } ? {
36
- readonly path: `${TUrlPrefix}${P}`;
37
- readonly search: S;
38
- } : TRoutes[K];
39
- };
40
- /**
41
- * Convert a union type to an intersection type.
42
- * Used to combine route maps from multiple siblings without recursive tuple processing.
43
- */
44
- type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
45
- /**
46
- * Extract routes from a single item (path, include, layout, cache with children)
47
- */
48
- type ExtractRoutesFromItem<T> = T extends TypedRouteItem<infer TName, infer TPattern, any, infer TSearch> ? TName extends string ? string extends TName ? {} : TName extends UnnamedRoute ? {} : {} extends TSearch ? {
49
- [K in TName]: TPattern;
50
- } : {
51
- [K in TName]: {
52
- readonly path: TPattern;
53
- readonly search: TSearch;
54
- };
55
- } : {} : T extends TypedIncludeItem<infer TRoutes, infer TNamePrefix, infer TUrlPrefix> ? TNamePrefix extends LocalOnlyInclude ? {} : TNamePrefix extends string ? TUrlPrefix extends string ? PrefixRoutes<PrefixPatterns<TRoutes, TUrlPrefix>, TNamePrefix> : PrefixRoutes<TRoutes, TNamePrefix> : TUrlPrefix extends string ? PrefixPatterns<TRoutes, TUrlPrefix> : TRoutes : T extends TypedLayoutItem<infer TChildRoutes> ? TChildRoutes : T extends TypedCacheItem<infer TChildRoutes> ? TChildRoutes : T extends TypedTransitionItem<infer TChildRoutes> ? TChildRoutes : {};
56
- /**
57
- * Extract routes from an array of items using mapped types.
58
- * Uses UnionToIntersection to combine routes without recursive tuple processing,
59
- * removing the sibling limit that was caused by TypeScript recursion limits.
60
- */
61
- type ExtractRoutesFromItems<T extends readonly any[]> = T extends readonly any[] ? UnionToIntersection<{
62
- [K in keyof T]: ExtractRoutesFromItem<T[K]>;
63
- }[number]> extends infer R ? [
64
- R
65
- ] extends [never] ? {} : R extends Record<string, any> ? R : {} : {} : {};
66
- /**
67
- * Main utility: extract route map from urls() callback return type
68
- * Uses mapped types for sibling processing (no sibling limit).
69
- */
70
- export type ExtractRoutes<T extends readonly any[]> = ExtractRoutesFromItems<T>;
71
- /**
72
- * Prefix keys of a Record<string, unknown> with a dot-separated prefix.
73
- * Used for response type maps through include().
74
- * Same index signature filter as PrefixRoutes (see comment there).
75
- */
76
- type PrefixKeys<T extends Record<string, unknown>, TPrefix extends string> = TPrefix extends "" ? T : {
77
- [K in keyof T as K extends string ? string extends K ? never : `${TPrefix}.${K}` : never]: T[K];
78
- };
79
- /**
80
- * Extract response data types from a single item.
81
- * Parallel to ExtractRoutesFromItem but extracts name -> TData mapping.
82
- */
83
- type ExtractResponsesFromItem<T> = T extends TypedRouteItem<infer TName, any, infer TData> ? TName extends string ? string extends TName ? {} : TName extends UnnamedRoute ? {} : {
84
- [K in TName]: TData;
85
- } : {} : T extends TypedIncludeItem<any, infer TNamePrefix, any, infer TResponses> ? TNamePrefix extends LocalOnlyInclude ? {} : TNamePrefix extends string ? TResponses extends Record<string, unknown> ? PrefixKeys<TResponses, TNamePrefix> : {} : TResponses extends Record<string, unknown> ? TResponses : {} : T extends TypedLayoutItem<any, infer TChildResponses> ? TChildResponses extends Record<string, unknown> ? TChildResponses : {} : T extends TypedCacheItem<any, infer TChildResponses> ? TChildResponses extends Record<string, unknown> ? TChildResponses : {} : T extends TypedTransitionItem<any, infer TChildResponses> ? TChildResponses extends Record<string, unknown> ? TChildResponses : {} : {};
86
- /**
87
- * Extract responses from an array of items using mapped types.
88
- * Parallel to ExtractRoutesFromItems.
89
- */
90
- type ExtractResponsesFromItems<T extends readonly any[]> = T extends readonly any[] ? UnionToIntersection<{
91
- [K in keyof T]: ExtractResponsesFromItem<T[K]>;
92
- }[number]> extends infer R ? [
93
- R
94
- ] extends [never] ? {} : R extends Record<string, unknown> ? R : {} : {} : {};
95
- /**
96
- * Main utility: extract response data type map from urls() callback return type.
97
- * Parallel to ExtractRoutes.
98
- */
99
- export type ExtractResponses<T extends readonly any[]> = ExtractResponsesFromItems<T>;
100
- /**
101
- * RFC 9457 (problem+json) error body returned by JSON response routes on a
102
- * non-2xx status. Sent verbatim as the response body (not wrapped) with
103
- * content-type `application/problem+json`.
104
- *
105
- * @example
106
- * ```typescript
107
- * const res = await fetch(url);
108
- * if (!res.ok) {
109
- * const problem: ProblemDetails = await res.json();
110
- * console.log(problem.code, problem.detail); // "NOT_FOUND", "Product not found"
111
- * return;
112
- * }
113
- * const product = await res.json(); // bare value, no envelope
114
- * ```
115
- */
116
- export interface ProblemDetails {
117
- /**
118
- * URI reference identifying the problem type. Omitted in this phase (per RFC
119
- * 9457 an absent `type` is treated as `"about:blank"` — no semantics beyond
120
- * the HTTP status); per-route problem-type URIs arrive with the
121
- * declared-errors map later.
122
- */
123
- type?: string;
124
- /** Short, human-readable summary (the HTTP status reason phrase). */
125
- title: string;
126
- /** The HTTP status code. */
127
- status: number;
128
- /** Human-readable explanation specific to this occurrence (the error message). */
129
- detail: string;
130
- /** Stable machine-readable error code (`RouterError.code`, else `"INTERNAL"`). */
131
- code: string;
132
- /** Stack trace, included in development only. */
133
- stack?: string;
134
- }
135
- /**
136
- * Extract the JSON response payload type for a named route from a UrlPatterns
137
- * instance. JSON response routes send the handler's return value verbatim
138
- * (bare), so this resolves to the wire value a consumer receives — no envelope.
139
- *
140
- * @example
141
- * ```typescript
142
- * const apiPatterns = urls(({ path }) => [
143
- * path.json("/health", (ctx) => ({ status: "ok", timestamp: Date.now() }), { name: "health" }),
144
- * ]);
145
- *
146
- * type HealthData = RouteResponse<typeof apiPatterns, "health">;
147
- * // { status: string; timestamp: number }
148
- * ```
149
- *
150
- * The payload is the JSON wire shape (via `Rango.JsonSerialize`), matching
151
- * `Rango.PathResponse` and what `fetch().then(r => r.json())` actually yields —
152
- * e.g. a `Date` field resolves as `string`.
153
- */
154
- export type RouteResponse<TPatterns, TName extends string> = TPatterns extends {
155
- readonly _responses?: infer R;
156
- } ? TName extends keyof R ? JsonSerialize<Exclude<R[TName], Response>> : never : never;
157
- export {};
@@ -1,24 +0,0 @@
1
- import type { DefaultEnv } from "../types.js";
2
- import type { AllUseItems } from "../route-types.js";
3
- import type { UrlPatterns } from "./pattern-types.js";
4
- import type { PathHelpers } from "./path-helper-types.js";
5
- import type { ExtractRoutes, ExtractResponses } from "./type-extraction.js";
6
- /**
7
- * Define URL patterns with Django-inspired syntax
8
- *
9
- * Replaces map() as the entry point for route definitions.
10
- * URL patterns are now visible at the definition site via path().
11
- *
12
- * @example
13
- * ```typescript
14
- * export const blogPatterns = urls(({ path, layout, loader }) => [
15
- * layout(BlogLayout, () => [
16
- * path("/", BlogIndex, { name: "index" }),
17
- * path("/:slug", BlogPost, { name: "post" }, () => [
18
- * loader(PostLoader),
19
- * ]),
20
- * ]),
21
- * ]);
22
- * ```
23
- */
24
- export declare function urls<TEnv = DefaultEnv, const TItems extends readonly (AllUseItems | readonly AllUseItems[])[] = readonly AllUseItems[]>(builder: (helpers: PathHelpers<TEnv>) => TItems): UrlPatterns<TEnv, ExtractRoutes<TItems>, ExtractResponses<TItems>>;
@@ -1 +0,0 @@
1
- export * from "./urls/index.js";
@@ -1,150 +0,0 @@
1
- import type { LoaderDefinition, LoadOptions } from "./types.js";
2
- export type LoadFunction<T> = (options?: LoadOptions) => Promise<T>;
3
- export interface UseLoaderResult<T> {
4
- data: T;
5
- isLoading: boolean;
6
- error: Error | null;
7
- load: LoadFunction<T>;
8
- refetch: LoadFunction<T>;
9
- }
10
- export interface UseFetchLoaderResult<T> {
11
- data: T | undefined;
12
- isLoading: boolean;
13
- error: Error | null;
14
- load: LoadFunction<T>;
15
- refetch: LoadFunction<T>;
16
- }
17
- export interface UseLoaderOptions {
18
- throwOnError?: boolean;
19
- key?: string;
20
- refreshGroup?: string | string[];
21
- }
22
- /**
23
- * Hook to access loader data from route context (strict version)
24
- *
25
- * Use this when the loader is registered on the route via `loader()`.
26
- * The data is guaranteed to exist - throws an error if not found.
27
- *
28
- * For on-demand fetching or when loader might not be in context,
29
- * use `useFetchLoader` instead.
30
- *
31
- * @param loader - The loader definition (must be registered on route)
32
- * @param options - Optional configuration
33
- * @returns Object with data (guaranteed), isLoading, error, load, and refetch
34
- * @throws Error if loader data is not found in context
35
- *
36
- * @example Basic usage - accessing route loader data
37
- * ```tsx
38
- * "use client";
39
- * import { useLoader } from "rsc-router/client";
40
- * import { CartLoader } from "../loaders/cart";
41
- *
42
- * // In route definition: loader(CartLoader)
43
- *
44
- * export function CartIcon() {
45
- * const { data } = useLoader(CartLoader);
46
- * // data is guaranteed to be CartData, not CartData | undefined
47
- * return <span>Cart ({data.items.length})</span>;
48
- * }
49
- * ```
50
- */
51
- export declare function useLoader<T>(loader: LoaderDefinition<T>, options?: UseLoaderOptions): UseLoaderResult<Rango.FlightSerialize<T>>;
52
- /**
53
- * Hook to access loader data with optional fetching (flexible version)
54
- *
55
- * Use this when:
56
- * - The loader might not be registered on the route
57
- * - You want to fetch data on-demand from the client
58
- * - You're building a reusable component that doesn't assume route context
59
- *
60
- * If the loader IS registered on the route, it will still get the initial
61
- * data from context - you just have to handle the `undefined` case in types.
62
- *
63
- * @param loader - The loader definition
64
- * @param options - Optional configuration
65
- * @returns Object with data (may be undefined), isLoading, error, load, and refetch
66
- *
67
- * @example On-demand fetching
68
- * ```tsx
69
- * "use client";
70
- * import { useFetchLoader } from "rsc-router/client";
71
- * import { SearchLoader } from "../loaders/search";
72
- *
73
- * export function SearchResults() {
74
- * const { data, load, isLoading } = useFetchLoader(SearchLoader);
75
- *
76
- * const handleSearch = async (query: string) => {
77
- * await load({ params: { query } });
78
- * };
79
- *
80
- * return (
81
- * <div>
82
- * <button onClick={() => handleSearch("test")}>Search</button>
83
- * {isLoading && <span>Loading...</span>}
84
- * {data?.results.map(r => <div key={r.id}>{r.name}</div>)}
85
- * </div>
86
- * );
87
- * }
88
- * ```
89
- *
90
- * @example With route context (hybrid usage)
91
- * ```tsx
92
- * // Loader registered on route: loader(UserLoader)
93
- * // useFetchLoader still works - gets initial data from context
94
- * const { data, load } = useFetchLoader(UserLoader);
95
- * // data is UserData | undefined (even though it will have initial value)
96
- * ```
97
- */
98
- export declare function useFetchLoader<T>(loader: LoaderDefinition<T>, options?: UseLoaderOptions): UseFetchLoaderResult<Rango.FlightSerialize<T>>;
99
- /**
100
- * Get a stable function that refreshes loaders by cross-loader group tag.
101
- *
102
- * The returned `refresh(groups)` takes one group name or an array of names and
103
- * re-runs every currently-mounted read tagged with ANY of them, with a plain GET
104
- * against the current route URL. This is the cross-loader counterpart to the
105
- * single-loader `key`: use it to refresh a set of DIFFERENT loaders together
106
- * (e.g. profile + orders after an account switch). Members are tagged via
107
- * `useLoader(Loader, { refreshGroup })` / `useFetchLoader(Loader, { refreshGroup })`,
108
- * where `refreshGroup` is one name or several.
109
- *
110
- * Passing the group(s) to the returned function rather than to the hook lets a
111
- * single `useRefreshLoaders()` instance refresh different groups depending on
112
- * context, and lets one call refresh several groups at once — their members are
113
- * unioned and deduped, so a loader tagged into two of the named groups is fetched
114
- * exactly once.
115
- *
116
- * Group refresh never render-throws: a failing member surfaces its error via
117
- * that read's `error` state, and the returned promise rejects with an
118
- * `AggregateError` of the failures so the caller can handle them at the await
119
- * site. Each loader is refreshed in place — no params, no body, no mutations.
120
- *
121
- * @example
122
- * ```tsx
123
- * "use client";
124
- * import { useLoader, useRefreshLoaders } from "rsc-router/client";
125
- *
126
- * function Profile() {
127
- * const { data } = useLoader(ProfileLoader, { key: userId, refreshGroup: "account" });
128
- * return <span>{data.name}</span>;
129
- * }
130
- * function Orders() {
131
- * // Tagged into two groups: refreshed by "account" (the whole set) or "orders".
132
- * const { data } = useLoader(OrdersLoader, {
133
- * key: userId,
134
- * refreshGroup: ["account", "orders"],
135
- * });
136
- * return <span>{data.count} orders</span>;
137
- * }
138
- * function RefreshButtons() {
139
- * const refresh = useRefreshLoaders();
140
- * return (
141
- * <>
142
- * <button onClick={() => refresh("account")}>Refresh account</button>
143
- * <button onClick={() => refresh("orders")}>Refresh orders</button>
144
- * <button onClick={() => refresh(["account", "orders"])}>Refresh both</button>
145
- * </>
146
- * );
147
- * }
148
- * ```
149
- */
150
- export declare function useRefreshLoaders(): (groups: string | string[]) => Promise<void>;
@@ -1,10 +0,0 @@
1
- /**
2
- * Vercel preset integration surface for @rangojs/router.
3
- *
4
- * Imported via `@rangojs/router/vercel`. Vercel-only helpers live here so
5
- * Node/other-platform consumers never pull them in. The Vercel cache store
6
- * (`VercelCacheStore`) is exported from `@rangojs/router/cache`, mirroring the
7
- * Cloudflare split where the store lives in `/cache` and the tracing helper in
8
- * the platform subpath.
9
- */
10
- export { createVercelTracing, type VercelTracingOptions } from "./tracing.js";
@@ -1,70 +0,0 @@
1
- /**
2
- * Vercel OpenTelemetry tracing integration.
3
- *
4
- * Bridges the router's performance phases (request, middleware, action,
5
- * loaders, handler, render, ssr) onto OpenTelemetry spans so they show up in
6
- * Vercel's trace waterfall next to the platform's automatic spans, with correct
7
- * nesting. Vercel exposes tracing through OpenTelemetry (not a native import-free
8
- * API like Cloudflare), so this is a thin convenience over `createOTelTracing`:
9
- * it reads the global OTel tracer that `@vercel/otel`'s `registerOTel()` installs.
10
- *
11
- * Usage (vercel preset). A Rango/Vite app does NOT auto-load `instrumentation.ts`
12
- * the way Next.js does, so export the tracing config from there and import it —
13
- * the import is what runs `registerOTel()`. A standalone `registerOTel()` that
14
- * nothing imports is a silent no-op (the tracer never registers, spans drop):
15
- *
16
- * // instrumentation.ts
17
- * import { registerOTel } from "@vercel/otel";
18
- * import { createVercelTracing } from "@rangojs/router/vercel";
19
- * registerOTel({ serviceName: "my-app" });
20
- * export const tracing = createVercelTracing();
21
- *
22
- * // router.tsx — importing `tracing` runs instrumentation.ts (and registerOTel)
23
- * import { createRouter } from "@rangojs/router";
24
- * import { tracing } from "./instrumentation.js";
25
- * export const router = createRouter({ tracing });
26
- *
27
- * Two runtime caveats inherited from the platform:
28
- * - Node.js runtime only. Vercel custom spans are unsupported on the Edge
29
- * runtime; `startActiveSpan` also needs an AsyncLocalStorage context manager
30
- * (which @vercel/otel configures on Node) for spans to nest correctly.
31
- * - `registerOTel()` must run before the first request. Reading the tracer via
32
- * `trace.getTracer` here is safe even if it runs first — the API's proxy
33
- * tracer delegates to the provider once registered — but no provider means
34
- * every span is a no-op (the request behaves exactly as if tracing were off).
35
- *
36
- * Whether spans are actually exported is governed by your OTel setup / Vercel
37
- * tracing destination, not by this adapter.
38
- */
39
- import { type OTelActiveSpanTracer } from "../router/telemetry-otel.js";
40
- import type { RouterTracingConfig, TracingToggleOptions } from "../router/tracing.js";
41
- /**
42
- * Options for createVercelTracing. Extends the shared
43
- * {@link TracingToggleOptions} (`enabled` + per-phase `spans`) with the
44
- * Vercel-specific tracer selectors.
45
- */
46
- export interface VercelTracingOptions extends TracingToggleOptions {
47
- /**
48
- * OTel instrumentation-scope name passed to `trace.getTracer()`. Defaults to
49
- * `"rango"`. Ignored when `tracer` is provided.
50
- */
51
- tracerName?: string;
52
- /**
53
- * Explicit tracer override. Defaults to the global OTel tracer
54
- * (`trace.getTracer(tracerName)`) — the provider `@vercel/otel`'s
55
- * `registerOTel()` installs. Pass this to bridge onto a tracer you own.
56
- */
57
- tracer?: OTelActiveSpanTracer;
58
- }
59
- /**
60
- * Create the tracing config for a Vercel router. Pass the result to
61
- * `createRouter({ tracing })`. Spans are emitted for the request, middleware,
62
- * action, loaders, handler, render, and ssr phases; pass `spans` to turn
63
- * individual phases off.
64
- *
65
- * @see createOTelTracing (`@rangojs/router`) for the underlying adapter on any
66
- * platform with an OpenTelemetry SDK.
67
- * @see createCloudflareTracing (`@rangojs/router/cloudflare`) for the same slot
68
- * using Cloudflare Workers native custom spans.
69
- */
70
- export declare function createVercelTracing(options?: VercelTracingOptions): RouterTracingConfig;