vinext 1.3.0 → 1.4.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 (529) hide show
  1. package/README.md +5 -2
  2. package/THIRD_PARTY_LICENSES.md +47 -0
  3. package/dist/_virtual/_rolldown/runtime.js +4 -3
  4. package/dist/build/action-owner-manifest.d.ts +3 -2
  5. package/dist/build/action-owner-manifest.js +18 -2
  6. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  7. package/dist/build/app-page-static-eligibility.js +80 -13
  8. package/dist/build/clean-output.d.ts +2 -1
  9. package/dist/build/client-build-config.d.ts +13 -3
  10. package/dist/build/client-build-config.js +46 -9
  11. package/dist/build/client-reference-async.d.ts +48 -0
  12. package/dist/build/client-reference-async.js +123 -0
  13. package/dist/build/client-reference-chunks.d.ts +32 -0
  14. package/dist/build/client-reference-chunks.js +111 -0
  15. package/dist/build/client-reference-groups.d.ts +9 -1
  16. package/dist/build/client-reference-groups.js +40 -2
  17. package/dist/build/css-url-assets.d.ts +2 -1
  18. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  19. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  20. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  21. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  22. package/dist/build/google-fonts/validate.d.ts +2 -1
  23. package/dist/build/inline-css.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +2 -1
  25. package/dist/build/next-client-runtime-manifests.d.ts +2 -1
  26. package/dist/build/precompress.d.ts +2 -1
  27. package/dist/build/precompress.js +1 -1
  28. package/dist/build/prerender-paths.d.ts +2 -1
  29. package/dist/build/prerender-phase.d.ts +2 -1
  30. package/dist/build/prerender-server-pool.js +1 -1
  31. package/dist/build/prerender.d.ts +3 -2
  32. package/dist/build/prerender.js +6 -5
  33. package/dist/build/report.d.ts +2 -15
  34. package/dist/build/report.js +1 -51
  35. package/dist/build/run-prerender.d.ts +2 -1
  36. package/dist/build/server-actions-encryption-key.d.ts +2 -1
  37. package/dist/build/ssr-manifest.js +25 -2
  38. package/dist/build/standalone.d.ts +2 -1
  39. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  40. package/dist/cache.js +1 -2
  41. package/dist/check.d.ts +2 -1
  42. package/dist/check.js +5 -1
  43. package/dist/cli-args.d.ts +2 -1
  44. package/dist/cli.js +5 -0
  45. package/dist/client/client-redirect-matcher.js +2 -1
  46. package/dist/client/client-redirects.d.ts +4 -3
  47. package/dist/client/client-redirects.js +2 -1
  48. package/dist/client/client-rewrites.d.ts +2 -1
  49. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  50. package/dist/client/dev-error-overlay.js +1 -1
  51. package/dist/client/index.js +1 -2
  52. package/dist/client/instrumentation-client-state.js +5 -5
  53. package/dist/client/navigation-runtime.d.ts +16 -2
  54. package/dist/client/navigation-runtime.js +2 -2
  55. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  56. package/dist/client/vinext-next-data.d.ts +25 -1
  57. package/dist/client/window-next.d.ts +2 -1
  58. package/dist/config/config-matchers.d.ts +12 -1
  59. package/dist/config/config-matchers.js +111 -16
  60. package/dist/config/dotenv.d.ts +2 -1
  61. package/dist/config/next-config.d.ts +32 -1
  62. package/dist/config/next-config.js +93 -5
  63. package/dist/config/tsconfig-paths.d.ts +2 -1
  64. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +327 -0
  65. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +123 -0
  66. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +29 -0
  67. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +134 -0
  68. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +50 -0
  69. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +455 -0
  70. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +147 -0
  71. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +169 -0
  72. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +2584 -0
  73. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +2220 -0
  74. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +227 -0
  75. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +425 -0
  76. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +427 -0
  77. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +229 -0
  78. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +292 -0
  79. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +106 -0
  80. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +182 -0
  81. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +42 -0
  82. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +147 -0
  83. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +94 -0
  84. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +95 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  105. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  106. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  107. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  108. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  109. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  110. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  111. package/dist/deps/.pnpm/safer-buffer@2.1.2/deps/safer-buffer/safer.js +45 -0
  112. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  113. package/dist/entries/app-browser-entry.d.ts +20 -5
  114. package/dist/entries/app-browser-entry.js +79 -6
  115. package/dist/entries/app-rsc-entry.d.ts +2 -1
  116. package/dist/entries/app-rsc-entry.js +59 -60
  117. package/dist/entries/app-rsc-manifest.d.ts +2 -1
  118. package/dist/entries/app-rsc-manifest.js +56 -4
  119. package/dist/entries/app-ssr-entry.js +1 -0
  120. package/dist/entries/pages-entry-helpers.js +1 -2
  121. package/dist/entries/pages-server-entry.d.ts +2 -1
  122. package/dist/entries/pages-server-entry.js +34 -9
  123. package/dist/entries/runtime-entry-module.d.ts +1 -0
  124. package/dist/entries/runtime-entry-module.js +4 -1
  125. package/dist/image/image-adapters-virtual.d.ts +2 -1
  126. package/dist/index.js +184 -103
  127. package/dist/init-cloudflare.d.ts +1 -3
  128. package/dist/init-cloudflare.js +10 -48
  129. package/dist/init-platform.d.ts +2 -0
  130. package/dist/init-platform.js +4 -0
  131. package/dist/plugins/client-compile-hints.d.ts +30 -0
  132. package/dist/plugins/client-compile-hints.js +88 -0
  133. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  134. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  135. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  136. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  137. package/dist/plugins/environment.d.ts +2 -1
  138. package/dist/plugins/extensionless-dynamic-import.js +6 -2
  139. package/dist/plugins/fonts.js +9 -12
  140. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  141. package/dist/plugins/import-meta-url.d.ts +2 -1
  142. package/dist/plugins/next-intl-catalog.d.ts +12 -0
  143. package/dist/plugins/next-intl-catalog.js +85 -0
  144. package/dist/plugins/og-assets.d.ts +2 -1
  145. package/dist/plugins/og-assets.js +2 -3
  146. package/dist/plugins/optimize-imports.d.ts +2 -1
  147. package/dist/plugins/pages-node-externals.d.ts +3 -1
  148. package/dist/plugins/pages-node-externals.js +1 -1
  149. package/dist/plugins/remove-console.d.ts +2 -1
  150. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  151. package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
  152. package/dist/plugins/rsc-client-reference-loaders.js +170 -68
  153. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  154. package/dist/plugins/sass.d.ts +2 -1
  155. package/dist/plugins/strip-server-exports.d.ts +2 -1
  156. package/dist/plugins/styled-jsx.d.ts +2 -1
  157. package/dist/plugins/transform-result.d.ts +2 -1
  158. package/dist/plugins/typeof-window.d.ts +2 -1
  159. package/dist/plugins/use-cache-callable.d.ts +1 -1
  160. package/dist/plugins/use-cache-callable.js +136 -94
  161. package/dist/plugins/worker-image-imports.js +1 -1
  162. package/dist/plugins/worker-use-server.d.ts +2 -1
  163. package/dist/routing/app-route-graph.d.ts +46 -0
  164. package/dist/routing/app-route-graph.js +131 -51
  165. package/dist/routing/browser-route-manifest.d.ts +2 -1
  166. package/dist/routing/optimistic-route-trie.d.ts +2 -1
  167. package/dist/routing/route-matching.d.ts +2 -1
  168. package/dist/routing/route-pattern.d.ts +2 -1
  169. package/dist/server/accept-encoding.d.ts +2 -1
  170. package/dist/server/api-handler.js +19 -4
  171. package/dist/server/app-action-forwarding.d.ts +2 -1
  172. package/dist/server/app-bfcache-identity.d.ts +2 -1
  173. package/dist/server/app-bfcache-identity.js +1 -1
  174. package/dist/server/app-browser-action-result.d.ts +2 -1
  175. package/dist/server/app-browser-entry.js +106 -66
  176. package/dist/server/app-browser-error.d.ts +2 -1
  177. package/dist/server/app-browser-history-controller.d.ts +7 -5
  178. package/dist/server/app-browser-history-controller.js +93 -15
  179. package/dist/server/app-browser-hydration.d.ts +2 -1
  180. package/dist/server/app-browser-interception-context.d.ts +2 -1
  181. package/dist/server/app-browser-navigation-controller.d.ts +2 -2
  182. package/dist/server/app-browser-navigation-controller.js +16 -12
  183. package/dist/server/app-browser-popstate.d.ts +2 -1
  184. package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
  185. package/dist/server/app-browser-rsc-redirect.js +4 -4
  186. package/dist/server/app-browser-server-action-client.d.ts +4 -1
  187. package/dist/server/app-browser-server-action-client.js +4 -3
  188. package/dist/server/app-browser-state.d.ts +2 -4
  189. package/dist/server/app-browser-state.js +9 -4
  190. package/dist/server/app-browser-stream.d.ts +2 -1
  191. package/dist/server/app-browser-supplemental-refresh.js +16 -1
  192. package/dist/server/app-browser-visible-commit.d.ts +3 -2
  193. package/dist/server/app-browser-visible-commit.js +2 -12
  194. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  195. package/dist/server/app-client-reference-manifest.js +46 -0
  196. package/dist/server/app-client-reference-preloader.d.ts +25 -5
  197. package/dist/server/app-client-reference-preloader.js +22 -7
  198. package/dist/server/app-elements-wire.d.ts +8 -39
  199. package/dist/server/app-elements-wire.js +4 -41
  200. package/dist/server/app-elements.d.ts +4 -2
  201. package/dist/server/app-elements.js +4 -2
  202. package/dist/server/app-fallback-renderer.d.ts +9 -2
  203. package/dist/server/app-fallback-renderer.js +4 -1
  204. package/dist/server/app-history-state.d.ts +4 -3
  205. package/dist/server/app-history-state.js +5 -2
  206. package/dist/server/app-inline-css-client.d.ts +2 -1
  207. package/dist/server/app-metadata-tracing.d.ts +2 -1
  208. package/dist/server/app-mounted-layouts.d.ts +21 -0
  209. package/dist/server/app-mounted-layouts.js +67 -0
  210. package/dist/server/app-optimistic-routing.d.ts +37 -2
  211. package/dist/server/app-optimistic-routing.js +75 -2
  212. package/dist/server/app-page-boundary-render.d.ts +20 -2
  213. package/dist/server/app-page-boundary-render.js +224 -40
  214. package/dist/server/app-page-boundary.d.ts +34 -5
  215. package/dist/server/app-page-boundary.js +41 -8
  216. package/dist/server/app-page-cache-finalizer.d.ts +14 -2
  217. package/dist/server/app-page-cache-finalizer.js +71 -30
  218. package/dist/server/app-page-cache-render.d.ts +10 -2
  219. package/dist/server/app-page-cache-render.js +14 -2
  220. package/dist/server/app-page-cache.d.ts +13 -1
  221. package/dist/server/app-page-cache.js +33 -11
  222. package/dist/server/app-page-dispatch.d.ts +39 -11
  223. package/dist/server/app-page-dispatch.js +236 -177
  224. package/dist/server/app-page-element-builder.d.ts +19 -3
  225. package/dist/server/app-page-element-builder.js +193 -71
  226. package/dist/server/app-page-execution.d.ts +43 -51
  227. package/dist/server/app-page-execution.js +205 -92
  228. package/dist/server/app-page-head.d.ts +108 -3
  229. package/dist/server/app-page-head.js +337 -154
  230. package/dist/server/app-page-http-access-fallback-metadata.d.ts +49 -2
  231. package/dist/server/app-page-http-access-fallback-metadata.js +77 -2
  232. package/dist/server/app-page-layout-gate.d.ts +35 -0
  233. package/dist/server/app-page-layout-gate.js +50 -0
  234. package/dist/server/app-page-method.d.ts +2 -1
  235. package/dist/server/app-page-params.d.ts +0 -1
  236. package/dist/server/app-page-params.js +1 -14
  237. package/dist/server/app-page-probe.d.ts +5 -22
  238. package/dist/server/app-page-probe.js +4 -37
  239. package/dist/server/app-page-render-identity.d.ts +2 -1
  240. package/dist/server/app-page-render.d.ts +9 -13
  241. package/dist/server/app-page-render.js +108 -214
  242. package/dist/server/app-page-request.d.ts +15 -4
  243. package/dist/server/app-page-request.js +2 -2
  244. package/dist/server/app-page-response.js +3 -3
  245. package/dist/server/app-page-route-wiring.d.ts +65 -8
  246. package/dist/server/app-page-route-wiring.js +259 -103
  247. package/dist/server/app-page-rsc-render-status.d.ts +29 -2
  248. package/dist/server/app-page-rsc-render-status.js +121 -13
  249. package/dist/server/app-page-search-params-observation.d.ts +7 -2
  250. package/dist/server/app-page-search-params-observation.js +8 -1
  251. package/dist/server/app-page-segment-plan.d.ts +2 -1
  252. package/dist/server/app-page-stream.d.ts +33 -1
  253. package/dist/server/app-page-stream.js +25 -6
  254. package/dist/server/app-pages-bridge.d.ts +6 -1
  255. package/dist/server/app-pages-bridge.js +7 -3
  256. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  257. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  258. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  259. package/dist/server/app-prerender-static-params.d.ts +2 -1
  260. package/dist/server/app-render-dependency.d.ts +21 -4
  261. package/dist/server/app-render-dependency.js +100 -33
  262. package/dist/server/app-request-stage-dispatch.js +1 -1
  263. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  264. package/dist/server/app-response-stage-entry.d.ts +2 -1
  265. package/dist/server/app-route-handler-cache.d.ts +2 -1
  266. package/dist/server/app-route-handler-cache.js +2 -2
  267. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  268. package/dist/server/app-route-handler-dispatch.js +15 -10
  269. package/dist/server/app-route-handler-execution.d.ts +2 -1
  270. package/dist/server/app-route-handler-execution.js +8 -3
  271. package/dist/server/app-route-handler-policy.d.ts +1 -1
  272. package/dist/server/app-route-handler-policy.js +3 -3
  273. package/dist/server/app-route-handler-response.d.ts +2 -1
  274. package/dist/server/app-route-handler-response.js +1 -1
  275. package/dist/server/app-route-handler-runtime.d.ts +2 -1
  276. package/dist/server/app-route-handler-runtime.js +17 -4
  277. package/dist/server/app-route-module-loader.d.ts +18 -1
  278. package/dist/server/app-route-module-loader.js +8 -0
  279. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  280. package/dist/server/app-rsc-cache-busting.d.ts +2 -2
  281. package/dist/server/app-rsc-cache-busting.js +4 -4
  282. package/dist/server/app-rsc-error-handler.d.ts +4 -2
  283. package/dist/server/app-rsc-error-handler.js +9 -1
  284. package/dist/server/app-rsc-errors.d.ts +10 -1
  285. package/dist/server/app-rsc-errors.js +8 -1
  286. package/dist/server/app-rsc-handler.d.ts +7 -6
  287. package/dist/server/app-rsc-handler.js +36 -34
  288. package/dist/server/app-rsc-request-normalization.d.ts +0 -4
  289. package/dist/server/app-rsc-request-normalization.js +1 -4
  290. package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
  291. package/dist/server/app-rsc-response-finalizer.js +2 -2
  292. package/dist/server/app-rsc-response-stage.js +5 -3
  293. package/dist/server/app-rsc-route-matching.d.ts +38 -1
  294. package/dist/server/app-rsc-route-matching.js +24 -0
  295. package/dist/server/app-segment-config.d.ts +2 -1
  296. package/dist/server/app-segment-config.js +1 -14
  297. package/dist/server/app-server-action-execution.d.ts +5 -2
  298. package/dist/server/app-server-action-execution.js +10 -7
  299. package/dist/server/app-ssr-entry.d.ts +8 -0
  300. package/dist/server/app-ssr-entry.js +98 -50
  301. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  302. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  303. package/dist/server/app-ssr-stream.d.ts +22 -10
  304. package/dist/server/app-ssr-stream.js +300 -68
  305. package/dist/server/app-static-generation.d.ts +2 -1
  306. package/dist/server/app-streamed-client-references.d.ts +39 -0
  307. package/dist/server/app-streamed-client-references.js +156 -0
  308. package/dist/server/app-visited-response-cache.d.ts +38 -2
  309. package/dist/server/app-visited-response-cache.js +46 -5
  310. package/dist/server/app-worker-stages.d.ts +27 -4
  311. package/dist/server/app-worker-stages.js +45 -6
  312. package/dist/server/artifact-compatibility.d.ts +2 -2
  313. package/dist/server/artifact-compatibility.js +1 -10
  314. package/dist/server/bfcache-identity.d.ts +2 -1
  315. package/dist/server/cache-headers.d.ts +2 -1
  316. package/dist/server/cache-proof.d.ts +1 -115
  317. package/dist/server/cache-proof.js +1 -544
  318. package/dist/server/cacheability-request.d.ts +2 -1
  319. package/dist/server/cacheability-request.js +13 -8
  320. package/dist/server/config-headers.d.ts +2 -1
  321. package/dist/server/csp.d.ts +2 -1
  322. package/dist/server/default-global-not-found-module.d.ts +2 -1
  323. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  324. package/dist/server/default-http-access-fallback-modules.js +31 -0
  325. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  326. package/dist/server/defer-until-stream-consumed.js +154 -21
  327. package/dist/server/dev-lockfile.d.ts +32 -2
  328. package/dist/server/dev-lockfile.js +46 -2
  329. package/dist/server/dev-module-runner.d.ts +2 -1
  330. package/dist/server/dev-server.js +14 -6
  331. package/dist/server/fetch-handler.js +1 -2
  332. package/dist/server/file-based-metadata.d.ts +2 -1
  333. package/dist/server/framework-tracer.d.ts +2 -1
  334. package/dist/server/headers.d.ts +6 -3
  335. package/dist/server/headers.js +9 -5
  336. package/dist/server/html.d.ts +1 -0
  337. package/dist/server/html.js +19 -1
  338. package/dist/server/http-conditional.d.ts +2 -1
  339. package/dist/server/http-error-responses.d.ts +2 -1
  340. package/dist/server/implicit-tags.d.ts +2 -1
  341. package/dist/server/isr-cache.d.ts +8 -2
  342. package/dist/server/isr-cache.js +26 -1
  343. package/dist/server/metadata-route-build-data.d.ts +2 -1
  344. package/dist/server/metadata-route-build-data.js +1 -1
  345. package/dist/server/metadata-route-response.d.ts +2 -1
  346. package/dist/server/metadata-route-response.js +32 -15
  347. package/dist/server/metadata-routes.d.ts +2 -1
  348. package/dist/server/middleware-runtime.d.ts +2 -1
  349. package/dist/server/multi-stage.d.ts +52 -11
  350. package/dist/server/multi-stage.js +13 -1
  351. package/dist/server/navigation-planner.js +1 -1
  352. package/dist/server/navigation-trace.d.ts +2 -1
  353. package/dist/server/next-error-digest.d.ts +2 -1
  354. package/dist/server/nitro-public-files-plugin.d.ts +2 -1
  355. package/dist/server/nitro-public-files.d.ts +2 -1
  356. package/dist/server/opentelemetry-api.d.ts +2 -1
  357. package/dist/server/operation-token.d.ts +2 -1
  358. package/dist/server/pages-api-route.d.ts +2 -1
  359. package/dist/server/pages-api-route.js +28 -19
  360. package/dist/server/pages-asset-tags.d.ts +2 -1
  361. package/dist/server/pages-body-parser-config.d.ts +2 -1
  362. package/dist/server/pages-client-assets.d.ts +4 -0
  363. package/dist/server/pages-data-route.d.ts +2 -1
  364. package/dist/server/pages-document-asset-props.d.ts +2 -1
  365. package/dist/server/pages-document-initial-props.d.ts +2 -1
  366. package/dist/server/pages-execution-tracing.d.ts +2 -1
  367. package/dist/server/pages-execution-tracing.js +1 -1
  368. package/dist/server/pages-get-initial-props.d.ts +2 -1
  369. package/dist/server/pages-media-type.d.ts +21 -1
  370. package/dist/server/pages-media-type.js +69 -5
  371. package/dist/server/pages-node-compat.js +52 -27
  372. package/dist/server/pages-page-data.d.ts +7 -1
  373. package/dist/server/pages-page-data.js +35 -12
  374. package/dist/server/pages-page-handler.d.ts +3 -2
  375. package/dist/server/pages-page-handler.js +27 -27
  376. package/dist/server/pages-page-method.d.ts +2 -1
  377. package/dist/server/pages-page-response.d.ts +2 -1
  378. package/dist/server/pages-preview.d.ts +2 -1
  379. package/dist/server/pages-readiness.d.ts +2 -1
  380. package/dist/server/pages-request-pipeline.d.ts +10 -1
  381. package/dist/server/pages-request-pipeline.js +6 -7
  382. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  383. package/dist/server/pages-request-stage-entry.js +14 -12
  384. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  385. package/dist/server/pages-response-stage-entry.js +9 -3
  386. package/dist/server/pages-route-data-kind.d.ts +2 -1
  387. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  388. package/dist/server/prerender-route-params.d.ts +2 -1
  389. package/dist/server/prod-server.js +14 -4
  390. package/dist/server/request-log.d.ts +2 -1
  391. package/dist/server/request-pipeline.d.ts +6 -0
  392. package/dist/server/request-pipeline.js +21 -1
  393. package/dist/server/request-tracing.d.ts +2 -1
  394. package/dist/server/request-tracing.js +1 -1
  395. package/dist/server/response-start-tracing.js +7 -29
  396. package/dist/server/rsc-render-stream.d.ts +4 -0
  397. package/dist/server/rsc-render-stream.js +25 -0
  398. package/dist/server/seed-cache.d.ts +2 -1
  399. package/dist/server/seed-cache.js +1 -1
  400. package/dist/server/shared-cache-identity.d.ts +23 -0
  401. package/dist/server/shared-cache-identity.js +36 -0
  402. package/dist/server/static-file-cache.d.ts +2 -1
  403. package/dist/server/static-file-cache.js +1 -0
  404. package/dist/server/worker-revalidation-context.d.ts +2 -1
  405. package/dist/server/worker-stages.d.ts +18 -4
  406. package/dist/server/worker-stages.js +23 -4
  407. package/dist/shims/app.d.ts +2 -1
  408. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  409. package/dist/shims/cache-handler.d.ts +8 -3
  410. package/dist/shims/cache-handler.js +31 -11
  411. package/dist/shims/cache-request-state.d.ts +17 -20
  412. package/dist/shims/cache-request-state.js +16 -21
  413. package/dist/shims/cache-runtime.js +27 -11
  414. package/dist/shims/cache.d.ts +8 -7
  415. package/dist/shims/cache.js +17 -19
  416. package/dist/shims/cacheability-classification.d.ts +2 -0
  417. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  418. package/dist/shims/caught-not-found-boundaries.js +48 -0
  419. package/dist/shims/cdn-cache.d.ts +22 -5
  420. package/dist/shims/cdn-purge-routes.d.ts +2 -1
  421. package/dist/shims/client-locale.js +2 -1
  422. package/dist/shims/client-page-root.d.ts +2 -1
  423. package/dist/shims/client-page-root.js +2 -2
  424. package/dist/shims/config.d.ts +2 -1
  425. package/dist/shims/default-forbidden.d.ts +4 -0
  426. package/dist/shims/default-forbidden.js +18 -0
  427. package/dist/shims/default-not-found.d.ts +0 -5
  428. package/dist/shims/default-not-found.js +5 -41
  429. package/dist/shims/default-unauthorized.d.ts +4 -0
  430. package/dist/shims/default-unauthorized.js +18 -0
  431. package/dist/shims/dynamic.js +9 -6
  432. package/dist/shims/error-boundary.d.ts +39 -3
  433. package/dist/shims/error-boundary.js +33 -18
  434. package/dist/shims/fetch-cache-state.d.ts +5 -1
  435. package/dist/shims/fetch-cache-state.js +1 -3
  436. package/dist/shims/fetch-cache.d.ts +2 -1
  437. package/dist/shims/fetch-cache.js +34 -24
  438. package/dist/shims/font-google.js +1 -2
  439. package/dist/shims/font-utils.d.ts +3 -2
  440. package/dist/shims/font-utils.js +5 -3
  441. package/dist/shims/form.js +3 -3
  442. package/dist/shims/headers.d.ts +8 -23
  443. package/dist/shims/headers.js +17 -67
  444. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  445. package/dist/shims/http-access-error-fallback.js +47 -0
  446. package/dist/shims/image.d.ts +1 -22
  447. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  448. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  449. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  450. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  451. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  452. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  453. package/dist/shims/internal/client-reference-loader.js +91 -0
  454. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  455. package/dist/shims/internal/cookies.js +1 -2
  456. package/dist/shims/internal/headers-state.d.ts +2 -0
  457. package/dist/shims/internal/headers-state.js +6 -1
  458. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
  459. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  460. package/dist/shims/internal/navigation-untracked.js +1 -1
  461. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  462. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  463. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  464. package/dist/shims/link.js +197 -52
  465. package/dist/shims/metadata.d.ts +52 -29
  466. package/dist/shims/metadata.js +142 -42
  467. package/dist/shims/navigation-errors.d.ts +2 -1
  468. package/dist/shims/navigation-server.js +1 -1
  469. package/dist/shims/navigation.d.ts +95 -8
  470. package/dist/shims/navigation.js +255 -47
  471. package/dist/shims/navigation.react-server.js +2 -2
  472. package/dist/shims/pages-router-runtime.d.ts +2 -1
  473. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  474. package/dist/shims/request-state-types.d.ts +2 -2
  475. package/dist/shims/router.js +14 -3
  476. package/dist/shims/slot.d.ts +12 -0
  477. package/dist/shims/slot.js +37 -9
  478. package/dist/shims/unified-request-context.d.ts +1 -1
  479. package/dist/shims/unified-request-context.js +5 -6
  480. package/dist/typegen.d.ts +2 -1
  481. package/dist/utils/cache-control-metadata.d.ts +5 -0
  482. package/dist/utils/cache-control-metadata.js +9 -1
  483. package/dist/utils/client-build-manifest.d.ts +4 -1
  484. package/dist/utils/client-build-manifest.js +9 -2
  485. package/dist/utils/client-entry-manifest.d.ts +13 -0
  486. package/dist/utils/client-entry-manifest.js +20 -1
  487. package/dist/utils/client-reference-chunks.d.ts +45 -0
  488. package/dist/utils/client-reference-chunks.js +30 -0
  489. package/dist/utils/client-runtime-metadata.d.ts +9 -1
  490. package/dist/utils/client-runtime-metadata.js +40 -9
  491. package/dist/utils/compare.d.ts +9 -0
  492. package/dist/utils/compare.js +15 -1
  493. package/dist/utils/lazy-chunks.d.ts +14 -0
  494. package/dist/utils/lazy-chunks.js +27 -1
  495. package/dist/utils/middleware-request-headers.d.ts +2 -1
  496. package/dist/utils/project.d.ts +4 -3
  497. package/dist/utils/project.js +12 -17
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/regex.d.ts +5 -0
  500. package/dist/utils/regex.js +11 -1
  501. package/dist/utils/text-stream.d.ts +10 -5
  502. package/dist/utils/text-stream.js +6 -6
  503. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  504. package/package.json +6 -5
  505. package/dist/build/layout-classification-types.d.ts +0 -60
  506. package/dist/build/layout-classification-types.js +0 -1
  507. package/dist/build/layout-classification.d.ts +0 -61
  508. package/dist/build/layout-classification.js +0 -98
  509. package/dist/build/route-classification-injector.d.ts +0 -32
  510. package/dist/build/route-classification-injector.js +0 -59
  511. package/dist/build/route-classification-manifest.d.ts +0 -53
  512. package/dist/build/route-classification-manifest.js +0 -143
  513. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  514. package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -10
  515. package/dist/server/app-browser-client-reuse-manifest.js +0 -101
  516. package/dist/server/app-layout-param-observation.d.ts +0 -41
  517. package/dist/server/app-layout-param-observation.js +0 -168
  518. package/dist/server/client-reuse-manifest.d.ts +0 -102
  519. package/dist/server/client-reuse-manifest.js +0 -209
  520. package/dist/server/default-not-found-module.d.ts +0 -19
  521. package/dist/server/default-not-found-module.js +0 -18
  522. package/dist/server/rsc-stream-hints.d.ts +0 -21
  523. package/dist/server/rsc-stream-hints.js +0 -227
  524. package/dist/server/skip-cache-proof.d.ts +0 -60
  525. package/dist/server/skip-cache-proof.js +0 -168
  526. package/dist/server/static-layout-client-reuse-proof.d.ts +0 -13
  527. package/dist/server/static-layout-client-reuse-proof.js +0 -33
  528. package/dist/utils/sorted-array.d.ts +0 -7
  529. package/dist/utils/sorted-array.js +0 -20
