@rangojs/router 0.4.2 → 0.5.0

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 (848) hide show
  1. package/dist/types/browser/prefetch/cache.d.ts +11 -8
  2. package/dist/types/cache/cf/cf-cache-store.d.ts +2 -0
  3. package/dist/types/cache/read-through-swr.d.ts +7 -6
  4. package/dist/types/cache/types.d.ts +39 -6
  5. package/dist/types/cloudflare/tracing.d.ts +16 -12
  6. package/dist/types/router/instrument.d.ts +45 -15
  7. package/dist/types/router/telemetry-otel.d.ts +4 -4
  8. package/dist/types/router/timeout.d.ts +12 -1
  9. package/dist/types/router/tracing.d.ts +31 -17
  10. package/dist/types/rsc/capture-queue.d.ts +41 -4
  11. package/dist/types/rsc/shell-build-manifest.d.ts +2 -2
  12. package/dist/types/rsc/shell-capture.d.ts +28 -2
  13. package/dist/types/rsc/shell-serve.d.ts +18 -12
  14. package/dist/types/rsc/stream-idle.d.ts +60 -0
  15. package/dist/types/server/request-context.d.ts +7 -1
  16. package/dist/types/vercel/tracing.d.ts +9 -8
  17. package/dist/vite/index.js +1 -1
  18. package/package.json +1 -1
  19. package/skills/observability/SKILL.md +33 -4
  20. package/skills/ppr/SKILL.md +44 -3
  21. package/src/browser/prefetch/cache.ts +22 -10
  22. package/src/cache/cache-runtime.ts +39 -25
  23. package/src/cache/cf/cf-cache-store.ts +27 -8
  24. package/src/cache/document-cache.ts +39 -23
  25. package/src/cache/read-through-swr.ts +22 -16
  26. package/src/cache/types.ts +41 -6
  27. package/src/cache/vercel/vercel-cache-store.ts +24 -10
  28. package/src/cloudflare/tracing.ts +16 -12
  29. package/src/router/instrument.ts +61 -15
  30. package/src/router/segment-resolution/loader-cache.ts +12 -1
  31. package/src/router/segment-resolution/revalidation.ts +16 -1
  32. package/src/router/telemetry-otel.ts +4 -4
  33. package/src/router/timeout.ts +12 -1
  34. package/src/router/tracing.ts +37 -17
  35. package/src/rsc/capture-queue.ts +150 -22
  36. package/src/rsc/handler.ts +171 -73
  37. package/src/rsc/rsc-rendering.ts +11 -3
  38. package/src/rsc/shell-build-manifest.ts +20 -7
  39. package/src/rsc/shell-capture.ts +222 -18
  40. package/src/rsc/shell-serve.ts +27 -12
  41. package/src/rsc/stream-idle.ts +137 -0
  42. package/src/server/request-context.ts +8 -0
  43. package/src/testing/dispatch.ts +55 -1
  44. package/src/vercel/tracing.ts +9 -8
  45. package/dist/__internal.d.ts +0 -83
  46. package/dist/__internal.d.ts.map +0 -1
  47. package/dist/__internal.js +0 -19
  48. package/dist/__internal.js.map +0 -1
  49. package/dist/__mocks__/version.d.ts +0 -7
  50. package/dist/__mocks__/version.d.ts.map +0 -1
  51. package/dist/__mocks__/version.js +0 -7
  52. package/dist/__mocks__/version.js.map +0 -1
  53. package/dist/__tests__/client-href.test.d.ts +0 -2
  54. package/dist/__tests__/client-href.test.d.ts.map +0 -1
  55. package/dist/__tests__/client-href.test.js +0 -74
  56. package/dist/__tests__/client-href.test.js.map +0 -1
  57. package/dist/__tests__/component-utils.test.d.ts +0 -2
  58. package/dist/__tests__/component-utils.test.d.ts.map +0 -1
  59. package/dist/__tests__/component-utils.test.js +0 -51
  60. package/dist/__tests__/component-utils.test.js.map +0 -1
  61. package/dist/__tests__/event-controller.test.d.ts +0 -2
  62. package/dist/__tests__/event-controller.test.d.ts.map +0 -1
  63. package/dist/__tests__/event-controller.test.js +0 -538
  64. package/dist/__tests__/event-controller.test.js.map +0 -1
  65. package/dist/__tests__/helpers/route-tree.d.ts +0 -118
  66. package/dist/__tests__/helpers/route-tree.d.ts.map +0 -1
  67. package/dist/__tests__/helpers/route-tree.js +0 -374
  68. package/dist/__tests__/helpers/route-tree.js.map +0 -1
  69. package/dist/__tests__/match-result.test.d.ts +0 -2
  70. package/dist/__tests__/match-result.test.d.ts.map +0 -1
  71. package/dist/__tests__/match-result.test.js +0 -154
  72. package/dist/__tests__/match-result.test.js.map +0 -1
  73. package/dist/__tests__/navigation-store.test.d.ts +0 -2
  74. package/dist/__tests__/navigation-store.test.d.ts.map +0 -1
  75. package/dist/__tests__/navigation-store.test.js +0 -440
  76. package/dist/__tests__/navigation-store.test.js.map +0 -1
  77. package/dist/__tests__/partial-update.test.d.ts +0 -2
  78. package/dist/__tests__/partial-update.test.d.ts.map +0 -1
  79. package/dist/__tests__/partial-update.test.js +0 -1009
  80. package/dist/__tests__/partial-update.test.js.map +0 -1
  81. package/dist/__tests__/reverse-types.test.d.ts +0 -8
  82. package/dist/__tests__/reverse-types.test.d.ts.map +0 -1
  83. package/dist/__tests__/reverse-types.test.js +0 -656
  84. package/dist/__tests__/reverse-types.test.js.map +0 -1
  85. package/dist/__tests__/route-definition.test.d.ts +0 -2
  86. package/dist/__tests__/route-definition.test.d.ts.map +0 -1
  87. package/dist/__tests__/route-definition.test.js +0 -55
  88. package/dist/__tests__/route-definition.test.js.map +0 -1
  89. package/dist/__tests__/router-helpers.test.d.ts +0 -2
  90. package/dist/__tests__/router-helpers.test.d.ts.map +0 -1
  91. package/dist/__tests__/router-helpers.test.js +0 -377
  92. package/dist/__tests__/router-helpers.test.js.map +0 -1
  93. package/dist/__tests__/router-integration-2.test.d.ts +0 -2
  94. package/dist/__tests__/router-integration-2.test.d.ts.map +0 -1
  95. package/dist/__tests__/router-integration-2.test.js +0 -426
  96. package/dist/__tests__/router-integration-2.test.js.map +0 -1
  97. package/dist/__tests__/router-integration.test.d.ts +0 -2
  98. package/dist/__tests__/router-integration.test.d.ts.map +0 -1
  99. package/dist/__tests__/router-integration.test.js +0 -1051
  100. package/dist/__tests__/router-integration.test.js.map +0 -1
  101. package/dist/__tests__/search-params.test.d.ts +0 -5
  102. package/dist/__tests__/search-params.test.d.ts.map +0 -1
  103. package/dist/__tests__/search-params.test.js +0 -306
  104. package/dist/__tests__/search-params.test.js.map +0 -1
  105. package/dist/__tests__/segment-system.test.d.ts +0 -2
  106. package/dist/__tests__/segment-system.test.d.ts.map +0 -1
  107. package/dist/__tests__/segment-system.test.js +0 -627
  108. package/dist/__tests__/segment-system.test.js.map +0 -1
  109. package/dist/__tests__/static-handler-types.test.d.ts +0 -8
  110. package/dist/__tests__/static-handler-types.test.d.ts.map +0 -1
  111. package/dist/__tests__/static-handler-types.test.js +0 -63
  112. package/dist/__tests__/static-handler-types.test.js.map +0 -1
  113. package/dist/__tests__/urls.test.d.ts +0 -2
  114. package/dist/__tests__/urls.test.d.ts.map +0 -1
  115. package/dist/__tests__/urls.test.js +0 -421
  116. package/dist/__tests__/urls.test.js.map +0 -1
  117. package/dist/__tests__/use-mount.test.d.ts +0 -2
  118. package/dist/__tests__/use-mount.test.d.ts.map +0 -1
  119. package/dist/__tests__/use-mount.test.js +0 -35
  120. package/dist/__tests__/use-mount.test.js.map +0 -1
  121. package/dist/bin/rango.d.ts +0 -2
  122. package/dist/bin/rango.d.ts.map +0 -1
  123. package/dist/bin/rango.js.map +0 -1
  124. package/dist/browser/event-controller.d.ts +0 -191
  125. package/dist/browser/event-controller.d.ts.map +0 -1
  126. package/dist/browser/event-controller.js +0 -559
  127. package/dist/browser/event-controller.js.map +0 -1
  128. package/dist/browser/index.d.ts +0 -2
  129. package/dist/browser/index.d.ts.map +0 -1
  130. package/dist/browser/index.js +0 -14
  131. package/dist/browser/index.js.map +0 -1
  132. package/dist/browser/link-interceptor.d.ts +0 -38
  133. package/dist/browser/link-interceptor.d.ts.map +0 -1
  134. package/dist/browser/link-interceptor.js +0 -99
  135. package/dist/browser/link-interceptor.js.map +0 -1
  136. package/dist/browser/logging.d.ts +0 -10
  137. package/dist/browser/logging.d.ts.map +0 -1
  138. package/dist/browser/logging.js +0 -29
  139. package/dist/browser/logging.js.map +0 -1
  140. package/dist/browser/lru-cache.d.ts +0 -17
  141. package/dist/browser/lru-cache.d.ts.map +0 -1
  142. package/dist/browser/lru-cache.js +0 -50
  143. package/dist/browser/lru-cache.js.map +0 -1
  144. package/dist/browser/merge-segment-loaders.d.ts +0 -39
  145. package/dist/browser/merge-segment-loaders.d.ts.map +0 -1
  146. package/dist/browser/merge-segment-loaders.js +0 -102
  147. package/dist/browser/merge-segment-loaders.js.map +0 -1
  148. package/dist/browser/navigation-bridge.d.ts +0 -102
  149. package/dist/browser/navigation-bridge.d.ts.map +0 -1
  150. package/dist/browser/navigation-bridge.js +0 -708
  151. package/dist/browser/navigation-bridge.js.map +0 -1
  152. package/dist/browser/navigation-client.d.ts +0 -25
  153. package/dist/browser/navigation-client.d.ts.map +0 -1
  154. package/dist/browser/navigation-client.js +0 -157
  155. package/dist/browser/navigation-client.js.map +0 -1
  156. package/dist/browser/navigation-store.d.ts +0 -101
  157. package/dist/browser/navigation-store.d.ts.map +0 -1
  158. package/dist/browser/navigation-store.js +0 -625
  159. package/dist/browser/navigation-store.js.map +0 -1
  160. package/dist/browser/partial-update.d.ts +0 -75
  161. package/dist/browser/partial-update.d.ts.map +0 -1
  162. package/dist/browser/partial-update.js +0 -426
  163. package/dist/browser/partial-update.js.map +0 -1
  164. package/dist/browser/react/Link.d.ts +0 -86
  165. package/dist/browser/react/Link.d.ts.map +0 -1
  166. package/dist/browser/react/Link.js +0 -128
  167. package/dist/browser/react/Link.js.map +0 -1
  168. package/dist/browser/react/NavigationProvider.d.ts +0 -63
  169. package/dist/browser/react/NavigationProvider.d.ts.map +0 -1
  170. package/dist/browser/react/NavigationProvider.js +0 -216
  171. package/dist/browser/react/NavigationProvider.js.map +0 -1
  172. package/dist/browser/react/ScrollRestoration.d.ts +0 -75
  173. package/dist/browser/react/ScrollRestoration.d.ts.map +0 -1
  174. package/dist/browser/react/ScrollRestoration.js +0 -57
  175. package/dist/browser/react/ScrollRestoration.js.map +0 -1
  176. package/dist/browser/react/context.d.ts +0 -46
  177. package/dist/browser/react/context.d.ts.map +0 -1
  178. package/dist/browser/react/context.js +0 -10
  179. package/dist/browser/react/context.js.map +0 -1
  180. package/dist/browser/react/index.d.ts +0 -11
  181. package/dist/browser/react/index.d.ts.map +0 -1
  182. package/dist/browser/react/index.js +0 -22
  183. package/dist/browser/react/index.js.map +0 -1
  184. package/dist/browser/react/location-state-shared.d.ts +0 -63
  185. package/dist/browser/react/location-state-shared.d.ts.map +0 -1
  186. package/dist/browser/react/location-state-shared.js +0 -81
  187. package/dist/browser/react/location-state-shared.js.map +0 -1
  188. package/dist/browser/react/location-state.d.ts +0 -23
  189. package/dist/browser/react/location-state.d.ts.map +0 -1
  190. package/dist/browser/react/location-state.js +0 -29
  191. package/dist/browser/react/location-state.js.map +0 -1
  192. package/dist/browser/react/mount-context.d.ts +0 -24
  193. package/dist/browser/react/mount-context.d.ts.map +0 -1
  194. package/dist/browser/react/mount-context.js +0 -24
  195. package/dist/browser/react/mount-context.js.map +0 -1
  196. package/dist/browser/react/use-action.d.ts +0 -64
  197. package/dist/browser/react/use-action.d.ts.map +0 -1
  198. package/dist/browser/react/use-action.js +0 -134
  199. package/dist/browser/react/use-action.js.map +0 -1
  200. package/dist/browser/react/use-client-cache.d.ts +0 -41
  201. package/dist/browser/react/use-client-cache.d.ts.map +0 -1
  202. package/dist/browser/react/use-client-cache.js +0 -39
  203. package/dist/browser/react/use-client-cache.js.map +0 -1
  204. package/dist/browser/react/use-handle.d.ts +0 -31
  205. package/dist/browser/react/use-handle.d.ts.map +0 -1
  206. package/dist/browser/react/use-handle.js +0 -144
  207. package/dist/browser/react/use-handle.js.map +0 -1
  208. package/dist/browser/react/use-href.d.ts +0 -33
  209. package/dist/browser/react/use-href.d.ts.map +0 -1
  210. package/dist/browser/react/use-href.js +0 -39
  211. package/dist/browser/react/use-href.js.map +0 -1
  212. package/dist/browser/react/use-link-status.d.ts +0 -37
  213. package/dist/browser/react/use-link-status.d.ts.map +0 -1
  214. package/dist/browser/react/use-link-status.js +0 -99
  215. package/dist/browser/react/use-link-status.js.map +0 -1
  216. package/dist/browser/react/use-mount.d.ts +0 -25
  217. package/dist/browser/react/use-mount.d.ts.map +0 -1
  218. package/dist/browser/react/use-mount.js +0 -30
  219. package/dist/browser/react/use-mount.js.map +0 -1
  220. package/dist/browser/react/use-navigation.d.ts +0 -27
  221. package/dist/browser/react/use-navigation.d.ts.map +0 -1
  222. package/dist/browser/react/use-navigation.js +0 -87
  223. package/dist/browser/react/use-navigation.js.map +0 -1
  224. package/dist/browser/react/use-segments.d.ts +0 -38
  225. package/dist/browser/react/use-segments.d.ts.map +0 -1
  226. package/dist/browser/react/use-segments.js +0 -130
  227. package/dist/browser/react/use-segments.js.map +0 -1
  228. package/dist/browser/request-controller.d.ts +0 -26
  229. package/dist/browser/request-controller.d.ts.map +0 -1
  230. package/dist/browser/request-controller.js +0 -147
  231. package/dist/browser/request-controller.js.map +0 -1
  232. package/dist/browser/rsc-router.d.ts +0 -129
  233. package/dist/browser/rsc-router.d.ts.map +0 -1
  234. package/dist/browser/rsc-router.js +0 -195
  235. package/dist/browser/rsc-router.js.map +0 -1
  236. package/dist/browser/scroll-restoration.d.ts +0 -93
  237. package/dist/browser/scroll-restoration.d.ts.map +0 -1
  238. package/dist/browser/scroll-restoration.js +0 -321
  239. package/dist/browser/scroll-restoration.js.map +0 -1
  240. package/dist/browser/segment-structure-assert.d.ts +0 -17
  241. package/dist/browser/segment-structure-assert.d.ts.map +0 -1
  242. package/dist/browser/segment-structure-assert.js +0 -59
  243. package/dist/browser/segment-structure-assert.js.map +0 -1
  244. package/dist/browser/server-action-bridge.d.ts +0 -26
  245. package/dist/browser/server-action-bridge.d.ts.map +0 -1
  246. package/dist/browser/server-action-bridge.js +0 -668
  247. package/dist/browser/server-action-bridge.js.map +0 -1
  248. package/dist/browser/shallow.d.ts +0 -12
  249. package/dist/browser/shallow.d.ts.map +0 -1
  250. package/dist/browser/shallow.js +0 -34
  251. package/dist/browser/shallow.js.map +0 -1
  252. package/dist/browser/types.d.ts +0 -369
  253. package/dist/browser/types.d.ts.map +0 -1
  254. package/dist/browser/types.js +0 -2
  255. package/dist/browser/types.js.map +0 -1
  256. package/dist/build/__tests__/generate-cli.test.d.ts +0 -2
  257. package/dist/build/__tests__/generate-cli.test.d.ts.map +0 -1
  258. package/dist/build/__tests__/generate-cli.test.js +0 -237
  259. package/dist/build/__tests__/generate-cli.test.js.map +0 -1
  260. package/dist/build/__tests__/generate-manifest.test.d.ts +0 -2
  261. package/dist/build/__tests__/generate-manifest.test.d.ts.map +0 -1
  262. package/dist/build/__tests__/generate-manifest.test.js +0 -119
  263. package/dist/build/__tests__/generate-manifest.test.js.map +0 -1
  264. package/dist/build/__tests__/generate-route-types.test.d.ts +0 -2
  265. package/dist/build/__tests__/generate-route-types.test.d.ts.map +0 -1
  266. package/dist/build/__tests__/generate-route-types.test.js +0 -620
  267. package/dist/build/__tests__/generate-route-types.test.js.map +0 -1
  268. package/dist/build/__tests__/per-router-manifest.test.d.ts +0 -2
  269. package/dist/build/__tests__/per-router-manifest.test.d.ts.map +0 -1
  270. package/dist/build/__tests__/per-router-manifest.test.js +0 -308
  271. package/dist/build/__tests__/per-router-manifest.test.js.map +0 -1
  272. package/dist/build/generate-manifest.d.ts +0 -81
  273. package/dist/build/generate-manifest.d.ts.map +0 -1
  274. package/dist/build/generate-manifest.js +0 -276
  275. package/dist/build/generate-manifest.js.map +0 -1
  276. package/dist/build/generate-route-types.d.ts +0 -115
  277. package/dist/build/generate-route-types.d.ts.map +0 -1
  278. package/dist/build/generate-route-types.js +0 -740
  279. package/dist/build/generate-route-types.js.map +0 -1
  280. package/dist/build/index.d.ts +0 -21
  281. package/dist/build/index.d.ts.map +0 -1
  282. package/dist/build/index.js +0 -21
  283. package/dist/build/index.js.map +0 -1
  284. package/dist/build/route-trie.d.ts +0 -71
  285. package/dist/build/route-trie.d.ts.map +0 -1
  286. package/dist/build/route-trie.js +0 -175
  287. package/dist/build/route-trie.js.map +0 -1
  288. package/dist/cache/__tests__/cache-scope.test.d.ts +0 -2
  289. package/dist/cache/__tests__/cache-scope.test.d.ts.map +0 -1
  290. package/dist/cache/__tests__/cache-scope.test.js +0 -208
  291. package/dist/cache/__tests__/cache-scope.test.js.map +0 -1
  292. package/dist/cache/__tests__/document-cache.test.d.ts +0 -2
  293. package/dist/cache/__tests__/document-cache.test.d.ts.map +0 -1
  294. package/dist/cache/__tests__/document-cache.test.js +0 -345
  295. package/dist/cache/__tests__/document-cache.test.js.map +0 -1
  296. package/dist/cache/__tests__/memory-segment-store.test.d.ts +0 -2
  297. package/dist/cache/__tests__/memory-segment-store.test.d.ts.map +0 -1
  298. package/dist/cache/__tests__/memory-segment-store.test.js +0 -425
  299. package/dist/cache/__tests__/memory-segment-store.test.js.map +0 -1
  300. package/dist/cache/__tests__/memory-store.test.d.ts +0 -2
  301. package/dist/cache/__tests__/memory-store.test.d.ts.map +0 -1
  302. package/dist/cache/__tests__/memory-store.test.js +0 -367
  303. package/dist/cache/__tests__/memory-store.test.js.map +0 -1
  304. package/dist/cache/cache-scope.d.ts +0 -102
  305. package/dist/cache/cache-scope.d.ts.map +0 -1
  306. package/dist/cache/cache-scope.js +0 -440
  307. package/dist/cache/cache-scope.js.map +0 -1
  308. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts +0 -2
  309. package/dist/cache/cf/__tests__/cf-cache-store.test.d.ts.map +0 -1
  310. package/dist/cache/cf/__tests__/cf-cache-store.test.js +0 -330
  311. package/dist/cache/cf/__tests__/cf-cache-store.test.js.map +0 -1
  312. package/dist/cache/cf/cf-cache-store.d.ts +0 -165
  313. package/dist/cache/cf/cf-cache-store.d.ts.map +0 -1
  314. package/dist/cache/cf/cf-cache-store.js +0 -242
  315. package/dist/cache/cf/cf-cache-store.js.map +0 -1
  316. package/dist/cache/cf/index.d.ts +0 -14
  317. package/dist/cache/cf/index.d.ts.map +0 -1
  318. package/dist/cache/cf/index.js +0 -17
  319. package/dist/cache/cf/index.js.map +0 -1
  320. package/dist/cache/document-cache.d.ts +0 -64
  321. package/dist/cache/document-cache.d.ts.map +0 -1
  322. package/dist/cache/document-cache.js +0 -228
  323. package/dist/cache/document-cache.js.map +0 -1
  324. package/dist/cache/index.d.ts +0 -19
  325. package/dist/cache/index.d.ts.map +0 -1
  326. package/dist/cache/index.js +0 -21
  327. package/dist/cache/index.js.map +0 -1
  328. package/dist/cache/memory-segment-store.d.ts +0 -110
  329. package/dist/cache/memory-segment-store.d.ts.map +0 -1
  330. package/dist/cache/memory-segment-store.js +0 -117
  331. package/dist/cache/memory-segment-store.js.map +0 -1
  332. package/dist/cache/memory-store.d.ts +0 -41
  333. package/dist/cache/memory-store.d.ts.map +0 -1
  334. package/dist/cache/memory-store.js +0 -191
  335. package/dist/cache/memory-store.js.map +0 -1
  336. package/dist/cache/types.d.ts +0 -317
  337. package/dist/cache/types.d.ts.map +0 -1
  338. package/dist/cache/types.js +0 -12
  339. package/dist/cache/types.js.map +0 -1
  340. package/dist/client.d.ts +0 -248
  341. package/dist/client.d.ts.map +0 -1
  342. package/dist/client.js +0 -367
  343. package/dist/client.js.map +0 -1
  344. package/dist/client.rsc.d.ts +0 -26
  345. package/dist/client.rsc.d.ts.map +0 -1
  346. package/dist/client.rsc.js +0 -46
  347. package/dist/client.rsc.js.map +0 -1
  348. package/dist/component-utils.d.ts +0 -36
  349. package/dist/component-utils.d.ts.map +0 -1
  350. package/dist/component-utils.js +0 -61
  351. package/dist/component-utils.js.map +0 -1
  352. package/dist/components/DefaultDocument.d.ts +0 -13
  353. package/dist/components/DefaultDocument.d.ts.map +0 -1
  354. package/dist/components/DefaultDocument.js +0 -15
  355. package/dist/components/DefaultDocument.js.map +0 -1
  356. package/dist/debug.d.ts +0 -58
  357. package/dist/debug.d.ts.map +0 -1
  358. package/dist/debug.js +0 -157
  359. package/dist/debug.js.map +0 -1
  360. package/dist/default-error-boundary.d.ts +0 -11
  361. package/dist/default-error-boundary.d.ts.map +0 -1
  362. package/dist/default-error-boundary.js +0 -45
  363. package/dist/default-error-boundary.js.map +0 -1
  364. package/dist/deps/browser.d.ts +0 -2
  365. package/dist/deps/browser.d.ts.map +0 -1
  366. package/dist/deps/browser.js +0 -3
  367. package/dist/deps/browser.js.map +0 -1
  368. package/dist/deps/html-stream-client.d.ts +0 -2
  369. package/dist/deps/html-stream-client.d.ts.map +0 -1
  370. package/dist/deps/html-stream-client.js +0 -3
  371. package/dist/deps/html-stream-client.js.map +0 -1
  372. package/dist/deps/html-stream-server.d.ts +0 -2
  373. package/dist/deps/html-stream-server.d.ts.map +0 -1
  374. package/dist/deps/html-stream-server.js +0 -3
  375. package/dist/deps/html-stream-server.js.map +0 -1
  376. package/dist/deps/rsc.d.ts +0 -2
  377. package/dist/deps/rsc.d.ts.map +0 -1
  378. package/dist/deps/rsc.js +0 -4
  379. package/dist/deps/rsc.js.map +0 -1
  380. package/dist/deps/ssr.d.ts +0 -2
  381. package/dist/deps/ssr.d.ts.map +0 -1
  382. package/dist/deps/ssr.js +0 -3
  383. package/dist/deps/ssr.js.map +0 -1
  384. package/dist/errors.d.ts +0 -174
  385. package/dist/errors.d.ts.map +0 -1
  386. package/dist/errors.js +0 -241
  387. package/dist/errors.js.map +0 -1
  388. package/dist/handle.d.ts +0 -78
  389. package/dist/handle.d.ts.map +0 -1
  390. package/dist/handle.js +0 -82
  391. package/dist/handle.js.map +0 -1
  392. package/dist/handles/MetaTags.d.ts +0 -14
  393. package/dist/handles/MetaTags.d.ts.map +0 -1
  394. package/dist/handles/MetaTags.js +0 -136
  395. package/dist/handles/MetaTags.js.map +0 -1
  396. package/dist/handles/index.d.ts +0 -6
  397. package/dist/handles/index.d.ts.map +0 -1
  398. package/dist/handles/index.js +0 -6
  399. package/dist/handles/index.js.map +0 -1
  400. package/dist/handles/meta.d.ts +0 -39
  401. package/dist/handles/meta.d.ts.map +0 -1
  402. package/dist/handles/meta.js +0 -202
  403. package/dist/handles/meta.js.map +0 -1
  404. package/dist/host/__tests__/errors.test.d.ts +0 -2
  405. package/dist/host/__tests__/errors.test.d.ts.map +0 -1
  406. package/dist/host/__tests__/errors.test.js +0 -76
  407. package/dist/host/__tests__/errors.test.js.map +0 -1
  408. package/dist/host/__tests__/pattern-comprehensive.test.d.ts +0 -2
  409. package/dist/host/__tests__/pattern-comprehensive.test.d.ts.map +0 -1
  410. package/dist/host/__tests__/pattern-comprehensive.test.js +0 -732
  411. package/dist/host/__tests__/pattern-comprehensive.test.js.map +0 -1
  412. package/dist/host/__tests__/pattern-matcher.test.d.ts +0 -2
  413. package/dist/host/__tests__/pattern-matcher.test.d.ts.map +0 -1
  414. package/dist/host/__tests__/pattern-matcher.test.js +0 -251
  415. package/dist/host/__tests__/pattern-matcher.test.js.map +0 -1
  416. package/dist/host/__tests__/router.test.d.ts +0 -2
  417. package/dist/host/__tests__/router.test.d.ts.map +0 -1
  418. package/dist/host/__tests__/router.test.js +0 -241
  419. package/dist/host/__tests__/router.test.js.map +0 -1
  420. package/dist/host/__tests__/testing.test.d.ts +0 -2
  421. package/dist/host/__tests__/testing.test.d.ts.map +0 -1
  422. package/dist/host/__tests__/testing.test.js +0 -64
  423. package/dist/host/__tests__/testing.test.js.map +0 -1
  424. package/dist/host/__tests__/utils.test.d.ts +0 -2
  425. package/dist/host/__tests__/utils.test.d.ts.map +0 -1
  426. package/dist/host/__tests__/utils.test.js +0 -29
  427. package/dist/host/__tests__/utils.test.js.map +0 -1
  428. package/dist/host/cookie-handler.d.ts +0 -34
  429. package/dist/host/cookie-handler.d.ts.map +0 -1
  430. package/dist/host/cookie-handler.js +0 -124
  431. package/dist/host/cookie-handler.js.map +0 -1
  432. package/dist/host/errors.d.ts +0 -56
  433. package/dist/host/errors.d.ts.map +0 -1
  434. package/dist/host/errors.js +0 -79
  435. package/dist/host/errors.js.map +0 -1
  436. package/dist/host/index.d.ts +0 -29
  437. package/dist/host/index.d.ts.map +0 -1
  438. package/dist/host/index.js +0 -32
  439. package/dist/host/index.js.map +0 -1
  440. package/dist/host/pattern-matcher.d.ts +0 -36
  441. package/dist/host/pattern-matcher.d.ts.map +0 -1
  442. package/dist/host/pattern-matcher.js +0 -172
  443. package/dist/host/pattern-matcher.js.map +0 -1
  444. package/dist/host/router.d.ts +0 -26
  445. package/dist/host/router.d.ts.map +0 -1
  446. package/dist/host/router.js +0 -218
  447. package/dist/host/router.js.map +0 -1
  448. package/dist/host/testing.d.ts +0 -36
  449. package/dist/host/testing.d.ts.map +0 -1
  450. package/dist/host/testing.js +0 -55
  451. package/dist/host/testing.js.map +0 -1
  452. package/dist/host/types.d.ts +0 -115
  453. package/dist/host/types.d.ts.map +0 -1
  454. package/dist/host/types.js +0 -7
  455. package/dist/host/types.js.map +0 -1
  456. package/dist/host/utils.d.ts +0 -21
  457. package/dist/host/utils.d.ts.map +0 -1
  458. package/dist/host/utils.js +0 -23
  459. package/dist/host/utils.js.map +0 -1
  460. package/dist/href-client.d.ts +0 -131
  461. package/dist/href-client.d.ts.map +0 -1
  462. package/dist/href-client.js +0 -64
  463. package/dist/href-client.js.map +0 -1
  464. package/dist/href-context.d.ts +0 -29
  465. package/dist/href-context.d.ts.map +0 -1
  466. package/dist/href-context.js +0 -21
  467. package/dist/href-context.js.map +0 -1
  468. package/dist/index.d.ts +0 -73
  469. package/dist/index.d.ts.map +0 -1
  470. package/dist/index.js +0 -91
  471. package/dist/index.js.map +0 -1
  472. package/dist/index.rsc.d.ts +0 -32
  473. package/dist/index.rsc.d.ts.map +0 -1
  474. package/dist/index.rsc.js +0 -40
  475. package/dist/index.rsc.js.map +0 -1
  476. package/dist/internal-debug.d.ts +0 -2
  477. package/dist/internal-debug.d.ts.map +0 -1
  478. package/dist/internal-debug.js +0 -5
  479. package/dist/internal-debug.js.map +0 -1
  480. package/dist/loader.d.ts +0 -14
  481. package/dist/loader.d.ts.map +0 -1
  482. package/dist/loader.js +0 -20
  483. package/dist/loader.js.map +0 -1
  484. package/dist/loader.rsc.d.ts +0 -19
  485. package/dist/loader.rsc.d.ts.map +0 -1
  486. package/dist/loader.rsc.js +0 -99
  487. package/dist/loader.rsc.js.map +0 -1
  488. package/dist/network-error-thrower.d.ts +0 -17
  489. package/dist/network-error-thrower.d.ts.map +0 -1
  490. package/dist/network-error-thrower.js +0 -14
  491. package/dist/network-error-thrower.js.map +0 -1
  492. package/dist/outlet-context.d.ts +0 -13
  493. package/dist/outlet-context.d.ts.map +0 -1
  494. package/dist/outlet-context.js +0 -3
  495. package/dist/outlet-context.js.map +0 -1
  496. package/dist/prerender/__tests__/param-hash.test.d.ts +0 -2
  497. package/dist/prerender/__tests__/param-hash.test.d.ts.map +0 -1
  498. package/dist/prerender/__tests__/param-hash.test.js +0 -148
  499. package/dist/prerender/__tests__/param-hash.test.js.map +0 -1
  500. package/dist/prerender/param-hash.d.ts +0 -16
  501. package/dist/prerender/param-hash.d.ts.map +0 -1
  502. package/dist/prerender/param-hash.js +0 -36
  503. package/dist/prerender/param-hash.js.map +0 -1
  504. package/dist/prerender/store.d.ts +0 -38
  505. package/dist/prerender/store.d.ts.map +0 -1
  506. package/dist/prerender/store.js +0 -61
  507. package/dist/prerender/store.js.map +0 -1
  508. package/dist/prerender.d.ts +0 -66
  509. package/dist/prerender.d.ts.map +0 -1
  510. package/dist/prerender.js +0 -57
  511. package/dist/prerender.js.map +0 -1
  512. package/dist/reverse.d.ts +0 -196
  513. package/dist/reverse.d.ts.map +0 -1
  514. package/dist/reverse.js +0 -78
  515. package/dist/reverse.js.map +0 -1
  516. package/dist/root-error-boundary.d.ts +0 -33
  517. package/dist/root-error-boundary.d.ts.map +0 -1
  518. package/dist/root-error-boundary.js +0 -165
  519. package/dist/root-error-boundary.js.map +0 -1
  520. package/dist/route-content-wrapper.d.ts +0 -46
  521. package/dist/route-content-wrapper.d.ts.map +0 -1
  522. package/dist/route-content-wrapper.js +0 -77
  523. package/dist/route-content-wrapper.js.map +0 -1
  524. package/dist/route-definition.d.ts +0 -421
  525. package/dist/route-definition.d.ts.map +0 -1
  526. package/dist/route-definition.js +0 -868
  527. package/dist/route-definition.js.map +0 -1
  528. package/dist/route-map-builder.d.ts +0 -155
  529. package/dist/route-map-builder.d.ts.map +0 -1
  530. package/dist/route-map-builder.js +0 -237
  531. package/dist/route-map-builder.js.map +0 -1
  532. package/dist/route-types.d.ts +0 -165
  533. package/dist/route-types.d.ts.map +0 -1
  534. package/dist/route-types.js +0 -7
  535. package/dist/route-types.js.map +0 -1
  536. package/dist/router/__tests__/handler-context.test.d.ts +0 -2
  537. package/dist/router/__tests__/handler-context.test.d.ts.map +0 -1
  538. package/dist/router/__tests__/handler-context.test.js +0 -65
  539. package/dist/router/__tests__/handler-context.test.js.map +0 -1
  540. package/dist/router/__tests__/loader-cycle-detection.test.d.ts +0 -2
  541. package/dist/router/__tests__/loader-cycle-detection.test.d.ts.map +0 -1
  542. package/dist/router/__tests__/loader-cycle-detection.test.js +0 -221
  543. package/dist/router/__tests__/loader-cycle-detection.test.js.map +0 -1
  544. package/dist/router/__tests__/match-context.test.d.ts +0 -2
  545. package/dist/router/__tests__/match-context.test.d.ts.map +0 -1
  546. package/dist/router/__tests__/match-context.test.js +0 -92
  547. package/dist/router/__tests__/match-context.test.js.map +0 -1
  548. package/dist/router/__tests__/match-pipelines.test.d.ts +0 -2
  549. package/dist/router/__tests__/match-pipelines.test.d.ts.map +0 -1
  550. package/dist/router/__tests__/match-pipelines.test.js +0 -417
  551. package/dist/router/__tests__/match-pipelines.test.js.map +0 -1
  552. package/dist/router/__tests__/match-result.test.d.ts +0 -2
  553. package/dist/router/__tests__/match-result.test.d.ts.map +0 -1
  554. package/dist/router/__tests__/match-result.test.js +0 -457
  555. package/dist/router/__tests__/match-result.test.js.map +0 -1
  556. package/dist/router/__tests__/on-error.test.d.ts +0 -2
  557. package/dist/router/__tests__/on-error.test.d.ts.map +0 -1
  558. package/dist/router/__tests__/on-error.test.js +0 -678
  559. package/dist/router/__tests__/on-error.test.js.map +0 -1
  560. package/dist/router/__tests__/pattern-matching.test.d.ts +0 -2
  561. package/dist/router/__tests__/pattern-matching.test.d.ts.map +0 -1
  562. package/dist/router/__tests__/pattern-matching.test.js +0 -629
  563. package/dist/router/__tests__/pattern-matching.test.js.map +0 -1
  564. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts +0 -2
  565. package/dist/router/__tests__/segment-resolution-parallel-loading.test.d.ts.map +0 -1
  566. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js +0 -155
  567. package/dist/router/__tests__/segment-resolution-parallel-loading.test.js.map +0 -1
  568. package/dist/router/error-handling.d.ts +0 -77
  569. package/dist/router/error-handling.d.ts.map +0 -1
  570. package/dist/router/error-handling.js +0 -202
  571. package/dist/router/error-handling.js.map +0 -1
  572. package/dist/router/handler-context.d.ts +0 -20
  573. package/dist/router/handler-context.d.ts.map +0 -1
  574. package/dist/router/handler-context.js +0 -198
  575. package/dist/router/handler-context.js.map +0 -1
  576. package/dist/router/intercept-resolution.d.ts +0 -66
  577. package/dist/router/intercept-resolution.d.ts.map +0 -1
  578. package/dist/router/intercept-resolution.js +0 -246
  579. package/dist/router/intercept-resolution.js.map +0 -1
  580. package/dist/router/loader-resolution.d.ts +0 -64
  581. package/dist/router/loader-resolution.d.ts.map +0 -1
  582. package/dist/router/loader-resolution.js +0 -284
  583. package/dist/router/loader-resolution.js.map +0 -1
  584. package/dist/router/logging.d.ts +0 -15
  585. package/dist/router/logging.d.ts.map +0 -1
  586. package/dist/router/logging.js +0 -99
  587. package/dist/router/logging.js.map +0 -1
  588. package/dist/router/manifest.d.ts +0 -22
  589. package/dist/router/manifest.d.ts.map +0 -1
  590. package/dist/router/manifest.js +0 -181
  591. package/dist/router/manifest.js.map +0 -1
  592. package/dist/router/match-api.d.ts +0 -35
  593. package/dist/router/match-api.d.ts.map +0 -1
  594. package/dist/router/match-api.js +0 -406
  595. package/dist/router/match-api.js.map +0 -1
  596. package/dist/router/match-context.d.ts +0 -206
  597. package/dist/router/match-context.d.ts.map +0 -1
  598. package/dist/router/match-context.js +0 -17
  599. package/dist/router/match-context.js.map +0 -1
  600. package/dist/router/match-middleware/background-revalidation.d.ts +0 -127
  601. package/dist/router/match-middleware/background-revalidation.d.ts.map +0 -1
  602. package/dist/router/match-middleware/background-revalidation.js +0 -75
  603. package/dist/router/match-middleware/background-revalidation.js.map +0 -1
  604. package/dist/router/match-middleware/cache-lookup.d.ts +0 -112
  605. package/dist/router/match-middleware/cache-lookup.d.ts.map +0 -1
  606. package/dist/router/match-middleware/cache-lookup.js +0 -257
  607. package/dist/router/match-middleware/cache-lookup.js.map +0 -1
  608. package/dist/router/match-middleware/cache-store.d.ts +0 -113
  609. package/dist/router/match-middleware/cache-store.d.ts.map +0 -1
  610. package/dist/router/match-middleware/cache-store.js +0 -108
  611. package/dist/router/match-middleware/cache-store.js.map +0 -1
  612. package/dist/router/match-middleware/index.d.ts +0 -81
  613. package/dist/router/match-middleware/index.d.ts.map +0 -1
  614. package/dist/router/match-middleware/index.js +0 -80
  615. package/dist/router/match-middleware/index.js.map +0 -1
  616. package/dist/router/match-middleware/intercept-resolution.d.ts +0 -117
  617. package/dist/router/match-middleware/intercept-resolution.d.ts.map +0 -1
  618. package/dist/router/match-middleware/intercept-resolution.js +0 -134
  619. package/dist/router/match-middleware/intercept-resolution.js.map +0 -1
  620. package/dist/router/match-middleware/segment-resolution.d.ts +0 -99
  621. package/dist/router/match-middleware/segment-resolution.d.ts.map +0 -1
  622. package/dist/router/match-middleware/segment-resolution.js +0 -53
  623. package/dist/router/match-middleware/segment-resolution.js.map +0 -1
  624. package/dist/router/match-pipelines.d.ts +0 -147
  625. package/dist/router/match-pipelines.d.ts.map +0 -1
  626. package/dist/router/match-pipelines.js +0 -82
  627. package/dist/router/match-pipelines.js.map +0 -1
  628. package/dist/router/match-result.d.ts +0 -126
  629. package/dist/router/match-result.d.ts.map +0 -1
  630. package/dist/router/match-result.js +0 -93
  631. package/dist/router/match-result.js.map +0 -1
  632. package/dist/router/metrics.d.ts +0 -20
  633. package/dist/router/metrics.d.ts.map +0 -1
  634. package/dist/router/metrics.js +0 -47
  635. package/dist/router/metrics.js.map +0 -1
  636. package/dist/router/middleware.d.ts +0 -249
  637. package/dist/router/middleware.d.ts.map +0 -1
  638. package/dist/router/middleware.js +0 -434
  639. package/dist/router/middleware.js.map +0 -1
  640. package/dist/router/middleware.test.d.ts +0 -2
  641. package/dist/router/middleware.test.d.ts.map +0 -1
  642. package/dist/router/middleware.test.js +0 -816
  643. package/dist/router/middleware.test.js.map +0 -1
  644. package/dist/router/pattern-matching.d.ts +0 -149
  645. package/dist/router/pattern-matching.d.ts.map +0 -1
  646. package/dist/router/pattern-matching.js +0 -349
  647. package/dist/router/pattern-matching.js.map +0 -1
  648. package/dist/router/revalidation.d.ts +0 -44
  649. package/dist/router/revalidation.d.ts.map +0 -1
  650. package/dist/router/revalidation.js +0 -147
  651. package/dist/router/revalidation.js.map +0 -1
  652. package/dist/router/router-context.d.ts +0 -135
  653. package/dist/router/router-context.d.ts.map +0 -1
  654. package/dist/router/router-context.js +0 -36
  655. package/dist/router/router-context.js.map +0 -1
  656. package/dist/router/segment-resolution.d.ts +0 -127
  657. package/dist/router/segment-resolution.d.ts.map +0 -1
  658. package/dist/router/segment-resolution.js +0 -919
  659. package/dist/router/segment-resolution.js.map +0 -1
  660. package/dist/router/trie-matching.d.ts +0 -40
  661. package/dist/router/trie-matching.d.ts.map +0 -1
  662. package/dist/router/trie-matching.js +0 -127
  663. package/dist/router/trie-matching.js.map +0 -1
  664. package/dist/router/types.d.ts +0 -136
  665. package/dist/router/types.d.ts.map +0 -1
  666. package/dist/router/types.js +0 -7
  667. package/dist/router/types.js.map +0 -1
  668. package/dist/router.d.ts +0 -753
  669. package/dist/router.d.ts.map +0 -1
  670. package/dist/router.gen.d.ts +0 -6
  671. package/dist/router.gen.d.ts.map +0 -1
  672. package/dist/router.gen.js +0 -6
  673. package/dist/router.gen.js.map +0 -1
  674. package/dist/router.js +0 -1304
  675. package/dist/router.js.map +0 -1
  676. package/dist/rsc/__tests__/helpers.test.d.ts +0 -2
  677. package/dist/rsc/__tests__/helpers.test.d.ts.map +0 -1
  678. package/dist/rsc/__tests__/helpers.test.js +0 -140
  679. package/dist/rsc/__tests__/helpers.test.js.map +0 -1
  680. package/dist/rsc/handler.d.ts +0 -45
  681. package/dist/rsc/handler.d.ts.map +0 -1
  682. package/dist/rsc/handler.js +0 -1172
  683. package/dist/rsc/handler.js.map +0 -1
  684. package/dist/rsc/helpers.d.ts +0 -16
  685. package/dist/rsc/helpers.d.ts.map +0 -1
  686. package/dist/rsc/helpers.js +0 -55
  687. package/dist/rsc/helpers.js.map +0 -1
  688. package/dist/rsc/index.d.ts +0 -22
  689. package/dist/rsc/index.d.ts.map +0 -1
  690. package/dist/rsc/index.js +0 -23
  691. package/dist/rsc/index.js.map +0 -1
  692. package/dist/rsc/nonce.d.ts +0 -9
  693. package/dist/rsc/nonce.d.ts.map +0 -1
  694. package/dist/rsc/nonce.js +0 -18
  695. package/dist/rsc/nonce.js.map +0 -1
  696. package/dist/rsc/types.d.ts +0 -206
  697. package/dist/rsc/types.d.ts.map +0 -1
  698. package/dist/rsc/types.js +0 -8
  699. package/dist/rsc/types.js.map +0 -1
  700. package/dist/search-params.d.ts +0 -103
  701. package/dist/search-params.d.ts.map +0 -1
  702. package/dist/search-params.js +0 -74
  703. package/dist/search-params.js.map +0 -1
  704. package/dist/segment-system.d.ts +0 -75
  705. package/dist/segment-system.d.ts.map +0 -1
  706. package/dist/segment-system.js +0 -336
  707. package/dist/segment-system.js.map +0 -1
  708. package/dist/server/context.d.ts +0 -245
  709. package/dist/server/context.d.ts.map +0 -1
  710. package/dist/server/context.js +0 -197
  711. package/dist/server/context.js.map +0 -1
  712. package/dist/server/fetchable-loader-store.d.ts +0 -18
  713. package/dist/server/fetchable-loader-store.d.ts.map +0 -1
  714. package/dist/server/fetchable-loader-store.js +0 -18
  715. package/dist/server/fetchable-loader-store.js.map +0 -1
  716. package/dist/server/handle-store.d.ts +0 -85
  717. package/dist/server/handle-store.d.ts.map +0 -1
  718. package/dist/server/handle-store.js +0 -142
  719. package/dist/server/handle-store.js.map +0 -1
  720. package/dist/server/loader-registry.d.ts +0 -55
  721. package/dist/server/loader-registry.d.ts.map +0 -1
  722. package/dist/server/loader-registry.js +0 -132
  723. package/dist/server/loader-registry.js.map +0 -1
  724. package/dist/server/request-context.d.ts +0 -226
  725. package/dist/server/request-context.d.ts.map +0 -1
  726. package/dist/server/request-context.js +0 -290
  727. package/dist/server/request-context.js.map +0 -1
  728. package/dist/server/root-layout.d.ts +0 -4
  729. package/dist/server/root-layout.d.ts.map +0 -1
  730. package/dist/server/root-layout.js +0 -5
  731. package/dist/server/root-layout.js.map +0 -1
  732. package/dist/server.d.ts +0 -15
  733. package/dist/server.d.ts.map +0 -1
  734. package/dist/server.js +0 -20
  735. package/dist/server.js.map +0 -1
  736. package/dist/ssr/__tests__/ssr-handler.test.d.ts +0 -2
  737. package/dist/ssr/__tests__/ssr-handler.test.d.ts.map +0 -1
  738. package/dist/ssr/__tests__/ssr-handler.test.js +0 -132
  739. package/dist/ssr/__tests__/ssr-handler.test.js.map +0 -1
  740. package/dist/ssr/index.d.ts +0 -98
  741. package/dist/ssr/index.d.ts.map +0 -1
  742. package/dist/ssr/index.js +0 -158
  743. package/dist/ssr/index.js.map +0 -1
  744. package/dist/static-handler.d.ts +0 -50
  745. package/dist/static-handler.d.ts.map +0 -1
  746. package/dist/static-handler.gen.d.ts +0 -5
  747. package/dist/static-handler.gen.d.ts.map +0 -1
  748. package/dist/static-handler.gen.js +0 -5
  749. package/dist/static-handler.gen.js.map +0 -1
  750. package/dist/static-handler.js +0 -29
  751. package/dist/static-handler.js.map +0 -1
  752. package/dist/theme/ThemeProvider.d.ts +0 -20
  753. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  754. package/dist/theme/ThemeProvider.js +0 -240
  755. package/dist/theme/ThemeProvider.js.map +0 -1
  756. package/dist/theme/ThemeScript.d.ts +0 -48
  757. package/dist/theme/ThemeScript.d.ts.map +0 -1
  758. package/dist/theme/ThemeScript.js +0 -13
  759. package/dist/theme/ThemeScript.js.map +0 -1
  760. package/dist/theme/__tests__/theme.test.d.ts +0 -2
  761. package/dist/theme/__tests__/theme.test.d.ts.map +0 -1
  762. package/dist/theme/__tests__/theme.test.js +0 -103
  763. package/dist/theme/__tests__/theme.test.js.map +0 -1
  764. package/dist/theme/constants.d.ts +0 -29
  765. package/dist/theme/constants.d.ts.map +0 -1
  766. package/dist/theme/constants.js +0 -48
  767. package/dist/theme/constants.js.map +0 -1
  768. package/dist/theme/index.d.ts +0 -31
  769. package/dist/theme/index.d.ts.map +0 -1
  770. package/dist/theme/index.js +0 -36
  771. package/dist/theme/index.js.map +0 -1
  772. package/dist/theme/theme-context.d.ts +0 -40
  773. package/dist/theme/theme-context.d.ts.map +0 -1
  774. package/dist/theme/theme-context.js +0 -60
  775. package/dist/theme/theme-context.js.map +0 -1
  776. package/dist/theme/theme-script.d.ts +0 -27
  777. package/dist/theme/theme-script.d.ts.map +0 -1
  778. package/dist/theme/theme-script.js +0 -147
  779. package/dist/theme/theme-script.js.map +0 -1
  780. package/dist/theme/types.d.ts +0 -163
  781. package/dist/theme/types.d.ts.map +0 -1
  782. package/dist/theme/types.js +0 -11
  783. package/dist/theme/types.js.map +0 -1
  784. package/dist/theme/use-theme.d.ts +0 -12
  785. package/dist/theme/use-theme.d.ts.map +0 -1
  786. package/dist/theme/use-theme.js +0 -40
  787. package/dist/theme/use-theme.js.map +0 -1
  788. package/dist/types.d.ts +0 -1479
  789. package/dist/types.d.ts.map +0 -1
  790. package/dist/types.js +0 -10
  791. package/dist/types.js.map +0 -1
  792. package/dist/urls.d.ts +0 -441
  793. package/dist/urls.d.ts.map +0 -1
  794. package/dist/urls.gen.d.ts +0 -8
  795. package/dist/urls.gen.d.ts.map +0 -1
  796. package/dist/urls.gen.js +0 -8
  797. package/dist/urls.gen.js.map +0 -1
  798. package/dist/urls.js +0 -443
  799. package/dist/urls.js.map +0 -1
  800. package/dist/use-loader.d.ts +0 -127
  801. package/dist/use-loader.d.ts.map +0 -1
  802. package/dist/use-loader.js +0 -237
  803. package/dist/use-loader.js.map +0 -1
  804. package/dist/vite/__tests__/ast-handler-extract.test.d.ts +0 -2
  805. package/dist/vite/__tests__/ast-handler-extract.test.d.ts.map +0 -1
  806. package/dist/vite/__tests__/ast-handler-extract.test.js +0 -294
  807. package/dist/vite/__tests__/ast-handler-extract.test.js.map +0 -1
  808. package/dist/vite/__tests__/expose-id-utils.test.d.ts +0 -2
  809. package/dist/vite/__tests__/expose-id-utils.test.d.ts.map +0 -1
  810. package/dist/vite/__tests__/expose-id-utils.test.js +0 -224
  811. package/dist/vite/__tests__/expose-id-utils.test.js.map +0 -1
  812. package/dist/vite/__tests__/expose-internal-ids.test.d.ts +0 -2
  813. package/dist/vite/__tests__/expose-internal-ids.test.d.ts.map +0 -1
  814. package/dist/vite/__tests__/expose-internal-ids.test.js +0 -647
  815. package/dist/vite/__tests__/expose-internal-ids.test.js.map +0 -1
  816. package/dist/vite/__tests__/expose-router-id.test.d.ts +0 -2
  817. package/dist/vite/__tests__/expose-router-id.test.d.ts.map +0 -1
  818. package/dist/vite/__tests__/expose-router-id.test.js +0 -39
  819. package/dist/vite/__tests__/expose-router-id.test.js.map +0 -1
  820. package/dist/vite/ast-handler-extract.d.ts +0 -49
  821. package/dist/vite/ast-handler-extract.d.ts.map +0 -1
  822. package/dist/vite/ast-handler-extract.js +0 -249
  823. package/dist/vite/ast-handler-extract.js.map +0 -1
  824. package/dist/vite/expose-action-id.d.ts +0 -19
  825. package/dist/vite/expose-action-id.d.ts.map +0 -1
  826. package/dist/vite/expose-action-id.js +0 -250
  827. package/dist/vite/expose-action-id.js.map +0 -1
  828. package/dist/vite/expose-id-utils.d.ts +0 -69
  829. package/dist/vite/expose-id-utils.d.ts.map +0 -1
  830. package/dist/vite/expose-id-utils.js +0 -289
  831. package/dist/vite/expose-id-utils.js.map +0 -1
  832. package/dist/vite/expose-internal-ids.d.ts +0 -22
  833. package/dist/vite/expose-internal-ids.d.ts.map +0 -1
  834. package/dist/vite/expose-internal-ids.js +0 -886
  835. package/dist/vite/expose-internal-ids.js.map +0 -1
  836. package/dist/vite/index.d.ts +0 -149
  837. package/dist/vite/index.d.ts.map +0 -1
  838. package/dist/vite/index.js.bak +0 -5448
  839. package/dist/vite/index.js.map +0 -1
  840. package/dist/vite/index.named-routes.gen.ts +0 -103
  841. package/dist/vite/package-resolution.d.ts +0 -43
  842. package/dist/vite/package-resolution.d.ts.map +0 -1
  843. package/dist/vite/package-resolution.js +0 -112
  844. package/dist/vite/package-resolution.js.map +0 -1
  845. package/dist/vite/virtual-entries.d.ts +0 -25
  846. package/dist/vite/virtual-entries.d.ts.map +0 -1
  847. package/dist/vite/virtual-entries.js +0 -110
  848. package/dist/vite/virtual-entries.js.map +0 -1
