vinext 0.0.49 → 0.0.51

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 (506) hide show
  1. package/dist/build/client-build-config.js.map +1 -1
  2. package/dist/build/google-fonts/build-url.js.map +1 -1
  3. package/dist/build/google-fonts/fallback-metrics-data.js +14031 -0
  4. package/dist/build/google-fonts/fallback-metrics-data.js.map +1 -0
  5. package/dist/build/google-fonts/fallback-metrics.d.ts +13 -0
  6. package/dist/build/google-fonts/fallback-metrics.js +46 -0
  7. package/dist/build/google-fonts/fallback-metrics.js.map +1 -0
  8. package/dist/build/google-fonts/get-axes.js.map +1 -1
  9. package/dist/build/google-fonts/sort-variants.js.map +1 -1
  10. package/dist/build/google-fonts/validate.js.map +1 -1
  11. package/dist/build/layout-classification.js.map +1 -1
  12. package/dist/build/nitro-route-rules.js.map +1 -1
  13. package/dist/build/precompress.d.ts +13 -2
  14. package/dist/build/precompress.js +12 -3
  15. package/dist/build/precompress.js.map +1 -1
  16. package/dist/build/prerender.d.ts +17 -1
  17. package/dist/build/prerender.js +114 -23
  18. package/dist/build/prerender.js.map +1 -1
  19. package/dist/build/report.d.ts +5 -4
  20. package/dist/build/report.js +196 -348
  21. package/dist/build/report.js.map +1 -1
  22. package/dist/build/route-classification-injector.js.map +1 -1
  23. package/dist/build/route-classification-manifest.js.map +1 -1
  24. package/dist/build/run-prerender.js.map +1 -1
  25. package/dist/build/server-manifest.js.map +1 -1
  26. package/dist/build/ssr-manifest.js.map +1 -1
  27. package/dist/build/standalone.js.map +1 -1
  28. package/dist/build/static-export.js.map +1 -1
  29. package/dist/check.js +2 -1
  30. package/dist/check.js.map +1 -1
  31. package/dist/cli-args.js.map +1 -1
  32. package/dist/cli.js +68 -7
  33. package/dist/cli.js.map +1 -1
  34. package/dist/client/instrumentation-client-state.js.map +1 -1
  35. package/dist/client/validate-module-path.js.map +1 -1
  36. package/dist/client/vinext-next-data.d.ts +5 -1
  37. package/dist/client/window-next.d.ts +151 -0
  38. package/dist/client/window-next.js +48 -0
  39. package/dist/client/window-next.js.map +1 -0
  40. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  41. package/dist/cloudflare/tpr.js +2 -1
  42. package/dist/cloudflare/tpr.js.map +1 -1
  43. package/dist/config/config-matchers.d.ts +3 -1
  44. package/dist/config/config-matchers.js +5 -4
  45. package/dist/config/config-matchers.js.map +1 -1
  46. package/dist/config/dotenv.d.ts +11 -1
  47. package/dist/config/dotenv.js.map +1 -1
  48. package/dist/config/next-config.d.ts +93 -6
  49. package/dist/config/next-config.js +233 -6
  50. package/dist/config/next-config.js.map +1 -1
  51. package/dist/config/tsconfig-paths.d.ts +13 -0
  52. package/dist/config/tsconfig-paths.js +117 -0
  53. package/dist/config/tsconfig-paths.js.map +1 -0
  54. package/dist/deploy.js +16 -7
  55. package/dist/deploy.js.map +1 -1
  56. package/dist/entries/app-browser-entry.d.ts +3 -1
  57. package/dist/entries/app-browser-entry.js +36 -2
  58. package/dist/entries/app-browser-entry.js.map +1 -1
  59. package/dist/entries/app-rsc-entry.d.ts +19 -1
  60. package/dist/entries/app-rsc-entry.js +49 -12
  61. package/dist/entries/app-rsc-entry.js.map +1 -1
  62. package/dist/entries/app-rsc-manifest.d.ts +9 -0
  63. package/dist/entries/app-rsc-manifest.js +8 -1
  64. package/dist/entries/app-rsc-manifest.js.map +1 -1
  65. package/dist/entries/app-ssr-entry.js.map +1 -1
  66. package/dist/entries/pages-client-entry.js +3 -5
  67. package/dist/entries/pages-client-entry.js.map +1 -1
  68. package/dist/entries/pages-entry-helpers.js.map +1 -1
  69. package/dist/entries/pages-server-entry.js +34 -1
  70. package/dist/entries/pages-server-entry.js.map +1 -1
  71. package/dist/entries/runtime-entry-module.js.map +1 -1
  72. package/dist/index.js +204 -53
  73. package/dist/index.js.map +1 -1
  74. package/dist/init.js.map +1 -1
  75. package/dist/plugins/async-hooks-stub.js.map +1 -1
  76. package/dist/plugins/client-reference-dedup.d.ts +15 -2
  77. package/dist/plugins/client-reference-dedup.js +138 -16
  78. package/dist/plugins/client-reference-dedup.js.map +1 -1
  79. package/dist/plugins/fonts.d.ts +2 -2
  80. package/dist/plugins/fonts.js +15 -6
  81. package/dist/plugins/fonts.js.map +1 -1
  82. package/dist/plugins/instrumentation-client.js.map +1 -1
  83. package/dist/plugins/og-assets.js.map +1 -1
  84. package/dist/plugins/optimize-imports.js.map +1 -1
  85. package/dist/plugins/postcss.js.map +1 -1
  86. package/dist/plugins/rsc-client-reference-loaders.d.ts +7 -0
  87. package/dist/plugins/rsc-client-reference-loaders.js +48 -0
  88. package/dist/plugins/rsc-client-reference-loaders.js.map +1 -0
  89. package/dist/plugins/rsc-client-shim-excludes.js.map +1 -1
  90. package/dist/plugins/sass.d.ts +34 -0
  91. package/dist/plugins/sass.js +22 -0
  92. package/dist/plugins/sass.js.map +1 -0
  93. package/dist/plugins/server-externals-manifest.js.map +1 -1
  94. package/dist/plugins/strip-server-exports.js.map +1 -1
  95. package/dist/routing/app-route-graph.d.ts +78 -6
  96. package/dist/routing/app-route-graph.js +241 -25
  97. package/dist/routing/app-route-graph.js.map +1 -1
  98. package/dist/routing/app-router.js.map +1 -1
  99. package/dist/routing/file-matcher.js.map +1 -1
  100. package/dist/routing/pages-router.js.map +1 -1
  101. package/dist/routing/route-matching.js.map +1 -1
  102. package/dist/routing/route-pattern.d.ts +56 -1
  103. package/dist/routing/route-pattern.js +60 -1
  104. package/dist/routing/route-pattern.js.map +1 -1
  105. package/dist/routing/route-trie.js.map +1 -1
  106. package/dist/routing/route-validation.js.map +1 -1
  107. package/dist/routing/utils.js.map +1 -1
  108. package/dist/server/api-handler.js.map +1 -1
  109. package/dist/server/app-browser-action-result.d.ts +44 -0
  110. package/dist/server/app-browser-action-result.js +79 -0
  111. package/dist/server/app-browser-action-result.js.map +1 -0
  112. package/dist/server/app-browser-entry.js +330 -133
  113. package/dist/server/app-browser-entry.js.map +1 -1
  114. package/dist/server/app-browser-error.js.map +1 -1
  115. package/dist/server/app-browser-hydration.d.ts +31 -0
  116. package/dist/server/app-browser-hydration.js +30 -0
  117. package/dist/server/app-browser-hydration.js.map +1 -0
  118. package/dist/server/app-browser-navigation-controller.d.ts +20 -4
  119. package/dist/server/app-browser-navigation-controller.js +90 -23
  120. package/dist/server/app-browser-navigation-controller.js.map +1 -1
  121. package/dist/server/app-browser-popstate.d.ts +16 -0
  122. package/dist/server/app-browser-popstate.js +17 -0
  123. package/dist/server/app-browser-popstate.js.map +1 -0
  124. package/dist/server/app-browser-rsc-redirect.d.ts +28 -0
  125. package/dist/server/app-browser-rsc-redirect.js +37 -0
  126. package/dist/server/app-browser-rsc-redirect.js.map +1 -0
  127. package/dist/server/app-browser-state.d.ts +27 -23
  128. package/dist/server/app-browser-state.js +158 -54
  129. package/dist/server/app-browser-state.js.map +1 -1
  130. package/dist/server/app-browser-stream.d.ts +9 -4
  131. package/dist/server/app-browser-stream.js +29 -8
  132. package/dist/server/app-browser-stream.js.map +1 -1
  133. package/dist/server/app-browser-visible-commit.d.ts +11 -1
  134. package/dist/server/app-browser-visible-commit.js +69 -21
  135. package/dist/server/app-browser-visible-commit.js.map +1 -1
  136. package/dist/server/app-client-reference-preloader.js.map +1 -1
  137. package/dist/server/app-elements-wire.d.ts +43 -6
  138. package/dist/server/app-elements-wire.js +121 -5
  139. package/dist/server/app-elements-wire.js.map +1 -1
  140. package/dist/server/app-elements.d.ts +2 -2
  141. package/dist/server/app-elements.js +2 -2
  142. package/dist/server/app-elements.js.map +1 -1
  143. package/dist/server/app-fallback-renderer.d.ts +10 -1
  144. package/dist/server/app-fallback-renderer.js +37 -1
  145. package/dist/server/app-fallback-renderer.js.map +1 -1
  146. package/dist/server/app-history-state.d.ts +26 -0
  147. package/dist/server/app-history-state.js +53 -0
  148. package/dist/server/app-history-state.js.map +1 -0
  149. package/dist/server/app-hook-warning-suppression.js.map +1 -1
  150. package/dist/server/app-middleware.d.ts +1 -1
  151. package/dist/server/app-middleware.js +4 -9
  152. package/dist/server/app-middleware.js.map +1 -1
  153. package/dist/server/app-mounted-slots-header.js.map +1 -1
  154. package/dist/server/app-page-boundary-render.d.ts +11 -1
  155. package/dist/server/app-page-boundary-render.js +27 -19
  156. package/dist/server/app-page-boundary-render.js.map +1 -1
  157. package/dist/server/app-page-boundary.d.ts +1 -0
  158. package/dist/server/app-page-boundary.js +10 -7
  159. package/dist/server/app-page-boundary.js.map +1 -1
  160. package/dist/server/app-page-cache.d.ts +23 -3
  161. package/dist/server/app-page-cache.js +63 -27
  162. package/dist/server/app-page-cache.js.map +1 -1
  163. package/dist/server/app-page-dispatch.d.ts +11 -1
  164. package/dist/server/app-page-dispatch.js +85 -14
  165. package/dist/server/app-page-dispatch.js.map +1 -1
  166. package/dist/server/app-page-element-builder.d.ts +10 -1
  167. package/dist/server/app-page-element-builder.js +38 -6
  168. package/dist/server/app-page-element-builder.js.map +1 -1
  169. package/dist/server/app-page-execution.js +2 -3
  170. package/dist/server/app-page-execution.js.map +1 -1
  171. package/dist/server/app-page-head.d.ts +7 -0
  172. package/dist/server/app-page-head.js +6 -1
  173. package/dist/server/app-page-head.js.map +1 -1
  174. package/dist/server/app-page-method.js.map +1 -1
  175. package/dist/server/app-page-params.js.map +1 -1
  176. package/dist/server/app-page-probe.d.ts +23 -1
  177. package/dist/server/app-page-probe.js +29 -1
  178. package/dist/server/app-page-probe.js.map +1 -1
  179. package/dist/server/app-page-render-observation.d.ts +35 -0
  180. package/dist/server/app-page-render-observation.js +68 -0
  181. package/dist/server/app-page-render-observation.js.map +1 -0
  182. package/dist/server/app-page-render.d.ts +12 -2
  183. package/dist/server/app-page-render.js +90 -7
  184. package/dist/server/app-page-render.js.map +1 -1
  185. package/dist/server/app-page-request.d.ts +1 -0
  186. package/dist/server/app-page-request.js +2 -1
  187. package/dist/server/app-page-request.js.map +1 -1
  188. package/dist/server/app-page-response.d.ts +2 -0
  189. package/dist/server/app-page-response.js +18 -7
  190. package/dist/server/app-page-response.js.map +1 -1
  191. package/dist/server/app-page-route-wiring.d.ts +9 -3
  192. package/dist/server/app-page-route-wiring.js +91 -62
  193. package/dist/server/app-page-route-wiring.js.map +1 -1
  194. package/dist/server/app-page-segment-state.d.ts +10 -0
  195. package/dist/server/app-page-segment-state.js +87 -0
  196. package/dist/server/app-page-segment-state.js.map +1 -0
  197. package/dist/server/app-page-stream.d.ts +9 -2
  198. package/dist/server/app-page-stream.js +4 -1
  199. package/dist/server/app-page-stream.js.map +1 -1
  200. package/dist/server/app-post-middleware-context.js.map +1 -1
  201. package/dist/server/app-prerender-endpoints.js.map +1 -1
  202. package/dist/server/app-prerender-static-params.js.map +1 -1
  203. package/dist/server/app-render-dependency.js.map +1 -1
  204. package/dist/server/app-request-context.js.map +1 -1
  205. package/dist/server/app-route-handler-cache.js.map +1 -1
  206. package/dist/server/app-route-handler-dispatch.js +3 -1
  207. package/dist/server/app-route-handler-dispatch.js.map +1 -1
  208. package/dist/server/app-route-handler-execution.js.map +1 -1
  209. package/dist/server/app-route-handler-policy.js +1 -0
  210. package/dist/server/app-route-handler-policy.js.map +1 -1
  211. package/dist/server/app-route-handler-response.js +4 -3
  212. package/dist/server/app-route-handler-response.js.map +1 -1
  213. package/dist/server/app-route-handler-runtime.js.map +1 -1
  214. package/dist/server/app-router-entry.js +7 -15
  215. package/dist/server/app-router-entry.js.map +1 -1
  216. package/dist/server/app-rsc-cache-busting.d.ts +23 -2
  217. package/dist/server/app-rsc-cache-busting.js +75 -19
  218. package/dist/server/app-rsc-cache-busting.js.map +1 -1
  219. package/dist/server/app-rsc-embedded-chunks.d.ts +9 -0
  220. package/dist/server/app-rsc-embedded-chunks.js +34 -0
  221. package/dist/server/app-rsc-embedded-chunks.js.map +1 -0
  222. package/dist/server/app-rsc-error-handler.js.map +1 -1
  223. package/dist/server/app-rsc-errors.d.ts +4 -1
  224. package/dist/server/app-rsc-errors.js +1 -1
  225. package/dist/server/app-rsc-errors.js.map +1 -1
  226. package/dist/server/app-rsc-handler.d.ts +18 -1
  227. package/dist/server/app-rsc-handler.js +55 -16
  228. package/dist/server/app-rsc-handler.js.map +1 -1
  229. package/dist/server/app-rsc-render-mode.d.ts +11 -0
  230. package/dist/server/app-rsc-render-mode.js +21 -0
  231. package/dist/server/app-rsc-render-mode.js.map +1 -0
  232. package/dist/server/app-rsc-request-normalization.d.ts +4 -1
  233. package/dist/server/app-rsc-request-normalization.js +7 -2
  234. package/dist/server/app-rsc-request-normalization.js.map +1 -1
  235. package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
  236. package/dist/server/app-rsc-response-finalizer.js +6 -1
  237. package/dist/server/app-rsc-response-finalizer.js.map +1 -1
  238. package/dist/server/app-rsc-route-matching.d.ts +23 -0
  239. package/dist/server/app-rsc-route-matching.js +45 -23
  240. package/dist/server/app-rsc-route-matching.js.map +1 -1
  241. package/dist/server/app-segment-config.js.map +1 -1
  242. package/dist/server/app-server-action-execution.d.ts +51 -5
  243. package/dist/server/app-server-action-execution.js +161 -51
  244. package/dist/server/app-server-action-execution.js.map +1 -1
  245. package/dist/server/app-ssr-entry.d.ts +7 -0
  246. package/dist/server/app-ssr-entry.js +44 -14
  247. package/dist/server/app-ssr-entry.js.map +1 -1
  248. package/dist/server/app-ssr-error-meta.d.ts +14 -0
  249. package/dist/server/app-ssr-error-meta.js +50 -0
  250. package/dist/server/app-ssr-error-meta.js.map +1 -0
  251. package/dist/server/app-ssr-stream.d.ts +1 -1
  252. package/dist/server/app-ssr-stream.js +9 -12
  253. package/dist/server/app-ssr-stream.js.map +1 -1
  254. package/dist/server/app-static-generation.js.map +1 -1
  255. package/dist/server/artifact-compatibility.d.ts +12 -2
  256. package/dist/server/artifact-compatibility.js +12 -8
  257. package/dist/server/artifact-compatibility.js.map +1 -1
  258. package/dist/server/cache-control.js +1 -0
  259. package/dist/server/cache-control.js.map +1 -1
  260. package/dist/server/cache-proof.d.ts +124 -5
  261. package/dist/server/cache-proof.js +416 -18
  262. package/dist/server/cache-proof.js.map +1 -1
  263. package/dist/server/csp.js.map +1 -1
  264. package/dist/server/dev-error-overlay-store.js.map +1 -1
  265. package/dist/server/dev-error-overlay.js +5 -0
  266. package/dist/server/dev-error-overlay.js.map +1 -1
  267. package/dist/server/dev-lockfile.d.ts +110 -0
  268. package/dist/server/dev-lockfile.js +180 -0
  269. package/dist/server/dev-lockfile.js.map +1 -0
  270. package/dist/server/dev-module-runner.js.map +1 -1
  271. package/dist/server/dev-origin-check.js.map +1 -1
  272. package/dist/server/dev-route-files.js.map +1 -1
  273. package/dist/server/dev-server.js +23 -10
  274. package/dist/server/dev-server.js.map +1 -1
  275. package/dist/server/file-based-metadata.d.ts +13 -0
  276. package/dist/server/file-based-metadata.js +49 -2
  277. package/dist/server/file-based-metadata.js.map +1 -1
  278. package/dist/server/headers.d.ts +81 -0
  279. package/dist/server/headers.js +104 -0
  280. package/dist/server/headers.js.map +1 -0
  281. package/dist/server/html.js +1 -1
  282. package/dist/server/html.js.map +1 -1
  283. package/dist/server/http-error-responses.d.ts +10 -0
  284. package/dist/server/http-error-responses.js +11 -1
  285. package/dist/server/http-error-responses.js.map +1 -1
  286. package/dist/server/image-optimization.d.ts +11 -1
  287. package/dist/server/image-optimization.js.map +1 -1
  288. package/dist/server/implicit-tags.js +2 -1
  289. package/dist/server/implicit-tags.js.map +1 -1
  290. package/dist/server/instrumentation-runtime.js.map +1 -1
  291. package/dist/server/instrumentation.js.map +1 -1
  292. package/dist/server/isr-cache.d.ts +12 -2
  293. package/dist/server/isr-cache.js +16 -5
  294. package/dist/server/isr-cache.js.map +1 -1
  295. package/dist/server/metadata-route-build-data.js.map +1 -1
  296. package/dist/server/metadata-route-response.js +22 -5
  297. package/dist/server/metadata-route-response.js.map +1 -1
  298. package/dist/server/metadata-routes.js +27 -8
  299. package/dist/server/metadata-routes.js.map +1 -1
  300. package/dist/server/middleware-matcher.js.map +1 -1
  301. package/dist/server/middleware-request-headers.d.ts +4 -1
  302. package/dist/server/middleware-request-headers.js +15 -8
  303. package/dist/server/middleware-request-headers.js.map +1 -1
  304. package/dist/server/middleware-response-headers.d.ts +2 -1
  305. package/dist/server/middleware-response-headers.js +1 -1
  306. package/dist/server/middleware-response-headers.js.map +1 -1
  307. package/dist/server/middleware-runtime.d.ts +1 -0
  308. package/dist/server/middleware-runtime.js +7 -3
  309. package/dist/server/middleware-runtime.js.map +1 -1
  310. package/dist/server/middleware.d.ts +12 -0
  311. package/dist/server/middleware.js +12 -0
  312. package/dist/server/middleware.js.map +1 -1
  313. package/dist/server/navigation-planner.d.ts +133 -0
  314. package/dist/server/navigation-planner.js +432 -0
  315. package/dist/server/navigation-planner.js.map +1 -0
  316. package/dist/server/navigation-trace.d.ts +19 -2
  317. package/dist/server/navigation-trace.js +20 -1
  318. package/dist/server/navigation-trace.js.map +1 -1
  319. package/dist/server/next-error-digest.d.ts +3 -2
  320. package/dist/server/next-error-digest.js +4 -2
  321. package/dist/server/next-error-digest.js.map +1 -1
  322. package/dist/server/normalize-path.d.ts +2 -1
  323. package/dist/server/normalize-path.js +4 -1
  324. package/dist/server/normalize-path.js.map +1 -1
  325. package/dist/server/pages-api-route.js +1 -0
  326. package/dist/server/pages-api-route.js.map +1 -1
  327. package/dist/server/pages-i18n.js.map +1 -1
  328. package/dist/server/pages-media-type.js.map +1 -1
  329. package/dist/server/pages-node-compat.js.map +1 -1
  330. package/dist/server/pages-page-data.d.ts +3 -2
  331. package/dist/server/pages-page-data.js +27 -5
  332. package/dist/server/pages-page-data.js.map +1 -1
  333. package/dist/server/pages-page-response.js +2 -1
  334. package/dist/server/pages-page-response.js.map +1 -1
  335. package/dist/server/prerender-work-unit-setup.js +1 -1
  336. package/dist/server/prerender-work-unit-setup.js.map +1 -1
  337. package/dist/server/prod-server.d.ts +28 -1
  338. package/dist/server/prod-server.js +97 -22
  339. package/dist/server/prod-server.js.map +1 -1
  340. package/dist/server/request-log.js.map +1 -1
  341. package/dist/server/request-pipeline.d.ts +1 -13
  342. package/dist/server/request-pipeline.js +3 -25
  343. package/dist/server/request-pipeline.js.map +1 -1
  344. package/dist/server/rsc-stream-hints.js.map +1 -1
  345. package/dist/server/seed-cache.js.map +1 -1
  346. package/dist/server/server-action-not-found.d.ts +16 -3
  347. package/dist/server/server-action-not-found.js +22 -4
  348. package/dist/server/server-action-not-found.js.map +1 -1
  349. package/dist/server/server-globals.d.ts +5 -0
  350. package/dist/server/server-globals.js +37 -0
  351. package/dist/server/server-globals.js.map +1 -0
  352. package/dist/server/socket-error-backstop.js.map +1 -1
  353. package/dist/server/static-file-cache.js +1 -1
  354. package/dist/server/static-file-cache.js.map +1 -1
  355. package/dist/server/worker-utils.d.ts +0 -7
  356. package/dist/server/worker-utils.js +3 -2
  357. package/dist/server/worker-utils.js.map +1 -1
  358. package/dist/shims/amp.js.map +1 -1
  359. package/dist/shims/app.d.ts +37 -4
  360. package/dist/shims/app.js +50 -1
  361. package/dist/shims/app.js.map +1 -0
  362. package/dist/shims/cache-for-request.js.map +1 -1
  363. package/dist/shims/cache-runtime.d.ts +19 -2
  364. package/dist/shims/cache-runtime.js +87 -19
  365. package/dist/shims/cache-runtime.js.map +1 -1
  366. package/dist/shims/cache.d.ts +20 -21
  367. package/dist/shims/cache.js +101 -15
  368. package/dist/shims/cache.js.map +1 -1
  369. package/dist/shims/client-hook-error.js.map +1 -1
  370. package/dist/shims/compat-router.js.map +1 -1
  371. package/dist/shims/config.js.map +1 -1
  372. package/dist/shims/constants.js.map +1 -1
  373. package/dist/shims/document.js.map +1 -1
  374. package/dist/shims/dynamic.d.ts +18 -10
  375. package/dist/shims/dynamic.js +107 -51
  376. package/dist/shims/dynamic.js.map +1 -1
  377. package/dist/shims/error-boundary.d.ts +35 -6
  378. package/dist/shims/error-boundary.js +116 -33
  379. package/dist/shims/error-boundary.js.map +1 -1
  380. package/dist/shims/error.d.ts +18 -1
  381. package/dist/shims/error.js +56 -1
  382. package/dist/shims/error.js.map +1 -1
  383. package/dist/shims/fetch-cache.d.ts +25 -1
  384. package/dist/shims/fetch-cache.js +159 -13
  385. package/dist/shims/fetch-cache.js.map +1 -1
  386. package/dist/shims/font-google-base.d.ts +22 -8
  387. package/dist/shims/font-google-base.js +41 -71
  388. package/dist/shims/font-google-base.js.map +1 -1
  389. package/dist/shims/font-local.d.ts +3 -20
  390. package/dist/shims/font-local.js +23 -75
  391. package/dist/shims/font-local.js.map +1 -1
  392. package/dist/shims/font-utils.d.ts +51 -0
  393. package/dist/shims/font-utils.js +97 -0
  394. package/dist/shims/font-utils.js.map +1 -0
  395. package/dist/shims/form.js +3 -1
  396. package/dist/shims/form.js.map +1 -1
  397. package/dist/shims/hash-scroll.d.ts +7 -0
  398. package/dist/shims/hash-scroll.js +30 -0
  399. package/dist/shims/hash-scroll.js.map +1 -0
  400. package/dist/shims/head-state.js.map +1 -1
  401. package/dist/shims/head.d.ts +3 -1
  402. package/dist/shims/head.js +28 -16
  403. package/dist/shims/head.js.map +1 -1
  404. package/dist/shims/headers.d.ts +11 -12
  405. package/dist/shims/headers.js +45 -8
  406. package/dist/shims/headers.js.map +1 -1
  407. package/dist/shims/i18n-context.js.map +1 -1
  408. package/dist/shims/i18n-state.js.map +1 -1
  409. package/dist/shims/image-config.d.ts +14 -1
  410. package/dist/shims/image-config.js +24 -1
  411. package/dist/shims/image-config.js.map +1 -1
  412. package/dist/shims/image.d.ts +1 -0
  413. package/dist/shims/image.js +159 -80
  414. package/dist/shims/image.js.map +1 -1
  415. package/dist/shims/internal/als-registry.js.map +1 -1
  416. package/dist/shims/internal/app-router-context.d.ts +7 -6
  417. package/dist/shims/internal/app-router-context.js +17 -6
  418. package/dist/shims/internal/app-router-context.js.map +1 -1
  419. package/dist/shims/internal/cookie-serialize.js.map +1 -1
  420. package/dist/shims/internal/make-hanging-promise.d.ts +1 -1
  421. package/dist/shims/internal/make-hanging-promise.js +1 -1
  422. package/dist/shims/internal/make-hanging-promise.js.map +1 -1
  423. package/dist/shims/internal/parse-cookie-header.js.map +1 -1
  424. package/dist/shims/internal/utils.js.map +1 -1
  425. package/dist/shims/internal/work-unit-async-storage.js +2 -2
  426. package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
  427. package/dist/shims/layout-segment-context.js.map +1 -1
  428. package/dist/shims/legacy-image.js.map +1 -1
  429. package/dist/shims/link-prefetch.d.ts +42 -0
  430. package/dist/shims/link-prefetch.js +45 -0
  431. package/dist/shims/link-prefetch.js.map +1 -0
  432. package/dist/shims/link.d.ts +37 -4
  433. package/dist/shims/link.js +156 -46
  434. package/dist/shims/link.js.map +1 -1
  435. package/dist/shims/metadata.d.ts +16 -30
  436. package/dist/shims/metadata.js +87 -28
  437. package/dist/shims/metadata.js.map +1 -1
  438. package/dist/shims/navigation-state.js.map +1 -1
  439. package/dist/shims/navigation.d.ts +172 -10
  440. package/dist/shims/navigation.js +335 -70
  441. package/dist/shims/navigation.js.map +1 -1
  442. package/dist/shims/navigation.react-server.d.ts +3 -2
  443. package/dist/shims/navigation.react-server.js +5 -2
  444. package/dist/shims/navigation.react-server.js.map +1 -1
  445. package/dist/shims/offline.js.map +1 -1
  446. package/dist/shims/pages-router-runtime.d.ts +7 -0
  447. package/dist/shims/pages-router-runtime.js +16 -0
  448. package/dist/shims/pages-router-runtime.js.map +1 -0
  449. package/dist/shims/readonly-url-search-params.js.map +1 -1
  450. package/dist/shims/request-context.js.map +1 -1
  451. package/dist/shims/root-params.js.map +1 -1
  452. package/dist/shims/router-state.js.map +1 -1
  453. package/dist/shims/router.d.ts +69 -7
  454. package/dist/shims/router.js +232 -249
  455. package/dist/shims/router.js.map +1 -1
  456. package/dist/shims/script-nonce-context.js.map +1 -1
  457. package/dist/shims/script.js +110 -32
  458. package/dist/shims/script.js.map +1 -1
  459. package/dist/shims/server.js +12 -15
  460. package/dist/shims/server.js.map +1 -1
  461. package/dist/shims/slot.d.ts +7 -1
  462. package/dist/shims/slot.js +60 -7
  463. package/dist/shims/slot.js.map +1 -1
  464. package/dist/shims/thenable-params.js.map +1 -1
  465. package/dist/shims/unified-request-context.js +5 -0
  466. package/dist/shims/unified-request-context.js.map +1 -1
  467. package/dist/shims/unrecognized-action-error.d.ts +35 -0
  468. package/dist/shims/unrecognized-action-error.js +41 -0
  469. package/dist/shims/unrecognized-action-error.js.map +1 -0
  470. package/dist/shims/url-safety.js.map +1 -1
  471. package/dist/shims/url-utils.d.ts +22 -1
  472. package/dist/shims/url-utils.js +76 -3
  473. package/dist/shims/url-utils.js.map +1 -1
  474. package/dist/shims/use-merged-ref.js.map +1 -1
  475. package/dist/shims/web-vitals.d.ts +4 -21
  476. package/dist/shims/web-vitals.js +19 -6
  477. package/dist/shims/web-vitals.js.map +1 -1
  478. package/dist/utils/asset-prefix.d.ts +69 -0
  479. package/dist/utils/asset-prefix.js +91 -0
  480. package/dist/utils/asset-prefix.js.map +1 -0
  481. package/dist/utils/base-path.d.ts +7 -1
  482. package/dist/utils/base-path.js +10 -1
  483. package/dist/utils/base-path.js.map +1 -1
  484. package/dist/utils/cache-control-metadata.js.map +1 -1
  485. package/dist/utils/domain-locale.js.map +1 -1
  486. package/dist/utils/encode-cache-tag.d.ts +31 -0
  487. package/dist/utils/encode-cache-tag.js +38 -0
  488. package/dist/utils/encode-cache-tag.js.map +1 -0
  489. package/dist/utils/error-cause.js.map +1 -1
  490. package/dist/utils/hash.js.map +1 -1
  491. package/dist/utils/lazy-chunks.js.map +1 -1
  492. package/dist/utils/manifest-paths.js.map +1 -1
  493. package/dist/utils/mdx-scan.js.map +1 -1
  494. package/dist/utils/navigation-signal.d.ts +5 -0
  495. package/dist/utils/navigation-signal.js +14 -0
  496. package/dist/utils/navigation-signal.js.map +1 -0
  497. package/dist/utils/project.js.map +1 -1
  498. package/dist/utils/public-routes.js.map +1 -1
  499. package/dist/utils/query.js.map +1 -1
  500. package/dist/utils/safe-json-file.js.map +1 -1
  501. package/dist/utils/sorted-array.d.ts +9 -0
  502. package/dist/utils/sorted-array.js +22 -0
  503. package/dist/utils/sorted-array.js.map +1 -0
  504. package/dist/utils/text-stream.js.map +1 -1
  505. package/dist/utils/vinext-root.js.map +1 -1
  506. package/package.json +8 -6
