vinext 1.2.1 → 1.3.1

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 (509) hide show
  1. package/README.md +12 -9
  2. package/dist/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/build/action-owner-manifest.d.ts +3 -2
  4. package/dist/build/action-owner-manifest.js +18 -2
  5. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  6. package/dist/build/app-page-static-eligibility.js +80 -13
  7. package/dist/build/clean-output.d.ts +2 -1
  8. package/dist/build/client-build-config.d.ts +77 -6
  9. package/dist/build/client-build-config.js +176 -12
  10. package/dist/build/client-reference-async.d.ts +48 -0
  11. package/dist/build/client-reference-async.js +123 -0
  12. package/dist/build/client-reference-chunks.d.ts +32 -0
  13. package/dist/build/client-reference-chunks.js +111 -0
  14. package/dist/build/client-reference-groups.d.ts +171 -0
  15. package/dist/build/client-reference-groups.js +572 -0
  16. package/dist/build/css-url-assets.d.ts +2 -1
  17. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  18. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  19. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  20. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  21. package/dist/build/google-fonts/validate.d.ts +2 -1
  22. package/dist/build/inline-css.d.ts +2 -1
  23. package/dist/build/layout-classification.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +33 -1
  25. package/dist/build/module-dependency-cache.js +51 -1
  26. package/dist/build/next-client-runtime-manifests.d.ts +12 -2
  27. package/dist/build/next-client-runtime-manifests.js +19 -4
  28. package/dist/build/nitro-public-files.d.ts +24 -0
  29. package/dist/build/nitro-public-files.js +60 -0
  30. package/dist/build/pages-client-assets-module.js +1 -1
  31. package/dist/build/precompress.d.ts +2 -1
  32. package/dist/build/precompress.js +1 -1
  33. package/dist/build/prerender-paths.d.ts +2 -1
  34. package/dist/build/prerender-paths.js +5 -2
  35. package/dist/build/prerender-phase.d.ts +2 -1
  36. package/dist/build/prerender-server-pool.js +1 -1
  37. package/dist/build/prerender.d.ts +3 -2
  38. package/dist/build/prerender.js +5 -4
  39. package/dist/build/report.d.ts +2 -1
  40. package/dist/build/route-classification-injector.d.ts +2 -1
  41. package/dist/build/route-classification-manifest.d.ts +2 -1
  42. package/dist/build/run-prerender.d.ts +2 -1
  43. package/dist/build/server-actions-encryption-key.d.ts +24 -0
  44. package/dist/build/server-actions-encryption-key.js +101 -0
  45. package/dist/build/ssr-manifest.d.ts +3 -0
  46. package/dist/build/ssr-manifest.js +34 -2
  47. package/dist/build/standalone.d.ts +2 -1
  48. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  49. package/dist/cache.js +1 -2
  50. package/dist/check.d.ts +2 -1
  51. package/dist/check.js +4 -0
  52. package/dist/cli-args.d.ts +2 -1
  53. package/dist/cli.js +2 -0
  54. package/dist/client/client-redirect-matcher.js +2 -1
  55. package/dist/client/client-redirects.d.ts +4 -3
  56. package/dist/client/client-redirects.js +2 -1
  57. package/dist/client/client-rewrite-params.d.ts +9 -0
  58. package/dist/client/client-rewrite-params.js +20 -0
  59. package/dist/client/client-rewrites.d.ts +2 -1
  60. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  61. package/dist/client/dev-error-overlay.js +2 -1
  62. package/dist/client/index.js +1 -2
  63. package/dist/client/instrumentation-client-state.js +5 -5
  64. package/dist/client/navigation-runtime.d.ts +28 -3
  65. package/dist/client/navigation-runtime.js +42 -11
  66. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  67. package/dist/client/vinext-next-data.d.ts +25 -2
  68. package/dist/client/window-next.d.ts +2 -1
  69. package/dist/config/config-matchers.d.ts +27 -41
  70. package/dist/config/config-matchers.js +293 -270
  71. package/dist/config/config-source.d.ts +34 -0
  72. package/dist/config/config-source.js +141 -0
  73. package/dist/config/dotenv.d.ts +2 -1
  74. package/dist/config/header-params.d.ts +29 -0
  75. package/dist/config/header-params.js +106 -0
  76. package/dist/config/next-config.d.ts +20 -6
  77. package/dist/config/next-config.js +149 -11
  78. package/dist/config/tsconfig-paths.d.ts +2 -1
  79. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  80. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  81. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  82. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  83. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  84. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  105. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  106. package/dist/entries/app-browser-entry.d.ts +34 -6
  107. package/dist/entries/app-browser-entry.js +103 -40
  108. package/dist/entries/app-rsc-entry.d.ts +4 -1
  109. package/dist/entries/app-rsc-entry.js +131 -66
  110. package/dist/entries/app-rsc-manifest.d.ts +12 -1
  111. package/dist/entries/app-rsc-manifest.js +73 -1
  112. package/dist/entries/app-ssr-entry.d.ts +4 -1
  113. package/dist/entries/app-ssr-entry.js +9 -2
  114. package/dist/entries/pages-client-entry.d.ts +1 -0
  115. package/dist/entries/pages-client-entry.js +6 -6
  116. package/dist/entries/pages-entry-helpers.js +1 -2
  117. package/dist/entries/pages-server-entry.d.ts +2 -1
  118. package/dist/entries/pages-server-entry.js +18 -15
  119. package/dist/entries/runtime-entry-module.d.ts +1 -0
  120. package/dist/entries/runtime-entry-module.js +4 -1
  121. package/dist/image/image-adapters-virtual.d.ts +2 -1
  122. package/dist/index.d.ts +11 -0
  123. package/dist/index.js +340 -116
  124. package/dist/init.js +17 -0
  125. package/dist/plugins/client-compile-hints.d.ts +30 -0
  126. package/dist/plugins/client-compile-hints.js +88 -0
  127. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  128. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  129. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  130. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  131. package/dist/plugins/environment.d.ts +2 -1
  132. package/dist/plugins/fonts.js +9 -12
  133. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  134. package/dist/plugins/import-meta-url.d.ts +2 -1
  135. package/dist/plugins/og-assets.d.ts +2 -1
  136. package/dist/plugins/og-assets.js +2 -3
  137. package/dist/plugins/optimize-imports.d.ts +27 -3
  138. package/dist/plugins/optimize-imports.js +106 -20
  139. package/dist/plugins/pages-node-externals.d.ts +2 -1
  140. package/dist/plugins/remove-console.d.ts +2 -1
  141. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  142. package/dist/plugins/rsc-client-reference-loaders.d.ts +53 -1
  143. package/dist/plugins/rsc-client-reference-loaders.js +447 -27
  144. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  145. package/dist/plugins/sass.d.ts +2 -1
  146. package/dist/plugins/strip-server-exports.d.ts +2 -1
  147. package/dist/plugins/styled-jsx.d.ts +2 -1
  148. package/dist/plugins/transform-result.d.ts +2 -1
  149. package/dist/plugins/typeof-window.d.ts +2 -1
  150. package/dist/plugins/use-cache-callable.d.ts +5 -0
  151. package/dist/plugins/use-cache-callable.js +30 -8
  152. package/dist/plugins/worker-image-imports.d.ts +1 -0
  153. package/dist/plugins/worker-image-imports.js +2 -2
  154. package/dist/plugins/worker-use-server.d.ts +2 -1
  155. package/dist/routing/app-route-graph.d.ts +41 -1
  156. package/dist/routing/app-route-graph.js +122 -50
  157. package/dist/routing/browser-route-manifest.d.ts +44 -0
  158. package/dist/routing/browser-route-manifest.js +195 -0
  159. package/dist/routing/hashed-route-patterns.d.ts +4 -0
  160. package/dist/routing/hashed-route-patterns.js +22 -0
  161. package/dist/routing/optimistic-route-trie.d.ts +28 -0
  162. package/dist/routing/optimistic-route-trie.js +102 -0
  163. package/dist/routing/route-matching.d.ts +2 -1
  164. package/dist/routing/route-pattern.d.ts +2 -1
  165. package/dist/routing/route-validation.d.ts +6 -1
  166. package/dist/routing/route-validation.js +26 -10
  167. package/dist/server/accept-encoding.d.ts +2 -1
  168. package/dist/server/app-action-forwarding.d.ts +10 -1
  169. package/dist/server/app-action-forwarding.js +15 -1
  170. package/dist/server/app-bfcache-identity.d.ts +2 -1
  171. package/dist/server/app-browser-action-result.d.ts +2 -1
  172. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
  173. package/dist/server/app-browser-entry.js +175 -64
  174. package/dist/server/app-browser-error.d.ts +5 -2
  175. package/dist/server/app-browser-error.js +7 -2
  176. package/dist/server/app-browser-history-controller.d.ts +2 -1
  177. package/dist/server/app-browser-hydration.d.ts +2 -1
  178. package/dist/server/app-browser-interception-context.d.ts +4 -3
  179. package/dist/server/app-browser-mpa-navigation.d.ts +1 -0
  180. package/dist/server/app-browser-mpa-navigation.js +6 -5
  181. package/dist/server/app-browser-navigation-controller.d.ts +17 -6
  182. package/dist/server/app-browser-navigation-controller.js +103 -36
  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-server-action-client.d.ts +2 -1
  186. package/dist/server/app-browser-state.d.ts +2 -2
  187. package/dist/server/app-browser-state.js +1 -1
  188. package/dist/server/app-browser-stream.d.ts +2 -1
  189. package/dist/server/app-browser-visible-commit.d.ts +6 -5
  190. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  191. package/dist/server/app-client-reference-manifest.js +46 -0
  192. package/dist/server/app-client-reference-preloader.d.ts +45 -2
  193. package/dist/server/app-client-reference-preloader.js +48 -10
  194. package/dist/server/app-elements-wire.d.ts +2 -1
  195. package/dist/server/app-elements.d.ts +2 -0
  196. package/dist/server/app-elements.js +3 -1
  197. package/dist/server/app-fallback-renderer.d.ts +9 -2
  198. package/dist/server/app-fallback-renderer.js +6 -2
  199. package/dist/server/app-history-state.d.ts +2 -1
  200. package/dist/server/app-inline-css-client.d.ts +2 -1
  201. package/dist/server/app-layout-param-observation.d.ts +2 -1
  202. package/dist/server/app-metadata-tracing.d.ts +2 -1
  203. package/dist/server/app-middleware.d.ts +6 -0
  204. package/dist/server/app-middleware.js +8 -10
  205. package/dist/server/app-optimistic-routing.d.ts +26 -11
  206. package/dist/server/app-optimistic-routing.js +38 -96
  207. package/dist/server/app-page-boundary-render.d.ts +20 -2
  208. package/dist/server/app-page-boundary-render.js +229 -39
  209. package/dist/server/app-page-boundary.d.ts +34 -5
  210. package/dist/server/app-page-boundary.js +40 -7
  211. package/dist/server/app-page-cache-finalizer.d.ts +2 -1
  212. package/dist/server/app-page-cache-finalizer.js +1 -1
  213. package/dist/server/app-page-cache-render.d.ts +10 -2
  214. package/dist/server/app-page-cache-render.js +15 -2
  215. package/dist/server/app-page-cache.js +2 -2
  216. package/dist/server/app-page-dispatch.d.ts +34 -1
  217. package/dist/server/app-page-dispatch.js +165 -34
  218. package/dist/server/app-page-element-builder.d.ts +17 -1
  219. package/dist/server/app-page-element-builder.js +187 -66
  220. package/dist/server/app-page-execution.d.ts +28 -1
  221. package/dist/server/app-page-execution.js +114 -5
  222. package/dist/server/app-page-head.d.ts +95 -3
  223. package/dist/server/app-page-head.js +307 -152
  224. package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
  225. package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
  226. package/dist/server/app-page-method.d.ts +2 -1
  227. package/dist/server/app-page-probe.d.ts +2 -1
  228. package/dist/server/app-page-render-identity.d.ts +2 -1
  229. package/dist/server/app-page-render.d.ts +7 -1
  230. package/dist/server/app-page-render.js +38 -11
  231. package/dist/server/app-page-request.d.ts +14 -1
  232. package/dist/server/app-page-request.js +1 -1
  233. package/dist/server/app-page-route-wiring.d.ts +52 -2
  234. package/dist/server/app-page-route-wiring.js +197 -47
  235. package/dist/server/app-page-rsc-render-status.d.ts +3 -1
  236. package/dist/server/app-page-rsc-render-status.js +1 -0
  237. package/dist/server/app-page-search-params-observation.d.ts +8 -6
  238. package/dist/server/app-page-search-params-observation.js +16 -11
  239. package/dist/server/app-page-segment-plan.d.ts +2 -1
  240. package/dist/server/app-page-stream.d.ts +38 -1
  241. package/dist/server/app-page-stream.js +24 -4
  242. package/dist/server/app-pages-bridge.d.ts +4 -2
  243. package/dist/server/app-pages-bridge.js +11 -7
  244. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  245. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  246. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  247. package/dist/server/app-prerender-static-params.d.ts +2 -1
  248. package/dist/server/app-prerender-static-params.js +3 -2
  249. package/dist/server/app-render-dependency.d.ts +11 -1
  250. package/dist/server/app-render-dependency.js +65 -6
  251. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  252. package/dist/server/app-request-stage-independent-entry.js +2 -2
  253. package/dist/server/app-response-stage-entry.d.ts +2 -1
  254. package/dist/server/app-response-stage-entry.js +3 -3
  255. package/dist/server/app-route-handler-cache.d.ts +2 -1
  256. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  257. package/dist/server/app-route-handler-dispatch.js +4 -2
  258. package/dist/server/app-route-handler-execution.d.ts +4 -1
  259. package/dist/server/app-route-handler-execution.js +9 -2
  260. package/dist/server/app-route-handler-middleware-context.d.ts +2 -1
  261. package/dist/server/app-route-handler-middleware-context.js +3 -3
  262. package/dist/server/app-route-handler-response.d.ts +4 -2
  263. package/dist/server/app-route-handler-response.js +2 -2
  264. package/dist/server/app-route-handler-runtime.d.ts +4 -1
  265. package/dist/server/app-route-handler-runtime.js +20 -3
  266. package/dist/server/app-route-module-loader.d.ts +18 -1
  267. package/dist/server/app-route-module-loader.js +15 -6
  268. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  269. package/dist/server/app-route-tree.d.ts +20 -0
  270. package/dist/server/app-route-tree.js +18 -0
  271. package/dist/server/app-router-entry.js +2 -2
  272. package/dist/server/app-rsc-combined-handler.js +8 -1
  273. package/dist/server/app-rsc-error-handler.d.ts +2 -1
  274. package/dist/server/app-rsc-errors.d.ts +9 -1
  275. package/dist/server/app-rsc-errors.js +9 -2
  276. package/dist/server/app-rsc-handler.d.ts +6 -2
  277. package/dist/server/app-rsc-handler.js +152 -140
  278. package/dist/server/app-rsc-response-finalizer.d.ts +7 -1
  279. package/dist/server/app-rsc-response-finalizer.js +4 -1
  280. package/dist/server/app-rsc-response-stage.js +3 -1
  281. package/dist/server/app-rsc-route-matching.d.ts +39 -1
  282. package/dist/server/app-rsc-route-matching.js +25 -1
  283. package/dist/server/app-segment-config.d.ts +2 -1
  284. package/dist/server/app-segment-config.js +1 -14
  285. package/dist/server/app-server-action-execution.d.ts +25 -7
  286. package/dist/server/app-server-action-execution.js +53 -59
  287. package/dist/server/app-ssr-entry.d.ts +12 -0
  288. package/dist/server/app-ssr-entry.js +104 -48
  289. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  290. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  291. package/dist/server/app-ssr-stream.d.ts +29 -10
  292. package/dist/server/app-ssr-stream.js +311 -67
  293. package/dist/server/app-static-generation.d.ts +2 -1
  294. package/dist/server/app-streamed-client-references.d.ts +39 -0
  295. package/dist/server/app-streamed-client-references.js +156 -0
  296. package/dist/server/app-visited-response-cache.d.ts +2 -1
  297. package/dist/server/app-worker-stages.d.ts +2 -1
  298. package/dist/server/artifact-compatibility.d.ts +2 -1
  299. package/dist/server/bfcache-identity.d.ts +2 -1
  300. package/dist/server/cache-headers.d.ts +2 -1
  301. package/dist/server/cacheability-request.d.ts +2 -1
  302. package/dist/server/client-reuse-manifest.d.ts +2 -1
  303. package/dist/server/config-headers.d.ts +2 -1
  304. package/dist/server/config-headers.js +12 -3
  305. package/dist/server/csp.d.ts +2 -1
  306. package/dist/server/default-global-not-found-module.d.ts +2 -1
  307. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  308. package/dist/server/default-http-access-fallback-modules.js +31 -0
  309. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  310. package/dist/server/defer-until-stream-consumed.js +154 -21
  311. package/dist/server/dev-lockfile.d.ts +32 -2
  312. package/dist/server/dev-lockfile.js +46 -2
  313. package/dist/server/dev-module-runner.d.ts +2 -1
  314. package/dist/server/dev-server.js +10 -3
  315. package/dist/server/fetch-handler.js +1 -2
  316. package/dist/server/file-based-metadata.d.ts +2 -1
  317. package/dist/server/framework-tracer.d.ts +2 -1
  318. package/dist/server/html.d.ts +1 -0
  319. package/dist/server/html.js +19 -1
  320. package/dist/server/http-conditional.d.ts +2 -1
  321. package/dist/server/http-error-responses.d.ts +2 -1
  322. package/dist/server/implicit-tags.d.ts +2 -1
  323. package/dist/server/isolate-shared-promise.d.ts +10 -0
  324. package/dist/server/isolate-shared-promise.js +33 -0
  325. package/dist/server/isr-cache.js +3 -2
  326. package/dist/server/metadata-route-build-data.d.ts +2 -1
  327. package/dist/server/metadata-route-build-data.js +1 -1
  328. package/dist/server/metadata-route-response.d.ts +2 -1
  329. package/dist/server/metadata-route-response.js +1 -1
  330. package/dist/server/metadata-routes.d.ts +2 -1
  331. package/dist/server/middleware-matcher-pattern.d.ts +0 -1
  332. package/dist/server/middleware-matcher-pattern.js +11 -140
  333. package/dist/server/middleware-matcher.js +5 -6
  334. package/dist/server/middleware-response-headers.d.ts +31 -0
  335. package/dist/server/middleware-response-headers.js +57 -1
  336. package/dist/server/middleware-runtime.d.ts +2 -1
  337. package/dist/server/middleware-runtime.js +26 -13
  338. package/dist/server/navigation-planner.d.ts +2 -2
  339. package/dist/server/navigation-trace.d.ts +2 -1
  340. package/dist/server/next-error-digest.d.ts +2 -1
  341. package/dist/server/nitro-public-files-plugin.d.ts +39 -0
  342. package/dist/server/nitro-public-files-plugin.js +106 -0
  343. package/dist/server/nitro-public-files.d.ts +22 -0
  344. package/dist/server/nitro-public-files.js +39 -0
  345. package/dist/server/opentelemetry-api.d.ts +2 -1
  346. package/dist/server/operation-token.d.ts +2 -1
  347. package/dist/server/pages-api-route.d.ts +2 -1
  348. package/dist/server/pages-asset-tags.d.ts +7 -1
  349. package/dist/server/pages-asset-tags.js +9 -2
  350. package/dist/server/pages-body-parser-config.d.ts +2 -1
  351. package/dist/server/pages-client-assets.d.ts +8 -1
  352. package/dist/server/pages-data-route.d.ts +2 -1
  353. package/dist/server/pages-document-asset-props.d.ts +2 -1
  354. package/dist/server/pages-document-initial-props.d.ts +2 -1
  355. package/dist/server/pages-execution-tracing.d.ts +2 -1
  356. package/dist/server/pages-execution-tracing.js +1 -1
  357. package/dist/server/pages-get-initial-props.d.ts +2 -1
  358. package/dist/server/pages-i18n.d.ts +18 -0
  359. package/dist/server/pages-i18n.js +18 -2
  360. package/dist/server/pages-node-compat.d.ts +5 -3
  361. package/dist/server/pages-node-compat.js +35 -16
  362. package/dist/server/pages-page-data.d.ts +7 -1
  363. package/dist/server/pages-page-data.js +35 -12
  364. package/dist/server/pages-page-handler.d.ts +3 -2
  365. package/dist/server/pages-page-handler.js +16 -7
  366. package/dist/server/pages-page-method.d.ts +2 -1
  367. package/dist/server/pages-page-response.d.ts +2 -1
  368. package/dist/server/pages-preview.d.ts +2 -1
  369. package/dist/server/pages-readiness.d.ts +2 -1
  370. package/dist/server/pages-request-pipeline.d.ts +8 -2
  371. package/dist/server/pages-request-pipeline.js +35 -40
  372. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  373. package/dist/server/pages-request-stage-entry.js +16 -6
  374. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  375. package/dist/server/pages-response-stage-entry.js +1 -1
  376. package/dist/server/pages-revalidate.js +1 -0
  377. package/dist/server/pages-route-data-kind.d.ts +2 -1
  378. package/dist/server/pages-router-entry.js +1 -1
  379. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  380. package/dist/server/prerender-route-params.d.ts +2 -1
  381. package/dist/server/prod-server.d.ts +2 -2
  382. package/dist/server/prod-server.js +80 -36
  383. package/dist/server/proxy-trust.d.ts +6 -0
  384. package/dist/server/proxy-trust.js +12 -6
  385. package/dist/server/request-log.d.ts +2 -1
  386. package/dist/server/request-pipeline.d.ts +5 -0
  387. package/dist/server/request-pipeline.js +12 -1
  388. package/dist/server/request-tracing.d.ts +2 -1
  389. package/dist/server/request-tracing.js +1 -1
  390. package/dist/server/response-start-tracing.js +7 -29
  391. package/dist/server/rsc-render-stream.d.ts +4 -0
  392. package/dist/server/rsc-render-stream.js +25 -0
  393. package/dist/server/seed-cache.d.ts +2 -1
  394. package/dist/server/seed-cache.js +1 -1
  395. package/dist/server/server-reference-loader.js +10 -1
  396. package/dist/server/static-file-cache.d.ts +2 -1
  397. package/dist/server/static-file-cache.js +16 -3
  398. package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
  399. package/dist/server/worker-revalidation-context.d.ts +2 -1
  400. package/dist/server/worker-stages.d.ts +2 -1
  401. package/dist/server/worker-utils.js +1 -1
  402. package/dist/shims/app.d.ts +2 -1
  403. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  404. package/dist/shims/cache-handler.d.ts +8 -3
  405. package/dist/shims/cache-handler.js +32 -11
  406. package/dist/shims/cache-request-state.d.ts +40 -3
  407. package/dist/shims/cache-request-state.js +70 -5
  408. package/dist/shims/cache-runtime.js +47 -19
  409. package/dist/shims/cache.d.ts +2 -2
  410. package/dist/shims/cache.js +17 -8
  411. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  412. package/dist/shims/caught-not-found-boundaries.js +48 -0
  413. package/dist/shims/cdn-purge-routes.d.ts +25 -0
  414. package/dist/shims/cdn-purge-routes.js +77 -0
  415. package/dist/shims/client-locale.js +2 -1
  416. package/dist/shims/client-page-root.d.ts +2 -1
  417. package/dist/shims/config.d.ts +2 -1
  418. package/dist/shims/default-forbidden.d.ts +4 -0
  419. package/dist/shims/default-forbidden.js +18 -0
  420. package/dist/shims/default-not-found.d.ts +0 -5
  421. package/dist/shims/default-not-found.js +5 -41
  422. package/dist/shims/default-unauthorized.d.ts +4 -0
  423. package/dist/shims/default-unauthorized.js +18 -0
  424. package/dist/shims/dynamic.js +17 -4
  425. package/dist/shims/error-boundary.d.ts +39 -3
  426. package/dist/shims/error-boundary.js +31 -16
  427. package/dist/shims/font-google.js +1 -2
  428. package/dist/shims/font-utils.d.ts +3 -2
  429. package/dist/shims/font-utils.js +5 -3
  430. package/dist/shims/form.js +9 -4
  431. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  432. package/dist/shims/http-access-error-fallback.js +47 -0
  433. package/dist/shims/image-props.d.ts +93 -0
  434. package/dist/shims/image-props.js +323 -0
  435. package/dist/shims/image.d.ts +4 -39
  436. package/dist/shims/image.js +4 -319
  437. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  438. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  439. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  440. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  441. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  442. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  443. package/dist/shims/internal/client-reference-loader.js +91 -0
  444. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  445. package/dist/shims/internal/cookies.js +1 -2
  446. package/dist/shims/internal/headers-state.d.ts +9 -0
  447. package/dist/shims/internal/headers-state.js +19 -2
  448. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -2
  449. package/dist/shims/internal/hybrid-client-route-owner-direct.js +31 -14
  450. package/dist/shims/internal/hybrid-client-route-owner.js +8 -8
  451. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  452. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  453. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  454. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  455. package/dist/shims/link.js +198 -53
  456. package/dist/shims/metadata.d.ts +32 -11
  457. package/dist/shims/metadata.js +88 -26
  458. package/dist/shims/navigation-errors.d.ts +2 -1
  459. package/dist/shims/navigation.d.ts +23 -3
  460. package/dist/shims/navigation.js +91 -25
  461. package/dist/shims/og.js +35 -10
  462. package/dist/shims/pages-router-runtime.d.ts +2 -1
  463. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  464. package/dist/shims/request-context.d.ts +13 -0
  465. package/dist/shims/router.js +33 -43
  466. package/dist/shims/server.d.ts +31 -4
  467. package/dist/shims/server.js +58 -10
  468. package/dist/shims/thenable-params.d.ts +6 -1
  469. package/dist/shims/thenable-params.js +11 -2
  470. package/dist/shims/unified-request-context.d.ts +5 -0
  471. package/dist/shims/unified-request-context.js +5 -3
  472. package/dist/typegen.d.ts +2 -1
  473. package/dist/utils/asset-prefix.d.ts +7 -0
  474. package/dist/utils/asset-prefix.js +10 -1
  475. package/dist/utils/client-build-manifest.d.ts +4 -1
  476. package/dist/utils/client-build-manifest.js +20 -6
  477. package/dist/utils/client-entry-manifest.d.ts +13 -0
  478. package/dist/utils/client-entry-manifest.js +20 -1
  479. package/dist/utils/client-reference-chunks.d.ts +45 -0
  480. package/dist/utils/client-reference-chunks.js +30 -0
  481. package/dist/utils/client-runtime-metadata.d.ts +10 -1
  482. package/dist/utils/client-runtime-metadata.js +53 -9
  483. package/dist/utils/compare.d.ts +9 -0
  484. package/dist/utils/compare.js +15 -1
  485. package/dist/utils/lazy-chunks.d.ts +18 -0
  486. package/dist/utils/lazy-chunks.js +27 -1
  487. package/dist/utils/manifest-paths.d.ts +14 -0
  488. package/dist/utils/manifest-paths.js +22 -1
  489. package/dist/utils/middleware-request-headers.d.ts +2 -1
  490. package/dist/utils/path-to-regexp.d.ts +21 -0
  491. package/dist/{server/middleware-path-to-regexp.js → utils/path-to-regexp.js} +14 -11
  492. package/dist/utils/plugin-react-version.d.ts +15 -0
  493. package/dist/utils/plugin-react-version.js +64 -0
  494. package/dist/utils/project.d.ts +2 -1
  495. package/dist/utils/project.js +9 -1
  496. package/dist/utils/public-routes.d.ts +2 -0
  497. package/dist/utils/public-routes.js +18 -7
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/sorted-array.d.ts +2 -1
  500. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  501. package/package.json +5 -5
  502. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  503. package/dist/server/default-not-found-module.d.ts +0 -19
  504. package/dist/server/default-not-found-module.js +0 -18
  505. package/dist/server/middleware-path-to-regexp.d.ts +0 -13
  506. package/dist/server/rsc-stream-hints.d.ts +0 -21
  507. package/dist/server/rsc-stream-hints.js +0 -227
  508. package/dist/utils/regex-safety.d.ts +0 -17
  509. package/dist/utils/regex-safety.js +0 -789