@@ -19,15 +19,55 @@
19
19
  * is bounded; a capture killed mid-queue by that bound simply recaptures on a
20
20
  * later request (the existing best-effort contract).
21
21
  *
22
- * The chain link resolves in `finally` and the prior link is awaited with a
23
- * swallow, so one rejected capture can never wedge every later one.
22
+ * Document shells outrank queued navigation-only snapshots. Production Link
23
+ * prefetching can enqueue several expensive navigation captures at once; a
24
+ * strict FIFO made the requesting page's document capture wait
25
+ * behind speculative work until its queue budget expired. The active capture
26
+ * is never interrupted, and each priority remains FIFO.
24
27
  */
25
- let captureQueue: Promise<void> = Promise.resolve();
26
28
  let admittedCaptures = 0;
29
+ let captureRunning = false;
30
+
31
+ interface QueuedCapture {
32
+ waitStart: number;
33
+ state: "waiting" | "running" | "settled";
34
+ signalStart: () => void;
35
+ }
36
+
37
+ const documentCaptures: QueuedCapture[] = [];
38
+ const navigationCaptures: QueuedCapture[] = [];
27
39
 
28
40
  /** Bound queued/running capture closures retained by one isolate. */
29
41
  export const MAX_ADMITTED_CAPTURES: number = 32;