package/dist/index.js CHANGED
@@ -3,14 +3,15 @@ import { normalizePathnameForRouteMatchStrict } from "./routing/utils.js";
3
3
  import { createValidFileMatcher } from "./routing/file-matcher.js";
4
4
  import { hasBasePath, removeTrailingSlash } from "./utils/base-path.js";
5
5
  import { apiRouter, invalidateRouteCache, matchRoute, pagesRouter } from "./routing/pages-router.js";
6
+ import { INTERNAL_HEADERS, VINEXT_MW_CTX_HEADER, VINEXT_TIMING_HEADER } from "./server/headers.js";
6
7
  import { buildRequestHeadersFromMiddlewareResponse } from "./server/middleware-request-headers.js";
7
8
  import { normalizePath as normalizePath$1 } from "./server/normalize-path.js";
8
9
  import { isExternalUrl, matchHeaders, matchRedirect, matchRewrite, proxyExternalRequest, requestContextFromRequest, sanitizeDestination } from "./config/config-matchers.js";
9
- import { INTERNAL_HEADERS, filterInternalHeaders, isOpenRedirectShaped } from "./server/request-pipeline.js";
10
+ import { filterInternalHeaders, isOpenRedirectShaped } from "./server/request-pipeline.js";
10
11
  import { findMiddlewareFile, runMiddleware } from "./server/middleware.js";
