@rangojs/router 0.0.0-experimental.760a71d9 → 0.0.0-experimental.77ed8945

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 (1060) hide show
  1. package/README.md +196 -43
  2. package/dist/bin/rango.js +269 -96
  3. package/dist/vite/index.js +2629 -908
  4. package/dist/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  5. package/package.json +13 -8
  6. package/skills/api-client/SKILL.md +211 -0
  7. package/skills/breadcrumbs/SKILL.md +3 -1
  8. package/skills/bundle-analysis/SKILL.md +159 -0
  9. package/skills/cache-guide/SKILL.md +243 -21
  10. package/skills/caching/SKILL.md +118 -2
  11. package/skills/composability/SKILL.md +27 -2
  12. package/skills/css/SKILL.md +76 -0
  13. package/skills/document-cache/SKILL.md +78 -55
  14. package/skills/handler-use/SKILL.md +364 -0
  15. package/skills/hooks/SKILL.md +229 -20
  16. package/skills/host-router/SKILL.md +66 -20
  17. package/skills/i18n/SKILL.md +276 -0
  18. package/skills/intercept/SKILL.md +46 -4
  19. package/skills/layout/SKILL.md +28 -7
  20. package/skills/links/SKILL.md +249 -17
  21. package/skills/loader/SKILL.md +273 -53
  22. package/skills/middleware/SKILL.md +49 -12
  23. package/skills/migrate-nextjs/SKILL.md +562 -0
  24. package/skills/migrate-react-router/SKILL.md +769 -0
  25. package/skills/mime-routes/SKILL.md +27 -0
  26. package/skills/observability/SKILL.md +137 -0
  27. package/skills/parallel/SKILL.md +138 -6
  28. package/skills/prerender/SKILL.md +123 -100
  29. package/skills/rango/SKILL.md +238 -22
  30. package/skills/react-compiler/SKILL.md +168 -0
  31. package/skills/response-routes/SKILL.md +122 -47
  32. package/skills/route/SKILL.md +88 -4
  33. package/skills/router-setup/SKILL.md +90 -5
  34. package/skills/server-actions/SKILL.md +751 -0
  35. package/skills/streams-and-websockets/SKILL.md +283 -0
  36. package/skills/tailwind/SKILL.md +27 -3
  37. package/skills/typesafety/SKILL.md +329 -27
  38. package/skills/use-cache/SKILL.md +34 -5
  39. package/skills/view-transitions/SKILL.md +294 -0
  40. package/src/__augment-tests__/augment.ts +81 -0
  41. package/src/__augment-tests__/augmented.check.ts +116 -0
  42. package/src/__internal.ts +1 -1
  43. package/src/browser/action-coordinator.ts +53 -36
  44. package/src/browser/app-shell.ts +39 -0
  45. package/src/browser/app-version.ts +14 -0
  46. package/src/browser/event-controller.ts +86 -70
  47. package/src/browser/history-state.ts +21 -0
  48. package/src/browser/index.ts +3 -3
  49. package/src/browser/navigation-bridge.ts +52 -13
  50. package/src/browser/navigation-client.ts +159 -85
  51. package/src/browser/navigation-store.ts +50 -16
  52. package/src/browser/navigation-transaction.ts +10 -28
  53. package/src/browser/partial-update.ts +77 -30
  54. package/src/browser/prefetch/cache.ts +201 -44
  55. package/src/browser/prefetch/fetch.ts +245 -39
  56. package/src/browser/prefetch/queue.ts +92 -29
  57. package/src/browser/prefetch/resource-ready.ts +77 -0
  58. package/src/browser/rango-state.ts +37 -13
  59. package/src/browser/react/Link.tsx +72 -8
  60. package/src/browser/react/NavigationProvider.tsx +86 -33
  61. package/src/browser/react/context.ts +7 -2
  62. package/src/browser/react/filter-segment-order.ts +51 -7
  63. package/src/browser/react/index.ts +3 -0
  64. package/src/browser/react/location-state-shared.ts +175 -4
  65. package/src/browser/react/location-state.ts +39 -13
  66. package/src/browser/react/use-handle.ts +23 -64
  67. package/src/browser/react/use-navigation.ts +22 -2
  68. package/src/browser/react/use-params.ts +20 -8
  69. package/src/browser/react/use-reverse.ts +106 -0
  70. package/src/browser/react/use-router.ts +44 -10
  71. package/src/browser/react/use-segments.ts +11 -8
  72. package/src/browser/response-adapter.ts +52 -1
  73. package/src/browser/rsc-router.tsx +94 -22
  74. package/src/browser/scroll-restoration.ts +29 -19
  75. package/src/browser/segment-reconciler.ts +36 -14
  76. package/src/browser/segment-structure-assert.ts +2 -2
  77. package/src/browser/server-action-bridge.ts +52 -36
  78. package/src/browser/types.ts +37 -5
  79. package/src/build/collect-fallback-refs.ts +107 -0
  80. package/src/build/generate-manifest.ts +65 -40
  81. package/src/build/generate-route-types.ts +5 -0
  82. package/src/build/index.ts +8 -1
  83. package/src/build/prefix-tree-utils.ts +123 -0
  84. package/src/build/route-trie.ts +95 -25
  85. package/src/build/route-types/codegen.ts +4 -4
  86. package/src/build/route-types/include-resolution.ts +9 -2
  87. package/src/build/route-types/per-module-writer.ts +7 -4
  88. package/src/build/route-types/router-processing.ts +266 -86
  89. package/src/build/route-types/scan-filter.ts +9 -2
  90. package/src/build/route-types/source-scan.ts +118 -0
  91. package/src/build/runtime-discovery.ts +9 -20
  92. package/src/cache/cache-runtime.ts +17 -5
  93. package/src/cache/cache-scope.ts +97 -54
  94. package/src/cache/cf/cf-cache-store.ts +502 -32
  95. package/src/cache/cf/index.ts +3 -0
  96. package/src/cache/handle-snapshot.ts +103 -0
  97. package/src/cache/index.ts +3 -0
  98. package/src/cache/memory-segment-store.ts +3 -2
  99. package/src/cache/taint.ts +55 -0
  100. package/src/cache/types.ts +10 -6
  101. package/src/client.rsc.tsx +3 -0
  102. package/src/client.tsx +98 -261
  103. package/src/context-var.ts +72 -2
  104. package/src/decode-loader-results.ts +36 -0
  105. package/src/errors.ts +30 -4
  106. package/src/handle.ts +43 -5
  107. package/src/host/index.ts +2 -2
  108. package/src/host/router.ts +129 -57
  109. package/src/host/types.ts +31 -2
  110. package/src/host/utils.ts +1 -1
  111. package/src/href-client.ts +140 -21
  112. package/src/index.rsc.ts +13 -7
  113. package/src/index.ts +62 -13
  114. package/src/loader-store.ts +500 -0
  115. package/src/loader.rsc.ts +2 -5
  116. package/src/loader.ts +3 -10
  117. package/src/missing-id-error.ts +68 -0
  118. package/src/outlet-context.ts +1 -1
  119. package/src/prerender/store.ts +14 -11
  120. package/src/prerender.ts +141 -80
  121. package/src/response-utils.ts +37 -0
  122. package/src/reverse.ts +65 -15
  123. package/src/route-content-wrapper.tsx +6 -28
  124. package/src/route-definition/dsl-helpers.ts +411 -261
  125. package/src/route-definition/helper-factories.ts +29 -139
  126. package/src/route-definition/helpers-types.ts +110 -34
  127. package/src/route-definition/index.ts +3 -0
  128. package/src/route-definition/redirect.ts +9 -1
  129. package/src/route-definition/resolve-handler-use.ts +155 -0
  130. package/src/route-definition/use-item-types.ts +32 -0
  131. package/src/route-types.ts +37 -41
  132. package/src/router/content-negotiation.ts +113 -1
  133. package/src/router/error-handling.ts +1 -1
  134. package/src/router/find-match.ts +54 -6
  135. package/src/router/handler-context.ts +77 -38
  136. package/src/router/intercept-resolution.ts +13 -22
  137. package/src/router/lazy-includes.ts +41 -22
  138. package/src/router/loader-resolution.ts +203 -22
  139. package/src/router/manifest.ts +41 -19
  140. package/src/router/match-api.ts +128 -192
  141. package/src/router/match-handlers.ts +1 -0
  142. package/src/router/match-middleware/background-revalidation.ts +12 -1
  143. package/src/router/match-middleware/cache-lookup.ts +95 -106
  144. package/src/router/match-middleware/cache-store.ts +22 -4
  145. package/src/router/match-middleware/segment-resolution.ts +53 -0
  146. package/src/router/match-result.ts +103 -4
  147. package/src/router/metrics.ts +1 -1
  148. package/src/router/middleware-types.ts +21 -34
  149. package/src/router/middleware.ts +101 -89
  150. package/src/router/navigation-snapshot.ts +182 -0
  151. package/src/router/pattern-matching.ts +116 -19
  152. package/src/router/prerender-match.ts +147 -22
  153. package/src/router/preview-match.ts +32 -102
  154. package/src/router/request-classification.ts +313 -0
  155. package/src/router/revalidation.ts +58 -2
  156. package/src/router/route-snapshot.ts +245 -0
  157. package/src/router/router-context.ts +1 -0
  158. package/src/router/router-interfaces.ts +83 -35
  159. package/src/router/router-options.ts +61 -11
  160. package/src/router/router-registry.ts +2 -5
  161. package/src/router/segment-resolution/fresh.ts +105 -13
  162. package/src/router/segment-resolution/helpers.ts +29 -24
  163. package/src/router/segment-resolution/revalidation.ts +236 -112
  164. package/src/router/segment-resolution/static-store.ts +19 -5
  165. package/src/router/segment-resolution/view-transition-default.ts +36 -0
  166. package/src/router/substitute-pattern-params.ts +56 -0
  167. package/src/router/trie-matching.ts +40 -16
  168. package/src/router/types.ts +9 -0
  169. package/src/router/url-params.ts +49 -0
  170. package/src/router.ts +90 -29
  171. package/src/rsc/handler-context.ts +2 -2
  172. package/src/rsc/handler.ts +461 -380
  173. package/src/rsc/helpers.ts +72 -43
  174. package/src/rsc/index.ts +1 -1
  175. package/src/rsc/loader-fetch.ts +23 -3
  176. package/src/rsc/manifest-init.ts +33 -42
  177. package/src/rsc/origin-guard.ts +30 -10
  178. package/src/rsc/progressive-enhancement.ts +18 -2
  179. package/src/rsc/response-error.ts +79 -12
  180. package/src/rsc/response-route-handler.ts +76 -61
  181. package/src/rsc/rsc-rendering.ts +51 -48
  182. package/src/rsc/runtime-warnings.ts +9 -10
  183. package/src/rsc/server-action.ts +41 -39
  184. package/src/rsc/ssr-setup.ts +18 -2
  185. package/src/rsc/types.ts +17 -3
  186. package/src/search-params.ts +4 -4
  187. package/src/segment-content-promise.ts +67 -0
  188. package/src/segment-loader-promise.ts +122 -0
  189. package/src/segment-system.tsx +132 -116
  190. package/src/serialize.ts +243 -0
  191. package/src/server/context.ts +222 -51
  192. package/src/server/cookie-store.ts +28 -4
  193. package/src/server/handle-store.ts +19 -0
  194. package/src/server/loader-registry.ts +9 -8
  195. package/src/server/request-context.ts +223 -57
  196. package/src/ssr/index.tsx +8 -1
  197. package/src/static-handler.ts +19 -7
  198. package/src/types/cache-types.ts +4 -4
  199. package/src/types/global-namespace.ts +39 -26
  200. package/src/types/handler-context.ts +103 -67
  201. package/src/types/index.ts +1 -0
  202. package/src/types/loader-types.ts +44 -15
  203. package/src/types/request-scope.ts +126 -0
  204. package/src/types/route-entry.ts +12 -1
  205. package/src/types/segments.ts +36 -2
  206. package/src/urls/include-helper.ts +34 -67
  207. package/src/urls/index.ts +1 -5
  208. package/src/urls/path-helper-types.ts +56 -9
  209. package/src/urls/path-helper.ts +63 -63
  210. package/src/urls/pattern-types.ts +48 -19
  211. package/src/urls/response-types.ts +25 -22
  212. package/src/urls/type-extraction.ts +58 -139
  213. package/src/urls/urls-function.ts +1 -5
  214. package/src/use-loader.tsx +487 -44
  215. package/src/vite/debug.ts +185 -0
  216. package/src/vite/discovery/bundle-postprocess.ts +34 -37
  217. package/src/vite/discovery/discover-routers.ts +110 -75
  218. package/src/vite/discovery/discovery-errors.ts +194 -0
  219. package/src/vite/discovery/gate-state.ts +171 -0
  220. package/src/vite/discovery/prerender-collection.ts +193 -98
  221. package/src/vite/discovery/route-types-writer.ts +40 -84
  222. package/src/vite/discovery/self-gen-tracking.ts +27 -1
  223. package/src/vite/discovery/state.ts +46 -4
  224. package/src/vite/discovery/virtual-module-codegen.ts +13 -23
  225. package/src/vite/index.ts +6 -0
  226. package/src/vite/plugin-types.ts +126 -4
  227. package/src/vite/plugins/cjs-to-esm.ts +8 -7
  228. package/src/vite/plugins/client-ref-dedup.ts +16 -0
  229. package/src/vite/plugins/client-ref-hashing.ts +28 -5
  230. package/src/vite/plugins/cloudflare-protocol-loader-hook.d.mts +23 -0
  231. package/src/vite/plugins/cloudflare-protocol-loader-hook.mjs +76 -0
  232. package/src/vite/plugins/cloudflare-protocol-stub.ts +214 -0
  233. package/src/vite/plugins/expose-action-id.ts +54 -30
  234. package/src/vite/plugins/expose-id-utils.ts +24 -8
  235. package/src/vite/plugins/expose-ids/export-analysis.ts +100 -20
  236. package/src/vite/plugins/expose-ids/handler-transform.ts +12 -35
  237. package/src/vite/plugins/expose-ids/loader-transform.ts +3 -5
  238. package/src/vite/plugins/expose-ids/router-transform.ts +20 -3
  239. package/src/vite/plugins/expose-internal-ids.ts +544 -317
  240. package/src/vite/plugins/performance-tracks.ts +92 -0
  241. package/src/vite/plugins/refresh-cmd.ts +88 -26
  242. package/src/vite/plugins/use-cache-transform.ts +65 -50
  243. package/src/vite/plugins/version-injector.ts +39 -23
  244. package/src/vite/plugins/version-plugin.ts +59 -2
  245. package/src/vite/plugins/virtual-entries.ts +2 -2
  246. package/src/vite/rango.ts +130 -26
  247. package/src/vite/router-discovery.ts +923 -133
  248. package/src/vite/utils/ast-handler-extract.ts +15 -15
  249. package/src/vite/utils/banner.ts +1 -1
  250. package/src/vite/utils/bundle-analysis.ts +4 -2
  251. package/src/vite/utils/client-chunks.ts +190 -0
  252. package/src/vite/utils/forward-user-plugins.ts +193 -0
  253. package/src/vite/utils/manifest-utils.ts +8 -59
  254. package/src/vite/utils/package-resolution.ts +41 -1
  255. package/src/vite/utils/prerender-utils.ts +38 -5
  256. package/src/vite/utils/shared-utils.ts +109 -27
  257. package/dist/__internal.d.ts +0 -83
  258. package/dist/__internal.d.ts.map +0 -1
  259. package/dist/__internal.js +0 -19
  260. package/dist/__internal.js.map +0 -1
  261. package/dist/__mocks__/version.d.ts +0 -7
  262. package/dist/__mocks__/version.d.ts.map +0 -1
  263. package/dist/__mocks__/version.js +0 -7
  264. package/dist/__mocks__/version.js.map +0 -1
  265. package/dist/__tests__/client-href.test.d.ts +0 -2
  266. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  267. package/dist/__tests__/client-href.test.js +0 -74
  268. package/dist/__tests__/client-href.test.js.map +0 -1
  269. package/dist/__tests__/component-utils.test.d.ts +0 -2
  270. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  271. package/dist/__tests__/component-utils.test.js +0 -51
  272. package/dist/__tests__/component-utils.test.js.map +0 -1
  273. package/dist/__tests__/event-controller.test.d.ts +0 -2
  274. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  275. package/dist/__tests__/event-controller.test.js +0 -538
  276. package/dist/__tests__/event-controller.test.js.map +0 -1
  277. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  278. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  279. package/dist/__tests__/helpers/route-tree.js +0 -374
  280. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  281. package/dist/__tests__/match-result.test.d.ts +0 -2
  282. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  283. package/dist/__tests__/match-result.test.js +0 -154
  284. package/dist/__tests__/match-result.test.js.map +0 -1
  285. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  286. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  287. package/dist/__tests__/navigation-store.test.js +0 -440
  288. package/dist/__tests__/navigation-store.test.js.map +0 -1
  289. package/dist/__tests__/partial-update.test.d.ts +0 -2
  290. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  291. package/dist/__tests__/partial-update.test.js +0 -1009
  292. package/dist/__tests__/partial-update.test.js.map +0 -1
  293. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  294. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  295. package/dist/__tests__/reverse-types.test.js +0 -656
  296. package/dist/__tests__/reverse-types.test.js.map +0 -1
  297. package/dist/__tests__/route-definition.test.d.ts +0 -2
  298. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  299. package/dist/__tests__/route-definition.test.js +0 -55
  300. package/dist/__tests__/route-definition.test.js.map +0 -1
  301. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  302. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  303. package/dist/__tests__/router-helpers.test.js +0 -377
  304. package/dist/__tests__/router-helpers.test.js.map +0 -1
  305. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  306. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  307. package/dist/__tests__/router-integration-2.test.js +0 -426
  308. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  309. package/dist/__tests__/router-integration.test.d.ts +0 -2
  310. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  311. package/dist/__tests__/router-integration.test.js +0 -1051
  312. package/dist/__tests__/router-integration.test.js.map +0 -1
  313. package/dist/__tests__/search-params.test.d.ts +0 -5
  314. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  315. package/dist/__tests__/search-params.test.js +0 -306
  316. package/dist/__tests__/search-params.test.js.map +0 -1
  317. package/dist/__tests__/segment-system.test.d.ts +0 -2
  318. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  319. package/dist/__tests__/segment-system.test.js +0 -627
  320. package/dist/__tests__/segment-system.test.js.map +0 -1
  321. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  322. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  323. package/dist/__tests__/static-handler-types.test.js +0 -63
  324. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  325. package/dist/__tests__/urls.test.d.ts +0 -2
  326. package/dist/__tests__/urls.test.d.ts.map +0 -1
  327. package/dist/__tests__/urls.test.js +0 -421
  328. package/dist/__tests__/urls.test.js.map +0 -1
  329. package/dist/__tests__/use-mount.test.d.ts +0 -2
  330. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  331. package/dist/__tests__/use-mount.test.js +0 -35
  332. package/dist/__tests__/use-mount.test.js.map +0 -1
  333. package/dist/bin/rango.d.ts +0 -2
  334. package/dist/bin/rango.d.ts.map +0 -1
  335. package/dist/bin/rango.js.map +0 -1
  336. package/dist/browser/event-controller.d.ts +0 -191
  337. package/dist/browser/event-controller.d.ts.map +0 -1
  338. package/dist/browser/event-controller.js +0 -559
  339. package/dist/browser/event-controller.js.map +0 -1
  340. package/dist/browser/index.d.ts +0 -2
  341. package/dist/browser/index.d.ts.map +0 -1
  342. package/dist/browser/index.js +0 -14
  343. package/dist/browser/index.js.map +0 -1
  344. package/dist/browser/link-interceptor.d.ts +0 -38
  345. package/dist/browser/link-interceptor.d.ts.map +0 -1
  346. package/dist/browser/link-interceptor.js +0 -99
  347. package/dist/browser/link-interceptor.js.map +0 -1
  348. package/dist/browser/logging.d.ts +0 -10
  349. package/dist/browser/logging.d.ts.map +0 -1
  350. package/dist/browser/logging.js +0 -29
  351. package/dist/browser/logging.js.map +0 -1
  352. package/dist/browser/lru-cache.d.ts +0 -17
  353. package/dist/browser/lru-cache.d.ts.map +0 -1
  354. package/dist/browser/lru-cache.js +0 -50
  355. package/dist/browser/lru-cache.js.map +0 -1
  356. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  357. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  358. package/dist/browser/merge-segment-loaders.js +0 -102
  359. package/dist/browser/merge-segment-loaders.js.map +0 -1
  360. package/dist/browser/navigation-bridge.d.ts +0 -102
  361. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  362. package/dist/browser/navigation-bridge.js +0 -708
  363. package/dist/browser/navigation-bridge.js.map +0 -1
  364. package/dist/browser/navigation-client.d.ts +0 -25
  365. package/dist/browser/navigation-client.d.ts.map +0 -1
  366. package/dist/browser/navigation-client.js +0 -157
  367. package/dist/browser/navigation-client.js.map +0 -1
  368. package/dist/browser/navigation-store.d.ts +0 -101
  369. package/dist/browser/navigation-store.d.ts.map +0 -1
  370. package/dist/browser/navigation-store.js +0 -625
  371. package/dist/browser/navigation-store.js.map +0 -1
  372. package/dist/browser/partial-update.d.ts +0 -75
  373. package/dist/browser/partial-update.d.ts.map +0 -1
  374. package/dist/browser/partial-update.js +0 -426
  375. package/dist/browser/partial-update.js.map +0 -1
  376. package/dist/browser/react/Link.d.ts +0 -86
  377. package/dist/browser/react/Link.d.ts.map +0 -1
  378. package/dist/browser/react/Link.js +0 -128
  379. package/dist/browser/react/Link.js.map +0 -1
  380. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  381. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  382. package/dist/browser/react/NavigationProvider.js +0 -216
  383. package/dist/browser/react/NavigationProvider.js.map +0 -1
  384. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  385. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  386. package/dist/browser/react/ScrollRestoration.js +0 -57
  387. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  388. package/dist/browser/react/context.d.ts +0 -46
  389. package/dist/browser/react/context.d.ts.map +0 -1
  390. package/dist/browser/react/context.js +0 -10
  391. package/dist/browser/react/context.js.map +0 -1
  392. package/dist/browser/react/index.d.ts +0 -11
  393. package/dist/browser/react/index.d.ts.map +0 -1
  394. package/dist/browser/react/index.js +0 -22
  395. package/dist/browser/react/index.js.map +0 -1
  396. package/dist/browser/react/location-state-shared.d.ts +0 -63
  397. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  398. package/dist/browser/react/location-state-shared.js +0 -81
  399. package/dist/browser/react/location-state-shared.js.map +0 -1
  400. package/dist/browser/react/location-state.d.ts +0 -23
  401. package/dist/browser/react/location-state.d.ts.map +0 -1
  402. package/dist/browser/react/location-state.js +0 -29
  403. package/dist/browser/react/location-state.js.map +0 -1
  404. package/dist/browser/react/mount-context.d.ts +0 -24
  405. package/dist/browser/react/mount-context.d.ts.map +0 -1
  406. package/dist/browser/react/mount-context.js +0 -24
  407. package/dist/browser/react/mount-context.js.map +0 -1
  408. package/dist/browser/react/use-action.d.ts +0 -64
  409. package/dist/browser/react/use-action.d.ts.map +0 -1
  410. package/dist/browser/react/use-action.js +0 -134
  411. package/dist/browser/react/use-action.js.map +0 -1
  412. package/dist/browser/react/use-client-cache.d.ts +0 -41
  413. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  414. package/dist/browser/react/use-client-cache.js +0 -39
  415. package/dist/browser/react/use-client-cache.js.map +0 -1
  416. package/dist/browser/react/use-handle.d.ts +0 -31
  417. package/dist/browser/react/use-handle.d.ts.map +0 -1
  418. package/dist/browser/react/use-handle.js +0 -144
  419. package/dist/browser/react/use-handle.js.map +0 -1
  420. package/dist/browser/react/use-href.d.ts +0 -33
  421. package/dist/browser/react/use-href.d.ts.map +0 -1
  422. package/dist/browser/react/use-href.js +0 -39
  423. package/dist/browser/react/use-href.js.map +0 -1
  424. package/dist/browser/react/use-link-status.d.ts +0 -37
  425. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  426. package/dist/browser/react/use-link-status.js +0 -99
  427. package/dist/browser/react/use-link-status.js.map +0 -1
  428. package/dist/browser/react/use-mount.d.ts +0 -25
  429. package/dist/browser/react/use-mount.d.ts.map +0 -1
  430. package/dist/browser/react/use-mount.js +0 -30
  431. package/dist/browser/react/use-mount.js.map +0 -1
  432. package/dist/browser/react/use-navigation.d.ts +0 -27
  433. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  434. package/dist/browser/react/use-navigation.js +0 -87
  435. package/dist/browser/react/use-navigation.js.map +0 -1
  436. package/dist/browser/react/use-segments.d.ts +0 -38
  437. package/dist/browser/react/use-segments.d.ts.map +0 -1
  438. package/dist/browser/react/use-segments.js +0 -130
  439. package/dist/browser/react/use-segments.js.map +0 -1
  440. package/dist/browser/request-controller.d.ts +0 -26
  441. package/dist/browser/request-controller.d.ts.map +0 -1
  442. package/dist/browser/request-controller.js +0 -147
  443. package/dist/browser/request-controller.js.map +0 -1
  444. package/dist/browser/rsc-router.d.ts +0 -129
  445. package/dist/browser/rsc-router.d.ts.map +0 -1
  446. package/dist/browser/rsc-router.js +0 -195
  447. package/dist/browser/rsc-router.js.map +0 -1
  448. package/dist/browser/scroll-restoration.d.ts +0 -93
  449. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  450. package/dist/browser/scroll-restoration.js +0 -321
  451. package/dist/browser/scroll-restoration.js.map +0 -1
  452. package/dist/browser/segment-structure-assert.d.ts +0 -17
  453. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  454. package/dist/browser/segment-structure-assert.js +0 -59
  455. package/dist/browser/segment-structure-assert.js.map +0 -1
  456. package/dist/browser/server-action-bridge.d.ts +0 -26
  457. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  458. package/dist/browser/server-action-bridge.js +0 -668
  459. package/dist/browser/server-action-bridge.js.map +0 -1
  460. package/dist/browser/shallow.d.ts +0 -12
  461. package/dist/browser/shallow.d.ts.map +0 -1
  462. package/dist/browser/shallow.js +0 -34
  463. package/dist/browser/shallow.js.map +0 -1
  464. package/dist/browser/types.d.ts +0 -369
  465. package/dist/browser/types.d.ts.map +0 -1
  466. package/dist/browser/types.js +0 -2
  467. package/dist/browser/types.js.map +0 -1
  468. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  469. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  470. package/dist/build/__tests__/generate-cli.test.js +0 -237
  471. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  472. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  473. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  474. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  475. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  476. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  477. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  478. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  479. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  480. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  481. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  482. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  483. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  484. package/dist/build/generate-manifest.d.ts +0 -81
  485. package/dist/build/generate-manifest.d.ts.map +0 -1
  486. package/dist/build/generate-manifest.js +0 -276
  487. package/dist/build/generate-manifest.js.map +0 -1
  488. package/dist/build/generate-route-types.d.ts +0 -115
  489. package/dist/build/generate-route-types.d.ts.map +0 -1
  490. package/dist/build/generate-route-types.js +0 -740
  491. package/dist/build/generate-route-types.js.map +0 -1
  492. package/dist/build/index.d.ts +0 -21
  493. package/dist/build/index.d.ts.map +0 -1
  494. package/dist/build/index.js +0 -21
  495. package/dist/build/index.js.map +0 -1
  496. package/dist/build/route-trie.d.ts +0 -71
  497. package/dist/build/route-trie.d.ts.map +0 -1
  498. package/dist/build/route-trie.js +0 -175
  499. package/dist/build/route-trie.js.map +0 -1
  500. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  501. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  502. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  503. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  504. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  505. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  506. package/dist/cache/__tests__/document-cache.test.js +0 -345
  507. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  508. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  509. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  510. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  511. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  512. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  513. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  514. package/dist/cache/__tests__/memory-store.test.js +0 -367
  515. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  516. package/dist/cache/cache-scope.d.ts +0 -102
  517. package/dist/cache/cache-scope.d.ts.map +0 -1
  518. package/dist/cache/cache-scope.js +0 -440
  519. package/dist/cache/cache-scope.js.map +0 -1
  520. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  521. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  522. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  523. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  524. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  525. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  526. package/dist/cache/cf/cf-cache-store.js +0 -242
  527. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  528. package/dist/cache/cf/index.d.ts +0 -14
  529. package/dist/cache/cf/index.d.ts.map +0 -1
  530. package/dist/cache/cf/index.js +0 -17
  531. package/dist/cache/cf/index.js.map +0 -1
  532. package/dist/cache/document-cache.d.ts +0 -64
  533. package/dist/cache/document-cache.d.ts.map +0 -1
  534. package/dist/cache/document-cache.js +0 -228
  535. package/dist/cache/document-cache.js.map +0 -1
  536. package/dist/cache/index.d.ts +0 -19
  537. package/dist/cache/index.d.ts.map +0 -1
  538. package/dist/cache/index.js +0 -21
  539. package/dist/cache/index.js.map +0 -1
  540. package/dist/cache/memory-segment-store.d.ts +0 -110
  541. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  542. package/dist/cache/memory-segment-store.js +0 -117
  543. package/dist/cache/memory-segment-store.js.map +0 -1
  544. package/dist/cache/memory-store.d.ts +0 -41
  545. package/dist/cache/memory-store.d.ts.map +0 -1
  546. package/dist/cache/memory-store.js +0 -191
  547. package/dist/cache/memory-store.js.map +0 -1
  548. package/dist/cache/types.d.ts +0 -317
  549. package/dist/cache/types.d.ts.map +0 -1
  550. package/dist/cache/types.js +0 -12
  551. package/dist/cache/types.js.map +0 -1
  552. package/dist/client.d.ts +0 -248
  553. package/dist/client.d.ts.map +0 -1
  554. package/dist/client.js +0 -367
  555. package/dist/client.js.map +0 -1
  556. package/dist/client.rsc.d.ts +0 -26
  557. package/dist/client.rsc.d.ts.map +0 -1
  558. package/dist/client.rsc.js +0 -46
  559. package/dist/client.rsc.js.map +0 -1
  560. package/dist/component-utils.d.ts +0 -36
  561. package/dist/component-utils.d.ts.map +0 -1
  562. package/dist/component-utils.js +0 -61
  563. package/dist/component-utils.js.map +0 -1
  564. package/dist/components/DefaultDocument.d.ts +0 -13
  565. package/dist/components/DefaultDocument.d.ts.map +0 -1
  566. package/dist/components/DefaultDocument.js +0 -15
  567. package/dist/components/DefaultDocument.js.map +0 -1
  568. package/dist/debug.d.ts +0 -58
  569. package/dist/debug.d.ts.map +0 -1
  570. package/dist/debug.js +0 -157
  571. package/dist/debug.js.map +0 -1
  572. package/dist/default-error-boundary.d.ts +0 -11
  573. package/dist/default-error-boundary.d.ts.map +0 -1
  574. package/dist/default-error-boundary.js +0 -45
  575. package/dist/default-error-boundary.js.map +0 -1
  576. package/dist/deps/browser.d.ts +0 -2
  577. package/dist/deps/browser.d.ts.map +0 -1
  578. package/dist/deps/browser.js +0 -3
  579. package/dist/deps/browser.js.map +0 -1
  580. package/dist/deps/html-stream-client.d.ts +0 -2
  581. package/dist/deps/html-stream-client.d.ts.map +0 -1
  582. package/dist/deps/html-stream-client.js +0 -3
  583. package/dist/deps/html-stream-client.js.map +0 -1
  584. package/dist/deps/html-stream-server.d.ts +0 -2
  585. package/dist/deps/html-stream-server.d.ts.map +0 -1
  586. package/dist/deps/html-stream-server.js +0 -3
  587. package/dist/deps/html-stream-server.js.map +0 -1
  588. package/dist/deps/rsc.d.ts +0 -2
  589. package/dist/deps/rsc.d.ts.map +0 -1
  590. package/dist/deps/rsc.js +0 -4
  591. package/dist/deps/rsc.js.map +0 -1
  592. package/dist/deps/ssr.d.ts +0 -2
  593. package/dist/deps/ssr.d.ts.map +0 -1
  594. package/dist/deps/ssr.js +0 -3
  595. package/dist/deps/ssr.js.map +0 -1
  596. package/dist/errors.d.ts +0 -174
  597. package/dist/errors.d.ts.map +0 -1
  598. package/dist/errors.js +0 -241
  599. package/dist/errors.js.map +0 -1
  600. package/dist/handle.d.ts +0 -78
  601. package/dist/handle.d.ts.map +0 -1
  602. package/dist/handle.js +0 -82
  603. package/dist/handle.js.map +0 -1
  604. package/dist/handles/MetaTags.d.ts +0 -14
  605. package/dist/handles/MetaTags.d.ts.map +0 -1
  606. package/dist/handles/MetaTags.js +0 -136
  607. package/dist/handles/MetaTags.js.map +0 -1
  608. package/dist/handles/index.d.ts +0 -6
  609. package/dist/handles/index.d.ts.map +0 -1
  610. package/dist/handles/index.js +0 -6
  611. package/dist/handles/index.js.map +0 -1
  612. package/dist/handles/meta.d.ts +0 -39
  613. package/dist/handles/meta.d.ts.map +0 -1
  614. package/dist/handles/meta.js +0 -202
  615. package/dist/handles/meta.js.map +0 -1
  616. package/dist/host/__tests__/errors.test.d.ts +0 -2
  617. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  618. package/dist/host/__tests__/errors.test.js +0 -76
  619. package/dist/host/__tests__/errors.test.js.map +0 -1
  620. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  621. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  622. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  623. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  624. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  625. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  626. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  627. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  628. package/dist/host/__tests__/router.test.d.ts +0 -2
  629. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  630. package/dist/host/__tests__/router.test.js +0 -241
  631. package/dist/host/__tests__/router.test.js.map +0 -1
  632. package/dist/host/__tests__/testing.test.d.ts +0 -2
  633. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  634. package/dist/host/__tests__/testing.test.js +0 -64
  635. package/dist/host/__tests__/testing.test.js.map +0 -1
  636. package/dist/host/__tests__/utils.test.d.ts +0 -2
  637. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  638. package/dist/host/__tests__/utils.test.js +0 -29
  639. package/dist/host/__tests__/utils.test.js.map +0 -1
  640. package/dist/host/cookie-handler.d.ts +0 -34
  641. package/dist/host/cookie-handler.d.ts.map +0 -1
  642. package/dist/host/cookie-handler.js +0 -124
  643. package/dist/host/cookie-handler.js.map +0 -1
  644. package/dist/host/errors.d.ts +0 -56
  645. package/dist/host/errors.d.ts.map +0 -1
  646. package/dist/host/errors.js +0 -79
  647. package/dist/host/errors.js.map +0 -1
  648. package/dist/host/index.d.ts +0 -29
  649. package/dist/host/index.d.ts.map +0 -1
  650. package/dist/host/index.js +0 -32
  651. package/dist/host/index.js.map +0 -1
  652. package/dist/host/pattern-matcher.d.ts +0 -36
  653. package/dist/host/pattern-matcher.d.ts.map +0 -1
  654. package/dist/host/pattern-matcher.js +0 -172
  655. package/dist/host/pattern-matcher.js.map +0 -1
  656. package/dist/host/router.d.ts +0 -26
  657. package/dist/host/router.d.ts.map +0 -1
  658. package/dist/host/router.js +0 -218
  659. package/dist/host/router.js.map +0 -1
  660. package/dist/host/testing.d.ts +0 -36
  661. package/dist/host/testing.d.ts.map +0 -1
  662. package/dist/host/testing.js +0 -55
  663. package/dist/host/testing.js.map +0 -1
  664. package/dist/host/types.d.ts +0 -115
  665. package/dist/host/types.d.ts.map +0 -1
  666. package/dist/host/types.js +0 -7
  667. package/dist/host/types.js.map +0 -1
  668. package/dist/host/utils.d.ts +0 -21
  669. package/dist/host/utils.d.ts.map +0 -1
  670. package/dist/host/utils.js +0 -23
  671. package/dist/host/utils.js.map +0 -1
  672. package/dist/href-client.d.ts +0 -131
  673. package/dist/href-client.d.ts.map +0 -1
  674. package/dist/href-client.js +0 -64
  675. package/dist/href-client.js.map +0 -1
  676. package/dist/href-context.d.ts +0 -29
  677. package/dist/href-context.d.ts.map +0 -1
  678. package/dist/href-context.js +0 -21
  679. package/dist/href-context.js.map +0 -1
  680. package/dist/index.d.ts +0 -73
  681. package/dist/index.d.ts.map +0 -1
  682. package/dist/index.js +0 -91
  683. package/dist/index.js.map +0 -1
  684. package/dist/index.rsc.d.ts +0 -32
  685. package/dist/index.rsc.d.ts.map +0 -1
  686. package/dist/index.rsc.js +0 -40
  687. package/dist/index.rsc.js.map +0 -1
  688. package/dist/internal-debug.d.ts +0 -2
  689. package/dist/internal-debug.d.ts.map +0 -1
  690. package/dist/internal-debug.js +0 -5
  691. package/dist/internal-debug.js.map +0 -1
  692. package/dist/loader.d.ts +0 -14
  693. package/dist/loader.d.ts.map +0 -1
  694. package/dist/loader.js +0 -20
  695. package/dist/loader.js.map +0 -1
  696. package/dist/loader.rsc.d.ts +0 -19
  697. package/dist/loader.rsc.d.ts.map +0 -1
  698. package/dist/loader.rsc.js +0 -99
  699. package/dist/loader.rsc.js.map +0 -1
  700. package/dist/network-error-thrower.d.ts +0 -17
  701. package/dist/network-error-thrower.d.ts.map +0 -1
  702. package/dist/network-error-thrower.js +0 -14
  703. package/dist/network-error-thrower.js.map +0 -1
  704. package/dist/outlet-context.d.ts +0 -13
  705. package/dist/outlet-context.d.ts.map +0 -1
  706. package/dist/outlet-context.js +0 -3
  707. package/dist/outlet-context.js.map +0 -1
  708. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  709. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  710. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  711. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  712. package/dist/prerender/param-hash.d.ts +0 -16
  713. package/dist/prerender/param-hash.d.ts.map +0 -1
  714. package/dist/prerender/param-hash.js +0 -36
  715. package/dist/prerender/param-hash.js.map +0 -1
  716. package/dist/prerender/store.d.ts +0 -38
  717. package/dist/prerender/store.d.ts.map +0 -1
  718. package/dist/prerender/store.js +0 -61
  719. package/dist/prerender/store.js.map +0 -1
  720. package/dist/prerender.d.ts +0 -66
  721. package/dist/prerender.d.ts.map +0 -1
  722. package/dist/prerender.js +0 -57
  723. package/dist/prerender.js.map +0 -1
  724. package/dist/reverse.d.ts +0 -196
  725. package/dist/reverse.d.ts.map +0 -1
  726. package/dist/reverse.js +0 -78
  727. package/dist/reverse.js.map +0 -1
  728. package/dist/root-error-boundary.d.ts +0 -33
  729. package/dist/root-error-boundary.d.ts.map +0 -1
  730. package/dist/root-error-boundary.js +0 -165
  731. package/dist/root-error-boundary.js.map +0 -1
  732. package/dist/route-content-wrapper.d.ts +0 -46
  733. package/dist/route-content-wrapper.d.ts.map +0 -1
  734. package/dist/route-content-wrapper.js +0 -77
  735. package/dist/route-content-wrapper.js.map +0 -1
  736. package/dist/route-definition.d.ts +0 -421
  737. package/dist/route-definition.d.ts.map +0 -1
  738. package/dist/route-definition.js +0 -868
  739. package/dist/route-definition.js.map +0 -1
  740. package/dist/route-map-builder.d.ts +0 -155
  741. package/dist/route-map-builder.d.ts.map +0 -1
  742. package/dist/route-map-builder.js +0 -237
  743. package/dist/route-map-builder.js.map +0 -1
  744. package/dist/route-types.d.ts +0 -165
  745. package/dist/route-types.d.ts.map +0 -1
  746. package/dist/route-types.js +0 -7
  747. package/dist/route-types.js.map +0 -1
  748. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  749. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  750. package/dist/router/__tests__/handler-context.test.js +0 -65
  751. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  752. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  753. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  754. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  755. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  756. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  757. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  758. package/dist/router/__tests__/match-context.test.js +0 -92
  759. package/dist/router/__tests__/match-context.test.js.map +0 -1
  760. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  761. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  762. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  763. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  764. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  765. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  766. package/dist/router/__tests__/match-result.test.js +0 -457
  767. package/dist/router/__tests__/match-result.test.js.map +0 -1
  768. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  769. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  770. package/dist/router/__tests__/on-error.test.js +0 -678
  771. package/dist/router/__tests__/on-error.test.js.map +0 -1
  772. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  773. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  774. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  775. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  776. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  777. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  778. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  779. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  780. package/dist/router/error-handling.d.ts +0 -77
  781. package/dist/router/error-handling.d.ts.map +0 -1
  782. package/dist/router/error-handling.js +0 -202
  783. package/dist/router/error-handling.js.map +0 -1
  784. package/dist/router/handler-context.d.ts +0 -20
  785. package/dist/router/handler-context.d.ts.map +0 -1
  786. package/dist/router/handler-context.js +0 -198
  787. package/dist/router/handler-context.js.map +0 -1
  788. package/dist/router/intercept-resolution.d.ts +0 -66
  789. package/dist/router/intercept-resolution.d.ts.map +0 -1
  790. package/dist/router/intercept-resolution.js +0 -246
  791. package/dist/router/intercept-resolution.js.map +0 -1
  792. package/dist/router/loader-resolution.d.ts +0 -64
  793. package/dist/router/loader-resolution.d.ts.map +0 -1
  794. package/dist/router/loader-resolution.js +0 -284
  795. package/dist/router/loader-resolution.js.map +0 -1
  796. package/dist/router/logging.d.ts +0 -15
  797. package/dist/router/logging.d.ts.map +0 -1
  798. package/dist/router/logging.js +0 -99
  799. package/dist/router/logging.js.map +0 -1
  800. package/dist/router/manifest.d.ts +0 -22
  801. package/dist/router/manifest.d.ts.map +0 -1
  802. package/dist/router/manifest.js +0 -181
  803. package/dist/router/manifest.js.map +0 -1
  804. package/dist/router/match-api.d.ts +0 -35
  805. package/dist/router/match-api.d.ts.map +0 -1
  806. package/dist/router/match-api.js +0 -406
  807. package/dist/router/match-api.js.map +0 -1
  808. package/dist/router/match-context.d.ts +0 -206
  809. package/dist/router/match-context.d.ts.map +0 -1
  810. package/dist/router/match-context.js +0 -17
  811. package/dist/router/match-context.js.map +0 -1
  812. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  813. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  814. package/dist/router/match-middleware/background-revalidation.js +0 -75
  815. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  816. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  817. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  818. package/dist/router/match-middleware/cache-lookup.js +0 -257
  819. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  820. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  821. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  822. package/dist/router/match-middleware/cache-store.js +0 -108
  823. package/dist/router/match-middleware/cache-store.js.map +0 -1
  824. package/dist/router/match-middleware/index.d.ts +0 -81
  825. package/dist/router/match-middleware/index.d.ts.map +0 -1
  826. package/dist/router/match-middleware/index.js +0 -80
  827. package/dist/router/match-middleware/index.js.map +0 -1
  828. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  829. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  830. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  831. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  832. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  833. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  834. package/dist/router/match-middleware/segment-resolution.js +0 -53
  835. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  836. package/dist/router/match-pipelines.d.ts +0 -147
  837. package/dist/router/match-pipelines.d.ts.map +0 -1
  838. package/dist/router/match-pipelines.js +0 -82
  839. package/dist/router/match-pipelines.js.map +0 -1
  840. package/dist/router/match-result.d.ts +0 -126
  841. package/dist/router/match-result.d.ts.map +0 -1
  842. package/dist/router/match-result.js +0 -93
  843. package/dist/router/match-result.js.map +0 -1
  844. package/dist/router/metrics.d.ts +0 -20
  845. package/dist/router/metrics.d.ts.map +0 -1
  846. package/dist/router/metrics.js +0 -47
  847. package/dist/router/metrics.js.map +0 -1
  848. package/dist/router/middleware.d.ts +0 -249
  849. package/dist/router/middleware.d.ts.map +0 -1
  850. package/dist/router/middleware.js +0 -434
  851. package/dist/router/middleware.js.map +0 -1
  852. package/dist/router/middleware.test.d.ts +0 -2
  853. package/dist/router/middleware.test.d.ts.map +0 -1
  854. package/dist/router/middleware.test.js +0 -816
  855. package/dist/router/middleware.test.js.map +0 -1
  856. package/dist/router/pattern-matching.d.ts +0 -149
  857. package/dist/router/pattern-matching.d.ts.map +0 -1
  858. package/dist/router/pattern-matching.js +0 -349
  859. package/dist/router/pattern-matching.js.map +0 -1
  860. package/dist/router/revalidation.d.ts +0 -44
  861. package/dist/router/revalidation.d.ts.map +0 -1
  862. package/dist/router/revalidation.js +0 -147
  863. package/dist/router/revalidation.js.map +0 -1
  864. package/dist/router/router-context.d.ts +0 -135
  865. package/dist/router/router-context.d.ts.map +0 -1
  866. package/dist/router/router-context.js +0 -36
  867. package/dist/router/router-context.js.map +0 -1
  868. package/dist/router/segment-resolution.d.ts +0 -127
  869. package/dist/router/segment-resolution.d.ts.map +0 -1
  870. package/dist/router/segment-resolution.js +0 -919
  871. package/dist/router/segment-resolution.js.map +0 -1
  872. package/dist/router/trie-matching.d.ts +0 -40
  873. package/dist/router/trie-matching.d.ts.map +0 -1
  874. package/dist/router/trie-matching.js +0 -127
  875. package/dist/router/trie-matching.js.map +0 -1
  876. package/dist/router/types.d.ts +0 -136
  877. package/dist/router/types.d.ts.map +0 -1
  878. package/dist/router/types.js +0 -7
  879. package/dist/router/types.js.map +0 -1
  880. package/dist/router.d.ts +0 -753
  881. package/dist/router.d.ts.map +0 -1
  882. package/dist/router.gen.d.ts +0 -6
  883. package/dist/router.gen.d.ts.map +0 -1
  884. package/dist/router.gen.js +0 -6
  885. package/dist/router.gen.js.map +0 -1
  886. package/dist/router.js +0 -1304
  887. package/dist/router.js.map +0 -1
  888. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  889. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  890. package/dist/rsc/__tests__/helpers.test.js +0 -140
  891. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  892. package/dist/rsc/handler.d.ts +0 -45
  893. package/dist/rsc/handler.d.ts.map +0 -1
  894. package/dist/rsc/handler.js +0 -1172
  895. package/dist/rsc/handler.js.map +0 -1
  896. package/dist/rsc/helpers.d.ts +0 -16
  897. package/dist/rsc/helpers.d.ts.map +0 -1
  898. package/dist/rsc/helpers.js +0 -55
  899. package/dist/rsc/helpers.js.map +0 -1
  900. package/dist/rsc/index.d.ts +0 -22
  901. package/dist/rsc/index.d.ts.map +0 -1
  902. package/dist/rsc/index.js +0 -23
  903. package/dist/rsc/index.js.map +0 -1
  904. package/dist/rsc/nonce.d.ts +0 -9
  905. package/dist/rsc/nonce.d.ts.map +0 -1
  906. package/dist/rsc/nonce.js +0 -18
  907. package/dist/rsc/nonce.js.map +0 -1
  908. package/dist/rsc/types.d.ts +0 -206
  909. package/dist/rsc/types.d.ts.map +0 -1
  910. package/dist/rsc/types.js +0 -8
  911. package/dist/rsc/types.js.map +0 -1
  912. package/dist/search-params.d.ts +0 -103
  913. package/dist/search-params.d.ts.map +0 -1
  914. package/dist/search-params.js +0 -74
  915. package/dist/search-params.js.map +0 -1
  916. package/dist/segment-system.d.ts +0 -75
  917. package/dist/segment-system.d.ts.map +0 -1
  918. package/dist/segment-system.js +0 -336
  919. package/dist/segment-system.js.map +0 -1
  920. package/dist/server/context.d.ts +0 -245
  921. package/dist/server/context.d.ts.map +0 -1
  922. package/dist/server/context.js +0 -197
  923. package/dist/server/context.js.map +0 -1
  924. package/dist/server/fetchable-loader-store.d.ts +0 -18
  925. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  926. package/dist/server/fetchable-loader-store.js +0 -18
  927. package/dist/server/fetchable-loader-store.js.map +0 -1
  928. package/dist/server/handle-store.d.ts +0 -85
  929. package/dist/server/handle-store.d.ts.map +0 -1
  930. package/dist/server/handle-store.js +0 -142
  931. package/dist/server/handle-store.js.map +0 -1
  932. package/dist/server/loader-registry.d.ts +0 -55
  933. package/dist/server/loader-registry.d.ts.map +0 -1
  934. package/dist/server/loader-registry.js +0 -132
  935. package/dist/server/loader-registry.js.map +0 -1
  936. package/dist/server/request-context.d.ts +0 -226
  937. package/dist/server/request-context.d.ts.map +0 -1
  938. package/dist/server/request-context.js +0 -290
  939. package/dist/server/request-context.js.map +0 -1
  940. package/dist/server/root-layout.d.ts +0 -4
  941. package/dist/server/root-layout.d.ts.map +0 -1
  942. package/dist/server/root-layout.js +0 -5
  943. package/dist/server/root-layout.js.map +0 -1
  944. package/dist/server.d.ts +0 -15
  945. package/dist/server.d.ts.map +0 -1
  946. package/dist/server.js +0 -20
  947. package/dist/server.js.map +0 -1
  948. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  949. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  950. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  951. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  952. package/dist/ssr/index.d.ts +0 -98
  953. package/dist/ssr/index.d.ts.map +0 -1
  954. package/dist/ssr/index.js +0 -158
  955. package/dist/ssr/index.js.map +0 -1
  956. package/dist/static-handler.d.ts +0 -50
  957. package/dist/static-handler.d.ts.map +0 -1
  958. package/dist/static-handler.gen.d.ts +0 -5
  959. package/dist/static-handler.gen.d.ts.map +0 -1
  960. package/dist/static-handler.gen.js +0 -5
  961. package/dist/static-handler.gen.js.map +0 -1
  962. package/dist/static-handler.js +0 -29
  963. package/dist/static-handler.js.map +0 -1
  964. package/dist/theme/ThemeProvider.d.ts +0 -20
  965. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  966. package/dist/theme/ThemeProvider.js +0 -240
  967. package/dist/theme/ThemeProvider.js.map +0 -1
  968. package/dist/theme/ThemeScript.d.ts +0 -48
  969. package/dist/theme/ThemeScript.d.ts.map +0 -1
  970. package/dist/theme/ThemeScript.js +0 -13
  971. package/dist/theme/ThemeScript.js.map +0 -1
  972. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  973. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  974. package/dist/theme/__tests__/theme.test.js +0 -103
  975. package/dist/theme/__tests__/theme.test.js.map +0 -1
  976. package/dist/theme/constants.d.ts +0 -29
  977. package/dist/theme/constants.d.ts.map +0 -1
  978. package/dist/theme/constants.js +0 -48
  979. package/dist/theme/constants.js.map +0 -1
  980. package/dist/theme/index.d.ts +0 -31
  981. package/dist/theme/index.d.ts.map +0 -1
  982. package/dist/theme/index.js +0 -36
  983. package/dist/theme/index.js.map +0 -1
  984. package/dist/theme/theme-context.d.ts +0 -40
  985. package/dist/theme/theme-context.d.ts.map +0 -1
  986. package/dist/theme/theme-context.js +0 -60
  987. package/dist/theme/theme-context.js.map +0 -1
  988. package/dist/theme/theme-script.d.ts +0 -27
  989. package/dist/theme/theme-script.d.ts.map +0 -1
  990. package/dist/theme/theme-script.js +0 -147
  991. package/dist/theme/theme-script.js.map +0 -1
  992. package/dist/theme/types.d.ts +0 -163
  993. package/dist/theme/types.d.ts.map +0 -1
  994. package/dist/theme/types.js +0 -11
  995. package/dist/theme/types.js.map +0 -1
  996. package/dist/theme/use-theme.d.ts +0 -12
  997. package/dist/theme/use-theme.d.ts.map +0 -1
  998. package/dist/theme/use-theme.js +0 -40
  999. package/dist/theme/use-theme.js.map +0 -1
  1000. package/dist/types.d.ts +0 -1479
  1001. package/dist/types.d.ts.map +0 -1
  1002. package/dist/types.js +0 -10
  1003. package/dist/types.js.map +0 -1
  1004. package/dist/urls.d.ts +0 -441
  1005. package/dist/urls.d.ts.map +0 -1
  1006. package/dist/urls.gen.d.ts +0 -8
  1007. package/dist/urls.gen.d.ts.map +0 -1
  1008. package/dist/urls.gen.js +0 -8
  1009. package/dist/urls.gen.js.map +0 -1
  1010. package/dist/urls.js +0 -443
  1011. package/dist/urls.js.map +0 -1
  1012. package/dist/use-loader.d.ts +0 -127
  1013. package/dist/use-loader.d.ts.map +0 -1
  1014. package/dist/use-loader.js +0 -237
  1015. package/dist/use-loader.js.map +0 -1
  1016. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  1017. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  1018. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  1019. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  1020. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  1021. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  1022. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  1023. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  1024. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  1025. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  1026. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  1027. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  1028. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  1029. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  1030. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  1031. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  1032. package/dist/vite/ast-handler-extract.d.ts +0 -49
  1033. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  1034. package/dist/vite/ast-handler-extract.js +0 -249
  1035. package/dist/vite/ast-handler-extract.js.map +0 -1
  1036. package/dist/vite/expose-action-id.d.ts +0 -19
  1037. package/dist/vite/expose-action-id.d.ts.map +0 -1
  1038. package/dist/vite/expose-action-id.js +0 -250
  1039. package/dist/vite/expose-action-id.js.map +0 -1
  1040. package/dist/vite/expose-id-utils.d.ts +0 -69
  1041. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  1042. package/dist/vite/expose-id-utils.js +0 -289
  1043. package/dist/vite/expose-id-utils.js.map +0 -1
  1044. package/dist/vite/expose-internal-ids.d.ts +0 -22
  1045. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  1046. package/dist/vite/expose-internal-ids.js +0 -886
  1047. package/dist/vite/expose-internal-ids.js.map +0 -1
  1048. package/dist/vite/index.d.ts +0 -149
  1049. package/dist/vite/index.d.ts.map +0 -1
  1050. package/dist/vite/index.js.map +0 -1
  1051. package/dist/vite/index.named-routes.gen.ts +0 -103
  1052. package/dist/vite/package-resolution.d.ts +0 -43
  1053. package/dist/vite/package-resolution.d.ts.map +0 -1
  1054. package/dist/vite/package-resolution.js +0 -112
  1055. package/dist/vite/package-resolution.js.map +0 -1
  1056. package/dist/vite/virtual-entries.d.ts +0 -25
  1057. package/dist/vite/virtual-entries.d.ts.map +0 -1
  1058. package/dist/vite/virtual-entries.js +0 -110
  1059. package/dist/vite/virtual-entries.js.map +0 -1
  1060. package/src/browser/action-response-classifier.ts +0 -99
