vinext 1.0.0-beta.8 → 1.0.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 (813) hide show
  1. package/README.md +158 -84
  2. package/THIRD_PARTY_LICENSES.md +25 -0
  3. package/dist/_virtual/_rolldown/runtime.js +25 -0
  4. package/dist/build/action-owner-manifest.d.ts +8 -9
  5. package/dist/build/action-owner-manifest.js +23 -5
  6. package/dist/build/assets-ignore.d.ts +3 -4
  7. package/dist/build/clean-output.d.ts +2 -3
  8. package/dist/build/client-build-config.d.ts +40 -12
  9. package/dist/build/client-build-config.js +76 -6
  10. package/dist/build/css-url-assets.d.ts +4 -5
  11. package/dist/build/css-url-assets.js +5 -2
  12. package/dist/build/google-fonts/build-url.d.ts +3 -4
  13. package/dist/build/google-fonts/fallback-metrics.d.ts +3 -4
  14. package/dist/build/google-fonts/find-font-files-in-css.d.ts +2 -3
  15. package/dist/build/google-fonts/font-metadata.d.ts +2 -3
  16. package/dist/build/google-fonts/get-axes.d.ts +2 -3
  17. package/dist/build/google-fonts/sort-variants.d.ts +2 -3
  18. package/dist/build/google-fonts/validate.d.ts +2 -3
  19. package/dist/build/google-fonts/validate.js +8 -4
  20. package/dist/build/inject-pregenerated-paths.d.ts +2 -3
  21. package/dist/build/inject-pregenerated-paths.js +16 -14
  22. package/dist/build/inline-css.d.ts +3 -4
  23. package/dist/build/layout-classification-types.d.ts +4 -5
  24. package/dist/build/layout-classification.d.ts +7 -8
  25. package/dist/build/lifecycle.d.ts +42 -0
  26. package/dist/build/lifecycle.js +253 -0
  27. package/dist/build/module-dependency-cache.d.ts +2 -3
  28. package/dist/build/next-client-runtime-manifests.d.ts +4 -5
  29. package/dist/build/nitro-route-rules.d.ts +6 -7
  30. package/dist/build/nitro-route-rules.js +1 -1
  31. package/dist/build/pages-client-assets-module.d.ts +4 -8
  32. package/dist/build/pages-client-assets-module.js +1 -13
  33. package/dist/build/precompress.d.ts +2 -3
  34. package/dist/build/prerender-cloudflare-loader.d.ts +4 -0
  35. package/dist/build/prerender-cloudflare-loader.js +49 -0
  36. package/dist/build/prerender-paths.d.ts +82 -8
  37. package/dist/build/prerender-paths.js +814 -99
  38. package/dist/build/prerender-phase.d.ts +2 -3
  39. package/dist/build/prerender-server-entry.js +11 -3
  40. package/dist/build/prerender-server-pool.d.ts +9 -6
  41. package/dist/build/prerender-server-pool.js +8 -5
  42. package/dist/build/prerender.d.ts +67 -15
  43. package/dist/build/prerender.js +177 -64
  44. package/dist/build/preview-credentials.d.ts +5 -6
  45. package/dist/build/preview-credentials.js +2 -2
  46. package/dist/build/public-dir-conflict.d.ts +5 -6
  47. package/dist/build/public-dir-conflict.js +2 -1
  48. package/dist/build/report.d.ts +38 -19
  49. package/dist/build/report.js +73 -4
  50. package/dist/build/route-classification-injector.d.ts +2 -3
  51. package/dist/build/route-classification-manifest.d.ts +5 -6
  52. package/dist/build/run-prerender.d.ts +11 -9
  53. package/dist/build/run-prerender.js +25 -16
  54. package/dist/build/server-entry.d.ts +4 -0
  55. package/dist/build/server-entry.js +28 -0
  56. package/dist/build/server-manifest.d.ts +8 -3
  57. package/dist/build/server-manifest.js +14 -2
  58. package/dist/build/ssr-manifest.d.ts +5 -6
  59. package/dist/build/standalone.d.ts +2 -3
  60. package/dist/build/standalone.js +2 -2
  61. package/dist/build/static-export.d.ts +7 -8
  62. package/dist/cache/cache-adapters-virtual.d.ts +95 -9
  63. package/dist/cache/cache-adapters-virtual.js +58 -6
  64. package/dist/check.d.ts +11 -10
  65. package/dist/check.js +467 -176
  66. package/dist/cli-args.d.ts +7 -16
  67. package/dist/cli-args.js +2 -45
  68. package/dist/cli-dev-config.d.ts +10 -7
  69. package/dist/cli-dev-config.js +160 -3
  70. package/dist/cli.js +124 -435
  71. package/dist/client/app-nav-failure-handler.d.ts +6 -7
  72. package/dist/client/client-rewrite-matcher.d.ts +2 -3
  73. package/dist/client/client-rewrites.d.ts +4 -5
  74. package/dist/client/dev-error-overlay-store.d.ts +13 -14
  75. package/dist/client/dev-error-overlay.d.ts +15 -15
  76. package/dist/client/dev-error-overlay.js +8 -5
  77. package/dist/client/instrumentation-client-inject.d.ts +3 -4
  78. package/dist/client/instrumentation-client-state.d.ts +5 -6
  79. package/dist/client/instrumentation-client.d.ts +3 -4
  80. package/dist/client/navigation-runtime.d.ts +21 -17
  81. package/dist/client/navigation-runtime.js +2 -1
  82. package/dist/client/pages-router-link-navigation.d.ts +4 -5
  83. package/dist/client/react-instance.d.ts +2 -3
  84. package/dist/client/validate-module-path.d.ts +2 -3
  85. package/dist/client/vinext-next-data.d.ts +7 -8
  86. package/dist/client/window-next.d.ts +4 -5
  87. package/dist/config/config-matchers.d.ts +16 -16
  88. package/dist/config/config-matchers.js +10 -7
  89. package/dist/config/dotenv.d.ts +3 -4
  90. package/dist/config/dotenv.js +2 -1
  91. package/dist/config/next-config.d.ts +31 -27
  92. package/dist/config/next-config.js +163 -16
  93. package/dist/config/prerender.d.ts +20 -16
  94. package/dist/config/prerender.js +10 -4
  95. package/dist/config/request-context.d.ts +5 -6
  96. package/dist/config/server-external-packages.d.ts +14 -3
  97. package/dist/config/server-external-packages.js +37 -3
  98. package/dist/config/tsconfig-paths.d.ts +3 -4
  99. package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +189 -0
  100. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1057 -0
  101. package/dist/entries/app-browser-entry.d.ts +5 -6
  102. package/dist/entries/app-browser-entry.js +3 -2
  103. package/dist/entries/app-rsc-entry.d.ts +12 -3
  104. package/dist/entries/app-rsc-entry.js +530 -55
  105. package/dist/entries/app-rsc-manifest.d.ts +4 -3
  106. package/dist/entries/app-rsc-manifest.js +27 -8
  107. package/dist/entries/app-ssr-entry.d.ts +2 -3
  108. package/dist/entries/app-ssr-entry.js +8 -1
  109. package/dist/entries/pages-client-entry.d.ts +3 -3
  110. package/dist/entries/pages-client-entry.js +17 -2
  111. package/dist/entries/pages-server-entry.d.ts +13 -3
  112. package/dist/entries/pages-server-entry.js +237 -33
  113. package/dist/entries/runtime-entry-module.d.ts +4 -5
  114. package/dist/image/image-adapters-virtual.d.ts +4 -5
  115. package/dist/index.d.ts +10 -11
  116. package/dist/index.js +832 -199
  117. package/dist/init-cloudflare.d.ts +27 -16
  118. package/dist/init-cloudflare.js +754 -113
  119. package/dist/init-platform.d.ts +26 -22
  120. package/dist/init-platform.js +85 -29
  121. package/dist/init.d.ts +19 -13
  122. package/dist/init.js +123 -41
  123. package/dist/plugins/action-owner-manifest.d.ts +3 -4
  124. package/dist/plugins/action-owner-manifest.js +10 -3
  125. package/dist/plugins/ast-scope.d.ts +10 -11
  126. package/dist/plugins/ast-scope.js +10 -22
  127. package/dist/plugins/ast-utils.d.ts +16 -29
  128. package/dist/plugins/ast-utils.js +27 -71
  129. package/dist/plugins/async-hooks-stub.d.ts +2 -3
  130. package/dist/plugins/client-reference-dedup.d.ts +4 -5
  131. package/dist/plugins/css-data-url.d.ts +2 -3
  132. package/dist/plugins/css-module-imports.d.ts +3 -4
  133. package/dist/plugins/css-module-imports.js +1 -1
  134. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -4
  135. package/dist/plugins/dynamic-preload-metadata.js +55 -154
  136. package/dist/plugins/environment.d.ts +2 -3
  137. package/dist/plugins/extensionless-dynamic-import.d.ts +2 -3
  138. package/dist/plugins/extensionless-dynamic-import.js +6 -10
  139. package/dist/plugins/fonts.d.ts +10 -11
  140. package/dist/plugins/fonts.js +4 -3
  141. package/dist/plugins/ignore-dynamic-requests.d.ts +3 -4
  142. package/dist/plugins/ignore-dynamic-requests.js +60 -89
  143. package/dist/plugins/import-meta-url.d.ts +6 -7
  144. package/dist/plugins/import-meta-url.js +31 -43
  145. package/dist/plugins/instrumentation-client.d.ts +3 -3
  146. package/dist/plugins/instrumentation-client.js +46 -10
  147. package/dist/plugins/middleware-export-validation.d.ts +3 -4
  148. package/dist/plugins/middleware-export-validation.js +3 -3
  149. package/dist/plugins/middleware-server-only.d.ts +2 -3
  150. package/dist/plugins/og-asset-ownership.d.ts +3 -4
  151. package/dist/plugins/og-assets.d.ts +4 -5
  152. package/dist/plugins/og-assets.js +32 -13
  153. package/dist/plugins/og-harfbuzz.d.ts +24 -0
  154. package/dist/plugins/og-harfbuzz.js +260 -0
  155. package/dist/plugins/optimize-imports.d.ts +7 -7
  156. package/dist/plugins/optimize-imports.js +32 -44
  157. package/dist/plugins/pages-node-externals.d.ts +2 -3
  158. package/dist/plugins/pages-node-externals.js +6 -11
  159. package/dist/plugins/postcss.d.ts +8 -4
  160. package/dist/plugins/postcss.js +1 -1
  161. package/dist/plugins/remove-console.d.ts +2 -3
  162. package/dist/plugins/remove-console.js +0 -1
  163. package/dist/plugins/require-condition-resolution.d.ts +3 -4
  164. package/dist/plugins/require-condition-resolution.js +17 -18
  165. package/dist/plugins/require-context.d.ts +2 -3
  166. package/dist/plugins/require-context.js +13 -21
  167. package/dist/plugins/rsc-client-reference-loaders.d.ts +2 -3
  168. package/dist/plugins/rsc-client-shim-excludes.d.ts +4 -5
  169. package/dist/plugins/rsc-client-shim-excludes.js +1 -0
  170. package/dist/plugins/rsc-reference-validation-normalizer.d.ts +2 -3
  171. package/dist/plugins/sass.d.ts +7 -8
  172. package/dist/plugins/sass.js +7 -4
  173. package/dist/plugins/server-externals-manifest.d.ts +2 -3
  174. package/dist/plugins/strip-server-exports.d.ts +5 -6
  175. package/dist/plugins/strip-server-exports.js +1 -1
  176. package/dist/plugins/styled-jsx.d.ts +2 -3
  177. package/dist/plugins/styled-jsx.js +7 -7
  178. package/dist/plugins/transform-cache.d.ts +2 -3
  179. package/dist/plugins/transform-result.d.ts +3 -4
  180. package/dist/plugins/transitive-externals.d.ts +2 -3
  181. package/dist/plugins/typeof-window.d.ts +6 -7
  182. package/dist/plugins/typeof-window.js +30 -31
  183. package/dist/plugins/use-cache-callable.d.ts +2 -5
  184. package/dist/plugins/use-cache-callable.js +43 -22
  185. package/dist/plugins/wasm-module-import.d.ts +2 -3
  186. package/dist/plugins/worker-image-imports.d.ts +2 -3
  187. package/dist/plugins/worker-image-imports.js +6 -8
  188. package/dist/routing/app-route-graph.d.ts +19 -19
  189. package/dist/routing/app-route-graph.js +3 -2
  190. package/dist/routing/app-router.d.ts +20 -5
  191. package/dist/routing/app-router.js +28 -2
  192. package/dist/routing/file-matcher.d.ts +9 -10
  193. package/dist/routing/pages-router.d.ts +6 -6
  194. package/dist/routing/pages-router.js +1 -1
  195. package/dist/routing/route-matching.d.ts +4 -5
  196. package/dist/routing/route-matching.js +4 -2
  197. package/dist/routing/route-pattern.d.ts +13 -14
  198. package/dist/routing/route-trie.d.ts +5 -6
  199. package/dist/routing/route-validation.d.ts +3 -4
  200. package/dist/routing/route-validation.js +12 -11
  201. package/dist/routing/utils.d.ts +13 -14
  202. package/dist/server/accept-encoding.d.ts +9 -10
  203. package/dist/server/api-handler.d.ts +2 -3
  204. package/dist/server/api-handler.js +9 -6
  205. package/dist/server/app-action-forwarding.d.ts +3 -4
  206. package/dist/server/app-action-forwarding.js +1 -1
  207. package/dist/server/app-action-request.d.ts +2 -3
  208. package/dist/server/app-bfcache-id.d.ts +3 -4
  209. package/dist/server/app-bfcache-identity.d.ts +8 -9
  210. package/dist/server/app-browser-action-result.d.ts +15 -16
  211. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -3
  212. package/dist/server/app-browser-entry.js +121 -40
  213. package/dist/server/app-browser-error.d.ts +5 -6
  214. package/dist/server/app-browser-error.js +9 -3
  215. package/dist/server/app-browser-history-controller.d.ts +4 -5
  216. package/dist/server/app-browser-hydration.d.ts +16 -6
  217. package/dist/server/app-browser-hydration.js +14 -1
  218. package/dist/server/app-browser-interception-context.d.ts +3 -4
  219. package/dist/server/app-browser-mpa-navigation.d.ts +4 -5
  220. package/dist/server/app-browser-navigation-abort.d.ts +3 -4
  221. package/dist/server/app-browser-navigation-controller.d.ts +8 -8
  222. package/dist/server/app-browser-navigation-controller.js +9 -5
  223. package/dist/server/app-browser-navigation-response.d.ts +2 -3
  224. package/dist/server/app-browser-popstate.d.ts +4 -5
  225. package/dist/server/app-browser-prefetch-response.d.ts +5 -6
  226. package/dist/server/app-browser-rsc-redirect.d.ts +4 -5
  227. package/dist/server/app-browser-server-action-client.d.ts +7 -6
  228. package/dist/server/app-browser-server-action-client.js +9 -5
  229. package/dist/server/app-browser-server-action-navigation.d.ts +2 -3
  230. package/dist/server/app-browser-state.d.ts +17 -17
  231. package/dist/server/app-browser-state.js +7 -3
  232. package/dist/server/app-browser-stream.d.ts +4 -5
  233. package/dist/server/app-browser-stream.js +8 -6
  234. package/dist/server/app-browser-supplemental-refresh.d.ts +11 -12
  235. package/dist/server/app-browser-visible-commit.d.ts +6 -7
  236. package/dist/server/app-browser-visible-commit.js +1 -1
  237. package/dist/server/app-client-reference-preloader.d.ts +2 -3
  238. package/dist/server/app-elements-wire-key.d.ts +25 -0
  239. package/dist/server/app-elements-wire-key.js +69 -0
  240. package/dist/server/app-elements-wire.d.ts +34 -53
  241. package/dist/server/app-elements-wire.js +4 -75
  242. package/dist/server/app-elements.d.ts +5 -5
  243. package/dist/server/app-elements.js +1 -1
  244. package/dist/server/app-fallback-renderer.d.ts +4 -4
  245. package/dist/server/app-fallback-renderer.js +6 -6
  246. package/dist/server/app-fetch-tracing.d.ts +15 -0
  247. package/dist/server/app-fetch-tracing.js +38 -0
  248. package/dist/server/app-history-state.d.ts +26 -27
  249. package/dist/server/app-history-state.js +19 -11
  250. package/dist/server/app-hook-warning-suppression.d.ts +2 -3
  251. package/dist/server/app-hydration-cache-publication.d.ts +3 -4
  252. package/dist/server/app-inline-css-client.d.ts +3 -4
  253. package/dist/server/app-interception-context-header.d.ts +2 -3
  254. package/dist/server/app-layout-param-observation.d.ts +7 -8
  255. package/dist/server/app-metadata-tracing.d.ts +12 -0
  256. package/dist/server/app-metadata-tracing.js +17 -0
  257. package/dist/server/app-middleware.d.ts +15 -7
  258. package/dist/server/app-middleware.js +30 -5
  259. package/dist/server/app-mounted-slots-header.d.ts +2 -3
  260. package/dist/server/app-mounted-slots-header.js +2 -2
  261. package/dist/server/app-optimistic-routing.d.ts +14 -10
  262. package/dist/server/app-optimistic-routing.js +16 -3
  263. package/dist/server/app-page-boundary-render.d.ts +6 -6
  264. package/dist/server/app-page-boundary-render.js +10 -4
  265. package/dist/server/app-page-boundary.d.ts +9 -10
  266. package/dist/server/app-page-boundary.js +2 -1
  267. package/dist/server/app-page-cache-finalizer.d.ts +32 -8
  268. package/dist/server/app-page-cache-finalizer.js +118 -14
  269. package/dist/server/app-page-cache-render.d.ts +8 -5
  270. package/dist/server/app-page-cache-render.js +22 -5
  271. package/dist/server/app-page-cache.d.ts +28 -9
  272. package/dist/server/app-page-cache.js +96 -25
  273. package/dist/server/app-page-dispatch.d.ts +36 -12
  274. package/dist/server/app-page-dispatch.js +188 -63
  275. package/dist/server/app-page-element-builder.d.ts +13 -11
  276. package/dist/server/app-page-element-builder.js +104 -61
  277. package/dist/server/app-page-execution.d.ts +14 -14
  278. package/dist/server/app-page-execution.js +12 -8
  279. package/dist/server/app-page-head.d.ts +19 -16
  280. package/dist/server/app-page-head.js +25 -25
  281. package/dist/server/app-page-http-access-fallback-metadata.d.ts +6 -5
  282. package/dist/server/app-page-http-access-fallback-metadata.js +9 -2
  283. package/dist/server/app-page-method.d.ts +5 -11
  284. package/dist/server/app-page-method.js +2 -9
  285. package/dist/server/app-page-params.d.ts +5 -6
  286. package/dist/server/app-page-ppr-runtime.d.ts +2 -2
  287. package/dist/server/app-page-probe.d.ts +5 -6
  288. package/dist/server/app-page-probe.js +5 -4
  289. package/dist/server/app-page-render-identity.d.ts +4 -5
  290. package/dist/server/app-page-render-observation.d.ts +8 -9
  291. package/dist/server/app-page-render-observation.js +1 -1
  292. package/dist/server/app-page-render.d.ts +42 -6
  293. package/dist/server/app-page-render.js +192 -28
  294. package/dist/server/app-page-request.d.ts +10 -9
  295. package/dist/server/app-page-request.js +16 -12
  296. package/dist/server/app-page-response.d.ts +20 -9
  297. package/dist/server/app-page-response.js +31 -13
  298. package/dist/server/app-page-route-wiring.d.ts +15 -15
  299. package/dist/server/app-page-route-wiring.js +31 -24
  300. package/dist/server/app-page-search-params-observation.d.ts +26 -5
  301. package/dist/server/app-page-search-params-observation.js +42 -6
  302. package/dist/server/app-page-segment-plan.d.ts +2 -3
  303. package/dist/server/app-page-segment-state.d.ts +11 -12
  304. package/dist/server/app-page-stream.d.ts +27 -11
  305. package/dist/server/app-page-stream.js +35 -6
  306. package/dist/server/app-page-tracing.d.ts +33 -0
  307. package/dist/server/app-page-tracing.js +49 -0
  308. package/dist/server/app-pages-bridge.d.ts +6 -6
  309. package/dist/server/app-pages-bridge.js +19 -4
  310. package/dist/server/app-post-middleware-context.d.ts +2 -3
  311. package/dist/server/app-ppr-fallback-shell-render.d.ts +3 -4
  312. package/dist/server/app-ppr-fallback-shell-render.js +3 -2
  313. package/dist/server/app-ppr-fallback-shell.d.ts +6 -7
  314. package/dist/server/app-prerender-endpoints.d.ts +5 -5
  315. package/dist/server/app-prerender-endpoints.js +26 -12
  316. package/dist/server/app-prerender-static-params.d.ts +15 -7
  317. package/dist/server/app-prerender-static-params.js +33 -11
  318. package/dist/server/app-render-dependency.d.ts +14 -13
  319. package/dist/server/app-render-dependency.js +5 -1
  320. package/dist/server/app-request-context.d.ts +3 -4
  321. package/dist/server/app-request-stage-context.d.ts +5 -0
  322. package/dist/server/app-request-stage-context.js +11 -0
  323. package/dist/server/app-request-stage-dispatch.d.ts +25 -0
  324. package/dist/server/app-request-stage-dispatch.js +54 -0
  325. package/dist/server/app-request-stage-independent-entry.d.ts +8 -0
  326. package/dist/server/app-request-stage-independent-entry.js +115 -0
  327. package/dist/server/app-response-header-provenance.d.ts +13 -7
  328. package/dist/server/app-response-header-provenance.js +34 -1
  329. package/dist/server/app-response-stage-entry.d.ts +9 -0
  330. package/dist/server/app-response-stage-entry.js +87 -0
  331. package/dist/server/app-route-handler-cache.d.ts +2 -3
  332. package/dist/server/app-route-handler-cache.js +46 -34
  333. package/dist/server/app-route-handler-dispatch.d.ts +3 -3
  334. package/dist/server/app-route-handler-dispatch.js +75 -57
  335. package/dist/server/app-route-handler-execution.d.ts +18 -13
  336. package/dist/server/app-route-handler-execution.js +189 -25
  337. package/dist/server/app-route-handler-middleware-context.d.ts +8 -0
  338. package/dist/server/app-route-handler-middleware-context.js +15 -0
  339. package/dist/server/app-route-handler-policy.d.ts +22 -10
  340. package/dist/server/app-route-handler-policy.js +19 -4
  341. package/dist/server/app-route-handler-response.d.ts +9 -10
  342. package/dist/server/app-route-handler-response.js +2 -0
  343. package/dist/server/app-route-handler-runtime.d.ts +9 -10
  344. package/dist/server/app-route-handler-runtime.js +20 -16
  345. package/dist/server/app-route-module-loader.d.ts +6 -7
  346. package/dist/server/app-route-request-built-ins.d.ts +3 -4
  347. package/dist/server/app-route-tree-prefetch.d.ts +6 -7
  348. package/dist/server/app-route-tree-prefetch.js +2 -1
  349. package/dist/server/app-router-entry.d.ts +2 -0
  350. package/dist/server/app-router-entry.js +76 -12
  351. package/dist/server/app-rsc-cache-busting.d.ts +47 -22
  352. package/dist/server/app-rsc-cache-busting.js +80 -18
  353. package/dist/server/app-rsc-combined-handler.d.ts +9 -0
  354. package/dist/server/app-rsc-combined-handler.js +11 -0
  355. package/dist/server/app-rsc-embedded-chunks.d.ts +6 -7
  356. package/dist/server/app-rsc-error-handler.d.ts +12 -6
  357. package/dist/server/app-rsc-error-handler.js +15 -6
  358. package/dist/server/app-rsc-errors.d.ts +12 -9
  359. package/dist/server/app-rsc-errors.js +15 -13
  360. package/dist/server/app-rsc-handler.d.ts +33 -6
  361. package/dist/server/app-rsc-handler.js +498 -83
  362. package/dist/server/app-rsc-redirect-flight.d.ts +4 -5
  363. package/dist/server/app-rsc-render-mode.d.ts +8 -9
  364. package/dist/server/app-rsc-request-normalization.d.ts +3 -3
  365. package/dist/server/app-rsc-request-normalization.js +2 -1
  366. package/dist/server/app-rsc-response-finalizer.d.ts +8 -5
  367. package/dist/server/app-rsc-response-finalizer.js +24 -7
  368. package/dist/server/app-rsc-response-stage.d.ts +6 -0
  369. package/dist/server/app-rsc-response-stage.js +251 -0
  370. package/dist/server/app-rsc-route-matching.d.ts +4 -4
  371. package/dist/server/app-rsc-route-matching.js +4 -2
  372. package/dist/server/app-rsc-state-fingerprint.d.ts +3 -4
  373. package/dist/server/app-rsc-vary.d.ts +16 -0
  374. package/dist/server/app-rsc-vary.js +31 -0
  375. package/dist/server/app-segment-config.d.ts +120 -6
  376. package/dist/server/app-segment-config.js +264 -12
  377. package/dist/server/app-server-action-execution.d.ts +16 -12
  378. package/dist/server/app-server-action-execution.js +88 -35
  379. package/dist/server/app-ssr-entry.d.ts +14 -4
  380. package/dist/server/app-ssr-entry.js +64 -17
  381. package/dist/server/app-ssr-error-meta.d.ts +3 -4
  382. package/dist/server/app-ssr-error-meta.js +2 -1
  383. package/dist/server/app-ssr-router-instance.d.ts +2 -3
  384. package/dist/server/app-ssr-search-params-gate.d.ts +20 -0
  385. package/dist/server/app-ssr-search-params-gate.js +54 -0
  386. package/dist/server/app-ssr-stream.d.ts +13 -9
  387. package/dist/server/app-ssr-stream.js +33 -7
  388. package/dist/server/app-static-generation.d.ts +4 -5
  389. package/dist/server/app-visited-response-cache.d.ts +11 -12
  390. package/dist/server/app-visited-response-cache.js +2 -2
  391. package/dist/server/app-worker-stages.d.ts +112 -0
  392. package/dist/server/app-worker-stages.js +105 -0
  393. package/dist/server/artifact-compatibility.d.ts +11 -12
  394. package/dist/server/before-interactive-head.d.ts +2 -3
  395. package/dist/server/bfcache-identity.d.ts +7 -8
  396. package/dist/server/cache-control.d.ts +39 -11
  397. package/dist/server/cache-control.js +104 -7
  398. package/dist/server/cache-headers.d.ts +3 -4
  399. package/dist/server/cache-proof.d.ts +75 -70
  400. package/dist/server/cache-proof.js +9 -1
  401. package/dist/server/cacheability-limits.d.ts +8 -0
  402. package/dist/server/cacheability-limits.js +9 -0
  403. package/dist/server/cacheability-manifest.d.ts +68 -0
  404. package/dist/server/cacheability-manifest.js +241 -0
  405. package/dist/server/cacheability-request.d.ts +49 -0
  406. package/dist/server/cacheability-request.js +559 -0
  407. package/dist/server/client-reuse-manifest.d.ts +17 -18
  408. package/dist/server/client-reuse-manifest.js +2 -2
  409. package/dist/server/client-trace-metadata.d.ts +9 -6
  410. package/dist/server/client-trace-metadata.js +27 -15
  411. package/dist/server/cloudflare-workers-tracing.d.ts +1 -0
  412. package/dist/server/cloudflare-workers-tracing.js +8 -0
  413. package/dist/server/config-headers.d.ts +19 -5
  414. package/dist/server/config-headers.js +39 -5
  415. package/dist/server/cookie-utils.d.ts +2 -3
  416. package/dist/server/csp.d.ts +5 -6
  417. package/dist/server/default-global-error-module.d.ts +2 -3
  418. package/dist/server/default-global-not-found-module.d.ts +2 -3
  419. package/dist/server/default-not-found-module.d.ts +2 -3
  420. package/dist/server/defer-until-stream-consumed.d.ts +2 -3
  421. package/dist/server/defer-until-stream-consumed.js +2 -1
  422. package/dist/server/dev-initial-server-error.d.ts +3 -4
  423. package/dist/server/dev-initial-server-error.js +2 -1
  424. package/dist/server/dev-lockfile.d.ts +7 -8
  425. package/dist/server/dev-lockfile.js +4 -1
  426. package/dist/server/dev-module-runner.d.ts +2 -3
  427. package/dist/server/dev-origin-check.d.ts +5 -6
  428. package/dist/server/dev-route-files.d.ts +2 -3
  429. package/dist/server/dev-server.d.ts +4 -5
  430. package/dist/server/dev-server.js +130 -61
  431. package/dist/server/dev-stack-sourcemap.d.ts +7 -7
  432. package/dist/server/dev-stack-sourcemap.js +1 -1
  433. package/dist/server/document-initial-head.d.ts +3 -4
  434. package/dist/server/edge-api-runtime.d.ts +4 -5
  435. package/dist/server/fetch-handler.d.ts +3 -2
  436. package/dist/server/fetch-handler.js +3 -18
  437. package/dist/server/file-based-metadata.d.ts +2 -3
  438. package/dist/server/framework-tracer.d.ts +46 -0
  439. package/dist/server/framework-tracer.js +125 -0
  440. package/dist/server/fully-buffered-response.d.ts +11 -0
  441. package/dist/server/fully-buffered-response.js +19 -0
  442. package/dist/server/headers.d.ts +62 -56
  443. package/dist/server/headers.js +33 -20
  444. package/dist/server/html.d.ts +6 -27
  445. package/dist/server/html.js +16 -1
  446. package/dist/server/http-conditional.d.ts +5 -6
  447. package/dist/server/http-date.d.ts +2 -3
  448. package/dist/server/http-error-responses.d.ts +9 -10
  449. package/dist/server/http-range.d.ts +4 -5
  450. package/dist/server/hybrid-route-priority.d.ts +4 -5
  451. package/dist/server/image-optimization.d.ts +20 -21
  452. package/dist/server/implicit-tags.d.ts +3 -4
  453. package/dist/server/instrumentation-runtime.d.ts +17 -21
  454. package/dist/server/instrumentation-runtime.js +26 -8
  455. package/dist/server/instrumentation.d.ts +26 -30
  456. package/dist/server/instrumentation.js +18 -23
  457. package/dist/server/isr-cache.d.ts +28 -27
  458. package/dist/server/isr-cache.js +18 -70
  459. package/dist/server/isr-decision.d.ts +4 -4
  460. package/dist/server/metadata-route-build-data.d.ts +4 -5
  461. package/dist/server/metadata-route-cache-policy.d.ts +2 -3
  462. package/dist/server/metadata-route-response.d.ts +7 -7
  463. package/dist/server/metadata-route-response.js +68 -2
  464. package/dist/server/metadata-routes.d.ts +18 -19
  465. package/dist/server/middleware-matcher-pattern.d.ts +6 -7
  466. package/dist/server/middleware-matcher.d.ts +13 -6
  467. package/dist/server/middleware-matcher.js +22 -1
  468. package/dist/server/middleware-path-to-regexp.d.ts +6 -7
  469. package/dist/server/middleware-path-to-regexp.js +11 -9
  470. package/dist/server/middleware-response-headers.d.ts +3 -4
  471. package/dist/server/middleware-runtime.d.ts +13 -8
  472. package/dist/server/middleware-runtime.js +54 -10
  473. package/dist/server/middleware.d.ts +5 -5
  474. package/dist/server/multi-stage.d.ts +141 -0
  475. package/dist/server/multi-stage.js +8 -0
  476. package/dist/server/navigation-planner.d.ts +26 -26
  477. package/dist/server/navigation-trace.d.ts +11 -12
  478. package/dist/server/next-error-digest.d.ts +4 -5
  479. package/dist/server/normalize-path.d.ts +5 -6
  480. package/dist/server/normalize-path.js +1 -1
  481. package/dist/server/open-redirect.d.ts +2 -3
  482. package/dist/server/opentelemetry-api.d.ts +59 -0
  483. package/dist/server/opentelemetry-api.js +53 -0
  484. package/dist/server/opentelemetry-tracing.d.ts +5 -0
  485. package/dist/server/opentelemetry-tracing.js +83 -0
  486. package/dist/server/operation-token.d.ts +11 -12
  487. package/dist/server/otel-tracer-extension.d.ts +7 -9
  488. package/dist/server/otel-tracer-extension.js +37 -36
  489. package/dist/server/pages-api-route.d.ts +5 -4
  490. package/dist/server/pages-api-route.js +21 -8
  491. package/dist/server/pages-asset-tags.d.ts +6 -6
  492. package/dist/server/pages-asset-tags.js +37 -2
  493. package/dist/server/pages-body-parser-config.d.ts +4 -5
  494. package/dist/server/pages-body-parser-config.js +4 -4
  495. package/dist/server/pages-client-assets.d.ts +11 -5
  496. package/dist/server/pages-data-route.d.ts +11 -12
  497. package/dist/server/pages-data-route.js +1 -1
  498. package/dist/server/pages-default-404.d.ts +3 -4
  499. package/dist/server/pages-dev-hydration.d.ts +9 -4
  500. package/dist/server/pages-dev-hydration.js +19 -7
  501. package/dist/server/pages-dev-module-url.d.ts +3 -4
  502. package/dist/server/pages-dev-stylesheets.d.ts +5 -6
  503. package/dist/server/pages-document-asset-props.d.ts +6 -7
  504. package/dist/server/pages-document-initial-props.d.ts +5 -5
  505. package/dist/server/pages-document-initial-props.js +4 -2
  506. package/dist/server/pages-execution-tracing.d.ts +40 -0
  507. package/dist/server/pages-execution-tracing.js +80 -0
  508. package/dist/server/pages-get-initial-props.d.ts +9 -10
  509. package/dist/server/pages-i18n.d.ts +8 -8
  510. package/dist/server/pages-i18n.js +3 -2
  511. package/dist/server/pages-media-type.d.ts +4 -5
  512. package/dist/server/pages-node-compat.d.ts +11 -10
  513. package/dist/server/pages-node-compat.js +12 -4
  514. package/dist/server/pages-page-data.d.ts +18 -19
  515. package/dist/server/pages-page-data.js +11 -10
  516. package/dist/server/pages-page-handler.d.ts +7 -6
  517. package/dist/server/pages-page-handler.js +98 -47
  518. package/dist/server/pages-page-method.d.ts +2 -3
  519. package/dist/server/pages-page-response.d.ts +14 -10
  520. package/dist/server/pages-page-response.js +49 -31
  521. package/dist/server/pages-preview.d.ts +10 -11
  522. package/dist/server/pages-readiness.d.ts +2 -3
  523. package/dist/server/pages-request-pipeline.d.ts +16 -12
  524. package/dist/server/pages-request-pipeline.js +69 -28
  525. package/dist/server/pages-request-stage-entry.d.ts +23 -0
  526. package/dist/server/pages-request-stage-entry.js +314 -0
  527. package/dist/server/pages-response-stage-entry.d.ts +11 -0
  528. package/dist/server/pages-response-stage-entry.js +106 -0
  529. package/dist/server/pages-response-stage.d.ts +31 -0
  530. package/dist/server/pages-response-stage.js +49 -0
  531. package/dist/server/pages-revalidate.d.ts +3 -4
  532. package/dist/server/pages-revalidate.js +9 -4
  533. package/dist/server/pages-route-data-kind.d.ts +18 -0
  534. package/dist/server/pages-route-data-kind.js +11 -0
  535. package/dist/server/pages-router-entry.d.ts +1 -25
  536. package/dist/server/pages-router-entry.js +48 -114
  537. package/dist/server/pages-serializable-props.d.ts +3 -4
  538. package/dist/server/pregenerated-concrete-paths.d.ts +9 -7
  539. package/dist/server/pregenerated-concrete-paths.js +12 -6
  540. package/dist/server/prerender-cache-life-header.d.ts +3 -4
  541. package/dist/server/prerender-manifest.d.ts +11 -11
  542. package/dist/server/prerender-manifest.js +6 -3
  543. package/dist/server/prerender-route-params.d.ts +16 -9
  544. package/dist/server/prerender-route-params.js +18 -2
  545. package/dist/server/prerender-work-unit-setup.d.ts +4 -4
  546. package/dist/server/prerender-work-unit-setup.js +37 -14
  547. package/dist/server/prod-server.d.ts +12 -9
  548. package/dist/server/prod-server.js +129 -36
  549. package/dist/server/proxy-trust.d.ts +5 -6
  550. package/dist/server/request-log.d.ts +3 -4
  551. package/dist/server/request-pipeline.d.ts +17 -21
  552. package/dist/server/request-pipeline.js +8 -10
  553. package/dist/server/request-stage.d.ts +5 -0
  554. package/dist/server/request-stage.js +7 -0
  555. package/dist/server/request-tracing.d.ts +22 -0
  556. package/dist/server/request-tracing.js +180 -0
  557. package/dist/server/response-stage-cacheability.d.ts +37 -0
  558. package/dist/server/response-stage-cacheability.js +55 -0
  559. package/dist/server/response-stage-policy.d.ts +23 -0
  560. package/dist/server/response-stage-policy.js +89 -0
  561. package/dist/server/response-stage.d.ts +5 -0
  562. package/dist/server/response-stage.js +7 -0
  563. package/dist/server/response-start-tracing.d.ts +14 -0
  564. package/dist/server/response-start-tracing.js +80 -0
  565. package/dist/server/revalidation-host.d.ts +2 -3
  566. package/dist/server/revalidation-host.js +2 -1
  567. package/dist/server/revalidation-request.d.ts +8 -0
  568. package/dist/server/revalidation-request.js +37 -0
  569. package/dist/server/rsc-completion-metadata.d.ts +6 -7
  570. package/dist/server/rsc-stream-hints.d.ts +18 -7
  571. package/dist/server/rsc-stream-hints.js +70 -35
  572. package/dist/server/seed-cache.d.ts +2 -3
  573. package/dist/server/seed-cache.js +8 -7
  574. package/dist/server/server-action-not-found.d.ts +5 -6
  575. package/dist/server/server-globals.d.ts +2 -3
  576. package/dist/server/server-globals.js +13 -0
  577. package/dist/server/skip-cache-proof.d.ts +4 -4
  578. package/dist/server/socket-error-backstop.d.ts +5 -6
  579. package/dist/server/socket-error-backstop.js +1 -1
  580. package/dist/server/static-file-cache.d.ts +5 -6
  581. package/dist/server/static-file-cache.js +9 -7
  582. package/dist/server/static-file-signal.d.ts +16 -0
  583. package/dist/server/static-file-signal.js +82 -0
  584. package/dist/server/static-layout-client-reuse-proof.d.ts +4 -5
  585. package/dist/server/streaming-metadata.d.ts +2 -3
  586. package/dist/server/tracer.d.ts +5 -0
  587. package/dist/server/tracer.js +13 -0
  588. package/dist/server/worker-prerender-discovery.d.ts +18 -0
  589. package/dist/server/worker-prerender-discovery.js +55 -0
  590. package/dist/server/worker-revalidation-context.d.ts +2 -3
  591. package/dist/server/worker-revalidation-context.js +5 -5
  592. package/dist/server/worker-stages.d.ts +43 -0
  593. package/dist/server/worker-stages.js +25 -0
  594. package/dist/server/worker-utils.d.ts +5 -6
  595. package/dist/server/worker-utils.js +4 -4
  596. package/dist/server/workers-tracing.d.ts +17 -0
  597. package/dist/server/workers-tracing.js +27 -0
  598. package/dist/shims/amp.d.ts +3 -4
  599. package/dist/shims/app-router-scroll-state.d.ts +9 -10
  600. package/dist/shims/app-router-scroll.d.ts +4 -5
  601. package/dist/shims/app-router-scroll.js +2 -1
  602. package/dist/shims/app.d.ts +5 -6
  603. package/dist/shims/before-interactive-context.d.ts +5 -6
  604. package/dist/shims/cache-callable-runtime.d.ts +44 -4
  605. package/dist/shims/cache-callable-runtime.js +168 -8
  606. package/dist/shims/cache-for-request.d.ts +2 -3
  607. package/dist/shims/cache-handler.d.ts +33 -20
  608. package/dist/shims/cache-handler.js +61 -2
  609. package/dist/shims/cache-request-state.d.ts +28 -29
  610. package/dist/shims/cache-runtime.d.ts +23 -21
  611. package/dist/shims/cache-runtime.js +239 -121
  612. package/dist/shims/cache.d.ts +15 -15
  613. package/dist/shims/cache.js +25 -13
  614. package/dist/shims/cacheability-classification.d.ts +106 -0
  615. package/dist/shims/cacheability-classification.js +161 -0
  616. package/dist/shims/cdn-cache-state.d.ts +13 -0
  617. package/dist/shims/cdn-cache-state.js +23 -0
  618. package/dist/shims/cdn-cache.d.ts +76 -18
  619. package/dist/shims/cdn-cache.js +40 -39
  620. package/dist/shims/client-hook-error.d.ts +3 -4
  621. package/dist/shims/client-locale.d.ts +2 -3
  622. package/dist/shims/client-page-root.d.ts +24 -0
  623. package/dist/shims/client-page-root.js +121 -0
  624. package/dist/shims/compat-router.d.ts +2 -3
  625. package/dist/shims/config.d.ts +3 -4
  626. package/dist/shims/constants.d.ts +73 -74
  627. package/dist/shims/constants.js +1 -1
  628. package/dist/shims/default-not-found.d.ts +2 -3
  629. package/dist/shims/document.d.ts +9 -9
  630. package/dist/shims/dynamic-preload-chunks.d.ts +2 -3
  631. package/dist/shims/dynamic-preload-chunks.js +17 -13
  632. package/dist/shims/dynamic.d.ts +3 -3
  633. package/dist/shims/error-boundary-navigation.d.ts +3 -4
  634. package/dist/shims/error-boundary.d.ts +17 -18
  635. package/dist/shims/error-boundary.js +17 -11
  636. package/dist/shims/error.d.ts +4 -4
  637. package/dist/shims/error.js +1 -1
  638. package/dist/shims/error.react-server.d.ts +3 -4
  639. package/dist/shims/fetch-cache.d.ts +22 -22
  640. package/dist/shims/fetch-cache.js +50 -20
  641. package/dist/shims/font-google-base.d.ts +9 -9
  642. package/dist/shims/font-google-base.js +2 -1
  643. package/dist/shims/font-local.d.ts +3 -3
  644. package/dist/shims/font-local.js +1 -1
  645. package/dist/shims/font-utils.d.ts +14 -15
  646. package/dist/shims/form.d.ts +2 -2
  647. package/dist/shims/form.js +10 -7
  648. package/dist/shims/hash-scroll.d.ts +5 -6
  649. package/dist/shims/head-state.d.ts +4 -5
  650. package/dist/shims/head.d.ts +16 -16
  651. package/dist/shims/head.js +5 -4
  652. package/dist/shims/headers.d.ts +68 -32
  653. package/dist/shims/headers.js +101 -10
  654. package/dist/shims/i18n-context.d.ts +5 -6
  655. package/dist/shims/i18n-state.d.ts +4 -5
  656. package/dist/shims/image-config.d.ts +5 -6
  657. package/dist/shims/image-config.js +2 -0
  658. package/dist/shims/image.d.ts +5 -5
  659. package/dist/shims/image.js +12 -8
  660. package/dist/shims/internal/als-registry.d.ts +4 -5
  661. package/dist/shims/internal/api-utils.d.ts +3 -4
  662. package/dist/shims/internal/app-page-props-cache-key.d.ts +32 -4
  663. package/dist/shims/internal/app-page-props-cache-key.js +53 -1
  664. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +5 -6
  665. package/dist/shims/internal/app-prefetch-rsc-request.d.ts +13 -0
  666. package/dist/shims/internal/app-prefetch-rsc-request.js +12 -0
  667. package/dist/shims/internal/app-route-detection.d.ts +2 -2
  668. package/dist/shims/internal/app-route-prefetch-policy.d.ts +5 -6
  669. package/dist/shims/internal/app-route-prefetch-policy.js +1 -0
  670. package/dist/shims/internal/app-router-context.d.ts +9 -10
  671. package/dist/shims/internal/cookie-serialize.d.ts +4 -5
  672. package/dist/shims/internal/format-url-object.d.ts +7 -0
  673. package/dist/shims/internal/format-url-object.js +53 -0
  674. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -7
  675. package/dist/shims/internal/hybrid-client-route-owner-direct.js +29 -11
  676. package/dist/shims/internal/hybrid-client-route-owner.d.ts +3 -3
  677. package/dist/shims/internal/hybrid-client-route-owner.js +5 -4
  678. package/dist/shims/internal/interpolate-as.d.ts +5 -6
  679. package/dist/shims/internal/interpolate-as.js +4 -2
  680. package/dist/shims/internal/link-status-registry.d.ts +5 -6
  681. package/dist/shims/internal/make-hanging-promise.d.ts +8 -3
  682. package/dist/shims/internal/make-hanging-promise.js +13 -2
  683. package/dist/shims/internal/navigation-untracked.d.ts +2 -3
  684. package/dist/shims/internal/normalize-router-href.d.ts +15 -0
  685. package/dist/shims/internal/normalize-router-href.js +41 -0
  686. package/dist/shims/internal/pages-data-fetch-dedup.d.ts +8 -9
  687. package/dist/shims/internal/pages-data-target.d.ts +8 -6
  688. package/dist/shims/internal/pages-data-target.js +32 -36
  689. package/dist/shims/internal/pages-data-url.d.ts +4 -5
  690. package/dist/shims/internal/pages-data-url.js +2 -1
  691. package/dist/shims/internal/pages-router-accessor.d.ts +3 -4
  692. package/dist/shims/internal/pages-router-components.d.ts +3 -4
  693. package/dist/shims/internal/route-pattern-for-warning.d.ts +5 -6
  694. package/dist/shims/internal/route-pattern-for-warning.js +3 -3
  695. package/dist/shims/internal/router-context.d.ts +2 -3
  696. package/dist/shims/internal/thenable-well-known-properties.d.ts +10 -0
  697. package/dist/shims/internal/thenable-well-known-properties.js +33 -0
  698. package/dist/shims/internal/utils.d.ts +7 -8
  699. package/dist/shims/internal/work-unit-async-storage.d.ts +12 -11
  700. package/dist/shims/layout-segment-context.d.ts +3 -4
  701. package/dist/shims/link-prefetch.d.ts +9 -10
  702. package/dist/shims/link.d.ts +4 -4
  703. package/dist/shims/link.js +67 -116
  704. package/dist/shims/metadata.d.ts +15 -16
  705. package/dist/shims/metadata.js +40 -36
  706. package/dist/shims/navigation-context-accessors.d.ts +9 -0
  707. package/dist/shims/navigation-context-accessors.js +19 -0
  708. package/dist/shims/navigation-context-state.d.ts +27 -18
  709. package/dist/shims/navigation-errors.d.ts +18 -19
  710. package/dist/shims/navigation-state.d.ts +6 -7
  711. package/dist/shims/navigation.d.ts +80 -68
  712. package/dist/shims/navigation.js +45 -17
  713. package/dist/shims/navigation.react-server.d.ts +9 -9
  714. package/dist/shims/navigation.react-server.js +1 -1
  715. package/dist/shims/offline.d.ts +2 -3
  716. package/dist/shims/og.d.ts +2 -2
  717. package/dist/shims/pages-router-runtime.d.ts +4 -5
  718. package/dist/shims/ppr-fallback-shell.d.ts +13 -14
  719. package/dist/shims/readonly-url-search-params.d.ts +2 -3
  720. package/dist/shims/request-context.d.ts +7 -6
  721. package/dist/shims/root-params.d.ts +14 -15
  722. package/dist/shims/router-state.d.ts +5 -6
  723. package/dist/shims/router-state.js +1 -1
  724. package/dist/shims/router.d.ts +22 -21
  725. package/dist/shims/router.js +339 -164
  726. package/dist/shims/script-nonce-context.d.ts +8 -6
  727. package/dist/shims/script-nonce-context.js +15 -6
  728. package/dist/shims/script.d.ts +4 -4
  729. package/dist/shims/script.js +9 -7
  730. package/dist/shims/search-params-gate.d.ts +35 -0
  731. package/dist/shims/search-params-gate.js +32 -0
  732. package/dist/shims/server.d.ts +19 -51
  733. package/dist/shims/server.js +14 -28
  734. package/dist/shims/slot.d.ts +33 -15
  735. package/dist/shims/slot.js +41 -9
  736. package/dist/shims/streamed-icons.d.ts +3 -4
  737. package/dist/shims/thenable-params.d.ts +5 -7
  738. package/dist/shims/thenable-params.js +3 -24
  739. package/dist/shims/unified-request-context.d.ts +34 -31
  740. package/dist/shims/unified-request-context.js +34 -24
  741. package/dist/shims/unrecognized-action-error.d.ts +3 -4
  742. package/dist/shims/url-safety.d.ts +5 -6
  743. package/dist/shims/url-utils.d.ts +18 -12
  744. package/dist/shims/url-utils.js +10 -1
  745. package/dist/shims/use-merged-ref.d.ts +2 -3
  746. package/dist/shims/user-agent.d.ts +31 -0
  747. package/dist/shims/user-agent.js +16 -0
  748. package/dist/shims/web-vitals.d.ts +2 -2
  749. package/dist/typegen.d.ts +3 -4
  750. package/dist/utils/asset-prefix.d.ts +7 -8
  751. package/dist/utils/base-path.d.ts +5 -6
  752. package/dist/utils/built-asset-url.d.ts +2 -3
  753. package/dist/utils/built-asset-url.js +1 -1
  754. package/dist/utils/cache-control-metadata.d.ts +4 -5
  755. package/dist/utils/client-build-manifest.d.ts +6 -7
  756. package/dist/utils/client-build-manifest.js +2 -1
  757. package/dist/utils/client-entry-manifest.d.ts +6 -7
  758. package/dist/utils/client-runtime-metadata.d.ts +8 -3
  759. package/dist/utils/client-runtime-metadata.js +18 -1
  760. package/dist/utils/commonjs-loader.d.ts +4 -5
  761. package/dist/utils/compare.d.ts +2 -3
  762. package/dist/utils/deployment-id.d.ts +6 -7
  763. package/dist/utils/dev-error-recovery-event.d.ts +2 -3
  764. package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +2 -3
  765. package/dist/utils/domain-locale.d.ts +7 -8
  766. package/dist/utils/encode-cache-tag.d.ts +3 -4
  767. package/dist/utils/error-cause.d.ts +2 -3
  768. package/dist/utils/external-url.d.ts +2 -3
  769. package/dist/utils/has-trailing-comma.d.ts +3 -4
  770. package/dist/utils/hash.d.ts +3 -4
  771. package/dist/utils/html-limited-bots.d.ts +3 -4
  772. package/dist/utils/lazy-chunks.d.ts +8 -9
  773. package/dist/utils/lazy-chunks.js +4 -4
  774. package/dist/utils/manifest-paths.d.ts +5 -6
  775. package/dist/utils/mdx-scan.d.ts +11 -4
  776. package/dist/utils/mdx-scan.js +27 -1
  777. package/dist/utils/middleware-request-headers.d.ts +7 -6
  778. package/dist/utils/middleware-request-headers.js +6 -1
  779. package/dist/utils/navigation-signal.d.ts +3 -3
  780. package/dist/utils/navigation-signal.js +16 -1
  781. package/dist/utils/number.d.ts +2 -3
  782. package/dist/utils/package-name.d.ts +3 -4
  783. package/dist/utils/parse-cookie.d.ts +4 -5
  784. package/dist/utils/path.d.ts +8 -9
  785. package/dist/utils/plugin-options.d.ts +2 -3
  786. package/dist/utils/precompressed-variant.d.ts +3 -4
  787. package/dist/utils/prerender-output-paths.d.ts +9 -10
  788. package/dist/utils/prerender-output-paths.js +16 -9
  789. package/dist/utils/project.d.ts +19 -30
  790. package/dist/utils/project.js +20 -29
  791. package/dist/utils/promise.d.ts +2 -3
  792. package/dist/utils/protocol-headers.d.ts +14 -15
  793. package/dist/utils/public-file-path.d.ts +2 -3
  794. package/dist/utils/public-routes.d.ts +2 -3
  795. package/dist/utils/query.d.ts +14 -9
  796. package/dist/utils/query.js +22 -1
  797. package/dist/utils/react-compiler-support.d.ts +6 -7
  798. package/dist/utils/react-version.d.ts +4 -3
  799. package/dist/utils/react-version.js +19 -1
  800. package/dist/utils/record.d.ts +2 -3
  801. package/dist/utils/redirect-digest.d.ts +3 -4
  802. package/dist/utils/regex-safety.d.ts +4 -5
  803. package/dist/utils/regex.d.ts +2 -3
  804. package/dist/utils/safe-json-file.d.ts +2 -3
  805. package/dist/utils/sorted-array.d.ts +2 -3
  806. package/dist/utils/text-stream.d.ts +3 -4
  807. package/dist/utils/vinext-root.d.ts +2 -3
  808. package/dist/utils/virtual-module.d.ts +3 -4
  809. package/dist/utils/vite-cli-invocation.d.ts +21 -0
  810. package/dist/utils/vite-cli-invocation.js +144 -0
  811. package/dist/utils/vite-version.d.ts +5 -6
  812. package/next-package.json +4 -0
  813. package/package.json +55 -6