@@ -38,4 +38,5 @@ export declare function resolveFetchedHydrationLocation(renderedPathAndSearch: s
38
38
  pathname: string;
39
39
  search: string;
40
40
  };
41
- //#endregion
41
+ //#endregion
42
+ export {};
@@ -20,4 +20,5 @@ type ResolveManifestNavigationInterceptionContextOptions = {
20
20
  */
21
21
  export declare function resolveManifestNavigationInterceptionContext(options: ResolveManifestNavigationInterceptionContextOptions): string | null;
22
22
  export declare function resolveMiddlewareRewriteNavigationInterceptionContext(options: ResolveManifestNavigationInterceptionContextOptions): string | null;
23
- //#endregion
23
+ //#endregion
24
+ export {};
@@ -1,11 +1,11 @@
1
1
  import { BrowserRouteManifest } from "../routing/browser-route-manifest.js";
2
2
  import { AppRouterScrollIntent } from "../shims/app-router-scroll-state.js";
3
- import { NavigationRuntimeVisibleCommitMode } from "../client/navigation-runtime.js";
4
3
  import { AppElements } from "./app-elements-wire.js";
5
4
  import "./app-elements.js";
5
+ import { ClientNavigationRenderSnapshot, commitClientNavigationState, createSnapshotPathAndSearch } from "../shims/navigation.js";
6
+ import { NavigationRuntimeVisibleCommitMode } from "../client/navigation-runtime.js";
6
7
  import { OperationLane } from "./operation-token.js";
7
8
  import { ServerActionRevalidationKind } from "./app-browser-action-result.js";
8
- import { ClientNavigationRenderSnapshot, commitClientNavigationState, createSnapshotPathAndSearch } from "../shims/navigation.js";
9
9
  import { AppNavigationPayloadOrigin, AppRouterState } from "./app-browser-state.js";
10
10
  import { Dispatch, ReactNode } from "react";
11
11
  //#region src/server/app-browser-navigation-controller.d.ts
@@ -1,9 +1,9 @@
1
1
  import { stripBasePath } from "../utils/base-path.js";
2
2
  import { withBasePath } from "../shims/url-utils.js";
3
3
  import { clearAppNavigationFailureTarget, getAppNavigationFailureTarget } from "../client/app-nav-failure-handler.js";
4
- import { claimAppRouterScrollIntentForCommit, clearAppRouterScrollIntent, consumeAppRouterScrollIntent } from "../shims/app-router-scroll-state.js";
5
4
  import { resolveServerActionOperationLane, shouldScheduleRefreshForDiscardedServerAction } from "./app-browser-action-result.js";
6
5
  import { resolveActiveRoutePaths } from "./app-history-state.js";
6
+ import { claimAppRouterScrollIntentForCommit, clearAppRouterScrollIntent, consumeAppRouterScrollIntent } from "../shims/app-router-scroll-state.js";
7
7
  import { activateNavigationSnapshot, clearPendingPathname, commitClientNavigationState, createSnapshotPathAndSearch } from "../shims/navigation.js";
8
8
  import { FRESH_APP_NAVIGATION_PAYLOAD_ORIGIN, createPendingNavigationCommit, createPendingNavigationCommitFromElements } from "./app-browser-state.js";
9
9
  import { applyApprovedVisibleCommit, approveHmrVisibleCommit, approvePendingNavigationCommit, resolveAndClassifyNavigationCommit } from "./app-browser-visible-commit.js";
@@ -333,8 +333,12 @@ function createAppBrowserNavigationController(deps = {}) {
333
333
  routeManifest: deps.getRouteManifest?.() ?? null,
334
334
  targetHref: createSnapshotPathAndSearch(navigationSnapshot)
335
335
  });