11
12
  import { generateServerEntry } from "./entries/pages-server-entry.js";
12
13
  import { generateClientEntry } from "./entries/pages-client-entry.js";
13
- import { appRouter, invalidateAppRouteCache } from "./routing/app-router.js";
14
+ import { appRouteGraph, appRouter, invalidateAppRouteCache } from "./routing/app-router.js";
14
15
  import { findInstrumentationClientFile, findInstrumentationFile, runInstrumentation } from "./server/instrumentation.js";
15
16
  import { logRequest, now } from "./server/request-log.js";
16
17
  import { createSSRHandler } from "./server/dev-server.js";
@@ -26,20 +27,23 @@ import { generateBrowserEntry } from "./entries/app-browser-entry.js";
26
27
  import { collectRouteClassificationManifest } from "./build/route-classification-manifest.js";
27
28
  import { planRouteClassificationInjection } from "./build/route-classification-injector.js";
28
29
  import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "./shims/constants.js";
30
+ import { RESOLVED_VIRTUAL_GOOGLE_FONTS, VIRTUAL_GOOGLE_FONTS, createGoogleFontsPlugin, createLocalFontsPlugin, generateGoogleFontsVirtualModule, parseStaticObjectLiteral } from "./plugins/fonts.js";
29
31
  import { findNextConfigPath, loadNextConfig, resolveNextConfig, resolveNextConfigInput } from "./config/next-config.js";