@@ -1,27 +1,30 @@
1
- import { splitPathSegments } from "../routing/utils.js";
2
- import { hasBasePath, removeTrailingSlash, stripBasePath } from "../utils/base-path.js";
1
+ import { isUnknownRecord } from "../utils/record.js";
3
2
  import { parseCookieHeader } from "../utils/parse-cookie.js";
4
- import { assertSafeNavigationUrl } from "./url-safety.js";
5
3
  import { isExternalUrl } from "../utils/external-url.js";
4
+ import { sortRoutes, splitPathSegments } from "../routing/utils.js";
5
+ import { hasBasePath, removeTrailingSlash, stripBasePath } from "../utils/base-path.js";
6
+ import { assertSafeNavigationUrl } from "./url-safety.js";
6
7
  import { addLocalePrefix, getDomainLocaleUrl, getLocalePathPrefix } from "../utils/domain-locale.js";
7
- import { isUnknownRecord } from "../utils/record.js";
8
8
  import { AppRouterContext } from "./internal/app-router-context.js";
9
9
  import { RouterContext } from "./internal/router-context.js";
10
10
  import { applyVinextLocaleGlobals, extractVinextNextDataJson, parseVinextNextDataJson } from "../client/vinext-next-data.js";
11
11
  import { isValidModulePath } from "../client/validate-module-path.js";
