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
@@ -3,7 +3,7 @@ import { requestContextFromRequest } from "../config/request-context.js";
3
3
  import { hasBasePath, stripBasePath } from "../utils/base-path.js";
4
4
  import { VINEXT_CACHEABILITY_PROBE_QUERY_PARAM, VINEXT_EXPECTED_WORKER_VERSION_HEADER } from "./headers.js";
5
5
  import { notFoundStaticAssetResponse } from "./http-error-responses.js";
6
- import { attachRequestCfMetadata, cloneRequestWithHeaders, cloneRequestWithUrl, filterInternalHeaders, guardProtocolRelativeUrl } from "./request-pipeline.js";
6
+ import { attachRequestCfMetadata, cloneRequestWithUrl, filterInternalHeaders, guardProtocolRelativeUrl, haveSameHeaders, withRequestHeaders } from "./request-pipeline.js";
7
7
  import { assetPrefixPathname, isNextStaticPath } from "../utils/asset-prefix.js";
8
8
  import { normalizePathnameForRouteMatchStrict } from "../routing/utils.js";
9
9
  import { runWithExecutionContext } from "../shims/request-context.js";
@@ -22,7 +22,8 @@ import { resolveClientBuildFile } from "./client-build-files.js";
22
22
  import { createWorkerRevalidationContext } from "./worker-revalidation-context.js";
23
23
  import { createWorkerPrerenderDiscoveryContext, createWorkerPrerenderReadinessResponse, isWorkerPrerenderDiscoveryPath } from "./worker-prerender-discovery.js";
24
24
  import { getPagesResponseStageCacheDisposition } from "./pages-response-stage.js";
25
- import "./worker-stages.js";
25
+ import { adapterUsesSharedCacheIdentity, pagesCacheIdentityOrigin, pagesPageSharesAcrossHosts } from "./shared-cache-identity.js";
26
+ import { createSharedPagesPageCacheIdentity } from "./worker-stages.js";
26
27
  import { consumePagesResponseStagePolicyOwner, prependResponseStageAdditiveHeaders, withResponseStageVary, withoutResponseStageVary } from "./response-stage-policy.js";
27
28
  import * as configuredCdnCacheAdapters from "virtual:vinext-cdn-cache-adapter";
28
29
  import { registerConfiguredImageOptimizer } from "virtual:vinext-image-adapters";
@@ -34,11 +35,6 @@ import * as pagesEntry from "virtual:vinext-pages-request-entry";
34
35
  * The public pages-router-entry delegates here. Multi-stage hosts import the
35
36
  * named request handler directly and provide their response-stage dispatcher.
36
37
  */
37
- function haveSameHeaders(first, second) {
38
- const firstEntries = [...first];
39
- const secondEntries = [...second];
40
- return firstEntries.length === secondEntries.length && firstEntries.every(([name, value], index) => name === secondEntries[index]?.[0] && value === secondEntries[index]?.[1]);
41
- }
42
38
  function captureOuterResponsePolicyHeaders(stagedHeaders, transportedPolicyHeaders) {
43
39
  return captureCdnResponsePolicyOverrides(stagedHeaders, new Headers(transportedPolicyHeaders ?? []));
44
40
  }
@@ -151,7 +147,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
151
147
  const expectedWorkerVersion = request.headers.get(VINEXT_EXPECTED_WORKER_VERSION_HEADER);
152
148
  if (expectedWorkerVersion) filteredHeaders.set(VINEXT_EXPECTED_WORKER_VERSION_HEADER, expectedWorkerVersion);
153
149
  }
154
- request = cloneRequestWithHeaders(request, filteredHeaders);
150
+ request = withRequestHeaders(request, filteredHeaders);
155
151
  const url = new URL(request.url);
156
152
  let pathname = url.pathname;
157
153
  if (ctx.isPrerenderPathDiscovery && isWorkerPrerenderDiscoveryPath(pathname)) return trackedDispatchResponseStage(request, {
@@ -162,7 +158,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
162
158
  resolvedRoutePathname: pathname
163
159
  },
164
160
  kind: "pages-prerender-discovery",
165
- protocolVersion: 5,
161
+ protocolVersion: 6,
166
162
  requestHost: url.host,
167
163
  stagedHeaders: null
168
164
  }, { cache: "bypass" }, env, ctx);
@@ -247,6 +243,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
247
243
  stagedHeaders
248
244
  });
249
245
  const isSharedStaticPage = cache === "shared" && matchedPage?.route.dataKind === "static";
246
+ const sharedAcrossHosts = (cache === "shared" || probeMode !== null) && pagesPageSharesAcrossHosts(matchedPage?.route) && adapterUsesSharedCacheIdentity();
250
247
  const transportedPolicyHeaders = isSharedStaticPage ? withoutResponseStageVary(responseStagePolicyHeaders) : withResponseStageVary(responseStagePolicyHeaders, stagedHeaders?.get("Vary"));
