vinext 1.0.0-beta.3 → 1.0.0-beta.5

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 (436) hide show
  1. package/README.md +44 -3
  2. package/dist/build/client-build-config.d.ts +0 -1
  3. package/dist/build/css-url-assets.d.ts +0 -1
  4. package/dist/build/google-fonts/build-url.d.ts +5 -2
  5. package/dist/build/google-fonts/font-metadata.d.ts +7 -3
  6. package/dist/build/google-fonts/get-axes.d.ts +0 -1
  7. package/dist/build/layout-classification.d.ts +7 -4
  8. package/dist/build/next-client-runtime-manifests.d.ts +0 -1
  9. package/dist/build/next-client-runtime-manifests.js +2 -19
  10. package/dist/build/nitro-route-rules.d.ts +0 -1
  11. package/dist/build/pages-client-assets-module.d.ts +0 -1
  12. package/dist/build/precompress.d.ts +7 -2
  13. package/dist/build/precompress.js +42 -8
  14. package/dist/build/prerender-paths.d.ts +2 -2
  15. package/dist/build/prerender-server-entry.d.ts +1 -1
  16. package/dist/build/prerender-server-pool.d.ts +4 -2
  17. package/dist/build/prerender.d.ts +36 -32
  18. package/dist/build/prerender.js +18 -3
  19. package/dist/build/public-dir-conflict.d.ts +14 -0
  20. package/dist/build/public-dir-conflict.js +25 -0
  21. package/dist/build/report.d.ts +2 -2
  22. package/dist/build/route-classification-injector.d.ts +0 -1
  23. package/dist/build/route-classification-manifest.d.ts +5 -3
  24. package/dist/build/run-prerender.d.ts +3 -2
  25. package/dist/build/static-export.d.ts +23 -12
  26. package/dist/cache/cache-adapters-virtual.d.ts +5 -2
  27. package/dist/check.js +4 -4
  28. package/dist/cli-args.d.ts +2 -1
  29. package/dist/cli-args.js +10 -0
  30. package/dist/cli-dev-config.d.ts +0 -1
  31. package/dist/cli.d.ts +1 -1
  32. package/dist/cli.js +14 -8
  33. package/dist/client/client-rewrite-matcher.d.ts +12 -0
  34. package/dist/client/client-rewrite-matcher.js +20 -0
  35. package/dist/client/client-rewrites.d.ts +31 -0
  36. package/dist/client/client-rewrites.js +41 -0
  37. package/dist/client/dev-error-overlay.d.ts +0 -1
  38. package/dist/client/empty-module.d.ts +1 -1
  39. package/dist/client/index.d.ts +2 -0
  40. package/dist/client/index.js +2 -0
  41. package/dist/client/instrumentation-client-state.d.ts +0 -1
  42. package/dist/client/navigation-runtime.d.ts +12 -1
  43. package/dist/client/navigation-runtime.js +6 -2
  44. package/dist/client/pages-router-link-navigation.d.ts +3 -21
  45. package/dist/client/react-instance-bootstrap.d.ts +1 -0
  46. package/dist/client/react-instance-bootstrap.js +7 -0
  47. package/dist/client/react-instance.d.ts +13 -0
  48. package/dist/client/react-instance.js +20 -0
  49. package/dist/client/vinext-next-data.d.ts +11 -6
  50. package/dist/client/window-next.d.ts +5 -2
  51. package/dist/config/config-matchers.d.ts +3 -5
  52. package/dist/config/config-matchers.js +7 -6
  53. package/dist/config/dotenv.d.ts +4 -9
  54. package/dist/config/dotenv.js +30 -22
  55. package/dist/config/next-config.d.ts +113 -52
  56. package/dist/config/next-config.js +6 -0
  57. package/dist/config/prerender.d.ts +0 -1
  58. package/dist/entries/app-browser-entry.d.ts +0 -1
  59. package/dist/entries/app-browser-entry.js +7 -3
  60. package/dist/entries/app-rsc-entry.d.ts +30 -16
  61. package/dist/entries/app-rsc-entry.js +40 -12
  62. package/dist/entries/app-rsc-manifest.d.ts +0 -1
  63. package/dist/entries/app-rsc-manifest.js +1 -0
  64. package/dist/entries/pages-client-entry.d.ts +0 -1
  65. package/dist/entries/pages-client-entry.js +7 -2
  66. package/dist/entries/pages-server-entry.d.ts +1 -2
  67. package/dist/entries/pages-server-entry.js +25 -6
  68. package/dist/image/image-adapters-virtual.d.ts +4 -2
  69. package/dist/index.d.ts +0 -1
  70. package/dist/index.js +257 -75
  71. package/dist/init-cloudflare.d.ts +0 -1
  72. package/dist/init-platform.d.ts +0 -1
  73. package/dist/init.d.ts +40 -20
  74. package/dist/plugins/ast-scope.d.ts +0 -1
  75. package/dist/plugins/async-hooks-stub.d.ts +0 -1
  76. package/dist/plugins/client-reference-dedup.d.ts +0 -1
  77. package/dist/plugins/client-reference-dedup.js +7 -5
  78. package/dist/plugins/css-data-url.d.ts +0 -1
  79. package/dist/plugins/css-module-imports.d.ts +0 -1
  80. package/dist/plugins/dynamic-preload-metadata.d.ts +0 -1
  81. package/dist/plugins/extensionless-dynamic-import.d.ts +0 -1
  82. package/dist/plugins/extensionless-dynamic-import.js +352 -13
  83. package/dist/plugins/fonts.d.ts +0 -1
  84. package/dist/plugins/ignore-dynamic-requests.d.ts +0 -1
  85. package/dist/plugins/ignore-dynamic-requests.js +28 -4
  86. package/dist/plugins/import-meta-url.d.ts +0 -1
  87. package/dist/plugins/instrumentation-client.d.ts +0 -1
  88. package/dist/plugins/middleware-server-only.d.ts +0 -1
  89. package/dist/plugins/og-asset-ownership.d.ts +0 -1
  90. package/dist/plugins/og-assets.d.ts +0 -1
  91. package/dist/plugins/optimize-imports.d.ts +0 -1
  92. package/dist/plugins/remove-console.d.ts +0 -1
  93. package/dist/plugins/require-context.d.ts +0 -1
  94. package/dist/plugins/require-context.js +143 -26
  95. package/dist/plugins/rsc-client-reference-loaders.d.ts +0 -1
  96. package/dist/plugins/rsc-reference-validation-normalizer.d.ts +0 -1
  97. package/dist/plugins/sass.d.ts +30 -2
  98. package/dist/plugins/sass.js +67 -5
  99. package/dist/plugins/server-externals-manifest.d.ts +0 -1
  100. package/dist/plugins/strip-server-exports.d.ts +0 -1
  101. package/dist/plugins/styled-jsx.d.ts +0 -1
  102. package/dist/plugins/wasm-module-import.d.ts +0 -1
  103. package/dist/routing/app-route-graph.d.ts +115 -56
  104. package/dist/routing/app-route-graph.js +2 -1
  105. package/dist/routing/app-router.d.ts +0 -1
  106. package/dist/routing/pages-router.d.ts +9 -5
  107. package/dist/routing/route-matching.d.ts +0 -1
  108. package/dist/routing/utils.d.ts +1 -23
  109. package/dist/routing/utils.js +1 -30
  110. package/dist/server/accept-encoding.d.ts +0 -1
  111. package/dist/server/api-handler.d.ts +0 -1
  112. package/dist/server/api-handler.js +4 -3
  113. package/dist/server/app-bfcache-identity.d.ts +9 -10
  114. package/dist/server/app-bfcache-identity.js +27 -102
  115. package/dist/server/app-browser-action-result.d.ts +0 -1
  116. package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -1
  117. package/dist/server/app-browser-entry.d.ts +1 -1
  118. package/dist/server/app-browser-entry.js +106 -66
  119. package/dist/server/app-browser-history-controller.d.ts +8 -5
  120. package/dist/server/app-browser-hydration.d.ts +0 -1
  121. package/dist/server/app-browser-interception-context.d.ts +0 -1
  122. package/dist/server/app-browser-mpa-navigation.d.ts +0 -1
  123. package/dist/server/app-browser-navigation-controller.d.ts +3 -6
  124. package/dist/server/app-browser-navigation-controller.js +29 -4
  125. package/dist/server/app-browser-popstate.d.ts +0 -1
  126. package/dist/server/app-browser-prefetch-response.d.ts +25 -0
  127. package/dist/server/app-browser-prefetch-response.js +54 -0
  128. package/dist/server/app-browser-server-action-client.d.ts +1 -1
  129. package/dist/server/app-browser-server-action-client.js +3 -2
  130. package/dist/server/app-browser-server-action-navigation.d.ts +0 -1
  131. package/dist/server/app-browser-state.d.ts +11 -5
  132. package/dist/server/app-browser-state.js +10 -6
  133. package/dist/server/app-browser-stream.d.ts +0 -1
  134. package/dist/server/app-browser-visible-commit.d.ts +1 -1
  135. package/dist/server/app-browser-visible-commit.js +6 -2
  136. package/dist/server/app-elements-wire.d.ts +16 -13
  137. package/dist/server/app-elements-wire.js +37 -10
  138. package/dist/server/app-elements.d.ts +2 -3
  139. package/dist/server/app-elements.js +2 -2
  140. package/dist/server/app-fallback-renderer.d.ts +8 -4
  141. package/dist/server/app-fallback-renderer.js +2 -1
  142. package/dist/server/app-history-state.d.ts +2 -2
  143. package/dist/server/app-history-state.js +1 -1
  144. package/dist/server/app-hook-warning-suppression.d.ts +0 -1
  145. package/dist/server/app-layout-param-observation.d.ts +0 -1
  146. package/dist/server/app-layout-param-observation.js +1 -1
  147. package/dist/server/app-middleware.d.ts +5 -1
  148. package/dist/server/app-middleware.js +96 -31
  149. package/dist/server/app-optimistic-routing.d.ts +1 -0
  150. package/dist/server/app-page-boundary-render.d.ts +8 -4
  151. package/dist/server/app-page-cache-finalizer.d.ts +2 -3
  152. package/dist/server/app-page-cache-finalizer.js +47 -17
  153. package/dist/server/app-page-cache-render.d.ts +2 -2
  154. package/dist/server/app-page-cache-render.js +2 -1
  155. package/dist/server/app-page-cache.d.ts +1 -3
  156. package/dist/server/app-page-cache.js +22 -11
  157. package/dist/server/app-page-dispatch.d.ts +12 -6
  158. package/dist/server/app-page-dispatch.js +14 -6
  159. package/dist/server/app-page-element-builder.d.ts +63 -20
  160. package/dist/server/app-page-element-builder.js +114 -43
  161. package/dist/server/app-page-execution.d.ts +12 -5
  162. package/dist/server/app-page-execution.js +1 -1
  163. package/dist/server/app-page-head.d.ts +2 -2
  164. package/dist/server/app-page-http-access-fallback-metadata.d.ts +2 -2
  165. package/dist/server/app-page-params.d.ts +0 -1
  166. package/dist/server/app-page-ppr-runtime.d.ts +0 -1
  167. package/dist/server/app-page-probe.d.ts +4 -3
  168. package/dist/server/app-page-probe.js +1 -1
  169. package/dist/server/app-page-render-identity.d.ts +1 -0
  170. package/dist/server/app-page-render-observation.d.ts +0 -1
  171. package/dist/server/app-page-render.d.ts +7 -5
  172. package/dist/server/app-page-render.js +59 -24
  173. package/dist/server/app-page-request.d.ts +3 -2
  174. package/dist/server/app-page-request.js +6 -46
  175. package/dist/server/app-page-response.d.ts +15 -3
  176. package/dist/server/app-page-response.js +21 -3
  177. package/dist/server/app-page-route-wiring.d.ts +30 -7
  178. package/dist/server/app-page-route-wiring.js +163 -63
  179. package/dist/server/app-page-search-params-observation.d.ts +0 -1
  180. package/dist/server/app-page-segment-plan.d.ts +56 -0
  181. package/dist/server/app-page-segment-plan.js +177 -0
  182. package/dist/server/app-page-segment-state.d.ts +18 -2
  183. package/dist/server/app-page-segment-state.js +23 -4
  184. package/dist/server/app-page-stream.d.ts +19 -10
  185. package/dist/server/app-pages-bridge.d.ts +2 -2
  186. package/dist/server/app-pages-bridge.js +14 -2
  187. package/dist/server/app-post-middleware-context.d.ts +0 -1
  188. package/dist/server/app-ppr-fallback-shell-render.d.ts +0 -1
  189. package/dist/server/app-prerender-endpoints.d.ts +0 -1
  190. package/dist/server/app-prerender-static-params.d.ts +0 -1
  191. package/dist/server/app-render-dependency.d.ts +11 -4
  192. package/dist/server/app-render-dependency.js +59 -9
  193. package/dist/server/app-request-context.d.ts +1 -0
  194. package/dist/server/app-route-handler-cache.d.ts +2 -2
  195. package/dist/server/app-route-handler-cache.js +5 -1
  196. package/dist/server/app-route-handler-dispatch.d.ts +0 -1
  197. package/dist/server/app-route-handler-execution.d.ts +2 -2
  198. package/dist/server/app-route-handler-execution.js +5 -1
  199. package/dist/server/app-route-handler-policy.d.ts +0 -1
  200. package/dist/server/app-route-handler-response.d.ts +0 -1
  201. package/dist/server/app-route-handler-runtime.d.ts +0 -1
  202. package/dist/server/app-route-handler-runtime.js +1 -2
  203. package/dist/server/app-route-module-loader.d.ts +32 -6
  204. package/dist/server/app-route-module-loader.js +73 -3
  205. package/dist/server/app-router-entry.d.ts +0 -1
  206. package/dist/server/app-router-entry.js +2 -2
  207. package/dist/server/app-rsc-cache-busting.d.ts +7 -1
  208. package/dist/server/app-rsc-cache-busting.js +6 -0
  209. package/dist/server/app-rsc-handler.d.ts +9 -2
  210. package/dist/server/app-rsc-handler.js +173 -41
  211. package/dist/server/app-rsc-redirect-flight.d.ts +0 -1
  212. package/dist/server/app-rsc-render-mode.d.ts +3 -2
  213. package/dist/server/app-rsc-render-mode.js +4 -1
  214. package/dist/server/app-rsc-request-normalization.d.ts +19 -10
  215. package/dist/server/app-rsc-request-normalization.js +65 -4
  216. package/dist/server/app-rsc-response-finalizer.d.ts +5 -2
  217. package/dist/server/app-rsc-response-finalizer.js +31 -18
  218. package/dist/server/app-rsc-route-matching.d.ts +6 -1
  219. package/dist/server/app-rsc-route-matching.js +47 -2
  220. package/dist/server/app-segment-config.d.ts +0 -1
  221. package/dist/server/app-server-action-execution.d.ts +42 -9
  222. package/dist/server/app-server-action-execution.js +189 -111
  223. package/dist/server/app-ssr-entry.d.ts +5 -3
  224. package/dist/server/app-ssr-entry.js +4 -5
  225. package/dist/server/app-ssr-router-instance.d.ts +0 -1
  226. package/dist/server/app-ssr-stream.d.ts +7 -1
  227. package/dist/server/app-ssr-stream.js +2 -1
  228. package/dist/server/app-static-generation.d.ts +0 -1
  229. package/dist/server/app-visited-response-cache.d.ts +7 -2
  230. package/dist/server/app-visited-response-cache.js +49 -1
  231. package/dist/server/before-interactive-head.d.ts +0 -1
  232. package/dist/server/before-interactive-head.js +2 -0
  233. package/dist/server/bfcache-identity.d.ts +45 -0
  234. package/dist/server/bfcache-identity.js +52 -0
  235. package/dist/server/cache-control.d.ts +3 -3
  236. package/dist/server/cache-control.js +3 -2
  237. package/dist/server/cache-proof.d.ts +0 -1
  238. package/dist/server/client-reuse-manifest.d.ts +0 -1
  239. package/dist/server/config-headers.d.ts +2 -2
  240. package/dist/server/csp.d.ts +0 -1
  241. package/dist/server/default-global-error-module.d.ts +0 -1
  242. package/dist/server/default-global-not-found-module.d.ts +0 -1
  243. package/dist/server/default-not-found-module.d.ts +0 -1
  244. package/dist/server/dev-lockfile.d.ts +21 -9
  245. package/dist/server/dev-module-runner.d.ts +0 -1
  246. package/dist/server/dev-route-files.d.ts +0 -1
  247. package/dist/server/dev-server.d.ts +4 -8
  248. package/dist/server/dev-server.js +86 -131
  249. package/dist/server/dev-stack-sourcemap.d.ts +0 -1
  250. package/dist/server/document-initial-head.d.ts +12 -2
  251. package/dist/server/document-initial-head.js +17 -2
  252. package/dist/server/edge-api-runtime.d.ts +10 -1
  253. package/dist/server/edge-api-runtime.js +29 -1
  254. package/dist/server/file-based-metadata.d.ts +0 -1
  255. package/dist/server/headers.d.ts +17 -2
  256. package/dist/server/headers.js +17 -1
  257. package/dist/server/http-conditional.d.ts +22 -0
  258. package/dist/server/http-conditional.js +117 -0
  259. package/dist/server/http-date.d.ts +5 -0
  260. package/dist/server/http-date.js +73 -0
  261. package/dist/server/http-error-responses.d.ts +2 -1
  262. package/dist/server/http-error-responses.js +14 -2
  263. package/dist/server/http-range.d.ts +25 -0
  264. package/dist/server/http-range.js +67 -0
  265. package/dist/server/image-optimization.d.ts +14 -6
  266. package/dist/server/image-optimization.js +0 -1
  267. package/dist/server/instrumentation.d.ts +7 -4
  268. package/dist/server/isr-cache.d.ts +28 -6
  269. package/dist/server/isr-cache.js +19 -13
  270. package/dist/server/isr-decision.d.ts +6 -4
  271. package/dist/server/metadata-route-build-data.d.ts +0 -1
  272. package/dist/server/metadata-route-response.d.ts +0 -1
  273. package/dist/server/metadata-route-response.js +7 -6
  274. package/dist/server/metadata-routes.d.ts +34 -16
  275. package/dist/server/middleware-matcher-pattern.d.ts +0 -1
  276. package/dist/server/middleware-matcher.d.ts +8 -3
  277. package/dist/server/middleware-matcher.js +23 -18
  278. package/dist/server/middleware-runtime.d.ts +6 -1
  279. package/dist/server/middleware-runtime.js +91 -28
  280. package/dist/server/middleware.d.ts +0 -1
  281. package/dist/server/navigation-planner.d.ts +1 -1
  282. package/dist/server/next-error-digest.d.ts +0 -1
  283. package/dist/server/pages-api-route.d.ts +2 -1
  284. package/dist/server/pages-api-route.js +32 -7
  285. package/dist/server/pages-asset-tags.d.ts +3 -1
  286. package/dist/server/pages-asset-tags.js +6 -4
  287. package/dist/server/pages-data-route.d.ts +14 -6
  288. package/dist/server/pages-data-route.js +19 -10
  289. package/dist/server/pages-dev-hydration.js +3 -0
  290. package/dist/server/pages-dev-stylesheets.d.ts +10 -0
  291. package/dist/server/pages-dev-stylesheets.js +150 -0
  292. package/dist/server/pages-document-asset-props.d.ts +26 -0
  293. package/dist/server/pages-document-asset-props.js +69 -0
  294. package/dist/server/pages-document-initial-props.d.ts +10 -6
  295. package/dist/server/pages-get-initial-props.d.ts +2 -2
  296. package/dist/server/pages-i18n.d.ts +1 -7
  297. package/dist/server/pages-node-compat.d.ts +11 -2
  298. package/dist/server/pages-node-compat.js +52 -5
  299. package/dist/server/pages-page-data.d.ts +21 -9
  300. package/dist/server/pages-page-data.js +109 -30
  301. package/dist/server/pages-page-handler.d.ts +70 -32
  302. package/dist/server/pages-page-handler.js +25 -6
  303. package/dist/server/pages-page-response.d.ts +9 -13
  304. package/dist/server/pages-page-response.js +25 -26
  305. package/dist/server/pages-readiness.d.ts +0 -1
  306. package/dist/server/pages-request-pipeline.d.ts +20 -6
  307. package/dist/server/pages-request-pipeline.js +40 -20
  308. package/dist/server/pages-revalidate.d.ts +0 -1
  309. package/dist/server/pages-revalidate.js +1 -1
  310. package/dist/server/pages-router-entry.js +14 -10
  311. package/dist/server/prerender-manifest.d.ts +7 -0
  312. package/dist/server/prod-server.d.ts +13 -7
  313. package/dist/server/prod-server.js +276 -83
  314. package/dist/server/proxy-trust.d.ts +0 -1
  315. package/dist/server/request-log.d.ts +7 -11
  316. package/dist/server/request-pipeline.d.ts +13 -4
  317. package/dist/server/request-pipeline.js +28 -20
  318. package/dist/server/revalidation-host.d.ts +0 -1
  319. package/dist/server/revalidation-host.js +1 -1
  320. package/dist/server/rsc-completion-metadata.d.ts +15 -0
  321. package/dist/server/rsc-completion-metadata.js +183 -0
  322. package/dist/server/seed-cache.d.ts +2 -1
  323. package/dist/server/seed-cache.js +8 -5
  324. package/dist/server/skip-cache-proof.d.ts +0 -1
  325. package/dist/server/static-file-cache.d.ts +23 -9
  326. package/dist/server/static-file-cache.js +47 -23
  327. package/dist/server/static-layout-client-reuse-proof.d.ts +0 -1
  328. package/dist/server/worker-revalidation-context.d.ts +0 -1
  329. package/dist/server/worker-revalidation-context.js +1 -0
  330. package/dist/server/worker-utils.d.ts +3 -1
  331. package/dist/server/worker-utils.js +11 -2
  332. package/dist/shims/app-router-scroll-state.d.ts +2 -1
  333. package/dist/shims/app-router-scroll-state.js +7 -2
  334. package/dist/shims/app-router-scroll.d.ts +2 -8
  335. package/dist/shims/app.d.ts +1 -5
  336. package/dist/shims/before-interactive-context.d.ts +5 -3
  337. package/dist/shims/cache-handler.d.ts +6 -1
  338. package/dist/shims/cache-handler.js +4 -2
  339. package/dist/shims/cache-request-state.d.ts +12 -1
  340. package/dist/shims/cache-request-state.js +22 -1
  341. package/dist/shims/cache-runtime.d.ts +9 -5
  342. package/dist/shims/cache-runtime.js +16 -6
  343. package/dist/shims/cache.d.ts +2 -3
  344. package/dist/shims/cache.js +2 -2
  345. package/dist/shims/cdn-cache.d.ts +0 -1
  346. package/dist/shims/client-locale.d.ts +1 -6
  347. package/dist/shims/client-only.d.ts +1 -1
  348. package/dist/shims/compat-router.d.ts +0 -1
  349. package/dist/shims/constants.d.ts +1 -1
  350. package/dist/shims/default-global-error.d.ts +1 -4
  351. package/dist/shims/default-not-found.d.ts +0 -1
  352. package/dist/shims/document.d.ts +0 -1
  353. package/dist/shims/document.js +17 -3
  354. package/dist/shims/dynamic-preload-chunks.d.ts +0 -1
  355. package/dist/shims/dynamic.d.ts +0 -1
  356. package/dist/shims/error-boundary-navigation.d.ts +0 -1
  357. package/dist/shims/error-boundary.d.ts +7 -32
  358. package/dist/shims/error.d.ts +1 -6
  359. package/dist/shims/fetch-cache.js +112 -63
  360. package/dist/shims/font-google-base.d.ts +0 -1
  361. package/dist/shims/font-local.d.ts +0 -1
  362. package/dist/shims/form.d.ts +5 -3
  363. package/dist/shims/hash-scroll.d.ts +1 -1
  364. package/dist/shims/hash-scroll.js +2 -1
  365. package/dist/shims/head-state.d.ts +0 -1
  366. package/dist/shims/head.d.ts +1 -4
  367. package/dist/shims/headers.d.ts +2 -2
  368. package/dist/shims/headers.js +1 -1
  369. package/dist/shims/i18n-context.d.ts +0 -1
  370. package/dist/shims/i18n-state.d.ts +0 -1
  371. package/dist/shims/image.d.ts +0 -1
  372. package/dist/shims/image.js +1 -2
  373. package/dist/shims/internal/als-registry.d.ts +31 -2
  374. package/dist/shims/internal/als-registry.js +50 -2
  375. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +17 -2
  376. package/dist/shims/internal/app-prefetch-fetch-queue.js +69 -7
  377. package/dist/shims/internal/app-route-detection.d.ts +0 -1
  378. package/dist/shims/internal/app-route-prefetch-policy.d.ts +31 -0
  379. package/dist/shims/internal/app-route-prefetch-policy.js +57 -0
  380. package/dist/shims/internal/app-router-context.d.ts +0 -1
  381. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +1 -5
  382. package/dist/shims/internal/hybrid-client-route-owner.d.ts +0 -1
  383. package/dist/shims/internal/hybrid-client-route-owner.js +6 -8
  384. package/dist/shims/internal/interpolate-as.d.ts +3 -2
  385. package/dist/shims/internal/pages-data-target.d.ts +21 -10
  386. package/dist/shims/internal/pages-data-target.js +1 -1
  387. package/dist/shims/internal/pages-data-url.d.ts +3 -1
  388. package/dist/shims/internal/router-context.d.ts +0 -1
  389. package/dist/shims/internal/work-unit-async-storage.d.ts +4 -3
  390. package/dist/shims/internal/work-unit-async-storage.js +2 -0
  391. package/dist/shims/layout-segment-context.d.ts +2 -6
  392. package/dist/shims/legacy-image.d.ts +0 -1
  393. package/dist/shims/link.d.ts +29 -21
  394. package/dist/shims/link.js +52 -97
  395. package/dist/shims/metadata.d.ts +11 -25
  396. package/dist/shims/metadata.js +24 -32
  397. package/dist/shims/navigation-context-state.d.ts +0 -1
  398. package/dist/shims/navigation-state.d.ts +1 -0
  399. package/dist/shims/navigation.d.ts +54 -6
  400. package/dist/shims/navigation.js +325 -73
  401. package/dist/shims/navigation.react-server.d.ts +1 -0
  402. package/dist/shims/og.d.ts +0 -1
  403. package/dist/shims/request-context.d.ts +8 -3
  404. package/dist/shims/request-state-types.d.ts +1 -0
  405. package/dist/shims/router.d.ts +44 -23
  406. package/dist/shims/router.js +8 -7
  407. package/dist/shims/script-nonce-context.d.ts +0 -1
  408. package/dist/shims/script.d.ts +25 -13
  409. package/dist/shims/server-only.d.ts +1 -1
  410. package/dist/shims/server.d.ts +1 -3
  411. package/dist/shims/server.js +5 -6
  412. package/dist/shims/slot.d.ts +23 -11
  413. package/dist/shims/slot.js +103 -19
  414. package/dist/shims/streamed-icons.d.ts +7 -0
  415. package/dist/shims/streamed-icons.js +33 -0
  416. package/dist/shims/unified-request-context.d.ts +44 -4
  417. package/dist/shims/unified-request-context.js +56 -2
  418. package/dist/shims/use-merged-ref.d.ts +0 -1
  419. package/dist/shims/web-vitals.d.ts +0 -1
  420. package/dist/typegen.d.ts +1 -2
  421. package/dist/typegen.js +1 -1
  422. package/dist/utils/cache-control-metadata.d.ts +13 -1
  423. package/dist/utils/cache-control-metadata.js +17 -1
  424. package/dist/utils/client-build-manifest.d.ts +0 -1
  425. package/dist/utils/domain-locale.d.ts +1 -5
  426. package/dist/utils/html-limited-bots.js +1 -1
  427. package/dist/utils/middleware-request-headers.d.ts +17 -5
  428. package/dist/utils/middleware-request-headers.js +32 -23
  429. package/dist/utils/precompressed-variant.d.ts +9 -0
  430. package/dist/utils/precompressed-variant.js +15 -0
  431. package/dist/utils/project.d.ts +12 -7
  432. package/dist/utils/public-file-path.d.ts +5 -0
  433. package/dist/utils/public-file-path.js +12 -0
  434. package/dist/utils/public-routes.d.ts +1 -1
  435. package/dist/utils/public-routes.js +6 -5
  436. package/package.json +7 -3