12
- import { fillRoutePatternSegments, matchRoutePattern, routePatternParts } from "../routing/route-pattern.js";
12
+ import { matchRoutePattern, routePattern, routePatternParts } from "../routing/route-pattern.js";
13
13
  import { NEXT_DEPLOYMENT_ID_HEADER, getDeploymentId } from "../utils/deployment-id.js";
14
14
  import { dedupedPagesDataFetch, evictPagesDataCache, fetchCachedPagesData, fetchStaticPagesData, getPagesStaticDataCache } from "./internal/pages-data-fetch-dedup.js";
15
- import { getPagesMiddlewareDataHref, prefetchPagesData, resolvePagesDataNavigationTarget } from "./internal/pages-data-target.js";
15
+ import { getPagesMiddlewareDataHref, matchesPagesMiddlewarePath, prefetchPagesData, resolvePagesDataNavigationTarget } from "./internal/pages-data-target.js";
16
16
  import { getPagesRouterComponentsMap } from "./internal/pages-router-components.js";
17
17
  import { markAppRouteDetectedOnPrefetch } from "./internal/app-route-detection.js";
18
18
  import { resolveDirectHybridClientRouteOwner } from "./internal/hybrid-client-route-owner-direct.js";
19
19
  import { installWindowNext } from "../client/window-next.js";