336
- if (approval.approvedCommit) dispatchSynchronousVisibleCommit(approval.approvedCommit);
337
- else if (approval.decision.disposition === "hard-navigate") performHardNavigation(createSnapshotPathAndSearch(navigationSnapshot));
336
+ if (approval.approvedCommit) {
337
+ const approvedHmrCommit = approval.approvedCommit;
338
+ startTransition(() => {
339
+ dispatchVisibleCommit(approvedHmrCommit);
340
+ });
341
+ } else if (approval.decision.disposition === "hard-navigate") performHardNavigation(createSnapshotPathAndSearch(navigationSnapshot));
338
342
  }
339
343
  /**
340
344
  * Rendered before the route tree (see createAppRouteTree). Insertion effects
@@ -357,7 +361,7 @@ function createAppBrowserNavigationController(deps = {}) {
357
361
  }, [renderId]);
358
362
  return children;
359
363
  }
360
- function dispatchApprovedVisibleCommit(renderId, commit, pendingRouterState, visibleCommitMode) {
364
+ function dispatchApprovedVisibleCommit(renderId, commit, pendingRouterState, visibleCommitMode, republishPendingRouterState) {
361
365
  const setter = getBrowserRouterStateSetter();
362
366
  const pendingCommit = pendingNavigationCommits.get(renderId);
363
367
  const captureCandidateState = (state) => {
@@ -370,7 +374,7 @@ function createAppBrowserNavigationController(deps = {}) {
370
374
  pendingRouterState.settled = true;
371
375
  pendingRouterState.resolve(committedState);
372
376
  if (activePendingBrowserRouterState === pendingRouterState) activePendingBrowserRouterState = null;
373
- if (visibleCommitMode === "synchronous") flushSync(() => {
377
+ if (republishPendingRouterState) startTransition(() => {
374
378
  setter(committedState);
375
379
  });
376
380
  return;
@@ -387,7 +391,8 @@ function createAppBrowserNavigationController(deps = {}) {
387
391
  setter(committedState);
388
392
  });
389
393
  }
390
- function dispatchSynchronousVisibleCommit(commit) {
394
+ /** Calls the setter directly; the caller chooses the update's priority. */
395
+ function dispatchVisibleCommit(commit) {
391
396
  getBrowserRouterStateSetter()(applyApprovedVisibleCommit(getBrowserRouterState(), commit));
392
397
  }
