vinext 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/README.md +12 -9
  2. package/dist/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/build/action-owner-manifest.d.ts +3 -2
  4. package/dist/build/action-owner-manifest.js +18 -2
  5. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  6. package/dist/build/app-page-static-eligibility.js +80 -13
  7. package/dist/build/clean-output.d.ts +2 -1
  8. package/dist/build/client-build-config.d.ts +77 -6
  9. package/dist/build/client-build-config.js +176 -12
  10. package/dist/build/client-reference-async.d.ts +48 -0
  11. package/dist/build/client-reference-async.js +123 -0
  12. package/dist/build/client-reference-chunks.d.ts +32 -0
  13. package/dist/build/client-reference-chunks.js +111 -0
  14. package/dist/build/client-reference-groups.d.ts +171 -0
  15. package/dist/build/client-reference-groups.js +572 -0
  16. package/dist/build/css-url-assets.d.ts +2 -1
  17. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  18. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  19. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  20. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  21. package/dist/build/google-fonts/validate.d.ts +2 -1
  22. package/dist/build/inline-css.d.ts +2 -1
  23. package/dist/build/layout-classification.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +33 -1
  25. package/dist/build/module-dependency-cache.js +51 -1
  26. package/dist/build/next-client-runtime-manifests.d.ts +12 -2
  27. package/dist/build/next-client-runtime-manifests.js +19 -4
  28. package/dist/build/nitro-public-files.d.ts +24 -0
  29. package/dist/build/nitro-public-files.js +60 -0
  30. package/dist/build/pages-client-assets-module.js +1 -1
  31. package/dist/build/precompress.d.ts +2 -1
  32. package/dist/build/precompress.js +1 -1
  33. package/dist/build/prerender-paths.d.ts +2 -1
  34. package/dist/build/prerender-paths.js +5 -2
  35. package/dist/build/prerender-phase.d.ts +2 -1
  36. package/dist/build/prerender-server-pool.js +1 -1
  37. package/dist/build/prerender.d.ts +3 -2
  38. package/dist/build/prerender.js +5 -4
  39. package/dist/build/report.d.ts +2 -1
  40. package/dist/build/route-classification-injector.d.ts +2 -1
  41. package/dist/build/route-classification-manifest.d.ts +2 -1
  42. package/dist/build/run-prerender.d.ts +2 -1
  43. package/dist/build/server-actions-encryption-key.d.ts +24 -0
  44. package/dist/build/server-actions-encryption-key.js +101 -0
  45. package/dist/build/ssr-manifest.d.ts +3 -0
  46. package/dist/build/ssr-manifest.js +34 -2
  47. package/dist/build/standalone.d.ts +2 -1
  48. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  49. package/dist/cache.js +1 -2
  50. package/dist/check.d.ts +2 -1
  51. package/dist/check.js +4 -0
  52. package/dist/cli-args.d.ts +2 -1
  53. package/dist/cli.js +2 -0
  54. package/dist/client/client-redirect-matcher.js +2 -1
  55. package/dist/client/client-redirects.d.ts +4 -3
  56. package/dist/client/client-redirects.js +2 -1
  57. package/dist/client/client-rewrite-params.d.ts +9 -0
  58. package/dist/client/client-rewrite-params.js +20 -0
  59. package/dist/client/client-rewrites.d.ts +2 -1
  60. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  61. package/dist/client/dev-error-overlay.js +2 -1
  62. package/dist/client/index.js +1 -2
  63. package/dist/client/instrumentation-client-state.js +5 -5
  64. package/dist/client/navigation-runtime.d.ts +28 -3
  65. package/dist/client/navigation-runtime.js +42 -11
  66. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  67. package/dist/client/vinext-next-data.d.ts +25 -2
  68. package/dist/client/window-next.d.ts +2 -1
  69. package/dist/config/config-matchers.d.ts +27 -41
  70. package/dist/config/config-matchers.js +293 -270
  71. package/dist/config/config-source.d.ts +34 -0
  72. package/dist/config/config-source.js +141 -0
  73. package/dist/config/dotenv.d.ts +2 -1
  74. package/dist/config/header-params.d.ts +29 -0
  75. package/dist/config/header-params.js +106 -0
  76. package/dist/config/next-config.d.ts +20 -6
  77. package/dist/config/next-config.js +149 -11
  78. package/dist/config/tsconfig-paths.d.ts +2 -1
  79. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  80. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  81. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  82. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  83. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  84. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  105. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  106. package/dist/entries/app-browser-entry.d.ts +34 -6
  107. package/dist/entries/app-browser-entry.js +103 -40
  108. package/dist/entries/app-rsc-entry.d.ts +4 -1
  109. package/dist/entries/app-rsc-entry.js +131 -66
  110. package/dist/entries/app-rsc-manifest.d.ts +12 -1
  111. package/dist/entries/app-rsc-manifest.js +73 -1
  112. package/dist/entries/app-ssr-entry.d.ts +4 -1
  113. package/dist/entries/app-ssr-entry.js +9 -2
  114. package/dist/entries/pages-client-entry.d.ts +1 -0
  115. package/dist/entries/pages-client-entry.js +6 -6
  116. package/dist/entries/pages-entry-helpers.js +1 -2
  117. package/dist/entries/pages-server-entry.d.ts +2 -1
  118. package/dist/entries/pages-server-entry.js +18 -15
  119. package/dist/entries/runtime-entry-module.d.ts +1 -0
  120. package/dist/entries/runtime-entry-module.js +4 -1
  121. package/dist/image/image-adapters-virtual.d.ts +2 -1
  122. package/dist/index.d.ts +11 -0
  123. package/dist/index.js +340 -116
  124. package/dist/init.js +17 -0
  125. package/dist/plugins/client-compile-hints.d.ts +30 -0
  126. package/dist/plugins/client-compile-hints.js +88 -0
  127. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  128. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  129. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  130. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  131. package/dist/plugins/environment.d.ts +2 -1
  132. package/dist/plugins/fonts.js +9 -12
  133. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  134. package/dist/plugins/import-meta-url.d.ts +2 -1
  135. package/dist/plugins/og-assets.d.ts +2 -1
  136. package/dist/plugins/og-assets.js +2 -3
  137. package/dist/plugins/optimize-imports.d.ts +27 -3
  138. package/dist/plugins/optimize-imports.js +106 -20
  139. package/dist/plugins/pages-node-externals.d.ts +2 -1
  140. package/dist/plugins/remove-console.d.ts +2 -1
  141. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  142. package/dist/plugins/rsc-client-reference-loaders.d.ts +53 -1
  143. package/dist/plugins/rsc-client-reference-loaders.js +447 -27
  144. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  145. package/dist/plugins/sass.d.ts +2 -1
  146. package/dist/plugins/strip-server-exports.d.ts +2 -1
  147. package/dist/plugins/styled-jsx.d.ts +2 -1
  148. package/dist/plugins/transform-result.d.ts +2 -1
  149. package/dist/plugins/typeof-window.d.ts +2 -1
  150. package/dist/plugins/use-cache-callable.d.ts +5 -0
  151. package/dist/plugins/use-cache-callable.js +30 -8
  152. package/dist/plugins/worker-image-imports.d.ts +1 -0
  153. package/dist/plugins/worker-image-imports.js +2 -2
  154. package/dist/plugins/worker-use-server.d.ts +2 -1
  155. package/dist/routing/app-route-graph.d.ts +41 -1
  156. package/dist/routing/app-route-graph.js +122 -50
  157. package/dist/routing/browser-route-manifest.d.ts +44 -0
  158. package/dist/routing/browser-route-manifest.js +195 -0
  159. package/dist/routing/hashed-route-patterns.d.ts +4 -0
  160. package/dist/routing/hashed-route-patterns.js +22 -0
  161. package/dist/routing/optimistic-route-trie.d.ts +28 -0
  162. package/dist/routing/optimistic-route-trie.js +102 -0
  163. package/dist/routing/route-matching.d.ts +2 -1
  164. package/dist/routing/route-pattern.d.ts +2 -1
  165. package/dist/routing/route-validation.d.ts +6 -1
  166. package/dist/routing/route-validation.js +26 -10
  167. package/dist/server/accept-encoding.d.ts +2 -1
  168. package/dist/server/app-action-forwarding.d.ts +10 -1
  169. package/dist/server/app-action-forwarding.js +15 -1
  170. package/dist/server/app-bfcache-identity.d.ts +2 -1
  171. package/dist/server/app-browser-action-result.d.ts +2 -1
  172. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
  173. package/dist/server/app-browser-entry.js +175 -64
  174. package/dist/server/app-browser-error.d.ts +5 -2
  175. package/dist/server/app-browser-error.js +7 -2
  176. package/dist/server/app-browser-history-controller.d.ts +2 -1
  177. package/dist/server/app-browser-hydration.d.ts +2 -1
  178. package/dist/server/app-browser-interception-context.d.ts +4 -3
  179. package/dist/server/app-browser-mpa-navigation.d.ts +1 -0
  180. package/dist/server/app-browser-mpa-navigation.js +6 -5
  181. package/dist/server/app-browser-navigation-controller.d.ts +17 -6
  182. package/dist/server/app-browser-navigation-controller.js +103 -36
  183. package/dist/server/app-browser-popstate.d.ts +2 -1
  184. package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
  185. package/dist/server/app-browser-server-action-client.d.ts +2 -1
  186. package/dist/server/app-browser-state.d.ts +2 -2
  187. package/dist/server/app-browser-state.js +1 -1
  188. package/dist/server/app-browser-stream.d.ts +2 -1
  189. package/dist/server/app-browser-visible-commit.d.ts +6 -5
  190. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  191. package/dist/server/app-client-reference-manifest.js +46 -0
  192. package/dist/server/app-client-reference-preloader.d.ts +45 -2
  193. package/dist/server/app-client-reference-preloader.js +48 -10
  194. package/dist/server/app-elements-wire.d.ts +2 -1
  195. package/dist/server/app-elements.d.ts +2 -0
  196. package/dist/server/app-elements.js +3 -1
  197. package/dist/server/app-fallback-renderer.d.ts +9 -2
  198. package/dist/server/app-fallback-renderer.js +6 -2
  199. package/dist/server/app-history-state.d.ts +2 -1
  200. package/dist/server/app-inline-css-client.d.ts +2 -1
  201. package/dist/server/app-layout-param-observation.d.ts +2 -1
  202. package/dist/server/app-metadata-tracing.d.ts +2 -1
  203. package/dist/server/app-middleware.d.ts +6 -0
  204. package/dist/server/app-middleware.js +8 -10
  205. package/dist/server/app-optimistic-routing.d.ts +26 -11
  206. package/dist/server/app-optimistic-routing.js +38 -96
  207. package/dist/server/app-page-boundary-render.d.ts +20 -2
  208. package/dist/server/app-page-boundary-render.js +229 -39
  209. package/dist/server/app-page-boundary.d.ts +34 -5
  210. package/dist/server/app-page-boundary.js +40 -7
  211. package/dist/server/app-page-cache-finalizer.d.ts +2 -1
  212. package/dist/server/app-page-cache-finalizer.js +1 -1
  213. package/dist/server/app-page-cache-render.d.ts +10 -2
  214. package/dist/server/app-page-cache-render.js +15 -2
  215. package/dist/server/app-page-cache.js +2 -2
  216. package/dist/server/app-page-dispatch.d.ts +34 -1
  217. package/dist/server/app-page-dispatch.js +165 -34
  218. package/dist/server/app-page-element-builder.d.ts +17 -1
  219. package/dist/server/app-page-element-builder.js +187 -66
  220. package/dist/server/app-page-execution.d.ts +28 -1
  221. package/dist/server/app-page-execution.js +114 -5
  222. package/dist/server/app-page-head.d.ts +95 -3
  223. package/dist/server/app-page-head.js +307 -152
  224. package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
  225. package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
  226. package/dist/server/app-page-method.d.ts +2 -1
  227. package/dist/server/app-page-probe.d.ts +2 -1
  228. package/dist/server/app-page-render-identity.d.ts +2 -1
  229. package/dist/server/app-page-render.d.ts +7 -1
  230. package/dist/server/app-page-render.js +38 -11
  231. package/dist/server/app-page-request.d.ts +14 -1
  232. package/dist/server/app-page-request.js +1 -1
  233. package/dist/server/app-page-route-wiring.d.ts +52 -2
  234. package/dist/server/app-page-route-wiring.js +197 -47
  235. package/dist/server/app-page-rsc-render-status.d.ts +3 -1
  236. package/dist/server/app-page-rsc-render-status.js +1 -0
  237. package/dist/server/app-page-search-params-observation.d.ts +8 -6
  238. package/dist/server/app-page-search-params-observation.js +16 -11
  239. package/dist/server/app-page-segment-plan.d.ts +2 -1
  240. package/dist/server/app-page-stream.d.ts +38 -1
  241. package/dist/server/app-page-stream.js +24 -4
  242. package/dist/server/app-pages-bridge.d.ts +4 -2
  243. package/dist/server/app-pages-bridge.js +11 -7
  244. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  245. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  246. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  247. package/dist/server/app-prerender-static-params.d.ts +2 -1
  248. package/dist/server/app-prerender-static-params.js +3 -2
  249. package/dist/server/app-render-dependency.d.ts +11 -1
  250. package/dist/server/app-render-dependency.js +65 -6
  251. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  252. package/dist/server/app-request-stage-independent-entry.js +2 -2
  253. package/dist/server/app-response-stage-entry.d.ts +2 -1
  254. package/dist/server/app-response-stage-entry.js +3 -3
  255. package/dist/server/app-route-handler-cache.d.ts +2 -1
  256. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  257. package/dist/server/app-route-handler-dispatch.js +4 -2
  258. package/dist/server/app-route-handler-execution.d.ts +4 -1
  259. package/dist/server/app-route-handler-execution.js +9 -2
  260. package/dist/server/app-route-handler-middleware-context.d.ts +2 -1
  261. package/dist/server/app-route-handler-middleware-context.js +3 -3
  262. package/dist/server/app-route-handler-response.d.ts +4 -2
  263. package/dist/server/app-route-handler-response.js +2 -2
  264. package/dist/server/app-route-handler-runtime.d.ts +4 -1
  265. package/dist/server/app-route-handler-runtime.js +20 -3
  266. package/dist/server/app-route-module-loader.d.ts +18 -1
  267. package/dist/server/app-route-module-loader.js +15 -6
  268. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  269. package/dist/server/app-route-tree.d.ts +20 -0
  270. package/dist/server/app-route-tree.js +18 -0
  271. package/dist/server/app-router-entry.js +2 -2
  272. package/dist/server/app-rsc-combined-handler.js +8 -1
  273. package/dist/server/app-rsc-error-handler.d.ts +2 -1
  274. package/dist/server/app-rsc-errors.d.ts +9 -1
  275. package/dist/server/app-rsc-errors.js +9 -2
  276. package/dist/server/app-rsc-handler.d.ts +6 -2
  277. package/dist/server/app-rsc-handler.js +152 -140
  278. package/dist/server/app-rsc-response-finalizer.d.ts +7 -1
  279. package/dist/server/app-rsc-response-finalizer.js +4 -1
  280. package/dist/server/app-rsc-response-stage.js +3 -1
  281. package/dist/server/app-rsc-route-matching.d.ts +39 -1
  282. package/dist/server/app-rsc-route-matching.js +25 -1
  283. package/dist/server/app-segment-config.d.ts +2 -1
  284. package/dist/server/app-segment-config.js +1 -14
  285. package/dist/server/app-server-action-execution.d.ts +25 -7
  286. package/dist/server/app-server-action-execution.js +53 -59
  287. package/dist/server/app-ssr-entry.d.ts +12 -0
  288. package/dist/server/app-ssr-entry.js +104 -48
  289. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  290. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  291. package/dist/server/app-ssr-stream.d.ts +29 -10
  292. package/dist/server/app-ssr-stream.js +311 -67
  293. package/dist/server/app-static-generation.d.ts +2 -1
  294. package/dist/server/app-streamed-client-references.d.ts +39 -0
  295. package/dist/server/app-streamed-client-references.js +156 -0
  296. package/dist/server/app-visited-response-cache.d.ts +2 -1
  297. package/dist/server/app-worker-stages.d.ts +2 -1
  298. package/dist/server/artifact-compatibility.d.ts +2 -1
  299. package/dist/server/bfcache-identity.d.ts +2 -1
  300. package/dist/server/cache-headers.d.ts +2 -1
  301. package/dist/server/cacheability-request.d.ts +2 -1
  302. package/dist/server/client-reuse-manifest.d.ts +2 -1
  303. package/dist/server/config-headers.d.ts +2 -1
  304. package/dist/server/config-headers.js +12 -3
  305. package/dist/server/csp.d.ts +2 -1
  306. package/dist/server/default-global-not-found-module.d.ts +2 -1
  307. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  308. package/dist/server/default-http-access-fallback-modules.js +31 -0
  309. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  310. package/dist/server/defer-until-stream-consumed.js +154 -21
  311. package/dist/server/dev-lockfile.d.ts +32 -2
  312. package/dist/server/dev-lockfile.js +46 -2
  313. package/dist/server/dev-module-runner.d.ts +2 -1
  314. package/dist/server/dev-server.js +10 -3
  315. package/dist/server/fetch-handler.js +1 -2
  316. package/dist/server/file-based-metadata.d.ts +2 -1
  317. package/dist/server/framework-tracer.d.ts +2 -1
  318. package/dist/server/html.d.ts +1 -0
  319. package/dist/server/html.js +19 -1
  320. package/dist/server/http-conditional.d.ts +2 -1
  321. package/dist/server/http-error-responses.d.ts +2 -1
  322. package/dist/server/implicit-tags.d.ts +2 -1
  323. package/dist/server/isolate-shared-promise.d.ts +10 -0
  324. package/dist/server/isolate-shared-promise.js +33 -0
  325. package/dist/server/isr-cache.js +3 -2
  326. package/dist/server/metadata-route-build-data.d.ts +2 -1
  327. package/dist/server/metadata-route-build-data.js +1 -1
  328. package/dist/server/metadata-route-response.d.ts +2 -1
  329. package/dist/server/metadata-route-response.js +1 -1
  330. package/dist/server/metadata-routes.d.ts +2 -1
  331. package/dist/server/middleware-matcher-pattern.d.ts +0 -1
  332. package/dist/server/middleware-matcher-pattern.js +11 -140
  333. package/dist/server/middleware-matcher.js +5 -6
  334. package/dist/server/middleware-response-headers.d.ts +31 -0
  335. package/dist/server/middleware-response-headers.js +57 -1
  336. package/dist/server/middleware-runtime.d.ts +2 -1
  337. package/dist/server/middleware-runtime.js +26 -13
  338. package/dist/server/navigation-planner.d.ts +2 -2
  339. package/dist/server/navigation-trace.d.ts +2 -1
  340. package/dist/server/next-error-digest.d.ts +2 -1
  341. package/dist/server/nitro-public-files-plugin.d.ts +39 -0
  342. package/dist/server/nitro-public-files-plugin.js +106 -0
  343. package/dist/server/nitro-public-files.d.ts +22 -0
  344. package/dist/server/nitro-public-files.js +39 -0
  345. package/dist/server/opentelemetry-api.d.ts +2 -1
  346. package/dist/server/operation-token.d.ts +2 -1
  347. package/dist/server/pages-api-route.d.ts +2 -1
  348. package/dist/server/pages-asset-tags.d.ts +7 -1
  349. package/dist/server/pages-asset-tags.js +9 -2
  350. package/dist/server/pages-body-parser-config.d.ts +2 -1
  351. package/dist/server/pages-client-assets.d.ts +8 -1
  352. package/dist/server/pages-data-route.d.ts +2 -1
  353. package/dist/server/pages-document-asset-props.d.ts +2 -1
  354. package/dist/server/pages-document-initial-props.d.ts +2 -1
  355. package/dist/server/pages-execution-tracing.d.ts +2 -1
  356. package/dist/server/pages-execution-tracing.js +1 -1
  357. package/dist/server/pages-get-initial-props.d.ts +2 -1
  358. package/dist/server/pages-i18n.d.ts +18 -0
  359. package/dist/server/pages-i18n.js +18 -2
  360. package/dist/server/pages-node-compat.d.ts +5 -3
  361. package/dist/server/pages-node-compat.js +35 -16
  362. package/dist/server/pages-page-data.d.ts +7 -1
  363. package/dist/server/pages-page-data.js +35 -12
  364. package/dist/server/pages-page-handler.d.ts +3 -2
  365. package/dist/server/pages-page-handler.js +16 -7
  366. package/dist/server/pages-page-method.d.ts +2 -1
  367. package/dist/server/pages-page-response.d.ts +2 -1
  368. package/dist/server/pages-preview.d.ts +2 -1
  369. package/dist/server/pages-readiness.d.ts +2 -1
  370. package/dist/server/pages-request-pipeline.d.ts +8 -2
  371. package/dist/server/pages-request-pipeline.js +35 -40
  372. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  373. package/dist/server/pages-request-stage-entry.js +16 -6
  374. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  375. package/dist/server/pages-response-stage-entry.js +1 -1
  376. package/dist/server/pages-revalidate.js +1 -0
  377. package/dist/server/pages-route-data-kind.d.ts +2 -1
  378. package/dist/server/pages-router-entry.js +1 -1
  379. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  380. package/dist/server/prerender-route-params.d.ts +2 -1
  381. package/dist/server/prod-server.d.ts +2 -2
  382. package/dist/server/prod-server.js +80 -36
  383. package/dist/server/proxy-trust.d.ts +6 -0
  384. package/dist/server/proxy-trust.js +12 -6
  385. package/dist/server/request-log.d.ts +2 -1
  386. package/dist/server/request-pipeline.d.ts +5 -0
  387. package/dist/server/request-pipeline.js +12 -1
  388. package/dist/server/request-tracing.d.ts +2 -1
  389. package/dist/server/request-tracing.js +1 -1
  390. package/dist/server/response-start-tracing.js +7 -29
  391. package/dist/server/rsc-render-stream.d.ts +4 -0
  392. package/dist/server/rsc-render-stream.js +25 -0
  393. package/dist/server/seed-cache.d.ts +2 -1
  394. package/dist/server/seed-cache.js +1 -1
  395. package/dist/server/server-reference-loader.js +10 -1
  396. package/dist/server/static-file-cache.d.ts +2 -1
  397. package/dist/server/static-file-cache.js +16 -3
  398. package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
  399. package/dist/server/worker-revalidation-context.d.ts +2 -1
  400. package/dist/server/worker-stages.d.ts +2 -1
  401. package/dist/server/worker-utils.js +1 -1
  402. package/dist/shims/app.d.ts +2 -1
  403. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  404. package/dist/shims/cache-handler.d.ts +8 -3
  405. package/dist/shims/cache-handler.js +32 -11
  406. package/dist/shims/cache-request-state.d.ts +40 -3
  407. package/dist/shims/cache-request-state.js +70 -5
  408. package/dist/shims/cache-runtime.js +47 -19
  409. package/dist/shims/cache.d.ts +2 -2
  410. package/dist/shims/cache.js +17 -8
  411. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  412. package/dist/shims/caught-not-found-boundaries.js +48 -0
  413. package/dist/shims/cdn-purge-routes.d.ts +25 -0
  414. package/dist/shims/cdn-purge-routes.js +77 -0
  415. package/dist/shims/client-locale.js +2 -1
  416. package/dist/shims/client-page-root.d.ts +2 -1
  417. package/dist/shims/config.d.ts +2 -1
  418. package/dist/shims/default-forbidden.d.ts +4 -0
  419. package/dist/shims/default-forbidden.js +18 -0
  420. package/dist/shims/default-not-found.d.ts +0 -5
  421. package/dist/shims/default-not-found.js +5 -41
  422. package/dist/shims/default-unauthorized.d.ts +4 -0
  423. package/dist/shims/default-unauthorized.js +18 -0
  424. package/dist/shims/dynamic.js +17 -4
  425. package/dist/shims/error-boundary.d.ts +39 -3
  426. package/dist/shims/error-boundary.js +31 -16
  427. package/dist/shims/font-google.js +1 -2
  428. package/dist/shims/font-utils.d.ts +3 -2
  429. package/dist/shims/font-utils.js +5 -3
  430. package/dist/shims/form.js +9 -4
  431. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  432. package/dist/shims/http-access-error-fallback.js +47 -0
  433. package/dist/shims/image-props.d.ts +93 -0
  434. package/dist/shims/image-props.js +323 -0
  435. package/dist/shims/image.d.ts +4 -39
  436. package/dist/shims/image.js +4 -319
  437. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  438. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  439. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  440. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  441. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  442. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  443. package/dist/shims/internal/client-reference-loader.js +91 -0
  444. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  445. package/dist/shims/internal/cookies.js +1 -2
  446. package/dist/shims/internal/headers-state.d.ts +9 -0
  447. package/dist/shims/internal/headers-state.js +19 -2
  448. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -2
  449. package/dist/shims/internal/hybrid-client-route-owner-direct.js +31 -14
  450. package/dist/shims/internal/hybrid-client-route-owner.js +8 -8
  451. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  452. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  453. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  454. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  455. package/dist/shims/link.js +198 -53
  456. package/dist/shims/metadata.d.ts +32 -11
  457. package/dist/shims/metadata.js +88 -26
  458. package/dist/shims/navigation-errors.d.ts +2 -1
  459. package/dist/shims/navigation.d.ts +23 -3
  460. package/dist/shims/navigation.js +91 -25
  461. package/dist/shims/og.js +35 -10
  462. package/dist/shims/pages-router-runtime.d.ts +2 -1
  463. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  464. package/dist/shims/request-context.d.ts +13 -0
  465. package/dist/shims/router.js +33 -43
  466. package/dist/shims/server.d.ts +31 -4
  467. package/dist/shims/server.js +58 -10
  468. package/dist/shims/thenable-params.d.ts +6 -1
  469. package/dist/shims/thenable-params.js +11 -2
  470. package/dist/shims/unified-request-context.d.ts +5 -0
  471. package/dist/shims/unified-request-context.js +5 -3
  472. package/dist/typegen.d.ts +2 -1
  473. package/dist/utils/asset-prefix.d.ts +7 -0
  474. package/dist/utils/asset-prefix.js +10 -1
  475. package/dist/utils/client-build-manifest.d.ts +4 -1
  476. package/dist/utils/client-build-manifest.js +20 -6
  477. package/dist/utils/client-entry-manifest.d.ts +13 -0
  478. package/dist/utils/client-entry-manifest.js +20 -1
  479. package/dist/utils/client-reference-chunks.d.ts +45 -0
  480. package/dist/utils/client-reference-chunks.js +30 -0
  481. package/dist/utils/client-runtime-metadata.d.ts +10 -1
  482. package/dist/utils/client-runtime-metadata.js +53 -9
  483. package/dist/utils/compare.d.ts +9 -0
  484. package/dist/utils/compare.js +15 -1
  485. package/dist/utils/lazy-chunks.d.ts +18 -0
  486. package/dist/utils/lazy-chunks.js +27 -1
  487. package/dist/utils/manifest-paths.d.ts +14 -0
  488. package/dist/utils/manifest-paths.js +22 -1
  489. package/dist/utils/middleware-request-headers.d.ts +2 -1
  490. package/dist/utils/path-to-regexp.d.ts +21 -0
  491. package/dist/{server/middleware-path-to-regexp.js → utils/path-to-regexp.js} +14 -11
  492. package/dist/utils/plugin-react-version.d.ts +15 -0
  493. package/dist/utils/plugin-react-version.js +64 -0
  494. package/dist/utils/project.d.ts +2 -1
  495. package/dist/utils/project.js +9 -1
  496. package/dist/utils/public-routes.d.ts +2 -0
  497. package/dist/utils/public-routes.js +18 -7
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/sorted-array.d.ts +2 -1
  500. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  501. package/package.json +5 -5
  502. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  503. package/dist/server/default-not-found-module.d.ts +0 -19
  504. package/dist/server/default-not-found-module.js +0 -18
  505. package/dist/server/middleware-path-to-regexp.d.ts +0 -13
  506. package/dist/server/rsc-stream-hints.d.ts +0 -21
  507. package/dist/server/rsc-stream-hints.js +0 -227
  508. package/dist/utils/regex-safety.d.ts +0 -17
  509. package/dist/utils/regex-safety.js +0 -789