@@ -11,14 +11,14 @@ import { formatUrlObject, formatUrlObjectWithValidation } from "./internal/forma
11
11
  import { normalizeRouterHref, resolvePagesRouterHref } from "./internal/normalize-router-href.js";
12
12
  import { getCurrentRoutePathnameForWarning } from "./internal/route-pattern-for-warning.js";
13
13
  import { getCurrentBrowserLocale } from "./client-locale.js";
14
- import { getNavigationRuntime, hasAppNavigationRuntime, registerNavigationRuntimeFunctions } from "../client/navigation-runtime.js";
14
+ import { NAVIGATION_RUNTIME_KEY, getNavigationRuntime, isNavigationRuntimeFunctions, loadNavigationRuntimeRouteManifest, registerNavigationRuntimeFunctions } from "../client/navigation-runtime.js";
15
15
  import { navigatePagesRouterLinkWithFallback, resolvePagesRouterQueryOnlyHref } from "../client/pages-router-link-navigation.js";
16
- import { scheduleAppPrefetchFetch } from "./internal/app-prefetch-fetch-queue.js";
16
+ import { cancelQueuedAppPrefetchFetch, getAppPrefetchFetchClaimSequence, isAppPrefetchFetchClaimed, scheduleAppPrefetchFetch } from "./internal/app-prefetch-fetch-queue.js";
17
17
  import { getI18nContext } from "./i18n-context.js";