30
42
 
43
+ /** Point-in-time queue occupancy, for capture-scheduling telemetry. */
44
+ export interface CaptureQueueDepths {
45
+ /** A capture is currently executing (never preempted). */
46
+ running: boolean;
47
+ /** Waiting document-priority captures (run before every navigation capture). */
48
+ document: number;
49
+ /** Waiting navigation-priority captures. */
50
+ navigation: number;
51
+ }
52
+
53
+ /**
54
+ * Snapshot the queue's waiting/running state. Wait-timed-out entries still
55
+ * sitting in the arrays (pruned lazily by takeNextCapture) are excluded — they
56
+ * will never run, so counting them would overstate the backlog.
57
+ */
58
+ export function captureQueueDepths(): CaptureQueueDepths {
59
+ const waiting = (queue: QueuedCapture[]): number => {
60
+ let count = 0;
61
+ for (const queued of queue) if (queued.state === "waiting") count++;
62
+ return count;
63
+ };
64
+ return {
65
+ running: captureRunning,
66
+ document: waiting(documentCaptures),
67
+ navigation: waiting(navigationCaptures),
68
+ };
69
+ }
70
+
31
71
  /** The caller may drop this best-effort capture and retry on a later request. */
32
72
  export class CaptureQueueFullError extends Error {
33
73
  constructor() {
@@ -37,7 +77,35 @@ export class CaptureQueueFullError extends Error {
37
77
  }
38
78
 
39
79
  /**
40
- * Upper bound on how long one queue link may hold the queue. A capture task
80
+ * Budget on how long a capture may WAIT in the queue before it is dropped
81
+ * instead of run. On workerd a queued capture rides the scheduling request's
82
+ * waitUntil, whose post-response lifetime is bounded (~30s): a capture that
83
+ * already burned 15s+ parked behind a slow predecessor would start its own
84
+ * up-to-15s attempt (captureTimeout) with no budget left and risk being
85
+ * killed mid-store-write. Dropping at the budget is safe — captures are
86
+ * best-effort by contract, and a later request re-probes the key (the drop
87
+ * does NOT mark backoff: the route is not doomed, the isolate was busy).
88
+ * Matches one attempt's SHELL_CAPTURE_MAX_WAIT_MS so wait + attempt fits the
89
+ * platform budget. Field-observed: a navigation-shell capture parked ~24s
90
+ * behind a predecessor's two-attempt cycle.
91
+ */
92
+ export const CAPTURE_QUEUE_WAIT_BUDGET_MS: number = 15_000;
93
+
94
+ /** Thrown (async) when the queue wait exceeded the budget; the task never ran. */
95
+ export class CaptureQueueWaitTimeoutError extends Error {
96
+ readonly waitedMs: number;
97
+ constructor(waitedMs: number) {
98
+ super(
99
+ `shell capture waited ${Math.round(waitedMs)}ms in the queue ` +
100
+ `(budget ${CAPTURE_QUEUE_WAIT_BUDGET_MS}ms)`,
101
+ );
102
+ this.name = "CaptureQueueWaitTimeoutError";
103
+ this.waitedMs = waitedMs;
104
+ }
105
+ }
106
+
107
+ /**
108
+ * Upper bound on how long one running capture may hold the queue. A capture task
41
109
  * normally settles well inside this (attempt + in-place retry + writes), but
42
110
  * a task wedged on never-settling I/O — a workerd waitUntil fetch that pends
43
111
  * instead of rejecting (seen on GH runners with the dev prerender store
@@ -48,43 +116,103 @@ export class CaptureQueueFullError extends Error {
48
116
  const QUEUE_LINK_CAP_MS = 60_000;
49
117
 
50
118
  /**
51
- * Run `task` after every previously enqueued capture has settled. Returns a
52
- * promise for THIS task's completion (rejections propagate to the caller —
53
- * the queue itself is insulated).
119
+ * Run `task` after the active capture and every higher/equal-priority capture
120
+ * ahead of it have settled. Returns a promise for THIS task's completion
121
+ * (rejections propagate to the caller — the queue itself is insulated).
54
122
  */
55
123
  export function enqueueSerializedCapture(
56
124
  task: () => Promise<void>,
125
+ opts?: {
126
+ maxQueueWaitMs?: number;
127
+ priority?: "document" | "navigation";
128
+ },
57
129
  ): Promise<void> {
58
130
  if (admittedCaptures >= MAX_ADMITTED_CAPTURES) {
59
131
  return Promise.reject(new CaptureQueueFullError());
60
132
  }
61
133
  admittedCaptures++;
62
- const prior = captureQueue;
63
- let releaseQueue!: () => void;
64
- captureQueue = new Promise<void>((resolve) => {
65
- releaseQueue = resolve;
134
+
135
+ let signalStart!: () => void;
136
+ const startGate = new Promise<void>((resolve) => {
137
+ signalStart = resolve;
66
138
  });
67
- return (async () => {
68
- await prior.catch(() => {});
139
+ const queued: QueuedCapture = {
140
+ waitStart: performance.now(),
141
+ state: "waiting",
142
+ signalStart,
143
+ };
144
+
145
+ const completion = (async () => {
146
+ const budget = opts?.maxQueueWaitMs ?? CAPTURE_QUEUE_WAIT_BUDGET_MS;
147
+ let waitTimer: ReturnType<typeof setTimeout> | undefined;
148
+ const waitTimedOut = await Promise.race([
149
+ startGate.then(() => false),
150
+ new Promise<boolean>((resolve) => {
151
+ waitTimer = setTimeout(() => {
152
+ if (queued.state !== "waiting") return;
153
+ queued.state = "settled";
154
+ admittedCaptures--;
155
+ resolve(true);
156
+ }, budget);
157
+ (waitTimer as { unref?: () => void }).unref?.();
158
+ }),
159
+ ]);
160
+ if (waitTimer) clearTimeout(waitTimer);
161
+ if (waitTimedOut) {
162
+ throw new CaptureQueueWaitTimeoutError(
163
+ performance.now() - queued.waitStart,
164
+ );
165
+ }
166
+
69
167
  let capTimer: ReturnType<typeof setTimeout> | undefined;
70
168
  const taskPromise = Promise.resolve()
71
169
  .then(task)
72
170
  .finally(() => {
73
- // A timed-out link releases serialization, but its detached task still
171
+ // A capped capture releases serialization, but its detached task still
74
172
  // counts against admission until it actually settles.
75
173
  admittedCaptures--;
76
174
  });
175
+ const cap = new Promise<void>((resolve) => {
176
+ capTimer = setTimeout(resolve, QUEUE_LINK_CAP_MS);
177
+ (capTimer as { unref?: () => void }).unref?.();
178
+ });
179
+
77
180
  try {
78
- await Promise.race([
79
- taskPromise,
80
- new Promise<void>((resolve) => {
81
- capTimer = setTimeout(resolve, QUEUE_LINK_CAP_MS);
82
- (capTimer as { unref?: () => void }).unref?.();
83
- }),
84
- ]);
181
+ await Promise.race([taskPromise, cap]);
85
182
  } finally {
86
183
  if (capTimer) clearTimeout(capTimer);
87
- releaseQueue();
184
+ queued.state = "settled";
185
+ captureRunning = false;
186
+ // Handoff must happen before this caller's waitUntil promise settles.
187
+ // Resolving first lets workerd terminate the context with the queue lock
188
+ // still held, permanently parking later captures in the isolate.
189
+ startNextCapture();
88
190
  }
89
191
  })();
192
+
193
+ const queue =
194
+ opts?.priority === "document" ? documentCaptures : navigationCaptures;
195
+ queue.push(queued);
196
+ startNextCapture();
197
+ return completion;
198
+ }
199
+
200
+ function takeNextCapture(): QueuedCapture | undefined {
201
+ for (const queue of [documentCaptures, navigationCaptures]) {
202
+ let queued: QueuedCapture | undefined;
203
+ while ((queued = queue.shift())) {
204
+ if (queued.state === "waiting") return queued;
205
+ }
206
+ }
207
+ return undefined;
208
+ }
209
+
210
+ function startNextCapture(): void {
211
+ if (captureRunning) return;
212
+ const queued = takeNextCapture();
213
+ if (!queued) return;
214
+
215
+ captureRunning = true;
216
+ queued.state = "running";
217
+ queued.signalStart();
90
218
  }
@@ -77,6 +77,7 @@ import {
77
77
  type ActionContinuation,
78
78
  } from "./server-action.js";
79
79
  import { handleLoaderFetch } from "./loader-fetch.js";
80
+ import { applyStreamIdleTimeout } from "./stream-idle.js";
80
81
  import {
81
82
  checkRequestOrigin,
82
83
  ORIGIN_CHECK_PHASE_BY_MODE,
@@ -618,88 +619,179 @@ export function createRSCHandler<
618
619
  return coreRequestHandler(request, env, url, variables, nonce);
619
620
  };
620
621
 
621
- // Execute middleware chain if any, otherwise call core handler directly
622
- let response: Response;
623
- if (matchedMiddleware.length > 0) {
624
- const mwResponse = await executeMiddleware(
625
- matchedMiddleware,
626
- request,
627
- env,
628
- variables,
629
- coreHandler,
630
- createReverseFunction(getRequiredRouteMap()),
622
+ // Execute middleware chain if any, otherwise call core handler
623
+ // directly; the response is finalized below, inside the response span.
624
+ const hasMiddleware = matchedMiddleware.length > 0;
625
+ const downstream = hasMiddleware
626
+ ? await executeMiddleware(
627
+ matchedMiddleware,
628
+ request,
629
+ env,
630
+ variables,
631
+ coreHandler,
632
+ createReverseFunction(getRequiredRouteMap()),
633
+ )
634
+ : await coreHandler();
635
+
636
+ // Final response construction + host handoff, wrapped in rango.response
637
+ // — the explicit stream-handoff marker. The callback is synchronous, so
638
+ // the span ends immediately before the handler returns the response to
639
+ // the host; it never reads or wraps response.body. A downstream throw
640
+ // skips it entirely (no response exists to hand off).
641
+ return observePhase(PHASES.response, (responseSpan) => {
642
+ let response: Response;
643
+ if (hasMiddleware) {
644
+ if (
645
+ url.searchParams.has("_rsc_partial") ||
646
+ url.searchParams.has("_rsc_action")
647
+ ) {
648
+ const intercepted = interceptRedirectForPartial(
649
+ downstream,
650
+ createRedirectFlightResponse,
651
+ { requestOrigin: url.origin, basename: router.basename },
652
+ );
653
+ response = intercepted ?? finalizeResponse(downstream);
654
+ } else {
655
+ response = finalizeResponse(downstream);
656
+ }
657
+ } else {
658
+ response = downstream;
659
+ }
660
+
661
+ // Finalize metrics after all middleware (including post-next work)
662
+ // has completed so :post spans are captured in the timeline.
663
+ // Handler timing parts are always emitted (even without debug metrics)
664
+ // so non-debug requests still get bootstrap Server-Timing entries.
665
+ const handlerTimingArr: string[] = variables.__handlerTiming || [];
666
+ // Preserve any existing Server-Timing set by response routes or middleware
667
+ const existingTiming = response.headers.get("Server-Timing");
668
+ const timingParts = existingTiming
669
+ ? [existingTiming, ...handlerTimingArr]
670
+ : [...handlerTimingArr];
671
+
672
+ const metricsStore = requestContext._metricsStore;
673
+ if (metricsStore) {
674
+ // When the store was created at handler start (earlyMetricsStore),
675
+ // handler:total covers the full request. When ctx.debugPerformance()
676
+ // created the store mid-request its requestStart is now the threaded
677
+ // _handlerStart (== handlerStart), so both branches yield the true
678
+ // request entry; reading the store's own anchor keeps this correct even
679
+ // if a store ever lands without the threading (falls back to its start).
680
+ const totalStart = earlyMetricsStore
681
+ ? handlerStart
682
+ : metricsStore.requestStart;
683
+ appendMetric(
684
+ metricsStore,
685
+ "handler:total",
686
+ totalStart,
687
+ performance.now() - totalStart,
688
+ );
689
+ const metricsTiming = buildMetricsTiming(
690
+ request.method,
691
+ url.pathname,
692
+ metricsStore,
693
+ );
694
+ if (metricsTiming) timingParts.push(metricsTiming);
695
+ }
696
+
697
+ const fullTiming = timingParts.join(", ");
698
+ if (fullTiming && !isWebSocketUpgradeResponse(response)) {
699
+ try {
700
+ response.headers.set("Server-Timing", fullTiming);
701
+ } catch {
702
+ // Immutable headers (e.g. a passed-through platform Response) — drop
703
+ // the timing header, never the response. Instrumentation must not
704
+ // 500 a request.
705
+ }
706
+ }
707
+
708
+ // Single open-redirect chokepoint: every response (PE, full-page,
709
+ // middleware short-circuit, response-route) funnels through here, so
710
+ // guarding browser-followed (3xx) redirects once covers them all and any
711
+ // future redirect exit. Soft SPA/Flight redirects are 200/204 and pass
712
+ // through untouched (validated client-side instead).
713
+ const guarded = guardOutgoingRedirect(
714
+ response,
715
+ url.origin,
716
+ router.basename,
631
717
  );
632
718
 
719
+ // Stream-idle watchdog (opt-in via timeouts.streamIdleMs): bounds
720
+ // end-to-end idle flow on the streamed body — see rsc/stream-idle.ts
721
+ // for the semantics. Applied at this finalization chokepoint so every
722
+ // streaming exit is covered; websocket upgrades must never be
723
+ // reconstructed and bodiless responses have nothing to bound. The
724
+ // trip fires POST-handoff (the request ALS may be gone), so it
725
+ // reports via the eagerly captured surfaces — callOnError +
726
+ // router.telemetry directly — mirroring handleStore.onError.
727
+ // onTimeout does NOT apply: the response already left the handler,
728
+ // so no replacement Response can be served mid-stream.
729
+ let finalResponse = guarded;
730
+ const streamIdleMs = router.timeouts.streamIdleMs;
731
+ // Websocket check FIRST: a workerd upgrade response must never have
732
+ // its body getter poked (same invariant as the body_kind attribute
733
+ // below).
633
734
  if (
634
- url.searchParams.has("_rsc_partial") ||
635
- url.searchParams.has("_rsc_action")
735
+ isTimeoutEnabled(streamIdleMs) &&
736
+ !isWebSocketUpgradeResponse(guarded) &&
737
+ guarded.body
636
738
  ) {
637
- const intercepted = interceptRedirectForPartial(
638
- mwResponse,
639
- createRedirectFlightResponse,
640
- { requestOrigin: url.origin, basename: router.basename },
739
+ const routeKey = requestContext._routeName;
740
+ finalResponse = applyStreamIdleTimeout(
741
+ guarded,
742
+ streamIdleMs!,
743
+ (tripInfo) => {
744
+ callOnError(tripInfo.error, "handler", {
745
+ request,
746
+ url,
747
+ env,
748
+ routeKey,
749
+ handledByBoundary: false,
750
+ metadata: {
751
+ timeout: true,
752
+ phase: "stream-idle",
753
+ durationMs: tripInfo.totalMs,
754
+ },
755
+ });
756
+ if (router.telemetry) {
757
+ safeEmit(resolveSink(router.telemetry), {
758
+ type: "request.timeout",
759
+ timestamp: performance.now(),
760
+ requestId: getRequestId(request),
761
+ phase: "stream-idle",
762
+ pathname: url.pathname,
763
+ routeKey,
764
+ durationMs: tripInfo.totalMs,
765
+ customHandler: false,
766
+ });
767
+ }
768
+ },
641
769
  );
642
- response = intercepted ?? finalizeResponse(mwResponse);
643
- } else {
644
- response = finalizeResponse(mwResponse);
645
770
  }
646
- } else {
647
- response = await coreHandler();
648
- }
649
771
 
650
- // Finalize metrics after all middleware (including post-next work)
651
- // has completed so :post spans are captured in the timeline.
652
- // Handler timing parts are always emitted (even without debug metrics)
653
- // so non-debug requests still get bootstrap Server-Timing entries.
654
- const handlerTimingArr: string[] = variables.__handlerTiming || [];
655
- // Preserve any existing Server-Timing set by response routes or middleware
656
- const existingTiming = response.headers.get("Server-Timing");
657
- const timingParts = existingTiming
658
- ? [existingTiming, ...handlerTimingArr]
659
- : [...handlerTimingArr];
660
-
661
- const metricsStore = requestContext._metricsStore;
662
- if (metricsStore) {
663
- // When the store was created at handler start (earlyMetricsStore),
664
- // handler:total covers the full request. When ctx.debugPerformance()
665
- // created the store mid-request its requestStart is now the threaded
666
- // _handlerStart (== handlerStart), so both branches yield the true
667
- // request entry; reading the store's own anchor keeps this correct even
668
- // if a store ever lands without the threading (falls back to its start).
669
- const totalStart = earlyMetricsStore
670
- ? handlerStart
671
- : metricsStore.requestStart;
672
- appendMetric(
673
- metricsStore,
674
- "handler:total",
675
- totalStart,
676
- performance.now() - totalStart,
772
+ // Attributes describe the response actually handed to the host (after
773
+ // unsafe-redirect replacement), low-cardinality only. body_kind checks
774
+ // the websocket marker before the body getter so a workerd upgrade
775
+ // Response is never poked; `.body` is a getter access, not a read of
776
+ // the stream.
777
+ responseSpan.setAttribute(
778
+ "http.response.status_code",
779
+ finalResponse.status,
677
780
  );
678
- const metricsTiming = buildMetricsTiming(
679
- request.method,
680
- url.pathname,
681
- metricsStore,
781
+ responseSpan.setAttribute(
782
+ "rango.response.mode",
783
+ requestContext._requestMode ?? "middleware-short-circuit",
682
784
  );
683
- if (metricsTiming) timingParts.push(metricsTiming);
684
- }
685
-
686
- const fullTiming = timingParts.join(", ");
687
- if (fullTiming && !isWebSocketUpgradeResponse(response)) {
688
- try {
689
- response.headers.set("Server-Timing", fullTiming);
690
- } catch {
691
- // Immutable headers (e.g. a passed-through platform Response) — drop
692
- // the timing header, never the response. Instrumentation must not
693
- // 500 a request.
694
- }
695
- }
696
-
697
- // Single open-redirect chokepoint: every response (PE, full-page,
698
- // middleware short-circuit, response-route) funnels through here, so
699
- // guarding browser-followed (3xx) redirects once covers them all and any
700
- // future redirect exit. Soft SPA/Flight redirects are 200/204 and pass
701
- // through untouched (validated client-side instead).
702
- return guardOutgoingRedirect(response, url.origin, router.basename);
785
+ responseSpan.setAttribute(
786
+ "rango.response.body_kind",
787
+ isWebSocketUpgradeResponse(finalResponse)
788
+ ? "websocket"
789
+ : finalResponse.body === null
790
+ ? "empty"
791
+ : "stream",
792
+ );
793
+ return finalResponse;
794
+ });
703
795
  }),
704
796
  );
705
797
  };
@@ -755,6 +847,12 @@ export function createRSCHandler<
755
847
  const classifyDur = performance.now() - classifyStart;
756
848
  handlerTiming.push(`handler-classify;dur=${classifyDur.toFixed(2)}`);
757
849
 
850
+ // Stash the classified mode for the rango.response span (rango.response.mode)
851
+ // — the outer handler tail cannot see the plan. Stays unset when middleware
852
+ // short-circuits before core execution runs (reported as
853
+ // "middleware-short-circuit").
854
+ getRequestContext()._requestMode = plan.mode;
855
+
758
856
  // ---- 2. Terminal plans (no execution needed) ----
759
857
  if (plan.mode === "redirect") {
760
858
  // Redirects are handled by the pipeline (match/matchPartial),
@@ -79,6 +79,7 @@ import { reportCacheError } from "../cache/cache-error.js";
79
79
  import type { SearchParamsFilter } from "../cache/search-params-filter.js";
80
80
  import { INTERNAL_RANGO_DEBUG } from "../internal-debug.js";
81
81
  import type {
82
+ DocumentShellCacheEntry,
82
83
  SegmentCacheStore,
83
84
  ShellCacheEntry,
84
85
  ShellSnapshotRecord,
@@ -212,7 +213,14 @@ function replayableShellSnapshot(
212
213
  if (!isValidShellHit(entry, buildVersion)) {
213
214
  return { reason: "invalid-version" };
214
215
  }
215
- if (!hasIntactShellPayload(entry)) return { reason: "corrupt-entry" };
216
+ // navigationOnly entries store no document half (prelude/postponed absent),
217
+ // so the payload gate applies to document-snapshot entries alone. Replay
218
+ // consumes only the snapshot; fragment corruption inside it is caught by the
219
+ // consumer-side Flight decoders (SegmentFragmentDecodeError →
220
+ // segmentReplayCorrupt → healing capture at the document key).
221
+ if (!entry.navigationOnly && !hasIntactShellPayload(entry)) {
222
+ return { reason: "corrupt-entry" };
223
+ }
216
224
  if (entry.handlerLiveHoles) return { reason: "handler-live-holes" };
217
225
  if (entry.transitionWhen) return { reason: "transition-when" };
218
226
  // Eligibility requires the CANONICAL doc segment record (`docKey`), not just
@@ -386,7 +394,7 @@ async function handleRscRenderingInner<TEnv>(
386
394
  // build-manifest hit further down): schedule the background
387
395
  // recapture when asked, then commit the composed response.
388
396
  const serveHit = (
389
- entry: ShellCacheEntry,
397
+ entry: DocumentShellCacheEntry,
390
398
  revalidate: boolean | undefined,
391
399
  ): Response => {
392
400
  if (revalidate) {
@@ -1159,7 +1167,7 @@ function serveShellHit(
1159
1167
  reqCtx: RequestContext<any>,
1160
1168
  handleStore: ReturnType<typeof getRequestContext>["_handleStore"],
1161
1169
  ssrModule: SSRModule,
1162
- entry: ShellCacheEntry,
1170
+ entry: DocumentShellCacheEntry,
1163
1171
  descriptor: ShellCaptureDescriptor,
1164
1172
  ): Response {
1165
1173
  const preludeBytes = base64ToBytes(entry.prelude);
@@ -25,7 +25,11 @@
25
25
  * markers say whether it is still current.
26
26
  */
27
27
 
28
- import type { SegmentCacheStore, ShellCacheEntry } from "../cache/types.js";
28
+ import type {
29
+ DocumentShellCacheEntry,
30
+ SegmentCacheStore,
31
+ ShellCacheEntry,
32
+ } from "../cache/types.js";
29
33
  import { sortedSearchString } from "../cache/cache-key-utils.js";
30
34
  import type { SearchParamsFilter } from "../cache/search-params-filter.js";
31
35
  import {
@@ -88,20 +92,29 @@ function loadManifest(): Promise<ShellManifestModule | null> {
88
92
  * Spec-only keying is sound because buildVersion is process-constant on the
89
93
  * manifest path (folded into the shipped worker; dev never loads a manifest).
90
94
  */
91
- const validatedSpecs = new Map<string, BuildShellEntry | null>();
95
+ const validatedSpecs = new Map<string, ValidatedBuildShellEntry | null>();
96
+
97
+ /**
98
+ * A manifest record whose document half passed hasIntactShellPayload — the
99
+ * casts below sit directly on that runtime gate (build entries are always
100
+ * document-shaped; the predicate narrows entry, not the record around it).
101
+ */
102
+ type ValidatedBuildShellEntry = BuildShellEntry & {
103
+ entry: DocumentShellCacheEntry;
104
+ };
92
105
 
93
106
  async function validatedManifestRecord(
94
107
  mod: ShellManifestModule,
95
108
  spec: string,
96
109
  buildVersion: string,
97
- ): Promise<BuildShellEntry | undefined> {
110
+ ): Promise<ValidatedBuildShellEntry | undefined> {
98
111
  let verdict = validatedSpecs.get(spec);
99
112
  if (verdict === undefined) {
100
113
  const record = (await mod.loadShellAsset(spec)).default;
101
114
  verdict =
102
115
  isValidShellHit(record.entry, buildVersion) &&
103
116
  hasIntactShellPayload(record.entry)
104
- ? record
117
+ ? (record as ValidatedBuildShellEntry)
105
118
  : null;
106
119
  validatedSpecs.set(spec, verdict);
107
120
  }
@@ -118,7 +131,7 @@ export function resetBuildShellManifestForTests(): void {
118
131
  const warnedTagCheckUnsupported = new Set<string>();
119
132
 
120
133
  export interface BuildShellHit {
121
- entry: ShellCacheEntry;
134
+ entry: DocumentShellCacheEntry;
122
135
  /** Past createdAt + ttl: serve, but schedule the runtime recapture. */
123
136
  stale: boolean;
124
137
  }
@@ -273,7 +286,7 @@ export async function lookupBuildShell(
273
286
  const hasManifest = globalThis.__loadShellManifestModule !== undefined;
274
287
  if (!hasManifest && !dev) return null;
275
288
  if (sortedSearchString(url.searchParams, filter) !== "") return null;
276
- let record: BuildShellEntry | undefined;
289
+ let record: ValidatedBuildShellEntry | undefined;
277
290
  if (hasManifest) {
278
291
  const mod = await loadManifest();
279
292
  if (!mod) return null;
@@ -286,7 +299,7 @@ export async function lookupBuildShell(
286
299
  fetched !== undefined &&
287
300
  isValidShellHit(fetched.entry, buildVersion) &&
288
301
  hasIntactShellPayload(fetched.entry)
289
- ? fetched
302
+ ? (fetched as ValidatedBuildShellEntry)
290
303
  : undefined;
291
304
  }
292
305
  if (!record) return null;