@@ -1,3 +1,35 @@
1
1
  //#region src/build/module-dependency-cache.d.ts
2
2
  export declare function createModuleDependencyCache<T>(collect: (moduleId: string) => Promise<T>): (moduleId: string) => Promise<T>;
3
- //#endregion
3
+ export type ModuleDependencyEntry<T> = {
4
+ dependencies: T[];
5
+ /** Files the module's imports resolved to, without Vite queries. */
6
+ resolvedFiles: string[];
7
+ /**
8
+ * False when an import did not resolve. Vite only caches modules that
9
+ * transformed, so it retries those imports on every request. So does the store.
10
+ */
11
+ cacheable: boolean;
12
+ };
13
+ type FileEvent = {
14
+ files: readonly string[];
15
+ event: "create" | "update" | "delete";
16
+ };
17
+ /**
18
+ * Dependency lists of source modules, kept across loads of a dev virtual
19
+ * module. An entry is dropped by the file events that make Vite transform the
20
+ * module again: an edit, creation or deletion of the module's own file, and
21
+ * deletion of a file one of its imports resolved to.
22
+ */
23
+ export declare class ModuleDependencyStore<T> {
24
+ private readonly entries;
25
+ private readonly pendingReads;
26
+ read(moduleId: string, collect: (moduleId: string) => Promise<ModuleDependencyEntry<T>>): Promise<T[]>;
27
+ /**
28
+ * `files` holds every spelling of one file, such as its symlinked and real
29
+ * path. Returns whether an entry was dropped.
30
+ */
31
+ invalidate(files: readonly string[], event: FileEvent["event"]): boolean;
32
+ clear(): void;
33
+ }
34
+ //#endregion
35
+ export {};
@@ -1,3 +1,4 @@
1
+ import { stripViteModuleQuery } from "../utils/path.js";
1
2
  //#region src/build/module-dependency-cache.ts
