@rangojs/router 0.5.1 → 0.5.2

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 (448) hide show
  1. package/README.md +5 -1
  2. package/dist/types/browser/event-controller.d.ts +6 -0
  3. package/dist/types/cache/cf/cf-cache-constants.d.ts +8 -1
  4. package/dist/types/cache/cf/cf-cache-store.d.ts +15 -1
  5. package/dist/types/cache/cf/cf-cache-types.d.ts +1 -1
  6. package/dist/types/cache/cf/cf-kv-utils.d.ts +21 -0
  7. package/dist/types/handles/is-thenable.d.ts +2 -4
  8. package/dist/types/rsc/helpers.d.ts +3 -0
  9. package/dist/types/rsc/render-pipeline.d.ts +9 -0
  10. package/dist/types/rsc/routine-plan.d.ts +124 -0
  11. package/dist/types/rsc/shell-capture-constants.d.ts +17 -0
  12. package/dist/types/server/request-context.d.ts +4 -1
  13. package/dist/types/vite/encryption-key.d.ts +2 -0
  14. package/dist/types/vite/plugins/expose-internal-ids.d.ts +10 -0
  15. package/dist/types/vite/plugins/server-ref-hashing.d.ts +24 -0
  16. package/dist/types/vite/plugins/server-reference-pattern.d.ts +1 -0
  17. package/dist/types/vite/utils/shared-utils.d.ts +12 -0
  18. package/dist/vite/index.js +154 -57
  19. package/package.json +3 -3
  20. package/skills/caching/SKILL.md +1 -1
  21. package/skills/mime-routes/SKILL.md +3 -1
  22. package/skills/response-routes/SKILL.md +4 -2
  23. package/skills/typesafety/generated-files-and-cli.md +16 -9
  24. package/skills/typesafety/route-types.md +5 -1
  25. package/skills/use-cache/SKILL.md +47 -0
  26. package/src/browser/event-controller.ts +40 -15
  27. package/src/browser/partial-update.ts +26 -11
  28. package/src/browser/react/NavigationProvider.tsx +7 -0
  29. package/src/cache/cache-runtime.ts +89 -15
  30. package/src/cache/cf/cf-cache-constants.ts +8 -1
  31. package/src/cache/cf/cf-cache-store.ts +41 -64
  32. package/src/cache/cf/cf-cache-types.ts +1 -1
  33. package/src/cache/cf/cf-kv-utils.ts +38 -0
  34. package/src/cache/segment-codec.ts +21 -5
  35. package/src/handles/is-thenable.ts +2 -4
  36. package/src/router/match-middleware/cache-lookup.ts +24 -15
  37. package/src/rsc/handler.ts +26 -5
  38. package/src/rsc/helpers.ts +13 -0
  39. package/src/rsc/progressive-enhancement.ts +247 -70
  40. package/src/rsc/render-pipeline.ts +68 -24
  41. package/src/rsc/routine-plan.ts +359 -0
  42. package/src/rsc/rsc-rendering.ts +555 -302
  43. package/src/rsc/server-action.ts +180 -71
  44. package/src/rsc/shell-capture-constants.ts +18 -0
  45. package/src/rsc/shell-capture.ts +92 -21
  46. package/src/server/request-context.ts +6 -0
  47. package/src/ssr/ssr-root.tsx +1 -0
  48. package/src/vite/encryption-key.ts +29 -0
  49. package/src/vite/plugins/expose-action-id.ts +2 -2
  50. package/src/vite/plugins/expose-internal-ids.ts +46 -0
  51. package/src/vite/plugins/server-ref-hashing.ts +74 -0
  52. package/src/vite/plugins/server-reference-pattern.ts +10 -0
  53. package/src/vite/rango.ts +9 -0
  54. package/src/vite/router-discovery.ts +21 -2
  55. package/src/vite/utils/shared-utils.ts +12 -7
  56. package/dist/types.backup/__internal.d.ts +0 -127
  57. package/dist/types.backup/bin/rango.d.ts +0 -1
  58. package/dist/types.backup/browser/action-coordinator.d.ts +0 -57
  59. package/dist/types.backup/browser/action-fence.d.ts +0 -33
  60. package/dist/types.backup/browser/app-shell.d.ts +0 -34
  61. package/dist/types.backup/browser/app-version.d.ts +0 -6
  62. package/dist/types.backup/browser/connection-warmup.d.ts +0 -31
  63. package/dist/types.backup/browser/cookie-name.d.ts +0 -66
  64. package/dist/types.backup/browser/event-controller.d.ts +0 -221
  65. package/dist/types.backup/browser/history-state.d.ts +0 -26
  66. package/dist/types.backup/browser/index.d.ts +0 -1
  67. package/dist/types.backup/browser/intercept-utils.d.ts +0 -30
  68. package/dist/types.backup/browser/invalidate-client-cache.d.ts +0 -17
  69. package/dist/types.backup/browser/link-interceptor.d.ts +0 -43
  70. package/dist/types.backup/browser/logging.d.ts +0 -33
  71. package/dist/types.backup/browser/merge-segment-loaders.d.ts +0 -38
  72. package/dist/types.backup/browser/navigation-bridge.d.ts +0 -27
  73. package/dist/types.backup/browser/navigation-client.d.ts +0 -17
  74. package/dist/types.backup/browser/navigation-store-handle.d.ts +0 -25
  75. package/dist/types.backup/browser/navigation-store.d.ts +0 -95
  76. package/dist/types.backup/browser/navigation-transaction.d.ts +0 -75
  77. package/dist/types.backup/browser/network-error-handler.d.ts +0 -35
  78. package/dist/types.backup/browser/partial-update.d.ts +0 -61
  79. package/dist/types.backup/browser/prefetch/cache.d.ts +0 -183
  80. package/dist/types.backup/browser/prefetch/fetch.d.ts +0 -52
  81. package/dist/types.backup/browser/prefetch/observer.d.ts +0 -27
  82. package/dist/types.backup/browser/prefetch/policy.d.ts +0 -13
  83. package/dist/types.backup/browser/prefetch/queue.d.ts +0 -48
  84. package/dist/types.backup/browser/prefetch/resource-ready.d.ts +0 -28
  85. package/dist/types.backup/browser/rango-state.d.ts +0 -52
  86. package/dist/types.backup/browser/react/Link.d.ts +0 -140
  87. package/dist/types.backup/browser/react/NavigationProvider.d.ts +0 -88
  88. package/dist/types.backup/browser/react/ScrollRestoration.d.ts +0 -78
  89. package/dist/types.backup/browser/react/context.d.ts +0 -54
  90. package/dist/types.backup/browser/react/filter-segment-order.d.ts +0 -35
  91. package/dist/types.backup/browser/react/index.d.ts +0 -1
  92. package/dist/types.backup/browser/react/location-state-shared.d.ts +0 -162
  93. package/dist/types.backup/browser/react/location-state.d.ts +0 -29
  94. package/dist/types.backup/browser/react/mount-context.d.ts +0 -23
  95. package/dist/types.backup/browser/react/nonce-context.d.ts +0 -14
  96. package/dist/types.backup/browser/react/shallow-equal.d.ts +0 -5
  97. package/dist/types.backup/browser/react/use-action.d.ts +0 -61
  98. package/dist/types.backup/browser/react/use-handle.d.ts +0 -21
  99. package/dist/types.backup/browser/react/use-href.d.ts +0 -32
  100. package/dist/types.backup/browser/react/use-link-status.d.ts +0 -36
  101. package/dist/types.backup/browser/react/use-mount.d.ts +0 -24
  102. package/dist/types.backup/browser/react/use-navigation.d.ts +0 -15
  103. package/dist/types.backup/browser/react/use-params.d.ts +0 -21
  104. package/dist/types.backup/browser/react/use-pathname.d.ts +0 -13
  105. package/dist/types.backup/browser/react/use-reverse.d.ts +0 -40
  106. package/dist/types.backup/browser/react/use-router.d.ts +0 -23
  107. package/dist/types.backup/browser/react/use-search-params.d.ts +0 -19
  108. package/dist/types.backup/browser/react/use-segments.d.ts +0 -29
  109. package/dist/types.backup/browser/response-adapter.d.ts +0 -58
  110. package/dist/types.backup/browser/rsc-router.d.ts +0 -141
  111. package/dist/types.backup/browser/scroll-restoration.d.ts +0 -103
  112. package/dist/types.backup/browser/segment-reconciler.d.ts +0 -74
  113. package/dist/types.backup/browser/segment-structure-assert.d.ts +0 -16
  114. package/dist/types.backup/browser/server-action-bridge.d.ts +0 -29
  115. package/dist/types.backup/browser/types.d.ts +0 -530
  116. package/dist/types.backup/browser/validate-redirect-origin.d.ts +0 -28
  117. package/dist/types.backup/build/collect-fallback-refs.d.ts +0 -5
  118. package/dist/types.backup/build/generate-manifest.d.ts +0 -100
  119. package/dist/types.backup/build/generate-route-types.d.ts +0 -8
  120. package/dist/types.backup/build/index.d.ts +0 -21
  121. package/dist/types.backup/build/prefix-tree-utils.d.ts +0 -56
  122. package/dist/types.backup/build/route-trie.d.ts +0 -89
  123. package/dist/types.backup/build/route-types/ast-helpers.d.ts +0 -3
  124. package/dist/types.backup/build/route-types/ast-route-extraction.d.ts +0 -13
  125. package/dist/types.backup/build/route-types/codegen.d.ts +0 -16
  126. package/dist/types.backup/build/route-types/include-resolution.d.ts +0 -74
  127. package/dist/types.backup/build/route-types/param-extraction.d.ts +0 -13
  128. package/dist/types.backup/build/route-types/per-module-writer.d.ts +0 -18
  129. package/dist/types.backup/build/route-types/router-processing.d.ts +0 -82
  130. package/dist/types.backup/build/route-types/scan-filter.d.ts +0 -17
  131. package/dist/types.backup/build/route-types/source-scan.d.ts +0 -13
  132. package/dist/types.backup/build/runtime-discovery.d.ts +0 -24
  133. package/dist/types.backup/cache/background-task.d.ts +0 -21
  134. package/dist/types.backup/cache/cache-error.d.ts +0 -71
  135. package/dist/types.backup/cache/cache-key-utils.d.ts +0 -35
  136. package/dist/types.backup/cache/cache-policy.d.ts +0 -59
  137. package/dist/types.backup/cache/cache-runtime.d.ts +0 -51
  138. package/dist/types.backup/cache/cache-scope.d.ts +0 -134
  139. package/dist/types.backup/cache/cache-tag.d.ts +0 -79
  140. package/dist/types.backup/cache/cf/cf-base64.d.ts +0 -4
  141. package/dist/types.backup/cache/cf/cf-cache-constants.d.ts +0 -105
  142. package/dist/types.backup/cache/cf/cf-cache-store.d.ts +0 -481
  143. package/dist/types.backup/cache/cf/cf-cache-types.d.ts +0 -300
  144. package/dist/types.backup/cache/cf/cf-kv-utils.d.ts +0 -22
  145. package/dist/types.backup/cache/cf/cf-tag-marker-memo.d.ts +0 -15
  146. package/dist/types.backup/cache/cf/index.d.ts +0 -3
  147. package/dist/types.backup/cache/document-cache.d.ts +0 -69
  148. package/dist/types.backup/cache/handle-capture.d.ts +0 -23
  149. package/dist/types.backup/cache/handle-snapshot.d.ts +0 -39
  150. package/dist/types.backup/cache/index.d.ts +0 -7
  151. package/dist/types.backup/cache/memory-segment-store.d.ts +0 -163
  152. package/dist/types.backup/cache/profile-registry.d.ts +0 -40
  153. package/dist/types.backup/cache/read-through-swr.d.ts +0 -60
  154. package/dist/types.backup/cache/segment-codec.d.ts +0 -78
  155. package/dist/types.backup/cache/shell-snapshot.d.ts +0 -162
  156. package/dist/types.backup/cache/tag-invalidation.d.ts +0 -74
  157. package/dist/types.backup/cache/taint.d.ts +0 -71
  158. package/dist/types.backup/cache/types.d.ts +0 -407
  159. package/dist/types.backup/cache/vercel/index.d.ts +0 -1
  160. package/dist/types.backup/cache/vercel/vercel-cache-store.d.ts +0 -267
  161. package/dist/types.backup/client.d.ts +0 -184
  162. package/dist/types.backup/client.rsc.d.ts +0 -39
  163. package/dist/types.backup/cloudflare/index.d.ts +0 -7
  164. package/dist/types.backup/cloudflare/tracing.d.ts +0 -53
  165. package/dist/types.backup/component-utils.d.ts +0 -46
  166. package/dist/types.backup/components/DefaultDocument.d.ts +0 -13
  167. package/dist/types.backup/context-var.d.ts +0 -84
  168. package/dist/types.backup/debug.d.ts +0 -57
  169. package/dist/types.backup/decode-loader-results.d.ts +0 -5
  170. package/dist/types.backup/default-error-boundary.d.ts +0 -10
  171. package/dist/types.backup/defer.d.ts +0 -89
  172. package/dist/types.backup/deps/browser.d.ts +0 -1
  173. package/dist/types.backup/deps/html-stream-client.d.ts +0 -1
  174. package/dist/types.backup/deps/html-stream-server.d.ts +0 -1
  175. package/dist/types.backup/deps/rsc.d.ts +0 -1
  176. package/dist/types.backup/deps/ssr.d.ts +0 -1
  177. package/dist/types.backup/encode-kv.d.ts +0 -35
  178. package/dist/types.backup/errors.d.ts +0 -226
  179. package/dist/types.backup/escape-script.d.ts +0 -44
  180. package/dist/types.backup/handle.d.ts +0 -93
  181. package/dist/types.backup/handles/MetaTags.d.ts +0 -17
  182. package/dist/types.backup/handles/Scripts.d.ts +0 -38
  183. package/dist/types.backup/handles/breadcrumbs.d.ts +0 -43
  184. package/dist/types.backup/handles/deferred-resolution.d.ts +0 -53
  185. package/dist/types.backup/handles/is-thenable.d.ts +0 -12
  186. package/dist/types.backup/handles/meta.d.ts +0 -43
  187. package/dist/types.backup/handles/script.d.ts +0 -139
  188. package/dist/types.backup/host/cookie-handler.d.ts +0 -8
  189. package/dist/types.backup/host/errors.d.ts +0 -40
  190. package/dist/types.backup/host/index.d.ts +0 -33
  191. package/dist/types.backup/host/pattern-matcher.d.ts +0 -30
  192. package/dist/types.backup/host/router.d.ts +0 -12
  193. package/dist/types.backup/host/testing.d.ts +0 -41
  194. package/dist/types.backup/host/types.d.ts +0 -148
  195. package/dist/types.backup/host/utils.d.ts +0 -20
  196. package/dist/types.backup/href-client.d.ts +0 -214
  197. package/dist/types.backup/index.d.ts +0 -112
  198. package/dist/types.backup/index.rsc.d.ts +0 -51
  199. package/dist/types.backup/internal-debug.d.ts +0 -1
  200. package/dist/types.backup/loader-store.d.ts +0 -193
  201. package/dist/types.backup/loader.d.ts +0 -18
  202. package/dist/types.backup/loader.rsc.d.ts +0 -18
  203. package/dist/types.backup/missing-id-error.d.ts +0 -1
  204. package/dist/types.backup/outlet-context.d.ts +0 -12
  205. package/dist/types.backup/outlet-provider.d.ts +0 -12
  206. package/dist/types.backup/prerender/build-shell-capture.d.ts +0 -104
  207. package/dist/types.backup/prerender/param-hash.d.ts +0 -6
  208. package/dist/types.backup/prerender/shell-manifest-key.d.ts +0 -18
  209. package/dist/types.backup/prerender/store.d.ts +0 -62
  210. package/dist/types.backup/prerender.d.ts +0 -292
  211. package/dist/types.backup/redirect-origin.d.ts +0 -55
  212. package/dist/types.backup/regex-escape.d.ts +0 -6
  213. package/dist/types.backup/render-error-thrower.d.ts +0 -13
  214. package/dist/types.backup/response-utils.d.ts +0 -35
  215. package/dist/types.backup/reverse.d.ts +0 -206
  216. package/dist/types.backup/root-error-boundary.d.ts +0 -32
  217. package/dist/types.backup/route-content-wrapper.d.ts +0 -40
  218. package/dist/types.backup/route-definition/dsl-helpers.d.ts +0 -130
  219. package/dist/types.backup/route-definition/helper-factories.d.ts +0 -22
  220. package/dist/types.backup/route-definition/helpers-types.d.ts +0 -392
  221. package/dist/types.backup/route-definition/index.d.ts +0 -7
  222. package/dist/types.backup/route-definition/redirect.d.ts +0 -48
  223. package/dist/types.backup/route-definition/resolve-handler-use.d.ts +0 -19
  224. package/dist/types.backup/route-definition/use-item-types.d.ts +0 -1
  225. package/dist/types.backup/route-definition.d.ts +0 -1
  226. package/dist/types.backup/route-map-builder.d.ts +0 -127
  227. package/dist/types.backup/route-name.d.ts +0 -27
  228. package/dist/types.backup/route-types.d.ts +0 -172
  229. package/dist/types.backup/router/basename.d.ts +0 -10
  230. package/dist/types.backup/router/content-negotiation.d.ts +0 -91
  231. package/dist/types.backup/router/debug-manifest.d.ts +0 -7
  232. package/dist/types.backup/router/error-handling.d.ts +0 -76
  233. package/dist/types.backup/router/find-match.d.ts +0 -19
  234. package/dist/types.backup/router/handler-context.d.ts +0 -41
  235. package/dist/types.backup/router/instrument.d.ts +0 -161
  236. package/dist/types.backup/router/intercept-resolution.d.ts +0 -79
  237. package/dist/types.backup/router/lazy-includes.d.ts +0 -26
  238. package/dist/types.backup/router/loader-resolution.d.ts +0 -63
  239. package/dist/types.backup/router/logging.d.ts +0 -41
  240. package/dist/types.backup/router/manifest.d.ts +0 -8
  241. package/dist/types.backup/router/match-api.d.ts +0 -19
  242. package/dist/types.backup/router/match-context.d.ts +0 -184
  243. package/dist/types.backup/router/match-handlers.d.ts +0 -49
  244. package/dist/types.backup/router/match-middleware/background-revalidation.d.ts +0 -113
  245. package/dist/types.backup/router/match-middleware/cache-lookup.d.ts +0 -113
  246. package/dist/types.backup/router/match-middleware/cache-store.d.ts +0 -112
  247. package/dist/types.backup/router/match-middleware/index.d.ts +0 -80
  248. package/dist/types.backup/router/match-middleware/intercept-resolution.d.ts +0 -116
  249. package/dist/types.backup/router/match-middleware/segment-resolution.d.ts +0 -94
  250. package/dist/types.backup/router/match-pipelines.d.ts +0 -103
  251. package/dist/types.backup/router/match-result.d.ts +0 -114
  252. package/dist/types.backup/router/metrics.d.ts +0 -6
  253. package/dist/types.backup/router/middleware-types.d.ts +0 -74
  254. package/dist/types.backup/router/middleware.d.ts +0 -116
  255. package/dist/types.backup/router/navigation-snapshot.d.ts +0 -22
  256. package/dist/types.backup/router/params-util.d.ts +0 -8
  257. package/dist/types.backup/router/parse-pattern.d.ts +0 -38
  258. package/dist/types.backup/router/pattern-matching.d.ts +0 -169
  259. package/dist/types.backup/router/prefetch-cache-ttl.d.ts +0 -27
  260. package/dist/types.backup/router/prefetch-limits.d.ts +0 -20
  261. package/dist/types.backup/router/prerender-match.d.ts +0 -50
  262. package/dist/types.backup/router/preview-match.d.ts +0 -22
  263. package/dist/types.backup/router/request-classification.d.ts +0 -104
  264. package/dist/types.backup/router/revalidation.d.ts +0 -57
  265. package/dist/types.backup/router/route-snapshot.d.ts +0 -112
  266. package/dist/types.backup/router/router-context.d.ts +0 -137
  267. package/dist/types.backup/router/router-interfaces.d.ts +0 -432
  268. package/dist/types.backup/router/router-options.d.ts +0 -738
  269. package/dist/types.backup/router/router-registry.d.ts +0 -15
  270. package/dist/types.backup/router/segment-resolution/fresh.d.ts +0 -55
  271. package/dist/types.backup/router/segment-resolution/helpers.d.ts +0 -93
  272. package/dist/types.backup/router/segment-resolution/loader-cache.d.ts +0 -33
  273. package/dist/types.backup/router/segment-resolution/loader-mask.d.ts +0 -44
  274. package/dist/types.backup/router/segment-resolution/loader-snapshot.d.ts +0 -90
  275. package/dist/types.backup/router/segment-resolution/mask-nested.d.ts +0 -53
  276. package/dist/types.backup/router/segment-resolution/revalidation.d.ts +0 -85
  277. package/dist/types.backup/router/segment-resolution/static-store.d.ts +0 -17
  278. package/dist/types.backup/router/segment-resolution/streamed-handler-telemetry.d.ts +0 -16
  279. package/dist/types.backup/router/segment-resolution/view-transition-default.d.ts +0 -28
  280. package/dist/types.backup/router/segment-resolution.d.ts +0 -3
  281. package/dist/types.backup/router/segment-wrappers.d.ts +0 -53
  282. package/dist/types.backup/router/state-cookie-name.d.ts +0 -1
  283. package/dist/types.backup/router/substitute-pattern-params.d.ts +0 -23
  284. package/dist/types.backup/router/telemetry-otel.d.ts +0 -113
  285. package/dist/types.backup/router/telemetry.d.ts +0 -215
  286. package/dist/types.backup/router/timeout.d.ts +0 -68
  287. package/dist/types.backup/router/tracing.d.ts +0 -125
  288. package/dist/types.backup/router/trie-matching.d.ts +0 -32
  289. package/dist/types.backup/router/types.d.ts +0 -98
  290. package/dist/types.backup/router/url-params.d.ts +0 -26
  291. package/dist/types.backup/router.d.ts +0 -7
  292. package/dist/types.backup/rsc/capture-queue.d.ts +0 -6
  293. package/dist/types.backup/rsc/full-payload.d.ts +0 -22
  294. package/dist/types.backup/rsc/handler-context.d.ts +0 -31
  295. package/dist/types.backup/rsc/handler.d.ts +0 -9
  296. package/dist/types.backup/rsc/helpers.d.ts +0 -213
  297. package/dist/types.backup/rsc/index.d.ts +0 -17
  298. package/dist/types.backup/rsc/json-route-result.d.ts +0 -20
  299. package/dist/types.backup/rsc/loader-fetch.d.ts +0 -14
  300. package/dist/types.backup/rsc/manifest-init.d.ts +0 -18
  301. package/dist/types.backup/rsc/nonce.d.ts +0 -28
  302. package/dist/types.backup/rsc/origin-guard.d.ts +0 -50
  303. package/dist/types.backup/rsc/progressive-enhancement.d.ts +0 -19
  304. package/dist/types.backup/rsc/redirect-guard.d.ts +0 -35
  305. package/dist/types.backup/rsc/response-cache-serve.d.ts +0 -46
  306. package/dist/types.backup/rsc/response-error.d.ts +0 -19
  307. package/dist/types.backup/rsc/response-route-handler.d.ts +0 -29
  308. package/dist/types.backup/rsc/rsc-rendering.d.ts +0 -23
  309. package/dist/types.backup/rsc/runtime-warnings.d.ts +0 -22
  310. package/dist/types.backup/rsc/server-action.d.ts +0 -68
  311. package/dist/types.backup/rsc/shell-build-manifest.d.ts +0 -84
  312. package/dist/types.backup/rsc/shell-capture-constants.d.ts +0 -27
  313. package/dist/types.backup/rsc/shell-capture.d.ts +0 -374
  314. package/dist/types.backup/rsc/shell-serve.d.ts +0 -136
  315. package/dist/types.backup/rsc/ssr-setup.d.ts +0 -48
  316. package/dist/types.backup/rsc/transition-gate.d.ts +0 -27
  317. package/dist/types.backup/rsc/types.d.ts +0 -290
  318. package/dist/types.backup/runtime-env.d.ts +0 -1
  319. package/dist/types.backup/search-params.d.ts +0 -125
  320. package/dist/types.backup/segment-content-promise.d.ts +0 -13
  321. package/dist/types.backup/segment-fragments.d.ts +0 -56
  322. package/dist/types.backup/segment-loader-promise.d.ts +0 -22
  323. package/dist/types.backup/segment-system.d.ts +0 -84
  324. package/dist/types.backup/serialize.d.ts +0 -164
  325. package/dist/types.backup/server/context.d.ts +0 -494
  326. package/dist/types.backup/server/cookie-parse.d.ts +0 -10
  327. package/dist/types.backup/server/cookie-store.d.ts +0 -107
  328. package/dist/types.backup/server/fetchable-loader-store.d.ts +0 -20
  329. package/dist/types.backup/server/handle-store.d.ts +0 -100
  330. package/dist/types.backup/server/loader-registry.d.ts +0 -32
  331. package/dist/types.backup/server/request-context.d.ts +0 -596
  332. package/dist/types.backup/server/root-layout.d.ts +0 -3
  333. package/dist/types.backup/server.d.ts +0 -15
  334. package/dist/types.backup/ssr/index.d.ts +0 -233
  335. package/dist/types.backup/ssr/inject-rsc-eager.d.ts +0 -3
  336. package/dist/types.backup/ssr/preinit-client-references.d.ts +0 -71
  337. package/dist/types.backup/ssr/ssr-root.d.ts +0 -69
  338. package/dist/types.backup/static-handler.d.ts +0 -57
  339. package/dist/types.backup/testing/cache-status.d.ts +0 -63
  340. package/dist/types.backup/testing/collect-handle.d.ts +0 -20
  341. package/dist/types.backup/testing/dispatch.d.ts +0 -123
  342. package/dist/types.backup/testing/dom.entry.d.ts +0 -15
  343. package/dist/types.backup/testing/e2e/fixture.d.ts +0 -37
  344. package/dist/types.backup/testing/e2e/index.d.ts +0 -30
  345. package/dist/types.backup/testing/e2e/matchers.d.ts +0 -17
  346. package/dist/types.backup/testing/e2e/page-helpers.d.ts +0 -62
  347. package/dist/types.backup/testing/e2e/parity.d.ts +0 -111
  348. package/dist/types.backup/testing/e2e/server.d.ts +0 -35
  349. package/dist/types.backup/testing/flight-matchers.d.ts +0 -55
  350. package/dist/types.backup/testing/flight-normalize.d.ts +0 -1
  351. package/dist/types.backup/testing/flight-tree.d.ts +0 -192
  352. package/dist/types.backup/testing/flight.d.ts +0 -115
  353. package/dist/types.backup/testing/flight.entry.d.ts +0 -27
  354. package/dist/types.backup/testing/generated-routes.d.ts +0 -66
  355. package/dist/types.backup/testing/index.d.ts +0 -52
  356. package/dist/types.backup/testing/internal/context.d.ts +0 -225
  357. package/dist/types.backup/testing/internal/flight-client-globals.d.ts +0 -1
  358. package/dist/types.backup/testing/internal/seed-vars.d.ts +0 -30
  359. package/dist/types.backup/testing/render-handler.d.ts +0 -160
  360. package/dist/types.backup/testing/render-route.d.ts +0 -246
  361. package/dist/types.backup/testing/run-loader.d.ts +0 -186
  362. package/dist/types.backup/testing/run-middleware.d.ts +0 -132
  363. package/dist/types.backup/testing/run-transition-when.d.ts +0 -77
  364. package/dist/types.backup/testing/vitest-stubs/cloudflare-email.d.ts +0 -6
  365. package/dist/types.backup/testing/vitest-stubs/cloudflare-workers.d.ts +0 -13
  366. package/dist/types.backup/testing/vitest-stubs/plugin-rsc.d.ts +0 -7
  367. package/dist/types.backup/testing/vitest-stubs/version.d.ts +0 -1
  368. package/dist/types.backup/testing/vitest.d.ts +0 -205
  369. package/dist/types.backup/theme/ThemeProvider.d.ts +0 -13
  370. package/dist/types.backup/theme/ThemeScript.d.ts +0 -45
  371. package/dist/types.backup/theme/constants.d.ts +0 -39
  372. package/dist/types.backup/theme/index.d.ts +0 -29
  373. package/dist/types.backup/theme/theme-context.d.ts +0 -21
  374. package/dist/types.backup/theme/theme-script.d.ts +0 -26
  375. package/dist/types.backup/theme/types.d.ts +0 -162
  376. package/dist/types.backup/theme/use-theme.d.ts +0 -8
  377. package/dist/types.backup/types/boundaries.d.ts +0 -93
  378. package/dist/types.backup/types/cache-types.d.ts +0 -191
  379. package/dist/types.backup/types/error-types.d.ts +0 -114
  380. package/dist/types.backup/types/global-namespace.d.ts +0 -90
  381. package/dist/types.backup/types/handler-context.d.ts +0 -658
  382. package/dist/types.backup/types/index.d.ts +0 -11
  383. package/dist/types.backup/types/loader-types.d.ts +0 -182
  384. package/dist/types.backup/types/request-scope.d.ts +0 -93
  385. package/dist/types.backup/types/route-config.d.ts +0 -105
  386. package/dist/types.backup/types/route-entry.d.ts +0 -95
  387. package/dist/types.backup/types/segments.d.ts +0 -234
  388. package/dist/types.backup/types.d.ts +0 -1
  389. package/dist/types.backup/urls/include-helper.d.ts +0 -17
  390. package/dist/types.backup/urls/include-provider.d.ts +0 -27
  391. package/dist/types.backup/urls/index.d.ts +0 -6
  392. package/dist/types.backup/urls/path-helper-types.d.ts +0 -197
  393. package/dist/types.backup/urls/path-helper.d.ts +0 -12
  394. package/dist/types.backup/urls/pattern-types.d.ts +0 -166
  395. package/dist/types.backup/urls/response-types.d.ts +0 -67
  396. package/dist/types.backup/urls/type-extraction.d.ts +0 -157
  397. package/dist/types.backup/urls/urls-function.d.ts +0 -24
  398. package/dist/types.backup/urls.d.ts +0 -1
  399. package/dist/types.backup/use-loader.d.ts +0 -150
  400. package/dist/types.backup/vercel/index.d.ts +0 -10
  401. package/dist/types.backup/vercel/tracing.d.ts +0 -70
  402. package/dist/types.backup/vite/debug.d.ts +0 -80
  403. package/dist/types.backup/vite/discovery/bundle-postprocess.d.ts +0 -12
  404. package/dist/types.backup/vite/discovery/dev-prerender-cache.d.ts +0 -65
  405. package/dist/types.backup/vite/discovery/discover-routers.d.ts +0 -17
  406. package/dist/types.backup/vite/discovery/discovery-errors.d.ts +0 -113
  407. package/dist/types.backup/vite/discovery/gate-state.d.ts +0 -79
  408. package/dist/types.backup/vite/discovery/prerender-collection.d.ts +0 -24
  409. package/dist/types.backup/vite/discovery/route-types-writer.d.ts +0 -32
  410. package/dist/types.backup/vite/discovery/self-gen-tracking.d.ts +0 -22
  411. package/dist/types.backup/vite/discovery/shell-prerender-phase.d.ts +0 -40
  412. package/dist/types.backup/vite/discovery/state.d.ts +0 -162
  413. package/dist/types.backup/vite/discovery/virtual-module-codegen.d.ts +0 -15
  414. package/dist/types.backup/vite/index.d.ts +0 -11
  415. package/dist/types.backup/vite/inject-client-debug.d.ts +0 -56
  416. package/dist/types.backup/vite/plugin-types.d.ts +0 -298
  417. package/dist/types.backup/vite/plugins/cjs-to-esm.d.ts +0 -6
  418. package/dist/types.backup/vite/plugins/client-ref-dedup.d.ts +0 -40
  419. package/dist/types.backup/vite/plugins/client-ref-hashing.d.ts +0 -35
  420. package/dist/types.backup/vite/plugins/cloudflare-protocol-stub.d.ts +0 -64
  421. package/dist/types.backup/vite/plugins/expose-action-id.d.ts +0 -18
  422. package/dist/types.backup/vite/plugins/expose-id-utils.d.ts +0 -37
  423. package/dist/types.backup/vite/plugins/expose-ids/export-analysis.d.ts +0 -19
  424. package/dist/types.backup/vite/plugins/expose-ids/handler-transform.d.ts +0 -10
  425. package/dist/types.backup/vite/plugins/expose-ids/loader-transform.d.ts +0 -8
  426. package/dist/types.backup/vite/plugins/expose-ids/router-transform.d.ts +0 -13
  427. package/dist/types.backup/vite/plugins/expose-ids/types.d.ts +0 -29
  428. package/dist/types.backup/vite/plugins/expose-internal-ids.d.ts +0 -6
  429. package/dist/types.backup/vite/plugins/performance-tracks.d.ts +0 -25
  430. package/dist/types.backup/vite/plugins/refresh-cmd.d.ts +0 -20
  431. package/dist/types.backup/vite/plugins/use-cache-transform.d.ts +0 -20
  432. package/dist/types.backup/vite/plugins/vercel-output.d.ts +0 -85
  433. package/dist/types.backup/vite/plugins/version-injector.d.ts +0 -21
  434. package/dist/types.backup/vite/plugins/version-plugin.d.ts +0 -19
  435. package/dist/types.backup/vite/plugins/virtual-entries.d.ts +0 -36
  436. package/dist/types.backup/vite/plugins/virtual-stub-plugin.d.ts +0 -7
  437. package/dist/types.backup/vite/rango.d.ts +0 -29
  438. package/dist/types.backup/vite/router-discovery.d.ts +0 -23
  439. package/dist/types.backup/vite/utils/ast-handler-extract.d.ts +0 -64
  440. package/dist/types.backup/vite/utils/banner.d.ts +0 -2
  441. package/dist/types.backup/vite/utils/bundle-analysis.d.ts +0 -28
  442. package/dist/types.backup/vite/utils/client-chunks.d.ts +0 -55
  443. package/dist/types.backup/vite/utils/directive-prologue.d.ts +0 -16
  444. package/dist/types.backup/vite/utils/forward-user-plugins.d.ts +0 -37
  445. package/dist/types.backup/vite/utils/manifest-utils.d.ts +0 -7
  446. package/dist/types.backup/vite/utils/package-resolution.d.ts +0 -6
  447. package/dist/types.backup/vite/utils/prerender-utils.d.ts +0 -32
  448. package/dist/types.backup/vite/utils/shared-utils.d.ts +0 -55