30
32
  import { precompressAssets } from "./build/precompress.js";
31
33
  import { manifestFileWithBase, manifestFilesWithBase } from "./utils/manifest-paths.js";
34
+ import { ASSET_PREFIX_URL_DIR, resolveAssetUrlPrefix, resolveAssetsDir } from "./utils/asset-prefix.js";
32
35
  import { asyncHooksStubPlugin } from "./plugins/async-hooks-stub.js";
33
36
  import { clientReferenceDedupPlugin } from "./plugins/client-reference-dedup.js";
37
+ import { createRscClientReferenceLoadersPlugin } from "./plugins/rsc-client-reference-loaders.js";
34
38
  import { createInstrumentationClientTransformPlugin } from "./plugins/instrumentation-client.js";
35
39
  import { createOptimizeImportsPlugin } from "./plugins/optimize-imports.js";
36
40
  import { createOgInlineFetchAssetsPlugin, ogAssetsPlugin } from "./plugins/og-assets.js";
37
41
  import { SSR_EXTERNAL_REACT_ENTRIES, VINEXT_OPTIMIZE_DEPS_EXCLUDE, mergeOptimizeDepsExclude } from "./plugins/rsc-client-shim-excludes.js";
38
42
  import { createServerExternalsManifestPlugin } from "./plugins/server-externals-manifest.js";