18
18
  import { canLinkIntentPrefetch, canLinkPrefetch, getLinkPrefetchHref } from "./link-prefetch.js";
19
19
  import { canAutoPrefetchFullAppRoute, resolveAutoAppRoutePrefetch, resolveFullAppRoutePrefetch } from "./internal/app-route-prefetch-policy.js";
20
20
  import { clearLinkForCurrentNavigation, notifyLinkNavigationStart, setLinkForCurrentNavigation } from "./internal/link-status-registry.js";
21
- import React, { createContext, forwardRef, useCallback, useContext, useEffect, useRef, useState } from "react";
21
+ import React, { createContext, forwardRef, useCallback, useContext, useEffect, useLayoutEffect, useRef, useState } from "react";
22
22
  import { jsx } from "react/jsx-runtime";
23
23
  //#region src/shims/link.tsx
24
24
  /**
@@ -29,6 +29,7 @@ import { jsx } from "react/jsx-runtime";
29
29
  * page swap via the router's navigation system.
30
30
  */
31
31
  const HAS_PAGES_ROUTER = process.env.__VINEXT_HAS_PAGES_ROUTER !== "false";
32
+ const isServer = typeof window === "undefined";
32
33
  const HAS_CLIENT_REWRITES = process.env.__VINEXT_HAS_CLIENT_REWRITES !== "false";