20
- import { getWindowOrigin, isAbsoluteOrProtocolRelativeUrl, isHashOnlyBrowserUrlChange, normalizePathTrailingSlash, toBrowserNavigationHref, toSameOriginAppPath, withBasePath } from "./url-utils.js";
21
- import { addQueryParam, appendSearchParamsToUrl, mergeRewriteQuery, mergeRouteParamsIntoQuery, parseQueryString, urlQueryToSearchParams } from "../utils/query.js";
20
+ import { getWindowOrigin, isAbsoluteOrProtocolRelativeUrl, isAbsoluteUrl, isHashOnlyBrowserUrlChange, normalizePathTrailingSlash, toBrowserNavigationHref, toSameOriginAppPath, toSameOriginPath, withBasePath } from "./url-utils.js";
21
+ import { addQueryParam, mergeRewriteQuery, mergeRouteParamsIntoQuery, parseQueryString } from "../utils/query.js";
22
22
  import { scrollToHashTarget } from "./hash-scroll.js";
23
23
  import { installPagesRouterRuntime, setPagesRouterPopStateHandler, setStampInitialHistoryState } from "./pages-router-runtime.js";
24
- import { interpolateDynamicRouteHref } from "./internal/interpolate-as.js";
24
+ import { interpolateDynamicRouteHref, resolveDynamicRouteHref } from "./internal/interpolate-as.js";
25
+ import { formatUrlObject, formatUrlObjectWithValidation } from "./internal/format-url-object.js";
26
+ import { normalizeRouterHref, resolvePagesRouterHref } from "./internal/normalize-router-href.js";
27
+ import { getCurrentRoutePathnameForWarning } from "./internal/route-pattern-for-warning.js";
25
28
  import { getCurrentBrowserLocale } from "./client-locale.js";
26
29
  import { Component, Fragment, StrictMode, createElement, useContext, useEffect, useLayoutEffect, useMemo, useState } from "react";
27
30
  //#region src/shims/router.ts
@@ -217,36 +220,69 @@ function getPagesRouterRuntimeComponents() {
217
220
  routerRuntimeState.components = components;
218
221
  return components;
219
222
  }