251
248
  const responseStageProps = () => ({
252
249
  buildId: pagesEntry.buildId,
@@ -257,17 +254,22 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
257
254
  resolvedRoutePathname: new URL(resolvedUrl, req.url).pathname
258
255
  },
259
256
  kind: "pages-page",
260
- protocolVersion: 5,
257
+ protocolVersion: 6,
261
258
  requestHost: new URL(req.url).host,
262
259
  renderOptions: isDataReq ? {
263
260
  ...options,
264
261
  originalUrl: originalRenderUrl
265
262
  } : options ?? null,
266
263
  resolvedUrl,
264
+ sharedAcrossHosts,
267
265
  stagedHeaders: isSharedStaticPage ? null : [...stagedHeaders ?? new Headers()]
268
266
  });
269
267
  const isHeadRequest = req.method.toUpperCase() === "HEAD";
270
- const responsePromise = trackedDispatchResponseStage(stageRequest, responseStageProps(), { cache }, env, ctx).then((response) => {
268
+ const props = responseStageProps();
269
+ const responsePromise = trackedDispatchResponseStage(stageRequest, props, cache === "shared" && sharedAcrossHosts ? {
270
+ cache,
271
+ cacheIdentity: createSharedPagesPageCacheIdentity(stageRequest, props, pagesCacheIdentityOrigin(stageRequest.url, i18nConfig))
272
+ } : { cache }, env, ctx).then((response) => {
271
273
  const consumed = consumePagesResponseStagePolicyOwner(response);
272
274
  if (cache === "shared") {
273
275
  if (isSharedStaticPage && stagedHeaders) prependResponseStageAdditiveHeaders(consumed.response.headers, stagedHeaders);
@@ -297,7 +299,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
297
299
  resolvedRoutePathname: new URL(apiUrl, req.url).pathname
298
300
  },
299
301
  kind: "pages-api",
300
- protocolVersion: 5,
302
+ protocolVersion: 6,
301
303
  requestHost: new URL(req.url).host,
302
304
  stagedHeaders: [...stagedHeaders]
303
305
  });
@@ -8,4 +8,5 @@ type PagesWorkerExecutionContext = ExecutionContextLike & {
8
8
  };
9
9
  export declare function renderPagesResponse(request: Request, env: PagesWorkerEnv | undefined, platformCtx: PagesWorkerExecutionContext | undefined, props: WorkerResponseStageProps, stagedHeaders?: Headers, dispatchRequestStage?: VinextRequestStageTransport, dispatchOptions?: VinextResponseStageDispatchOptions): Promise<Response>;
10
10
  export declare function handleResponseStage(request: Request, env: PagesWorkerEnv | undefined, ctx: PagesWorkerExecutionContext | undefined, props: WorkerResponseStageProps, dispatchRequestStage: VinextRequestStageTransport, options: VinextResponseStageDispatchOptions): Promise<Response>;
11
- //#endregion
11
+ //#endregion
12
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
2
2
  import "../shims/unified-request-context.js";
3
3
  import { runWithExecutionContext } from "../shims/request-context.js";
4
- import { beginRouteCacheability } from "../shims/cacheability-classification.js";
4
+ import { beginRouteCacheability, markRouteCacheabilityDynamic } from "../shims/cacheability-classification.js";
5
5
  import { validateCdnRequest } from "./cache-control.js";
6
6
  import { createWorkerRevalidationContext } from "./worker-revalidation-context.js";
7
7
  import { createWorkerPrerenderReadinessResponse } from "./worker-prerender-discovery.js";
@@ -57,6 +57,12 @@ async function renderPagesResponse(request, env, platformCtx, props, stagedHeade
57
57
  ...ctx,
58
58
  isStoredEntryRegeneration: true
59
59
  };
60
+ let runtimeDataKind;
61
+ const runtimeDataKindIsRequestTime = () => {
62
+ if (props.kind !== "pages-page") return false;
63
+ runtimeDataKind ??= pagesEntry.getRuntimePageDataKind(props.resolvedUrl, request);
64
+ return runtimeDataKind === "server" || runtimeDataKind === "initial";
65
+ };
60
66
  const render = async (cacheabilityContext) => {
61
67
  if (props.kind === "pages-prerender-discovery") {
62
68
  const readinessResponse = createWorkerPrerenderReadinessResponse(cacheabilityContext, request);
@@ -77,6 +83,7 @@ async function renderPagesResponse(request, env, platformCtx, props, stagedHeade
77
83
  });
78
84
  }
79
85
  if (typeof pagesEntry.renderPage !== "function") return new Response("This page could not be found", { status: 404 });
86
+ if (props.sharedAcrossHosts && runtimeDataKindIsRequestTime()) runWithExecutionContext(cacheabilityContext, () => markRouteCacheabilityDynamic("getInitialProps render shares a cache entry across hosts"));
80
87
  return stripStreamedHtmlContentLength(await pagesEntry.renderPage(request, props.resolvedUrl, null, cacheabilityContext, renderHeaders, props.renderOptions ?? void 0, initialResponseHeaders));
81
88
  };
82
89
  const handle = async (cacheabilityContext) => stripInheritedResponseStageCookies(await render(cacheabilityContext), renderHeaders);
@@ -94,9 +101,8 @@ async function renderPagesResponse(request, env, platformCtx, props, stagedHeade
94
101
  resolvedRoutePathname: props.cacheability.resolvedRoutePathname
95
102
  }, handle);
96
103
  if (props.kind !== "pages-page") return response;