@@ -1,7 +1,7 @@
1
+ import { normalizeHost, parseCookies, requestContextFromRequest } from "./request-context.js";
1
2
  import { PRERENDER_REVALIDATE_HEADER, PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER, VINEXT_MW_CTX_HEADER, VINEXT_PRERENDER_ROUTE_PARAMS_HEADER, VINEXT_PRERENDER_SECRET_HEADER, VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
2
- import { buildRequestHeadersFromMiddlewareResponse } from "../utils/middleware-request-headers.js";
3
+ import { buildRequestHeadersFromMiddlewareResponse, getUnconsumedMiddlewareRequestHeaders } from "../utils/middleware-request-headers.js";
3
4
  import { analyzeRegexSafety } from "../utils/regex-safety.js";
4
- import { normalizeHost, parseCookies, requestContextFromRequest } from "./request-context.js";
5
5
  import { isExternalUrl } from "../utils/external-url.js";
6
6
  //#region src/config/config-matchers.ts
7
7
  /**
@@ -301,9 +301,10 @@ function shouldEvaluateRule(ruleBasePath, state) {
301
301
  * individual header values), so the wider `string | string[]` type of
302
302
  * `middlewareHeaders` is safe to cast here.
303
303
  */
304
- function applyMiddlewareRequestHeaders(middlewareHeaders, request, options = {}) {
305
- const nextHeaders = buildRequestHeadersFromMiddlewareResponse(request.headers, middlewareHeaders, options);
306
- for (const key of Object.keys(middlewareHeaders)) if (key.startsWith("x-middleware-") && key !== "x-middleware-cache") delete middlewareHeaders[key];
304
+ function applyMiddlewareRequestHeaders(middlewareHeaders, request) {
305
+ const nextHeaders = buildRequestHeadersFromMiddlewareResponse(request.headers, middlewareHeaders);
306
+ const unconsumedRequestHeaders = getUnconsumedMiddlewareRequestHeaders(middlewareHeaders);
307
+ for (const key of Object.keys(middlewareHeaders)) if (key.startsWith("x-middleware-") && key !== "x-middleware-cache" && !unconsumedRequestHeaders.has(key)) delete middlewareHeaders[key];
307
308
  if (nextHeaders) request = new Request(request.url, {
308
309
  method: request.method,
309
310
  headers: nextHeaders,
@@ -831,7 +832,7 @@ async function proxyExternalRequest(request, externalUrl) {
831
832
  headers.set("host", targetUrl.host);
832
833
  stripHopByHopRequestHeaders(headers);
833
834
  const keysToDelete = [];
834
- for (const key of headers.keys()) if (key.startsWith("x-middleware-")) keysToDelete.push(key);
835
+ for (const key of headers.keys()) if (key.startsWith("x-middleware-") && !key.startsWith("x-middleware-request-")) keysToDelete.push(key);
835
836
  for (const key of keysToDelete) headers.delete(key);
836
837
  headers.delete(VINEXT_PRERENDER_SECRET_HEADER);
837
838
  headers.delete(VINEXT_PRERENDER_ROUTE_PARAMS_HEADER);
@@ -1,5 +1,4 @@
1
1
  //#region src/config/dotenv.d.ts
2
- type VinextEnvMode = "development" | "production" | "test";
3
2
  /**
4
3
  * Environment-variable bag accepted by {@link loadDotenv}.
5
4
  *
@@ -12,18 +11,18 @@ type VinextEnvMode = "development" | "production" | "test";
12
11
  type EnvBag = Record<string, string | undefined>;
13
12
  type LoadDotenvOptions = {
14
13
  root: string;
15
- mode: VinextEnvMode;
14
+ mode: string;
16
15
  processEnv?: EnvBag;
17
16
  };
18
17
  type LoadDotenvResult = {
19
- mode: VinextEnvMode;
18
+ mode: string;
20
19
  loadedFiles: string[];
21
20
  loadedEnv: Record<string, string>;
22
21
  };
23
22
  /**
24
23
  * Next.js-compatible dotenv lookup order (highest priority first).
25
24
  */
26
- declare function getDotenvFiles(mode: VinextEnvMode): string[];
25
+ declare function getDotenvFiles(mode: string): string[];
27
26
  /**
28
27
  * Load .env files into processEnv with Next.js-like precedence:
29
28
  * process.env > .env.<mode>.local > .env.local > .env.<mode> > .env.
@@ -47,10 +46,6 @@ declare function getDotenvFiles(mode: VinextEnvMode): string[];
47
46
  * pass is effectively a no-op for overlapping keys. For `start` and `deploy`
48
47
  * commands (which don't go through Vite at all), this is the only loading.
49
48
  */
50
- declare function loadDotenv({
51
- root,
52
- mode,
53
- processEnv
54
- }: LoadDotenvOptions): LoadDotenvResult;
49
+ declare function loadDotenv({ root, mode, processEnv }: LoadDotenvOptions): LoadDotenvResult;
55
50
  //#endregion
56
51
  export { getDotenvFiles, loadDotenv };
@@ -56,33 +56,41 @@ function loadDotenv({ root, mode, processEnv = process.env }) {
56
56
  loadedEnv
57
57
  };
58
58
  }
59
- const ENV_REF_RE = /(\\)?\$(?:\{([A-Za-z_][A-Za-z0-9_]*)\}|([A-Za-z_][A-Za-z0-9_]*))/g;
60
59
  function expandEnv(parsed, processEnv) {
61
- const expanded = {};
62
- const resolving = /* @__PURE__ */ new Set();
63
- const context = {
60
+ const expanded = { ...parsed };
61
+ for (const key of Object.keys(expanded)) {
62
+ const processValue = processEnv[key];
63
+ expanded[key] = (processValue && processValue !== expanded[key] ? processValue : expandValue(expanded[key], processEnv, expanded)).replace(/\\\$/g, "$");
64
+ }
65
+ return expanded;
66
+ }
67
+ function expandValue(value, processEnv, parsed) {
68
+ const env = {
64
69
  ...parsed,
65
70
  ...processEnv
66
71
  };
67
- function resolveValue(key) {
68
- const cached = expanded[key];
69
- if (cached !== void 0) return cached;
70
- if (resolving.has(key)) return context[key] ?? "";
71
- const raw = context[key];
72
- if (raw === void 0) return "";
73
- resolving.add(key);
74
- let value = raw.replace(ENV_REF_RE, (match, escaped, braced, bare) => {
75
- if (escaped) return match.slice(1);
76
- return resolveValue(braced || bare);
77
- });
78
- value = value.replace(/\\\$/g, "$");
79
- resolving.delete(key);
80
- expanded[key] = value;
81
- context[key] = value;
82
- return value;
72
+ const envRefRe = /(?<!\\)\${([^{}]+)}|(?<!\\)\$([A-Za-z_][A-Za-z0-9_]*)/g;
73
+ const seen = /* @__PURE__ */ new Set();
74
+ let result = value;
75
+ let match;
76
+ while ((match = envRefRe.exec(result)) !== null) {
77
+ seen.add(result);
78
+ const [template, braced, bare] = match;
79
+ const expression = braced || bare;
80
+ const operator = expression.match(/(:\+|\+|:-|-)/)?.[0];
81
+ const parts = operator ? expression.split(operator) : [expression];
82
+ const refKey = parts.shift();
83
+ const operand = parts.join(operator ?? "");
84
+ const refValue = env[refKey];
85
+ let replacement;
86
+ if (operator === ":+" || operator === "+") replacement = refValue ? operand : "";
87
+ else if (refValue) replacement = seen.has(refValue) ? operand : refValue;
88
+ else replacement = operand;
89
+ result = result.replace(template, replacement);
90
+ if (result === parsed[refKey]) break;
91
+ envRefRe.lastIndex = 0;
83
92
  }
84
- for (const key of Object.keys(parsed)) resolveValue(key);
85
- return expanded;
93
+ return result;
86
94
  }
87
95
  //#endregion
88
96
  export { getDotenvFiles, loadDotenv };
@@ -1,6 +1,5 @@
1
1
  import { PHASE_PRODUCTION_BUILD } from "../shims/constants.js";
2
2
  import { PluginOption } from "vite";
3
-
4
3
  //#region src/config/next-config.d.ts
5
4
  declare const VINEXT_NEXT_CONFIG_PLUGIN_PROPERTY = "__vinextNextConfig";
6
5
  /**
@@ -42,8 +41,10 @@ type NextRewrite = {
42
41
  source: string;
43
42
  destination: string;
44
43
  has?: HasCondition[];
45
- missing?: HasCondition[]; /** See {@link NextRedirect.locale}. */
46
- locale?: false; /** See {@link NextRedirect.basePath}. */
44
+ missing?: HasCondition[];
45
+ /** See {@link NextRedirect.locale}. */
46
+ locale?: false;
47
+ /** See {@link NextRedirect.basePath}. */
47
48
  basePath?: false;
48
49
  };
49
50
  type NextHeader = {
@@ -53,12 +54,16 @@ type NextHeader = {
53
54
  headers: Array<{
54
55
  key: string;
55
56
  value: string;
56
- }>; /** See {@link NextRedirect.basePath}. */
57
- basePath?: false; /** See {@link NextRedirect.locale}. */
57
+ }>;
58
+ /** See {@link NextRedirect.basePath}. */
59
+ basePath?: false;
60
+ /** See {@link NextRedirect.locale}. */
58
61
  locale?: false;
59
62
  };
60
63
  type NextI18nConfig = {
61
- /** List of supported locales */locales: string[]; /** The default locale (used when no locale prefix is in the URL) */
64
+ /** List of supported locales */
65
+ locales: string[];
66
+ /** The default locale (used when no locale prefix is in the URL) */
62
67
  defaultLocale: string;
63
68
  /**
64
69
  * Whether to auto-detect locale from Accept-Language header.
@@ -90,7 +95,9 @@ type PrefetchInliningConfig = false | {
90
95
  maxSize: number;
91
96
  };
92
97
  type NextConfig = {
93
- /** Additional env variables */env?: Record<string, string>; /** Base URL path prefix */
98
+ /** Additional env variables */
99
+ env?: Record<string, string>;
100
+ /** Base URL path prefix */
94
101
  basePath?: string;
95
102
  /**
96
103
  * Prefix applied to every emitted JS/CSS/image/static asset URL.
@@ -99,14 +106,26 @@ type NextConfig = {
99
106
  * `basePath` affects route URLs; `assetPrefix` only affects asset URLs.
100
107
  * @see https://nextjs.org/docs/app/api-reference/config/next-config-js/assetPrefix
101
108
  */
102
- assetPrefix?: string; /** Whether to add trailing slashes */
103
- trailingSlash?: boolean; /** TypeScript build settings. */
109
+ assetPrefix?: string;
110
+ /** Cross-origin mode applied to framework scripts and preload links. */
111
+ crossOrigin?: "anonymous" | "use-credentials";
112
+ /** Whether to add trailing slashes */
113
+ trailingSlash?: boolean;
114
+ /** Keep the original request URL visible to middleware/proxy. */
115
+ skipProxyUrlNormalize?: boolean;
116
+ /** @deprecated Use `skipProxyUrlNormalize` instead. */
117
+ skipMiddlewareUrlNormalize?: boolean;
118
+ /** TypeScript build settings. */
104
119
  typescript?: {
105
- /** Project-relative path to the TypeScript configuration file. */tsconfigPath?: string;
120
+ /** Project-relative path to the TypeScript configuration file. */
121
+ tsconfigPath?: string;
106
122
  [key: string]: unknown;
107
- }; /** Internationalization routing config */
108
- i18n?: NextI18nConfig; /** URL redirect rules */
109
- redirects?: () => Promise<NextRedirect[]> | NextRedirect[]; /** URL rewrite rules */
123
+ };
124
+ /** Internationalization routing config */
125
+ i18n?: NextI18nConfig;
126
+ /** URL redirect rules */
127
+ redirects?: () => Promise<NextRedirect[]> | NextRedirect[];
128
+ /** URL rewrite rules */
110
129
  rewrites?: () => Promise<NextRewrite[] | {
111
130
  beforeFiles: NextRewrite[];
112
131
  afterFiles: NextRewrite[];
@@ -115,8 +134,10 @@ type NextConfig = {
115
134
  beforeFiles: NextRewrite[];
116
135
  afterFiles: NextRewrite[];
117
136
  fallback: NextRewrite[];
118
- }; /** Custom response headers */
119
- headers?: () => Promise<NextHeader[]> | NextHeader[]; /** Image optimization config */
137
+ };
138
+ /** Custom response headers */
139
+ headers?: () => Promise<NextHeader[]> | NextHeader[];
140
+ /** Image optimization config */
120
141
  images?: {
121
142
  remotePatterns?: Array<URL | {
122
143
  protocol?: string;
@@ -126,13 +147,20 @@ type NextConfig = {
126
147
  search?: string;
127
148
  }>;
128
149
  domains?: string[];
129
- unoptimized?: boolean; /** Allowed device widths for image optimization. Defaults to Next.js defaults: [640, 750, 828, 1080, 1200, 1920, 2048, 3840] */
130
- deviceSizes?: number[]; /** Allowed image sizes for fixed-width images. Defaults to Next.js defaults: [16, 32, 48, 64, 96, 128, 256, 384] */
131
- imageSizes?: number[]; /** Allowed image qualities. When unset, any quality from 1-100 is permitted (matches Next.js). */
132
- qualities?: number[]; /** Allow SVG images through the image optimization endpoint. SVG can contain scripts, so only enable if you trust all image sources. */
133
- dangerouslyAllowSVG?: boolean; /** Allow image optimization for hostnames that resolve to private IP addresses. This is a security risk (SSRF) — only enable for private networks when you understand the risk. */
134
- dangerouslyAllowLocalIP?: boolean; /** Content-Disposition header for image responses. Defaults to "inline". */
135
- contentDispositionType?: "inline" | "attachment"; /** Content-Security-Policy header for image responses. Defaults to "script-src 'none'; frame-src 'none'; sandbox;" */
150
+ unoptimized?: boolean;
151
+ /** Allowed device widths for image optimization. Defaults to Next.js defaults: [640, 750, 828, 1080, 1200, 1920, 2048, 3840] */
152
+ deviceSizes?: number[];
153
+ /** Allowed image sizes for fixed-width images. Defaults to Next.js defaults: [32, 48, 64, 96, 128, 256, 384] */
154
+ imageSizes?: number[];
155
+ /** Allowed image qualities. When unset, any quality from 1-100 is permitted (matches Next.js). */
156
+ qualities?: number[];
157
+ /** Allow SVG images through the image optimization endpoint. SVG can contain scripts, so only enable if you trust all image sources. */
158
+ dangerouslyAllowSVG?: boolean;
159
+ /** Allow image optimization for hostnames that resolve to private IP addresses. This is a security risk (SSRF) — only enable for private networks when you understand the risk. */
160
+ dangerouslyAllowLocalIP?: boolean;
161
+ /** Content-Disposition header for image responses. Defaults to "inline". */
162
+ contentDispositionType?: "inline" | "attachment";
163
+ /** Content-Security-Policy header for image responses. Defaults to "script-src 'none'; frame-src 'none'; sandbox;" */
136
164
  contentSecurityPolicy?: string;
137
165
  };
138
166
  /**
@@ -142,9 +170,12 @@ type NextConfig = {
142
170
  * router: OFF for the Pages Router, ON for the App Router — matching Next.js.
143
171
  * @see https://nextjs.org/docs/app/api-reference/config/next-config-js/reactStrictMode
144
172
  */
145
- reactStrictMode?: boolean | null; /** Build output mode: 'export' for full static export, 'standalone' for single server */
146
- output?: "export" | "standalone"; /** File extensions treated as routable pages/routes (Next.js pageExtensions) */
147
- pageExtensions?: string[]; /** Turbopack-compatible module resolution options. */
173
+ reactStrictMode?: boolean | null;
174
+ /** Build output mode: 'export' for full static export, 'standalone' for single server */
175
+ output?: "export" | "standalone";
176
+ /** File extensions treated as routable pages/routes (Next.js pageExtensions) */
177
+ pageExtensions?: string[];
178
+ /** Turbopack-compatible module resolution options. */
148
179
  turbopack?: {
149
180
  resolveAlias?: Record<string, unknown>;
150
181
  resolveExtensions?: string[];
@@ -155,8 +186,10 @@ type NextConfig = {
155
186
  * hydration, in array order, ahead of the user's `instrumentation-client.{ts,js}`.
156
187
  * Each entry may be a bare npm package name or a path relative to the project root.
157
188
  */
158
- instrumentationClientInject?: string[]; /** Extra origins allowed to access the dev server. */
159
- allowedDevOrigins?: string[]; /** Maximum age in seconds for stale ISR entries before blocking regeneration. */
189
+ instrumentationClientInject?: string[];
190
+ /** Extra origins allowed to access the dev server. */
191
+ allowedDevOrigins?: string[];
192
+ /** Maximum age in seconds for stale ISR entries before blocking regeneration. */
160
193
  expireTime?: number;
161
194
  /**
162
195
  * Maximum total length (in characters) of the preload `Link` header emitted
@@ -164,7 +197,8 @@ type NextConfig = {
164
197
  * exceeded; `0` disables emission entirely. Defaults to 6000.
165
198
  * @see https://nextjs.org/docs/app/api-reference/config/next-config-js/reactMaxHeadersLength
166
199
  */
167
- reactMaxHeadersLength?: number; /** User agents that require blocking metadata in the initial head. */
200
+ reactMaxHeadersLength?: number;
201
+ /** User agents that require blocking metadata in the initial head. */
168
202
  htmlLimitedBots?: RegExp | string;
169
203
  /**
170
204
  * Enable Cache Components (Next.js 16).
@@ -177,21 +211,24 @@ type NextConfig = {
177
211
  * Helps with errors during the prerender phase in `vinext build`.
178
212
  * Defaults to `true`. Set to `false` to disable.
179
213
  */
180
- enablePrerenderSourceMaps?: boolean; /** Transpile packages (Vite handles this natively) */
214
+ enablePrerenderSourceMaps?: boolean;
215
+ /** Transpile packages (Vite handles this natively) */
181
216
  transpilePackages?: string[];
182
217
  /**
183
218
  * Packages that should be treated as server-external (not bundled by Vite).
184
219
  * Corresponds to Next.js `serverExternalPackages` (or the legacy
185
220
  * `experimental.serverComponentsExternalPackages`).
186
221
  */
187
- serverExternalPackages?: string[]; /** Webpack config (ignored — we use Vite) */
222
+ serverExternalPackages?: string[];
223
+ /** Webpack config (ignored — we use Vite) */
188
224
  webpack?: unknown;
189
225
  /**
190
226
  * Compiler options for build-time code transforms.
191
227
  * vinext supports the subset that maps to Vite-compatible transforms.
192
228
  */
193
229
  compiler?: {
194
- /** Remove `console.*` calls from the client bundle. */removeConsole?: boolean | {
230
+ /** Remove `console.*` calls from the client bundle. */
231
+ removeConsole?: boolean | {
195
232
  exclude?: string[];
196
233
  };
197
234
  /**
@@ -207,7 +244,8 @@ type NextConfig = {
207
244
  defineServer?: Record<string, string | number | boolean>;
208
245
  };
209
246
  experimental?: {
210
- /** Enables hard-navigation recovery when App Router navigation rendering fails. */appNavFailHandling?: boolean;
247
+ /** Enables hard-navigation recovery when App Router navigation rendering fails. */
248
+ appNavFailHandling?: boolean;
211
249
  /**
212
250
  * Enables the experimental App Router gesture transition API:
213
251
  * `useRouter().experimental_gesturePush()`.
@@ -221,7 +259,8 @@ type NextConfig = {
221
259
  prefetchInlining?: boolean | {
222
260
  maxBundleSize?: number;
223
261
  maxSize?: number;
224
- }; /** Header names forwarded by Pages Router `res.revalidate()` internal requests. */
262
+ };
263
+ /** Header names forwarded by Pages Router `res.revalidate()` internal requests. */
225
264
  allowedRevalidateHeaderKeys?: string[];
226
265
  [key: string]: unknown;
227
266
  };
@@ -241,8 +280,10 @@ type NextConfig = {
241
280
  * Custom build ID generator. If provided, called once at build/dev start.
242
281
  * Must return a non-empty string, or null to use the default random ID.
243
282
  */
244
- generateBuildId?: () => string | null | Promise<string | null>; /** Identifier for deployment-aware cache keys and version skew protection. */
245
- deploymentId?: string; /** Any other options */
283
+ generateBuildId?: () => string | null | Promise<string | null>;
284
+ /** Identifier for deployment-aware cache keys and version skew protection. */
285
+ deploymentId?: string;
286
+ /** Any other options */
246
287
  [key: string]: unknown;
247
288
  };
248
289
  type NextConfigFactory = (phase: string, opts: {
@@ -271,6 +312,7 @@ type ResolvedNextConfig = {
271
312
  */
272
313
  assetPrefix: string;
273
314
  trailingSlash: boolean;
315
+ skipProxyUrlNormalize: boolean;
274
316
  typescript: {
275
317
  tsconfigPath?: string;
276
318
  };
@@ -299,32 +341,47 @@ type ResolvedNextConfig = {
299
341
  };
300
342
  headers: NextHeader[];
301
343
  images: NextConfig["images"];
302
- i18n: NextI18nConfig | null; /** MDX remark/rehype/recma plugins extracted from @next/mdx config */
303
- mdx: MdxOptions | null; /** Explicit module aliases preserved from wrapped next.config plugins. */
304
- aliases: Record<string, string>; /** Extra allowed origins for dev server access (from allowedDevOrigins). */
305
- allowedDevOrigins: string[]; /** Extra allowed origins for server action CSRF validation (from experimental.serverActions.allowedOrigins). */
306
- serverActionsAllowedOrigins: string[]; /** Header names forwarded by Pages Router `res.revalidate()` internal requests. */
307
- allowedRevalidateHeaderKeys: string[]; /** Packages whose barrel imports should be optimized (from experimental.optimizePackageImports). */
308
- optimizePackageImports: string[]; /** Packages explicitly requested for server/client transpilation. */
309
- transpilePackages: string[]; /** Packages treated as application code by Turbopack's foreign-code condition. */
310
- turbopackTranspilePackages: string[]; /** Inline app CSS into production HTML (from experimental.inlineCss). */
311
- inlineCss: boolean; /** Enable standalone route-miss 404 handling (from experimental.globalNotFound). */
312
- globalNotFound: boolean; /** Parsed body size limit for server actions in bytes (from experimental.serverActions.bodySizeLimit). Defaults to 1MB. */
313
- serverActionsBodySizeLimit: number; /** Verbatim body size limit config value (e.g. "2mb") for the "Body exceeded {limit} limit" error. Defaults to "1 MB". */
314
- serverActionsBodySizeLimitLabel: string; /** Route-level expire fallback in seconds for ISR entries with numeric revalidate. */
344
+ i18n: NextI18nConfig | null;
345
+ /** MDX remark/rehype/recma plugins extracted from @next/mdx config */
346
+ mdx: MdxOptions | null;
347
+ /** Explicit module aliases preserved from wrapped next.config plugins. */
348
+ aliases: Record<string, string>;
349
+ /** Extra allowed origins for dev server access (from allowedDevOrigins). */
350
+ allowedDevOrigins: string[];
351
+ /** Extra allowed origins for server action CSRF validation (from experimental.serverActions.allowedOrigins). */
352
+ serverActionsAllowedOrigins: string[];
353
+ /** Header names forwarded by Pages Router `res.revalidate()` internal requests. */
354
+ allowedRevalidateHeaderKeys: string[];
355
+ /** Packages whose barrel imports should be optimized (from experimental.optimizePackageImports). */
356
+ optimizePackageImports: string[];
357
+ /** Packages explicitly requested for server/client transpilation. */
358
+ transpilePackages: string[];
359
+ /** Packages treated as application code by Turbopack's foreign-code condition. */
360
+ turbopackTranspilePackages: string[];
361
+ /** Inline app CSS into production HTML (from experimental.inlineCss). */
362
+ inlineCss: boolean;
363
+ /** Enable standalone route-miss 404 handling (from experimental.globalNotFound). */
364
+ globalNotFound: boolean;
365
+ /** Parsed body size limit for server actions in bytes (from experimental.serverActions.bodySizeLimit). Defaults to 1MB. */
366
+ serverActionsBodySizeLimit: number;
367
+ /** Verbatim body size limit config value (e.g. "2mb") for the "Body exceeded {limit} limit" error. Defaults to "1 MB". */
368
+ serverActionsBodySizeLimitLabel: string;
369
+ /** Route-level expire fallback in seconds for ISR entries with numeric revalidate. */
315
370
  expireTime: number;
316
371
  /**
317
372
  * Maximum total length (in characters) of the preload `Link` header emitted
318
373
  * during App Router SSR. `0` disables emission. Defaults to 6000.
319
374
  */
320
- reactMaxHeadersLength: number; /** Serialized htmlLimitedBots regexp source from next.config. */
375
+ reactMaxHeadersLength: number;
376
+ /** Serialized htmlLimitedBots regexp source from next.config. */
321
377
  htmlLimitedBots: string | undefined;
322
378
  /**
323
379
  * Packages that should be treated as server-external (not bundled by Vite).
324
380
  * Sourced from `serverExternalPackages` or the legacy
325
381
  * `experimental.serverComponentsExternalPackages` in next.config.
326
382
  */
327
- serverExternalPackages: string[]; /** Enable sourcemaps for prerender error stack traces. Defaults to true. */
383
+ serverExternalPackages: string[];
384
+ /** Enable sourcemaps for prerender error stack traces. Defaults to true. */
328
385
  enablePrerenderSourceMaps: boolean;
329
386
  /**
330
387
  * Enable App Shell prefetching (from experimental.appShells).
@@ -332,8 +389,10 @@ type ResolvedNextConfig = {
332
389
  * bundle via `process.env.__NEXT_APP_SHELLS`, but actual App Shell behavior
333
390
  * requires the segment-cache architecture which is not yet implemented.
334
391
  */
335
- appShells: boolean; /** Resolved build ID (from generateBuildId, or a random UUID if not provided). */
336
- buildId: string; /** Resolved deployment ID from next.config.js or NEXT_DEPLOYMENT_ID. */
392
+ appShells: boolean;
393
+ /** Resolved build ID (from generateBuildId, or a random UUID if not provided). */
394
+ buildId: string;
395
+ /** Resolved deployment ID from next.config.js or NEXT_DEPLOYMENT_ID. */
337
396
  deploymentId: string | undefined;
338
397
  /**
339
398
  * Path to a custom cache handler module. file:// URLs are resolved to
@@ -383,6 +442,8 @@ type ResolvedNextConfig = {
383
442
  * `test/e2e/optimized-loading` test fixture.
384
443
  */
385
444
  disableOptimizedLoading: boolean;
445
+ /** Cross-origin mode applied to framework scripts and preload links. */
446
+ crossOrigin: "anonymous" | "use-credentials" | undefined;
386
447
  /**
387
448
  * Resolved `reactStrictMode` from next.config, preserved as `boolean | null`
388
449
  * so each router can apply its own default (Next.js resolves `null` to OFF
@@ -658,6 +658,7 @@ async function resolveNextConfig(config, root = toSlash(process.cwd()), options
658
658
  basePath: "",
659
659
  assetPrefix: "",
660
660
  trailingSlash: false,
661
+ skipProxyUrlNormalize: false,
661
662
  typescript: {},
662
663
  output: "",
663
664
  pageExtensions: normalizePageExtensions(),
@@ -702,6 +703,7 @@ async function resolveNextConfig(config, root = toSlash(process.cwd()), options
702
703
  sassOptions: null,
703
704
  removeConsole: false,
704
705
  disableOptimizedLoading: false,
706
+ crossOrigin: void 0,
705
707
  reactStrictMode: null,
706
708
  scrollRestoration: false,
707
709
  compilerDefine: {},
@@ -718,6 +720,8 @@ async function resolveNextConfig(config, root = toSlash(process.cwd()), options
718
720
  detectNextIntlConfig(root, resolved);
719
721
  return resolved;
720
722
  }
723
+ if (config.crossOrigin !== void 0 && config.crossOrigin !== "anonymous" && config.crossOrigin !== "use-credentials") console.warn("Invalid next.config options detected:\n Invalid option at \"crossOrigin\": expected \"anonymous\" or \"use-credentials\"\nSee more info here: https://nextjs.org/docs/messages/invalid-next-config");
724
+ if (config.skipProxyUrlNormalize !== void 0 && config.skipMiddlewareUrlNormalize !== void 0) throw new Error("Config options `skipProxyUrlNormalize` and `skipMiddlewareUrlNormalize` cannot be set at the same time. Please use `skipProxyUrlNormalize` instead.");
721
725
  warnDeprecatedConfigOptions(config, root);
722
726
  const i18n = normalizeI18nConfig(config.i18n);
723
727
  let redirects = [];
@@ -835,6 +839,7 @@ async function resolveNextConfig(config, root = toSlash(process.cwd()), options
835
839
  basePath: config.basePath ?? "",
836
840
  assetPrefix: normalizeAssetPrefix(config.assetPrefix),
837
841
  trailingSlash: config.trailingSlash ?? false,
842
+ skipProxyUrlNormalize: config.skipProxyUrlNormalize ?? config.skipMiddlewareUrlNormalize ?? false,
838
843
  typescript: typeof config.typescript?.tsconfigPath === "string" ? { tsconfigPath: config.typescript.tsconfigPath } : {},
839
844
  output: output === "export" || output === "standalone" ? output : "",
840
845
  pageExtensions,
@@ -876,6 +881,7 @@ async function resolveNextConfig(config, root = toSlash(process.cwd()), options
876
881
  sassOptions: readOptionalRecord(config.sassOptions) ?? null,
877
882
  removeConsole: config.compiler?.removeConsole === true ? true : isUnknownRecord(config.compiler?.removeConsole) ? { exclude: readStringArray(config.compiler.removeConsole.exclude) } : false,
878
883
  disableOptimizedLoading: experimental?.disableOptimizedLoading === true,
884
+ crossOrigin: config.crossOrigin === "anonymous" || config.crossOrigin === "use-credentials" ? config.crossOrigin : void 0,
879
885
  reactStrictMode: typeof config.reactStrictMode === "boolean" ? config.reactStrictMode : null,
880
886
  scrollRestoration: experimental?.scrollRestoration === true,
881
887
  compilerDefine: serializeCompilerDefine(config.compiler?.define),
@@ -1,6 +1,5 @@
1
1
  import { VINEXT_CACHE_CONFIG_PLUGIN_PROPERTY, VinextCacheConfig, findVinextCacheConfigInPlugins, loadVinextCacheConfigFromViteConfig } from "../cache/cache-adapters-virtual.js";
2
2
  import { PluginOption } from "vite";
3
-
4
3
  //#region src/config/prerender.d.ts
5
4
  type VinextPrerenderConfig = true | {
6
5
  /**
@@ -1,7 +1,6 @@
1
1
  import { NextRewrite } from "../config/next-config.js";
2
2
  import { AppRoute, RouteManifest } from "../routing/app-route-graph.js";
3
3
  import { VinextLinkPrefetchRoute, VinextPagesLinkPrefetchRoute } from "../client/vinext-next-data.js";
4
-
5
4
  //#region src/entries/app-browser-entry.d.ts
6
5
  /**
7
6
  * Generate the virtual browser entry module.
@@ -1,4 +1,5 @@
1
1
  import { resolveClientRuntimeModule, resolveRuntimeEntryModule } from "./runtime-entry-module.js";
2
+ import { toClientRewrites } from "../client/client-rewrites.js";
2
3
  import { patternsStructurallyEquivalent } from "../routing/app-route-graph.js";
3
4
  //#region src/entries/app-browser-entry.ts
4
5
  /**
@@ -14,9 +15,12 @@ function generateBrowserEntry(routes = [], routeManifest = null, pagesPrefetchRo
14
15
  fallback: []
15
16
  }) {
16
17
  const entryPath = resolveRuntimeEntryModule("app-browser-entry");
18
+ const reactInstanceBootstrapPath = resolveClientRuntimeModule("react-instance-bootstrap");
17
19
  const navigationRuntimePath = resolveClientRuntimeModule("navigation-runtime");
18
20
  const prefetchRoutes = toLinkPrefetchRoutes(routes);
19
- return `import { registerNavigationRuntimeBootstrap } from ${JSON.stringify(navigationRuntimePath)};
21
+ const clientRewrites = toClientRewrites(rewrites);
22
+ return `import ${JSON.stringify(reactInstanceBootstrapPath)};
23
+ import { registerNavigationRuntimeBootstrap } from ${JSON.stringify(navigationRuntimePath)};
20
24
 
21
25
  window.__VINEXT_LINK_PREFETCH_ROUTES__ = ${JSON.stringify(prefetchRoutes)};
22
26
  // Pages route manifest for hybrid ownership decisions. In a hybrid
@@ -24,7 +28,7 @@ window.__VINEXT_LINK_PREFETCH_ROUTES__ = ${JSON.stringify(prefetchRoutes)};
24
28
  // entry must also expose the Pages manifest (the Pages client entry does
25
29
  // the same — whichever entry runs first emits both globals).
26
30
  window.__VINEXT_PAGES_LINK_PREFETCH_ROUTES__ = ${JSON.stringify(pagesPrefetchRoutes)};
27
- window.__VINEXT_CLIENT_REWRITES__ = ${JSON.stringify(rewrites)};
31
+ window.__VINEXT_CLIENT_REWRITES__ = ${JSON.stringify(clientRewrites)};
28
32
  registerNavigationRuntimeBootstrap({
29
33
  routeManifest: ${buildRouteManifestExpression(routeManifest)}
30
34
  });
@@ -58,7 +62,7 @@ function interceptTargetsRoute(interceptTargetPattern, route) {
58
62
  return patternsStructurallyEquivalent(splitPatternParts(interceptTargetPattern), route.patternParts);
59
63
  }
60
64
  function hasLoadingBoundary(route, hasSiblingInterceptLoading) {
61
- return route.loadingPath !== null || (route.loadingPaths?.length ?? 0) > 0 || route.parallelSlots.some((slot) => slot.loadingPath !== null || (slot.loadingPaths?.length ?? 0) > 0 || slot.interceptingRoutes.some((intercept) => interceptTargetsRoute(intercept.targetPattern, route) && (intercept.loadingPaths?.length ?? 0) > 0)) || hasSiblingInterceptLoading;
65
+ return route.loadingPath !== null || (route.loadingPaths?.some((_, index) => (route.loadingTreePositions?.[index] ?? 0) > 0) ?? false) || route.parallelSlots.some((slot) => slot.loadingPath !== null || (slot.loadingPaths?.length ?? 0) > 0 || slot.interceptingRoutes.some((intercept) => interceptTargetsRoute(intercept.targetPattern, route) && (intercept.loadingPaths?.length ?? 0) > 0)) || hasSiblingInterceptLoading;
62
66
  }
63
67
  /** Project an `AppRoute` down to the public `VinextLinkPrefetchRoute` shape. */
64
68
  function toLinkPrefetchRoute(route, hasSiblingInterceptLoading = route.siblingIntercepts.some((intercept) => interceptTargetsRoute(intercept.targetPattern, route) && (intercept.loadingPaths?.length ?? 0) > 0)) {
@@ -2,7 +2,6 @@ import { NextHeader, NextI18nConfig, NextRedirect, NextRewrite, PrefetchInlining
2
2
  import { AppRoute } from "../routing/app-route-graph.js";
3
3
  import { MetadataFileRoute } from "../server/metadata-routes.js";
4
4
  import { ImageConfig } from "../server/image-optimization.js";
5
-
6
5
  //#region src/entries/app-rsc-entry.d.ts
7
6
  /**
8
7
  * Resolved config options relevant to App Router request handling.
@@ -15,11 +14,16 @@ type AppRouterConfig = {
15
14
  afterFiles: NextRewrite[];
16
15
  fallback: NextRewrite[];
17
16
  };
18
- headers?: NextHeader[]; /** Extra origins allowed for server action CSRF checks (from experimental.serverActions.allowedOrigins). */
19
- allowedOrigins?: string[]; /** Extra origins allowed for dev server access (from allowedDevOrigins). */
20
- allowedDevOrigins?: string[]; /** Body size limit for server actions in bytes (from experimental.serverActions.bodySizeLimit). */
21
- bodySizeLimit?: number; /** Verbatim body size limit config value (e.g. "2mb") for the "Body exceeded {limit} limit" error. */
22
- bodySizeLimitLabel?: string; /** Serialized next.config htmlLimitedBots regexp source. */
17
+ headers?: NextHeader[];
18
+ /** Extra origins allowed for server action CSRF checks (from experimental.serverActions.allowedOrigins). */
19
+ allowedOrigins?: string[];
20
+ /** Extra origins allowed for dev server access (from allowedDevOrigins). */
21
+ allowedDevOrigins?: string[];
22
+ /** Body size limit for server actions in bytes (from experimental.serverActions.bodySizeLimit). */
23
+ bodySizeLimit?: number;
24
+ /** Verbatim body size limit config value (e.g. "2mb") for the "Body exceeded {limit} limit" error. */
25
+ bodySizeLimitLabel?: string;
26
+ /** Serialized next.config htmlLimitedBots regexp source. */
23
27
  htmlLimitedBots?: string;
24
28
  /**
25
29
  * Allow-list of keys (from `experimental.clientTraceMetadata`) to surface
@@ -35,19 +39,27 @@ type AppRouterConfig = {
35
39
  *
36
40
  * @see https://nextjs.org/docs/app/api-reference/config/next-config-js/assetPrefix
37
41
  */
38
- assetPrefix?: string; /** Route-level expire fallback in seconds for ISR entries with numeric revalidate. */
42
+ assetPrefix?: string;
43
+ /** Route-level expire fallback in seconds for ISR entries with numeric revalidate. */
39
44
  expireTime?: number;
40
45
  /**
41
46
  * Maximum total length (in characters) of the preload `Link` header emitted
42
47
  * during App Router SSR. `0` disables emission. Defaults to 6000.
43
48
  */
44
- reactMaxHeadersLength?: number; /** Maximum in-memory cache size in bytes. 0 disables the default memory cache. */
45
- cacheMaxMemorySize?: number; /** Inline app CSS into production HTML (from experimental.inlineCss). */
46
- inlineCss?: boolean; /** Enable standalone route-miss 404 handling (from experimental.globalNotFound). */
47
- globalNotFound?: boolean; /** Enables Next.js Cache Components semantics for App Router document HTML. */
48
- cacheComponents?: boolean; /** Resolved `experimental.prefetchInlining` thresholds. */
49
- prefetchInlining?: PrefetchInliningConfig; /** Whether the RSC build discovered any server references. Defaults to true. */
50
- hasServerActions?: boolean; /** Internationalization routing config for middleware matcher locale handling. */
49
+ reactMaxHeadersLength?: number;
50
+ /** Maximum in-memory cache size in bytes. 0 disables the default memory cache. */
51
+ cacheMaxMemorySize?: number;
52
+ /** Inline app CSS into production HTML (from experimental.inlineCss). */
53
+ inlineCss?: boolean;
54
+ /** Enable standalone route-miss 404 handling (from experimental.globalNotFound). */
55
+ globalNotFound?: boolean;
56
+ /** Enables Next.js Cache Components semantics for App Router document HTML. */
57
+ cacheComponents?: boolean;
58
+ /** Resolved `experimental.prefetchInlining` thresholds. */
59
+ prefetchInlining?: PrefetchInliningConfig;
60
+ /** Whether the RSC build discovered any server references. Defaults to true. */
61
+ hasServerActions?: boolean;
62
+ /** Internationalization routing config for middleware matcher locale handling. */
51
63
  i18n?: NextI18nConfig | null;
52
64
  imageConfig?: ImageConfig;
53
65
  /**
@@ -67,8 +79,10 @@ type AppRouterConfig = {
67
79
  * `import("./ssr/index.js")`, which re-exports it from
68
80
  * `virtual:vinext-server-entry` when this flag is set.
69
81
  */
70
- hasPagesDir?: boolean; /** Exact public/ file routes, using normalized leading-slash pathnames. */
71
- publicFiles?: string[]; /** Server-only token used to validate the draft-mode bypass cookie. */
82
+ hasPagesDir?: boolean;
83
+ /** Exact public/ file routes, using normalized leading-slash pathnames. */
84
+ publicFiles?: string[];
85
+ /** Server-only token used to validate the draft-mode bypass cookie. */
72
86
  draftModeSecret?: string;
73
87
  };
74
88
  /**