39
- import { RESOLVED_VIRTUAL_GOOGLE_FONTS, VIRTUAL_GOOGLE_FONTS, createGoogleFontsPlugin, createLocalFontsPlugin, generateGoogleFontsVirtualModule, parseStaticObjectLiteral } from "./plugins/fonts.js";
40
43
  import { computeLazyChunks } from "./utils/lazy-chunks.js";
41
44
  import { formatMissingCloudflarePluginError, hasWranglerConfig } from "./deploy.js";
42
45
  import { resolvePostcssStringPlugins } from "./plugins/postcss.js";
46
+ import { buildSassPreprocessorOptions } from "./plugins/sass.js";
43
47
  import { createClientCodeSplittingConfig, createClientManualChunks, createClientOutputConfig, getBuildBundlerOptions, getClientTreeshakeConfigForVite, withBuildBundlerOptions } from "./build/client-build-config.js";
44
48
  import { augmentSsrManifestFromBundle, relativeWithinRoot, tryRealpathSync } from "./build/ssr-manifest.js";
45
49
  import { stripServerExports } from "./plugins/strip-server-exports.js";
@@ -49,14 +53,18 @@ import { staticExportApp, staticExportPages } from "./build/static-export.js";
49
53
  import { createRequire } from "node:module";
50
54
  import fs from "node:fs";
51
55
  import path from "node:path";
52
- import { loadEnv, parseAst } from "vite";
56
+ import { loadEnv, parseAst, transformWithOxc } from "vite";
53
57
  import { pathToFileURL } from "node:url";
54
- import { randomBytes } from "node:crypto";
58
+ import { randomBytes, randomUUID } from "node:crypto";
59
+ import commonjs from "vite-plugin-commonjs";
55
60
  import MagicString from "magic-string";
56
61
  import tsconfigPaths from "vite-tsconfig-paths";
57
- import commonjs from "vite-plugin-commonjs";
58
62
  //#region src/index.ts
59
63
  installSocketErrorBackstop();
64
+ function createRscCompatibilityId(nextConfig) {
65
+ if (nextConfig.deploymentId) return nextConfig.deploymentId;
66
+ return randomUUID();
67
+ }
60
68
  const __dirname = import.meta.dirname;