2
3
  function createModuleDependencyCache(collect) {
3
4
  const cache = /* @__PURE__ */ new Map();
@@ -9,5 +10,54 @@ function createModuleDependencyCache(collect) {
9
10
  return pending;
10
11
  };
11
12
  }
13
+ function isOutdatedBy(moduleId, entry, { files, event }) {
14
+ return files.includes(stripViteModuleQuery(moduleId)) || event === "delete" && entry.resolvedFiles.some((file) => files.includes(file));
15
+ }
16
+ /**
17
+ * Dependency lists of source modules, kept across loads of a dev virtual
18
+ * module. An entry is dropped by the file events that make Vite transform the
19
+ * module again: an edit, creation or deletion of the module's own file, and
20
+ * deletion of a file one of its imports resolved to.
21
+ */
22
+ var ModuleDependencyStore = class {
23
+ entries = /* @__PURE__ */ new Map();
24
+ pendingReads = /* @__PURE__ */ new Set();
25
+ async read(moduleId, collect) {
26
+ const cached = this.entries.get(moduleId);
27
+ if (cached) return cached.dependencies;
28
+ const pending = { events: [] };
29
+ this.pendingReads.add(pending);
30
+ let entry;
31
+ try {
32
+ entry = await collect(moduleId);
33
+ } finally {
34
+ this.pendingReads.delete(pending);
35
+ }
36
+ if (entry.cacheable && pending.events && !pending.events.some((event) => isOutdatedBy(moduleId, entry, event))) this.entries.set(moduleId, entry);
37
+ return entry.dependencies;
38
+ }
39
+ /**
40
+ * `files` holds every spelling of one file, such as its symlinked and real
41
+ * path. Returns whether an entry was dropped.
42
+ */
43
+ invalidate(files, event) {
44
+ const fileEvent = {
45
+ files,
46
+ event
47
+ };
48
+ for (const pending of this.pendingReads) pending.events?.push(fileEvent);
49
+ let dropped = false;
50
+ for (const [moduleId, entry] of this.entries) {
51
+ if (!isOutdatedBy(moduleId, entry, fileEvent)) continue;
52
+ this.entries.delete(moduleId);
53
+ dropped = true;
54
+ }
55
+ return dropped;
56
+ }
57
+ clear() {
58
+ for (const pending of this.pendingReads) pending.events = null;
59
+ this.entries.clear();
60
+ }
61
+ };
12
62
  //#endregion