220
- function resolveUrl(url) {
223
+ function resolvePagesUrlPath(formatted) {
224
+ if (typeof window === "undefined") return formatted;
225
+ const routePathname = window.__NEXT_DATA__?.page ?? stripBasePath(window.location.pathname, __basePath);
226
+ const visibleAsPath = stripBasePath(window.location.pathname, __basePath) + window.location.search;
227
+ return resolvePagesRouterHref(formatted, {
228
+ pathname: routePathname,
229
+ asPath: formatted.startsWith("#") ? visibleAsPath : routePathname
230
+ }, __basePath);
231
+ }
232
+ function hasUrlObjectAuthority(url) {
233
+ return Boolean(url.host || url.hostname || url.slashes);
234
+ }
235
+ function resolveUrl(url, resolveQueryFromRoute = false) {
221
236
  if (typeof url === "string") return url;
222
- const query = url.query && typeof url.query === "object" ? url.query : void 0;
223
- const hasQuery = query !== void 0 && Object.keys(query).length > 0;
224
- const hasSearch = typeof url.search === "string" && url.search.length > 0;
225
- const hasHash = typeof url.hash === "string" && url.hash.length > 0;
226
- const inheritsVisiblePath = url.pathname === void 0 && (hasQuery || hasSearch || hasHash);
227
- let result = url.pathname ?? (typeof window !== "undefined" ? inheritsVisiblePath ? stripBasePath(window.location.pathname, __basePath) : window.__NEXT_DATA__?.page ?? stripBasePath(window.location.pathname, __basePath) : "/");
228
- if (hasSearch) {
229
- const search = url.search.startsWith("?") ? url.search : `?${url.search}`;
230
- const hashIndex = search.indexOf("#");
231
- result += hashIndex === -1 ? search : `${search.slice(0, hashIndex)}%23${search.slice(hashIndex + 1)}`;
232
- } else if (hasQuery) {
233
- const params = urlQueryToSearchParams(query);
234
- result = appendSearchParamsToUrl(result, params);
235
- } else if (hasHash && typeof window !== "undefined") result += window.location.search;
236
- if (hasHash) result += url.hash.startsWith("#") ? url.hash : `#${url.hash}`;
237
- return result;
237
+ const formatted = formatUrlObject(url);
238
+ if (url.protocol || hasUrlObjectAuthority(url) || url.pathname) return resolvePagesUrlPath(formatted);
239
+ const visiblePathname = typeof window === "undefined" ? "/" : stripBasePath(window.location.pathname, __basePath);
240
+ const routePathname = typeof window === "undefined" ? void 0 : window.__NEXT_DATA__?.page;
241
+ const matchingDynamicRoute = resolveQueryFromRoute && formatted.startsWith("?") && routePathname && extractRouteParamNames(routePathname).length > 0 && extractRouteParamsFromPath(routePathname, removeNavigationLocalePrefix(visiblePathname)) !== null ? routePathname : void 0;
242
+ return resolvePagesUrlPath((typeof window === "undefined" ? "/" : matchingDynamicRoute ?? (formatted ? visiblePathname : routePathname ?? visiblePathname)) + (formatted.startsWith("#") && typeof window !== "undefined" ? window.location.search : "") + formatted);
243
+ }
244
+ function toPreparedSameOriginPath(url) {
245
+ const appPath = toSameOriginAppPath(url, __basePath);
246
+ if (appPath !== null) return appPath;
247
+ if (!isAbsoluteUrl(url)) return null;
248
+ const localPath = toSameOriginPath(url);
249
+ if (localPath === null) return null;
250
+ const parsed = new URL(url);
251
+ return parsed.username || parsed.password ? null : localPath;
252
+ }
253
+ /** Next.js only strips a same-origin URL when the origin is a literal prefix. */
254
+ function credentialedSameOriginHref(url) {
255
+ if (!url) return void 0;
256
+ const href = resolveUrl(url);
257
+ try {
258
+ const parsed = new URL(href, window.location.href);
259
+ if (!parsed.username && !parsed.password) return void 0;
260
+ } catch {
261
+ return;
262
+ }
263
+ return toSameOriginPath(href) !== null ? href : void 0;
238
264
  }
239
- /**
240
- * When `as` is provided, use it as the navigation target. This is a
241
- * simplification: Next.js keeps `url` and `as` as separate values (url for
242
- * data fetching, as for the browser URL). We collapse them because vinext's
243
- * navigateClient() fetches HTML from the target URL, so `as` must be a
244
- * server-resolvable path. Purely decorative `as` values are not supported.
245
- * Pages error routes are handled as a narrow exception below because Next.js
246
- * treats their href as the component route while preserving `as` in history.
247
- */
248
- function resolveNavigationTarget(url, as, locale, replaceExistingLocale = false) {
249
- return applyNavigationLocale(as ?? resolveUrl(url), locale, replaceExistingLocale);
265
+ function hasUrlObjectQuery(url) {
266
+ return typeof url.query === "string" ? url.query.length > 0 : url.query !== null && typeof url.query === "object" && Object.keys(url.query).length > 0;
267
+ }
268
+ function inheritsVisiblePath(url) {
269
+ return !url.pathname && (hasUrlObjectQuery(url) || typeof url.search === "string" && url.search.length > 0 || typeof url.hash === "string" && url.hash.length > 0);
270
+ }
271
+ function prepareUrl(url) {
272
+ const routePathname = getCurrentRoutePathnameForWarning();
273
+ if (typeof url === "string") {
274
+ const normalized = normalizeRouterHref(url, routePathname);
275
+ return normalized === url ? url : resolvePagesUrlPath(normalized);
276
+ }
277
+ const formatted = formatUrlObjectWithValidation(url);
278
+ const normalized = normalizeRouterHref(formatted, routePathname);
279
+ if (normalized === formatted) return url;
280
+ if (!hasUrlObjectAuthority(url) && (url.protocol || url.pathname)) return resolvePagesUrlPath(normalized);
281
+ if (!url.pathname && normalized.startsWith("#")) return {
282
+ ...url,
283
+ hash: normalized
284
+ };
285
+ return normalized;
250
286
  }
251
287
  /**
252
288
  * Next.js's internal `_h` replacement receives browser-visible URLs, which may
@@ -266,34 +302,43 @@ function normalizeHydrationNavigationUrl(url) {
266
302
  }
267
303
  }
268
304
  var HrefInterpolationError = class extends Error {};
269
- function interpolateCurrentDynamicRoute(resolved) {
270
- if (typeof window === "undefined") return resolved;
305
+ function getHrefInterpolationError(href, routePattern, query) {
306
+ const missingParams = routePatternParts(routePattern).filter((part) => part.startsWith(":") && !part.endsWith("*")).map((part) => part.slice(1, part.endsWith("+") ? -1 : void 0)).filter((paramName) => {
307
+ const value = query[paramName];
308
+ return value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
309
+ });
310
+ return missingParams.length > 0 ? new HrefInterpolationError(`The provided \`href\` (${href}) value is missing query values (${missingParams.join(", ")}) to be interpolated properly. Read more: https://nextjs.org/docs/messages/href-interpolation-failed`) : null;
311
+ }
312
+ function resolveCurrentDynamicRoute(resolved, displayHref) {
313
+ if (typeof window === "undefined") return null;
271
314
  const routePattern = window.__NEXT_DATA__?.page;
272
- if (!routePattern || extractRouteParamNames(routePattern).length === 0) return resolved;
315
+ if (!routePattern || extractRouteParamNames(routePattern).length === 0) return null;
273
316
  try {
274
317
  const target = new URL(resolved, "http://vinext.local");
275
318
  const currentOrigin = getWindowOrigin();
276
- if (currentOrigin && target.origin !== "http://vinext.local" && target.origin !== currentOrigin) return resolved;
319
+ if (currentOrigin && target.origin !== "http://vinext.local" && target.origin !== currentOrigin) return null;
277
320
  const visiblePath = stripBasePath(window.location.pathname, __basePath);
278
321
  const visibleLocale = getLocalePathPrefix(visiblePath, window.__VINEXT_LOCALES__);
279
- if (extractRouteParamsFromPath(routePattern, visibleLocale ? visiblePath.slice(visibleLocale.length + 1) || "/" : visiblePath) === null) return resolved;
280
- const query = parseQueryString(target.search);
281
- const missingParams = routePatternParts(routePattern).filter((part) => part.startsWith(":") && !part.endsWith("*")).map((part) => part.slice(1, part.endsWith("+") ? -1 : void 0)).filter((paramName) => {
282
- const value = query[paramName];
283
- return value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
284
- });
285
- if (missingParams.length > 0) throw new HrefInterpolationError(`The provided \`href\` (${`${routePattern}${target.search}${target.hash}`}) value is missing query values (${missingParams.join(", ")}) to be interpolated properly. Read more: https://nextjs.org/docs/messages/href-interpolation-failed`);
286
- const routeParams = getRouteParamsFromQuery(routePattern, query);
287
- if (!routeParams) return resolved;
288
- const pathname = fillRoutePatternSegments(routePattern, Object.fromEntries(Object.entries(routeParams).map(([key, value]) => [key, Array.isArray(value) ? value.map(encodeURIComponent) : encodeURIComponent(value)])));
289
- if (!pathname) return resolved;
322
+ if (extractRouteParamsFromPath(routePattern, visibleLocale ? visiblePath.slice(visibleLocale.length + 1) || "/" : visiblePath) === null) return null;
323
+ const href = routePattern + target.search + target.hash;
324
+ if (displayHref !== void 0) return {
325
+ href,
326
+ as: interpolateDynamicRouteHref(href, displayHref)?.href || null
327
+ };
328
+ const dynamicRoute = resolveDynamicRouteHref(href);
329
+ if (!dynamicRoute) {
330
+ const error = getHrefInterpolationError(href, routePattern, parseQueryString(target.search));
331
+ if (error) throw error;
332
+ return null;
333
+ }
290
334
  const targetLocale = getLocalePathPrefix(target.pathname, window.__VINEXT_LOCALES__);
291
- target.pathname = targetLocale ? `/${targetLocale}${pathname}` : pathname;
292
- for (const paramName of extractRouteParamNames(routePattern)) target.searchParams.delete(paramName);
293
- return target.href.slice(target.origin.length);
335
+ return {
336
+ href,
337
+ as: targetLocale ? `/${targetLocale}${dynamicRoute.as}` : dynamicRoute.as
338
+ };
294
339
  } catch (error) {
295
340
  if (error instanceof HrefInterpolationError) throw error;
296
- return resolved;
341
+ return null;
297
342
  }
298
343
  }
299
344
  function getCurrentUrlLocale() {
@@ -327,7 +372,8 @@ function resolvePagesErrorHtmlFetchUrl(url, locale) {
327
372
  } catch {
328
373
  return null;
329
374
  }
330
- return normalizePathTrailingSlash(toBrowserNavigationHref(`${stripBasePath(parsed.pathname, __basePath)}${parsed.search}${parsed.hash}`, window.location.href, __basePath), __trailingSlash);
375
+ const fetchTarget = `${stripBasePath(parsed.pathname, __basePath)}${parsed.search}${parsed.hash}`;
376
+ return normalizePathTrailingSlash(toBrowserNavigationHref(fetchTarget, window.location.href, __basePath), __trailingSlash);
331
377
  }
332
378
  function replaceUrlPathname(url, pathname) {
333
379
  try {
@@ -361,7 +407,11 @@ function getDomainLocalePath(url, locale) {
361
407
  */
362
408
  function applyNavigationLocale(url, locale, replaceExistingLocale = false) {
363
409
  if (!locale || typeof window === "undefined") return url;
364
- if (isAbsoluteOrProtocolRelativeUrl(url)) return url;
410
+ if (isAbsoluteOrProtocolRelativeUrl(url)) {
411
+ const localPath = window.location ? toSameOriginAppPath(url, __basePath) : null;
412
+ if (localPath == null) return url;
413
+ url = localPath;
414
+ }
365
415
  if (!replaceExistingLocale && getLocalePathPrefix(url, window.__VINEXT_LOCALES__)) return url;
366
416
  const normalizedUrl = replaceExistingLocale ? removeNavigationLocalePrefix(url) : url;
367
417
  const domainLocalePath = getDomainLocalePath(normalizedUrl, locale);
@@ -394,7 +444,8 @@ function isDefaultLocaleRootNavigation(url, locale) {
394
444
  function getPagesHtmlFetchUrl(browserUrl, locale) {
395
445
  if (!isDefaultLocaleRootNavigation(browserUrl, locale)) return browserUrl;
396
446
  const parsed = new URL(browserUrl, window.location.href);
397
- return normalizePathTrailingSlash(toBrowserNavigationHref(`${normalizePathTrailingSlash(`/${locale}`, __trailingSlash)}${parsed.search}${parsed.hash}`, window.location.href, __basePath), __trailingSlash);
447
+ const localeRoot = normalizePathTrailingSlash(`/${locale}`, __trailingSlash);
448
+ return normalizePathTrailingSlash(toBrowserNavigationHref(`${localeRoot}${parsed.search}${parsed.hash}`, window.location.href, __basePath), __trailingSlash);
398
449
  }
399
450
  /** Resolve a hash URL to the browser-visible URL used by Next.js router events. */
400
451
  function resolveHashUrl(url) {
@@ -413,6 +464,15 @@ function isHashOnlyChange(href) {
413
464
  if (typeof window === "undefined") return false;
414
465
  return isHashOnlyBrowserUrlChange(href, window.location.href, __basePath);
415
466
  }
467
+ function toHistoryAppPath(url) {
468
+ const localUrl = isAbsoluteUrl(url) ? toSameOriginPath(url) ?? url : url;
469
+ if (!localUrl.startsWith("/") || localUrl.startsWith("//")) return url;
470
+ if (!__basePath) return localUrl;
471
+ const suffixIndex = localUrl.search(/[?#]/);
472
+ const pathname = suffixIndex === -1 ? localUrl : localUrl.slice(0, suffixIndex);
473
+ if (!hasBasePath(pathname, __basePath)) return localUrl;
474
+ return stripBasePath(pathname, __basePath) + (suffixIndex === -1 ? "" : localUrl.slice(suffixIndex));
475
+ }
416
476
  /**
417
477
  * Build router-shaped state for the initial document entry. Captures the
418
478
  * active locale (from `window.__VINEXT_LOCALE__`) so a back-navigation
@@ -421,12 +481,18 @@ function isHashOnlyChange(href) {
421
481
  * navigates back.
422
482
  */
423
483
  function buildInitialRouterState() {
424
- const appPath = stripBasePath(window.location.pathname, __basePath) + window.location.search;
484
+ const browserPath = window.location.pathname + window.location.search;
485
+ const nextData = window.__NEXT_DATA__;
486
+ const middlewareMatches = nextData?.__vinext?.hasMiddleware && matchesPagesMiddlewarePath(stripBasePath(window.location.pathname, __basePath));
487
+ const routeUrl = normalizePathTrailingSlash(nextData?.page && !middlewareMatches ? withBasePath(formatUrlObject({
488
+ pathname: nextData.page,
489
+ query: mergeRouteParamsIntoQuery(parseQueryString(browserPath), nextData.query ?? {})
490
+ }), __basePath) : browserPath, __trailingSlash);
425
491
  const options = {};
426
492
  if (window.__VINEXT_LOCALE__ !== void 0) options.locale = window.__VINEXT_LOCALE__;
427
493
  return {
428
- url: appPath,
429
- as: appPath,
494
+ url: routeUrl,
495
+ as: browserPath,
430
496
  options,
431
497
  __N: true,
432
498
  key: createHistoryKey()
@@ -434,8 +500,8 @@ function buildInitialRouterState() {
434
500
  }
435
501
  /**
436
502
  * Stamp the initial document entry with router-shaped state (only if no
437
- * state is present). Called once at runtime install so the entry has a
438
- * locale stamped before any push could overwrite the active locale global.
503
+ * state is present). An early next/router import may precede the generated
504
+ * entry's __NEXT_DATA__ and matcher setup, so the ready transition retries it.
439
505
  */
440
506
  function stampInitialHistoryState() {
441
507
  installManualScrollRestoration();
@@ -445,6 +511,8 @@ function stampInitialHistoryState() {
445
511
  routerRuntimeState.currentHistoryKey = getRouterStateKey(existingState) ?? routerRuntimeState.currentHistoryKey;
446
512
  return;
447
513
  }
514
+ const nextData = window.__NEXT_DATA__;
515
+ if (!nextData || nextData.__vinext?.hasMiddleware && !Object.hasOwn(window, "__VINEXT_MIDDLEWARE_MATCHER__")) return;
448
516
  const initialState = buildInitialRouterState();
449
517
  routerRuntimeState.currentHistoryKey = initialState.key;
450
518
  window.history.replaceState(initialState, "");
@@ -739,12 +807,13 @@ function getCurrentHistoryAsPath() {
739
807
  try {
740
808
  const browserUrl = new URL(window.location.href);
741
809
  const stateLocale = state.options.locale === false ? void 0 : state.options.locale;
742
- const localizedStateAs = applyNavigationLocale(state.as, stateLocale);
810
+ const stateAs = toHistoryAppPath(state.as);
811
+ const localizedStateAs = applyNavigationLocale(stateAs, stateLocale);
743
812
  const stateUrl = new URL(toBrowserNavigationHref(localizedStateAs, window.location.href, __basePath), window.location.href);
744
813
  if (stateUrl.pathname !== browserUrl.pathname || stateUrl.search !== browserUrl.search) return null;
745
- const stateAs = removeNavigationLocalePrefix(stripHash(state.as));
814
+ const appAs = removeNavigationLocalePrefix(stripHash(stateAs));
746
815
  const visibleAs = `${removeNavigationLocalePrefix(stripBasePath(window.location.pathname, __basePath))}${window.location.search}`;
747
- return `${stateAs || visibleAs}${window.location.hash}`;
816
+ return `${appAs || visibleAs}${window.location.hash}`;
748
817
  } catch {
749
818
  return null;
750
819
  }
@@ -780,6 +849,7 @@ function markPagesRouterReady() {
780
849
  }
781
850
  function initializePagesRouterReadyFromNextData(nextData, forceReady = false) {
782
851
  if (typeof window === "undefined") return;
852
+ stampInitialHistoryState();
783
853
  routerRuntimeState.pagesRouterReady = forceReady || getPagesNavigationIsReadyFromSerializedState(nextData.page, window.location.search, nextData);
784
854
  }
785
855
  function markPagesRouterHydrated() {
@@ -1000,7 +1070,8 @@ function matchSimpleClientConfigPattern(pathname, source) {
1000
1070
  }
1001
1071
  function simpleClientConfigSourceCouldMatch(pathname, source) {
1002
1072
  const wildcardIndex = source.search(/[:(\\*+?]/);
1003
- const normalizedPrefix = removeTrailingSlash(wildcardIndex === -1 ? source : source.slice(0, wildcardIndex));
1073
+ const literalPrefix = wildcardIndex === -1 ? source : source.slice(0, wildcardIndex);
1074
+ const normalizedPrefix = removeTrailingSlash(literalPrefix);
1004
1075
  if (!normalizedPrefix || normalizedPrefix === "/") return true;
1005
1076
  const normalizedPathname = removeTrailingSlash(pathname);
1006
1077
  return normalizedPathname === normalizedPrefix || normalizedPathname.startsWith(`${normalizedPrefix}/`);
@@ -1094,8 +1165,8 @@ async function resolveClientConfigRewrite(href) {
1094
1165
  kind: "rewrite"
1095
1166
  } : null;
1096
1167
  }
1097
- function getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget) {
1098
- const middlewareDataHref = getPagesMiddlewareDataHref(browserUrl, __basePath, dataTarget?.prefetchLocale ? { locale: dataTarget.prefetchLocale } : void 0);
1168
+ function getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget, routeUrl = browserUrl) {
1169
+ const middlewareDataHref = getPagesMiddlewareDataHref(browserUrl, __basePath, dataTarget?.prefetchLocale ? { locale: dataTarget.prefetchLocale } : void 0, routeUrl);
1099
1170
  if (!middlewareDataHref) return null;
1100
1171
  if (dataTarget?.dataKind === "static" && dataTarget.middlewareDataHref === middlewareDataHref && dataTarget.prefetchDataHref) return dataTarget.prefetchDataHref;
1101
1172
  return middlewareDataHref;
@@ -1110,8 +1181,8 @@ function getPagesDataCacheHref(dataHref) {
1110
1181
  function shouldEvictMiddlewareDataCache(middlewareEffect, dataTarget) {
1111
1182
  return middlewareEffect?.redirectLocation != null || dataTarget?.dataKind !== "static";
1112
1183
  }
1113
- async function resolveMiddlewareDataEffect(browserUrl, signal, dataTarget) {
1114
- const dataUrl = getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget);
1184
+ async function resolveMiddlewareDataEffect(browserUrl, signal, dataTarget, routeUrl = browserUrl) {
1185
+ const dataUrl = getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget, routeUrl);
1115
1186
  if (!dataUrl) return null;
1116
1187
  if (signal.aborted) throw new DOMException("Aborted", "AbortError");
1117
1188
  try {
@@ -1409,6 +1480,7 @@ async function navigateClientHtml(url, fetchUrl, controller, navId, assertStillC
1409
1480
  scheduleHardNavigationAndThrow(url, "Navigation failed: missing __NEXT_DATA__ in response");
1410
1481
  }
1411
1482
  const nextData = parseVinextNextDataJson(nextDataJson);
1483
+ if (options.routePattern && nextData.page !== options.routePattern) scheduleHardNavigationAndThrow(browserUrl, "Navigation fallback resolved a different page");
1412
1484
  let nextDataRouteState = options.nextDataRouteState;
1413
1485
  let isDevelopmentNotFound = false;
1414
1486
  if (res.status === 404 && options.allowNotFoundResponse !== true && (nextData.page === "/404" || nextData.page === "/_error") && typeof nextData.notFoundSrcPage === "string") {
@@ -1455,19 +1527,34 @@ async function navigateClientHtml(url, fetchUrl, controller, navId, assertStillC
1455
1527
  assertStillCurrent();
1456
1528
  const PageComponent = pageModule.default;
1457
1529
  if (!isPageComponent(PageComponent)) scheduleHardNavigationAndThrow(browserUrl, "Navigation failed: page module default export is not a component");
1530
+ const pageLoaders = window.__VINEXT_PAGE_LOADERS__ ??= {};
1531
+ pageLoaders[nextData.page] ??= () => Promise.resolve(pageModule);
1532
+ const pagePatterns = window.__VINEXT_PAGE_PATTERNS__ ??= [];
1533
+ if (!pagePatterns.includes(nextData.page)) {
1534
+ pagePatterns.push(nextData.page);
1535
+ const sortedPatterns = sortRoutes(pagePatterns.map((pagePattern) => ({
1536
+ pagePattern,
1537
+ pattern: routePattern(pagePattern)
1538
+ })));
1539
+ pagePatterns.splice(0, pagePatterns.length, ...sortedPatterns.map(({ pagePattern }) => pagePattern));
1540
+ _cachedPagesRoutePatternKey = null;
1541
+ _cachedPagesRoutePattern = void 0;
1542
+ }
1458
1543
  const React = (await import("react")).default;
1459
1544
  assertStillCurrent();
1460
1545
  let AppComponent = window.__VINEXT_APP__;
1461
1546
  const appModuleUrl = nextData.__vinext?.appModuleUrl;
1462
- if (!AppComponent && appModuleUrl) if (!isValidModulePath(appModuleUrl)) console.error("[vinext] Blocked import of invalid app module path:", appModuleUrl);
1463
- else try {
1464
- const appModule = await import(
1465
- /* @vite-ignore */
1466
- appModuleUrl
1547
+ if (!AppComponent && appModuleUrl) {
1548
+ if (!isValidModulePath(appModuleUrl)) console.error("[vinext] Blocked import of invalid app module path:", appModuleUrl);
1549
+ else try {
1550
+ const appModule = await import(
1551
+ /* @vite-ignore */
1552
+ appModuleUrl
1467
1553
  );
1468
- AppComponent = isAppComponent(appModule.default) ? appModule.default : void 0;
1469
- window.__VINEXT_APP__ = AppComponent;
1470
- } catch {}
1554
+ AppComponent = isAppComponent(appModule.default) ? appModule.default : void 0;
1555
+ window.__VINEXT_APP__ = AppComponent;
1556
+ } catch {}
1557
+ }
1471
1558
  assertStillCurrent();
1472
1559
  let element;
1473
1560
  if (AppComponent) element = React.createElement(AppComponent, {
@@ -1518,6 +1605,7 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
1518
1605
  else {
1519
1606
  let browserUrl = url;
1520
1607
  let htmlFetchUrl = fetchUrl;
1608
+ const routeMasked = options.routeMasked ?? routeUrl !== url;
1521
1609
  const configRedirect = hasClientRedirectRules() && clientConfigRedirectCouldMatch(browserUrl) ? await resolveClientConfigRedirect(browserUrl) : null;
1522
1610
  if (configRedirect) {
1523
1611
  const redirectedUrl = resolveLocalRedirectUrl(configRedirect);
@@ -1525,32 +1613,41 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
1525
1613
  throw new InternalNavigationRedirect(redirectedUrl);
1526
1614
  }
1527
1615
  let routeLookupUrl = routeUrl;
1528
- if (routeUrl === url && hasClientRewriteRules()) {
1616
+ let routePattern = options.routePattern;
1617
+ if (!routeMasked && hasClientRewriteRules()) {
1529
1618
  const syncConfigRewrite = hasClientAppRouteManifest() ? void 0 : resolveClientConfigRewriteSync(browserUrl);
1530
1619
  const configRewrite = syncConfigRewrite === void 0 ? await resolveClientConfigRewrite(browserUrl) : syncConfigRewrite;
1531
1620
  if (configRewrite?.kind === "document") scheduleHardNavigationAndThrow(browserUrl, "Navigation rewritten to a document route");
1532
1621
  else if (configRewrite?.kind === "rewrite") {
1533
1622
  routeLookupUrl = configRewrite.href;
1534
1623
  htmlFetchUrl = configRewrite.href;
1624
+ routePattern = void 0;
1535
1625
  }
1536
1626
  }
1537
- const pagesDataTargetOptions = { locale: options.locale };
1627
+ const pagesDataTargetOptions = {
1628
+ locale: options.locale,
1629
+ routePattern
1630
+ };
1631
+ const middlewareTargetOptions = { locale: options.locale };
1538
1632
  let dataTarget = resolvePagesDataNavigationTarget(routeLookupUrl, __basePath, pagesDataTargetOptions);
1539
1633
  let middlewareDataResponse;
1540
1634
  let middlewareEffect = null;
1541
1635
  let middlewareRewrittenTarget;
1542
- const middlewareProbeDataHref = getMiddlewarePagesDataFetchUrl(browserUrl, dataTarget);
1636
+ const middlewareUrl = routeMasked ? browserUrl : routeUrl;
1637
+ const middlewareProbeDataHref = getMiddlewarePagesDataFetchUrl(middlewareUrl, dataTarget, routeUrl);
1543
1638
  if (middlewareProbeDataHref !== null) {
1544
1639
  middlewareDataCacheEvictHref = getPagesDataCacheHref(middlewareProbeDataHref);
1545
1640
  try {
1546
- middlewareEffect = await resolveMiddlewareDataEffect(browserUrl, controller.signal, dataTarget);
1641
+ middlewareEffect = await resolveMiddlewareDataEffect(middlewareUrl, controller.signal, dataTarget, routeUrl);
1547
1642
  } catch (err) {
1548
1643
  if (err instanceof DOMException && err.name === "AbortError") throw new NavigationCancelledError(browserUrl);
1549
1644
  throw err;
1550
1645
  }
1551
- if (middlewareEffect?.rewriteTarget) middlewareRewrittenTarget = resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath, pagesDataTargetOptions);
1552
- if (middlewareEffect) if (shouldEvictMiddlewareDataCache(middlewareEffect, middlewareRewrittenTarget !== void 0 ? middlewareRewrittenTarget : dataTarget)) middlewareDataCacheEvictHref = middlewareEffect.dataHref;
1553
- else middlewareDataCacheEvictHref = null;
1646
+ if (middlewareEffect?.rewriteTarget) middlewareRewrittenTarget = resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath, middlewareTargetOptions);
1647
+ if (middlewareEffect) {
1648
+ if (shouldEvictMiddlewareDataCache(middlewareEffect, middlewareRewrittenTarget !== void 0 ? middlewareRewrittenTarget : dataTarget)) middlewareDataCacheEvictHref = middlewareEffect.dataHref;
1649
+ else middlewareDataCacheEvictHref = null;
1650
+ }
1554
1651
  assertStillCurrent();
1555
1652
  }
1556
1653
  const redirectLocation = middlewareEffect?.redirectLocation ?? null;
@@ -1559,14 +1656,14 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
1559
1656
  if (!redirectedUrl) scheduleHardNavigationAndThrow(redirectLocation, "Navigation redirected externally");
1560
1657
  throw new InternalNavigationRedirect(redirectedUrl);
1561
1658
  } else if (middlewareEffect) {
1562
- if (middlewareEffect.rewriteTarget || routeUrl === url) middlewareDataResponse = middlewareEffect.response;
1659
+ if (middlewareEffect.rewriteTarget || !routeMasked) middlewareDataResponse = middlewareEffect.response;
1563
1660
  if (middlewareEffect.rewriteTarget) {
1564
1661
  const rewrittenOwner = resolveDirectHybridClientRouteOwner(middlewareEffect.rewriteTarget, __basePath);
1565
1662
  if (rewrittenOwner === "app" || rewrittenOwner === "document") {
1566
1663
  options.beforeHistoryChange?.();
1567
1664
  scheduleHardNavigationAndThrow(browserUrl, "Navigation rewritten to a non-Pages route");
1568
1665
  }
1569
- const rewrittenTarget = middlewareRewrittenTarget ?? resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath, pagesDataTargetOptions);
1666
+ const rewrittenTarget = middlewareRewrittenTarget ?? resolvePagesDataNavigationTarget(middlewareEffect.rewriteTarget, __basePath, middlewareTargetOptions);
1570
1667
  if (!rewrittenTarget) {
1571
1668
  options.beforeHistoryChange?.();
1572
1669
  scheduleHardNavigationAndThrow(browserUrl, "Navigation rewritten to a non-Pages route");
@@ -1576,9 +1673,13 @@ async function navigateClient(url, fetchUrl = url, options = {}, routeUrl = url)
1576
1673
  }
1577
1674
  if (middlewareEffect && shouldEvictMiddlewareDataCache(middlewareEffect, dataTarget)) middlewareDataCacheEvictHref = middlewareEffect.dataHref;
1578
1675
  else if (middlewareEffect) middlewareDataCacheEvictHref = null;
1676
+ if (middlewareEffect?.rewriteTarget) routePattern = void 0;
1579
1677
  if (dataTarget?.dataKind === "static" || dataTarget?.dataKind === "server") await navigateClientData(browserUrl, dataTarget, controller, navId, assertStillCurrent, options, middlewareDataResponse);
1580
1678
  else if (dataTarget) await navigateClientNoData(browserUrl, dataTarget, controller, assertStillCurrent, options);
1581
- else await navigateClientHtml(browserUrl, htmlFetchUrl, controller, navId, assertStillCurrent, options);
1679
+ else await navigateClientHtml(browserUrl, htmlFetchUrl, controller, navId, assertStillCurrent, {
1680
+ ...options,
1681
+ routePattern
1682
+ });
1582
1683
  }
1583
1684
  } finally {
1584
1685
  if (navId === routerRuntimeState.navigationId) routerRuntimeState.activeAbortController = null;
@@ -1669,7 +1770,7 @@ function dispatchNavigateEvent() {
1669
1770
  * @param fullUrl absolute URL committed to the browser (with basePath)
1670
1771
  * @param navState router-level metadata (`url`, `as`, `options`) the popstate
1671
1772
  * handler needs to honour stickiness — most importantly the active
1672
- * locale and the canonical app-relative `as` path.
1773
+ * locale and the Next-compatible basePath-prefixed `as` path.
1673
1774
  */
1674
1775
  function updateHistory(mode, fullUrl, navState) {
1675
1776
  const previousKey = getRouterStateKey(window.history.state);
@@ -1711,9 +1812,8 @@ function throwNoRouterInstance() {
1711
1812
  /**
1712
1813
  * Shared client-side navigation flow used by both `useRouter()` and the
1713
1814
  * `Router` singleton. The only differences between push/replace are the
1714
- * history method (`pushState` vs `replaceState`), the external-URL fallback
1715
- * (`assign` vs `replace`), and the fact that push saves scroll position for
1716
- * back/forward restoration while replace does not.
1815
+ * history method (`pushState` vs `replaceState`) and the fact that push saves
1816
+ * scroll position for back/forward restoration while replace does not.
1717
1817
  *
1718
1818
  * `onStateUpdate` lets the hook trigger a `setState` re-render at the same
1719
1819
  * point that hashChangeComplete/routeChangeComplete fires; the singleton
@@ -1721,36 +1821,69 @@ function throwNoRouterInstance() {
1721
1821
  */
1722
1822
  async function performNavigation(url, as, options, mode, onStateUpdate, redirectBrowserHref) {
1723
1823
  if (typeof window === "undefined") throwNoRouterInstance();
1824
+ const inputHref = resolveUrl(url);
1825
+ const sameOriginPath = isAbsoluteUrl(inputHref) ? toSameOriginPath(inputHref) : null;
1826
+ const origin = getWindowOrigin();
1827
+ const absoluteHistoryUrl = sameOriginPath === null ? void 0 : origin && inputHref.startsWith(origin) ? inputHref.slice(origin.length) : sameOriginPath;
1828
+ const currentRoute = window.__NEXT_DATA__?.page ?? stripBasePath(window.location.pathname, __basePath);
1829
+ const currentAs = stripBasePath(window.location.pathname, __basePath) + window.location.search;
1830
+ const preparedHistoryHref = (isAbsoluteUrl(inputHref) ? toSameOriginAppPath(inputHref, __basePath) : null) ?? absoluteHistoryUrl ?? resolvePagesRouterHref(inputHref, {
1831
+ pathname: currentRoute,
1832
+ asPath: currentAs
1833
+ }, __basePath);
1834
+ const isQueryOnlyString = typeof url === "string" && url.startsWith("?");
1835
+ const urlInheritsCurrentPath = typeof url === "string" && (isQueryOnlyString || options?._vinextInterpolateDynamicRoute === true) || typeof url !== "string" && !url.pathname && (hasUrlObjectQuery(url) || typeof url.search === "string" && url.search.length > 0);
1836
+ const replaceInheritedLocale = options?.locale !== void 0 && (!as ? urlInheritsCurrentPath || typeof url !== "string" && inheritsVisiblePath(url) : typeof as !== "string" && inheritsVisiblePath(as));
1837
+ const credentialedHistoryHref = credentialedSameOriginHref(url);
1838
+ const credentialedDisplayHref = credentialedSameOriginHref(as) ?? (!as ? credentialedHistoryHref : void 0);
1839
+ as = as ? resolveUrl(as, true) : void 0;
1724
1840
  assertSafeNavigationUrl(resolveUrl(url));
1725
- if (as !== void 0) assertSafeNavigationUrl(String(as));
1841
+ if (as !== void 0) assertSafeNavigationUrl(as);
1726
1842
  const isHydrationQueryUpdate = options?._h === 1;
1727
1843
  const navigationLocale = resolveTransitionLocale(options?.locale);
1728
- const replaceInheritedLocale = as === void 0 && options?.locale !== void 0 && typeof url !== "string" && url.pathname === void 0 && (url.query !== null && typeof url.query === "object" && Object.keys(url.query).length > 0 || typeof url.search === "string" && url.search.length > 0 || typeof url.hash === "string" && url.hash.length > 0);
1729
- let resolved = isHydrationQueryUpdate ? normalizeHydrationNavigationUrl(as ?? resolveUrl(url)) : resolveNavigationTarget(url, as, navigationLocale, replaceInheritedLocale);
1730
- let resolvedRoute = isHydrationQueryUpdate ? normalizeHydrationNavigationUrl(resolveUrl(url)) : applyNavigationLocale(resolveUrl(url), navigationLocale, replaceInheritedLocale);
1731
- if (as === void 0 && (typeof url === "string" && options?._vinextInterpolateDynamicRoute === true || typeof url !== "string" && url.pathname === void 0 && (url.query !== null && typeof url.query === "object" && Object.keys(url.query).length > 0 || typeof url.search === "string" && url.search.length > 0))) {
1732
- resolved = interpolateCurrentDynamicRoute(resolved);
1733
- resolvedRoute = interpolateCurrentDynamicRoute(resolvedRoute);
1844
+ const unlocalizedRouteHref = resolveUrl(isQueryOnlyString ? `${stripBasePath(window.location.pathname, __basePath)}${url}` : url);
1845
+ const localRouteHref = isExternalUrl(unlocalizedRouteHref) ? toSameOriginAppPath(unlocalizedRouteHref, __basePath) : unlocalizedRouteHref;
1846
+ const implicitDynamicRoute = !isHydrationQueryUpdate && as === void 0 && localRouteHref !== null ? resolveDynamicRouteHref(localRouteHref) : null;
1847
+ const routeForNavigation = implicitDynamicRoute?.as ?? unlocalizedRouteHref;
1848
+ let resolved = isHydrationQueryUpdate ? normalizeHydrationNavigationUrl(as ?? resolveUrl(url)) : applyNavigationLocale(as ?? resolveUrl(routeForNavigation), navigationLocale, replaceInheritedLocale);
1849
+ let resolvedRoute = isHydrationQueryUpdate ? normalizeHydrationNavigationUrl(resolveUrl(url)) : applyNavigationLocale(routeForNavigation, navigationLocale, replaceInheritedLocale);
1850
+ let routeIdentityHref = implicitDynamicRoute ? removeNavigationLocalePrefix(implicitDynamicRoute.href) : void 0;
1851
+ if (urlInheritsCurrentPath) {
1852
+ const internalDynamicRoute = resolveCurrentDynamicRoute(unlocalizedRouteHref, as);
1853
+ if (internalDynamicRoute) {
1854
+ if (internalDynamicRoute.as) {
1855
+ const localizedRoute = applyNavigationLocale(internalDynamicRoute.as, navigationLocale, replaceInheritedLocale);
1856
+ if (as === void 0) resolved = localizedRoute;
1857
+ resolvedRoute = localizedRoute;
1858
+ } else resolvedRoute = internalDynamicRoute.href;
1859
+ routeIdentityHref = internalDynamicRoute.href;
1860
+ }
1861
+ }
1862
+ if (isExternalUrl(resolvedRoute)) {
1863
+ const localPath = toPreparedSameOriginPath(resolvedRoute);
1864
+ if (localPath == null) {
1865
+ window.location.href = resolvedRoute;
1866
+ return false;
1867
+ }
1868
+ resolvedRoute = localPath;
1734
1869
  }
1735
1870
  if (isExternalUrl(resolved)) {
1736
- const localPath = toSameOriginAppPath(resolved, __basePath);
1871
+ const localPath = toPreparedSameOriginPath(resolved);
1737
1872
  if (localPath == null) {
1738
- if (mode === "push") window.location.assign(resolved);
1739
- else window.location.replace(resolved);
1740
- return true;
1873
+ if (process.env.NODE_ENV !== "production") throw new Error(`Invalid href: "${toBrowserNavigationHref(resolvedRoute, window.location.href, __basePath)}" and as: "${resolved}", received relative href and external as
1874
+ See more info: https://nextjs.org/docs/messages/invalid-relative-url-external-as`);
1875
+ window.location.href = resolved;
1876
+ return false;
1741
1877
  }
1742
1878
  resolved = localPath;
1743
1879
  }
1744
- if (isExternalUrl(resolvedRoute)) {
1745
- const localPath = toSameOriginAppPath(resolvedRoute, __basePath);
1746
- if (localPath != null) resolvedRoute = localPath;
1747
- }
1748
1880
  resolved = normalizePathTrailingSlash(resolved, __trailingSlash);
1749
1881
  resolvedRoute = normalizePathTrailingSlash(resolvedRoute, __trailingSlash);
1750
1882
  let interpolatedRoute = resolvedRoute;
1751
1883
  if (resolvedRoute.includes("[")) {
1752
- const projection = interpolateDynamicRouteHref(resolvedRoute, resolved, typeof url === "string" || !url.query || typeof url.query === "string" ? void 0 : url.query);
1884
+ const projection = interpolateDynamicRouteHref(resolvedRoute, resolved, typeof url === "string" || url.search || !url.query || typeof url.query === "string" ? void 0 : url.query);
1753
1885
  if (projection?.href) {
1886
+ routeIdentityHref ??= removeNavigationLocalePrefix(resolvedRoute);
1754
1887
  interpolatedRoute = projection.href;
1755
1888
  if (as === void 0 && stripHash(resolved).split("?", 1)[0] === projection.routePathname) {
1756
1889
  const remaining = new URLSearchParams();
@@ -1766,16 +1899,14 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
1766
1899
  resolved = normalizePathTrailingSlash(`${projection.href.split(/[?#]/, 1)[0]}${searchStr ? `?${searchStr}` : ""}${hashStr}`, __trailingSlash);
1767
1900
  }
1768
1901
  } else {
1769
- const missingParams = projection ? routePatternParts(projection.routePathname).filter((part) => part.startsWith(":") && !part.endsWith("*")).map((part) => part.slice(1, part.endsWith("+") ? -1 : void 0)).filter((paramName) => {
1770
- const value = projection.query[paramName];
1771
- return value === void 0 || value === "" || Array.isArray(value) && value.length === 0;
1772
- }) : [];
1773
- const hasExplicitHrefPathname = typeof url === "string" || url.pathname !== void 0;
1902
+ const hrefInterpolationError = projection ? getHrefInterpolationError(resolvedRoute, projection.routePathname, projection.query) : null;
1903
+ const hasExplicitHrefPathname = typeof url === "string" || !urlInheritsCurrentPath;
1774
1904
  const isMiddlewareMatch = options?.shallow !== true && getPagesMiddlewareDataHref(resolved, __basePath, { locale: navigationLocale }) !== null;
1775
- if (missingParams.length > 0 && hasExplicitHrefPathname && !isMiddlewareMatch) {
1905
+ if (hrefInterpolationError && hasExplicitHrefPathname && !isMiddlewareMatch) {
1776
1906
  const asPathname = stripHash(resolved).split("?", 1)[0];
1777
1907
  const routePathname = projection?.routePathname ?? stripHash(resolvedRoute).split("?", 1)[0];
1778
- throw new HrefInterpolationError(asPathname === routePathname ? `The provided \`href\` (${resolvedRoute}) value is missing query values (${missingParams.join(", ")}) to be interpolated properly. Read more: https://nextjs.org/docs/messages/href-interpolation-failed` : `The provided \`as\` value (${asPathname}) is incompatible with the \`href\` value (${routePathname}). Read more: https://nextjs.org/docs/messages/incompatible-href-as`);
1908
+ if (asPathname === routePathname) throw hrefInterpolationError;
1909
+ throw new HrefInterpolationError(`The provided \`as\` value (${asPathname}) is incompatible with the \`href\` value (${routePathname}). Read more: https://nextjs.org/docs/messages/incompatible-href-as`);
1779
1910
  }
1780
1911
  interpolatedRoute = resolved;
1781
1912
  }
@@ -1787,50 +1918,59 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
1787
1918
  if (parsed.origin === getWindowOrigin()) browserEventUrl = parsed.pathname + parsed.search + parsed.hash;
1788
1919
  } catch {}
1789
1920
  const fullRouteUrl = interpolatedRoute !== resolved ? normalizePathTrailingSlash(toBrowserNavigationHref(interpolatedRoute, window.location.href, __basePath), __trailingSlash) : full;
1921
+ if (routeIdentityHref && !routeIdentityHref.startsWith("/") && !isAbsoluteUrl(routeIdentityHref)) routeIdentityHref = resolvePagesRouterHref(routeIdentityHref, {
1922
+ pathname: currentRoute,
1923
+ asPath: currentAs
1924
+ }, __basePath);
1925
+ const routeFetchUrl = routeIdentityHref ? replaceUrlPathname(routeIdentityHref, new URL(fullRouteUrl, window.location.href).pathname) : void 0;
1790
1926
  const errorRouteHtmlFetchUrl = resolvePagesErrorHtmlFetchUrl(url, navigationLocale);
1791
- const htmlFetchUrl = errorRouteHtmlFetchUrl ?? getPagesHtmlFetchUrl(fullRouteUrl, navigationLocale);
1927
+ const htmlFetchUrl = errorRouteHtmlFetchUrl ?? getPagesHtmlFetchUrl(routeFetchUrl ?? fullRouteUrl, navigationLocale);
1792
1928
  const shallow = options?.shallow ?? false;
1793
1929
  const doScroll = options?.scroll !== false;
1794
1930
  const hash = extractHash(resolved);
1795
- const scrollTarget = doScroll ? {
1796
- x: 0,
1797
- y: 0
1798
- } : null;
1799
- const navigateOptions = errorRouteHtmlFetchUrl ? {
1800
- allowNotFoundResponse: true,
1931
+ const navigateOptions = {
1932
+ allowNotFoundResponse: errorRouteHtmlFetchUrl !== null,
1801
1933
  locale: navigationLocale,
1802
1934
  mode,
1803
- scroll: scrollTarget,
1804
- isHydrationQueryUpdate: options?._h === 1
1805
- } : {
1806
- locale: navigationLocale,
1807
- mode,
1808
- scroll: scrollTarget,
1935
+ scroll: doScroll ? {
1936
+ x: 0,
1937
+ y: 0
1938
+ } : null,
1809
1939
  isHydrationQueryUpdate: options?._h === 1
1810
1940
  };
1811
1941
  if (redirectBrowserHref !== void 0) navigateOptions.redirectBrowserHref = redirectBrowserHref;
1812
- const currentLocale = getCurrentUrlLocale();
1813
- if (mode === "push" && interpolatedRoute !== resolved && stripHash(full) === routerRuntimeState.lastPathnameAndSearch && navigationLocale === currentLocale) mode = "replace";
1942
+ navigateOptions.routeMasked = as !== void 0 && stripHash(interpolatedRoute).split("?", 1)[0] !== stripHash(resolved).split("?", 1)[0];
1943
+ if (routeIdentityHref) navigateOptions.routePattern = removeTrailingSlash(stripHash(routeIdentityHref).split("?", 1)[0]);
1944
+ const isHashOnlyNavigation = options?._h !== 1 && isHashOnlyChange(full);
1814
1945
  const navStateOptions = { shallow };
1815
1946
  if (navigationLocale !== void 0) navStateOptions.locale = navigationLocale;
1816
- const resolvedNoHash = stripHash(resolved);
1947
+ const currentAppUrl = stripBasePath(window.location.pathname, __basePath) + window.location.search;
1948
+ const historyRouteUrl = routeIdentityHref ?? (redirectBrowserHref === void 0 ? preparedHistoryHref : interpolatedRoute);
1949
+ const absoluteInputHistoryUrl = redirectBrowserHref === void 0 && absoluteHistoryUrl !== void 0 && (__basePath === "" || !hasBasePath(new URL(absoluteHistoryUrl, window.location.href).pathname, __basePath)) ? absoluteHistoryUrl : void 0;
1950
+ const historyUrl = historyRouteUrl.startsWith("#") ? currentAppUrl + historyRouteUrl : historyRouteUrl;
1951
+ const preparedHistoryAs = resolved.startsWith("#") ? currentAppUrl + resolved : redirectBrowserHref !== void 0 || resolved.startsWith("//") ? resolved : resolvePagesRouterHref(resolved, {
1952
+ pathname: currentRoute,
1953
+ asPath: currentAs
1954
+ }, __basePath);
1817
1955
  const navState = {
1818
- url: stripHash(interpolatedRoute),
1819
- as: resolvedNoHash,
1956
+ url: credentialedHistoryHref ?? normalizePathTrailingSlash(absoluteInputHistoryUrl === void 0 ? withBasePath(historyUrl, __basePath) : historyUrl, __trailingSlash),
1957
+ as: credentialedDisplayHref ?? normalizePathTrailingSlash(withBasePath(preparedHistoryAs, __basePath), __trailingSlash),
1820
1958
  options: navStateOptions
1821
1959
  };
1822
1960
  if (options?._h !== 1) cancelActiveNavigationEvent({ shallow });
1823
- if (options?._h !== 1 && interpolatedRoute === resolved && isHashOnlyChange(full)) {
1961
+ if (isHashOnlyNavigation) {
1824
1962
  if (mode === "push") saveScrollPosition();
1825
1963
  const eventUrl = resolveHashUrl(browserEventUrl);
1826
1964
  routerEvents.emit("hashChangeStart", eventUrl, { shallow });
1827
- updateHistory(mode, resolved.startsWith("#") ? resolved : redirectBrowserHref ?? full, navState);
1965
+ updateHistory(mode, resolved.startsWith("#") ? resolved : redirectBrowserHref ?? credentialedDisplayHref ?? full, navState);
1828
1966
  if (doScroll) scrollToHashTarget(extractHash(resolved));
1829
1967
  onStateUpdate?.();
1830
1968
  routerEvents.emit("hashChangeComplete", eventUrl, { shallow });
1831
1969
  dispatchNavigateEvent();
1832
1970
  return true;
1833
1971
  }
1972
+ const currentLocale = getCurrentUrlLocale();
1973
+ if (mode === "push" && interpolatedRoute !== resolved && stripHash(full) === routerRuntimeState.lastPathnameAndSearch && navigationLocale === currentLocale) mode = "replace";
1834
1974
  const appPath = getLocalPathname(resolved);
1835
1975
  const appPathNorm = appPath !== null ? removeTrailingSlash(appPath) : null;
1836
1976
  const appPathEntry = appPathNorm !== null ? getPagesRouterComponentsMap()[appPathNorm] : void 0;
@@ -1859,12 +1999,12 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
1859
1999
  if (beforeHistoryChangeEmitted) return;
1860
2000
  beforeHistoryChangeEmitted = true;
1861
2001
  routerEvents.emit("beforeHistoryChange", browserEventUrl, { shallow });
1862
- updateHistory(mode, redirectBrowserHref ?? full, navState);
2002
+ updateHistory(mode, redirectBrowserHref ?? credentialedDisplayHref ?? full, navState);
1863
2003
  };
1864
2004
  if (!shallow) {
1865
2005
  if (reusesMountedConfigRewritePage(full)) emitBeforeHistoryChange();
1866
2006
  navigateOptions.beforeHistoryChange = emitBeforeHistoryChange;
1867
- const result = await runNavigateClient(full, browserEventUrl, redirectBrowserHref ?? htmlFetchUrl, navigateOptions, fullRouteUrl, eventContext);
2007
+ const result = await runNavigateClient(full, browserEventUrl, redirectBrowserHref ?? htmlFetchUrl, navigateOptions, routeFetchUrl ?? fullRouteUrl, eventContext);
1868
2008
  if (typeof result === "object") {
1869
2009
  if (eventContext) clearActiveNavigationEvent(eventContext);
1870
2010
  return performNavigation(result.redirectDestination, void 0, {
@@ -1876,8 +2016,10 @@ async function performNavigation(url, as, options, mode, onStateUpdate, redirect
1876
2016
  if (result === "failed") return false;
1877
2017
  } else {
1878
2018
  emitBeforeHistoryChange();
1879
- if (doScroll) if (hash) scrollToHashTarget(hash);
1880
- else window.scrollTo(0, 0);
2019
+ if (doScroll) {
2020
+ if (hash) scrollToHashTarget(hash);
2021
+ else window.scrollTo(0, 0);
2022
+ }
1881
2023
  }
1882
2024
  onStateUpdate?.();
1883
2025
  if (!isQueryUpdating) {
@@ -1911,7 +2053,7 @@ async function prefetchUrl(url, as) {
1911
2053
  const displayUrl = as ?? url;
1912
2054
  const dataTarget = resolvePagesDataNavigationTarget(url, __basePath);
1913
2055
  if (dataTarget) {
1914
- const middlewareDataHref = displayUrl === url ? dataTarget.middlewareDataHref : getPagesMiddlewareDataHref(displayUrl, __basePath) ?? void 0;
2056
+ const middlewareDataHref = displayUrl === url ? dataTarget.middlewareDataHref : getPagesMiddlewareDataHref(displayUrl, __basePath, {}, url) ?? void 0;
1915
2057
  prefetchPagesData({
1916
2058
  ...dataTarget,
1917
2059
  middlewareDataHref
@@ -2017,7 +2159,8 @@ function handlePagesRouterPopState(e) {
2017
2159
  if (state !== null && state !== void 0 && !isNextRouterState(state)) return;
2018
2160
  if (wasFirst && !routerRuntimeState.routerDidNavigate && isNextRouterState(state)) {
2019
2161
  const currentLocale = window.__VINEXT_LOCALE__;
2020
- if (state.options?.locale === currentLocale && typeof state.as === "string" && state.as === getTrackedPagesRouterAsPath()) return;
2162
+ const stateAs = typeof state.as === "string" ? removeNavigationLocalePrefix(stripHash(toHistoryAppPath(state.as))) : void 0;
2163
+ if (state.options?.locale === currentLocale && stateAs === getTrackedPagesRouterAsPath()) return;
2021
2164
  }
2022
2165
  const currentHash = window.location.hash;
2023
2166
  const isHashOnly = browserUrl === routerRuntimeState.lastPathnameAndSearch && (currentHash !== routerRuntimeState.lastHash || currentHash !== "");
@@ -2075,14 +2218,28 @@ function handlePagesRouterPopState(e) {
2075
2218
  x: 0,
2076
2219
  y: 0
2077
2220
  } : readScrollPosition(state);
2078
- const stateRouteUrl = (() => {
2079
- if (isNextRouterState(state) && typeof state.url === "string" && typeof state.as === "string" && state.url !== state.as) return normalizePathTrailingSlash(withBasePath(state.url, __basePath), __trailingSlash);
2080
- return browserUrl;
2081
- })();
2082
- const result = await runNavigateClient(browserUrl, fullEventUrl, getPagesHtmlFetchUrl(stateRouteUrl, effectiveLocale), {
2221
+ let stateFetchUrl = browserUrl;
2222
+ let routePattern;
2223
+ let routeMasked = false;
2224
+ if (isNextRouterState(state) && typeof state.url === "string" && typeof state.as === "string" && stripHash(state.url) !== stripHash(state.as)) {
2225
+ const stateUrl = toHistoryAppPath(state.url);
2226
+ const stateAs = toHistoryAppPath(state.as);
2227
+ const dynamicRoute = interpolateDynamicRouteHref(stateUrl, removeNavigationLocalePrefix(stateAs));
2228
+ const concreteRouteUrl = dynamicRoute?.href || stateUrl;
2229
+ const fetchRouteUrl = applyNavigationLocale(concreteRouteUrl, effectiveLocale);
2230
+ stateFetchUrl = normalizePathTrailingSlash(withBasePath(fetchRouteUrl, __basePath), __trailingSlash);
2231
+ if (dynamicRoute?.href) routePattern = removeTrailingSlash(stripHash(removeNavigationLocalePrefix(stateUrl)).split("?", 1)[0]);
2232
+ const routePathname = getLocalPathname(concreteRouteUrl);
2233
+ const displayPathname = getLocalPathname(stateAs);
2234
+ routeMasked = routePathname === null || displayPathname === null || removeNavigationLocalePrefix(routePathname) !== removeNavigationLocalePrefix(displayPathname);
2235
+ }
2236
+ const result = await runNavigateClient(browserUrl, fullEventUrl, getPagesHtmlFetchUrl(stateFetchUrl, effectiveLocale), {
2237
+ locale: effectiveLocale,
2238
+ routePattern,
2239
+ routeMasked,
2083
2240
  scroll: scrollTarget,
2084
2241
  beforeHistoryChange: emitBeforeHistoryChange
2085
- }, stateRouteUrl, eventContext);
2242
+ }, stateFetchUrl, eventContext);
2086
2243
  if (typeof result === "object") {
2087
2244
  clearActiveNavigationEvent(eventContext);
2088
2245
  await performNavigation(result.redirectDestination, void 0, { locale: false }, "replace", void 0, isAbsoluteOrProtocolRelativeUrl(result.redirectDestination) ? result.redirectDestination : void 0);
@@ -2143,10 +2300,11 @@ function wrapWithRouterContext(element, onCommit = noopCommit, onError = noopCom
2143
2300
  */
2144
2301
  function withRouter(ComposedComponent) {
2145
2302
  function WithRouterWrapper(props) {
2146
- return createElement(ComposedComponent, {
2303
+ const merged = {
2147
2304
  router: useRouter(),
2148
2305
  ...props
2149
- });
2306
+ };
2307
+ return createElement(ComposedComponent, merged);
2150
2308
  }
2151
2309
  const composed = ComposedComponent;
2152
2310
  WithRouterWrapper.getInitialProps = composed.getInitialProps;
@@ -2154,6 +2312,33 @@ function withRouter(ComposedComponent) {
2154
2312
  if (process.env.NODE_ENV !== "production") WithRouterWrapper.displayName = `withRouter(${composed.displayName || composed.name || "Unknown"})`;
2155
2313
  return WithRouterWrapper;
2156
2314
  }
2315
+ /**
2316
+ * Pages Router `components` map exposed on the singleton.
2317
+ *
2318
+ * In Next.js, `Router.components` doubles as (a) the cached `PrivateRouteInfo`
2319
+ * keyed by route pattern after a real page render, and (b) a marker store
2320
+ * (`{ __appRouter: true }`) for App Router routes detected via prefetch (see
2321
+ * `packages/next/src/shared/lib/router/router.ts:2525`). The Next.js deploy
2322
+ * test suite asserts the latter through `window.next.router.components`.
2323
+ *
2324
+ * vinext only writes the marker variant — the cached-page-info side is handled
2325
+ * by Vite's module graph + our own loader manifest — but the property must be
2326
+ * present and mutable so the deploy assertion can find it. The map lives
2327
+ * behind a `Symbol.for` global so the Link shim's Pages-mode prefetch branch
2328
+ * writes to the same instance even when Vite resolves the router shim and
2329
+ * the link shim through different module IDs.
2330
+ *
2331
+ * Issue: https://github.com/cloudflare/vinext/issues/1526
2332
+ */
2333
+ const _components = getPagesRouterComponentsMap();
2334
+ function navigatePagesRouter(url, as, options, mode) {
2335
+ if (typeof window === "undefined") throwNoRouterInstance();
2336
+ const preparedUrl = prepareUrl(url);
2337
+ const preparedAs = as ? prepareUrl(as) : void 0;
2338
+ assertSafeNavigationUrl(resolveUrl(preparedUrl));
2339
+ if (preparedAs) assertSafeNavigationUrl(resolveUrl(preparedAs));
2340
+ return performNavigation(preparedUrl, preparedAs, options, mode);
2341
+ }
2157
2342
  const RouterMethods = {
2158
2343
  router: null,
2159
2344
  readyCallbacks: [],
@@ -2161,20 +2346,10 @@ const RouterMethods = {
2161
2346
  callback();
2162
2347
  },
2163
2348
  /** See `_components` comment above for the dual role this map plays. */
2164
- components: getPagesRouterComponentsMap(),
2349
+ components: _components,
2165
2350
  sdc: getPagesStaticDataCache(),
2166
- push: (url, as, options) => {
2167
- if (typeof window === "undefined") throwNoRouterInstance();
2168
- assertSafeNavigationUrl(resolveUrl(url));
2169
- if (as !== void 0) assertSafeNavigationUrl(String(as));
2170
- return performNavigation(url, as, options, "push");
2171
- },
2172
- replace: (url, as, options) => {
2173
- if (typeof window === "undefined") throwNoRouterInstance();
2174
- assertSafeNavigationUrl(resolveUrl(url));
2175
- if (as !== void 0) assertSafeNavigationUrl(String(as));
2176
- return performNavigation(url, as, options, "replace");
2177
- },
2351
+ push: (url, as, options) => navigatePagesRouter(url, as, options, "push"),
2352
+ replace: (url, as, options) => navigatePagesRouter(url, as, options, "replace"),
2178
2353
  back: () => {
2179
2354
  if (typeof window === "undefined") throwNoRouterInstance();
2180
2355
  window.history.back();