@@ -0,0 +1,76 @@
1
+ // Node ESM loader hook that resolves `cloudflare:*` imports to the same
2
+ // stub ESM the Vite transform produces for rewritten specifiers.
3
+ //
4
+ // Why both? The Vite transform (cloudflare-protocol-stub.ts) catches
5
+ // imports in modules that flow through Vite's plugin pipeline — covers
6
+ // user source and any node_modules package Vite fetches and transforms.
7
+ // But Vite/Rollup externalize certain packages (e.g. `partyserver`,
8
+ // which has `import { DurableObject, env } from "cloudflare:workers"`
9
+ // at its top level, and similar "workerd-native" libraries). Externalized
10
+ // modules bypass the transform: Rollup hands their resolution to Node's
11
+ // native ESM loader, which rejects URL-scheme specifiers. This loader
12
+ // hook registers via `module.register()` from `createTempRscServer` and
13
+ // intercepts `cloudflare:*` at Node's resolve layer — before the default
14
+ // loader throws ERR_UNSUPPORTED_ESM_URL_SCHEME.
15
+ //
16
+ // Lifecycle: the hook runs in a dedicated worker thread (Node ESM loader
17
+ // architecture) with its own globalThis. It cannot see the main thread's
18
+ // `__rango_build_env__` bridge, so the `env` export here is always `{}`.
19
+ // That's fine in practice — externalized libraries don't typically touch
20
+ // `env` at module top level; they read it at request time in workerd
21
+ // where the real module exists. Build-time prerender handlers in user
22
+ // source DO read `env`, but they flow through the Vite transform (which
23
+ // does bridge `env` from `getPlatformProxy()`), not through this loader.
24
+ //
25
+ // Keep STUBS in sync with cloudflare-protocol-stub.ts — both paths need
26
+ // to hand out the same base classes.
27
+
28
+ const CF_PREFIX = "cloudflare:";
29
+
30
+ const STUBS = {
31
+ "cloudflare:workers": `
32
+ export class DurableObject { constructor(_ctx, _env) {} }
33
+ export class WorkerEntrypoint { constructor(_ctx, _env) {} }
34
+ export class WorkflowEntrypoint { constructor(_ctx, _env) {} }
35
+ export class RpcTarget {}
36
+ export const env = {};
37
+ export default {};
38
+ `,
39
+ "cloudflare:email": `
40
+ export class EmailMessage { constructor(_from, _to, _raw) {} }
41
+ export default {};
42
+ `,
43
+ "cloudflare:sockets": `
44
+ export function connect() { return {}; }
45
+ export default {};
46
+ `,
47
+ "cloudflare:workflows": `
48
+ export class NonRetryableError extends Error {
49
+ constructor(message, name) { super(message); this.name = name ?? "NonRetryableError"; }
50
+ }
51
+ export default {};
52
+ `,
53
+ };
54
+
55
+ // Policy: unknown `cloudflare:*` specifiers resolve permissively to an
56
+ // empty default export rather than throwing. Same reasoning as
57
+ // cloudflare-protocol-stub.ts's FALLBACK_STUB — we prioritize
58
+ // dependency-graph resilience over strict validation, because third-party
59
+ // packages can pull `cloudflare:*` modules we haven't curated.
60
+ const FALLBACK_STUB = `export default {};\n`;
61
+
62
+ function dataUrlFor(specifier) {
63
+ const body = STUBS[specifier] ?? FALLBACK_STUB;
64
+ return "data:text/javascript;base64," + Buffer.from(body).toString("base64");
65
+ }
66
+
67
+ export async function resolve(specifier, context, nextResolve) {
68
+ if (specifier.startsWith(CF_PREFIX)) {
69
+ return {
70
+ shortCircuit: true,
71
+ url: dataUrlFor(specifier),
72
+ format: "module",
73
+ };
74
+ }
75
+ return nextResolve(specifier, context);
76
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rangojs/router",
3
- "version": "0.0.0-experimental.760a71d9",
3
+ "version": "0.0.0-experimental.77ed8945",
4
4
  "description": "Django-inspired RSC router with composable URL patterns",
5
5
  "keywords": [
6
6
  "react",
@@ -133,22 +133,26 @@
133
133
  "tag": "experimental"
134
134
  },
135
135
  "scripts": {
136
- "build": "pnpm dlx esbuild src/vite/index.ts --bundle --format=esm --outfile=dist/vite/index.js --platform=node --packages=external && pnpm dlx esbuild src/bin/rango.ts --bundle --format=esm --outfile=dist/bin/rango.js --platform=node --packages=external --banner:js='#!/usr/bin/env node' && chmod +x dist/bin/rango.js",
136
+ "build": "pnpm dlx esbuild src/vite/index.ts --bundle --format=esm --outfile=dist/vite/index.js --platform=node --packages=external && mkdir -p dist/vite/plugins && cp src/vite/plugins/cloudflare-protocol-loader-hook.mjs dist/vite/plugins/cloudflare-protocol-loader-hook.mjs && pnpm dlx esbuild src/bin/rango.ts --bundle --format=esm --outfile=dist/bin/rango.js --platform=node --packages=external --banner:js='#!/usr/bin/env node' && chmod +x dist/bin/rango.js",
137
137
  "prepublishOnly": "pnpm build",
138
- "typecheck": "tsc --noEmit",
138
+ "typecheck": "tsc --noEmit && tsc -p tsconfig.strict-check.json --noEmit && tsc -p tsconfig.augment-check.json --noEmit",
139
139
  "test": "playwright test",
140
140
  "test:ui": "playwright test --ui",
141
+ "test:hmr-local": "playwright test --project=dev-warmup --project=hmr-routes --project=hmr-basename --project=hmr-prerender --no-deps --workers=1",
141
142
  "test:unit": "vitest run",
142
143
  "test:unit:watch": "vitest"
143
144
  },
144
145
  "dependencies": {
145
- "@vitejs/plugin-rsc": "^0.5.14",
146
+ "@types/debug": "^4.1.12",
147
+ "@vitejs/plugin-rsc": "^0.5.26",
148
+ "debug": "^4.4.1",
146
149
  "magic-string": "^0.30.17",
147
150
  "picomatch": "^4.0.3",
148
151
  "rsc-html-stream": "^0.0.7"
149
152
  },
150
153
  "devDependencies": {
151
154
  "@playwright/test": "^1.49.1",
155
+ "@shared/e2e": "workspace:*",
152
156
  "@types/node": "^24.10.1",
153
157
  "@types/react": "catalog:",
154
158
  "@types/react-dom": "catalog:",
@@ -161,10 +165,11 @@
161
165
  "vitest": "^4.0.0"
162
166
  },
163
167
  "peerDependencies": {
164
- "@cloudflare/vite-plugin": "^1.25.0",
165
- "@vitejs/plugin-rsc": "^0.5.14",
166
- "react": "^18.0.0 || ^19.0.0",
167
- "vite": "^7.3.0"
168
+ "@cloudflare/vite-plugin": "^1.38.0",
169
+ "@vitejs/plugin-rsc": "^0.5.26",
170
+ "react": ">=19.2.6 <20",
171
+ "react-dom": ">=19.2.6 <20",
172
+ "vite": "^8.0.0"
168
173
  },
169
174
  "peerDependenciesMeta": {
170
175
  "@cloudflare/vite-plugin": {
@@ -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.
@@ -141,9 +141,11 @@ path("/dashboard", (ctx) => {
141
141
  breadcrumb({ label: "Dashboard", href: "/dashboard" });
142
142
  return <DashboardNav handle={Breadcrumbs} />;
143
143
  });
144
+ ```
144
145
 
146
+ ```tsx
145
147
  // Client component
146
- ("use client");
148
+ "use client";
147
149
  import { useHandle, type Breadcrumbs } from "@rangojs/router/client";
148
150
 
149
151
  function DashboardNav({ handle }: { handle: typeof Breadcrumbs }) {
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: bundle-analysis
3
+ description: Audit a Rango app's production bundle for server-side code leaking into the client, dev/prod React duplication, oversized chunks, and inefficient client-reference grouping. Use when investigating bundle size growth, before a production deploy, or when the client/SSR/RSC output suddenly balloons.
4
+ argument-hint: "<app-dir>"
5
+ ---
6
+
7
+ # Bundle Analysis
8
+
9
+ Use this when you want **proof** that your Rango app is shipping the bundles you expect: small client, no server leaks, no doubled React, reasonable RSC worker size.
10
+
11
+ ## What this checks
12
+
13
+ Your app builds in three Vite environments — `client`, `ssr`, and `rsc` — and each ships its own bundle. The most common bundle bugs in a Rango app are:
14
+
15
+ 1. **Server code leaking into the client.** A file that imports `node:fs`, calls a database, or contains action logic ends up in the client bundle because a client component pulled it in transitively. Symptom: your client bundle is much larger than expected, sometimes with imports that fail at runtime.
16
+ 2. **Both dev and prod React in the SSR/RSC bundle.** When `process.env.NODE_ENV` isn't folded at build time, React's CJS files ship both `.development.js` _and_ `.production.js` variants — doubling React's footprint. The Cloudflare vite plugin folds NODE_ENV automatically; vanilla `vite build` does it for client but not always for SSR/RSC.
17
+ 3. **An oversized routes-manifest in your RSC worker.** The `virtual:rsc-router/routes-manifest/<routerId>` chunk holds your route trie and precomputed entries — large only in proportion to your route count. If it's surprisingly big, you may have unintentionally generated routes (e.g., parametrized fixtures) that bloated the trie.
18
+ 4. **Inefficient client-reference grouping.** Each `"use client"` boundary becomes a chunk. Too many small client components = many tiny chunks; one giant client component = one giant chunk that defeats code-splitting.
19
+
20
+ Tree-shaking does _not_ catch (1) generated data inlined as string literals or (2) data-dependent conditionals like React's. You need a visualizer.
21
+
22
+ ## Step 1: Install the visualizer
23
+
24
+ In your app's directory:
25
+
26
+ ```bash
27
+ pnpm add -D rollup-plugin-visualizer
28
+ # or: npm install --save-dev rollup-plugin-visualizer
29
+ # or: yarn add -D rollup-plugin-visualizer
30
+ ```
31
+
32
+ ## Step 2: Wire it into your `vite.config.ts`
33
+
34
+ Add a small helper that registers one visualizer instance **per Vite environment** (not just one global). The plugin caches its options after the first call, so a single instance can't handle multi-environment builds — you'll get a report for one environment and silence for the others.
35
+
36
+ ```ts
37
+ // vite.config.ts
38
+ import { defineConfig, type PluginOption, type Plugin } from "vite";
39
+ import { visualizer } from "rollup-plugin-visualizer";
40
+ import { join } from "node:path";
41
+ // ... your other imports ...
42
+
43
+ function analyze(): PluginOption[] {
44
+ if (!process.env.ANALYZE) return [];
45
+ return (["client", "ssr", "rsc"] as const).map((envName) => {
46
+ const inner = visualizer({
47
+ filename: join("bundle-stats", `${envName}.html`),
48
+ template: "treemap",
49
+ gzipSize: true,
50
+ brotliSize: true,
51
+ }) as Plugin;
52
+ return {
53
+ ...inner,
54
+ name: `analyze-${envName}`,
55
+ applyToEnvironment(env) {
56
+ return env.name === envName;
57
+ },
58
+ } as Plugin;
59
+ });
60
+ }
61
+
62
+ export default defineConfig(({ command }) => ({
63
+ plugins: [
64
+ // your existing plugins...
65
+ ...analyze(),
66
+ ],
67
+ // For non-Cloudflare apps, fold NODE_ENV explicitly so React's CJS files
68
+ // emit only the .production.js variants in SSR/RSC. Skip if your build
69
+ // setup already does this (the Cloudflare vite plugin does).
70
+ define:
71
+ command === "build"
72
+ ? { "process.env.NODE_ENV": JSON.stringify("production") }
73
+ : undefined,
74
+ }));
75
+ ```
76
+
77
+ Add `bundle-stats/` to your `.gitignore`.
78
+
79
+ ## Step 3: Build with the analyzer enabled
80
+
81
+ ```bash
82
+ ANALYZE=1 pnpm exec vite build
83
+ ```
84
+
85
+ You'll get three HTML reports in `bundle-stats/`:
86
+
87
+ - `bundle-stats/client.html` — what runs in the browser
88
+ - `bundle-stats/ssr.html` — what runs during HTML stream
89
+ - `bundle-stats/rsc.html` — what runs in your RSC server (Worker / Node)
90
+
91
+ Open them with a quick local server (file:// has CORS issues with the embedded scripts):
92
+
93
+ ```bash
94
+ pnpm dlx serve -l 5050 .
95
+ # then visit http://localhost:5050/bundle-stats/client.html
96
+ ```
97
+
98
+ ## Step 4: Triage the reports
99
+
100
+ ### Open `client.html` first
101
+
102
+ The treemap shows nested boxes; box area = uncompressed size. Hover for gzip/brotli numbers.
103
+
104
+ **Look for:**
105
+
106
+ - **Your server code.** Any of your own files that contain database queries, secret keys, server actions implementation (not the action _reference_), or `node:` imports. If they appear in the client treemap with non-zero bytes, they leaked. Common causes:
107
+ - A shared module that mixes client and server code without a `"use client"` or `"use server"` directive.
108
+ - A barrel file (`index.ts`) that re-exports both client and server symbols. Tree-shaking should help, but `JSON.parse('{...}')` data and side-effecting top-level statements survive.
109
+ - Client component imports a server-only utility through an indirect path (e.g., shared types file that pulls server modules).
110
+ - **Multiple copies of the same package.** Look for two boxes with the same package name but different version paths. Usually means a transitive dep pinned a different version.
111
+ - **The `@rangojs/router` chunk** should be roughly **50 KB gzip** (74 files). If significantly larger, you might be importing client-incompatible APIs from the wrong subpath.
112
+ - **Per-route client-reference chunks** (named like `chunk-<hash>.js`). Each `"use client"` boundary can become its own chunk. If you have hundreds of tiny chunks, you may have over-split (every leaf component as a client component); if you have one massive 200 KB chunk, you've under-split (a wide client tree behind one boundary).
113
+
114
+ ### Now check `ssr.html`
115
+
116
+ **Look for:**
117
+
118
+ - **`react-dom-server.edge.development-*.js`** (or any `*.development*.js` chunk). This is the dev/prod React doubling. Fix: add `define: { "process.env.NODE_ENV": '"production"' }` to your vite config (see Step 2).
119
+ - **Your client components** appearing in SSR. They're _expected_ here — SSR hydration needs to produce HTML for them. The same components show up in `client.html` too because the browser hydrates them. This is not a leak.
120
+ - **Total SSR size**: a reasonable Rango SSR is ~140 KB gzip plus your app code. If it's >300 KB, almost always (1) dev/prod React duplication or (2) a giant data structure being inlined.
121
+
122
+ ### Now check `rsc.html`
123
+
124
+ **Look for:**
125
+
126
+ - **`virtual:rsc-router/routes-manifest`** should be **tiny** (< 1 KB). If it's > 100 KB, you're on an old version of `@rangojs/router` that inlined the trie eagerly — upgrade to a release that includes commit `d10a2470`.
127
+ - **`virtual:rsc-router/routes-manifest/<hash>`** is the lazy per-router chunk. Its size is proportional to your route count. For a typical app: 5–50 KB gzip. For a stress-test app with thousands of routes: hundreds of KB. If yours is unexpectedly huge, check whether you're generating routes you don't need.
128
+ - **`<your-router>.named-routes.gen.ts`** — generated route map. Should match your route count.
129
+ - **Your action and loader implementations** — these run server-side. Expected to be here, not in client.
130
+ - **Worker-incompatible code** (Node-only imports like `node:fs` that Cloudflare doesn't support). The build will usually fail before the analyzer runs, but if you're seeing runtime errors at the edge, the RSC treemap shows what made it in.
131
+
132
+ ## Step 5: Fix what you find
133
+
134
+ | Finding | Fix |
135
+ | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
136
+ | Your server code in `client.html` (non-zero bytes) | Audit the import chain. Add `"use server"` to server-only files. Move shared data out of barrel files. Use the `@rangojs/router/server` subpath for explicitly server APIs. |
137
+ | Your server code in `client.html` listed but 0 bytes | Tree-shaking already eliminated it. Cosmetic. Leave it. |
138
+ | `react-dom-server.edge.development-*.js` in SSR or RSC | Add the `define` block from Step 2 to your vite config. |
139
+ | Routes-manifest > 100 KB gzip in RSC eager chunk | Update `@rangojs/router` to a release that includes the lazy-only manifest fix. |
140
+ | Same package version present twice | Run `pnpm dedupe` (or `npm dedupe`). If the duplication persists, a transitive dep pins an incompatible version — open a PR upstream or pin the resolution. |
141
+ | Client chunk > 500 KB gzip with a single dominant module | That module is your largest client component. Consider lazy-loading via dynamic `import()` or moving non-interactive parts to server components. |
142
+ | Hundreds of tiny client chunks | You've sprinkled `"use client"` too liberally. Hoist directives to higher boundaries so React groups them. |
143
+
144
+ ## When to re-run
145
+
146
+ - Before every production deploy, especially after adding new dependencies.
147
+ - After upgrading `@rangojs/router`, React, or `@vitejs/plugin-rsc`.
148
+ - After adding routes that scale with data (e.g., one route per item from a content directory) — the manifest may have grown.
149
+ - When CI starts reporting larger artifact sizes.
150
+
151
+ ## Reporting Rango regressions
152
+
153
+ If a finding looks like a `@rangojs/router` regression (the framework is shipping more than it should, not your app), open an issue at the [@rangojs/router GitHub](https://github.com/ivogt/vite-rsc/issues) and include:
154
+
155
+ - The output of `client.html` / `rsc.html` (screenshots or the JSON `data = {...}` block from the HTML).
156
+ - The `@rangojs/router` version (`pnpm why @rangojs/router`).
157
+ - Your `vite.config.ts`.
158
+
159
+ The framework maintainers run a similar audit internally — the methodology in this skill mirrors what they use to validate every release.