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
@@ -0,0 +1,156 @@
1
+ import { getOrCreateAls } from "../shims/internal/als-registry.js";
2
+ import { escapeHtmlAttr } from "./html.js";
3
+ import * as ReactDOM from "react-dom";
4
+ import { setOnClientReference } from "@vitejs/plugin-rsc/ssr";
5
+ //#region src/server/app-streamed-client-references.ts
6
+ /**
7
+ * Stream the client references an SSR render may show before they load, and
8
+ * link every client reference's scripts with the render's CSP nonce and the
9
+ * configured crossOrigin, and its stylesheets with the configured crossOrigin.
10
+ *
11
+ * A render waits for its route's client references before it starts, except
12
+ * those whose modules evaluate asynchronously (top-level await). Like Next.js,
13
+ * it streams those: React suspends on one until it loads, showing the nearest
14
+ * Suspense fallback first.
15
+ *
16
+ * plugin-rsc links a client module's stylesheets as the render reads its
17
+ * exports, so a streamed module would link them wherever it rendered once
18
+ * loaded, which depends on how long it took. Instead, a render links a
19
+ * streamed reference's stylesheets in the route's import order, as Next.js's
20
+ * Turbopack build does: just before the first reference after it links its
21
+ * own, or after the shell's stylesheets when none does. Its scripts link as the
22
+ * Flight stream names it.
23
+ *
24
+ * plugin-rsc hints a client module's scripts without the render's nonce, which
25
+ * a nonce-based CSP blocks, and always as anonymous, so under
26
+ * `crossOrigin: "use-credentials"` the browser fetches the module the page
27
+ * then imports without credentials. React keeps the first hint for each
28
+ * script, so a render with either hints them first, with both, as Next.js does.
29
+ * plugin-rsc also links its stylesheets as anonymous whatever the config, so a
30
+ * render links them first with the configured crossOrigin too. Unlike Next.js,
31
+ * it links them as anonymous when that's unset: Vite's preload helper always
32
+ * links a lazily imported module's stylesheets as anonymous, and a later page
33
+ * doing so would fail the CORS check on the no-cors copy the browser cached.
34
+ */
35
+ const WRAPPED = Symbol.for("vinext.streamedClientReferences.wrapped");
36
+ const STYLESHEET_PRECEDENCE = "vite-rsc/client-reference";
37
+ const referenceDeps = /* @__PURE__ */ new Map();
38
+ const renderStorage = getOrCreateAls("vinext.streamedClientReferences");
39
+ function hintsScripts(render) {
40
+ return !!render.nonce || render.crossOrigin === "use-credentials";
41
+ }
42
+ function linkScripts(deps, render) {
43
+ const options = {
44
+ as: "script",
45
+ crossOrigin: render.crossOrigin,
46
+ fetchPriority: "low",
47
+ nonce: render.nonce
48
+ };
49
+ for (const href of deps.js) ReactDOM.preloadModule(href, options);
50
+ }
51
+ function linkStylesheets(hrefs, render) {
52
+ const options = {
53
+ as: "style",
54
+ crossOrigin: render.crossOrigin,
55
+ precedence: STYLESHEET_PRECEDENCE
56
+ };
57
+ for (const href of hrefs) ReactDOM.preinit(href, options);
58
+ }
59
+ /**
60
+ * Before reference `id` links its stylesheets, link those of the streamed
61
+ * references that come before it in import order.
62
+ */
63
+ function linkStreamedStylesheetsBefore(render, id) {
64
+ const position = render.positions.get(id);
65
+ if (position === void 0) return;
66
+ while (render.unlinked.length > 0 && render.positions.get(render.unlinked[0]) < position) {
67
+ const hrefs = referenceDeps.get(render.unlinked.shift())?.css ?? [];
68
+ for (const href of hrefs) render.linkedStylesheets.add(href);
69
+ linkStylesheets(hrefs, render);
70
+ }
71
+ }
72
+ /**
73
+ * Wrap plugin-rsc's client-reference loader before any client reference
74
+ * loads; a production build calls this as its SSR entry starts. `asyncIds` are
75
+ * the references any route may stream, and `getLoader` returns a reference's
76
+ * own loader from the client-references module.
77
+ */
78
+ function wrapClientReferenceRequire(asyncIds, getLoader) {
79
+ const load = globalThis.__vite_rsc_client_require__;
80
+ if (typeof load !== "function" || WRAPPED in load) return;
81
+ setOnClientReference(({ id, deps }) => {
82
+ referenceDeps.set(id, deps);
83
+ const render = renderStorage.getStore();
84
+ if (render && !render.streamed.has(id)) for (const href of deps.css) render.linkedStylesheets.add(href);
85
+ });
86
+ const loads = /* @__PURE__ */ new Map();
87
+ const wrapped = (id) => {
88
+ const render = renderStorage.getStore();
89
+ if (render?.streamed.has(id)) {
90
+ const deps = referenceDeps.get(id);
91
+ if (deps) linkScripts(deps, render);
92
+ }
93
+ let loading = loads.get(id);
94
+ if (!loading) {
95
+ const loader = asyncIds.has(id) ? getLoader(id) : void 0;
96
+ loading = Promise.all([load(id), loader?.()]).then(([mod, exports]) => new Proxy(mod, { get(target, key, receiver) {
97
+ const render = renderStorage.getStore();
98
+ if (render) {
99
+ if (exports !== void 0 && render.streamed.has(id)) return Reflect.get(exports, key);
100
+ linkStreamedStylesheetsBefore(render, id);
101
+ const deps = referenceDeps.get(id);
102
+ if (deps && key in target) {
103
+ linkStylesheets(deps.css, render);
104
+ if (hintsScripts(render)) linkScripts(deps, render);
105
+ }
106
+ }
107
+ return Reflect.get(target, key, receiver);
108
+ } }));
109
+ loads.set(id, loading);
110
+ }
111
+ return loading;
112
+ };
113
+ Object.defineProperty(wrapped, WRAPPED, { value: true });
114
+ globalThis.__vite_rsc_client_require__ = wrapped;
115
+ }
116
+ function createStreamedClientReferences(route, nonce, crossOrigin) {
117
+ const streamed = new Set(route?.streamed);
118
+ return {
119
+ nonce,
120
+ crossOrigin,
121
+ streamed,
122
+ positions: new Map(route?.references.map((id, index) => [id, index])),
123
+ unlinked: route?.references.filter((id) => streamed.has(id)) ?? [],
124
+ linkedStylesheets: /* @__PURE__ */ new Set()
125
+ };
126
+ }
127
+ /**
128
+ * Forget the stylesheets a discarded render linked, so the render that
129
+ * replaces it links them again.
130
+ */
131
+ function resetStreamedClientReferences(render, route) {
132
+ if (!render) return;
133
+ render.unlinked = route?.references.filter((id) => render.streamed.has(id)) ?? [];
134
+ render.linkedStylesheets.clear();
135
+ }
136
+ /** Run a render, and the Flight stream it reads, with its streamed references. */
137
+ function runWithStreamedClientReferences(render, fn) {
138
+ return renderStorage.run(render, fn);
139
+ }
140
+ /**
141
+ * The `<head>` links of the streamed stylesheets a render's shell left
142
+ * unlinked, those of streamed references after every reference it rendered.
143
+ */
144
+ function renderStreamedStylesheets(render) {
145
+ const hrefs = /* @__PURE__ */ new Set();
146
+ for (const id of render.unlinked.splice(0)) for (const href of referenceDeps.get(id)?.css ?? []) if (!render.linkedStylesheets.has(href)) hrefs.add(href);
147
+ const crossOrigin = render.crossOrigin === "use-credentials" ? "use-credentials" : "";
148
+ let html = "";
149
+ for (const href of hrefs) {
150
+ render.linkedStylesheets.add(href);
151
+ html += `<link rel="stylesheet" href="${escapeHtmlAttr(href)}" data-precedence="${STYLESHEET_PRECEDENCE}" crossorigin="${crossOrigin}"/>`;
152
+ }
153
+ return html;
154
+ }
155
+ //#endregion
156
+ export { createStreamedClientReferences, renderStreamedStylesheets, resetStreamedClientReferences, runWithStreamedClientReferences, wrapClientReferenceRequire };
@@ -7,7 +7,17 @@ export type VisitedResponseCacheEntry = {
7
7
  createdAt: number;
8
8
  elements?: AppElements;
9
9
  expiresAt: number;
10
+ /**
11
+ * Stored by initial hydration, which Next.js keeps out of its route cache
12
+ * (outside Cache Components), so a visible Link still prefetches the URL.
13
+ */
14
+ fromHydration?: true;
10
15
  mountedSlotsHeader: string | null;
16
+ /**
17
+ * A history restore revoked navigation reuse. The entry stays only as the
18
+ * BFCache that a full prefetch reads (see `findVisitedResponseForFullPrefetch`).
19
+ */
20
+ navigationReuseRevoked?: true;
11
21
  params: Record<string, string | string[]>;
12
22
  response: CachedRscResponse;
13
23
  reuseAfterHistoryRestore: boolean;
@@ -18,6 +28,7 @@ export declare function hasNavigationResponseHistoryLifetime(snapshot: CachedRsc
18
28
  export declare function createVisitedResponseCacheEntry(options: {
19
29
  elements?: AppElements;
20
30
  fallbackTtlMs?: number;
31
+ fromHydration?: boolean;
21
32
  now: number;
22
33
  mountedSlotsHeader?: string | null;
23
34
  params: Record<string, string | string[]>;
@@ -34,5 +45,30 @@ export declare function findVisitedResponseCacheEntry(cache: Map<string, Visited
34
45
  } | null;
35
46
  export declare function deleteVisitedResponseCacheEntry(cache: Map<string, VisitedResponseCacheEntry>, rscUrl: string, interceptionContext: string | null): boolean;
36
47
  export declare function deleteAllVisitedResponseCacheEntries(cache: Map<string, VisitedResponseCacheEntry>, rscUrl: string, interceptionContext: string | null): number;
37
- export declare function deleteInvalidatedHistoryRestoreEntries(cache: Map<string, VisitedResponseCacheEntry>): void;
38
- //#endregion
48
+ export declare function revokeHistoryRestoreNavigationReuse(cache: Map<string, VisitedResponseCacheEntry>): void;
49
+ /**
50
+ * Next.js fulfills a full prefetch from the BFCache, which holds the data of
51
+ * every navigation, while it is within the static stale time of that
52
+ * navigation (`attemptToFulfillDynamicSegmentFromBFCache`). Navigation reuse
53
+ * that a history restore revoked does not matter here.
54
+ *
55
+ * Next.js dates a BFCache entry from its navigation, even one that committed an
56
+ * older prefetched payload. Its re-prefetch of an expired route still waits for
57
+ * a fresh route tree first, so a navigation made then fetches fresh data
58
+ * (`client-cache.experimental.test.ts`, "re-use the cache for 5 minutes").
59
+ * vinext seeds the full prefetch synchronously, so dating it from the
60
+ * navigation would replay that expired payload. It dates from when the payload
61
+ * arrived instead, which only costs a request Next.js might have saved.
62
+ *
63
+ * The match follows direct visited reuse: an entry with committed elements
64
+ * replays them, because its raw response may be skip-pruned against the tree
65
+ * it was requested from; otherwise the request-time or response-declared slot
66
+ * context must match.
67
+ */
68
+ export declare function findVisitedResponseForFullPrefetch(cache: Map<string, VisitedResponseCacheEntry>, rscUrls: readonly string[], interceptionContext: string | null, mountedSlotsHeader: string | null): {
69
+ navigatedAt: number;
70
+ navigationFreshUntil: number | null;
71
+ response: CachedRscResponse;
72
+ } | null;
73
+ //#endregion
74
+ export {};
@@ -1,6 +1,6 @@
1
+ import { parseRscRequestPath, stripRscCacheBustingSearchParam } from "./app-rsc-cache-busting.js";
1
2
  import { AppElementsWire } from "./app-elements-wire.js";
2
3
  import "./app-elements.js";
3
- import { parseRscRequestPath, stripRscCacheBustingSearchParam } from "./app-rsc-cache-busting.js";
4
4
  import { resolveCachedRscResponseExpiresAt } from "../shims/navigation.js";
5
5
  //#region src/server/app-visited-response-cache.ts
6
6
  const VISITED_RESPONSE_CACHE_TTL = 3e5;
@@ -14,6 +14,7 @@ function createVisitedResponseCacheEntry(options) {
14
14
  createdAt: options.now,
15
15
  ...options.elements ? { elements: options.elements } : {},
16
16
  expiresAt: resolveCachedRscResponseExpiresAt(options.now, options.response, options.fallbackTtlMs ?? 3e5),
17
+ ...options.fromHydration === true ? { fromHydration: true } : {},
17
18
  mountedSlotsHeader: options.mountedSlotsHeader ?? null,
18
19
  params: options.params,
19
20
  response: options.response,
@@ -75,11 +76,51 @@ function deleteAllVisitedResponseCacheEntries(cache, rscUrl, interceptionContext
75
76
  while (deleteVisitedResponseCacheEntry(cache, rscUrl, interceptionContext)) deleted++;
76
77
  return deleted;
77
78
  }
78
- function deleteInvalidatedHistoryRestoreEntries(cache) {
79
- for (const [cacheKey, entry] of cache) {
79
+ function revokeHistoryRestoreNavigationReuse(cache) {
80
+ for (const entry of cache.values()) {
80
81
  if (entry.reuseAfterHistoryRestore) continue;
81
- cache.delete(cacheKey);
82
+ entry.navigationReuseRevoked = true;
83
+ }
84
+ }
85
+ /**
86
+ * Next.js fulfills a full prefetch from the BFCache, which holds the data of
87
+ * every navigation, while it is within the static stale time of that
88
+ * navigation (`attemptToFulfillDynamicSegmentFromBFCache`). Navigation reuse
89
+ * that a history restore revoked does not matter here.
90
+ *
91
+ * Next.js dates a BFCache entry from its navigation, even one that committed an
92
+ * older prefetched payload. Its re-prefetch of an expired route still waits for
93
+ * a fresh route tree first, so a navigation made then fetches fresh data
94
+ * (`client-cache.experimental.test.ts`, "re-use the cache for 5 minutes").
95
+ * vinext seeds the full prefetch synchronously, so dating it from the
96
+ * navigation would replay that expired payload. It dates from when the payload
97
+ * arrived instead, which only costs a request Next.js might have saved.
98
+ *
99
+ * The match follows direct visited reuse: an entry with committed elements
100
+ * replays them, because its raw response may be skip-pruned against the tree
101
+ * it was requested from; otherwise the request-time or response-declared slot
102
+ * context must match.
103
+ */
104
+ function findVisitedResponseForFullPrefetch(cache, rscUrls, interceptionContext, mountedSlotsHeader) {
105
+ for (const rscUrl of rscUrls) {
106
+ const match = findVisitedResponseCacheEntry(cache, rscUrl, interceptionContext);
107
+ if (match === null) continue;
108
+ const { entry } = match;
109
+ if (entry.elements === void 0 && entry.mountedSlotsHeader !== mountedSlotsHeader && (entry.response.mountedSlotsHeader ?? null) !== mountedSlotsHeader) continue;
110
+ const navigationFresh = entry.fromHydration !== true && entry.navigationReuseRevoked !== true && (entry.elements !== void 0 || entry.mountedSlotsHeader === mountedSlotsHeader) && isVisitedResponseCacheEntryFresh(entry, {
111
+ navigationKind: "navigate",
112
+ now: Date.now()
113
+ });
114
+ return {
115
+ navigatedAt: entry.response.receivedAt ?? entry.createdAt,
116
+ navigationFreshUntil: navigationFresh ? entry.expiresAt : null,
117
+ response: entry.elements === void 0 ? entry.response : {
118
+ ...entry.response,
119
+ preparedElements: entry.elements
120
+ }
121
+ };
82
122
  }
123
+ return null;
83
124
  }
84
125
  //#endregion
85
- export { MAX_TRAVERSAL_CACHE_TTL, VISITED_RESPONSE_CACHE_TTL, createVisitedResponseCacheEntry, deleteAllVisitedResponseCacheEntries, deleteInvalidatedHistoryRestoreEntries, deleteVisitedResponseCacheEntry, findVisitedResponseCacheEntry, hasNavigationResponseHistoryLifetime, isVisitedResponseCacheEntryFresh };
126
+ export { MAX_TRAVERSAL_CACHE_TTL, VISITED_RESPONSE_CACHE_TTL, createVisitedResponseCacheEntry, deleteAllVisitedResponseCacheEntries, deleteVisitedResponseCacheEntry, findVisitedResponseCacheEntry, findVisitedResponseForFullPrefetch, hasNavigationResponseHistoryLifetime, isVisitedResponseCacheEntryFresh, revokeHistoryRestoreNavigationReuse };
@@ -3,7 +3,7 @@ import { VinextResponseStageCacheability, VinextResponseStageDispatchOptions, Vi
3
3
  import { AppRscRenderMode } from "./app-rsc-render-mode.js";
4
4
  import { TrustedPrerenderState } from "./prerender-route-params.js";
5
5
  //#region src/server/app-worker-stages.d.ts
6
- export declare const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION = 11;
6
+ export declare const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION = 13;
7
7
  export declare const APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER = "x-vinext-app-metadata-stage-no-match";
8
8
  type AppPageParams = Record<string, string | string[]>;
9
9
  type AppWorkerResponseStageEnvelope = {
@@ -66,7 +66,7 @@ type AppMetadataWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
66
66
  resolvedUrl: string;
67
67
  routePathname: string;
68
68
  };
69
- type HybridPagesWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
69
+ export type HybridPagesWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
70
70
  kind: "hybrid-pages";
71
71
  allowRscDocumentFallback: boolean;
72
72
  appRouteMatch: {
@@ -83,19 +83,41 @@ type HybridPagesWorkerResponseStageProps = AppWorkerResponseStageEnvelope & {
83
83
  resourceKind: "api" | "page";
84
84
  requestUrl: string;
85
85
  resolvedUrl: string;
86
+ /**
87
+ * The shared cache entry answers every host, as Next.js keys a static page
88
+ * by its path, so a getInitialProps render of a page without
89
+ * getStaticProps, which reads the request, is not stored.
90
+ */
91
+ sharedAcrossHosts: boolean;
86
92
  };
87
93
  export type AppWorkerResponseStageProps = AppFullRequestWorkerResponseStageProps | AppMatchedWorkerResponseStageProps | AppMetadataWorkerResponseStageProps | AppNotFoundWorkerResponseStageProps | HybridPagesWorkerResponseStageProps;
88
94
  export type DispatchAppWorkerResponseStage = VinextResponseStageTransport<AppWorkerResponseStageProps>;
89
95
  export type RenderAppWorkerResponseStageLocally = (request: Request, props: AppWorkerResponseStageProps) => Promise<Response>;
90
96
  /** Normalize a shared App page HEAD request onto its method-invariant GET representation. */
91
97
  export declare function prepareSharedAppPageDispatch(request: Request, cache: VinextResponseStageDispatchOptions["cache"]): Request;
98
+ type SharedAppCacheIdentity = NonNullable<VinextResponseStageDispatchOptions["cacheIdentity"]>;
99
+ /** App Router dispatches whose shared cache entry every host can reuse. */
100
+ export type SharedAppCacheIdentityProps = Exclude<AppWorkerResponseStageProps, {
101
+ kind: "app-full-request" | "hybrid-pages";
102
+ }>;
103
+ /**
104
+ * Build the cache identity of a shared App Router dispatch: the dispatched
105
+ * request and props under the cache identity origin.
106
+ */
107
+ export declare function createSharedAppCacheIdentity(request: Request, props: SharedAppCacheIdentityProps): SharedAppCacheIdentity;
92
108
  /**
93
109
  * Build the query-free cache identity of a shared App page dispatch. The user
94
110
  * query leaves both the URL and `resolvedUrl`; the `.rsc` suffix, an RSC
95
111
  * request's validated `_rsc`, and the render mode stay because they select the
96
112
  * representation. HTML identities also drop the RSC selector headers.
97
113
  */
98
- export declare function createSharedAppPageCacheIdentity(request: Request, props: AppMatchedWorkerResponseStageProps): NonNullable<VinextResponseStageDispatchOptions["cacheIdentity"]>;
114
+ export declare function createSharedAppPageCacheIdentity(request: Request, props: AppMatchedWorkerResponseStageProps): SharedAppCacheIdentity;
115
+ /**
116
+ * Build the cache identity of a shared hybrid Pages page dispatch: the
117
+ * dispatched request and props under `origin`, so every host that names it
118
+ * shares one entry.
119
+ */
120
+ export declare function createSharedHybridPagesCacheIdentity(request: Request, props: HybridPagesWorkerResponseStageProps, origin: string): SharedAppCacheIdentity;
99
121
  /**
100
122
  * Drop the user query from an App page dispatch URL and its `resolvedUrl`,
101
123
  * keeping an RSC request's validated `_rsc`, the rule the query-free cache
@@ -114,4 +136,5 @@ export declare function withoutAppPageDispatchQuery(requestUrl: string, props: A
114
136
  */
115
137
  export declare function isStaticCandidateAppPageDispatch(projection: CacheabilityManifest, request: Request, props: AppMatchedWorkerResponseStageProps): boolean;
116
138
  export declare function isAppWorkerResponseStageProps(value: unknown): value is AppWorkerResponseStageProps;
117
- //#endregion
139
+ //#endregion
140
+ export {};
@@ -2,14 +2,34 @@ import { VINEXT_RSC_VARY_HEADER } from "./app-rsc-vary.js";
2
2
  import { cacheabilityManifestPageState, cacheabilityRequestIdentity, cacheabilityRoutePathname } from "./cacheability-manifest.js";
3
3
  import { keepOnlyValidatedRscCacheBustingSearchParam } from "./app-rsc-cache-busting.js";
4
4
  import { isTrustedPrerenderState } from "./prerender-route-params.js";
5
+ import { VINEXT_CACHE_IDENTITY_ORIGIN, withCacheIdentityOrigin } from "./multi-stage.js";
5
6
  //#region src/server/app-worker-stages.ts
6
- const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION = 11;
7
+ const APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION = 13;
7
8
  const APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER = "x-vinext-app-metadata-stage-no-match";
8
9
  const STATIC_FILE_SIGNAL_TOKEN_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
9
10
  /** Normalize a shared App page HEAD request onto its method-invariant GET representation. */
10
11
  function prepareSharedAppPageDispatch(request, cache) {
11
12
  return cache !== "bypass" && request.method.toUpperCase() === "HEAD" ? new Request(request, { method: "GET" }) : request;
12
13
  }
14
+ function sharedAppCacheIdentity(requestUrl, init, props) {
15
+ return {
16
+ props: {
17
+ ...props,
18
+ requestOrigin: VINEXT_CACHE_IDENTITY_ORIGIN
19
+ },
20
+ request: new Request(withCacheIdentityOrigin(requestUrl), init)
21
+ };
22
+ }
23
+ /**
24
+ * Build the cache identity of a shared App Router dispatch: the dispatched
25
+ * request and props under the cache identity origin.
26
+ */
27
+ function createSharedAppCacheIdentity(request, props) {
28
+ return sharedAppCacheIdentity(request.url, {
29
+ headers: new Headers(request.headers),
30
+ method: request.method
31
+ }, props);
32
+ }
13
33
  /**
14
34
  * Build the query-free cache identity of a shared App page dispatch. The user
15
35
  * query leaves both the URL and `resolvedUrl`; the `.rsc` suffix, an RSC
@@ -21,10 +41,29 @@ function createSharedAppPageCacheIdentity(request, props) {
21
41
  const headers = new Headers(request.headers);
22
42
  if (!props.isRscRequest) for (const name of VINEXT_RSC_VARY_HEADER.split(",")) headers.delete(name.trim());
23
43
  return {
24
- props: queryFree.props,
25
- request: new Request(queryFree.url, {
44
+ ...sharedAppCacheIdentity(queryFree.url, {
26
45
  headers,
27
46
  method: request.method
47
+ }, queryFree.props),
48
+ queryFree: true
49
+ };
50
+ }
51
+ /**
52
+ * Build the cache identity of a shared hybrid Pages page dispatch: the
53
+ * dispatched request and props under `origin`, so every host that names it
54
+ * shares one entry.
55
+ */
56
+ function createSharedHybridPagesCacheIdentity(request, props, origin) {
57
+ return {
58
+ props: {
59
+ ...props,
60
+ requestOrigin: origin,
61
+ requestUrl: withCacheIdentityOrigin(props.requestUrl, origin)
62
+ },
63
+ regenerateFromDispatch: true,
64
+ request: new Request(withCacheIdentityOrigin(request.url, origin), {
65
+ headers: new Headers(request.headers),
66
+ method: request.method
28
67
  })
29
68
  };
30
69
  }
@@ -80,12 +119,12 @@ function isCanonicalHttpOrigin(value) {
80
119
  function isAppWorkerResponseStageProps(value) {
81
120
  if (!value || typeof value !== "object") return false;
82
121
  const props = value;
83
- if (props.protocolVersion !== 11 || props.buildId !== null && typeof props.buildId !== "string" || !isResponseStageCacheability(props.cacheability) || props.draftModeCookie !== null && typeof props.draftModeCookie !== "string" || props.middlewareCookieOverlay !== null && typeof props.middlewareCookieOverlay !== "string" || !isCanonicalHttpOrigin(props.requestOrigin) || props.scriptNonce !== null && typeof props.scriptNonce !== "string") return false;
122
+ if (props.protocolVersion !== 13 || props.buildId !== null && typeof props.buildId !== "string" || !isResponseStageCacheability(props.cacheability) || props.draftModeCookie !== null && typeof props.draftModeCookie !== "string" || props.middlewareCookieOverlay !== null && typeof props.middlewareCookieOverlay !== "string" || !isCanonicalHttpOrigin(props.requestOrigin) || props.scriptNonce !== null && typeof props.scriptNonce !== "string") return false;
84
123
  if (props.kind === "app-full-request") return typeof props.headRequest === "boolean" && typeof props.prerenderDiscovery === "boolean" && typeof props.staticFileSignalToken === "string" && STATIC_FILE_SIGNAL_TOKEN_RE.test(props.staticFileSignalToken) && (props.trustedPrerenderState === null || isTrustedPrerenderState(props.trustedPrerenderState));
85
124
  if (props.kind === "hybrid-pages") {
86
125
  const hybrid = props;
87
126
  const appRouteMatch = hybrid.appRouteMatch;
88
- return typeof hybrid.allowRscDocumentFallback === "boolean" && (appRouteMatch === null || typeof appRouteMatch === "object" && typeof appRouteMatch.isDynamic === "boolean" && typeof appRouteMatch.pattern === "string" && appRouteMatch.pattern.startsWith("/")) && typeof hybrid.canonicalPathname === "string" && hybrid.canonicalPathname.startsWith("/") && typeof hybrid.cleanPathname === "string" && hybrid.cleanPathname.startsWith("/") && typeof hybrid.isDataRequest === "boolean" && typeof hybrid.isRscRequest === "boolean" && (hybrid.matchKind === "dynamic" || hybrid.matchKind === "static") && (hybrid.preHandlerHeaders === null || isSerializedHeaders(hybrid.preHandlerHeaders)) && (hybrid.resourceKind === "api" || hybrid.resourceKind === "page") && typeof hybrid.requestUrl === "string" && typeof hybrid.resolvedUrl === "string" && hybrid.resolvedUrl.startsWith("/");
127
+ return typeof hybrid.allowRscDocumentFallback === "boolean" && (appRouteMatch === null || typeof appRouteMatch === "object" && typeof appRouteMatch.isDynamic === "boolean" && typeof appRouteMatch.pattern === "string" && appRouteMatch.pattern.startsWith("/")) && typeof hybrid.canonicalPathname === "string" && hybrid.canonicalPathname.startsWith("/") && typeof hybrid.cleanPathname === "string" && hybrid.cleanPathname.startsWith("/") && typeof hybrid.isDataRequest === "boolean" && typeof hybrid.isRscRequest === "boolean" && (hybrid.matchKind === "dynamic" || hybrid.matchKind === "static") && (hybrid.preHandlerHeaders === null || isSerializedHeaders(hybrid.preHandlerHeaders)) && (hybrid.resourceKind === "api" || hybrid.resourceKind === "page") && typeof hybrid.requestUrl === "string" && typeof hybrid.resolvedUrl === "string" && hybrid.resolvedUrl.startsWith("/") && typeof hybrid.sharedAcrossHosts === "boolean";
89
128
  }
90
129
  if (props.kind === "app-metadata" || props.kind === "app-not-found") {
91
130
  const special = props;
@@ -102,4 +141,4 @@ function isResponseStageCacheability(value) {
102
141
  return (cacheability.probeMode === null || cacheability.probeMode === "probe" || cacheability.probeMode === "identity") && (cacheability.policyHeaders === null || Array.isArray(cacheability.policyHeaders) && cacheability.policyHeaders.every((entry) => Array.isArray(entry) && entry.length === 2 && typeof entry[0] === "string" && typeof entry[1] === "string")) && (cacheability.representation === void 0 || cacheability.representation === "app-route" || cacheability.representation === "html" || cacheability.representation === "pages-data" || cacheability.representation === "rsc-full" || cacheability.representation === "rsc-loading-shell") && typeof cacheability.resolvedRoutePathname === "string" && cacheability.resolvedRoutePathname.startsWith("/");
103
142
  }
104
143
  //#endregion
105
- export { APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER, APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION, createSharedAppPageCacheIdentity, isAppWorkerResponseStageProps, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery };
144
+ export { APP_METADATA_RESPONSE_STAGE_NO_MATCH_HEADER, APP_WORKER_RESPONSE_STAGE_PROTOCOL_VERSION, createSharedAppCacheIdentity, createSharedAppPageCacheIdentity, createSharedHybridPagesCacheIdentity, isAppWorkerResponseStageProps, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery };
@@ -11,7 +11,6 @@ export type ArtifactCompatibilityEnvelope = Readonly<{
11
11
  rootBoundaryId: string | null;
12
12
  renderEpoch: string | null;
13
13
  }>;
14
- export declare const ARTIFACT_COMPATIBILITY_PROOF_FIELDS: readonly (keyof ArtifactCompatibilityEnvelope)[];
15
14
  type ArtifactCompatibilityEnvelopeInput = Readonly<{
16
15
  graphVersion?: string | null;
17
16
  deploymentVersion?: string | null;
@@ -50,4 +49,5 @@ export declare function createArtifactCompatibilityEnvelope(input?: ArtifactComp
50
49
  export declare function createArtifactCompatibilityGraphVersion(input: ArtifactCompatibilityGraphVersionInput): string;
51
50
  export declare function parseArtifactCompatibilityEnvelope(value: unknown): ArtifactCompatibilityEnvelope | null;
52
51
  export declare function evaluateArtifactCompatibility(current: ArtifactCompatibilityEnvelope, candidate: ArtifactCompatibilityEnvelope, options?: ArtifactCompatibilityEvaluationOptions): ArtifactCompatibilityDecision;
53
- //#endregion
52
+ //#endregion
53
+ export {};
@@ -4,15 +4,6 @@ import { fnv1a64 } from "../utils/hash.js";
4
4
  const ARTIFACT_COMPATIBILITY_SCHEMA_VERSION = 1;
5
5
  const APP_ELEMENTS_SCHEMA_VERSION = 1;
6
6
  const RSC_PAYLOAD_SCHEMA_VERSION = 1;
7
- const ARTIFACT_COMPATIBILITY_PROOF_FIELDS = [
8
- "schemaVersion",
9
- "graphVersion",
10
- "deploymentVersion",
11
- "appElementsSchemaVersion",
12
- "rscPayloadSchemaVersion",
13
- "rootBoundaryId",
14
- "renderEpoch"
15
- ];
16
7
  function createArtifactCompatibilityEnvelope(input = {}) {
17
8
  return {
18
9
  schemaVersion: 1,
@@ -88,4 +79,4 @@ function evaluateArtifactCompatibility(current, candidate, options = {}) {
88
79
  return { kind: "compatible" };
89
80
  }
90
81
  //#endregion
91
- export { APP_ELEMENTS_SCHEMA_VERSION, ARTIFACT_COMPATIBILITY_PROOF_FIELDS, ARTIFACT_COMPATIBILITY_SCHEMA_VERSION, RSC_PAYLOAD_SCHEMA_VERSION, createArtifactCompatibilityEnvelope, createArtifactCompatibilityGraphVersion, evaluateArtifactCompatibility, parseArtifactCompatibilityEnvelope };
82
+ export { APP_ELEMENTS_SCHEMA_VERSION, ARTIFACT_COMPATIBILITY_SCHEMA_VERSION, RSC_PAYLOAD_SCHEMA_VERSION, createArtifactCompatibilityEnvelope, createArtifactCompatibilityGraphVersion, evaluateArtifactCompatibility, parseArtifactCompatibilityEnvelope };
@@ -41,4 +41,5 @@ export type BfcacheSegmentDescriptor = {
41
41
  sourceBoundSegmentKey: string;
42
42
  };
43
43
  export declare function deriveBfcacheSegmentIdentity(descriptor: BfcacheSegmentDescriptor): string;
44
- //#endregion
44
+ //#endregion
45
+ export {};
@@ -2,4 +2,5 @@
2
2
  type VinextCacheState = "HIT" | "MISS" | "STALE" | "STATIC";
3
3
  export declare function setCacheStateHeaders(headers: Headers, cacheState: VinextCacheState): void;
4
4
  export declare function buildCacheStateHeaders(cacheState: VinextCacheState): Record<string, string>;
5
- //#endregion
5
+ //#endregion
6
+ export {};