61
69
  function resolveOptionalDependency(projectRoot, specifier) {
62
70
  try {
@@ -184,6 +192,27 @@ function getViteMajorVersion() {
184
192
  return 7;
185
193
  }
186
194
  }
195
+ /**
196
+ * Read the vinext package version once at plugin load. Surfaced via
197
+ * `process.env.__NEXT_VERSION` define so `window.next.version` lands a
198
+ * real string instead of the `"vinext"` fallback. Resolved relative to
199
+ * this module's own `package.json`, not the project root.
200
+ *
201
+ * Defaults to `"vinext"` on read failure so a malformed install never
202
+ * breaks the build — only the diagnostic global loses fidelity.
203
+ */
204
+ let _vinextVersionCache = null;
205
+ function getVinextVersion() {
206
+ if (_vinextVersionCache !== null) return _vinextVersionCache;
207
+ try {
208
+ const pkgUrl = new URL("../package.json", import.meta.url);
209
+ const pkg = JSON.parse(fs.readFileSync(pkgUrl, "utf-8"));
210
+ _vinextVersionCache = typeof pkg.version === "string" ? pkg.version : "vinext";
211
+ } catch {
212
+ _vinextVersionCache = "vinext";
213
+ }
214
+ return _vinextVersionCache;
215
+ }
187
216
  const _tsconfigAliasCache = /* @__PURE__ */ new Map();
188
217
  function resolveTsconfigAliases(projectRoot) {
189
218
  if (_tsconfigAliasCache.has(projectRoot)) return _tsconfigAliasCache.get(projectRoot);
@@ -217,6 +246,51 @@ const _fontGoogleShimPath = resolveShimModulePath(_shimsDir, "font-google");
217
246
  function isValidExportIdentifier(name) {
218
247
  return /^[$A-Z_a-z][$\w]*$/.test(name);
219
248
  }
249
+ /**
250
+ * Returns true when `code` starts with a React `"use client"` or `"use server"`
251
+ * directive (after stripping leading comments, hashbang, and whitespace).
252
+ *
253
+ * Used by `vinext:jsx-in-js` to opt `.js` files inside `node_modules` into the
254
+ * JSX transform. We mirror `@vitejs/plugin-rsc`'s detection by looking at the
255
+ * directive prologue rather than scanning the whole file — `code.includes`
256
+ * alone would match incidental occurrences in template literals or comments.
257
+ */
258
+ function hasReactDirective(code) {
259
+ let i = 0;
260
+ const len = code.length;
261
+ if (code.charCodeAt(0) === 65279) i = 1;
262
+ if (code[i] === "#" && code[i + 1] === "!") {
263
+ const nl = code.indexOf("\n", i);
264
+ if (nl === -1) return false;
265
+ i = nl + 1;
266
+ }
267
+ while (i < len) {
268
+ while (i < len && /\s/.test(code[i] ?? "")) i++;
269
+ if (i >= len) return false;
270
+ if (code[i] === "/" && code[i + 1] === "/") {
271
+ const nl = code.indexOf("\n", i + 2);
272
+ if (nl === -1) return false;
273
+ i = nl + 1;
274
+ continue;
275
+ }
276
+ if (code[i] === "/" && code[i + 1] === "*") {
277
+ const end = code.indexOf("*/", i + 2);
278
+ if (end === -1) return false;
279
+ i = end + 2;
280
+ continue;
281
+ }
282
+ const quote = code[i];
283
+ if (quote !== "\"" && quote !== "'") return false;
284
+ const closing = code.indexOf(quote, i + 1);
285
+ if (closing === -1) return false;
286
+ const directive = code.slice(i + 1, closing);
287
+ if (directive === "use client" || directive === "use server") return true;
288
+ i = closing + 1;
289
+ while (i < len && (code[i] === ";" || code[i] === " " || code[i] === " ")) i++;
290
+ if (code[i] === "\n") i++;
291
+ }
292
+ return false;
293
+ }
220
294
  function generateRootParamsModule(rootParamNames) {
221
295
  const names = Array.from(new Set(rootParamNames)).filter(isValidExportIdentifier).sort();
222
296
  if (names.length === 0) return "export {};\n";
@@ -264,6 +338,7 @@ function vinext(options = {}) {
264
338
  let hasCloudflarePlugin = false;
265
339
  let warnedInlineNextConfigOverride = false;
266
340
  let hasNitroPlugin = false;
341
+ let rscCompatibilityId;
267
342
  let rscClassificationManifest = null;
268
343
  const shimsDir = path.resolve(__dirname, "shims");
269
344
  const canonicalize = (p) => tryRealpathSync(p) ?? p;
@@ -359,6 +434,27 @@ function vinext(options = {}) {
359
434
  ...viteMajorVersion >= 8 ? [] : [tsconfigPaths()],
360
435
  reactPluginPromise,
361
436
  commonjs(),
437
+ ...viteMajorVersion >= 8 ? [{
438
+ name: "vinext:jsx-in-js",
439
+ enforce: "pre",
440
+ async transform(code, id) {
441
+ const cleanId = id.split("?")[0];
442
+ if (!/\.(m?js)$/.test(cleanId)) return;
443
+ if (cleanId.includes("/node_modules/")) {
444
+ if (!code.includes("use client") && !code.includes("use server")) return;
445
+ if (!hasReactDirective(code)) return;
446
+ }
447
+ const result = await transformWithOxc(code, id, {
448
+ lang: "jsx",
449
+ jsx: { runtime: "automatic" },
450
+ sourcemap: true
451
+ });
452
+ return {
453
+ code: result.code,
454
+ map: result.map
455
+ };
456
+ }
457
+ }] : [],
362
458
  {
363
459
  name: "vinext:config",
364
460
  enforce: "pre",
@@ -403,6 +499,7 @@ function vinext(options = {}) {
403
499
  } else rawConfig = await loadNextConfig(root, phase);
404
500
  nextConfig = await resolveNextConfig(rawConfig, root);
405
501
  }
502
+ rscCompatibilityId ??= createRscCompatibilityId(nextConfig);
406
503
  fileMatcher = createValidFileMatcher(nextConfig.pageExtensions);
407
504
  instrumentationPath = findInstrumentationFile(root, fileMatcher);
408
505
  instrumentationClientPath = findInstrumentationClientFile(root, fileMatcher);
@@ -414,6 +511,7 @@ function vinext(options = {}) {
414
511
  defines[`process.env.${key}`] = JSON.stringify(value);
415
512
  }
416
513
  defines["process.env.__NEXT_ROUTER_BASEPATH"] = JSON.stringify(nextConfig.basePath);
514
+ defines["process.env.__VINEXT_TRAILING_SLASH"] = JSON.stringify(nextConfig.trailingSlash ? "true" : "false");
417
515
  defines["process.env.__VINEXT_IMAGE_REMOTE_PATTERNS"] = JSON.stringify(JSON.stringify(nextConfig.images?.remotePatterns ?? []));
418
516
  defines["process.env.__VINEXT_IMAGE_DOMAINS"] = JSON.stringify(JSON.stringify(nextConfig.images?.domains ?? []));
419
517
  {
@@ -441,8 +539,12 @@ function vinext(options = {}) {
441
539
  defines["process.env.__VINEXT_IMAGE_SIZES"] = JSON.stringify(JSON.stringify(imageSizes));
442
540
  }
443
541
  defines["process.env.__VINEXT_IMAGE_DANGEROUSLY_ALLOW_SVG"] = JSON.stringify(String(nextConfig.images?.dangerouslyAllowSVG ?? false));
542
+ defines["process.env.__VINEXT_IMAGE_DANGEROUSLY_ALLOW_LOCAL_IP"] = JSON.stringify(String(nextConfig.images?.dangerouslyAllowLocalIP ?? false));
444
543
  defines["process.env.__VINEXT_DRAFT_SECRET"] = JSON.stringify(crypto.randomUUID());
445
544
  defines["process.env.__VINEXT_BUILD_ID"] = JSON.stringify(nextConfig.buildId);
545
+ defines["process.env.__VINEXT_RSC_COMPATIBILITY_ID"] = JSON.stringify(rscCompatibilityId);
546
+ defines["process.env.__VINEXT_DEPLOYMENT_ID"] = JSON.stringify(nextConfig.deploymentId ?? "");
547
+ defines["process.env.__NEXT_VERSION"] = JSON.stringify(getVinextVersion());
446
548
  nextShimMap = Object.fromEntries(Object.entries({
447
549
  "next/link": path.join(shimsDir, "link"),
448
550
  "next/head": path.join(shimsDir, "head"),
@@ -489,6 +591,7 @@ function vinext(options = {}) {
489
591
  "vinext/cache-runtime": path.join(shimsDir, "cache-runtime"),
490
592
  "vinext/navigation-state": path.join(shimsDir, "navigation-state"),
491
593
  "vinext/unified-request-context": path.join(shimsDir, "unified-request-context"),
594
+ "vinext/pages-router-runtime": path.join(shimsDir, "pages-router-runtime"),
492
595
  "vinext/router-state": path.join(shimsDir, "router-state"),
493
596
  "vinext/head-state": path.join(shimsDir, "head-state"),
494
597
  "vinext/i18n-state": path.join(shimsDir, "i18n-state"),
@@ -509,26 +612,37 @@ function vinext(options = {}) {
509
612
  hasNitroPlugin = pluginsFlat.some((p) => p && typeof p === "object" && "name" in p && typeof p.name === "string" && (p.name === "nitro" || p.name.startsWith("nitro:")));
510
613
  let postcssOverride;
511
614
  if (!config.css?.postcss || typeof config.css.postcss === "string") postcssOverride = await resolvePostcssStringPlugins(root);
615
+ const sassPreprocessorOptions = buildSassPreprocessorOptions(nextConfig.sassOptions);
512
616
  hasUserMdxPlugin = pluginsFlat.some((p) => p && typeof p === "object" && "name" in p && typeof p.name === "string" && (p.name === "@mdx-js/rollup" || p.name === "mdx"));
513
617
  if (!hasUserMdxPlugin && hasMdxFiles(root, hasAppDir ? appDir : null, hasPagesDir ? pagesDir : null)) await ensureMdxDelegate("detected");
514
618
  const isSSR = !!config.build?.ssr;
515
619
  const isMultiEnv = hasAppDir || hasCloudflarePlugin || hasNitroPlugin;
516
620
  const viteConfig = {
517
621
  appType: "custom",
518
- build: { ...withBuildBundlerOptions(viteMajorVersion, {
519
- onwarn: (() => {
520
- const userOnwarn = getBuildBundlerOptions(config.build)?.onwarn;
521
- return (warning, defaultHandler) => {
522
- if (warning.code === "MODULE_LEVEL_DIRECTIVE" && (warning.message?.includes("\"use client\"") || warning.message?.includes("\"use server\""))) return;
523
- if (warning.code === "IMPORT_IS_UNDEFINED" && warning.message?.includes("generateStaticParams")) return;
524
- if (warning.code === "IMPORT_IS_UNDEFINED" && /Import `(?:default|proxy|middleware)` will always be undefined/.test(warning.message ?? "") && /\b(?:proxy|middleware)\.\w+\b/.test(warning.message ?? "") && (warning.message?.includes("virtual:vinext-rsc-entry") || warning.message?.includes("virtual:vinext-server-entry"))) return;
525
- if (userOnwarn) userOnwarn(warning, defaultHandler);
526
- else defaultHandler(warning);
527
- };
528
- })(),
529
- ...!isSSR && !isMultiEnv ? { treeshake: getClientTreeshakeConfigForVite(viteMajorVersion) } : {},
530
- ...!isSSR && !isMultiEnv ? { output: getClientOutputConfigForVite(viteMajorVersion) } : {}
531
- }) },
622
+ build: {
623
+ ssrEmitAssets: true,
624
+ cssTarget: [
625
+ "chrome111",
626
+ "edge111",
627
+ "firefox114",
628
+ "safari15"
629
+ ],
630
+ ...nextConfig.assetPrefix ? { assetsDir: resolveAssetsDir(nextConfig.assetPrefix) } : {},
631
+ ...withBuildBundlerOptions(viteMajorVersion, {
632
+ onwarn: (() => {
633
+ const userOnwarn = getBuildBundlerOptions(config.build)?.onwarn;
634
+ return (warning, defaultHandler) => {
635
+ if (warning.code === "MODULE_LEVEL_DIRECTIVE" && (warning.message?.includes("\"use client\"") || warning.message?.includes("\"use server\""))) return;
636
+ if (warning.code === "IMPORT_IS_UNDEFINED" && warning.message?.includes("generateStaticParams")) return;
637
+ if (warning.code === "IMPORT_IS_UNDEFINED" && /Import `(?:default|proxy|middleware)` will always be undefined/.test(warning.message ?? "") && /\b(?:proxy|middleware)\.\w+\b/.test(warning.message ?? "") && (warning.message?.includes("virtual:vinext-rsc-entry") || warning.message?.includes("virtual:vinext-server-entry"))) return;
638
+ if (userOnwarn) userOnwarn(warning, defaultHandler);
639
+ else defaultHandler(warning);
640
+ };
641
+ })(),
642
+ ...!isSSR && !isMultiEnv ? { treeshake: getClientTreeshakeConfigForVite(viteMajorVersion) } : {},
643
+ ...!isSSR && !isMultiEnv ? { output: getClientOutputConfigForVite(viteMajorVersion) } : {}
644
+ })
645
+ },
532
646
  server: { cors: {
533
647
  preflightContinue: true,
534
648
  origin: /^https?:\/\/(?:(?:[^:]+\.)?localhost|127\.0\.0\.1|\[::1\])(?::\d+)?$/
@@ -537,7 +651,8 @@ function vinext(options = {}) {
537
651
  external: [
538
652
  "react",
539
653
  "react-dom",
540
- "react-dom/server"
654
+ "react-dom/server",
655
+ "ipaddr.js"
541
656
  ],
542
657
  noExternal: true
543
658
  } },
@@ -558,7 +673,18 @@ function vinext(options = {}) {
558
673
  ...viteMajorVersion >= 8 ? { oxc: { jsx: { runtime: "automatic" } } } : { esbuild: { jsx: "automatic" } },
559
674
  define: defines,
560
675
  ...nextConfig.basePath ? { base: nextConfig.basePath + "/" } : {},
561
- ...postcssOverride ? { css: { postcss: postcssOverride } } : {}
676
+ ...nextConfig.assetPrefix ? { experimental: { renderBuiltUrl: (filename) => {
677
+ const urlPrefix = resolveAssetUrlPrefix(nextConfig.assetPrefix);
678
+ const dirPrefix = resolveAssetsDir(nextConfig.assetPrefix) + "/";
679
+ return urlPrefix + (filename.startsWith(dirPrefix) ? filename.slice(dirPrefix.length) : filename.startsWith(`_next/static/`) ? filename.slice(ASSET_PREFIX_URL_DIR.length + 1) : filename);
680
+ } } } : {},
681
+ ...postcssOverride || sassPreprocessorOptions ? { css: {
682
+ ...postcssOverride ? { postcss: postcssOverride } : {},
683
+ ...sassPreprocessorOptions ? { preprocessorOptions: {
684
+ scss: sassPreprocessorOptions,
685
+ sass: sassPreprocessorOptions
686
+ } } : {}
687
+ } } : {}
562
688
  };
563
689
  const nextServerExternal = nextConfig?.serverExternalPackages ?? [];
564
690
  const userSsrExternal = Array.isArray(config.ssr?.external) ? [...config.ssr.external, ...nextServerExternal] : config.ssr?.external === true ? true : nextServerExternal;
@@ -603,11 +729,11 @@ function vinext(options = {}) {
603
729
  },
604
730
  ssr: {
605
731
  ...hasCloudflarePlugin || hasNitroPlugin ? {} : { resolve: {
606
- external: userSsrExternal === true ? true : [...userSsrExternal],
732
+ external: userSsrExternal === true ? true : [...userSsrExternal, "ipaddr.js"],
607
733
  ...userSsrExternal === true ? {} : { noExternal: true }
608
734
  } },
609
735
  optimizeDeps: {
610
- exclude: mergeOptimizeDepsExclude(incomingExclude, VINEXT_OPTIMIZE_DEPS_EXCLUDE, userSsrExternal === true ? SSR_EXTERNAL_REACT_ENTRIES : []),
736
+ exclude: mergeOptimizeDepsExclude(incomingExclude, VINEXT_OPTIMIZE_DEPS_EXCLUDE, ["ipaddr.js"], userSsrExternal === true ? SSR_EXTERNAL_REACT_ENTRIES : []),
611
737
  entries: optimizeEntries
612
738
  },
613
739
  build: {
@@ -672,10 +798,12 @@ function vinext(options = {}) {
672
798
  external: [
673
799
  "react",
674
800
  "react-dom",
675
- "react-dom/server"
801
+ "react-dom/server",
802
+ "ipaddr.js"
676
803
  ],
677
804
  noExternal: true
678
805
  },
806
+ optimizeDeps: { exclude: ["ipaddr.js"] },
679
807
  build: {
680
808
  outDir: "dist/server",
681
809
  ...withBuildBundlerOptions(viteMajorVersion, {
@@ -743,6 +871,7 @@ function vinext(options = {}) {
743
871
  const routes = await appRouter(appDir, nextConfig?.pageExtensions, fileMatcher);
744
872
  const metaRoutes = scanMetadataFiles(appDir);
745
873
  const globalErrorPath = findFileWithExts(appDir, "global-error", fileMatcher);
874
+ const globalNotFoundPath = findFileWithExts(appDir, "global-not-found", fileMatcher);
746
875
  rscClassificationManifest = collectRouteClassificationManifest(routes);
747
876
  return generateRscEntry(appDir, routes, middlewarePath, metaRoutes, globalErrorPath, nextConfig?.basePath, nextConfig?.trailingSlash, {
748
877
  redirects: nextConfig?.redirects,
@@ -751,17 +880,23 @@ function vinext(options = {}) {
751
880
  allowedOrigins: nextConfig?.serverActionsAllowedOrigins,
752
881
  allowedDevOrigins: nextConfig?.allowedDevOrigins,
753
882
  bodySizeLimit: nextConfig?.serverActionsBodySizeLimit,
883
+ assetPrefix: nextConfig?.assetPrefix,
754
884
  expireTime: nextConfig?.expireTime,
755
885
  i18n: nextConfig?.i18n,
756
886
  hasPagesDir,
757
- publicFiles: scanPublicFileRoutes(root)
887
+ publicFiles: scanPublicFileRoutes(root),
888
+ globalNotFoundPath
758
889
  }, instrumentationPath);
759
890
  }
760
891
  if (id === RESOLVED_ROOT_PARAMS) return generateRootParamsModule((hasAppDir ? await appRouter(appDir, nextConfig?.pageExtensions, fileMatcher) : []).flatMap((route) => route.rootParamNames ?? []));
761
892
  if (id === RESOLVED_APP_SSR_ENTRY && hasAppDir) return generateSsrEntry(hasPagesDir);
762
- if (id === RESOLVED_APP_BROWSER_ENTRY && hasAppDir) return generateBrowserEntry();
893
+ if (id === RESOLVED_APP_BROWSER_ENTRY && hasAppDir) {
894
+ const graph = await appRouteGraph(appDir, nextConfig?.pageExtensions, fileMatcher);
895
+ return generateBrowserEntry(graph.routes, graph.routeManifest);
896
+ }
763
897
  if (id.startsWith("\0virtual:vinext-google-fonts?")) return generateGoogleFontsVirtualModule(id, _fontGoogleShimPath);
764
898
  },
899
+ // @vitejs/plugin-rsc runs the RSC environment build in two phases:
765
900
  generateBundle(_options, bundle) {
766
901
  if (this.environment?.name !== "rsc") return;
767
902
  if (!rscClassificationManifest) return;
@@ -953,7 +1088,7 @@ function vinext(options = {}) {
953
1088
  if (typeof reasonOrHeaders === "string") headers = maybeHeaders;
954
1089
  else headers = reasonOrHeaders;
955
1090
  if (headers && typeof headers === "object" && !Array.isArray(headers)) {
956
- const timingKey = Object.keys(headers).find((k) => k.toLowerCase() === "x-vinext-timing");
1091
+ const timingKey = Object.keys(headers).find((k) => k.toLowerCase() === VINEXT_TIMING_HEADER);
957
1092
  if (timingKey) {
958
1093
  _parseTiming(headers[timingKey]);
959
1094
  delete headers[timingKey];
@@ -976,7 +1111,7 @@ function vinext(options = {}) {
976
1111
  });
977
1112
  next();
978
1113
  });
979
- server.middlewares.use(async (req, res, next) => {
1114
+ const handlePagesMiddleware = async (req, res, next) => {
980
1115
  try {
981
1116
  let url = req.url ?? "/";
982
1117
  if (!hasPagesDir) return next();
@@ -1021,7 +1156,7 @@ function vinext(options = {}) {
1021
1156
  if (pathname.includes(".") && !pathname.endsWith(".html")) return next();
1022
1157
  if (isOpenRedirectShaped(pathname)) {
1023
1158
  res.writeHead(404);
1024
- res.end("404 Not Found");
1159
+ res.end("This page could not be found");
1025
1160
  return;
1026
1161
  }
1027
1162
  pathname = pathname.replaceAll("\\", "/");
@@ -1074,7 +1209,7 @@ function vinext(options = {}) {
1074
1209
  };
1075
1210
  const applyMwRequestHeadersForExternalProxy = () => {
1076
1211
  if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
1077
- else delete req.headers["x-vinext-mw-ctx"];
1212
+ else delete req.headers[VINEXT_MW_CTX_HEADER];
1078
1213
  };
1079
1214
  if (middlewarePath) {
1080
1215
  const rawProto = process.env.VINEXT_TRUST_PROXY === "1" || (process.env.VINEXT_TRUSTED_HOSTS ?? "").split(",").some((h) => h.trim()) ? String(req.headers["x-forwarded-proto"] || "").split(",")[0].trim() : "";
@@ -1110,7 +1245,7 @@ function vinext(options = {}) {
1110
1245
  const currentRequestHeaders = new Headers();
1111
1246
  for (const [key, value] of Object.entries(req.headers)) if (Array.isArray(value)) currentRequestHeaders.set(key, value.join(", "));
1112
1247
  else if (value !== void 0) currentRequestHeaders.set(key, value);
1113
- middlewareRequestHeaders = buildRequestHeadersFromMiddlewareResponse(currentRequestHeaders, result.responseHeaders);
1248
+ middlewareRequestHeaders = buildRequestHeadersFromMiddlewareResponse(currentRequestHeaders, result.responseHeaders, { preserveCredentialHeaders: Boolean(result.rewriteUrl && isExternalUrl(result.rewriteUrl)) });
1114
1249
  if (middlewareRequestHeaders && !hasAppDir) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
1115
1250
  if (hasAppDir) {
1116
1251
  deferredMwResponseHeaders = [];
@@ -1121,15 +1256,16 @@ function vinext(options = {}) {
1121
1256
  url = result.rewriteUrl;
1122
1257
  req.url = url;
1123
1258
  }
1124
- if (result.rewriteStatus) req.__vinextRewriteStatus = result.rewriteStatus;
1259
+ const middlewareStatus = result.status ?? result.rewriteStatus;
1260
+ if (middlewareStatus !== void 0) req.__vinextMiddlewareStatus = middlewareStatus;
1125
1261
  if (hasAppDir) {
1126
1262
  const mwCtxEntries = [];
1127
1263
  if (result.responseHeaders) {
1128
1264
  for (const [key, value] of result.responseHeaders) if (key !== "x-middleware-next" && key !== "x-middleware-rewrite") mwCtxEntries.push([key, value]);
1129
1265
  }
1130
- req.headers["x-vinext-mw-ctx"] = JSON.stringify({
1266
+ req.headers[VINEXT_MW_CTX_HEADER] = JSON.stringify({
1131
1267
  h: mwCtxEntries,
1132
- s: result.rewriteStatus ?? null,
1268
+ s: middlewareStatus ?? null,
1133
1269
  r: result.rewriteUrl ?? null
1134
1270
  });
1135
1271
  }
@@ -1159,9 +1295,13 @@ function vinext(options = {}) {
1159
1295
  return;
1160
1296
  }
1161
1297
  const routes = await pagesRouter(pagesDir, nextConfig?.pageExtensions, fileMatcher);
1162
- if (nextConfig?.rewrites.afterFiles.length) {
1298
+ let match = matchRoute(resolvedUrl.split("?")[0], routes);
1299
+ if ((!match || match.route.isDynamic) && nextConfig?.rewrites.afterFiles.length) {
1163
1300
  const afterRewrite = applyRewrites(resolvedUrl.split("?")[0], nextConfig.rewrites.afterFiles, reqCtx);
1164
- if (afterRewrite) resolvedUrl = afterRewrite;
1301
+ if (afterRewrite) {
1302
+ resolvedUrl = afterRewrite;
1303
+ match = matchRoute(resolvedUrl.split("?")[0], routes);
1304
+ }
1165
1305
  }
1166
1306
  if (isExternalUrl(resolvedUrl)) {
1167
1307
  applyDeferredMwHeaders();
@@ -1170,8 +1310,8 @@ function vinext(options = {}) {
1170
1310
  return;
1171
1311
  }
1172
1312
  const handler = createSSRHandler(server, getPagesRunner(), routes, pagesDir, nextConfig?.i18n, fileMatcher, nextConfig?.basePath ?? "", nextConfig?.trailingSlash ?? false);
1173
- const mwStatus = req.__vinextRewriteStatus;
1174
- if (matchRoute(resolvedUrl.split("?")[0], routes)) {
1313
+ const mwStatus = req.__vinextMiddlewareStatus;
1314
+ if (match) {
1175
1315
  applyDeferredMwHeaders();
1176
1316
  if (middlewareRequestHeaders) applyRequestHeadersToNodeRequest(middlewareRequestHeaders);
1177
1317
  await handler(req, res, resolvedUrl, mwStatus);
@@ -1198,6 +1338,9 @@ function vinext(options = {}) {
1198
1338
  } catch (e) {
1199
1339
  next(e);
1200
1340
  }
1341
+ };
1342
+ server.middlewares.use((req, res, next) => {
1343
+ handlePagesMiddleware(req, res, next);
1201
1344
  });
1202
1345
  };
1203
1346
  }
@@ -1519,22 +1662,26 @@ function vinext(options = {}) {
1519
1662
  if (!options.precompress && process.env.VINEXT_PRECOMPRESS !== "1") return;
1520
1663
  const outDir = outputOptions.dir;
1521
1664
  if (!outDir) return;
1522
- const assetsDir = path.join(outDir, "assets");
1665
+ const assetsSubdir = resolveAssetsDir(nextConfig.assetPrefix);
1666
+ const assetsDir = path.join(outDir, assetsSubdir);
1523
1667
  if (!fs.existsSync(assetsDir)) return;
1524
1668
  const isTTY = process.stderr.isTTY;
1525
1669
  let lastLineLen = 0;
1526
1670
  pendingPrecompressError = null;
1527
1671
  pendingPrecompress = (async () => {
1528
- const result = await precompressAssets(outDir, (completed, total, file) => {
1529
- if (!isTTY) return;
1530
- const pct = total > 0 ? Math.floor(completed / total * 100) : 0;
1531
- const bar = `[${"█".repeat(Math.floor(pct / 5))}${" ".repeat(20 - Math.floor(pct / 5))}]`;
1532
- const maxFile = 30;
1533
- const fileLabel = file.length > maxFile ? "…" + file.slice(-(maxFile - 1)) : file;
1534
- const line = `Compressing assets... ${bar} ${String(completed).padStart(String(total).length)}/${total} ${fileLabel}`;
1535
- const padded = line.padEnd(lastLineLen);
1536
- lastLineLen = line.length;
1537
- process.stderr.write(`\r${padded}`);
1672
+ const result = await precompressAssets(outDir, {
1673
+ assetsDir: assetsSubdir,
1674
+ onProgress: (completed, total, file) => {
1675
+ if (!isTTY) return;
1676
+ const pct = total > 0 ? Math.floor(completed / total * 100) : 0;
1677
+ const bar = `[${"█".repeat(Math.floor(pct / 5))}${" ".repeat(20 - Math.floor(pct / 5))}]`;
1678
+ const maxFile = 30;
1679
+ const fileLabel = file.length > maxFile ? "…" + file.slice(-(maxFile - 1)) : file;
1680
+ const line = `Compressing assets... ${bar} ${String(completed).padStart(String(total).length)}/${total} ${fileLabel}`;
1681
+ const padded = line.padEnd(lastLineLen);
1682
+ lastLineLen = line.length;
1683
+ process.stderr.write(`\r${padded}`);
1684
+ }
1538
1685
  });
1539
1686
  if (isTTY) process.stderr.write(`\r${" ".repeat(lastLineLen)}\r`);
1540
1687
  if (result.filesCompressed > 0) {
@@ -1624,10 +1771,11 @@ function vinext(options = {}) {
1624
1771
  const workerEntry = path.join(workerOutDir, "index.js");
1625
1772
  if (!fs.existsSync(workerEntry)) return;
1626
1773
  if (!clientEntryFile) {
1627
- const assetsDir = path.join(clientDir, "assets");
1774
+ const assetsSubdir = resolveAssetsDir(nextConfig?.assetPrefix);
1775
+ const assetsDir = path.join(clientDir, assetsSubdir);
1628
1776
  if (fs.existsSync(assetsDir)) {
1629
1777
  const entry = fs.readdirSync(assetsDir).find((f) => (f.includes("vinext-client-entry") || f.includes("vinext-app-browser-entry")) && f.endsWith(".js"));
1630
- if (entry) clientEntryFile = manifestFileWithBase("assets/" + entry, clientBase);
1778
+ if (entry) clientEntryFile = manifestFileWithBase(`${assetsSubdir}/${entry}`, clientBase);
1631
1779
  }
1632
1780
  }
1633
1781
  if (clientEntryFile || ssrManifestData || lazyChunksData) {
@@ -1704,7 +1852,10 @@ function vinext(options = {}) {
1704
1852
  }
1705
1853
  }
1706
1854
  ];
1707
- if (rscPluginPromise) plugins.push(rscPluginPromise);
1855
+ if (rscPluginPromise) {
1856
+ plugins.push(rscPluginPromise);
1857
+ plugins.push(createRscClientReferenceLoadersPlugin());
1858
+ }
1708
1859
  return plugins;
1709
1860
  }
1710
1861
  /**