@@ -22,26 +22,26 @@ function createRangoDebugger(namespace) {
22
22
  if (shadow.enabled) return shadow;
23
23
  return void 0;
24
24
  }
25
- async function timed(debug12, label, fn) {
26
- if (!debug12) return await fn();
25
+ async function timed(debug13, label, fn) {
26
+ if (!debug13) return await fn();
27
27
  const start = performance.now();
28
28
  try {
29
29
  return await fn();
30
30
  } finally {
31
- debug12("%s (%sms)", label, (performance.now() - start).toFixed(1));
31
+ debug13("%s (%sms)", label, (performance.now() - start).toFixed(1));
32
32
  }
33
33
  }
34
- function timedSync(debug12, label, fn) {
35
- if (!debug12) return fn();
34
+ function timedSync(debug13, label, fn) {
35
+ if (!debug13) return fn();
36
36
  const start = performance.now();
37
37
  try {
38
38
  return fn();
39
39
  } finally {
40
- debug12("%s (%sms)", label, (performance.now() - start).toFixed(1));
40
+ debug13("%s (%sms)", label, (performance.now() - start).toFixed(1));
41
41
  }
42
42
  }
43
- function createCounter(debug12, label) {
44
- if (!debug12) return void 0;
43
+ function createCounter(debug13, label) {
44
+ if (!debug13) return void 0;
45
45
  let n = 0;
46
46
  let totalMs = 0;
47
47
  let slowestMs = 0;
@@ -75,7 +75,7 @@ function createCounter(debug12, label) {
75
75
  },
76
76
  flush() {
77
77
  if (n === 0) return;
78
- debug12(
78
+ debug13(
79
79
  "%s: %d files, %sms total, slowest %sms %s",
80
80
  label,
81
81
  n,
@@ -446,6 +446,11 @@ function findCallParenAfterGenerics(code, afterCalleeIndex) {
446
446
  return -1;
447
447
  }
448
448
 
449
+ // src/vite/plugins/server-reference-pattern.ts
450
+ function registerServerReferenceRegex() {
451
+ return /registerServerReference\(([^,]+),\s*"([^"]+)",\s*"([^"]+)"\)/g;
452
+ }
453
+
449
454
  // src/vite/plugins/expose-action-id.ts
450
455
  init_debug();
451
456
  var debug = createRangoDebugger(NS.transform);
@@ -515,7 +520,7 @@ function applyRegisterReferenceWrapping(code, s, hashToFileMap) {
515
520
  if (!code.includes("registerServerReference(")) {
516
521
  return false;
517
522
  }
518
- const pattern = /registerServerReference\(([^,]+),\s*"([^"]+)",\s*"([^"]+)"\)/g;
523
+ const pattern = registerServerReferenceRegex();
519
524
  let hasChanges = false;
520
525
  let match;
521
526
  while ((match = pattern.exec(code)) !== null) {
@@ -627,6 +632,17 @@ function exposeActionId() {
627
632
  };
628
633
  }
629
634
 
635
+ // src/vite/encryption-key.ts
636
+ import { randomBytes } from "node:crypto";
637
+ var cachedKey;
638
+ function buildEncryptionKey() {
639
+ cachedKey ??= process.env.RANGO_ENCRYPTION_KEY ?? randomBytes(32).toString("base64");
640
+ return cachedKey;
641
+ }
642
+ function defineEncryptionKeyExpr() {
643
+ return JSON.stringify(buildEncryptionKey());
644
+ }
645
+
630
646
  // src/vite/plugins/expose-internal-ids.ts
631
647
  import { parseAst as parseAst2 } from "vite";
632
648
  import MagicString3 from "magic-string";
@@ -1527,6 +1543,27 @@ var debug3 = createRangoDebugger(NS.transform);
1527
1543
  var VIRTUAL_LOADER_MANIFEST = "virtual:rsc-router/loader-manifest";
1528
1544
  var RESOLVED_VIRTUAL_LOADER_MANIFEST = "\0" + VIRTUAL_LOADER_MANIFEST;
1529
1545
  var VIRTUAL_HANDLER_PREFIX = "virtual:handler-extract:";
1546
+ function createLoaderScanStubPlugin() {
1547
+ let projectRoot = "";
1548
+ let rscApi;
1549
+ return {
1550
+ name: "@rangojs/router:loader-scan-stubs",
1551
+ apply: "build",
1552
+ configResolved(config) {
1553
+ projectRoot = config.root;
1554
+ rscApi = config.plugins.find((plugin) => plugin.name === "rsc:minimal")?.api;
1555
+ },
1556
+ transform(code, id) {
1557
+ if (!rscApi?.manager?.isScanBuild || this.environment?.name === "rsc" || id.includes("/node_modules/") || !code.includes("createLoader") || !hasCreateLoaderImport(code)) {
1558
+ return;
1559
+ }
1560
+ const fnNames = getImportedFnNames(code, "createLoader");
1561
+ const bindings = collectCreateExportBindings(code, fnNames);
1562
+ const filePath = normalizePath(path4.relative(projectRoot, id));
1563
+ return generateClientLoaderStubs(bindings, code, filePath, true) ?? void 0;
1564
+ }
1565
+ };
1566
+ }
1530
1567
  function exposeInternalIds(options) {
1531
1568
  let config;
1532
1569
  let isBuild = false;
@@ -2530,7 +2567,7 @@ import { resolve } from "node:path";
2530
2567
  // package.json
2531
2568
  var package_default = {
2532
2569
  name: "@rangojs/router",
2533
- version: "0.5.1",
2570
+ version: "0.5.2",
2534
2571
  description: "Django-inspired RSC router with composable URL patterns",
2535
2572
  keywords: [
2536
2573
  "react",
@@ -2721,7 +2758,7 @@ var package_default = {
2721
2758
  },
2722
2759
  dependencies: {
2723
2760
  "@types/debug": "^4.1.12",
2724
- "@vitejs/plugin-rsc": "^0.5.27",
2761
+ "@vitejs/plugin-rsc": "^0.5.30",
2725
2762
  debug: "^4.4.1",
2726
2763
  "magic-string": "^0.30.17",
2727
2764
  picomatch: "^4.0.4",
@@ -2754,7 +2791,7 @@ var package_default = {
2754
2791
  "@playwright/test": "^1.49.1",
2755
2792
  "@testing-library/react": ">=16",
2756
2793
  "@vercel/functions": "^3.0.0",
2757
- "@vitejs/plugin-rsc": "^0.5.27",
2794
+ "@vitejs/plugin-rsc": "^0.5.30",
2758
2795
  react: ">=19.2.6 <20",
2759
2796
  "react-dom": ">=19.2.6 <20",
2760
2797
  vite: "^8.0.16",
@@ -4251,11 +4288,6 @@ function onwarn(warning, defaultHandler) {
4251
4288
  }
4252
4289
  function getManualChunks(id) {
4253
4290
  const normalized = Vite.normalizePath(id);
4254
- if (/\/browser\/prefetch\/(?:runtime|fetch|queue|observer|policy|resource-ready)\.[cm]?[jt]sx?(?:[?#].*)?$/.test(
4255
- normalized
4256
- )) {
4257
- return void 0;
4258
- }
4259
4291
  if (normalized.includes("node_modules/react/") || normalized.includes("node_modules/react-dom/") || normalized.includes("node_modules/react-server-dom-webpack/") || normalized.includes("node_modules/@vitejs/plugin-rsc/")) {
4260
4292
  return "react";
4261
4293
  }
@@ -4887,6 +4919,49 @@ function walk(node, visit) {
4887
4919
  // src/vite/router-discovery.ts
4888
4920
  init_client_ref_hashing();
4889
4921
 
4922
+ // src/vite/plugins/server-ref-hashing.ts
4923
+ init_debug();
4924
+ init_client_ref_hashing();
4925
+ var debug9 = createRangoDebugger(NS.transform);
4926
+ function transformServerRefs(code, projectRoot) {
4927
+ if (!code.includes("registerServerReference")) return null;
4928
+ let hasReplacement = false;
4929
+ const result = code.replace(
4930
+ registerServerReferenceRegex(),
4931
+ (match, _value, refKey) => {
4932
+ const cleanKey = refKey.split("?")[0];
4933
+ const hash = computeProductionHash(projectRoot, cleanKey);
4934
+ if (hash === cleanKey) return match;
4935
+ hasReplacement = true;
4936
+ return match.replace(`"${refKey}"`, `"${hash}"`);
4937
+ }
4938
+ );
4939
+ return hasReplacement ? result : null;
4940
+ }
4941
+ function hashServerRefs(projectRoot) {
4942
+ const counter = createCounter(debug9, "hash-server-refs");
4943
+ return {
4944
+ name: "@rangojs/router:hash-server-refs",
4945
+ enforce: "post",
4946
+ applyToEnvironment(env) {
4947
+ return env.name === "rsc";
4948
+ },
4949
+ buildEnd() {
4950
+ counter?.flush();
4951
+ },
4952
+ transform(code, id) {
4953
+ const start = counter ? performance.now() : 0;
4954
+ try {
4955
+ const result = transformServerRefs(code, projectRoot);
4956
+ if (result === null) return;
4957
+ return { code: result, map: null };
4958
+ } finally {
4959
+ counter?.record(id, performance.now() - start);
4960
+ }
4961
+ }
4962
+ };
4963
+ }
4964
+
4890
4965
  // src/vite/utils/bundle-analysis.ts
4891
4966
  function findMatchingParenInBundle(code, openParenPos) {
4892
4967
  let depth = 1;
@@ -5605,11 +5680,11 @@ function copyStagedBuildAssets(projectRoot, fileNames) {
5605
5680
 
5606
5681
  // src/vite/discovery/prerender-collection.ts
5607
5682
  init_debug();
5608
- var debug9 = createRangoDebugger(NS.prerender);
5683
+ var debug10 = createRangoDebugger(NS.prerender);
5609
5684
  async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5610
5685
  if (!state.opts?.enableBuildPrerender || !state.isBuildMode) return;
5611
- const overallStart = debug9 ? performance.now() : 0;
5612
- debug9?.(
5686
+ const overallStart = debug10 ? performance.now() : 0;
5687
+ debug10?.(
5613
5688
  "expandPrerenderRoutes: start (%d router manifest(s))",
5614
5689
  allManifests.length
5615
5690
  );
@@ -5662,7 +5737,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5662
5737
  });
5663
5738
  } else {
5664
5739
  if (def?.getParams) {
5665
- const getParamsStart = debug9 ? performance.now() : 0;
5740
+ const getParamsStart = debug10 ? performance.now() : 0;
5666
5741
  try {
5667
5742
  const buildVars = {};
5668
5743
  const buildEnv = state.resolvedBuildEnv;
@@ -5681,7 +5756,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5681
5756
  }
5682
5757
  };
5683
5758
  const paramsList = await def.getParams(getParamsCtx);
5684
- debug9?.(
5759
+ debug10?.(
5685
5760
  "getParams %s -> %d params (%sms)",
5686
5761
  routeName,
5687
5762
  paramsList.length,
@@ -5753,7 +5828,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5753
5828
  }
5754
5829
  }
5755
5830
  if (entries.length === 0) {
5756
- debug9?.(
5831
+ debug10?.(
5757
5832
  "no prerender entries (done in %sms)",
5758
5833
  (performance.now() - overallStart).toFixed(1)
5759
5834
  );
@@ -5764,7 +5839,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5764
5839
  console.log(
5765
5840
  `[rango] Pre-rendering ${entries.length} URL(s)${concurrencyNote}...`
5766
5841
  );
5767
- debug9?.(
5842
+ debug10?.(
5768
5843
  "prerender loop: %d entries, max concurrency %d",
5769
5844
  entries.length,
5770
5845
  maxConcurrency
@@ -5872,7 +5947,7 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5872
5947
  console.log(
5873
5948
  `[rango] Pre-render complete: ${parts.join(", ")} (${totalElapsed}ms total)`
5874
5949
  );
5875
- debug9?.(
5950
+ debug10?.(
5876
5951
  "expandPrerenderRoutes done: %d done, %d skipped, %sms (overall %sms)",
5877
5952
  doneCount,
5878
5953
  skipCount,
@@ -5883,8 +5958,8 @@ async function expandPrerenderRoutes(state, rscEnv, registry, allManifests) {
5883
5958
  async function renderStaticHandlers(state, rscEnv, registry) {
5884
5959
  if (!state.opts?.enableBuildPrerender || !state.isBuildMode || !state.resolvedStaticModules?.size)
5885
5960
  return;
5886
- const overallStart = debug9 ? performance.now() : 0;
5887
- debug9?.(
5961
+ const overallStart = debug10 ? performance.now() : 0;
5962
+ debug10?.(
5888
5963
  "renderStaticHandlers: start (%d static module(s))",
5889
5964
  state.resolvedStaticModules.size
5890
5965
  );
@@ -5974,7 +6049,7 @@ async function renderStaticHandlers(state, rscEnv, registry) {
5974
6049
  console.log(
5975
6050
  `[rango] Static render complete: ${staticParts.join(", ")} (${totalStaticElapsed}ms total)`
5976
6051
  );
5977
- debug9?.(
6052
+ debug10?.(
5978
6053
  "renderStaticHandlers done: %d done, %d skipped, %sms (overall %sms)",
5979
6054
  staticDone,
5980
6055
  staticSkip,
@@ -6082,16 +6157,16 @@ function describeDiscoveryFailure(err, opts = {}) {
6082
6157
  // src/vite/discovery/discover-routers.ts
6083
6158
  init_debug();
6084
6159
  init_client_ref_hashing();
6085
- var debug10 = createRangoDebugger(NS.discovery);
6160
+ var debug11 = createRangoDebugger(NS.discovery);
6086
6161
  async function discoverRouters(state, rscEnv) {
6087
6162
  if (!state.resolvedEntryPath) return;
6088
6163
  await timed(
6089
- debug10,
6164
+ debug11,
6090
6165
  "inner: import entry",
6091
6166
  () => rscEnv.runner.import(state.resolvedEntryPath)
6092
6167
  );
6093
6168
  const serverMod = await timed(
6094
- debug10,
6169
+ debug11,
6095
6170
  "inner: import @rangojs/router/server",
6096
6171
  () => rscEnv.runner.import("@rangojs/router/server")
6097
6172
  );
@@ -6107,7 +6182,7 @@ async function discoverRouters(state, rscEnv) {
6107
6182
  const handlerErrors = await resolveHostRouterHandlers(hostRegistry);
6108
6183
  discoveryErrors.push(...handlerErrors);
6109
6184
  for (const { context, error } of handlerErrors) {
6110
- debug10?.("caught error while resolving %s: %O", context, error);
6185
+ debug11?.("caught error while resolving %s: %O", context, error);
6111
6186
  }
6112
6187
  const freshServerMod = await rscEnv.runner.import(
6113
6188
  "@rangojs/router/server"
@@ -6126,12 +6201,12 @@ async function discoverRouters(state, rscEnv) {
6126
6201
  }
6127
6202
  }
6128
6203
  const buildMod = await timed(
6129
- debug10,
6204
+ debug11,
6130
6205
  "inner: import @rangojs/router/build",
6131
6206
  () => rscEnv.runner.import("@rangojs/router/build")
6132
6207
  );
6133
6208
  const generateManifestFull = buildMod.generateManifestFull;
6134
- debug10?.("inner: found %d router(s) in registry", registry.size);
6209
+ debug11?.("inner: found %d router(s) in registry", registry.size);
6135
6210
  const nestedRouterConflict = findNestedRouterConflict(
6136
6211
  [...registry.values()].map((router) => router.__sourceFile).filter(
6137
6212
  (sourceFile) => typeof sourceFile === "string"
@@ -6156,7 +6231,7 @@ async function discoverRouters(state, rscEnv) {
6156
6231
  collectFallbackClientRefs(node, collectClientFallbackRef);
6157
6232
  }
6158
6233
  };
6159
- const manifestGenStart = debug10 ? performance.now() : 0;
6234
+ const manifestGenStart = debug11 ? performance.now() : 0;
6160
6235
  for (const [id, router] of registry) {
6161
6236
  if (!router.urlpatterns || !generateManifestFull) {
6162
6237
  continue;
@@ -6230,12 +6305,12 @@ async function discoverRouters(state, rscEnv) {
6230
6305
  );
6231
6306
  }
6232
6307
  }
6233
- debug10?.(
6308
+ debug11?.(
6234
6309
  "inner: generated manifests for %d router(s) (%sms)",
6235
6310
  allManifests.length,
6236
6311
  (performance.now() - manifestGenStart).toFixed(1)
6237
6312
  );
6238
- const trieStart = debug10 ? performance.now() : 0;
6313
+ const trieStart = debug11 ? performance.now() : 0;
6239
6314
  if (Object.keys(newMergedRouteManifest).length > 0) {
6240
6315
  for (const { id, manifest } of allManifests) {
6241
6316
  const perRouterTrie = buildPerRouterTrie(manifest);
@@ -6244,7 +6319,7 @@ async function discoverRouters(state, rscEnv) {
6244
6319
  }
6245
6320
  }
6246
6321
  }
6247
- debug10?.(
6322
+ debug11?.(
6248
6323
  "inner: trie build done (%sms)",
6249
6324
  (performance.now() - trieStart).toFixed(1)
6250
6325
  );
@@ -6279,7 +6354,7 @@ function buildShellManifestKey(pathname) {
6279
6354
 
6280
6355
  // src/vite/discovery/shell-prerender-phase.ts
6281
6356
  init_debug();
6282
- var debug11 = createRangoDebugger(NS.prerender);
6357
+ var debug12 = createRangoDebugger(NS.prerender);
6283
6358
  async function runShellPrerenderPhase(s, builder) {
6284
6359
  const tempServer = s.shellPhaseTempServer;
6285
6360
  if (!s.isBuildMode || !s.shellCandidates?.length || !tempServer) return;
@@ -6335,7 +6410,7 @@ async function runShellPrerenderPhase(s, builder) {
6335
6410
  const base = builder?.config?.base ?? "/";
6336
6411
  const normalizedBase = base.endsWith("/") ? base : `${base}/`;
6337
6412
  const bootstrapContent = `import("${normalizedBase}assets/${entryFile}")`;
6338
- debug11?.("shell prerender bootstrap: %s", bootstrapContent);
6413
+ debug12?.("shell prerender bootstrap: %s", bootstrapContent);
6339
6414
  const minimalPlugin = (tempServer.config?.plugins ?? []).find(
6340
6415
  (p) => p?.name === "rsc:minimal"
6341
6416
  );
@@ -6417,7 +6492,7 @@ async function runShellPrerenderPhase(s, builder) {
6417
6492
  buildEnv: s.resolvedBuildEnv,
6418
6493
  buildVersion,
6419
6494
  captureShellHTML,
6420
- debug: !!debug11
6495
+ debug: !!debug12
6421
6496
  });
6422
6497
  if (res.outcome === "route-mismatch") {
6423
6498
  mismatches.push(res.matchedRouteName ?? "(no match)");
@@ -6983,7 +7058,7 @@ function postprocessBundle(state) {
6983
7058
  }
6984
7059
 
6985
7060
  // src/vite/discovery/gate-state.ts
6986
- function createDiscoveryGate(s, debug12) {
7061
+ function createDiscoveryGate(s, debug13) {
6987
7062
  let gatePending = false;
6988
7063
  let gateResolver = () => {
6989
7064
  };
@@ -7000,7 +7075,7 @@ function createDiscoveryGate(s, debug12) {
7000
7075
  const resolveGate = () => {
7001
7076
  if (!gatePending) return;
7002
7077
  if (inProgress || queued || pendingEvents) {
7003
- debug12?.(
7078
+ debug13?.(
7004
7079
  "hmr: resolveGate deferred \u2014 work in flight (inProgress=%s queued=%s pendingEvents=%s)",
7005
7080
  inProgress,
7006
7081
  queued,
@@ -7009,7 +7084,7 @@ function createDiscoveryGate(s, debug12) {
7009
7084
  return;
7010
7085
  }
7011
7086
  gatePending = false;
7012
- debug12?.("hmr: discoveryDone resolved");
7087
+ debug13?.("hmr: discoveryDone resolved");
7013
7088
  gateResolver();
7014
7089
  };
7015
7090
  const noteRouteEvent = () => {
@@ -7019,7 +7094,7 @@ function createDiscoveryGate(s, debug12) {
7019
7094
  const runRefreshCycle = async (work) => {
7020
7095
  if (inProgress) {
7021
7096
  queued = true;
7022
- debug12?.("hmr: rediscovery in flight \u2014 queued for a follow-up cycle");
7097
+ debug13?.("hmr: rediscovery in flight \u2014 queued for a follow-up cycle");
7023
7098
  return;
7024
7099
  }
7025
7100
  pendingEvents = false;
@@ -7030,16 +7105,16 @@ function createDiscoveryGate(s, debug12) {
7030
7105
  inProgress = false;
7031
7106
  if (queued) {
7032
7107
  queued = false;
7033
- debug12?.("hmr: consuming queued rediscovery");
7108
+ debug13?.("hmr: consuming queued rediscovery");
7034
7109
  runRefreshCycle(work).catch((err) => {
7035
- debug12?.(
7110
+ debug13?.(
7036
7111
  "hmr: queued cycle rejected \u2014 releasing gate (%s)",
7037
7112
  err instanceof Error ? err.message : String(err)
7038
7113
  );
7039
7114
  resolveGate();
7040
7115
  });
7041
7116
  } else if (pendingEvents) {
7042
- debug12?.(
7117
+ debug13?.(
7043
7118
  "hmr: holding gate for pending events (debounce not yet fired)"
7044
7119
  );
7045
7120
  } else {
@@ -7154,10 +7229,25 @@ async function createTempRscServer(state, options = {}) {
7154
7229
  client: "virtual:entry-client",
7155
7230
  ssr: "virtual:entry-ssr",
7156
7231
  rsc: state.resolvedEntryPath
7157
- }
7232
+ },
7233
+ // The temp server renders Static/Prerender output and encrypts inline-
7234
+ // action bound args. Give it the SAME key as the main build/dev runtime
7235
+ // (defineEncryptionKeyExpr is process-cached) so those args decrypt at
7236
+ // invocation. Unconditional, NOT build-only: under Cloudflare/workerd dev
7237
+ // the RSC env has no module runner, so prerender is rendered by THIS temp
7238
+ // server (via /__rsc_prerender), and the action decrypts in the main
7239
+ // runtime with the rango.ts key -- gating on forceBuild left dev encrypting
7240
+ // with the temp server's own random key, failing decryptActionBoundArgs.
7241
+ // (hashServerRefs stays build-only: dev keeps dev-style ids the dev runtime
7242
+ // resolves directly.)
7243
+ defineEncryptionKey: defineEncryptionKeyExpr()
7158
7244
  }),
7159
- // hashClientRefs only in build mode — production bundles need hashed refs
7160
- ...options.forceBuild ? [hashClientRefs(state.projectRoot)] : [],
7245
+ // hashClientRefs/hashServerRefs only in build mode — production bundles
7246
+ // need hashed refs. hashServerRefs is the server-side analog: it rewrites
7247
+ // registerServerReference dev-style ids to production hashes so a
7248
+ // server-created action embedded in prerendered/static Flight resolves
7249
+ // against the production manifest on a build-time-cache hit.
7250
+ ...options.forceBuild ? [hashClientRefs(state.projectRoot), hashServerRefs(state.projectRoot)] : [],
7161
7251
  createVersionPlugin(),
7162
7252
  // Before the stub plugin, so "virtual:entry-ssr" resolves to the real
7163
7253
  // SSR entry when the shell endpoint needs it (see the option doc).
@@ -8668,7 +8758,10 @@ async function rango(options) {
8668
8758
  rsc({
8669
8759
  entries: finalEntries,
8670
8760
  serverHandler: false,
8671
- clientChunks
8761
+ clientChunks,
8762
+ // Share one encryption key with the build-discovery temp server so
8763
+ // build-time prerender/static inline-action bound args decrypt at runtime.
8764
+ defineEncryptionKey: defineEncryptionKeyExpr()
8672
8765
  })
8673
8766
  );
8674
8767
  plugins.push(clientRefDedup());
@@ -8857,7 +8950,10 @@ If this is a multi-app host router, export a createHostRouter() instance and set
8857
8950
  plugins.push(
8858
8951
  rsc({
8859
8952
  entries: finalEntries,
8860
- clientChunks
8953
+ clientChunks,
8954
+ // Share one encryption key with the build-discovery temp server so
8955
+ // build-time prerender/static inline-action bound args decrypt at runtime.
8956
+ defineEncryptionKey: defineEncryptionKeyExpr()
8861
8957
  })
8862
8958
  );
8863
8959
  plugins.push(clientRefDedup());
@@ -8879,6 +8975,7 @@ If this is a multi-app host router, export a createHostRouter() instance and set
8879
8975
  }
8880
8976
  }
8881
8977
  });
8978
+ plugins.push(createLoaderScanStubPlugin());
8882
8979
  plugins.push(exposeActionId());
8883
8980
  plugins.push(useCacheTransform());
8884
8981
  plugins.push(exposeInternalIds());
@@ -8923,7 +9020,7 @@ function poke() {
8923
9020
  apply: "serve",
8924
9021
  configureServer(server) {
8925
9022
  const stdin = process.stdin;
8926
- const debug12 = process.env.RANGO_POKE_DEBUG === "1";
9023
+ const debug13 = process.env.RANGO_POKE_DEBUG === "1";
8927
9024
  const triggerReload = (source) => {
8928
9025
  server.hot.send({ type: "full-reload", path: "*" });
8929
9026
  server.config.logger.info(` browser reload (${source})`, {
@@ -8956,7 +9053,7 @@ function poke() {
8956
9053
  lines.pop();
8957
9054
  return lines;
8958
9055
  };
8959
- if (debug12) {
9056
+ if (debug13) {
8960
9057
  server.config.logger.info(
8961
9058
  ` poke debug enabled (isTTY=${stdin.isTTY ? "yes" : "no"}, isRaw=${stdin.isTTY ? stdin.isRaw ? "yes" : "no" : "n/a"})`,
8962
9059
  { timestamp: true }
@@ -8969,7 +9066,7 @@ function poke() {
8969
9066
  );
8970
9067
  }
8971
9068
  const onData = (data) => {
8972
- if (debug12) {
9069
+ if (debug13) {
8973
9070
  server.config.logger.info(` poke stdin ${formatChunk(data)}`, {
8974
9071
  timestamp: true
8975
9072
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rangojs/router",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Django-inspired RSC router with composable URL patterns",
5
5
  "keywords": [
6
6
  "react",
@@ -191,7 +191,7 @@
191
191
  },
192
192
  "dependencies": {
193
193
  "@types/debug": "^4.1.12",
194
- "@vitejs/plugin-rsc": "^0.5.27",
194
+ "@vitejs/plugin-rsc": "^0.5.30",
195
195
  "debug": "^4.4.1",
196
196
  "magic-string": "^0.30.17",
197
197
  "picomatch": "^4.0.4",
@@ -224,7 +224,7 @@
224
224
  "@playwright/test": "^1.49.1",
225
225
  "@testing-library/react": ">=16",
226
226
  "@vercel/functions": "^3.0.0",
227
- "@vitejs/plugin-rsc": "^0.5.27",
227
+ "@vitejs/plugin-rsc": "^0.5.30",
228
228
  "react": ">=19.2.6 <20",
229
229
  "react-dom": ">=19.2.6 <20",
230
230
  "vite": "^8.0.16",
@@ -388,7 +388,7 @@ a request behind it:
388
388
 
389
389
  | Option | Default | Bounds |
390
390
  | --------------------- | ------- | ----------------------------------- |
391
- | `edgeLookupTimeoutMs` | `10` | L1 `cache.match` (the lookup) |
391
+ | `edgeLookupTimeoutMs` | `25` | L1 `cache.match` (the lookup) |
392
392
  | `edgeReadTimeoutMs` | `20` | L1 body read (CF streams it lazily) |
393
393
  | `kvReadTimeoutMs` | `170` | L2 / KV read |
394
394
 
@@ -132,9 +132,11 @@ response payload types, use one of these surfaces:
132
132
  // router.tsx
133
133
  export const router = createRouter({ document: Document }).routes(urlpatterns);
134
134
 
135
+ type AppRoutes = typeof router.routeMap;
136
+
135
137
  declare global {
136
138
  namespace Rango {
137
- interface RegisteredRoutes extends typeof router.routeMap {}
139
+ interface RegisteredRoutes extends AppRoutes {}
138
140
  }
139
141
  }
140
142
  ```
@@ -289,9 +289,11 @@ has no response payload metadata, so response routes resolve to `never`:
289
289
  // router.tsx
290
290
  export const router = createRouter({ document: Document }).routes(urlpatterns);
291
291
 
292
+ type AppRoutes = typeof router.routeMap;
293
+
292
294
  declare global {
293
295
  namespace Rango {
294
- interface RegisteredRoutes extends typeof router.routeMap {}
296
+ interface RegisteredRoutes extends AppRoutes {}
295
297
  }
296
298
  }
297
299
  ```
@@ -480,7 +482,7 @@ type Stats = RouteResponse<typeof blogApiPatterns, "stats">;
480
482
  // = { views: number; visitors: number }
481
483
 
482
484
  // After mounting -- names get prefixed.
483
- // Rango.PathResponse needs `RegisteredRoutes extends typeof router.routeMap` (see above),
485
+ // Rango.PathResponse needs the RegisteredRoutes augmentation (see above),
484
486
  // otherwise it resolves to never.
485
487
  type BlogStats = Rango.PathResponse<"/blog/api/stats">;
486
488
  // = { views: number; visitors: number }
@@ -38,11 +38,11 @@ available globally.
38
38
  There are three distinct typing surfaces. They are **not** interchangeable —
39
39
  pick the one that matches what you need to type:
40
40
 
41
- | Surface | Source | Scope | Gives | Does not give |
42
- | ------------------- | ---------------------------------------- | ------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------ |
43
- | `GeneratedRouteMap` | `router.named-routes.gen.ts` (auto) | global | route names, path params, search schemas | response/MIME payloads |
44
- | `routes` | per-module `*.gen.ts` (`rango generate`) | local | local names, params, search | the global app map |
45
- | `RegisteredRoutes` | manual `extends typeof router.routeMap` | global | paths, params, **response payloads** | the `Handler`/`Prerender` default (those read `GeneratedRouteMap` to avoid a `router.tsx` cycle) |
41
+ | Surface | Source | Scope | Gives | Does not give |
42
+ | ------------------- | ---------------------------------------------------- | ------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------ |
43
+ | `GeneratedRouteMap` | `router.named-routes.gen.ts` (auto) | global | route names, path params, search schemas | response/MIME payloads |
44
+ | `routes` | per-module `*.gen.ts` (`rango generate`) | local | local names, params, search | the global app map |
45
+ | `RegisteredRoutes` | manual `extends` of a `typeof router.routeMap` alias | global | paths, params, **response payloads** | the `Handler`/`Prerender` default (those read `GeneratedRouteMap` to avoid a `router.tsx` cycle) |
46
46
 
47
47
  Key consequence: `href()` and the ambient `Rango.Path` type are typed from
48
48
  whichever map is present — they prefer `RegisteredRoutes` when you wire it, otherwise fall back to
@@ -63,11 +63,15 @@ import type { AppBindings, AppVars } from "./env";
63
63
 
64
64
  export const router = createRouter<AppBindings>({}).routes(urlpatterns);
65
65
 
66
+ // The alias is required: an interface heritage clause cannot take a `typeof`
67
+ // type query directly (TS1109).
68
+ type AppRoutes = typeof router.routeMap;
69
+
66
70
  declare global {
67
71
  namespace Rango {
68
72
  interface Env extends AppBindings {}
69
73
  interface Vars extends AppVars {}
70
- interface RegisteredRoutes extends typeof router.routeMap {}
74
+ interface RegisteredRoutes extends AppRoutes {}
71
75
  }
72
76
  }
73
77
  ```
@@ -257,10 +261,12 @@ export const router = createRouter<ShopEnv>({ document: Document }).routes(
257
261
  urlpatterns,
258
262
  );
259
263
 
264
+ type ShopRoutes = typeof router.routeMap;
265
+
260
266
  declare global {
261
267
  namespace Rango {
262
268
  interface Env extends ShopEnv {}
263
- interface RegisteredRoutes extends typeof router.routeMap {}
269
+ interface RegisteredRoutes extends ShopRoutes {}
264
270
  }
265
271
  }
266
272
  ```
@@ -312,8 +318,9 @@ export default router;
312
318
  // router.named-routes.gen.ts (auto-registers GeneratedRouteMap globally).
313
319
  // No manual RegisteredRoutes declaration is needed for named-route handlers,
314
320
  // ctx.reverse, prerender, href(), or Rango.Path. Add `RegisteredRoutes
315
- // extends typeof router.routeMap` when global response payload helpers such
316
- // as Rango.PathResponse need the richer router.routeMap metadata.
321
+ // extends AppRoutes` (an alias of typeof router.routeMap) when global
322
+ // response payload helpers such as Rango.PathResponse need the richer
323
+ // router.routeMap metadata.
317
324
 
318
325
  // 5. loaders/*.ts - Type-safe loaders
319
326
  export const ProductLoader = createLoader(async (ctx) => {
@@ -76,9 +76,13 @@ below is only needed for **`Rango.PathResponse`** (response-payload inference),
76
76
  `GeneratedRouteMap` cannot provide:
77
77
 
78
78
  ```typescript
79
+ // The alias is required: an interface heritage clause cannot take a `typeof`
80
+ // type query directly (TS1109).
81
+ type AppRoutes = typeof router.routeMap;
82
+
79
83
  declare global {
80
84
  namespace Rango {
81
- interface RegisteredRoutes extends typeof router.routeMap {}
85
+ interface RegisteredRoutes extends AppRoutes {}
82
86
  }
83
87
  }
84
88
  ```