33
34
  let loadedNavigationModule = null;
34
35
  let navigationModulePromise = null;
@@ -46,6 +47,20 @@ function loadHybridClientRouteOwnerModule() {
46
47
  return module;
47
48
  });
48
49
  }
50
+ let appRscCacheBustingModulePromise = null;
51
+ let appPrefetchModulesPromise = null;
52
+ function loadAppRscCacheBustingModule() {
53
+ return appRscCacheBustingModulePromise ??= import("../server/app-rsc-cache-busting.js");
54
+ }
55
+ function loadAppPrefetchModules() {
56
+ return appPrefetchModulesPromise ??= Promise.all([
57
+ import("../server/app-elements.js"),
58
+ loadAppRscCacheBustingModule(),
59
+ import("./internal/app-prefetch-rsc-request.js"),
60
+ import("../server/app-rsc-render-mode.js"),
61
+ import("../server/headers.js")
62
+ ]);
63
+ }
49
64
  const LinkStatusContext = createContext({ pending: false });
50
65
  /**
51
66
  * useLinkStatus returns the pending state of the enclosing <Link>.
@@ -70,11 +85,11 @@ function resolveHref(href, validate = false) {
70
85
  if (typeof href === "string") return href;
71
86
  return validate ? formatUrlObjectWithValidation(href) : formatUrlObject(href);
72
87
  }
73
- function resolvePagesLinkValue(value, pagesRouter, routePathnameForWarning) {
88
+ function resolvePagesLinkValue(value, pagesRouter) {
74
89
  const formatted = resolveHref(value, pagesRouter !== null);
75
90
  if (pagesRouter === null) return formatted;
76
91
  if (typeof pagesRouter.pathname === "string" && typeof pagesRouter.asPath === "string" && !formatted.startsWith("?") && !formatted.startsWith("#")) return resolvePagesRouterHref(formatted, pagesRouter, __basePath);
77
- return normalizeRouterHref(formatted, routePathnameForWarning);
92
+ return normalizeRouterHref(formatted, getCurrentRoutePathnameForWarning());
78
93
  }
79
94
  function resolvePagesQueryOnlyHref(href) {
80
95
  if (!HAS_PAGES_ROUTER) return href;
@@ -101,8 +116,35 @@ function resolveLinkPrefetchMode(prefetchProp, isDangerous) {
101
116
  if (prefetchProp === true) return "full";
102
117
  return "auto";
103
118
  }
119
+ let validatedNavigationRuntime = null;
120
+ let validatedNavigationRuntimeBootstrap = null;
121
+ let validatedNavigationRuntimeFunctions = null;
122
+ /**
123
+ * `hasAppNavigationRuntime()` for Link, which asks on every render and every
124
+ * prefetch. Full validation walks the whole navigation runtime, including every
125
+ * inline RSC chunk still held by the bootstrap, so skip it while window still
126
+ * holds the runtime that last passed it with the same bootstrap and function
127
+ * table objects. Registering either replaces that object, and a replaced
128
+ * runtime, bootstrap or table falls through to full validation. A table edited
129
+ * in place keeps its identity, so the function table is still checked on every
130
+ * call (it is cheap); chunks streamed into the held bootstrap are not
131
+ * revalidated.
132
+ */
133
+ function hasLinkAppNavigationRuntime() {
134
+ if (typeof window === "undefined") return false;
135
+ const runtime = validatedNavigationRuntime;
136
+ if (runtime !== null && Reflect.get(window, NAVIGATION_RUNTIME_KEY) === runtime && runtime.bootstrap === validatedNavigationRuntimeBootstrap && runtime.functions === validatedNavigationRuntimeFunctions) {
137
+ const functions = runtime.functions;
138
+ return isNavigationRuntimeFunctions(functions) && typeof functions.navigate === "function";
139
+ }
140
+ const validated = getNavigationRuntime();
141
+ validatedNavigationRuntime = validated;
142
+ validatedNavigationRuntimeBootstrap = validated?.bootstrap ?? null;
143
+ validatedNavigationRuntimeFunctions = validated?.functions ?? null;
144
+ return typeof validated?.functions.navigate === "function";
145
+ }
104
146
  function getLinkPrefetchRouterMode() {
105
- return hasAppNavigationRuntime() ? "app" : "pages";
147
+ return hasLinkAppNavigationRuntime() ? "app" : "pages";
106
148
  }