97
- const runtimeDataKind = pagesEntry.getRuntimePageDataKind(props.resolvedUrl, request);
98
104
  const headers = new Headers(response.headers);
99
- headers.set(PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER, runtimeDataKind === "server" || runtimeDataKind === "initial" ? "request-time" : "static");
105
+ headers.set(PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER, runtimeDataKindIsRequestTime() ? "request-time" : "static");
100
106
  return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
101
107
  headers,
102
108
  status: response.status,
@@ -15,4 +15,5 @@ type AppComponent = {
15
15
  } | null;
16
16
  /** Classify loaded Pages modules after HOCs and re-exports have been evaluated. */
17
17
  export declare function getRuntimePagesDataKind(pageModule: PagesModule, appComponent: AppComponent): RuntimePagesDataKind;
18
- //#endregion
18
+ //#endregion
19
+ export {};
@@ -7,4 +7,5 @@ type PrerenderCacheLife = {
7
7
  };
8
8
  export declare function applyPrerenderCacheLifeHeader(headers: Headers, requestCacheLife: PrerenderCacheLife | null | undefined): void;
9
9
  export declare function applyPrerenderCacheTagsHeader(headers: Headers, cacheTags: readonly string[]): void;
10
- //#endregion
10
+ //#endregion
11
+ export {};
@@ -26,4 +26,5 @@ export declare function readTrustedPrerenderStateFromHeaders(headers: Headers, e
26
26
  export declare function readTrustedPrerenderRouteParams(request: Request): PrerenderRouteParamsPayload | null;
27
27
  export declare function matchPrerenderRouteParamsPayload(payload: PrerenderRouteParamsPayload | null, routePattern: string, params: PrerenderRouteParams): PrerenderRouteParamsRouteMatch | null;
28
28
  export declare function encodePrerenderRouteParams(pattern: string, params: PrerenderRouteParams, fallbackParamNames?: readonly string[]): PrerenderRouteParamsPayload | null;
29
- //#endregion
29
+ //#endregion
30
+ export {};
@@ -31,7 +31,6 @@ import { readPrerenderSecret, readServerCompress } from "../build/server-manifes
31
31
  import { readTrustedPrerenderRouteParamsFromHeaders, serializePrerenderRouteParamsHeader } from "./prerender-route-params.js";
32
32
  import { resolveClientBuildFile } from "./client-build-files.js";
33
33
  import { registerPrerenderCloudflareLoader } from "../build/prerender-cloudflare-loader.js";
34
- import { seedMemoryCacheFromPrerender } from "./seed-cache.js";
35
34
  import { negotiateEncoding, parseAcceptedEncodings, selectContentEncoding } from "./accept-encoding.js";
36
35
  import { COMPRESS_THRESHOLD, hasNoTransform, isCompressibleContentType, parseContentLengthHeader, resolveResponseCompression } from "./response-compression.js";
37
36
  import { ifRangeAllowsRange, parseByteRange } from "./http-range.js";
@@ -329,6 +328,7 @@ function installClientBuildManifestGlobals(clientDir, assetBase, assetPrefix, cr
329
328
  });