393
398
  function createRestoredHistorySnapshotCommit(options) {
@@ -403,7 +408,6 @@ function createAppBrowserNavigationController(deps = {}) {
403
408
  elements: options.restoredState.elements,
404
409
  interception: options.restoredState.interception,
405
410
  interceptionContext: options.restoredState.interceptionContext,
406
- layoutFlags: options.restoredState.layoutFlags,
407
411
  layoutIds: options.restoredState.layoutIds,
408
412
  navigationSnapshot: options.restoredState.navigationSnapshot,
409
413
  operation,
@@ -444,7 +448,7 @@ function createAppBrowserNavigationController(deps = {}) {
444
448
  });
445
449
  if (approval.approvedCommit === null) return false;
446
450
  options.beforeCommit?.();
447
- dispatchSynchronousVisibleCommit(approval.approvedCommit);
451
+ dispatchVisibleCommit(approval.approvedCommit);
448
452
  return true;
449
453
  }
450
454
  function notifyDiscardedServerActionRevalidation(lifecycleOptions) {
@@ -462,7 +466,7 @@ function createAppBrowserNavigationController(deps = {}) {
462
466
  return false;
463
467
  }
464
468
  }
465
- function shouldForceSynchronousCommit(options) {
469
+ function shouldRepublishPendingRouterState(options) {
466
470
  if (options.actionType === "traverse") return false;
467
471
  if (options.historyUpdateMode === void 0) return false;
468
472
  if (options.scrollIntent?.hash == null) return false;
@@ -566,12 +570,12 @@ function createAppBrowserNavigationController(deps = {}) {
566
570
  activateNavigationSnapshot();
567
571
  snapshotRenderIds.add(renderId);
568
572
  }
569
- dispatchApprovedVisibleCommit(renderId, approvedCommit, options.pendingRouterState, shouldForceSynchronousCommit(options) ? "synchronous" : options.visibleCommitMode ?? "transition");
573
+ dispatchApprovedVisibleCommit(renderId, approvedCommit, options.pendingRouterState, options.visibleCommitMode ?? "transition", shouldRepublishPendingRouterState(options));
570
574
  if (options.navigationResponseCompletion) options.navigationResponseCompletion.then(() => {
571
575
  if (!isCurrentNavigation(options.navId) || !hasBrowserRouterState()) return;
572
576
  const committedState = pendingNavigationCommits.get(renderId)?.committedState;
573
577
  if (!committedState) return;
574
- flushSync(() => {
578
+ startTransition(() => {
575
579
  getBrowserRouterStateSetter()(committedState);
576
580
  });
577
581
  }, () => {});
@@ -634,7 +638,7 @@ function createAppBrowserNavigationController(deps = {}) {
634
638
  if (latestApproval.approvedCommit) {
635
639
  const approvedRevalidationCommit = latestApproval.approvedCommit;
636
640
  startTransition(() => {
637
- dispatchSynchronousVisibleCommit(approvedRevalidationCommit);
641
+ dispatchVisibleCommit(approvedRevalidationCommit);
638
642
  });
639
643
  syncHistoryStatePreviousNextUrl(approvedRevalidationCommit.previousNextUrl, approvedRevalidationCommit.action.bfcacheIds);
640
644
  } else notifyDiscardedServerActionRevalidation(lifecycleOptions);
@@ -26,4 +26,5 @@ export declare function shouldCommitPopstateUrlWithoutNavigation(options: {
26
26
  isSameAppRouteTarget: boolean;
27
27
  }): boolean;
28
28
  export declare function createPopstateRestoreHandler(deps: BrowserPopstateRestoreDeps): (event: PopStateEvent) => void;
29
- //#endregion
29
+ //#endregion
30
+ export {};
@@ -34,4 +34,5 @@ export declare function resolveStreamedRscRedirectLifecycleHop(options: {
34
34
  requestPreviousNextUrl: string | null;
35
35
  streamedRedirectTarget: string;
36
36
  }): RscRedirectLifecycleDecision;
37
- //#endregion
37
+ //#endregion
38
+ export {};
@@ -13,8 +13,7 @@ function toVisibleAppHref(href, origin) {
13
13
  stripRscCacheBustingSearchParam(url);
14
14
  return `${stripRscSuffix(url.pathname)}${url.search}${url.hash}`;
15
15
  }
16
- function toStreamedRedirectVisibleAppHref(href, origin) {
17
- const url = new URL(href, origin);
16
+ function toStreamedRedirectVisibleAppHref(url) {
18
17
  return `${url.pathname}${url.search}${url.hash}`;
19
18
  }
20
19
  function resolveRedirectLifecycleHopFromTarget(options) {
@@ -53,10 +52,11 @@ function resolveRscRedirectLifecycleHop(options) {
53
52
  });
54
53
  }
55
54
  function resolveStreamedRscRedirectLifecycleHop(options) {
56
- const streamedRedirectUrl = new URL(options.streamedRedirectTarget, options.origin);
55
+ const requestedUrl = new URL(options.currentHref, options.origin);
56
+ const streamedRedirectUrl = new URL(options.streamedRedirectTarget, requestedUrl);
57
57
  return resolveRedirectLifecycleHopFromTarget({
58
58
  ...options,
59
- redirectedHref: toStreamedRedirectVisibleAppHref(options.streamedRedirectTarget, options.origin),
59
+ redirectedHref: toStreamedRedirectVisibleAppHref(streamedRedirectUrl),
60
60
  targetUrl: streamedRedirectUrl
61
61
  });
62
62
  }
@@ -21,6 +21,8 @@ type ActionRedirectTarget = {
21
21
  export type ClientServerActionDeps = {
22
22
  basePath: string;
23
23
  clearClientNavigationCaches(): void;
24
+ /** Evict only the cached navigation data that may be dynamic. */
25
+ clearDynamicClientNavigationCaches(): void;
24
26
  clientRscCompatibilityId: string | null;
25
27
  commitSameUrlNavigatePayload(elements: Promise<AppElements>, actionInitiation: ClientServerActionInitiation, returnValue: ServerActionResult["returnValue"] | undefined, revalidation: ServerActionRevalidationKind, renderedPathAndSearch: string | null): Promise<unknown>;
26
28
  navigationPlanner: typeof navigationPlanner;
@@ -30,4 +32,5 @@ export type ClientServerActionDeps = {
30
32
  syncServerActionHttpFallbackHead(status: number | null): void;
31
33
  };
32
34
  export declare function invokeClientServerAction(id: string, args: unknown[], actionInitiation: ClientServerActionInitiation, deps: ClientServerActionDeps): Promise<unknown>;
33
- //#endregion
35
+ //#endregion
36
+ export {};
@@ -1,10 +1,10 @@
1
1
  import { hasBasePath } from "../utils/base-path.js";
2
2
  import { ACTION_REDIRECT_HEADER, ACTION_REDIRECT_STATUS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER } from "./headers.js";
3
3
  import { DANGEROUS_URL_BLOCK_MESSAGE, isDangerousScheme } from "../shims/url-safety.js";
4
- import { AppElementsWire } from "./app-elements-wire.js";
5
- import "./app-elements.js";
6
4
  import { VINEXT_RSC_COMPATIBILITY_ID_HEADER, createServerActionRequestUrl } from "./app-rsc-cache-busting.js";
7
5
  import { throwOnServerActionNotFound } from "./server-action-not-found.js";
6
+ import { AppElementsWire } from "./app-elements-wire.js";
7
+ import "./app-elements.js";
8
8
  import { createServerActionResultFacts, isServerActionResult, normalizeServerActionThrownValue, parseServerActionRevalidationHeader, readInvalidServerActionResponseError, shouldClearClientNavigationCachesForServerActionResult, shouldSyncServerActionHttpFallbackHead } from "./app-browser-action-result.js";
9
9
  import { parseRenderedPathAndSearchHeader } from "../shims/navigation.js";
10
10
  import { resolveServerActionRequestState } from "./app-browser-state.js";
@@ -89,7 +89,8 @@ async function invokeClientServerAction(id, args, actionInitiation, deps) {
89
89
  const actionResultDecision = deps.navigationPlanner.classifyServerActionResult(actionResultFacts);
90
90
  if (applyServerActionResultDecision(actionResultDecision, () => deps.clearClientNavigationCaches(), (url, historyMode) => deps.performHardNavigation(url, historyMode))) return;
91
91
  const revalidation = parseServerActionRevalidationHeader(fetchResponse.headers);
92
- if (revalidation !== "none") deps.clearClientNavigationCaches();
92
+ if (revalidation === "staticAndDynamic") deps.clearClientNavigationCaches();
93
+ else if (revalidation === "dynamicOnly") deps.clearDynamicClientNavigationCaches();
93
94
  const invalidResponseError = await readInvalidServerActionResponseError(fetchResponse.clone(), actionRedirectTarget !== null);
94
95
  if (invalidResponseError) throw invalidResponseError;
95
96
  if (actionRedirectTarget && !fetchResponseIsRsc) {
@@ -1,13 +1,13 @@
1
1
  import { BrowserRouteManifest } from "../routing/browser-route-manifest.js";
2
2
  import { CacheEntryReuseProof } from "./cache-proof.js";
3
- import { AppElements, AppElementsInterception, AppElementsSlotBinding, LayoutFlags } from "./app-elements-wire.js";
3
+ import { AppElements, AppElementsInterception, AppElementsSlotBinding } from "./app-elements-wire.js";
4
4
  import "./app-elements.js";
5
+ import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
5
6
  import { NavigationTrace } from "./navigation-trace.js";
6
7
  import { OperationLane } from "./operation-token.js";
7
8
  import "./navigation-planner.js";
8
9
  import { BfcacheIdMap, HistoryTraversalIntent, createAppOwnedHistoryState, createExternalHistoryStatePreservingMetadata, createHistoryStateWithNavigationMetadata, createHistoryStateWithPreviousNextUrl, createHistoryStateWithTreeSnapshotId, isExternalHistoryState, isHistoryStateBfcacheVersionCurrent, readHistoryStateActiveRoutePaths, readHistoryStateBfcacheIds, readHistoryStateBfcacheVersion, readHistoryStatePreviousNextUrl, readHistoryStateTraversalIndex, resolveActiveRoutePaths, resolveHistoryTraversalIntent } from "./app-history-state.js";
9
10
  import { createBfcacheSegmentIdentityMap, createInitialBfcacheIdMap, createNextBfcacheIdMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
10
- import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
11
11
  //#region src/server/app-browser-state.d.ts
12
12
  type OperationRecordBase = {
13
13
  id: number;
@@ -30,7 +30,6 @@ export type AppRouterState = {
30
30
  elements: AppElements;
31
31
  interception: AppElementsInterception | null;
32
32
  interceptionContext: string | null;
33
- layoutFlags: LayoutFlags;
34
33
  layoutIds: readonly string[];
35
34
  previousNextUrl: string | null;
36
35
  renderId: number;
@@ -46,7 +45,6 @@ export type AppRouterAction = {
46
45
  elements: AppElements;
47
46
  interception: AppElementsInterception | null;
48
47
  interceptionContext: string | null;
49
- layoutFlags: LayoutFlags;
50
48
  layoutIds: readonly string[];
51
49
  navigationSnapshot: ClientNavigationRenderSnapshot;
52
50
  operation: PendingOperationRecord;
@@ -3,17 +3,18 @@ import { VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_MOUNTED_SLOTS_HEADER } from
3
3
  import { NEXT_ACTION_HEADER, RSC_ACTION_HEADER } from "./headers.js";
4
4
  import { normalizePathnameForRouteMatch } from "../routing/utils.js";
5
5
  import { normalizePath } from "./normalize-path.js";
6
+ import { createRscRequestHeaders } from "./app-rsc-cache-busting.js";
6
7
  import { AppElementsWire } from "./app-elements-wire.js";
7
8
  import { getMountedSlotIds, getMountedSlotIdsHeader } from "./app-elements.js";
8
- import { bindAppElementsRenderedSearch } from "../shims/slot.js";
9
- import { createRscRequestHeaders } from "./app-rsc-cache-busting.js";
10
- import { createCacheEntryReuseProof } from "./cache-proof.js";
11
9
  import { createBfcacheSegmentIdentityMap, createInitialBfcacheIdMap, createNextBfcacheIdMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
12
10
  import { createAppOwnedHistoryState, createExternalHistoryStatePreservingMetadata, createHistoryStateWithNavigationMetadata, createHistoryStateWithPreviousNextUrl, createHistoryStateWithTreeSnapshotId, isExternalHistoryState, isHistoryStateBfcacheVersionCurrent, readHistoryStateActiveRoutePaths, readHistoryStateBfcacheIds, readHistoryStateBfcacheVersion, readHistoryStatePreviousNextUrl, readHistoryStateTraversalIndex, resolveActiveRoutePaths, resolveHistoryTraversalIntent } from "./app-history-state.js";
13
11
  import { NavigationTraceReasonCodes, createNavigationLifecycleTraceFields, createNavigationTrace } from "./navigation-trace.js";
14
12
  import { verifyOperationTokenForCommit } from "./operation-token.js";
15
13
  import { navigationPlanner, resolveDefaultOrUnmatchedSlotPersistenceForLayouts } from "./navigation-planner.js";
16
14
  import { createSnapshotPathAndSearch } from "../shims/navigation.js";
15
+ import { holdsSkippedLayouts } from "./app-mounted-layouts.js";
16
+ import { createCacheEntryReuseProof } from "./cache-proof.js";
17
+ import { bindAppElementsRenderedSearch } from "../shims/slot.js";
17
18
  //#region src/server/app-browser-state.ts
18
19
  const COMMITTED_CACHE_APP_NAVIGATION_PAYLOAD_ORIGIN = { origin: "committed-cache" };
19
20
  const FRESH_APP_NAVIGATION_PAYLOAD_ORIGIN = { origin: "fresh" };
@@ -239,6 +240,11 @@ function mapNavigationDecisionToPendingDisposition(decision) {
239
240
  function mergeSkippedLayoutPreservation(options) {
240
241
  if (options.decision.disposition !== "dispatch") return options.decision;
241
242
  if (options.pending.skippedLayoutIds.length === 0) return options.decision;
243
+ if (!holdsSkippedLayouts(options.currentState, options.pending.action.elements)) return {
244
+ disposition: "hard-navigate",
245
+ preserveElementIds: [],
246
+ trace: options.decision.trace
247
+ };
242
248
  const currentLayoutIds = new Set(options.currentState.layoutIds);
243
249
  const targetLayoutIds = new Set(options.pending.action.layoutIds);
244
250
  const preserveElementIds = [...options.decision.preserveElementIds];
@@ -303,7 +309,6 @@ function createPendingNavigationCommitFromElements(options) {
303
309
  interception: metadata.interception,
304
310
  interceptionContext: metadata.interceptionContext,
305
311
  layoutIds: metadata.layoutIds,
306
- layoutFlags: metadata.layoutFlags,
307
312
  slotBindings: metadata.slotBindings,
308
313
  navigationSnapshot: options.navigationSnapshot,
309
314
  operation: createOperationRecord({
@@ -21,4 +21,5 @@ export declare function chunksToReadableStream(chunks: readonly RscEmbeddedChunk
21
21
  * immediately instead of polling with setTimeout.
22
22
  */
23
23
  export declare function createProgressiveRscStream(): ReadableStream<Uint8Array>;
24
- //#endregion
24
+ //#endregion
25
+ export {};
@@ -1,8 +1,9 @@
1
1
  import { addBasePathToPathname, removeTrailingSlash, stripBasePath } from "../utils/base-path.js";
2
2
  import { normalizePathnameForRouteMatch } from "../routing/utils.js";
3
3
  import { normalizePath } from "./normalize-path.js";
4
- import { APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_SLOT_BINDINGS_KEY, AppElementsWire, normalizeAppElementsSlotBindings } from "./app-elements-wire.js";
4
+ import { APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_SLOT_BINDINGS_KEY, AppElementsWire, normalizeAppElementsSlotBindings } from "./app-elements-wire.js";
5
5
  import "./app-elements.js";
6
+ import { isNestedBfcacheSlotSegmentIdFor } from "./bfcache-identity.js";
6
7
  //#region src/server/app-browser-supplemental-refresh.ts
7
8
  const SUPPLEMENTAL_REFRESH_TIMEOUT_MS = 1e4;
8
9
  var SupplementalRefreshError = class extends Error {
@@ -67,6 +68,7 @@ function mergeRefreshedParallelSlot(currentElements, refreshedElements) {
67
68
  [APP_SLOT_BINDINGS_KEY]: normalizeAppElementsSlotBindings(slotBindings, { layoutIds: refreshedMetadata.layoutIds })
68
69
  };
69
70
  for (const binding of retainedBindings) merged[binding.slotId] = currentElements[binding.slotId];
71
+ copySlotIdentities(merged, refreshedElements, currentElements, retainedBindings.map((binding) => binding.slotId));
70
72
  if (promotedBindings.length === 1) merged[promotedBindings[0].slotId] = refreshedElements[refreshedChildrenBindings[0].slotId];
71
73
  copyRefreshedBranchElements(merged, currentElements, { overwrite: false });
72
74
  return merged;
@@ -79,6 +81,7 @@ function mergeRefreshedParallelSlot(currentElements, refreshedElements) {
79
81
  [APP_SLOT_BINDINGS_KEY]: normalizeAppElementsSlotBindings(slotBindings, { layoutIds: currentMetadata.layoutIds })
80
82
  };
81
83
  for (const binding of refreshedBindings) merged[binding.slotId] = refreshedElements[binding.slotId];
84
+ copySlotIdentities(merged, currentElements, refreshedElements, refreshedBindings.map((binding) => binding.slotId));
82
85
  copyRefreshedBranchElements(merged, refreshedElements);
83
86
  return merged;
84
87
  }
@@ -93,9 +96,21 @@ function mergeRefreshedParallelSlot(currentElements, refreshedElements) {
93
96
  [interception.slotId]: refreshedSlot,
94
97
  [APP_SLOT_BINDINGS_KEY]: normalizeAppElementsSlotBindings(slotBindings, { layoutIds: currentMetadata.layoutIds })
95
98
  };
99
+ copySlotIdentities(merged, currentElements, refreshedElements, [interception.slotId]);
96
100
  copyRefreshedBranchElements(merged, refreshedElements);
97
101
  return merged;
98
102
  }
103
+ function copySlotIdentities(target, baseElements, slotElements, slotIds) {
104
+ const isSlotSegment = (id) => slotIds.some((slotId) => id === slotId || isNestedBfcacheSlotSegmentIdFor(id, slotId));
105
+ const isNestedSegment = (id) => !slotIds.includes(id) && isSlotSegment(id);
106
+ for (const id of Object.keys(baseElements)) if (isNestedSegment(id)) delete target[id];
107
+ for (const [id, element] of Object.entries(slotElements)) if (isNestedSegment(id)) target[id] = element;
108
+ const identities = {};
109
+ for (const [id, identity] of Object.entries(AppElementsWire.readMetadata(baseElements).bfcacheSegmentIdentities)) if (!isSlotSegment(id)) identities[id] = identity;
110
+ for (const [id, identity] of Object.entries(AppElementsWire.readMetadata(slotElements).bfcacheSegmentIdentities)) if (isSlotSegment(id)) identities[id] = identity;
111
+ if (Object.keys(identities).length > 0) target[APP_BFCACHE_SEGMENT_IDENTITIES_KEY] = identities;
112
+ else delete target[APP_BFCACHE_SEGMENT_IDENTITIES_KEY];
113
+ }
99
114
  function copyRefreshedBranchElements(target, refreshedElements, options = {}) {
100
115
  for (const [elementId, element] of Object.entries(refreshedElements)) {
101
116
  const parsed = AppElementsWire.parseElementKey(elementId);
@@ -1,9 +1,9 @@
1
1
  import { BrowserRouteManifest } from "../routing/browser-route-manifest.js";
2
2
  import { AppElements } from "./app-elements-wire.js";
3
3
  import "./app-elements.js";
4
+ import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
4
5
  import { NavigationTrace } from "./navigation-trace.js";
5
6
  import { OperationLane } from "./operation-token.js";
6
- import { ClientNavigationRenderSnapshot } from "../shims/navigation.js";
7
7
  import { AppNavigationPayloadOrigin, AppRouterAction, AppRouterState, PendingNavigationCommit } from "./app-browser-state.js";
8
8
  //#region src/server/app-browser-visible-commit.d.ts
9
9
  type VisibleCommitDecision = {
@@ -79,4 +79,5 @@ export declare function resolveAndClassifyNavigationCommit(options: {
79
79
  targetHref: string;
80
80
  type: "navigate" | "replace" | "traverse";
81
81
  }): Promise<ClassifiedPendingNavigationCommit>;
82
- //#endregion
82
+ //#endregion
83
+ export {};
@@ -1,10 +1,10 @@
1
1
  import { AppElementsWire, normalizeAppElementsSlotBindings } from "./app-elements-wire.js";
2
2
  import "./app-elements.js";
3
- import { mergeElements } from "../shims/slot.js";
4
- import { resolveAppPageRouteStateKey } from "./app-page-segment-state.js";
5
3
  import { createBfcacheSegmentIdentityMap, preserveBfcacheIdsForMergedElements } from "./app-bfcache-identity.js";
6
4
  import { NavigationTraceReasonCodes, NavigationTraceTransactionCodes, createNavigationTrace, prependNavigationTraceEntry } from "./navigation-trace.js";
5
+ import { mergeElements } from "../shims/slot.js";
7
6
  import { createPendingNavigationCommit, resolvePendingNavigationCommitDispositionDecision } from "./app-browser-state.js";
7
+ import { resolveAppPageRouteStateKey } from "./app-page-segment-state.js";
8
8
  //#region src/server/app-browser-visible-commit.ts
9
9
  const approvedVisibleCommitBrand = Symbol("ApprovedVisibleCommit");
10
10
  function hasSameServerTemplateSeedIdentity(id, currentSnapshot, nextSnapshot) {
@@ -105,7 +105,6 @@ function reduceApprovedVisibleCommitState(state, commit) {
105
105
  elements: mergedElements,
106
106
  interception: action.interception,
107
107
  interceptionContext: action.interceptionContext,
108
- layoutFlags: mergeLayoutFlags(state.layoutFlags, action.layoutFlags, preserveElementIds),
109
108
  layoutIds: action.layoutIds,
110
109
  navigationSnapshot: action.navigationSnapshot,
111
110
  previousNextUrl: action.previousNextUrl,
@@ -145,15 +144,6 @@ function createVisibleCommitDecision(trace = createNavigationTrace(NavigationTra
145
144
  trace
146
145
  };
147
146
  }
148
- function mergeLayoutFlags(previousFlags, nextFlags, preserveElementIds) {
149
- const merged = { ...nextFlags };
150
- for (const id of preserveElementIds) {
151
- if (Object.hasOwn(merged, id)) continue;
152
- const value = previousFlags[id];
153
- if (value) merged[id] = value;
154
- }
155
- return merged;
156
- }
157
147
  function createApprovedVisibleCommit(options) {
158
148
  return {
159
149
  [approvedVisibleCommitBrand]: true,
@@ -0,0 +1,31 @@
1
+ import { ClientReferenceChunks } from "../utils/client-reference-chunks.js";
2
+ //#region src/server/app-client-reference-manifest.d.ts
3
+ type ClientManifestEntry = {
4
+ id: string;
5
+ name: string;
6
+ chunks: string[];
7
+ async?: boolean;
8
+ };
9
+ type ClientManifest = Record<string, ClientManifestEntry>;
10
+ /**
11
+ * Names the chunks each client reference loads in its Flight row, as Next.js
12
+ * does, so the browser loads a reference without a registry of every client
13
+ * reference in the app (see shims/internal/client-reference-loader.ts). Returns a
14
+ * function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
15
+ * chunks empty. Without chunk data (development, or `rsc: false`) it returns
16
+ * the manifest unchanged.
17
+ */
18
+ export declare function createClientReferenceChunksManifest(referenceChunks: ClientReferenceChunks | undefined): (manifest: ClientManifest) => ClientManifest;
19
+ /**
20
+ * The SSR Flight client's consumer manifest. React's webpack binding loads the
21
+ * chunks a client reference's row names before requiring the reference, which
22
+ * only the browser can do, so SSR resolves each reference to itself without
23
+ * them. A null `moduleLoading` keeps React from preinitializing the chunks as
24
+ * classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
25
+ */
26
+ export declare const ssrServerConsumerManifest: {
27
+ moduleMap: Record<string, Record<string, ClientManifestEntry>>;
28
+ moduleLoading: null;
29
+ };
30
+ //#endregion
31
+ export {};
@@ -0,0 +1,46 @@
1
+ import { toFlightChunks } from "../utils/client-reference-chunks.js";
2
+ //#region src/server/app-client-reference-manifest.ts
3
+ /**
4
+ * Names the chunks each client reference loads in its Flight row, as Next.js
5
+ * does, so the browser loads a reference without a registry of every client
6
+ * reference in the app (see shims/internal/client-reference-loader.ts). Returns a
7
+ * function that wraps @vitejs/plugin-rsc's client manifest, which leaves the
8
+ * chunks empty. Without chunk data (development, or `rsc: false`) it returns
9
+ * the manifest unchanged.
10
+ */
11
+ function createClientReferenceChunksManifest(referenceChunks) {
12
+ if (!referenceChunks) return (manifest) => manifest;
13
+ const flightChunks = referenceChunks.modules.map(toFlightChunks);
14
+ return (manifest) => new Proxy(manifest, { get(target, id, receiver) {
15
+ const entry = Reflect.get(target, id, receiver);
16
+ if (typeof id !== "string" || !entry || typeof entry !== "object") return entry;
17
+ const reference = entry;
18
+ const index = Object.hasOwn(referenceChunks.references, reference.id) ? referenceChunks.references[reference.id] : void 0;
19
+ return index === void 0 ? reference : {
20
+ ...reference,
21
+ chunks: flightChunks[index]
22
+ };
23
+ } });
24
+ }
25
+ /**
26
+ * The SSR Flight client's consumer manifest. React's webpack binding loads the
27
+ * chunks a client reference's row names before requiring the reference, which
28
+ * only the browser can do, so SSR resolves each reference to itself without
29
+ * them. A null `moduleLoading` keeps React from preinitializing the chunks as
30
+ * classic scripts; SSR preloads them through @vitejs/plugin-rsc instead.
31
+ */
32
+ const ssrServerConsumerManifest = {
33
+ moduleMap: new Proxy({}, { get(_target, id) {
34
+ if (typeof id !== "string") return void 0;
35
+ return new Proxy({}, { get(_exports, name) {
36
+ return typeof name === "string" ? {
37
+ id,
38
+ chunks: [],
39
+ name
40
+ } : void 0;
41
+ } });
42
+ } }),
43
+ moduleLoading: null
44
+ };
45
+ //#endregion
46
+ export { createClientReferenceChunksManifest, ssrServerConsumerManifest };
@@ -7,7 +7,11 @@ type ClientReferencePreloaderOptions = {
7
7
  onPreloadError?: (id: string, error: unknown) => void;
8
8
  };
9
9
  type ClientReferencePreloader = {
10
- preload: (referenceIds?: Iterable<string>) => Promise<void>;
10
+ /**
11
+ * Load `referenceIds` in order, or every reference without them. The
12
+ * returned promise doesn't wait for those in `streamedIds`.
13
+ */
14
+ preload: (referenceIds?: Iterable<string>, streamedIds?: ReadonlySet<string>) => Promise<void>;
11
15
  };
12
16
  /**
13
17
  * The client references each App Router route preloads before SSR, generated
@@ -25,12 +29,28 @@ export type RouteClientReferences = {
25
29
  routes: Readonly<Record<string, readonly number[]>>;
26
30
  /** The files of a render without a route, such as a route-miss 404. */
27
31
  routeless: readonly number[];
32
+ /**
33
+ * References whose SSR modules evaluate asynchronously (top-level await),
34
+ * which a render streams instead of waiting for.
35
+ */
36
+ async: readonly number[];
37
+ };
38
+ /** The client references a render loads, and those it streams instead of waiting for. */
39
+ export type RouteClientReferenceSet = {
40
+ /**
41
+ * In import order: the `always` set, then each route file's references in
42
+ * the order its route files render.
43
+ */
44
+ references: string[];
45
+ streamed: string[];
28
46
  };
29
47
  /**
30
48
  * The client references a render of `routePattern` preloads, or of no route
31
- * when it is null. Undefined, meaning every reference, without a plan or a
32
- * route to look up, or for a pattern the plan doesn't know.
49
+ * when it is null, and those it streams.
50
+ * Undefined, meaning every reference, without a plan or a route to look up,
51
+ * or for a pattern the plan doesn't know.
33
52
  */
34
- export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined): string[] | undefined;
53
+ export declare function resolveRouteClientReferences(plan: RouteClientReferences | null, routePattern: string | null | undefined): RouteClientReferenceSet | undefined;
35
54
  export declare function createClientReferencePreloader(options: ClientReferencePreloaderOptions): ClientReferencePreloader;
36
- //#endregion
55
+ //#endregion
56
+ export {};
@@ -3,8 +3,9 @@ import { shareIsolatePromise } from "./isolate-shared-promise.js";
3
3
  const resolvedPreload = Promise.resolve();
4
4
  /**
5
5
  * The client references a render of `routePattern` preloads, or of no route
6
- * when it is null. Undefined, meaning every reference, without a plan or a
7
- * route to look up, or for a pattern the plan doesn't know.
6
+ * when it is null, and those it streams.
7
+ * Undefined, meaning every reference, without a plan or a route to look up,
8
+ * or for a pattern the plan doesn't know.
8
9
  */
9
10
  function resolveRouteClientReferences(plan, routePattern) {
10
11
  if (!plan || routePattern === void 0) return void 0;
@@ -14,7 +15,18 @@ function resolveRouteClientReferences(plan, routePattern) {
14
15
  else return;
15
16
  const indices = new Set(plan.always);
16
17
  for (const file of files) for (const index of plan.files[file]) indices.add(index);
17
- return Array.from(indices, (index) => plan.references[index]);
18
+ const asyncIndices = new Set(plan.async);
19
+ const references = [];
20
+ const streamed = [];
21
+ for (const index of indices) {
22
+ const id = plan.references[index];
23
+ references.push(id);
24
+ if (asyncIndices.has(index)) streamed.push(id);
25
+ }
26
+ return {
27
+ references,
28
+ streamed
29
+ };
18
30
  }
19
31
  function createClientReferencePreloader(options) {
20
32
  let allReferencesPreloaded = false;
@@ -42,17 +54,20 @@ function createClientReferencePreloader(options) {
42
54
  referencePreloadPromises.set(id, preloadPromise);
43
55
  return preloadPromise;
44
56
  }
45
- function preloadReferenceSet(referenceIds, refs, clientRequire) {
57
+ function preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds) {
46
58
  const pending = [];
47
- for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id)) pending.push(preloadReference(id, clientRequire));
59
+ for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id)) {
60
+ const loading = preloadReference(id, clientRequire);
61
+ if (!streamedIds?.has(id)) pending.push(loading);
62
+ }
48
63
  if (pending.length === 0) return resolvedPreload;
49
64
  return Promise.all(pending).then(() => {});
50
65
  }
51
- return { preload(referenceIds) {
66
+ return { preload(referenceIds, streamedIds) {
52
67
  const refs = options.getReferences();
53
68
  const clientRequire = options.getClientRequire();
54
69
  if (!refs || !clientRequire) return resolvedPreload;
55
- if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire);
70
+ if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds);
56
71
  if (allReferencesPreloaded) return resolvedPreload;
57
72
  if (allReferencesPreloadPromise) return allReferencesPreloadPromise;
58
73
  allReferencesPreloadPromise = shareIsolatePromise(preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {