vinext 1.0.0-beta.4 → 1.0.0-beta.6

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 (460) 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 +41 -7
  14. package/dist/build/prerender-paths.d.ts +2 -2
  15. package/dist/build/prerender-paths.js +3 -4
  16. package/dist/build/prerender-phase.d.ts +15 -0
  17. package/dist/build/prerender-phase.js +37 -0
  18. package/dist/build/prerender-server-entry.d.ts +1 -1
  19. package/dist/build/prerender-server-entry.js +3 -3
  20. package/dist/build/prerender-server-pool.d.ts +4 -2
  21. package/dist/build/prerender-server-pool.js +2 -0
  22. package/dist/build/prerender.d.ts +40 -33
  23. package/dist/build/prerender.js +99 -18
  24. package/dist/build/public-dir-conflict.d.ts +14 -0
  25. package/dist/build/public-dir-conflict.js +25 -0
  26. package/dist/build/report.d.ts +2 -2
  27. package/dist/build/route-classification-injector.d.ts +0 -1
  28. package/dist/build/route-classification-manifest.d.ts +5 -3
  29. package/dist/build/run-prerender.d.ts +3 -2
  30. package/dist/build/run-prerender.js +9 -6
  31. package/dist/build/static-export.d.ts +23 -12
  32. package/dist/cache/cache-adapters-virtual.d.ts +5 -2
  33. package/dist/check.js +4 -4
  34. package/dist/cli-dev-config.d.ts +0 -1
  35. package/dist/cli.d.ts +1 -1
  36. package/dist/client/client-rewrite-matcher.d.ts +12 -0
  37. package/dist/client/client-rewrite-matcher.js +20 -0
  38. package/dist/client/client-rewrites.d.ts +31 -0
  39. package/dist/client/client-rewrites.js +41 -0
  40. package/dist/client/dev-error-overlay.d.ts +0 -1
  41. package/dist/client/empty-module.d.ts +1 -1
  42. package/dist/client/index.d.ts +2 -0
  43. package/dist/client/index.js +2 -0
  44. package/dist/client/instrumentation-client-state.d.ts +0 -1
  45. package/dist/client/navigation-runtime.d.ts +6 -1
  46. package/dist/client/navigation-runtime.js +5 -1
  47. package/dist/client/pages-router-link-navigation.d.ts +3 -21
  48. package/dist/client/react-instance-bootstrap.d.ts +1 -0
  49. package/dist/client/react-instance-bootstrap.js +7 -0
  50. package/dist/client/react-instance.d.ts +13 -0
  51. package/dist/client/react-instance.js +20 -0
  52. package/dist/client/vinext-next-data.d.ts +13 -6
  53. package/dist/client/window-next.d.ts +5 -2
  54. package/dist/config/config-matchers.d.ts +3 -5
  55. package/dist/config/config-matchers.js +7 -6
  56. package/dist/config/dotenv.d.ts +1 -5
  57. package/dist/config/next-config.d.ts +113 -54
  58. package/dist/config/next-config.js +27 -7
  59. package/dist/config/prerender.d.ts +0 -1
  60. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +808 -0
  61. package/dist/entries/app-browser-entry.d.ts +0 -1
  62. package/dist/entries/app-browser-entry.js +8 -3
  63. package/dist/entries/app-rsc-entry.d.ts +30 -16
  64. package/dist/entries/app-rsc-entry.js +48 -10
  65. package/dist/entries/app-rsc-manifest.d.ts +0 -1
  66. package/dist/entries/app-rsc-manifest.js +1 -0
  67. package/dist/entries/pages-client-entry.d.ts +0 -1
  68. package/dist/entries/pages-client-entry.js +15 -5
  69. package/dist/entries/pages-server-entry.d.ts +1 -2
  70. package/dist/entries/pages-server-entry.js +21 -5
  71. package/dist/image/image-adapters-virtual.d.ts +4 -2
  72. package/dist/index.d.ts +0 -1
  73. package/dist/index.js +328 -227
  74. package/dist/init-cloudflare.d.ts +0 -1
  75. package/dist/init-platform.d.ts +0 -1
  76. package/dist/init.d.ts +40 -20
  77. package/dist/plugins/ast-scope.d.ts +0 -1
  78. package/dist/plugins/async-hooks-stub.d.ts +0 -1
  79. package/dist/plugins/client-reference-dedup.d.ts +0 -1
  80. package/dist/plugins/css-data-url.d.ts +0 -1
  81. package/dist/plugins/css-module-imports.d.ts +0 -1
  82. package/dist/plugins/dynamic-preload-metadata.d.ts +0 -1
  83. package/dist/plugins/extensionless-dynamic-import.d.ts +0 -1
  84. package/dist/plugins/extensionless-dynamic-import.js +352 -13
  85. package/dist/plugins/fonts.d.ts +0 -1
  86. package/dist/plugins/ignore-dynamic-requests.d.ts +0 -1
  87. package/dist/plugins/ignore-dynamic-requests.js +28 -4
  88. package/dist/plugins/import-meta-url.d.ts +0 -1
  89. package/dist/plugins/instrumentation-client.d.ts +0 -1
  90. package/dist/plugins/middleware-server-only.d.ts +0 -1
  91. package/dist/plugins/og-asset-ownership.d.ts +0 -1
  92. package/dist/plugins/og-assets.d.ts +0 -1
  93. package/dist/plugins/optimize-imports.d.ts +0 -1
  94. package/dist/plugins/pages-node-externals.d.ts +23 -0
  95. package/dist/plugins/pages-node-externals.js +206 -0
  96. package/dist/plugins/remove-console.d.ts +0 -1
  97. package/dist/plugins/require-context.d.ts +0 -1
  98. package/dist/plugins/require-context.js +143 -26
  99. package/dist/plugins/rsc-client-reference-loaders.d.ts +0 -1
  100. package/dist/plugins/rsc-reference-validation-normalizer.d.ts +0 -1
  101. package/dist/plugins/sass.d.ts +30 -2
  102. package/dist/plugins/sass.js +64 -1
  103. package/dist/plugins/server-externals-manifest.d.ts +0 -1
  104. package/dist/plugins/strip-server-exports.d.ts +0 -1
  105. package/dist/plugins/styled-jsx.d.ts +0 -1
  106. package/dist/plugins/transitive-externals.d.ts +24 -0
  107. package/dist/plugins/transitive-externals.js +121 -0
  108. package/dist/plugins/typeof-window.d.ts +11 -1
  109. package/dist/plugins/typeof-window.js +141 -13
  110. package/dist/plugins/use-cache-callable.d.ts +12 -0
  111. package/dist/plugins/use-cache-callable.js +209 -0
  112. package/dist/plugins/wasm-module-import.d.ts +0 -1
  113. package/dist/routing/app-route-graph.d.ts +115 -56
  114. package/dist/routing/app-route-graph.js +2 -1
  115. package/dist/routing/app-router.d.ts +0 -1
  116. package/dist/routing/pages-router.d.ts +9 -5
  117. package/dist/routing/route-matching.d.ts +0 -1
  118. package/dist/routing/utils.d.ts +1 -23
  119. package/dist/routing/utils.js +1 -30
  120. package/dist/server/accept-encoding.d.ts +0 -1
  121. package/dist/server/api-handler.d.ts +0 -1
  122. package/dist/server/api-handler.js +1 -1
  123. package/dist/server/app-bfcache-identity.d.ts +9 -10
  124. package/dist/server/app-bfcache-identity.js +27 -128
  125. package/dist/server/app-browser-action-result.d.ts +0 -1
  126. package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -1
  127. package/dist/server/app-browser-entry.d.ts +1 -1
  128. package/dist/server/app-browser-entry.js +46 -30
  129. package/dist/server/app-browser-history-controller.d.ts +8 -5
  130. package/dist/server/app-browser-hydration.d.ts +0 -1
  131. package/dist/server/app-browser-interception-context.d.ts +0 -1
  132. package/dist/server/app-browser-mpa-navigation.d.ts +0 -1
  133. package/dist/server/app-browser-navigation-controller.d.ts +2 -5
  134. package/dist/server/app-browser-popstate.d.ts +0 -1
  135. package/dist/server/app-browser-prefetch-response.d.ts +17 -1
  136. package/dist/server/app-browser-prefetch-response.js +23 -1
  137. package/dist/server/app-browser-server-action-client.d.ts +1 -1
  138. package/dist/server/app-browser-server-action-client.js +3 -2
  139. package/dist/server/app-browser-server-action-navigation.d.ts +0 -1
  140. package/dist/server/app-browser-state.d.ts +4 -3
  141. package/dist/server/app-browser-state.js +2 -4
  142. package/dist/server/app-browser-stream.d.ts +0 -1
  143. package/dist/server/app-browser-visible-commit.d.ts +1 -1
  144. package/dist/server/app-browser-visible-commit.js +6 -2
  145. package/dist/server/app-elements-wire.d.ts +16 -13
  146. package/dist/server/app-elements-wire.js +37 -10
  147. package/dist/server/app-elements.d.ts +2 -3
  148. package/dist/server/app-elements.js +2 -2
  149. package/dist/server/app-fallback-renderer.d.ts +8 -4
  150. package/dist/server/app-fallback-renderer.js +2 -1
  151. package/dist/server/app-history-state.d.ts +2 -2
  152. package/dist/server/app-history-state.js +1 -1
  153. package/dist/server/app-hook-warning-suppression.d.ts +0 -1
  154. package/dist/server/app-layout-param-observation.d.ts +0 -1
  155. package/dist/server/app-layout-param-observation.js +1 -1
  156. package/dist/server/app-middleware.d.ts +5 -1
  157. package/dist/server/app-middleware.js +96 -31
  158. package/dist/server/app-optimistic-routing.d.ts +1 -0
  159. package/dist/server/app-page-boundary-render.d.ts +8 -4
  160. package/dist/server/app-page-boundary-render.js +4 -7
  161. package/dist/server/app-page-cache-finalizer.d.ts +3 -3
  162. package/dist/server/app-page-cache-finalizer.js +45 -19
  163. package/dist/server/app-page-cache-render.d.ts +3 -2
  164. package/dist/server/app-page-cache-render.js +5 -2
  165. package/dist/server/app-page-cache.d.ts +3 -4
  166. package/dist/server/app-page-cache.js +33 -15
  167. package/dist/server/app-page-dispatch.d.ts +11 -5
  168. package/dist/server/app-page-dispatch.js +11 -6
  169. package/dist/server/app-page-element-builder.d.ts +61 -19
  170. package/dist/server/app-page-element-builder.js +113 -43
  171. package/dist/server/app-page-execution.d.ts +12 -5
  172. package/dist/server/app-page-execution.js +20 -7
  173. package/dist/server/app-page-head.d.ts +2 -2
  174. package/dist/server/app-page-http-access-fallback-metadata.d.ts +2 -2
  175. package/dist/server/app-page-params.d.ts +0 -1
  176. package/dist/server/app-page-ppr-runtime.d.ts +0 -1
  177. package/dist/server/app-page-probe.d.ts +4 -3
  178. package/dist/server/app-page-probe.js +1 -1
  179. package/dist/server/app-page-render-identity.d.ts +1 -0
  180. package/dist/server/app-page-render-observation.d.ts +0 -1
  181. package/dist/server/app-page-render.d.ts +6 -4
  182. package/dist/server/app-page-render.js +53 -25
  183. package/dist/server/app-page-request.d.ts +3 -1
  184. package/dist/server/app-page-request.js +3 -34
  185. package/dist/server/app-page-response.d.ts +13 -3
  186. package/dist/server/app-page-response.js +17 -11
  187. package/dist/server/app-page-route-wiring.d.ts +27 -5
  188. package/dist/server/app-page-route-wiring.js +110 -58
  189. package/dist/server/app-page-search-params-observation.d.ts +0 -1
  190. package/dist/server/app-page-segment-plan.d.ts +56 -0
  191. package/dist/server/app-page-segment-plan.js +177 -0
  192. package/dist/server/app-page-segment-state.d.ts +18 -2
  193. package/dist/server/app-page-segment-state.js +23 -4
  194. package/dist/server/app-page-stream.d.ts +31 -10
  195. package/dist/server/app-page-stream.js +10 -3
  196. package/dist/server/app-pages-bridge.d.ts +0 -1
  197. package/dist/server/app-pages-bridge.js +12 -1
  198. package/dist/server/app-post-middleware-context.d.ts +0 -1
  199. package/dist/server/app-ppr-fallback-shell-render.d.ts +0 -1
  200. package/dist/server/app-prerender-endpoints.d.ts +1 -1
  201. package/dist/server/app-prerender-endpoints.js +12 -0
  202. package/dist/server/app-prerender-static-params.d.ts +0 -1
  203. package/dist/server/app-render-dependency.d.ts +11 -4
  204. package/dist/server/app-render-dependency.js +59 -9
  205. package/dist/server/app-request-context.d.ts +1 -0
  206. package/dist/server/app-response-header-provenance.d.ts +13 -0
  207. package/dist/server/app-response-header-provenance.js +26 -0
  208. package/dist/server/app-route-handler-cache.d.ts +3 -2
  209. package/dist/server/app-route-handler-cache.js +7 -3
  210. package/dist/server/app-route-handler-dispatch.d.ts +0 -1
  211. package/dist/server/app-route-handler-dispatch.js +4 -2
  212. package/dist/server/app-route-handler-execution.d.ts +2 -2
  213. package/dist/server/app-route-handler-execution.js +15 -7
  214. package/dist/server/app-route-handler-policy.d.ts +1 -1
  215. package/dist/server/app-route-handler-response.d.ts +3 -2
  216. package/dist/server/app-route-handler-response.js +15 -5
  217. package/dist/server/app-route-handler-runtime.d.ts +1 -2
  218. package/dist/server/app-route-handler-runtime.js +218 -85
  219. package/dist/server/app-route-module-loader.d.ts +32 -6
  220. package/dist/server/app-route-module-loader.js +73 -3
  221. package/dist/server/app-route-request-built-ins.d.ts +16 -0
  222. package/dist/server/app-route-request-built-ins.js +41 -0
  223. package/dist/server/app-router-entry.d.ts +0 -1
  224. package/dist/server/app-router-entry.js +4 -4
  225. package/dist/server/app-rsc-cache-busting.d.ts +2 -1
  226. package/dist/server/app-rsc-cache-busting.js +24 -16
  227. package/dist/server/app-rsc-handler.d.ts +9 -2
  228. package/dist/server/app-rsc-handler.js +176 -47
  229. package/dist/server/app-rsc-redirect-flight.d.ts +0 -1
  230. package/dist/server/app-rsc-request-normalization.d.ts +19 -10
  231. package/dist/server/app-rsc-response-finalizer.d.ts +7 -2
  232. package/dist/server/app-rsc-response-finalizer.js +34 -18
  233. package/dist/server/app-rsc-route-matching.d.ts +6 -1
  234. package/dist/server/app-rsc-route-matching.js +47 -2
  235. package/dist/server/app-rsc-state-fingerprint.d.ts +14 -0
  236. package/dist/server/app-rsc-state-fingerprint.js +13 -0
  237. package/dist/server/app-segment-config.d.ts +0 -1
  238. package/dist/server/app-server-action-execution.d.ts +41 -8
  239. package/dist/server/app-server-action-execution.js +191 -113
  240. package/dist/server/app-ssr-entry.d.ts +11 -3
  241. package/dist/server/app-ssr-entry.js +19 -8
  242. package/dist/server/app-ssr-router-instance.d.ts +0 -1
  243. package/dist/server/app-ssr-stream.d.ts +13 -2
  244. package/dist/server/app-ssr-stream.js +30 -5
  245. package/dist/server/app-static-generation.d.ts +0 -1
  246. package/dist/server/app-visited-response-cache.d.ts +1 -1
  247. package/dist/server/before-interactive-head.d.ts +0 -1
  248. package/dist/server/before-interactive-head.js +2 -0
  249. package/dist/server/bfcache-identity.d.ts +45 -0
  250. package/dist/server/bfcache-identity.js +52 -0
  251. package/dist/server/cache-control.d.ts +11 -7
  252. package/dist/server/cache-control.js +23 -11
  253. package/dist/server/cache-proof.d.ts +0 -1
  254. package/dist/server/client-reuse-manifest.d.ts +0 -1
  255. package/dist/server/config-headers.d.ts +6 -2
  256. package/dist/server/config-headers.js +19 -3
  257. package/dist/server/csp.d.ts +0 -1
  258. package/dist/server/default-global-error-module.d.ts +0 -1
  259. package/dist/server/default-global-not-found-module.d.ts +0 -1
  260. package/dist/server/default-not-found-module.d.ts +0 -1
  261. package/dist/server/dev-lockfile.d.ts +21 -9
  262. package/dist/server/dev-module-runner.d.ts +0 -1
  263. package/dist/server/dev-route-files.d.ts +0 -1
  264. package/dist/server/dev-server.d.ts +4 -8
  265. package/dist/server/dev-server.js +54 -105
  266. package/dist/server/dev-stack-sourcemap.d.ts +0 -1
  267. package/dist/server/document-initial-head.d.ts +12 -2
  268. package/dist/server/document-initial-head.js +17 -2
  269. package/dist/server/file-based-metadata.d.ts +0 -1
  270. package/dist/server/headers.d.ts +21 -2
  271. package/dist/server/headers.js +23 -2
  272. package/dist/server/http-conditional.d.ts +22 -0
  273. package/dist/server/http-conditional.js +117 -0
  274. package/dist/server/http-date.d.ts +5 -0
  275. package/dist/server/http-date.js +73 -0
  276. package/dist/server/http-error-responses.d.ts +3 -2
  277. package/dist/server/http-error-responses.js +21 -4
  278. package/dist/server/http-range.d.ts +25 -0
  279. package/dist/server/http-range.js +67 -0
  280. package/dist/server/image-optimization.d.ts +14 -6
  281. package/dist/server/image-optimization.js +0 -1
  282. package/dist/server/instrumentation.d.ts +7 -4
  283. package/dist/server/isr-cache.d.ts +28 -6
  284. package/dist/server/isr-cache.js +19 -13
  285. package/dist/server/isr-decision.d.ts +6 -4
  286. package/dist/server/metadata-route-build-data.d.ts +0 -1
  287. package/dist/server/metadata-route-build-data.js +1 -1
  288. package/dist/server/metadata-route-cache-policy.d.ts +6 -0
  289. package/dist/server/metadata-route-cache-policy.js +6 -0
  290. package/dist/server/metadata-route-response.d.ts +26 -2
  291. package/dist/server/metadata-route-response.js +225 -11
  292. package/dist/server/metadata-routes.d.ts +34 -16
  293. package/dist/server/metadata-routes.js +1 -1
  294. package/dist/server/middleware-matcher-pattern.d.ts +0 -1
  295. package/dist/server/middleware-matcher.d.ts +8 -3
  296. package/dist/server/middleware-matcher.js +23 -18
  297. package/dist/server/middleware-response-headers.js +4 -2
  298. package/dist/server/middleware-runtime.d.ts +6 -1
  299. package/dist/server/middleware-runtime.js +91 -28
  300. package/dist/server/middleware.d.ts +0 -1
  301. package/dist/server/navigation-planner.d.ts +1 -1
  302. package/dist/server/next-error-digest.d.ts +0 -1
  303. package/dist/server/pages-api-route.d.ts +0 -1
  304. package/dist/server/pages-api-route.js +30 -5
  305. package/dist/server/pages-asset-tags.d.ts +2 -1
  306. package/dist/server/pages-data-route.d.ts +14 -6
  307. package/dist/server/pages-data-route.js +19 -10
  308. package/dist/server/pages-dev-hydration.js +14 -4
  309. package/dist/server/pages-dev-stylesheets.d.ts +10 -0
  310. package/dist/server/pages-dev-stylesheets.js +150 -0
  311. package/dist/server/pages-document-initial-props.d.ts +10 -6
  312. package/dist/server/pages-get-initial-props.d.ts +2 -2
  313. package/dist/server/pages-i18n.d.ts +1 -7
  314. package/dist/server/pages-node-compat.d.ts +11 -2
  315. package/dist/server/pages-node-compat.js +49 -2
  316. package/dist/server/pages-page-data.d.ts +21 -9
  317. package/dist/server/pages-page-data.js +109 -30
  318. package/dist/server/pages-page-handler.d.ts +72 -33
  319. package/dist/server/pages-page-handler.js +25 -20
  320. package/dist/server/pages-page-response.d.ts +7 -13
  321. package/dist/server/pages-page-response.js +16 -23
  322. package/dist/server/pages-readiness.d.ts +0 -1
  323. package/dist/server/pages-request-pipeline.d.ts +20 -6
  324. package/dist/server/pages-request-pipeline.js +40 -20
  325. package/dist/server/pages-revalidate.d.ts +0 -1
  326. package/dist/server/pages-revalidate.js +1 -1
  327. package/dist/server/pages-router-entry.js +13 -9
  328. package/dist/server/prerender-cache-life-header.d.ts +11 -0
  329. package/dist/server/prerender-cache-life-header.js +18 -0
  330. package/dist/server/prerender-manifest.d.ts +11 -2
  331. package/dist/server/prerender-manifest.js +4 -1
  332. package/dist/server/prod-server.d.ts +13 -7
  333. package/dist/server/prod-server.js +280 -92
  334. package/dist/server/proxy-trust.d.ts +0 -1
  335. package/dist/server/request-log.d.ts +7 -11
  336. package/dist/server/request-pipeline.d.ts +13 -4
  337. package/dist/server/request-pipeline.js +30 -20
  338. package/dist/server/revalidation-host.d.ts +0 -1
  339. package/dist/server/revalidation-host.js +1 -1
  340. package/dist/server/rsc-completion-metadata.d.ts +15 -0
  341. package/dist/server/rsc-completion-metadata.js +183 -0
  342. package/dist/server/seed-cache.d.ts +6 -2
  343. package/dist/server/seed-cache.js +35 -8
  344. package/dist/server/skip-cache-proof.d.ts +0 -1
  345. package/dist/server/static-file-cache.d.ts +23 -9
  346. package/dist/server/static-file-cache.js +47 -23
  347. package/dist/server/static-layout-client-reuse-proof.d.ts +0 -1
  348. package/dist/server/worker-revalidation-context.d.ts +0 -1
  349. package/dist/server/worker-utils.d.ts +3 -1
  350. package/dist/server/worker-utils.js +12 -3
  351. package/dist/shims/app-router-scroll.d.ts +2 -8
  352. package/dist/shims/app.d.ts +1 -5
  353. package/dist/shims/before-interactive-context.d.ts +5 -3
  354. package/dist/shims/cache-callable-runtime.d.ts +11 -0
  355. package/dist/shims/cache-callable-runtime.js +30 -0
  356. package/dist/shims/cache-handler.d.ts +6 -1
  357. package/dist/shims/cache-handler.js +4 -2
  358. package/dist/shims/cache-request-state.d.ts +15 -1
  359. package/dist/shims/cache-request-state.js +27 -1
  360. package/dist/shims/cache-runtime.d.ts +15 -6
  361. package/dist/shims/cache-runtime.js +129 -29
  362. package/dist/shims/cache.d.ts +2 -3
  363. package/dist/shims/cache.js +2 -2
  364. package/dist/shims/cdn-cache.d.ts +18 -7
  365. package/dist/shims/cdn-cache.js +4 -2
  366. package/dist/shims/client-locale.d.ts +1 -6
  367. package/dist/shims/client-only.d.ts +1 -1
  368. package/dist/shims/compat-router.d.ts +0 -1
  369. package/dist/shims/constants.d.ts +1 -1
  370. package/dist/shims/default-global-error.d.ts +1 -4
  371. package/dist/shims/default-not-found.d.ts +0 -1
  372. package/dist/shims/document.d.ts +0 -1
  373. package/dist/shims/document.js +2 -1
  374. package/dist/shims/dynamic-preload-chunks.d.ts +0 -1
  375. package/dist/shims/dynamic.d.ts +0 -1
  376. package/dist/shims/error-boundary-navigation.d.ts +0 -1
  377. package/dist/shims/error-boundary.d.ts +7 -32
  378. package/dist/shims/error.d.ts +1 -6
  379. package/dist/shims/fetch-cache.js +115 -65
  380. package/dist/shims/font-google-base.d.ts +0 -1
  381. package/dist/shims/font-local.d.ts +0 -1
  382. package/dist/shims/font-local.js +3 -3
  383. package/dist/shims/form.d.ts +5 -3
  384. package/dist/shims/head-state.d.ts +0 -1
  385. package/dist/shims/head.d.ts +17 -5
  386. package/dist/shims/head.js +70 -8
  387. package/dist/shims/headers.d.ts +2 -2
  388. package/dist/shims/headers.js +1 -1
  389. package/dist/shims/i18n-context.d.ts +0 -1
  390. package/dist/shims/i18n-state.d.ts +0 -1
  391. package/dist/shims/image.d.ts +0 -1
  392. package/dist/shims/image.js +1 -2
  393. package/dist/shims/internal/als-registry.d.ts +31 -2
  394. package/dist/shims/internal/als-registry.js +50 -2
  395. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +17 -2
  396. package/dist/shims/internal/app-prefetch-fetch-queue.js +69 -7
  397. package/dist/shims/internal/app-route-detection.d.ts +0 -1
  398. package/dist/shims/internal/app-route-prefetch-policy.d.ts +33 -0
  399. package/dist/shims/internal/app-route-prefetch-policy.js +63 -0
  400. package/dist/shims/internal/app-router-context.d.ts +0 -1
  401. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +1 -5
  402. package/dist/shims/internal/hybrid-client-route-owner.d.ts +0 -1
  403. package/dist/shims/internal/hybrid-client-route-owner.js +6 -8
  404. package/dist/shims/internal/interpolate-as.d.ts +3 -2
  405. package/dist/shims/internal/pages-data-target.d.ts +22 -11
  406. package/dist/shims/internal/pages-data-target.js +19 -6
  407. package/dist/shims/internal/pages-data-url.d.ts +3 -1
  408. package/dist/shims/internal/router-context.d.ts +0 -1
  409. package/dist/shims/internal/work-unit-async-storage.d.ts +4 -3
  410. package/dist/shims/internal/work-unit-async-storage.js +2 -0
  411. package/dist/shims/layout-segment-context.d.ts +2 -6
  412. package/dist/shims/legacy-image.d.ts +0 -1
  413. package/dist/shims/link.d.ts +29 -23
  414. package/dist/shims/link.js +59 -150
  415. package/dist/shims/metadata.d.ts +2 -10
  416. package/dist/shims/navigation-context-state.d.ts +4 -1
  417. package/dist/shims/navigation-state.d.ts +1 -0
  418. package/dist/shims/navigation.d.ts +65 -6
  419. package/dist/shims/navigation.js +360 -71
  420. package/dist/shims/navigation.react-server.d.ts +1 -0
  421. package/dist/shims/og.d.ts +0 -1
  422. package/dist/shims/request-context.d.ts +8 -4
  423. package/dist/shims/request-state-types.d.ts +1 -0
  424. package/dist/shims/root-params.d.ts +3 -1
  425. package/dist/shims/root-params.js +7 -1
  426. package/dist/shims/router.d.ts +44 -23
  427. package/dist/shims/router.js +184 -82
  428. package/dist/shims/script-nonce-context.d.ts +0 -1
  429. package/dist/shims/script.d.ts +25 -13
  430. package/dist/shims/server-only.d.ts +1 -1
  431. package/dist/shims/server.d.ts +1 -3
  432. package/dist/shims/server.js +7 -7
  433. package/dist/shims/slot.d.ts +22 -11
  434. package/dist/shims/slot.js +99 -19
  435. package/dist/shims/streamed-icons.d.ts +1 -3
  436. package/dist/shims/unified-request-context.d.ts +44 -4
  437. package/dist/shims/unified-request-context.js +56 -2
  438. package/dist/shims/use-merged-ref.d.ts +0 -1
  439. package/dist/shims/web-vitals.d.ts +0 -1
  440. package/dist/typegen.d.ts +1 -2
  441. package/dist/typegen.js +1 -1
  442. package/dist/utils/cache-control-metadata.d.ts +13 -1
  443. package/dist/utils/cache-control-metadata.js +17 -1
  444. package/dist/utils/client-build-manifest.d.ts +0 -1
  445. package/dist/utils/domain-locale.d.ts +1 -5
  446. package/dist/utils/encode-cache-tag.d.ts +1 -1
  447. package/dist/utils/encode-cache-tag.js +1 -1
  448. package/dist/utils/html-limited-bots.js +1 -1
  449. package/dist/utils/middleware-request-headers.d.ts +17 -5
  450. package/dist/utils/middleware-request-headers.js +32 -23
  451. package/dist/utils/precompressed-variant.d.ts +9 -0
  452. package/dist/utils/precompressed-variant.js +15 -0
  453. package/dist/utils/prerender-output-paths.d.ts +3 -1
  454. package/dist/utils/prerender-output-paths.js +6 -1
  455. package/dist/utils/project.d.ts +12 -7
  456. package/dist/utils/public-file-path.d.ts +5 -0
  457. package/dist/utils/public-file-path.js +12 -0
  458. package/dist/utils/public-routes.d.ts +1 -1
  459. package/dist/utils/public-routes.js +6 -5
  460. package/package.json +10 -6
@@ -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
  });
@@ -66,7 +70,8 @@ function toLinkPrefetchRoute(route, hasSiblingInterceptLoading = route.siblingIn
66
70
  canPrefetchLoadingShell: hasLoadingBoundary(route, hasSiblingInterceptLoading),
67
71
  patternParts: [...route.patternParts],
68
72
  isDynamic: route.isDynamic,
69
- ...requiresDynamicNavigationRequest(route) ? { requiresDynamicNavigationRequest: true } : {}
73
+ ...requiresDynamicNavigationRequest(route) ? { requiresDynamicNavigationRequest: true } : {},
74
+ ...(route.rootParamNames?.length ?? 0) > 0 ? { hasRootParams: true } : {}
70
75
  };
71
76
  }
72
77
  /** Project App routes together so sibling-intercept loading is applied to its target route. */
@@ -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
  /**
@@ -20,6 +20,7 @@ const DEFAULT_REACT_MAX_HEADERS_LENGTH = 6e3;
20
20
  const middlewareRequestHeadersPath = resolveEntryPath("../utils/middleware-request-headers.js", import.meta.url);
21
21
  const normalizePathModulePath = resolveEntryPath("../server/normalize-path.js", import.meta.url);
22
22
  const appRouteHandlerDispatchPath = resolveEntryPath("../server/app-route-handler-dispatch.js", import.meta.url);
23
+ const appRouteRequestBuiltInsPath = resolveEntryPath("../server/app-route-request-built-ins.js", import.meta.url);
23
24
  const appRouteHandlerResponsePath = resolveEntryPath("../server/app-route-handler-response.js", import.meta.url);
24
25
  const appMiddlewarePath = resolveEntryPath("../server/app-middleware.js", import.meta.url);
25
26
  const metadataRouteResponsePath = resolveEntryPath("../server/metadata-route-response.js", import.meta.url);
@@ -80,6 +81,7 @@ function generateRscEntry(appDir, routes, middlewarePath, metadataRoutes, global
80
81
  const cacheComponents = config?.cacheComponents === true;
81
82
  const prefetchInlining = config?.prefetchInlining ?? false;
82
83
  const hasServerActions = config?.hasServerActions !== false;
84
+ const hasAppRouteHandlers = routes.some((route) => route.routePath !== null);
83
85
  const i18nConfig = config?.i18n ?? null;
84
86
  const hasPagesDir = config?.hasPagesDir ?? false;
85
87
  const publicFiles = config?.publicFiles ?? [];
@@ -105,6 +107,9 @@ async function __loadPrerenderPagesRoutes() {
105
107
  }
106
108
  ` : "";
107
109
  return `
110
+ ${hasAppRouteHandlers ? `// Capture the canonical Request surface before any user module can extend it.
111
+ // The global-backed snapshot remains available to the lazy dispatch chunk.
112
+ import ${JSON.stringify(appRouteRequestBuiltInsPath)};` : ""}
108
113
  import ${JSON.stringify(serverGlobalsPath)};
109
114
  import {
110
115
  renderToReadableStream as _renderToReadableStream,
@@ -217,7 +222,7 @@ import { clearAppRequestContext as __clearRequestContext, setAppNavigationContex
217
222
 
218
223
  __configureMemoryCacheHandler({ cacheMaxMemorySize: ${JSON.stringify(cacheMaxMemorySize)} });
219
224
  import { createAppPrerenderStaticParamsResolver as __createAppPrerenderStaticParamsResolver } from ${JSON.stringify(appPrerenderStaticParamsPath)};
220
- import { ensureAppRouteModulesLoaded as __ensureRouteLoaded } from ${JSON.stringify(appRouteModuleLoaderPath)};
225
+ import { ensureAppRouteModulesLoaded as __ensureRouteLoaded, loadAppInterceptPage as __loadAppInterceptPage } from ${JSON.stringify(appRouteModuleLoaderPath)};
221
226
  import {
222
227
  getRenderedConcreteUrlPathsForRoute as __getRenderedConcreteUrlPathsForRoute,
223
228
  initPregeneratedPathsFromGlobals as __initPregeneratedPathsFromGlobals,
@@ -469,9 +474,15 @@ export async function seedMemoryCacheFromPrerender(serverDir) {
469
474
  buildAppPageRscKey(pathname) {
470
475
  return __isrRscKey(pathname);
471
476
  },
477
+ buildAppRouteKey(pathname) {
478
+ return __isrRouteKey(pathname);
479
+ },
472
480
  writeAppPageEntry(key, data, metadata) {
473
481
  return __isrSetPrerenderedAppPage(key, data, metadata);
474
482
  },
483
+ writeAppRouteEntry(key, data, policy) {
484
+ return __isrSet(key, data, policy);
485
+ },
475
486
  });
476
487
  }
477
488
 
@@ -677,12 +688,11 @@ export default createAppRscHandler({
677
688
  // The intercepting-route page module is lazy (page: null + __pageLoader).
678
689
  // Resolve it before probing so buildAppPageProbes inspects the real page
679
690
  // component for dynamic bailout — matching the render path, which also
680
- // awaits __pageLoader (resolveAppPageInterceptState). Without this the
681
- // intercept probe branch silently inspects an undefined component and
682
- // never observes the page's searchParams/headers access.
683
- if (__probeIntercept && __probeIntercept.__pageLoader && __probeIntercept.page == null) {
684
- __probeIntercept.page = await __probeIntercept.__pageLoader();
685
- }
691
+ // hydrates it (resolveAppPageInterceptState). Without this the intercept
692
+ // probe branch silently inspects an undefined component and never
693
+ // observes the page's searchParams/headers access. Shared loader, so
694
+ // the import is isolated from the request context here too.
695
+ if (__probeIntercept) await __loadAppInterceptPage(__probeIntercept);
686
696
  return Promise.all(__buildAppPageProbes({
687
697
  route,
688
698
  pageComponent: PageComponent,
@@ -846,6 +856,8 @@ export default createAppRscHandler({
846
856
  scriptNonce,
847
857
  routeMatch,
848
858
  routePathname,
859
+ dispatchRedirectTargetRequest,
860
+ sourceConfigHeaders,
849
861
  searchParams,
850
862
  }) {
851
863
  const {
@@ -876,6 +888,7 @@ export default createAppRscHandler({
876
888
  renderMode: actionRenderMode,
877
889
  observeMetadataSearchParamsAccess,
878
890
  observePageSearchParamsAccess,
891
+ scriptNonce: targetScriptNonce,
879
892
  }) {
880
893
  return buildPageElements(actionRoute, actionParams, actionCleanPathname, {
881
894
  opts: interceptOpts,
@@ -886,7 +899,7 @@ export default createAppRscHandler({
886
899
  renderMode: actionRenderMode,
887
900
  observeMetadataSearchParamsAccess: observeMetadataSearchParamsAccess === true,
888
901
  observePageSearchParamsAccess: observePageSearchParamsAccess === true,
889
- }, undefined, actionCleanPathname, scriptNonce);
902
+ }, undefined, actionCleanPathname, targetScriptNonce ?? scriptNonce);
890
903
  },
891
904
  cleanPathname,
892
905
  clearRequestContext() {
@@ -927,12 +940,15 @@ export default createAppRscHandler({
927
940
  },
928
941
  isRscRequest,
929
942
  loadServerAction,
943
+ // Redirect targets are rendered as if the client had navigated to them,
944
+ // so they must route on the raw pathname a real request would use.
930
945
  matchRoute(pathnameToMatch) {
931
- return matchRoute(pathnameToMatch);
946
+ return matchRequestRoute(pathnameToMatch);
932
947
  },
933
948
  maxActionBodySize: __MAX_ACTION_BODY_SIZE,
934
949
  maxActionBodySizeLabel: __MAX_ACTION_BODY_SIZE_LABEL,
935
950
  middlewareHeaders: middlewareContext.headers,
951
+ middlewareRequestHeaders: middlewareContext.requestHeaders,
936
952
  middlewareStatus: middlewareContext.status,
937
953
  mountedSlotsHeader,
938
954
  readBodyWithLimit: __readBodyWithLimit,
@@ -947,6 +963,8 @@ export default createAppRscHandler({
947
963
  },
948
964
  resolveRouteRuntime: __resolveRouteRuntime,
949
965
  request,
966
+ dispatchRedirectTargetRequest,
967
+ sourceConfigHeaders,
950
968
  sanitizeErrorForClient(error) {
951
969
  return __sanitizeErrorForClient(error);
952
970
  },
@@ -955,6 +973,7 @@ export default createAppRscHandler({
955
973
  setNavigationContext,
956
974
  toInterceptOpts(intercept) {
957
975
  return {
976
+ interceptGraphId: intercept.interceptionGraphId,
958
977
  interceptionContext,
959
978
  interceptLayouts: intercept.interceptLayouts,
960
979
  interceptLayoutSegments: intercept.interceptLayoutSegments,
@@ -966,6 +985,8 @@ export default createAppRscHandler({
966
985
  interceptSlotKey: intercept.slotKey,
967
986
  interceptSourceMatchedUrl: interceptionContext,
968
987
  interceptSourcePageSegments: intercept.sourcePageSegments,
988
+ interceptTargetPatternParts: intercept.targetPatternParts,
989
+ interceptTargetRouteGraphId: intercept.targetRouteGraphId,
969
990
  interceptPage: intercept.page,
970
991
  interceptParams: intercept.matchedParams,
971
992
  };
@@ -975,13 +996,27 @@ export default createAppRscHandler({
975
996
  ` : ""}
976
997
  i18nConfig: __i18nConfig,
977
998
  ${hasPagesDir ? `loadPrerenderPagesRoutes: __loadPrerenderPagesRoutes,` : ""}
999
+ ${(metadataRoutes?.length ?? 0) > 0 ? `async getPrerenderMetadataRoutePaths() {
1000
+ const { getPrerenderableMetadataRoutePaths: __getPrerenderableMetadataRoutePaths } =
1001
+ await __loadMetadataRouteResponse();
1002
+ return __getPrerenderableMetadataRoutePaths(metadataRoutes);
1003
+ },` : ""}
1004
+ ${(metadataRoutes?.length ?? 0) > 0 ? `async isMetadataRoutePath(cleanPathname) {
1005
+ const { isMetadataRouteRequestPath: __isMetadataRouteRequestPath } =
1006
+ await __loadMetadataRouteResponse();
1007
+ return __isMetadataRouteRequestPath(metadataRoutes, cleanPathname);
1008
+ },` : ""}
978
1009
  ${(metadataRoutes?.length ?? 0) > 0 ? `async handleMetadataRouteRequest(cleanPathname) {
979
1010
  const { handleMetadataRouteRequest: __handleMetadataRouteRequest } =
980
1011
  await __loadMetadataRouteResponse();
981
1012
  return __handleMetadataRouteRequest({
982
1013
  metadataRoutes,
983
1014
  cleanPathname,
1015
+ isrGet: __isrGet,
1016
+ isrRouteKey: __isrRouteKey,
1017
+ isrSet: __isrSet,
984
1018
  makeThenableParams,
1019
+ scheduleBackgroundRegeneration: __triggerBackgroundRegeneration,
985
1020
  });
986
1021
  },` : ""}
987
1022
  matchRoute,
@@ -999,19 +1034,22 @@ export default createAppRscHandler({
999
1034
  }
1000
1035
  return { route, params };
1001
1036
  },
1002
- ${middlewarePath ? `runMiddleware({ cleanPathname, context, hadBasePath, isDataRequest, request }) {
1037
+ ${middlewarePath ? `runMiddleware({ cleanPathname, context, externalRewriteRequest, hadBasePath, isDataRequest, middlewareRequest, request, validateExternalRewriteRequest }) {
1003
1038
  return __applyAppMiddleware({
1004
1039
  basePath: __basePath,
1005
1040
  cleanPathname,
1006
1041
  context,
1042
+ externalRewriteRequest,
1007
1043
  hadBasePath,
1008
1044
  filePath: ${JSON.stringify(middlewarePath ? toSlash(middlewarePath) : "")},
1009
1045
  i18nConfig: __i18nConfig,
1010
1046
  isDataRequest,
1011
1047
  isProxy: ${JSON.stringify(isProxyFile(middlewarePath))},
1048
+ middlewareRequest,
1012
1049
  module: middlewareModule,
1013
1050
  request,
1014
1051
  trailingSlash: __trailingSlash,
1052
+ validateExternalRewriteRequest,
1015
1053
  });
1016
1054
  },` : ""}
1017
1055
  publicFiles: __publicFiles,
@@ -1,6 +1,5 @@
1
1
  import { AppRoute } from "../routing/app-route-graph.js";
2
2
  import { MetadataFileRoute } from "../server/metadata-routes.js";
3
-
4
3
  //#region src/entries/app-rsc-manifest.d.ts
5
4
  type AppRscManifestCode = {
6
5
  imports: string[];
@@ -115,6 +115,7 @@ function buildRouteEntries(routes, imports) {
115
115
  const forbiddenLoaders = lazyLoaderArray(forbiddenPaths, imports);
116
116
  const unauthorizedLoaders = lazyLoaderArray(unauthorizedPaths, imports);
117
117
  const siblingInterceptEntries = (route.siblingIntercepts ?? []).map((ir) => ` {
118
+ id: ${JSON.stringify(ir.id ?? null)},
118
119
  convention: ${JSON.stringify(ir.convention)},
119
120
  targetPattern: ${JSON.stringify(ir.targetPattern)},
120
121
  sourceMatchPattern: ${JSON.stringify(ir.sourceMatchPattern)},
@@ -2,7 +2,6 @@ import { ResolvedNextConfig } from "../config/next-config.js";
2
2
  import { createValidFileMatcher } from "../routing/file-matcher.js";
3
3
  import { StaticMiddlewareMatcher } from "../build/report.js";
4
4
  import { VinextLinkPrefetchRoute } from "../client/vinext-next-data.js";
5
-
6
5
  //#region src/entries/pages-client-entry.d.ts
7
6
  declare function generateClientEntry(pagesDir: string, nextConfig: ResolvedNextConfig, fileMatcher: ReturnType<typeof createValidFileMatcher>, options?: {
8
7
  appPrefetchRoutes?: readonly VinextLinkPrefetchRoute[];
@@ -2,7 +2,9 @@ import { toSlash } from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index
2
2
  import { findFileWithExts } from "../routing/file-matcher.js";
3
3
  import { patternToNextFormat } from "../routing/route-validation.js";
4
4
  import { apiRouter, pagesRouter } from "../routing/pages-router.js";
5
+ import { resolveClientRuntimeModule } from "./runtime-entry-module.js";
5
6
  import { hasExportedName } from "../build/report.js";
7
+ import { toClientRewrites } from "../client/client-rewrites.js";
6
8
  import { readFile } from "node:fs/promises";
7
9
  //#region src/entries/pages-client-entry.ts
8
10
  /**
@@ -51,6 +53,8 @@ async function generateClientEntry(pagesDir, nextConfig, fileMatcher, options =
51
53
  const pagesSsgPatterns = (await Promise.all(pageRoutes.map(async (route) => await hasGetStaticPropsExport(route.filePath) ? patternToNextFormat(route.pattern) : null))).filter((pattern) => pattern !== null);
52
54
  const pagesSspPatterns = (await Promise.all(pageRoutes.map(async (route) => await hasGetServerSidePropsExport(route.filePath) ? patternToNextFormat(route.pattern) : null))).filter((pattern) => pattern !== null);
53
55
  const instrumentationClientPath = options.instrumentationClientPath ?? null;
56
+ const clientRewrites = toClientRewrites(nextConfig.rewrites);
57
+ const reactInstanceBootstrapPath = resolveClientRuntimeModule("react-instance-bootstrap");
54
58
  const loaderEntries = pageRoutes.map((r) => {
55
59
  const absPath = r.filePath;
56
60
  const nextFormatPattern = patternToNextFormat(r.pattern);
@@ -61,7 +65,8 @@ async function generateClientEntry(pagesDir, nextConfig, fileMatcher, options =
61
65
  const userInstrumentationImport = instrumentationClientPath ? `import ${JSON.stringify(toSlash(instrumentationClientPath))};\n` : "";
62
66
  const reactPreambleImport = options.reactPreamble === false ? "" : "import \"@vitejs/plugin-react/preamble\";\n";
63
67
  const reactStrictModeEnabled = nextConfig.reactStrictMode === true;
64
- return `${userInstrumentationImport}${reactPreambleImport}
68
+ return `import ${JSON.stringify(reactInstanceBootstrapPath)};
69
+ ${userInstrumentationImport}${reactPreambleImport}
65
70
  import "vinext/instrumentation-client";
66
71
  import React from "react";
67
72
  import { hydrateRoot } from "react-dom/client";
@@ -121,7 +126,7 @@ window.__VINEXT_LINK_PREFETCH_ROUTES__ = ${JSON.stringify(appPrefetchRoutes)};
121
126
  // so whichever entry runs first emits the Pages manifest.
122
127
  window.__VINEXT_PAGES_LINK_PREFETCH_ROUTES__ = ${JSON.stringify(pagesPrefetchRoutes)};
123
128
  window.__VINEXT_CLIENT_REDIRECTS__ = ${JSON.stringify(nextConfig.redirects)};
124
- window.__VINEXT_CLIENT_REWRITES__ = ${JSON.stringify(nextConfig.rewrites)};
129
+ window.__VINEXT_CLIENT_REWRITES__ = ${JSON.stringify(clientRewrites)};
125
130
 
126
131
  const nextDataElement = document.getElementById("__NEXT_DATA__");
127
132
  if (nextDataElement?.textContent) {
@@ -212,13 +217,18 @@ async function hydrate() {
212
217
  window.__NEXT_HYDRATED_AT = hydratedAt;
213
218
  window.__NEXT_HYDRATED_CB?.();
214
219
 
215
- if (nextData.isFallback) {
220
+ const initialMatchesMiddleware =
221
+ nextData.__vinext?.hasMiddleware === true || nextData.__vinext?.hasRewrites === true;
222
+ const shouldHydrateQuery =
223
+ nextData.isFallback ||
224
+ (nextData.gsp === true && (initialMatchesMiddleware || window.location.search !== ""));
225
+ if (shouldHydrateQuery) {
216
226
  const currentUrl = window.location.pathname + window.location.search + window.location.hash;
217
- const routeUrl = nextData.__vinext?.routeUrl;
227
+ const routeUrl = nextData.isFallback ? nextData.__vinext?.routeUrl : undefined;
218
228
  await Router.replace(
219
229
  routeUrl || currentUrl,
220
230
  routeUrl ? currentUrl : undefined,
221
- { _h: 1, scroll: false },
231
+ { _h: 1, scroll: false, shallow: !nextData.isFallback && !initialMatchesMiddleware },
222
232
  );
223
233
  }
224
234
  }
@@ -1,11 +1,10 @@
1
1
  import { ResolvedNextConfig } from "../config/next-config.js";
2
2
  import { createValidFileMatcher } from "../routing/file-matcher.js";
3
-
4
3
  //#region src/entries/pages-server-entry.d.ts
5
4
  /**
6
5
  * Generate the virtual SSR server entry module.
7
6
  * This is the entry point for `vite build --ssr`.
8
7
  */