330
329
  setPagesClientAssets({
331
330
  appBootstrapPreinitModules: metadata.appBootstrapPreinitModules,
331
+ appRouteManifestModule: metadata.appRouteManifestModule,
332
332
  lazyChunks: metadata.lazyChunks,
333
333
  dynamicPreloads: metadata.dynamicPreloads,
334
334
  crossOrigin
@@ -904,6 +904,7 @@ function waitForNodeResponseCompletion(res) {
904
904
  */
905
905
  async function startProdServer(options = {}) {
906
906
  installSocketErrorBackstop({ runningServer: options.purpose !== "prerender" });
907
+ if (options.purpose !== "prerender" && !process.env.NODE_ENV) Reflect.set(process.env, "NODE_ENV", "production");
907
908
  const { port = process.env.PORT ? parseInt(process.env.PORT) : 3e3, host = "0.0.0.0", outDir = path.resolve("dist"), rscEntryPath: explicitRscEntryPath, serverDir: explicitServerDir, serverEntryPath: explicitServerEntryPath, noCompression = false, purpose, silent = false } = options;
908
909
  if (purpose === "prerender") registerPrerenderCloudflareLoader();
909
910
  const compress = !noCompression;
@@ -1007,15 +1008,19 @@ function resolveAppRouterHandler(entry) {
1007
1008
  console.error("[vinext] App Router entry must export either a default handler function or a Worker-style default export with fetch()");
1008
1009
  process.exit(1);
1009
1010
  }
1011
+ async function seedMemoryCacheFromPrerenderFallback(serverDir) {
1012
+ const { seedMemoryCacheFromPrerender } = await import("./seed-cache.js");
1013
+ return seedMemoryCacheFromPrerender(serverDir);
1014
+ }
1010
1015
  function isAppRouterPrerenderSeederExport(value) {
1011
1016
  return typeof value === "function";
1012
1017
  }
1013
1018
  function resolveAppRouterPrerenderSeeder(entryModule) {
1014
- if (typeof entryModule !== "object" || entryModule === null) return seedMemoryCacheFromPrerender;
1019
+ if (typeof entryModule !== "object" || entryModule === null) return seedMemoryCacheFromPrerenderFallback;
1015
1020
  const seedExport = Object.getOwnPropertyDescriptor(entryModule, "seedMemoryCacheFromPrerender")?.value;
1016
1021
  if (!isAppRouterPrerenderSeederExport(seedExport)) {
1017
1022
  if (process.env.NEXT_PRIVATE_DEBUG_CACHE) console.debug("[vinext] ISR: using fallback prerender cache seeder");
1018
- return seedMemoryCacheFromPrerender;
1023
+ return seedMemoryCacheFromPrerenderFallback;
1019
1024
  }
1020
1025
  if (process.env.NEXT_PRIVATE_DEBUG_CACHE) console.debug("[vinext] ISR: using App Router entry prerender cache seeder");
1021
1026
  return async (serverDir) => {
@@ -1091,6 +1096,7 @@ function installPagesClientAssets(options) {
1091
1096
  setPagesClientAssets({
1092
1097
  clientEntry: metadata.clientEntryFile,
1093
1098
  appBootstrapPreinitModules: metadata.appBootstrapPreinitModules,
1099
+ appRouteManifestModule: metadata.appRouteManifestModule,
1094
1100
  ssrManifest: Object.keys(ssrManifest).length > 0 ? ssrManifest : void 0,
1095
1101
  sharedChunks: metadata.sharedChunks,
1096
1102
  cssGraph: metadata.cssGraph,
@@ -1640,7 +1646,11 @@ async function createPagesRouterRequestHandler(options) {
1640
1646
  ...options,
1641
1647
  originalUrl: originalRenderUrl
1642
1648
  }, stagedHeaders?.has("Cache-Control") ? new Headers({ "Cache-Control": stagedHeaders.get("Cache-Control") }) : void 0) : null,
1643
- handleApi: typeof handleApi === "function" ? (request, apiUrl) => handleApi(request, apiUrl, createNodeExecutionContext(), resolveTrustedNodeRevalidateOrigin(req, host, port), "node") : null,
1649
+ handleApi: typeof handleApi === "function" ? (request, apiUrl, _ctx, stagedHeaders) => {
1650
+ stagedHeaders.delete("Content-Length");
1651
+ return handleApi(request, apiUrl, createNodeExecutionContext(), resolveTrustedNodeRevalidateOrigin(req, host, port), "node", stagedHeaders);
1652
+ } : null,
1653
+ handleApiAppliesStagedHeaders: true,
1644
1654
  serveFilesystemRoute: async (requestPathname, stagedHeaders, phase, resolvedUrl, _request, resolvedPathnameHasBasePath) => {
1645
1655
  if (resolvedPathnameHasBasePath && isImageOptimizationPath(requestPathname)) {
1646
1656
  for (const [name, value] of Object.entries(stagedHeaders)) res.setHeader(name, value);
@@ -31,4 +31,5 @@ export declare function logRequest({ method, url, status, totalMs, compileMs, re
31
31
  * Returns `performance.now()` - a high-resolution monotonic timestamp.
32
32
  */
33
33
  export declare function now(): number;
34
- //#endregion
34
+ //#endregion
35
+ export {};
@@ -181,6 +181,12 @@ export declare function attachRequestCfMetadata(target: Request, source: Request
181
181
  * a RequestInit with best-effort metadata.
182
182
  */
183
183
  export declare function cloneRequestWithHeaders(request: Request, headers: Headers): Request;
184
+ export declare function haveSameHeaders(first: Headers, second: Headers): boolean;
185
+ /**
186
+ * `cloneRequestWithHeaders`, except that a native request whose headers
187
+ * already match is returned as is, so its body stays where it is.
188
+ */
189
+ export declare function withRequestHeaders(request: Request, headers: Headers): Request;
184
190
  /**
185
191
  * Clone a Request while overriding the URL, preserving headers and metadata
186
192
  * when possible.
@@ -407,6 +407,26 @@ function cloneRequestWithHeaders(request, headers) {
407
407
  }
408
408
  return attachRequestCfMetadata(cloned, request);
409
409
  }
410
+ function haveSameHeaders(first, second) {
411
+ const firstEntries = [...first];
412
+ const secondEntries = [...second];
413
+ return firstEntries.length === secondEntries.length && firstEntries.every(([name, value], index) => name === secondEntries[index]?.[0] && value === secondEntries[index]?.[1]);
414
+ }
415
+ function isNativeRequest(request) {
416
+ try {
417
+ Reflect.get(Request.prototype, "url", request);
418
+ return true;
419
+ } catch {
420
+ return false;
421
+ }
422
+ }
423
+ /**
424
+ * `cloneRequestWithHeaders`, except that a native request whose headers
425
+ * already match is returned as is, so its body stays where it is.
426
+ */
427
+ function withRequestHeaders(request, headers) {
428
+ return isNativeRequest(request) && haveSameHeaders(headers, request.headers) ? request : cloneRequestWithHeaders(request, headers);
429
+ }
410
430
  /**
411
431
  * Clone a Request while overriding the URL, preserving headers and metadata
412
432
  * when possible.
@@ -444,4 +464,4 @@ function cloneRequestWithUrl(request, url) {
444
464
  return attachRequestCfMetadata(cloned, request);
445
465
  }
446
466
  //#endregion
447
- export { INTERNAL_HEADERS, VINEXT_INTERNAL_HEADERS, attachRequestCfMetadata, canonicalizeRequestPathname, canonicalizeRequestUrlPathname, cloneRequestWithHeaders, cloneRequestWithUrl, createStaticFileSignal, dropEmptyMiddlewareSetCookie, filterInternalHeaders, getRepeatedSlashRedirect, guardProtocolRelativeUrl, hasBasePath, isOpenRedirectShaped, isOriginAllowed, normalizeTrailingSlash, normalizeTrailingSlashPathname, processMiddlewareHeaders, resolvePublicFileRoute, sendRepeatedSlashRedirect, stripBasePath, validateCsrfOrigin, validateServerActionPayload };
467
+ export { INTERNAL_HEADERS, VINEXT_INTERNAL_HEADERS, attachRequestCfMetadata, canonicalizeRequestPathname, canonicalizeRequestUrlPathname, cloneRequestWithHeaders, cloneRequestWithUrl, createStaticFileSignal, dropEmptyMiddlewareSetCookie, filterInternalHeaders, getRepeatedSlashRedirect, guardProtocolRelativeUrl, hasBasePath, haveSameHeaders, isOpenRedirectShaped, isOriginAllowed, normalizeTrailingSlash, normalizeTrailingSlashPathname, processMiddlewareHeaders, resolvePublicFileRoute, sendRepeatedSlashRedirect, stripBasePath, validateCsrfOrigin, validateServerActionPayload, withRequestHeaders };
@@ -19,4 +19,5 @@ export declare function clearFrameworkRequestError(response: Response): Response
19
19
  export declare function attachFrameworkRequestError(response: Response, error: unknown): Response;
20
20
  export declare function consumeFrameworkRequestRoute(response: Response): Response;
21
21
  export declare function traceFrameworkRequest<T>(input: RequestTraceInput<T>): Promise<T>;
22
- //#endregion
22
+ //#endregion
23
+ export {};
@@ -1,8 +1,8 @@
1
1
  import { getOrCreateAls } from "../shims/internal/als-registry.js";
2
2
  import { isFullyBufferedBody, markFullyBufferedBody, preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
3
+ import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
3
4
  import { VINEXT_TRACE_BUFFERED_BODY_HEADER, VINEXT_TRACE_ERROR_HEADER, VINEXT_TRACE_ROUTE_HEADER } from "./headers.js";
4
5
  import { frameworkTracer } from "./tracer.js";
5
- import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
6
6
  import { getResponseStartCompletion } from "./response-start-tracing.js";
7
7
  //#region src/server/request-tracing.ts
8
8
  const activeRequestTrace = getOrCreateAls("vinext.requestTracing.als");
@@ -1,4 +1,5 @@
1
1
  import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
2
+ import { observeStreamConsumption } from "./defer-until-stream-consumed.js";
2
3
  import { frameworkTracer } from "./tracer.js";
3
4
  import { copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
4
5
  //#region src/server/response-start-tracing.ts
@@ -13,37 +14,14 @@ function createResponseStartSpanDescriptor() {
13
14
  };
14
15
  }
15
16
  function traceResponseStartStream(stream, onSettled) {
16
- const reader = stream.getReader();
17
17
  const runInTraceContext = frameworkTracer.captureActiveContext();
18
- let started = false;
19
- return new ReadableStream({
20
- async pull(controller) {
21
- try {
22
- const result = await reader.read();
23
- if (result.done) {
24
- onSettled();
25
- controller.close();
26
- return;
27
- }
28
- if (!started) {
29
- started = true;
30
- runInTraceContext(() => frameworkTracer.trace(createResponseStartSpanDescriptor(), () => void 0));
31
- onSettled();
32
- }
33
- controller.enqueue(result.value);
34
- } catch (error) {
35
- onSettled();
36
- controller.error(error);
37
- }
18
+ return observeStreamConsumption(stream, {
19
+ onStart() {
20
+ runInTraceContext(() => frameworkTracer.trace(createResponseStartSpanDescriptor(), () => void 0));
21
+ onSettled();
38
22
  },
39
- async cancel(reason) {
40
- try {
41
- await reader.cancel(reason);
42
- } finally {
43
- onSettled();
44
- }
45
- }
46
- }, { highWaterMark: 0 });
23
+ onFlush: onSettled
24
+ });
47
25
  }
48
26
  function traceResponseStartWithCompletion(response) {
49
27
  const existing = tracedResponses.get(response);
@@ -0,0 +1,4 @@
1
+ //#region src/server/rsc-render-stream.d.ts
2
+ export type RscRawRenderer = (model: unknown, options?: unknown) => ReadableStream<Uint8Array>;
3
+ export declare function createRscRenderer(render: RscRawRenderer): RscRawRenderer;
4
+ //#endregion
@@ -0,0 +1,25 @@
1
+ import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
2
+ import { createRenderStreamCancellation } from "./app-render-abort-error.js";
3
+ //#region src/server/rsc-render-stream.ts
4
+ const noop = () => {};
5
+ function createRscRenderer(render) {
6
+ return (model, options) => {
7
+ const cancellation = createRenderStreamCancellation();
8
+ return deferUntilStreamConsumed(render(model, ignoreCancellationErrors(options, cancellation)), noop, void 0, cancellation.record);
9
+ };
10
+ }
11
+ /** A consumer cancelling the payload is not a render failure. */
12
+ function ignoreCancellationErrors(options, cancellation) {
13
+ if (!options || typeof options !== "object") return options;
14
+ const onError = Reflect.get(options, "onError");
15
+ if (typeof onError !== "function") return options;
16
+ return {
17
+ ...options,
18
+ onError(error, ...rest) {
19
+ if (cancellation.isReason(error)) return void 0;
20
+ return Reflect.apply(onError, options, [error, ...rest]);
21
+ }
22
+ };
23
+ }
24
+ //#endregion
25
+ export { createRscRenderer };
@@ -30,4 +30,5 @@ type PrerenderCacheSeedOptions = {
30
30
  * @returns The number of routes seeded (0 if no manifest or no renderable routes).
31
31
  */
32
32
  export declare function seedMemoryCacheFromPrerender(serverDir: string, options?: PrerenderCacheSeedOptions): Promise<number>;
33
- //#endregion
33
+ //#endregion
34
+ export {};
@@ -2,8 +2,8 @@ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
2
  import { appIsrCacheKey, appIsrFallbackShellKey, isrSet, isrSetPrerenderedAppPage } from "./isr-cache.js";
3
3
  import { addPregeneratedConcretePath, addPregeneratedRoute, clearPregeneratedConcretePaths, normalizePregeneratedPathname } from "./pregenerated-concrete-paths.js";
4
4
  import { getRenderedAppRoutes, getRenderedMetadataRoutes, isFallbackShellArtifactPath, readPrerenderManifest } from "./prerender-manifest.js";
5
- import { buildAppPageCacheTags, buildAppRouteCacheTags } from "./app-page-cache.js";
6
5
  import { getAppRouteOutputPath, getOutputPath, getRscOutputPath } from "../utils/prerender-output-paths.js";
6
+ import { buildAppPageCacheTags, buildAppRouteCacheTags } from "./app-page-cache.js";
7
7
  import fs from "node:fs";
8
8
  //#region src/server/seed-cache.ts
9
9
  /**
@@ -0,0 +1,23 @@
1
+ import { NextI18nConfig } from "../config/next-config.js";
2
+ //#region src/server/shared-cache-identity.d.ts
3
+ /** The core cache identity the configured adapter keys shared dispatches by, if any. */
4
+ export declare function adapterSharedCacheIdentity(): "host-free" | "query-free" | null;
5
+ /** Whether the configured adapter keys shared dispatches by a core cache identity. */
6
+ export declare function adapterUsesSharedCacheIdentity(): boolean;
7
+ /**
8
+ * Whether a Pages page's response is one for every host, as Next.js serves a
9
+ * getStaticProps page and an automatically static page. A page without data
10
+ * functions is rendered per request when its getInitialProps or a custom
11
+ * _app's runs, and may read the host, so it keeps the host in its key.
12
+ */
13
+ export declare function pagesPageSharesAcrossHosts(route: {
14
+ dataKind?: string;
15
+ runsInitialProps?: boolean;
16
+ } | null | undefined): boolean;
17
+ /**
18
+ * The origin a shared Pages page identity names. A static Pages render reads
19
+ * the host only to select a configured i18n domain, so the identity keeps that
20
+ * domain, as vinext's Pages ISR key does, and every other host shares one entry.
21
+ */
22
+ export declare function pagesCacheIdentityOrigin(requestUrl: string, i18nConfig: NextI18nConfig | null | undefined): string;
23
+ //#endregion
@@ -0,0 +1,36 @@
1
+ import { detectDomainLocale, normalizeDomainHostname } from "../utils/domain-locale.js";
2
+ import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
3
+ import { VINEXT_CACHE_IDENTITY_ORIGIN } from "./multi-stage.js";
4
+ //#region src/server/shared-cache-identity.ts
5
+ /** The core cache identity the configured adapter keys shared dispatches by, if any. */
6
+ function adapterSharedCacheIdentity() {
7
+ const adapter = getCdnCacheAdapter();
8
+ if (adapter.requiresCompletedResponseAdmission !== true) return null;
9
+ return adapter.responseStageCacheIdentity ?? null;
10
+ }
11
+ /** Whether the configured adapter keys shared dispatches by a core cache identity. */
12
+ function adapterUsesSharedCacheIdentity() {
13
+ return adapterSharedCacheIdentity() !== null;
14
+ }
15
+ /**
16
+ * Whether a Pages page's response is one for every host, as Next.js serves a
17
+ * getStaticProps page and an automatically static page. A page without data
18
+ * functions is rendered per request when its getInitialProps or a custom
19
+ * _app's runs, and may read the host, so it keeps the host in its key.
20
+ */
21
+ function pagesPageSharesAcrossHosts(route) {
22
+ if (route?.dataKind === "static") return true;
23
+ return route?.dataKind === "none" && route.runsInitialProps !== true;
24
+ }
25
+ /**
26
+ * The origin a shared Pages page identity names. A static Pages render reads
27
+ * the host only to select a configured i18n domain, so the identity keeps that
28
+ * domain, as vinext's Pages ISR key does, and every other host shares one entry.
29
+ */
30
+ function pagesCacheIdentityOrigin(requestUrl, i18nConfig) {
31
+ const domainLocale = detectDomainLocale(i18nConfig?.domains, new URL(requestUrl).hostname);
32
+ if (!domainLocale) return VINEXT_CACHE_IDENTITY_ORIGIN;
33
+ return `${domainLocale.http ? "http" : "https"}://${normalizeDomainHostname(domainLocale.domain)}`;
34
+ }
35
+ //#endregion
36
+ export { adapterSharedCacheIdentity, adapterUsesSharedCacheIdentity, pagesCacheIdentityOrigin, pagesPageSharesAcrossHosts };
@@ -66,4 +66,5 @@ export declare class StaticFileCache {
66
66
  * so the caller can fall back to mtime-based ETags.
67
67
  */
68
68
  export declare function etagFromFilenameHash(relativePath: string, ext: string): string | null;
69
- //#endregion
69
+ //#endregion
70
+ export {};
@@ -37,6 +37,7 @@ const CONTENT_TYPES = {
37
37
  ".mp4": "video/mp4",
38
38
  ".ogg": "audio/ogg",
39
39
  ".ogv": "video/ogg",
40
+ ".otf": "font/otf",
40
41
  ".pdf": "application/pdf",
41
42
  ".png": "image/png",
42
43
  ".rsc": "text/x-component",
@@ -9,4 +9,5 @@ type PlatformExecutionContext = Partial<ExecutionContextLike> & VinextRequestSta
9
9
  * on the normal header-scrubbing path.
10
10
  */
11
11
  export declare function createWorkerRevalidationContext(base: PlatformExecutionContext | undefined, handleInternalRequest: (request: Request, ctx: ExecutionContextLike) => Promise<Response>, defaultHostRuntime?: "node" | "worker"): ExecutionContextLike;
12
- //#endregion
12
+ //#endregion
13
+ export {};
@@ -1,7 +1,7 @@
1
- import { VinextResponseStageCacheability, VinextResponseStageTransport } from "./multi-stage.js";
1
+ import { VinextResponseStageCacheability, VinextResponseStageDispatchOptions, VinextResponseStageTransport } from "./multi-stage.js";
2
2
  import { PagesRenderOptions } from "./pages-request-pipeline.js";
3
3
  //#region src/server/worker-stages.d.ts
4
- export declare const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION = 5;
4
+ export declare const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION = 6;
5
5
  export declare const PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER = "x-vinext-pages-response-stage-policy-owner";
6
6
  export type PagesResponseStagePolicyOwner = "request-time" | "static";
7
7
  type PagesResponseStageEnvelope = {
@@ -14,10 +14,16 @@ type PagesResponseStageEnvelope = {
14
14
  stagedHeaders: Array<[string, string]> | null;
15
15
  };
16
16
  /** Serializable Pages page render delegated to a cacheable Worker stage. */
17
- type PagesPageResponseStageProps = PagesResponseStageEnvelope & {
17
+ export type PagesPageResponseStageProps = PagesResponseStageEnvelope & {
18
18
  kind: "pages-page";
19
19
  renderOptions: PagesRenderOptions | null;
20
20
  resolvedUrl: string;
21
+ /**
22
+ * The shared cache entry answers every host, as Next.js keys a static page
23
+ * by its path, so a getInitialProps render of a page without
24
+ * getStaticProps, which reads the request, is not stored.
25
+ */
26
+ sharedAcrossHosts: boolean;
21
27
  };
22
28
  /** Serializable Pages API dispatch delegated to a cacheable Worker stage. */
23
29
  type PagesApiResponseStageProps = PagesResponseStageEnvelope & {
@@ -39,5 +45,13 @@ export type WorkerResponseStageProps = PagesApiResponseStageProps | PagesPageRes
39
45
  * response as Next.js.
40
46
  */
41
47
  export type DispatchWorkerResponseStage = VinextResponseStageTransport<WorkerResponseStageProps>;
48
+ type PagesPageResponseStageCacheIdentity = NonNullable<VinextResponseStageDispatchOptions["cacheIdentity"]>;
49
+ /**
50
+ * Build the cache identity of a shared Pages page dispatch: the dispatched
51
+ * request and props under `origin`, so every host that names it shares one
52
+ * entry.
53
+ */
54
+ export declare function createSharedPagesPageCacheIdentity(request: Request, props: PagesPageResponseStageProps, origin: string): PagesPageResponseStageCacheIdentity;
42
55
  export declare function isPagesResponseStageProps(value: unknown): value is WorkerResponseStageProps;
43
- //#endregion
56
+ //#endregion
57
+ export {};
@@ -1,6 +1,25 @@
1
+ import { withCacheIdentityOrigin } from "./multi-stage.js";
1
2
  //#region src/server/worker-stages.ts
2
- const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION = 5;
3
+ const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION = 6;
3
4
  const PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER = "x-vinext-pages-response-stage-policy-owner";
5
+ /**
6
+ * Build the cache identity of a shared Pages page dispatch: the dispatched
7
+ * request and props under `origin`, so every host that names it shares one
8
+ * entry.
9
+ */
10
+ function createSharedPagesPageCacheIdentity(request, props, origin) {
11
+ return {
12
+ props: {
13
+ ...props,
14
+ requestHost: new URL(origin).host
15
+ },
16
+ regenerateFromDispatch: true,
17
+ request: new Request(withCacheIdentityOrigin(request.url, origin), {
18
+ headers: new Headers(request.headers),
19
+ method: request.method
20
+ })
21
+ };
22
+ }
4
23
  function isSerializedHeaders(value) {
5
24
  return Array.isArray(value) && value.every((entry) => Array.isArray(entry) && entry.length === 2 && typeof entry[0] === "string" && typeof entry[1] === "string");
6
25
  }
@@ -12,14 +31,14 @@ function isResponseStageCacheability(value) {
12
31
  function isPagesResponseStageProps(value) {
13
32
  if (!value || typeof value !== "object") return false;
14
33
  const props = value;
15
- if (props.protocolVersion !== 5 || props.buildId !== null && typeof props.buildId !== "string" || !isResponseStageCacheability(props.cacheability) || typeof props.requestHost !== "string" || props.requestHost.length === 0 || props.stagedHeaders !== null && !isSerializedHeaders(props.stagedHeaders)) return false;
34
+ if (props.protocolVersion !== 6 || props.buildId !== null && typeof props.buildId !== "string" || !isResponseStageCacheability(props.cacheability) || typeof props.requestHost !== "string" || props.requestHost.length === 0 || props.stagedHeaders !== null && !isSerializedHeaders(props.stagedHeaders)) return false;
16
35
  if (props.kind === "pages-api") return typeof props.apiUrl === "string";
17
36
  if (props.kind === "pages-prerender-discovery") return true;
18
- if (props.kind !== "pages-page" || typeof props.resolvedUrl !== "string") return false;
37
+ if (props.kind !== "pages-page" || typeof props.resolvedUrl !== "string" || typeof props.sharedAcrossHosts !== "boolean") return false;
19
38
  if (props.renderOptions === null) return true;
20
39
  if (!props.renderOptions || typeof props.renderOptions !== "object") return false;
21
40
  const options = props.renderOptions;
22
41
  return (options.isDataReq === void 0 || typeof options.isDataReq === "boolean") && (options.renderErrorPageOnMiss === void 0 || typeof options.renderErrorPageOnMiss === "boolean") && (options.originalUrl === void 0 || typeof options.originalUrl === "string");
23
42
  }
24
43
  //#endregion
25
- export { PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER, PAGES_RESPONSE_STAGE_PROTOCOL_VERSION, isPagesResponseStageProps };
44
+ export { PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER, PAGES_RESPONSE_STAGE_PROTOCOL_VERSION, createSharedPagesPageCacheIdentity, isPagesResponseStageProps };
@@ -34,4 +34,5 @@ export default class App<P = any, CP = any, S = any> extends React.Component<P &
34
34
  static getInitialProps: typeof appGetInitialProps;
35
35
  render(): React.ReactElement;
36
36
  }
37
- //#endregion
37
+ //#endregion
38
+ export {};
@@ -12,4 +12,5 @@ export declare function registerCachedFunction<TArgs extends unknown[], TResult>
12
12
  }): (...args: TArgs) => Promise<TResult>;
13
13
  /** Replay the persisted payload without re-reading or re-encoding caller objects. */
14
14
  export declare function invokeCacheFunction(invocation: VinextCacheFunctionInvocation, loadServerAction: (id: string) => Promise<unknown>): Promise<void>;
15
- //#endregion
15
+ //#endregion
16
+ export {};
@@ -96,7 +96,7 @@ type MemoryCacheHandlerOptions = Pick<CacheHandlerContext, "maxMemoryCacheSize">
96
96
  };
97
97
  export declare class MemoryCacheHandler implements CacheHandler {
98
98
  private store;
99
- private tagRevalidatedAt;
99
+ private tagsManifest;
100
100
  private readonly maxMemoryCacheSize;
101
101
  private currentMemoryCacheSize;
102
102
  constructor(options?: number | MemoryCacheHandlerOptions);
@@ -106,7 +106,11 @@ export declare class MemoryCacheHandler implements CacheHandler {
106
106
  private evictLeastRecentlyUsed;
107
107
  get(key: string, ctx?: Record<string, unknown>): Promise<CacheHandlerValue | null>;
108
108
  set(key: string, data: IncrementalCacheValue | null, ctx?: Record<string, unknown>): Promise<void>;
109
- revalidateTag(tags: string | string[]): Promise<void>;
109
+ revalidateTag(tags: string | string[], durations?: {
110
+ expire?: number;
111
+ }): Promise<void>;
112
+ private isTagExpired;
113
+ private isTagStale;
110
114
  resetRequestCache(): void;
111
115
  }
112
116
  export declare function configureMemoryCacheHandler(options?: MemoryCacheHandlerOptions): void;
@@ -121,4 +125,5 @@ export declare function registerLazyDataCacheHandler(load: () => Promise<void>):
121
125
  export declare function getDataCacheHandler(): CacheHandler;
122
126
  export declare function setCacheHandler(handler: CacheHandler): void;
123
127
  export declare function getCacheHandler(): CacheHandler;
124
- //#endregion
128
+ //#endregion
129
+ export {};