107
149
  /**
108
150
  * Prefetch a URL for faster navigation.
@@ -115,8 +157,11 @@ function getLinkPrefetchRouterMode() {
115
157
  * App Router and high-priority prefetches start immediately. Low-priority
116
158
  * Pages Router fallback prefetches use `requestIdleCallback` (or `setTimeout`
117
159
  * fallback) to avoid blocking the main thread during initial page load.
160
+ *
161
+ * `owner` is the visible Link behind a viewport prefetch; see
162
+ * `OwnedLinkPrefetch`.
118
163
  */
119
- function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
164
+ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale, owner) {
120
165
  if (typeof window === "undefined") return;
121
166
  const navigationEpoch = linkPrefetchNavigationEpoch;
122
167
  const prefetchHref = getLinkPrefetchHref({
@@ -137,19 +182,17 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
137
182
  if (mode === "auto" && priority === "low" && target.origin === window.location.origin && target.pathname === window.location.pathname && target.search !== window.location.search && target.hash !== "") return;
138
183
  const runPrefetch = () => {
139
184
  (async () => {
140
- if (hasAppNavigationRuntime()) {
185
+ if (hasLinkAppNavigationRuntime()) {
141
186
  if (isBotUserAgent(window.navigator?.userAgent ?? "")) return;
142
- const [navigation, { AppElementsWire }, rscCacheBusting, { resolveAppPrefetchRscRequest }, { APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL, APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL }, headersModule, hybridRouteOwner] = await Promise.all([
187
+ const [navigation, [{ AppElementsWire }, rscCacheBusting, { resolveAppPrefetchRscRequest }, { APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL, APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL }, headersModule], hybridRouteOwner, routeManifestLoaded] = await Promise.all([
143
188
  loadNavigationModule(),
144
- import("../server/app-elements.js"),
145
- import("../server/app-rsc-cache-busting.js"),
146
- import("./internal/app-prefetch-rsc-request.js"),
147
- import("../server/app-rsc-render-mode.js"),
148
- import("../server/headers.js"),
149
- HAS_PAGES_ROUTER || HAS_CLIENT_REWRITES ? loadHybridClientRouteOwnerModule() : null
189
+ loadAppPrefetchModules(),
190
+ HAS_PAGES_ROUTER || HAS_CLIENT_REWRITES ? loadHybridClientRouteOwnerModule() : null,
191
+ loadNavigationRuntimeRouteManifest()
150
192
  ]);
193
+ if (routeManifestLoaded === false) return;
151
194
  if (navigationEpoch !== linkPrefetchNavigationEpoch) return;
152
- const { getPrefetchInterceptionContext, getPrefetchCache, getPrefetchedUrls, getMountedSlotsHeader, createAppPrefetchRequestHeaders, discardLearningOnlyPrefetchCacheEntry, fetchRouteTreeGatedPrefetch, hasFreshLearningOnlyPrefetchCacheEntry, hasSearchAgnosticPrefetchShellForRoute, hasPrefetchCacheEntryForNavigation, prefetchRscResponse, prepareNavigationPrefetchSnapshot, DYNAMIC_NAVIGATION_CACHE_TTL, PREFETCH_CACHE_TTL } = navigation;
195
+ const { getPrefetchInterceptionContext, getPrefetchCache, getPrefetchedUrls, getMountedSlotsHeader, createAppPrefetchRequestHeaders, discardLearningOnlyPrefetchCacheEntry, fetchRouteTreeGatedPrefetch, hasFreshLearningOnlyPrefetchCacheEntry, hasSearchAgnosticPrefetchShellForRoute, hasPrefetchCacheEntryForNavigation, prefetchRscResponse, prepareNavigationPrefetchSnapshot, promotePrefetchCacheEntryForNavigation, DYNAMIC_NAVIGATION_CACHE_TTL, PREFETCH_CACHE_TTL } = navigation;
153
196
  const { createRscRequestUrl } = rscCacheBusting;
154
197
  const { NEXT_ROUTER_PREFETCH_HEADER, NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, VINEXT_MOUNTED_SLOTS_HEADER } = headersModule;
155
198
  const hybridOwner = HAS_PAGES_ROUTER ? hybridRouteOwner.resolveHybridClientRouteOwner(prefetchHref, __basePath) : null;
@@ -158,16 +201,16 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
158
201
  const prefetchPolicyHref = rewrittenPrefetchHref ?? prefetchHref;
159
202
  const interceptionContext = getPrefetchInterceptionContext(fullHref);
160
203
  const mountedSlotsHeader = getMountedSlotsHeader();
161
- const autoPrefetch = mode === "auto" ? resolveAutoAppRoutePrefetch(prefetchPolicyHref) : resolveFullAppRoutePrefetch();
204
+ const autoPrefetch = mode === "auto" ? resolveAutoAppRoutePrefetch(prefetchPolicyHref, interceptionContext) : resolveFullAppRoutePrefetch();
162
205
  if (!autoPrefetch.shouldPrefetch) return;
163
206
  const isOptimisticRouteShellPrefetch = !autoPrefetch.cacheForNavigation;
164
207
  const hasSearchParams = new URL(fullHref, window.location.href).search !== "";
165
208
  const isAutomaticSearchParamShell = mode === "auto" && isOptimisticRouteShellPrefetch && hasSearchParams;
166
- const hasSearchAgnosticShell = isAutomaticSearchParamShell && hasSearchAgnosticPrefetchShellForRoute(await createRscRequestUrl(fullHref, new Headers()), interceptionContext, mountedSlotsHeader);
209
+ const hasSearchAgnosticShell = isAutomaticSearchParamShell && (autoPrefetch.rendersDynamically === true || hasSearchAgnosticPrefetchShellForRoute(await createRscRequestUrl(fullHref, new Headers()), interceptionContext, mountedSlotsHeader));
167
210
  const headers = createAppPrefetchRequestHeaders({
168
211
  interceptionContext,
169
212
  fetchPriority: priority,
170
- prefetchKind: mode === "full" ? "full" : "auto",
213
+ prefetchKind: mode === "full" || mode === "full-after-shell" ? "full" : "auto",
171
214
  renderMode: isOptimisticRouteShellPrefetch ? hasSearchAgnosticShell ? APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL : isAutomaticSearchParamShell ? APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL : APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL : void 0
172
215
  });
173
216
  if (mountedSlotsHeader) headers.set(VINEXT_MOUNTED_SLOTS_HEADER, mountedSlotsHeader);
@@ -188,9 +231,13 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
188
231
  if (navigationEpoch !== linkPrefetchNavigationEpoch) return;
189
232
  const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
190
233
  const prefetched = getPrefetchedUrls();
191
- if (autoPrefetch.cacheForNavigation) discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext);
192
- if (!autoPrefetch.cacheForNavigation && hasFreshLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext)) return;
193
- const fetchFullRscPayload = () => scheduleAppPrefetchFetch((signal) => fetch(rscUrl, {
234
+ if (autoPrefetch.dynamicStaleTime !== "full-prefetch" && hasFreshLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext)) {
235
+ joinOwnedLinkPrefetch(getPrefetchCache().get(cacheKey)?.fetchPromise, owner);
236
+ return;
237
+ }
238
+ if (autoPrefetch.cacheForNavigation) discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext, mountedSlotsHeader);
239
+ const owned = createOwnedLinkPrefetch(owner);
240
+ const fetchFullRscPayload = () => scheduleOwnedLinkPrefetch(owned, (signal) => fetch(rscUrl, {
194
241
  headers,
195
242
  credentials: "include",
196
243
  priority,
@@ -206,25 +253,30 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
206
253
  shellHeaders.set(NEXT_ROUTER_PREFETCH_HEADER, "1");
207
254
  shellHeaders.set(NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, "1");
208
255
  if (mountedSlotsHeader) shellHeaders.set(VINEXT_MOUNTED_SLOTS_HEADER, mountedSlotsHeader);
256
+ const ownerLeaveCount = owner?.leaveCount;
209
257
  const shellRscUrl = await createRscRequestUrl(fullHref, shellHeaders);
258
+ if (owner && owner.leaveCount !== ownerLeaveCount) return;
210
259
  const shellCacheKey = AppElementsWire.encodeCacheKey(shellRscUrl, interceptionContext);
211
260
  const shellCache = getPrefetchCache();
212
261
  let shellEntry = shellCache.get(shellCacheKey);
213
262
  if (shellEntry === void 0) {
214
263
  getPrefetchedUrls().add(shellCacheKey);
215
- prefetchRscResponse(shellRscUrl, scheduleAppPrefetchFetch((signal) => fetch(shellRscUrl, {
264
+ const shellOwned = createOwnedLinkPrefetch(owner);
265
+ const shellFetchPromise = scheduleOwnedLinkPrefetch(shellOwned, (signal) => fetch(shellRscUrl, {
216
266
  headers: shellHeaders,
217
267
  credentials: "include",
218
268
  priority,
219
269
  signal,
220
270
  purpose: "prefetch"
221
- }), priority), interceptionContext, mountedSlotsHeader, void 0, {
271
+ }), priority);
272
+ trackOwnedLinkPrefetch(shellOwned, shellFetchPromise);
273
+ prefetchRscResponse(shellRscUrl, shellFetchPromise, interceptionContext, mountedSlotsHeader, void 0, {
222
274
  cacheForNavigation: false,
223
275
  optimisticRouteShell: true,
224
276
  prefetchKind: "loading-shell"
225
277
  });
226
278
  shellEntry = shellCache.get(shellCacheKey);
227
- }
279
+ } else joinOwnedLinkPrefetch(shellEntry.fetchPromise, owner);
228
280
  await shellEntry?.pending?.catch(() => {});
229
281
  };
230
282
  const fetchAliasCacheHitProbe = async () => {
@@ -236,7 +288,9 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
236
288
  probeHeaders.set(NEXT_ROUTER_PREFETCH_HEADER, "1");
237
289
  probeHeaders.set(NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, "1");
238
290
  if (mountedSlotsHeader) probeHeaders.set(VINEXT_MOUNTED_SLOTS_HEADER, mountedSlotsHeader);
291
+ const ownerLeaveCount = owner?.leaveCount;
239
292
  const probeRscUrl = await createRscRequestUrl(fullHref, probeHeaders);
293
+ if (owner && owner.leaveCount !== ownerLeaveCount) throw new DOMException("Prefetch is no longer wanted", "AbortError");
240
294
  return fetch(probeRscUrl, {
241
295
  method: "HEAD",
242
296
  headers: probeHeaders,
@@ -245,8 +299,15 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
245
299
  purpose: "prefetch"
246
300
  });
247
301
  };
248
- const hasExactNavigationCacheEntry = autoPrefetch.cacheForNavigation && hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader);
249
- if (hasExactNavigationCacheEntry || autoPrefetch.cacheForNavigation && hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, { additionalRscUrls })) {
302
+ const onReuse = (entry, matchedCacheKey) => {
303
+ joinOwnedLinkPrefetch(entry.fetchPromise, owner);
304
+ if (autoPrefetch.dynamicStaleTime === "full-prefetch") promotePrefetchCacheEntryForNavigation(matchedCacheKey, entry);
305
+ };
306
+ const hasExactNavigationCacheEntry = autoPrefetch.cacheForNavigation && hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, { onReuse });
307
+ if (hasExactNavigationCacheEntry || autoPrefetch.cacheForNavigation && hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, {
308
+ additionalRscUrls,
309
+ onReuse
310
+ })) {
250
311
  if (!hasExactNavigationCacheEntry && !prefetched.has(cacheKey) && additionalRscUrls.length > 0 && autoPrefetch.prefetchShellFirst && mountedSlotsHeader === null) {
251
312
  prefetched.add(cacheKey);
252
313
  fetchAliasCacheHitProbe().then((response) => response.arrayBuffer()).catch(() => {});
@@ -264,7 +325,7 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
264
325
  }
265
326
  return fetchRouteTreeGatedPrefetch({
266
327
  fetchFullRscPayload,
267
- fetchRouteTree: (routeTreeRscUrl, routeTreeHeaders) => scheduleAppPrefetchFetch((signal) => fetch(routeTreeRscUrl, {
328
+ fetchRouteTree: (routeTreeRscUrl, routeTreeHeaders) => scheduleOwnedLinkPrefetch(owned, (signal) => fetch(routeTreeRscUrl, {
268
329
  headers: routeTreeHeaders,
269
330
  credentials: "include",
270
331
  priority,
@@ -277,6 +338,7 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
277
338
  mountedSlotsHeader
278
339
  });
279
340
  })() : fetchFullRscPayload();
341
+ trackOwnedLinkPrefetch(owned, fetchPromise);
280
342
  if (!__prefetchInlining && mode === "full" && autoPrefetch.cacheForNavigation && autoPrefetch.prefetchShellFirst && mountedSlotsHeader === null && !gateViaExplicitSearchShell) fetchLoadingShellForReuse();
281
343
  prefetchRscResponse(rscUrl, fetchPromise, interceptionContext, mountedSlotsHeader, void 0, {
282
344
  cacheForNavigation: autoPrefetch.cacheForNavigation,
@@ -308,7 +370,7 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
308
370
  console.error("[vinext] RSC prefetch setup error:", error);
309
371
  });
310
372
  };
311
- if (priority === "high" || hasAppNavigationRuntime()) {
373
+ if (priority === "high" || hasLinkAppNavigationRuntime()) {
312
374
  runPrefetch();
313
375
  return;
314
376
  }
@@ -316,18 +378,24 @@ function prefetchUrl(href, mode, priority = "low", pagesRouteHref, locale) {
316
378
  }
317
379
  async function promotePrefetchEntriesForNavigation(href) {
318
380
  if (typeof window === "undefined") return;
319
- if (!hasAppNavigationRuntime()) return;
320
- const [{ getPrefetchCache }, { parseRscRequestPath, stripRscCacheBustingSearchParam, stripRscSuffix }] = await Promise.all([loadNavigationModule(), import("../server/app-rsc-cache-busting.js")]);
381
+ if (!hasLinkAppNavigationRuntime()) return;
382
+ const [{ getMountedSlotsHeader, getPrefetchCache, getPrefetchInterceptionContext, promotePrefetchCacheEntryForNavigation }, { parseRscRequestPath, stripRscCacheBustingSearchParam, stripRscSuffix }] = await Promise.all([loadNavigationModule(), loadAppRscCacheBustingModule()]);
321
383
  let target;
384
+ const fullHref = toCanonicalBrowserNavigationHref(href, window.location.href, __basePath, __trailingSlash);
322
385
  try {
323
- target = new URL(toCanonicalBrowserNavigationHref(href, window.location.href, __basePath, __trailingSlash), window.location.href);
386
+ target = new URL(fullHref, window.location.href);
324
387
  } catch {
325
388
  return;
326
389
  }
390
+ const interceptionContext = getPrefetchInterceptionContext(fullHref);
391
+ const mountedSlotsHeader = getMountedSlotsHeader();
327
392
  for (const [cacheKey, entry] of getPrefetchCache()) {
328
393
  if (entry.optimisticRouteShell === true) continue;
329
394
  if (entry.prefetchKind === "route-tree") continue;
330
- const [rscUrl] = cacheKey.split("\0", 1);
395
+ if ((entry.mountedSlotsHeader ?? null) !== mountedSlotsHeader) continue;
396
+ const separatorIndex = cacheKey.indexOf("\0");
397
+ const rscUrl = separatorIndex === -1 ? cacheKey : cacheKey.slice(0, separatorIndex);
398
+ if ((separatorIndex === -1 ? null : cacheKey.slice(separatorIndex + 1)) !== interceptionContext) continue;
331
399
  let cached;
332
400
  try {
333
401
  cached = parseRscRequestPath(rscUrl);
@@ -335,7 +403,7 @@ async function promotePrefetchEntriesForNavigation(href) {
335
403
  continue;
336
404
  }
337
405
  stripRscCacheBustingSearchParam(cached);
338
- if (stripRscSuffix(cached.pathname) === target.pathname && cached.search === target.search) entry.cacheForNavigation = true;
406
+ if (stripRscSuffix(cached.pathname) === target.pathname && cached.search === target.search) promotePrefetchCacheEntryForNavigation(cacheKey, entry);
339
407
  }
340
408
  }
341
409
  /**
@@ -347,6 +415,66 @@ const observedLinkPrefetches = /* @__PURE__ */ new WeakMap();
347
415
  const visibleLinkPrefetches = /* @__PURE__ */ new Set();
348
416
  const visibleAppPrefetchQueue = [];
349
417
  let visibleAppPrefetchDrainScheduled = false;
418
+ const ownedLinkPrefetches = /* @__PURE__ */ new WeakMap();
419
+ function createOwnedLinkPrefetch(owner) {
420
+ if (owner === void 0) return void 0;
421
+ return {
422
+ owners: /* @__PURE__ */ new Set([owner]),
423
+ requests: []
424
+ };
425
+ }
426
+ function hasVisibleOwner(owned) {
427
+ for (const owner of owned.owners) if (owner.isVisible) return true;
428
+ return false;
429
+ }
430
+ function isOwnedLinkPrefetchWanted(owned) {
431
+ if (owned.droppedAt !== void 0) return isAppPrefetchFetchClaimed(owned.claimable, owned.droppedAt);
432
+ return isAppPrefetchFetchClaimed(owned.claimable) || hasVisibleOwner(owned);
433
+ }
434
+ function scheduleOwnedLinkPrefetch(owned, fetcher, priority) {
435
+ if (owned && !isOwnedLinkPrefetchWanted(owned)) return Promise.reject(new DOMException("Prefetch is no longer wanted", "AbortError"));
436
+ const request = scheduleAppPrefetchFetch(fetcher, priority, owned && (() => isOwnedLinkPrefetchWanted(owned)));
437
+ owned?.requests.push(request);
438
+ return request;
439
+ }
440
+ /**
441
+ * Registers the promise cached for `owned`, which reusing Links join. Owners
442
+ * are registered here, not in `createOwnedLinkPrefetch`, since a cache hit
443
+ * returns before sending anything.
444
+ */
445
+ function trackOwnedLinkPrefetch(owned, fetchPromise) {
446
+ if (owned === void 0) return;
447
+ for (const owner of owned.owners) owner.ownedPrefetches.add(owned);
448
+ owned.claimable = fetchPromise;
449
+ ownedLinkPrefetches.set(fetchPromise, owned);
450
+ const settle = (failed) => {
451
+ ownedLinkPrefetches.delete(fetchPromise);
452
+ for (const owner of owned.owners) {
453
+ owner.ownedPrefetches.delete(owned);
454
+ if (failed && owned.droppedAt !== void 0 && owner.isVisible) scheduleVisibleAppPrefetch(owner);
455
+ }
456
+ owned.owners.clear();
457
+ };
458
+ fetchPromise.then(() => settle(false), () => settle(true));
459
+ }
460
+ function joinOwnedLinkPrefetch(fetchPromise, owner) {
461
+ const owned = fetchPromise && ownedLinkPrefetches.get(fetchPromise);
462
+ if (!owned || owner === void 0) return;
463
+ owned.owners.add(owner);
464
+ owner.ownedPrefetches.add(owned);
465
+ }
466
+ /** Called when a Link leaves the viewport or unmounts. */
467
+ function releaseOwnedLinkPrefetches(instance) {
468
+ instance.leaveCount += 1;
469
+ for (const owned of instance.ownedPrefetches) {
470
+ owned.owners.delete(instance);
471
+ if (owned.droppedAt !== void 0 || hasVisibleOwner(owned)) continue;
472
+ owned.droppedAt = getAppPrefetchFetchClaimSequence();
473
+ if (isAppPrefetchFetchClaimed(owned.claimable)) continue;
474
+ for (const request of owned.requests) cancelQueuedAppPrefetchFetch(request);
475
+ }
476
+ instance.ownedPrefetches.clear();
477
+ }
350
478
  function drainVisibleAppPrefetchQueue() {
351
479
  visibleAppPrefetchDrainScheduled = false;
352
480
  while (true) {
@@ -354,7 +482,7 @@ function drainVisibleAppPrefetchQueue() {
354
482
  if (!instance) return;
355
483
  instance.queuedViewportPrefetch = false;
356
484
  if (!instance.isVisible || instance.routerMode !== "app") continue;
357
- prefetchUrl(instance.href, instance.mode, "low", instance.pagesRouteHref);
485
+ prefetchUrl(instance.href, instance.mode, "low", instance.pagesRouteHref, void 0, instance);
358
486
  }
359
487
  }
360
488
  function scheduleVisibleAppPrefetch(instance) {
@@ -373,11 +501,17 @@ function setVisibleLinkPrefetch(instance, isVisible) {
373
501
  if (instance.routerMode === "app") scheduleVisibleAppPrefetch(instance);
374
502
  else prefetchUrl(instance.href, instance.mode, "low", instance.pagesRouteHref, instance.locale);
375
503
  instance.viewportPrefetched = true;
376
- } else visibleLinkPrefetches.delete(instance);
504
+ } else {
505
+ visibleLinkPrefetches.delete(instance);
506
+ releaseOwnedLinkPrefetches(instance);
507
+ }
377
508
  }
509
+ let visibleLinkPingRuntime = null;
378
510
  function registerVisibleLinkPing() {
379
511
  if (typeof window === "undefined") return;
380
- registerNavigationRuntimeFunctions({ pingVisibleLinks: pingVisibleLinkPrefetches });
512
+ const functions = visibleLinkPingRuntime?.functions;
513
+ if (visibleLinkPingRuntime !== null && Reflect.get(window, NAVIGATION_RUNTIME_KEY) === visibleLinkPingRuntime && typeof functions === "object" && functions !== null && Reflect.get(functions, "pingVisibleLinks") === pingVisibleLinkPrefetches) return;
514
+ visibleLinkPingRuntime = registerNavigationRuntimeFunctions({ pingVisibleLinks: pingVisibleLinkPrefetches });
381
515
  }
382
516
  function pingVisibleLinkPrefetches() {
383
517
  for (const instance of visibleLinkPrefetches) if (instance.isVisible && instance.routerMode === "app") scheduleVisibleAppPrefetch(instance);
@@ -399,11 +533,14 @@ function getDefaultLocale() {
399
533
  return getI18nContext()?.defaultLocale;
400
534
  }
401
535
  function getCurrentLocale() {
402
- if (typeof window !== "undefined") return getCurrentBrowserLocale({
403
- basePath: __basePath,
404
- domainLocales: getDomainLocales(),
405
- hostname: getCurrentHostname()
406
- });
536
+ if (typeof window !== "undefined") {
537
+ const domainLocales = getDomainLocales();
538
+ return getCurrentBrowserLocale({
539
+ basePath: __basePath,
540
+ domainLocales,
541
+ hostname: domainLocales?.length ? getCurrentHostname() : void 0
542
+ });
543
+ }
407
544
  return getI18nContext()?.locale;
408
545
  }
409
546
  function getDomainLocales() {
@@ -457,19 +594,17 @@ function resolveConcreteRouteHref(href, as) {
457
594
  if (typeof as !== "string") return null;
458
595
  return interpolateDynamicRouteHref(href, as)?.href || null;
459
596
  }
460
- const Link = forwardRef(function Link({ href, as, replace = false, prefetch: prefetchProp, scroll = true, shallow = false, children: childrenProp, onClick, onMouseEnter, onTouchStart, onNavigate, unstable_dynamicOnHover = false, legacyBehavior = false, passHref = false, transitionTypes: _transitionTypes, ...rest }, forwardedRef) {
597
+ const Link = forwardRef(function Link({ href, as, replace = false, prefetch: prefetchProp, scroll = true, shallow = false, children: childrenProp, onClick, onMouseEnter, onTouchStart, onNavigate, unstable_dynamicOnHover = false, legacyBehavior = false, passHref = false, transitionTypes: _transitionTypes, locale, ...anchorProps }, forwardedRef) {
461
598
  const pagesRouter = useContext(RouterContext);
462
- const routePathnameForWarning = getCurrentRoutePathnameForWarning();
463
- const hrefStr = resolvePagesLinkValue(href, pagesRouter, routePathnameForWarning);
464
- const asHref = as === void 0 ? void 0 : resolvePagesLinkValue(as, pagesRouter, routePathnameForWarning);
465
- const { locale, ...restWithoutLocale } = rest;
599
+ const hrefStr = resolvePagesLinkValue(href, pagesRouter);
600
+ const asHref = as === void 0 ? void 0 : resolvePagesLinkValue(as, pagesRouter);
466
601
  let children = childrenProp;
467
602
  if (legacyBehavior && (typeof childrenProp === "string" || typeof childrenProp === "number")) children = React.createElement("a", null, childrenProp);
468
603
  const hrefForImplicitInterpolation = isAbsoluteOrProtocolRelativeUrl(hrefStr) ? hrefStr.startsWith("//") ? null : toSameOriginAppPath(hrefStr, __basePath) : hrefStr;
469
604
  const implicitDynamicRouteHref = HAS_PAGES_ROUTER && pagesRouter !== null && asHref === void 0 && hrefForImplicitInterpolation !== null ? resolveDynamicRouteHref(hrefForImplicitInterpolation) : null;
470
605
  const pagesAsHref = asHref ?? implicitDynamicRouteHref?.as;
471
606
  const unresolvedHref = pagesAsHref ?? hrefStr;
472
- const resolvedHref = unresolvedHref.startsWith("#") && !getNavigationRuntime()?.functions.navigate ? resolvePagesQueryOnlyHref(unresolvedHref) : unresolvedHref;
607
+ const resolvedHref = unresolvedHref.startsWith("#") && !hasLinkAppNavigationRuntime() ? resolvePagesQueryOnlyHref(unresolvedHref) : unresolvedHref;
473
608
  const concreteRouteHref = HAS_PAGES_ROUTER ? resolveConcreteRouteHref(hrefForImplicitInterpolation ?? hrefStr, pagesAsHref) : null;
474
609
  const routeHrefRaw = hrefStr;
475
610
  const prefetchRouteHrefRaw = concreteRouteHref ?? routeHrefRaw;
@@ -481,6 +616,14 @@ const Link = forwardRef(function Link({ href, as, replace = false, prefetch: pre
481
616
  const normalizedHref = normalizePathTrailingSlash(localizedHref, __trailingSlash);
482
617
  const normalizedRouteHref = hasPagesHrefAsPair ? normalizePathTrailingSlash(applyLocaleToHref(isRouteDangerous ? "/" : prefetchRouteHrefRaw, locale), __trailingSlash) : normalizedHref;
483
618
  const fullHref = normalizePathTrailingSlash(withBasePath(normalizedHref, __basePath), __trailingSlash);
619
+ if (isServer && !legacyBehavior && !isDangerous) return /* @__PURE__ */ jsx(LinkStatusContext.Provider, {
620
+ value: { pending: false },
621
+ children: /* @__PURE__ */ jsx("a", {
622
+ href: fullHref,
623
+ ...anchorProps,
624
+ children
625
+ })
626
+ });
484
627
  const [pending, setPending] = useState(false);
485
628
  const mountedRef = useRef(true);
486
629
  const pendingPagesIntentPrefetchRef = useRef(null);
@@ -512,15 +655,15 @@ const Link = forwardRef(function Link({ href, as, replace = false, prefetch: pre
512
655
  if (typeof forwardedRef === "function") forwardedRef(node);
513
656
  else if (forwardedRef) forwardedRef.current = node;
514
657
  }, [forwardedRef]);
515
- useEffect(() => {
658
+ useLayoutEffect(() => {
516
659
  if (!shouldViewportPrefetch || typeof window === "undefined") return;
517
660
  const node = internalRef.current;
518
661
  if (!node) return;
519
- const hrefToPrefetch = getLinkPrefetchHref({
662
+ const hrefToPrefetch = isAbsoluteOrProtocolRelativeUrl(normalizedHref) ? getLinkPrefetchHref({
520
663
  href: normalizedHref,
521
664
  basePath: __basePath,
522
665
  currentOrigin: window.location.origin
523
- });
666
+ }) : normalizedHref;
524
667
  if (hrefToPrefetch == null) return;
525
668
  const observer = getSharedObserver();
526
669
  if (!observer) return;
@@ -530,6 +673,8 @@ const Link = forwardRef(function Link({ href, as, replace = false, prefetch: pre
530
673
  isVisible: false,
531
674
  locale,
532
675
  mode: prefetchMode,
676
+ ownedPrefetches: /* @__PURE__ */ new Set(),
677
+ leaveCount: 0,
533
678
  pagesRouteHref: normalizedRouteHref === normalizedHref ? void 0 : getLinkPrefetchHref({
534
679
  href: normalizedRouteHref,
535
680
  basePath: __basePath,
@@ -546,6 +691,7 @@ const Link = forwardRef(function Link({ href, as, replace = false, prefetch: pre
546
691
  observedLinkPrefetches.delete(node);
547
692
  visibleLinkPrefetches.delete(instance);
548
693
  instance.isVisible = false;
694
+ releaseOwnedLinkPrefetches(instance);
549
695
  };
550
696
  }, [
551
697
  shouldViewportPrefetch,
@@ -621,7 +767,7 @@ const Link = forwardRef(function Link({ href, as, replace = false, prefetch: pre
621
767
  navigateHref = localPath;
622
768
  }
623
769
  e.preventDefault();
624
- const hasAppNavigationRuntime = Boolean(getNavigationRuntime()?.functions.navigate);
770
+ const hasAppNavigationRuntime = hasLinkAppNavigationRuntime();
625
771
  const pagesNavigateHref = HAS_PAGES_ROUTER && resolvedHref.startsWith("?") ? resolvePagesLinkNavigationHref(resolvedHref, locale) : navigateHref;
626
772
  const pagesAsForLink = hasPagesHrefAsPair ? pagesNavigateHref : void 0;
627
773
  const pagesHrefForLink = pagesAsForLink === void 0 ? pagesNavigateHref : routeHrefRaw;
@@ -679,7 +825,6 @@ const Link = forwardRef(function Link({ href, as, replace = false, prefetch: pre
679
825
  } else if (replace) window.location.replace(absoluteFullHref);
680
826
  else window.location.assign(absoluteFullHref);
681
827
  };
682
- const anchorProps = restWithoutLocale;
683
828
  const linkStatusValue = React.useMemo(() => ({ pending }), [pending]);
684
829
  if (isDangerous) {
685
830
  if (process.env.NODE_ENV !== "production") console.warn(`<Link> blocked dangerous href: ${resolvedHref}`);
@@ -24,7 +24,7 @@ export declare function ViewportHead({ viewport }: {
24
24
  export type Metadata = {
25
25
  title?: string | {
26
26
  default?: string;
27
- template?: string;
27
+ template?: string | null;
28
28
  absolute?: string;
29
29
  };
30
30
  description?: string;
@@ -57,15 +57,13 @@ export type Metadata = {
57
57
  url?: string | URL;
58
58
  siteName?: string;
59
59
  images?: string | URL | SocialImageDescriptor | Array<string | URL | SocialImageDescriptor>;
60
- videos?: Array<{
61
- url: string | URL;
62
- width?: number;
63
- height?: number;
64
- }>;
65
- audio?: Array<{
66
- url: string | URL;
67
- }>;
60
+ videos?: OGVideo | OGVideo[];
61
+ audio?: OGAudio | OGAudio[];
62
+ emails?: string | string[];
63
+ phoneNumbers?: string | string[];
64
+ faxNumbers?: string | string[];
68
65
  locale?: string;
66
+ alternateLocale?: string | string[];
69
67
  type?: string;
70
68
  publishedTime?: string;
71
69
  modifiedTime?: string;
@@ -169,6 +167,20 @@ type TwitterAppDescriptor = {
169
167
  };
170
168
  name?: string;
171
169
  };
170
+ type OGVideoDescriptor = {
171
+ url: string | URL;
172
+ secureUrl?: string | URL;
173
+ type?: string;
174
+ width?: string | number;
175
+ height?: string | number;
176
+ };
177
+ type OGVideo = string | URL | OGVideoDescriptor;
178
+ type OGAudioDescriptor = {
179
+ url: string | URL;
180
+ secureUrl?: string | URL;
181
+ type?: string;
182
+ };
183
+ type OGAudio = string | URL | OGAudioDescriptor;
172
184
  type SocialImageDescriptor = {
173
185
  url: string | URL;
174
186
  alt?: string;
@@ -194,7 +206,6 @@ type IconsMap = {
194
206
  };
195
207
  type IconsMetadata = IconInput | IconInput[] | IconsMap;
196
208
  export type MetadataMergeEntry = {
197
- contributesTitle?: boolean;
198
209
  isPage?: boolean;
199
210
  metadata: Metadata;
200
211
  };
@@ -236,6 +247,15 @@ export declare function postProcessMetadata(merged: Metadata): Metadata;
236
247
  * tags are the exception: Next.js merges those across segments.
237
248
  */
238
249
  export declare function mergeMetadataEntries(entries: readonly MetadataMergeEntry[]): Metadata;
250
+ /**
251
+ * Merge metadata into the `parent` a later segment's resolver receives. Like
252
+ * {@link mergeMetadataEntries}, except the title stays resolved as Next.js's
253
+ * `{ absolute, template }`, so `(await parent).title?.absolute` reads the
254
+ * title so far. `template` is the one the next title gets, so merging this
255
+ * parent with later entries resolves their titles as the full merge does.
256
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/metadata/resolvers/resolve-title.ts
257
+ */
258
+ export declare function mergeParentMetadataEntries(entries: readonly MetadataMergeEntry[]): Metadata;
239
259
  /**
240
260
  * Resolve metadata from a module. Handles both static `metadata` export
241
261
  * and async `generateMetadata()` function.
@@ -258,4 +278,5 @@ export declare function renderMetadataToHtml(metadata: Metadata, pathname?: stri
258
278
  streamedIconKey?: string;
259
279
  }): string;
260
280
  export declare function MetadataHead({ metadata, pathname, trailingSlash, streamedIconKey }: MetadataHeadProps): React.JSX.Element;
261
- //#endregion
281
+ //#endregion
282
+ export {};