9
- declare function generateServerEntry(pagesDir: string, nextConfig: ResolvedNextConfig, fileMatcher: ReturnType<typeof createValidFileMatcher>, middlewarePath: string | null, instrumentationPath: string | null): Promise<string>;
8
+ declare function generateServerEntry(pagesDir: string, nextConfig: ResolvedNextConfig, fileMatcher: ReturnType<typeof createValidFileMatcher>, middlewarePath: string | null, instrumentationPath: string | null, publicFiles?: string[]): Promise<string>;
10
9
  //#endregion
11
10
  export { generateServerEntry };
@@ -35,7 +35,7 @@ async function getPagesDataKind(filePath) {
35
35
  * Generate the virtual SSR server entry module.
36
36
  * This is the entry point for `vite build --ssr`.
37
37
  */
38
- async function generateServerEntry(pagesDir, nextConfig, fileMatcher, middlewarePath, instrumentationPath) {
38
+ async function generateServerEntry(pagesDir, nextConfig, fileMatcher, middlewarePath, instrumentationPath, publicFiles = []) {
39
39
  const pageRoutes = await pagesRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);
40
40
  const apiRoutes = await apiRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);
41
41
  const pageImports = pageRoutes.map((r, i) => `import * as page_${i} from ${JSON.stringify(r.filePath)};`);
@@ -64,6 +64,7 @@ async function generateServerEntry(pagesDir, nextConfig, fileMatcher, middleware
64
64
  basePath: nextConfig?.basePath ?? "",
65
65
  assetPrefix: nextConfig?.assetPrefix ?? "",
66
66
  trailingSlash: nextConfig?.trailingSlash ?? false,
67
+ skipProxyUrlNormalize: nextConfig?.skipProxyUrlNormalize ?? false,
67
68
  redirects: nextConfig?.redirects ?? [],
68
69
  rewrites: nextConfig?.rewrites ?? {
69
70
  beforeFiles: [],
@@ -151,7 +152,7 @@ import { buildRouteTrie as _buildRouteTrie, trieMatch as _trieMatch } from ${JSO
151
152
  import { reportRequestError as _reportRequestError } from "vinext/instrumentation";
152
153
  import { resolvePagesI18nRequest } from ${JSON.stringify(_pagesI18nPath)};
153
154
  import { handlePagesApiRoute as __handlePagesApiRoute } from ${JSON.stringify(_pagesApiRoutePath)};
154
- import { normalizePagesDataRequest as __normalizePagesDataRequest, buildNextDataNotFoundResponse as __buildNextDataNotFoundResponse } from ${JSON.stringify(_pagesDataRoutePath)};
155
+ import { normalizePagesDataRequest as __normalizePagesDataRequest, shouldAddTrailingSlashToPagesDataPath as __shouldAddTrailingSlashToPagesDataPath, buildNextDataNotFoundResponse as __buildNextDataNotFoundResponse } from ${JSON.stringify(_pagesDataRoutePath)};
155
156
  import { buildDefaultPagesNotFoundResponse as __buildDefaultPagesNotFoundResponse } from ${JSON.stringify(_pagesDefault404Path)};
156
157
  import { createPagesPageHandler as __createPagesPageHandler } from ${JSON.stringify(_pagesPageHandlerPath)};
157
158
  import { isOnDemandRevalidateRequest as __isOnDemandRevalidateRequest } from ${JSON.stringify(_isrCachePath)};
@@ -177,7 +178,11 @@ export function normalizeDataRequest(request) {
177
178
  request,
178
179
  buildId,
179
180
  vinextConfig.basePath,
180
- hasMiddleware && vinextConfig.trailingSlash,
181
+ __shouldAddTrailingSlashToPagesDataPath(
182
+ hasMiddleware,
183
+ vinextConfig.trailingSlash,
184
+ vinextConfig.skipProxyUrlNormalize,
185
+ ),
181
186
  );
182
187
  }
183
188
  export const hasMiddleware = ${JSON.stringify(Boolean(middlewarePath))};
@@ -202,7 +207,7 @@ async function _renderToStringAsync(element) {
202
207
  return new Response(stream).text();
203
208
  }
204
209
 
205
- async function _renderIsrPassToStringAsync(element) {
210
+ async function _renderIsrPassToStringAsync(element, onHeadReady) {
206
211
  // The cache-fill render is a second render pass for the same request.
207
212
  // Reset render-scoped state so it cannot leak from the streamed response
208
213
  // render or affect async work that is still draining from that stream.
@@ -211,7 +216,17 @@ async function _renderIsrPassToStringAsync(element) {
211
216
  return await runWithServerInsertedHTMLState(() =>
212
217
  runWithHeadState(() =>
213
218
  _runWithCacheState(() =>
214
- runWithPrivateCache(() => runWithFetchCache(async () => _renderToStringAsync(element))),
219
+ runWithPrivateCache(() =>
220
+ runWithFetchCache(async () => {
221
+ const html = await _renderToStringAsync(element);
222
+ // next/head tags are collected as a side effect of the render
223
+ // above and live in this ALS scope only, so a caller that wants
224
+ // the regenerated head has to read it here — after the render,
225
+ // before the scope unwinds.
226
+ await onHeadReady?.();
227
+ return html;
228
+ }),
229
+ ),
215
230
  ),
216
231
  ),
217
232
  );
@@ -227,6 +242,7 @@ ${errorImportCode}
227
242
  export const pageRoutes = [
228
243
  ${pageRouteEntries.join(",\n")}
229
244
  ];
245
+ export const publicFiles = new Set(${JSON.stringify(publicFiles)});
230
246
  const _pageRouteTrie = _buildRouteTrie(pageRoutes);
231
247
  const _errorPageRoute = {
232
248
  pattern: "/_error",
@@ -31,7 +31,8 @@ type ImageAdapterDescriptor<O extends Record<string, unknown> = Record<string, u
31
31
  * Module specifier (or absolute path, e.g. from `require.resolve(...)`) whose
32
32
  * default export is an image optimizer factory.
33
33
  */
34
- adapter: string; /** JSON-serializable options forwarded to the factory at runtime. */
34
+ adapter: string;
35
+ /** JSON-serializable options forwarded to the factory at runtime. */
35
36
  options?: O;
36
37
  };
37
38
  /**
@@ -46,7 +47,8 @@ type ImageAdapterDescriptor<O extends Record<string, unknown> = Record<string, u
46
47
  * serializable next.config data.
47
48
  */
48
49
  type VinextImageConfig = {
49
- /** Server-side image optimizer adapter (the `/_next/image` transform backend). */optimizer?: ImageAdapterDescriptor;
50
+ /** Server-side image optimizer adapter (the `/_next/image` transform backend). */
51
+ optimizer?: ImageAdapterDescriptor;
50
52
  };
51
53
  /** Public virtual module id imported by the server entries. */
52
54
  declare const VIRTUAL_IMAGE_ADAPTERS = "virtual:vinext-image-adapters";
package/dist/index.d.ts CHANGED
@@ -5,7 +5,6 @@ import { AppStaticExportOptions, StaticExportOptions, StaticExportResult, static
5
5
  import { VinextImageConfig } from "./image/image-adapters-virtual.js";
6
6
  import { PluginOption } from "vite";
7
7
  import { Options } from "@vitejs/plugin-react";
8
-
9
8
  //#region src/index.d.ts
10
9
  type VinextOptions = {
11
10
  /**