13
- export { createModuleDependencyCache };
63
+ export { ModuleDependencyStore, createModuleDependencyCache };
@@ -1,3 +1,4 @@
1
+ import { ValidFileMatcher } from "../routing/file-matcher.js";
1
2
  import { ResolvedNextConfig } from "../config/next-config.js";
2
3
  //#region src/build/next-client-runtime-manifests.d.ts
3
4
  type EmitNextClientRuntimeManifestsOptions = {
@@ -5,8 +6,17 @@ type EmitNextClientRuntimeManifestsOptions = {
5
6
  assetsSubdir: string;
6
7
  buildId: string;
7
8
  rewrites: ResolvedNextConfig["rewrites"];
9
+ /** Next.js-format paths of every `pages/` page and API route, e.g. "/posts/[id]". */
10
+ pages: readonly string[];
8
11
  };
9
- export declare function buildNextClientBuildManifestContent(rewrites: ResolvedNextConfig["rewrites"]): string;
12
+ /**
13
+ * Next.js page key for a `pages/` file, e.g. "/posts/[id]". Keeps the raw file
14
+ * name (no decoding), so `pages/caf%C3%A9.js` stays "/caf%C3%A9".
15
+ * Ported from Next.js: packages/next/src/build/route-discovery.ts (`getPageFromPath`).
16
+ */
17
+ export declare function getPagesManifestPage(pagesDir: string, filePath: string, matcher: Pick<ValidFileMatcher, "stripExtension">): string;
18
+ export declare function buildNextClientBuildManifestContent(rewrites: ResolvedNextConfig["rewrites"], pages: readonly string[]): string;
10
19
  export declare function buildNextClientSsgManifestContent(): string;
11
20
  export declare function emitNextClientRuntimeManifests(options: EmitNextClientRuntimeManifestsOptions): void;
12
- //#endregion
21
+ //#endregion
22
+ export {};
@@ -1,11 +1,26 @@
1
1
  import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
+ import { getSortedRoutes } from "../routing/route-validation.js";
2
3
  import { toClientRewrites } from "../client/client-rewrites.js";
3
4
  import fs from "node:fs";
4
5
  //#region src/build/next-client-runtime-manifests.ts
5
- function buildNextClientBuildManifestContent(rewrites) {
6
+ /**
7
+ * Next.js page key for a `pages/` file, e.g. "/posts/[id]". Keeps the raw file
8
+ * name (no decoding), so `pages/caf%C3%A9.js` stays "/caf%C3%A9".
9
+ * Ported from Next.js: packages/next/src/build/route-discovery.ts (`getPageFromPath`).
10
+ */
11
+ function getPagesManifestPage(pagesDir, filePath, matcher) {
12
+ const page = `/${matcher.stripExtension(path.relative(pagesDir, filePath))}`;
13
+ const withoutIndex = page.endsWith("/index") ? page.slice(0, -6) : page;
14
+ return withoutIndex === "" ? "/" : withoutIndex;
15
+ }
16
+ function buildNextClientBuildManifestContent(rewrites, pages) {
6
17
  const manifest = {
7
18
  __rewrites: toClientRewrites(rewrites),
8
- sortedPages: []
19
+ sortedPages: getSortedRoutes([
20
+ ...pages,
21
+ "/_app",
22
+ "/_error"
23
+ ])
9
24
  };
10
25
  return `self.__BUILD_MANIFEST = ${JSON.stringify(manifest)};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()`;
11
26
  }
@@ -15,8 +30,8 @@ function buildNextClientSsgManifestContent() {
15
30
  function emitNextClientRuntimeManifests(options) {
16
31
  const manifestDir = path.join(options.clientDir, options.assetsSubdir, options.buildId);
17
32
  fs.mkdirSync(manifestDir, { recursive: true });
18
- fs.writeFileSync(path.join(manifestDir, "_buildManifest.js"), buildNextClientBuildManifestContent(options.rewrites), "utf-8");
33
+ fs.writeFileSync(path.join(manifestDir, "_buildManifest.js"), buildNextClientBuildManifestContent(options.rewrites, options.pages), "utf-8");
19
34
  fs.writeFileSync(path.join(manifestDir, "_ssgManifest.js"), buildNextClientSsgManifestContent(), "utf-8");
20
35
  }
21
36
  //#endregion
22
- export { buildNextClientBuildManifestContent, buildNextClientSsgManifestContent, emitNextClientRuntimeManifests };
37
+ export { buildNextClientBuildManifestContent, buildNextClientSsgManifestContent, emitNextClientRuntimeManifests, getPagesManifestPage };
@@ -0,0 +1,24 @@
1
+ //#region src/build/nitro-public-files.d.ts
2
+ /** The Nitro options this integration reads and updates. */
3
+ export type NitroPublicFilesOptions = {
4
+ dev?: boolean;
5
+ preset?: string;
6
+ baseURL?: string;
7
+ serveStatic?: boolean | string;
8
+ plugins?: string[];
9
+ virtual?: Record<string, string | (() => string)>;
10
+ output?: {
11
+ publicDir?: string;
12
+ };
13
+ };
14
+ /**
15
+ * Register vinext's Nitro runtime plugin on presets whose server serves the
16
+ * static output, so requests for public files run through vinext, including
17
+ * its middleware, and vinext can serve the public files its router resolves.
18
+ *
19
+ * Nitro serves the static output from its root, so this applies only when
20
+ * Nitro's `baseURL` is the root; vinext applies its own `basePath`. Returns
21
+ * whether the plugin is registered.
22
+ */
23
+ export declare function registerNitroPublicFiles(options: NitroPublicFilesOptions, pluginModule: string, getPublicFiles: () => string[]): boolean;
24
+ //#endregion
@@ -0,0 +1,60 @@
1
+ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
+ import fs from "node:fs";
3
+ //#region src/build/nitro-public-files.ts
4
+ const NITRO_PUBLIC_FILES_PLUGIN = "#vinext/nitro-public-files";
5
+ const CDN_STATIC_PRESETS = /* @__PURE__ */ new Set(["aws-amplify"]);
6
+ const COMPRESSED_EXTENSIONS = [
7
+ ".br",
8
+ ".gz",
9
+ ".zst"
10
+ ];
11
+ function toNitroAssetId(relativePath) {
12
+ let decoded = relativePath;
13
+ try {
14
+ decoded = decodeURIComponent(relativePath);
15
+ } catch {}
16
+ return "/" + decoded.replace(/^\.?\//, "");
17
+ }
18
+ /**
19
+ * List the static files Nitro serves for the files in `public/`, keyed as
20
+ * Nitro's static handler keys them: each file that Nitro copied to its output
21
+ * directory, and the compressed copies of it that Nitro wrote there.
22
+ */
23
+ function listNitroPublicAssets(publicFiles, outputPublicDir) {
24
+ if (!outputPublicDir) return [];
25
+ const assets = [];
26
+ for (const file of publicFiles) {
27
+ const relativePath = file.slice(1);
28
+ for (const extension of ["", ...COMPRESSED_EXTENSIONS]) if (fs.statSync(path.join(outputPublicDir, relativePath + extension), { throwIfNoEntry: false })?.isFile()) assets.push(toNitroAssetId(relativePath + extension));
29
+ }
30
+ return [...new Set(assets)].sort();
31
+ }
32
+ /**
33
+ * Register vinext's Nitro runtime plugin on presets whose server serves the
34
+ * static output, so requests for public files run through vinext, including
35
+ * its middleware, and vinext can serve the public files its router resolves.
36
+ *
37
+ * Nitro serves the static output from its root, so this applies only when
38
+ * Nitro's `baseURL` is the root; vinext applies its own `basePath`. Returns
39
+ * whether the plugin is registered.
40
+ */
41
+ function registerNitroPublicFiles(options, pluginModule, getPublicFiles) {
42
+ if (options.dev || !options.serveStatic) return false;
43
+ if (options.preset && CDN_STATIC_PRESETS.has(options.preset.replaceAll("_", "-"))) return false;
44
+ if ((options.baseURL ?? "/") !== "/") return false;
45
+ options.virtual ??= {};
46
+ options.virtual[NITRO_PUBLIC_FILES_PLUGIN] = () => [
47
+ "import { fetchViteEnv } from \"nitro/vite/runtime\";",
48
+ `import { createNitroPublicFilesPlugin } from ${JSON.stringify(pluginModule)};`,
49
+ "export default createNitroPublicFilesPlugin({",
50
+ ` publicAssets: ${JSON.stringify(listNitroPublicAssets(getPublicFiles(), options.output?.publicDir))},`,
51
+ " fetchApp: (request) => fetchViteEnv(\"ssr\", request),",
52
+ "});",
53
+ ""
54
+ ].join("\n");
55
+ options.plugins ??= [];
56
+ if (!options.plugins.includes(NITRO_PUBLIC_FILES_PLUGIN)) options.plugins.push(NITRO_PUBLIC_FILES_PLUGIN);
57
+ return true;
58
+ }
59
+ //#endregion
60
+ export { registerNitroPublicFiles };
@@ -6,7 +6,7 @@ import fs from "node:fs";
6
6
  //#region src/build/pages-client-assets-module.ts
7
7
  const PAGES_CLIENT_ASSETS_MODULE = "vinext-client-assets.js";
8
8
  function buildPagesClientAssetsModule(assets) {
9
- const prepared = assets.ssrManifest ? {
9
+ const prepared = assets.ssrManifest && !assets.sharedChunks ? {
10
10
  ...assets,
11
11
  sharedChunks: getSharedChunkFiles(assets.ssrManifest)
12
12
  } : assets;
@@ -28,4 +28,5 @@ export declare function precompressAssets(clientDir: string, options?: {
28
28
  assetsDir?: string;
29
29
  onProgress?: (completed: number, total: number, file: string) => void;
30
30
  }): Promise<PrecompressResult>;
31
- //#endregion
31
+ //#endregion
32
+ export {};
@@ -2,8 +2,8 @@ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
2
  import { ASSET_PREFIX_URL_DIR } from "../utils/asset-prefix.js";
3
3
  import { isPrecompressedVariantBeneficial } from "../utils/precompressed-variant.js";
4
4
  import fsp from "node:fs/promises";
5
- import { randomUUID } from "node:crypto";
6
5
  import os from "node:os";
6
+ import { randomUUID } from "node:crypto";
7
7
  import zlib from "node:zlib";
8
8
  import { promisify } from "node:util";
9
9
  //#region src/build/precompress.ts
@@ -94,4 +94,5 @@ type PrerenderPathDiscoveryOptions = {
94
94
  export declare function matchesMiddlewareWarmPath(pathname: string, matcher: MatcherConfig | undefined, i18n: ResolvedNextConfig["i18n"]): boolean;
95
95
  export declare function discoverPrerenderPathManifest(options: PrerenderPathDiscoveryOptions): Promise<PrerenderPathManifest | null>;
96
96
  export declare function emitPrerenderPathManifest(options: PrerenderPathDiscoveryOptions): Promise<PrerenderPathManifest | null>;
97
- //#endregion
97
+ //#endregion
98
+ export {};
@@ -9,7 +9,7 @@ import { loadNextConfig, resolveNextConfig } from "../config/next-config.js";
9
9
  import { appRouteHasMainTreeLoadingBoundary, appRouter, matchAppRoute } from "../routing/app-router.js";
10
10
  import { apiRouter, matchRoute, pagesRouter } from "../routing/pages-router.js";
11
11
  import { matchesMiddlewarePathname } from "../server/middleware-matcher.js";
12
- import { extractLocaleFromUrl, normalizeDefaultLocalePathname } from "../server/pages-i18n.js";
12
+ import { extractLocaleFromUrl, normalizeDefaultLocalePathname, shouldRestoreLocaleRootTrailingSlash } from "../server/pages-i18n.js";
13
13
  import { classifyAppRoute, classifyAppRouteHandler, classifyPagesRoute, extractExportConstString, extractMiddlewareMatcherConfig, getAppRouteRenderEntryPath } from "./report.js";
14
14
  import { normalizeStaticPathname, normalizeStaticPathsEntry } from "../routing/route-pattern.js";
15
15
  import { buildPagesDataHref } from "../shims/internal/pages-data-url.js";
@@ -578,7 +578,10 @@ async function resolveAppWarmPaths(options) {
578
578
  function cachePolicyRuleMatchesWarmPath(pathname, rule, config) {
579
579
  const canonicalPathname = normalizePathTrailingSlash(pathname, config.trailingSlash);
580
580
  return [void 0, ...config.i18n?.domains?.map((domain) => domain.domain) ?? []].some((hostname) => {
581
- const matchPathname = normalizeDefaultLocalePathname(canonicalPathname, config.i18n, { hostname });
581
+ const matchPathname = normalizeDefaultLocalePathname(canonicalPathname, config.i18n, {
582
+ hostname,
583
+ restoreRootTrailingSlash: shouldRestoreLocaleRootTrailingSlash(canonicalPathname, config)
584
+ });
582
585
  let sourceMatched = false;
583
586
  matchHeaders(matchPathname, [rule], {
584
587
  cookies: {},
@@ -11,4 +11,5 @@ type PrerenderPhaseEnv = {
11
11
  * overwriting the caller's prior phase when they finish.
12
12
  */
13
13
  export declare function enterPrerenderPhase(env?: PrerenderPhaseEnv): () => void;
14
- //#endregion
14
+ //#endregion
15
+ export {};
@@ -2,8 +2,8 @@ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
2
  import { PHASE_PRODUCTION_BUILD } from "../shims/constants.js";
3
3
  import fs from "node:fs";
4
4
  import { fileURLToPath } from "node:url";
5
- import { fork } from "node:child_process";
6
5
  import os from "node:os";
6
+ import { fork } from "node:child_process";
7
7
  //#region src/build/prerender-server-pool.ts
8
8
  /**
9
9
  * Parallel prerender server pool.
@@ -171,8 +171,9 @@ type PrerenderAppOptionsInternal = PrerenderAppOptions & {
171
171
  * Throws on partial or malformed embeds (chunks present but no done marker,
172
172
  * tampered chunk JSON, etc.) — those are real vinext-internal regressions.
173
173
  *
174
- * Safe regex usage: safeJsonStringify (used by createRscEmbedTransform) escapes
175
- * all '<' and '>' in the embedded JSON, preventing false </script> matches.
174
+ * Safe regex usage: scriptSafeJsonStringify (used by createRscEmbedTransform)
175
+ * escapes every '<' that begins "</script" (case-insensitive) in the embedded
176
+ * JSON, preventing false </script> matches.
176
177
  */
177
178
  export declare function extractRscPayloadFromPrerenderedHtml(html: string): Uint8Array | null;
178
179
  /**
@@ -18,10 +18,10 @@ import { buildPregeneratedConcretePathTable } from "../server/prerender-manifest
18
18
  import { concatUint8Arrays, decodeRscEmbeddedChunk } from "../server/app-rsc-embedded-chunks.js";
19
19
  import { navigationRuntimeRscBootstrapExpression } from "../server/app-ssr-stream.js";
20
20
  import { encodePrerenderRouteParams, serializePrerenderRouteParamsHeader } from "../server/prerender-route-params.js";
21
- import { createAppPprFallbackShells, markAppPprDynamicFallbackShellHtml } from "../server/app-ppr-fallback-shell.js";
22
- import { getAppRouteOutputPath, getOutputPath, getRscOutputPath } from "../utils/prerender-output-paths.js";
23
21
  import { startProdServer } from "../server/prod-server.js";
24
22
  import { prerenderPoolAvailable, resolvePrerenderPoolSize, startPrerenderServerPool } from "./prerender-server-pool.js";
23
+ import { getAppRouteOutputPath, getOutputPath, getRscOutputPath } from "../utils/prerender-output-paths.js";
24
+ import { createAppPprFallbackShells, markAppPprDynamicFallbackShellHtml } from "../server/app-ppr-fallback-shell.js";
25
25
  import { enterPrerenderPhase } from "./prerender-phase.js";
26
26
  import { buildAppRouteCacheValue } from "../server/app-route-handler-response.js";
27
27
  import fs from "node:fs";
@@ -92,8 +92,9 @@ const RSC_RUNTIME_DONE_SCRIPT = `${RSC_RUNTIME_BOOTSTRAP_EXPRESSION}.done=true`;
92
92
  * Throws on partial or malformed embeds (chunks present but no done marker,
93
93
  * tampered chunk JSON, etc.) — those are real vinext-internal regressions.
94
94
  *
95
- * Safe regex usage: safeJsonStringify (used by createRscEmbedTransform) escapes
96
- * all '<' and '>' in the embedded JSON, preventing false <\/script> matches.
95
+ * Safe regex usage: scriptSafeJsonStringify (used by createRscEmbedTransform)
96
+ * escapes every '<' that begins "<\/script" (case-insensitive) in the embedded
97
+ * JSON, preventing false <\/script> matches.
97
98
  */
98
99
  function extractRscPayloadFromPrerenderedHtml(html) {
99
100
  const scriptPattern = /<script(?:\s[^>]*)?>([\s\S]*?)<\/script>/gi;
@@ -163,4 +163,5 @@ export declare function printBuildReport(options: {
163
163
  pageExtensions: string[];
164
164
  prerenderResult?: PrerenderResult;
165
165
  }): Promise<void>;
166
- //#endregion
166
+ //#endregion
167
+ export {};
@@ -29,4 +29,5 @@ type PlanRouteClassificationInjectionOptions = {
29
29
  moduleInfo: ModuleInfoProvider;
30
30
  };
31
31
  export declare function planRouteClassificationInjection(options: PlanRouteClassificationInjectionOptions): RouteClassificationInjectionPlan;
32
- //#endregion
32
+ //#endregion
33
+ export {};
@@ -50,4 +50,5 @@ export declare function buildClassificationReplacement(manifest: RouteClassifica
50
50
  * layout index.
51
51
  */
52
52
  export declare function buildReasonsReplacement(manifest: RouteClassificationManifest, layer2PerRoute: ReadonlyMap<number, ReadonlyMap<number, ModuleGraphStaticReason>>): string;
53
- //#endregion
53
+ //#endregion
54
+ export {};
@@ -59,4 +59,5 @@ export declare function assertNoFatalPrerenderRoutes(routes: readonly PrerenderR
59
59
  * Statically generate routes and return the prerender result.
60
60
  */
61
61
  export declare function runPrerender(options: RunPrerenderOptions): Promise<PrerenderResult | null>;
62
- //#endregion
62
+ //#endregion
63
+ export {};
@@ -0,0 +1,24 @@
1
+ //#region src/build/server-actions-encryption-key.d.ts
2
+ type LoadEncryptionKeyOptions = {
3
+ root: string;
4
+ isBuild: boolean;
5
+ /** Defaults to `process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY`. */
6
+ providedKey?: string;
7
+ now?: number;
8
+ /** Defaults to Docker detection; Docker filesystems are likely ephemeral. */
9
+ hasPersistentStorage?: boolean;
10
+ };
11
+ /**
12
+ * Return NEXT_SERVER_ACTIONS_ENCRYPTION_KEY when set, otherwise a generated
13
+ * key that is cached in `.vinext/cache` for 14 days.
14
+ */
15
+ export declare function loadOrGenerateServerActionsEncryptionKey(options: LoadEncryptionKeyOptions): string;
16
+ /**
17
+ * The cached key lives inside the project root, which the dev server serves.
18
+ * Return the `server.fs.deny` entries that keep it private, preserving Vite's
19
+ * defaults and any configured entries. Like `.env` files, it is only exposed
20
+ * when `server.fs.strict` is false, which turns off Vite's file restrictions.
21
+ */
22
+ export declare function getServerActionsKeyCacheFsDeny(configuredDeny: string[] | undefined): string[];
23
+ //#endregion
24
+ export {};
@@ -0,0 +1,101 @@
1
+ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
+ import fs from "node:fs";
3
+ import { randomBytes } from "node:crypto";
4
+ //#region src/build/server-actions-encryption-key.ts
5
+ /**
6
+ * Ported from Next.js: packages/next/src/server/app-render/encryption-utils-server.ts
7
+ * https://github.com/vercel/next.js/blob/canary/packages/next/src/server/app-render/encryption-utils-server.ts
8
+ *
9
+ * Next salts server-reference IDs with this key, so keeping it stable keeps
10
+ * client chunk names stable across rebuilds of identical source. Next caches
11
+ * a generated key under `<distDir>/cache` for builds and `<distDir>/dev/cache`
12
+ * for dev; vinext uses `<root>/.vinext/cache` and `<root>/.vinext/dev/cache`
13
+ * because `dist/` is wiped by every build.
14
+ */
15
+ const CONFIG_FILE = ".rscinfo";
16
+ const ENCRYPTION_KEY = "encryption.key";
17
+ const ENCRYPTION_EXPIRE_AT = "encryption.expire_at";
18
+ const EXPIRATION = 12096e5;
19
+ const VITE_DEFAULT_FS_DENY = [
20
+ ".env",
21
+ ".env.*",
22
+ "*.{crt,pem,key,p12,pfx,cer,der}",
23
+ ".npmrc",
24
+ ".yarnrc.yml",
25
+ "**/.git/**"
26
+ ];
27
+ const KEY_CACHE_FS_DENY = `**/.vinext/**/${CONFIG_FILE}`;
28
+ let isDockerResult;
29
+ function isDocker() {
30
+ if (isDockerResult === void 0) {
31
+ let hasDockerEnv = false;
32
+ try {
33
+ fs.statSync("/.dockerenv");
34
+ hasDockerEnv = true;
35
+ } catch {}
36
+ let hasDockerCGroup = false;
37
+ if (!hasDockerEnv) try {
38
+ hasDockerCGroup = fs.readFileSync("/proc/self/cgroup", "utf8").includes("docker");
39
+ } catch {}
40
+ isDockerResult = hasDockerEnv || hasDockerCGroup;
41
+ }
42
+ return isDockerResult;
43
+ }
44
+ function readCachedKey(configPath, isBuild, providedKey, now) {
45
+ if (!fs.existsSync(configPath)) return void 0;
46
+ try {
47
+ const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
48
+ if (typeof config !== "object" || config === null) return void 0;
49
+ const cachedKey = config[ENCRYPTION_KEY];
50
+ const expireAt = config[ENCRYPTION_EXPIRE_AT];
51
+ if (typeof cachedKey !== "string" || typeof expireAt !== "number") return void 0;
52
+ if (isBuild && expireAt < now) return void 0;
53
+ if (cachedKey && providedKey && cachedKey !== providedKey) return void 0;
54
+ return cachedKey;
55
+ } catch {
56
+ return;
57
+ }
58
+ }
59
+ /**
60
+ * Return NEXT_SERVER_ACTIONS_ENCRYPTION_KEY when set, otherwise a generated
61
+ * key that is cached in `.vinext/cache` for 14 days.
62
+ */
63
+ function loadOrGenerateServerActionsEncryptionKey(options) {
64
+ const providedKey = "providedKey" in options ? options.providedKey : process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY;
65
+ const generateKey = () => providedKey || randomBytes(32).toString("base64");
66
+ if (!(options.hasPersistentStorage ?? !isDocker())) return generateKey();
67
+ const now = options.now ?? Date.now();
68
+ const cacheDir = options.isBuild ? path.join(options.root, ".vinext", "cache") : path.join(options.root, ".vinext", "dev", "cache");
69
+ const configPath = path.join(cacheDir, CONFIG_FILE);
70
+ const cachedKey = readCachedKey(configPath, options.isBuild, providedKey, now);
71
+ if (cachedKey !== void 0) {
72
+ restrictKeyCacheMode(configPath);
73
+ return cachedKey;
74
+ }
75
+ const key = generateKey();
76
+ try {
77
+ fs.mkdirSync(cacheDir, { recursive: true });
78
+ fs.writeFileSync(configPath, JSON.stringify({
79
+ [ENCRYPTION_KEY]: key,
80
+ [ENCRYPTION_EXPIRE_AT]: now + EXPIRATION
81
+ }), { mode: 384 });
82
+ restrictKeyCacheMode(configPath);
83
+ } catch {}
84
+ return key;
85
+ }
86
+ function restrictKeyCacheMode(configPath) {
87
+ try {
88
+ fs.chmodSync(configPath, 384);
89
+ } catch {}
90
+ }
91
+ /**
92
+ * The cached key lives inside the project root, which the dev server serves.
93
+ * Return the `server.fs.deny` entries that keep it private, preserving Vite's
94
+ * defaults and any configured entries. Like `.env` files, it is only exposed
95
+ * when `server.fs.strict` is false, which turns off Vite's file restrictions.
96
+ */
97
+ function getServerActionsKeyCacheFsDeny(configuredDeny) {
98
+ return configuredDeny ? [KEY_CACHE_FS_DENY] : [...VITE_DEFAULT_FS_DENY, KEY_CACHE_FS_DENY];
99
+ }
100
+ //#endregion
101
+ export { getServerActionsKeyCacheFsDeny, loadOrGenerateServerActionsEncryptionKey };
@@ -2,6 +2,9 @@
2
2
  export type BundleBackfillChunk = {
3
3
  type: "chunk";
4
4
  fileName: string;
5
+ name?: string;
6
+ isEntry?: boolean;
7
+ facadeModuleId?: string | null;
5
8
  imports?: string[];
6
9
  modules?: Record<string, unknown>;
7
10
  viteMetadata?: {
@@ -1,7 +1,13 @@
1
1
  import path, { toSlash } from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
- import { collapseDuplicateBase, manifestFileWithBase } from "../utils/manifest-paths.js";
2
+ import { SSR_MANIFEST_SHARED_CHUNKS_KEY, collapseDuplicateBase, isSharedClientChunkName, manifestFileWithBase } from "../utils/manifest-paths.js";
3
3
  import fs from "node:fs";
4
4
  //#region src/build/ssr-manifest.ts
5
+ const PAGES_CLIENT_ENTRY_ID = "virtual:vinext-client-entry";
6
+ function isPagesClientEntryFacade(facadeModuleId) {
7
+ if (!facadeModuleId) return false;
8
+ const id = toSlash(facadeModuleId.startsWith("\0") ? facadeModuleId.slice(1) : facadeModuleId);
9
+ return id === PAGES_CLIENT_ENTRY_ID || id.endsWith(`/${PAGES_CLIENT_ENTRY_ID}`);
10
+ }
5
11
  /**
6
12
  * Realpath with NATIVE separators (backslashes on Windows). Callers apply
7
13
  * `toSlash` where the result becomes a module id / manifest key.
@@ -50,17 +56,42 @@ function normalizeManifestModuleId(moduleId, root) {
50
56
  }
51
57
  function augmentSsrManifestFromBundle(ssrManifest, bundle, root, base = "/") {
52
58
  const nextManifest = {};
59
+ const sharedChunkFiles = /* @__PURE__ */ new Set();
53
60
  for (const [key, files] of Object.entries(ssrManifest)) {
54
61
  const normalizedKey = normalizeManifestModuleId(key, root);
55
62
  if (!nextManifest[normalizedKey]) nextManifest[normalizedKey] = /* @__PURE__ */ new Set();
56
63
  for (const file of files) nextManifest[normalizedKey].add(collapseDuplicateBase(file, base));
57
64
  }
65
+ const staticImportClosures = /* @__PURE__ */ new Map();
66
+ const getStaticImportClosure = (fileName) => {
67
+ let closure = staticImportClosures.get(fileName);
68
+ if (closure) return closure;
69
+ const files = /* @__PURE__ */ new Set();
70
+ const visit = (importer) => {
71
+ const chunk = bundle[importer];
72
+ if (chunk?.type !== "chunk") return;
73
+ for (const importedFile of chunk.imports ?? []) {
74
+ if (importedFile === fileName || files.has(importedFile)) continue;
75
+ files.add(importedFile);
76
+ visit(importedFile);
77
+ }
78
+ };
79
+ visit(fileName);
80
+ closure = [...files];
81
+ staticImportClosures.set(fileName, closure);
82
+ return closure;
83
+ };
58
84
  for (const item of Object.values(bundle)) {
59
85
  if (item.type !== "chunk") continue;
60
86
  const chunk = item;
87
+ if (chunk.fileName.endsWith(".js") && isSharedClientChunkName(chunk.name)) sharedChunkFiles.add(manifestFileWithBase(chunk.fileName, base));
88
+ if (chunk.isEntry && isPagesClientEntryFacade(chunk.facadeModuleId)) {
89
+ sharedChunkFiles.add(manifestFileWithBase(chunk.fileName, base));
90
+ for (const importedFile of getStaticImportClosure(chunk.fileName)) sharedChunkFiles.add(manifestFileWithBase(importedFile, base));
91
+ }
61
92
  const files = /* @__PURE__ */ new Set();
62
93
  files.add(manifestFileWithBase(chunk.fileName, base));
63
- for (const importedFile of chunk.imports ?? []) files.add(manifestFileWithBase(importedFile, base));
94
+ for (const importedFile of getStaticImportClosure(chunk.fileName)) files.add(manifestFileWithBase(importedFile, base));
64
95
  for (const cssFile of chunk.viteMetadata?.importedCss ?? []) files.add(manifestFileWithBase(cssFile, base));
65
96
  for (const assetFile of chunk.viteMetadata?.importedAssets ?? []) files.add(manifestFileWithBase(assetFile, base));
66
97
  for (const moduleId of Object.keys(chunk.modules ?? {})) {
@@ -71,6 +102,7 @@ function augmentSsrManifestFromBundle(ssrManifest, bundle, root, base = "/") {
71
102
  for (const file of files) nextManifest[key].add(file);
72
103
  }
73
104
  }
105
+ if (sharedChunkFiles.size > 0) nextManifest[SSR_MANIFEST_SHARED_CHUNKS_KEY] = sharedChunkFiles;
74
106
  return Object.fromEntries(Object.entries(nextManifest).map(([key, files]) => [key, [...files]]));
75
107
  }
76
108
  //#endregion
@@ -27,4 +27,5 @@ type StandaloneBuildResult = {
27
27
  * included.
28
28
  */
29
29
  export declare function emitStandaloneOutput(options: StandaloneBuildOptions): StandaloneBuildResult;
30
- //#endregion
30
+ //#endregion
31
+ export {};
@@ -132,4 +132,5 @@ export declare function loadVinextCacheConfigFromViteConfig(vite: ViteConfigLoad
132
132
  export declare function generateCacheAdaptersModule(cache?: VinextCacheConfig): string;
133
133
  /** Generate request-stage registration without importing a configured data adapter. */
134
134
  export declare function generateCdnCacheAdapterModule(cache?: VinextCacheConfig): string;
135
- //#endregion
135
+ //#endregion
136
+ export {};
package/dist/cache.js CHANGED
@@ -1,2 +1 @@
1
- import { cacheForRequest } from "./shims/cache-for-request.js";
2
- export { cacheForRequest };
1
+ export { cacheForRequest } from "./shims/cache-for-request.js";
package/dist/check.d.ts CHANGED
@@ -85,4 +85,5 @@ export declare function runCheck(root: string): CheckResult;
85
85
  export declare function formatReport(result: CheckResult, opts?: {
86
86
  calledFromInit?: boolean;
87
87
  }): string;
88
- //#endregion
88
+ //#endregion
89
+ export {};
package/dist/check.js CHANGED
@@ -323,6 +323,10 @@ const CONFIG_SUPPORT = {
323
323
  status: "partial",
324
324
  detail: "experimental support; behavior is incomplete"
325
325
  },
326
+ "experimental.cacheComponents": {
327
+ status: "partial",
328
+ detail: "legacy alias of cacheComponents; experimental support, behavior is incomplete"
329
+ },
326
330
  "experimental.ppr": {
327
331
  status: "unsupported",
328
332
  detail: "removed in Next.js 16 and ignored; use cacheComponents"