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
@@ -35,13 +35,25 @@ type AppRscInterceptForMatching = {
35
35
  interceptLoadings?: readonly unknown[];
36
36
  interceptLoadingTreePositions?: readonly number[];
37
37
  interceptNotFoundBranchSegments?: readonly string[];
38
+ interceptNotFounds?: readonly unknown[];
39
+ interceptNotFoundTreePositions?: readonly number[];
38
40
  __loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
39
41
  __loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
42
+ __loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
40
43
  page: unknown;
41
44
  __pageLoader?: (() => Promise<unknown>) | null;
42
45
  notFound?: unknown;
43
46
  __loadNotFound?: (() => Promise<unknown>) | null;
44
47
  notFoundTreePosition?: number | null;
48
+ interceptForbiddens?: readonly unknown[];
49
+ interceptForbiddenTreePositions?: readonly number[];
50
+ __loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
51
+ interceptUnauthorizeds?: readonly unknown[];
52
+ interceptUnauthorizedTreePositions?: readonly number[];
53
+ __loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
54
+ interceptErrors?: readonly unknown[];
55
+ interceptErrorTreePositions?: readonly number[];
56
+ __loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
45
57
  params: readonly string[];
46
58
  };
47
59
  type AppRscSlotForMatching = {
@@ -60,13 +72,25 @@ type AppRscSiblingInterceptForMatching = {
60
72
  interceptLoadings?: readonly unknown[];
61
73
  interceptLoadingTreePositions?: readonly number[];
62
74
  interceptNotFoundBranchSegments?: readonly string[];
75
+ interceptNotFounds?: readonly unknown[];
76
+ interceptNotFoundTreePositions?: readonly number[];
63
77
  __loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
64
78
  __loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
79
+ __loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
65
80
  page: unknown;
66
81
  __pageLoader?: (() => Promise<unknown>) | null;
67
82
  notFound?: unknown;
68
83
  __loadNotFound?: (() => Promise<unknown>) | null;
69
84
  notFoundTreePosition?: number | null;
85
+ interceptForbiddens?: readonly unknown[];
86
+ interceptForbiddenTreePositions?: readonly number[];
87
+ __loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
88
+ interceptUnauthorizeds?: readonly unknown[];
89
+ interceptUnauthorizedTreePositions?: readonly number[];
90
+ __loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
91
+ interceptErrors?: readonly unknown[];
92
+ interceptErrorTreePositions?: readonly number[];
93
+ __loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
70
94
  params: readonly string[];
71
95
  };
72
96
  type AppRscRouteForMatching = {
@@ -108,18 +132,31 @@ type AppRscInterceptLookupEntry = {
108
132
  interceptLoadings?: readonly unknown[];
109
133
  interceptLoadingTreePositions?: readonly number[];
110
134
  interceptNotFoundBranchSegments?: readonly string[];
135
+ interceptNotFounds?: readonly unknown[];
136
+ interceptNotFoundTreePositions?: readonly number[];
111
137
  __loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
112
138
  __loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
139
+ __loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
113
140
  page: unknown;
114
141
  __pageLoader?: (() => Promise<unknown>) | null;
115
142
  notFound: unknown;
116
143
  __loadNotFound?: (() => Promise<unknown>) | null;
117
144
  notFoundTreePosition?: number | null;
145
+ interceptForbiddens?: readonly unknown[];
146
+ interceptForbiddenTreePositions?: readonly number[];
147
+ __loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
148
+ interceptUnauthorizeds?: readonly unknown[];
149
+ interceptUnauthorizedTreePositions?: readonly number[];
150
+ __loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
151
+ interceptErrors?: readonly unknown[];
152
+ interceptErrorTreePositions?: readonly number[];
153
+ __loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
118
154
  __loadState: AppRscInterceptLoadState;
119
155
  params: readonly string[];
120
156
  slotId: string | null;
121
157
  targetRouteGraphId: string | null;
122
158
  };
159
+ export declare function isAppRouteHandlerRoute(route: Pick<AppRscRouteForMatching, "__loadRouteHandler" | "routeHandler">): boolean;
123
160
  /**
124
161
  * @param decodedPathnamePatterns Static page patterns that answer their
125
162
  * segment-decoded pathname (built by `buildAppDecodedPathnamePatterns`).
@@ -140,4 +177,5 @@ export declare function createAppRscRouteMatcher<Route extends AppRscRouteForMat
140
177
  } | null;
141
178
  findIntercept(pathname: string, sourcePathname?: string | null, interceptionId?: string | null): AppRscInterceptMatch | null;
142
179
  };
143
- //#endregion
180
+ //#endregion
181
+ export {};
@@ -209,6 +209,9 @@ function createInterceptLookup(routes) {
209
209
  interceptLoadings: intercept.interceptLoadings,
210
210
  interceptLoadingTreePositions: intercept.interceptLoadingTreePositions,
211
211
  interceptNotFoundBranchSegments: intercept.interceptNotFoundBranchSegments,
212
+ interceptNotFounds: intercept.interceptNotFounds,
213
+ interceptNotFoundTreePositions: intercept.interceptNotFoundTreePositions,
214
+ __loadInterceptNotFounds: intercept.__loadInterceptNotFounds,
212
215
  __loadInterceptLayouts: intercept.__loadInterceptLayouts,
213
216
  __loadInterceptLoadings: intercept.__loadInterceptLoadings,
214
217
  page: intercept.page,
@@ -216,6 +219,15 @@ function createInterceptLookup(routes) {
216
219
  notFound: intercept.notFound,
217
220
  __loadNotFound: intercept.__loadNotFound,
218
221
  notFoundTreePosition: intercept.notFoundTreePosition,
222
+ interceptForbiddens: intercept.interceptForbiddens,
223
+ interceptForbiddenTreePositions: intercept.interceptForbiddenTreePositions,
224
+ __loadInterceptForbiddens: intercept.__loadInterceptForbiddens,
225
+ interceptUnauthorizeds: intercept.interceptUnauthorizeds,
226
+ interceptUnauthorizedTreePositions: intercept.interceptUnauthorizedTreePositions,
227
+ __loadInterceptUnauthorizeds: intercept.__loadInterceptUnauthorizeds,
228
+ interceptErrors: intercept.interceptErrors,
229
+ interceptErrorTreePositions: intercept.interceptErrorTreePositions,
230
+ __loadInterceptErrors: intercept.__loadInterceptErrors,
219
231
  __loadState: {
220
232
  page: intercept.page,
221
233
  pageLoading: null,
@@ -248,6 +260,9 @@ function createInterceptLookup(routes) {
248
260
  interceptLoadings: intercept.interceptLoadings,
249
261
  interceptLoadingTreePositions: intercept.interceptLoadingTreePositions,
250
262
  interceptNotFoundBranchSegments: intercept.interceptNotFoundBranchSegments,
263
+ interceptNotFounds: intercept.interceptNotFounds,
264
+ interceptNotFoundTreePositions: intercept.interceptNotFoundTreePositions,
265
+ __loadInterceptNotFounds: intercept.__loadInterceptNotFounds,
251
266
  __loadInterceptLayouts: intercept.__loadInterceptLayouts,
252
267
  __loadInterceptLoadings: intercept.__loadInterceptLoadings,
253
268
  page: intercept.page,
@@ -255,6 +270,15 @@ function createInterceptLookup(routes) {
255
270
  notFound: intercept.notFound,
256
271
  __loadNotFound: intercept.__loadNotFound,
257
272
  notFoundTreePosition: intercept.notFoundTreePosition,
273
+ interceptForbiddens: intercept.interceptForbiddens,
274
+ interceptForbiddenTreePositions: intercept.interceptForbiddenTreePositions,
275
+ __loadInterceptForbiddens: intercept.__loadInterceptForbiddens,
276
+ interceptUnauthorizeds: intercept.interceptUnauthorizeds,
277
+ interceptUnauthorizedTreePositions: intercept.interceptUnauthorizedTreePositions,
278
+ __loadInterceptUnauthorizeds: intercept.__loadInterceptUnauthorizeds,
279
+ interceptErrors: intercept.interceptErrors,
280
+ interceptErrorTreePositions: intercept.interceptErrorTreePositions,
281
+ __loadInterceptErrors: intercept.__loadInterceptErrors,
258
282
  __loadState: {
259
283
  page: intercept.page,
260
284
  pageLoading: null,
@@ -282,4 +306,4 @@ function pickPatternParams(params, patternParts) {
282
306
  return picked;
283
307
  }
284
308
  //#endregion
285
- export { SIBLING_PAGE_INTERCEPT_SLOT_KEY, createAppRscRouteMatcher };
309
+ export { SIBLING_PAGE_INTERCEPT_SLOT_KEY, createAppRscRouteMatcher, isAppRouteHandlerRoute };
@@ -169,4 +169,5 @@ export declare function isAppPageStaticEligible(options: {
169
169
  isStaticGenerationEdgeRuntime: boolean;
170
170
  revalidateSeconds: number | null;
171
171
  }): boolean;
172
- //#endregion
172
+ //#endregion
173
+ export {};
@@ -1,3 +1,4 @@
1
+ import { compareFolderNames } from "../utils/compare.js";
1
2
  import { isEdgeApiRuntime } from "./edge-api-runtime.js";
2
3
  //#region src/server/app-segment-config.ts
3
4
  const DYNAMIC_VALUES = /* @__PURE__ */ new Set([
@@ -310,20 +311,6 @@ function hasGenerateStaticParamsExport(segment) {
310
311
  }
311
312
  const DEFAULT_SEGMENT_NAME = "__DEFAULT__";
312
313
  /**
313
- * Turbopack reads a folder's subfolders from a `BTreeMap<RcStr, _>`, whose
314
- * keys compare as Rust `str`s: by UTF-8 bytes. That is Unicode code point
315
- * order, which JavaScript's `<` (UTF-16 code units) doesn't match above the
316
- * Basic Multilingual Plane.
317
- * https://github.com/vercel/next.js/blob/v16.2.7/crates/next-core/src/app_structure.rs#L188-L192
318
- * https://github.com/vercel/next.js/blob/v16.2.7/turbopack/crates/turbo-rcstr/src/lib.rs#L350-L354
319
- */
320
- function compareFolderNames(a, b) {
321
- const left = Array.from(a, (char) => char.codePointAt(0) ?? 0);
322
- const right = Array.from(b, (char) => char.codePointAt(0) ?? 0);
323
- for (let index = 0; index < Math.min(left.length, right.length); index++) if (left[index] !== right[index]) return left[index] - right[index];
324
- return left.length - right.length;
325
- }
326
- /**
327
314
  * Collect the loader-tree segments of an App page route from its layout, page
328
315
  * and parallel-slot modules, for `lastDynamicSegmentHasGenerateStaticParams`.
329
316
  *
@@ -19,8 +19,10 @@ type AppServerActionErrorReporter = (error: unknown, request: {
19
19
  renderSource: "react-server-components-payload";
20
20
  revalidateReason: undefined;
21
21
  }) => void;
22
- type AppServerActionDecoder = (body: FormData) => Promise<unknown>;
23
- type AppServerActionFormStateDecoder = (actionResult: unknown, body: FormData) => Promise<ReactFormState | undefined>;
22
+ /** React's `decodeAction()`; bound references resolve through `serverManifest`. */
23
+ type AppServerActionDecoder = (body: FormData, serverManifest: object) => Promise<unknown>;
24
+ /** React's `decodeFormState()`, which decodes the bound references again. */
25
+ type AppServerActionFormStateDecoder = (actionResult: unknown, body: FormData, serverManifest: object) => Promise<ReactFormState | undefined>;
24
26
  type ReadFormDataWithLimit = (request: Request, maxBytes: number) => Promise<FormData>;
25
27
  type ReadBodyWithLimit = (request: Request, maxBytes: number) => Promise<string>;
26
28
  type AppServerActionReturnValue = {
@@ -136,19 +138,22 @@ export type HandleProgressiveServerActionRequestOptions = {
136
138
  cleanPathname: string;
137
139
  clearRequestContext: () => void;
138
140
  contentType: string;
141
+ /** plugin-rsc's server manifest, which resolves any export of a server-reference module. */
142
+ createServerManifest: () => object;
139
143
  decodeAction: AppServerActionDecoder;
140
144
  decodeFormState: AppServerActionFormStateDecoder;
141
145
  getAndClearPendingCookies: () => string[];
142
146
  getDraftModeCookieHeader: () => string | null | undefined;
143
147
  forwardAction?: (actionId: string) => Promise<Response | null>;
144
- validateActionReferences?: (actionIds: readonly string[]) => boolean;
148
+ /** Whether these Server Actions belong to the current route. */
149
+ validateActionReferences: (actionIds: readonly string[]) => boolean;
145
150
  /**
146
151
  * Whether the posted-to route resolves to an App Router *page* (as opposed to
147
152
  * a route handler or no match). Multipart form POSTs to a page are always
148
153
  * server-action attempts in Next.js, so a body that decodes to no action must
149
154
  * surface as 404 action-not-found rather than rendering the page. Route
150
- * handlers (which run *after* this dispatch in vinext) legitimately receive
151
- * raw multipart POSTs, so they must still fall through. See issue #1340.
155
+ * handlers and Pages routes never reach this dispatch (#3886); unmatched
156
+ * routes fall through. See issue #1340.
152
157
  */
153
158
  hasPageRoute: boolean;
154
159
  maxActionBodySize: number;
@@ -176,7 +181,13 @@ export type HandleServerActionRscRequestOptions<TElement, TRoute extends AppServ
176
181
  createPayloadRouteId: (pathname: string, interceptionContext: string | null) => string;
177
182
  createRscOnErrorHandler: (request: Request, pathname: string, pattern: string, overrides?: AppRenderErrorContextOverrides) => (error: unknown) => unknown;
178
183
  createTemporaryReferenceSet: () => TTemporaryReferences;
179
- decodeReply: (body: string | FormData, options: DecodeServerActionReplyOptions<TTemporaryReferences>) => Promise<unknown[]> | unknown[];
184
+ /** plugin-rsc's server manifest, which resolves any export of a server-reference module. */
185
+ createServerManifest: () => object;
186
+ /**
187
+ * React's `decodeReply()`. Every server reference in the arguments resolves
188
+ * through `serverManifest`, so the manifest bounds which functions can decode.
189
+ */
190
+ decodeReply: (body: string | FormData, serverManifest: object, options: DecodeServerActionReplyOptions<TTemporaryReferences>) => Promise<unknown[]> | unknown[];
180
191
  draftModeSecret: string;
181
192
  /**
182
193
  * Hydrate a route's lazy page/route-handler modules before reading
@@ -192,6 +203,12 @@ export type HandleServerActionRscRequestOptions<TElement, TRoute extends AppServ
192
203
  isEdgeRuntime?: boolean;
193
204
  isRscRequest: boolean;
194
205
  loadServerAction: (actionId: string) => Promise<unknown>;
206
+ /**
207
+ * Whether these Server Actions belong to the current route. Next.js resolves
208
+ * argument references through the current page's server module map, so an
209
+ * action owned by another route must not decode into a callable function.
210
+ */
211
+ validateActionReferences: (actionIds: readonly string[]) => boolean;
195
212
  /**
196
213
  * Match an action redirect target. Must use *request* route identity — the
197
214
  * raw, undecoded pathname — because the target is rendered as if the client
@@ -265,4 +282,5 @@ export declare function applyActionRedirectBasePath(url: string, basePath: strin
265
282
  export declare function isProgressiveServerActionRequest(request: Pick<Request, "method">, contentType: string, actionId: string | null): boolean;
266
283
  export declare function handleProgressiveServerActionRequest(options: HandleProgressiveServerActionRequestOptions): Promise<Response | ProgressiveServerActionResult | null>;
267
284
  export declare function handleServerActionRscRequest<TElement, TRoute extends AppServerActionRoute, TInterceptOpts, TTemporaryReferences, TPage = unknown>(options: HandleServerActionRscRequestOptions<TElement, TRoute, TInterceptOpts, TTemporaryReferences, TPage>): Promise<Response | null>;
268
- //#endregion
285
+ //#endregion
286
+ export {};
@@ -1,4 +1,5 @@
1
1
  import { runOutsideRequestScopes } from "../shims/internal/als-registry.js";
2
+ import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
2
3
  import { VINEXT_MW_CTX_HEADER } from "../utils/protocol-headers.js";
3
4
  import { buildRequestHeadersFromMiddlewareResponse } from "../utils/middleware-request-headers.js";
4
5
  import { parseEdgeRequestCookieHeader } from "../utils/parse-cookie.js";
@@ -9,22 +10,23 @@ import { ACTION_FORWARDED_HEADER, ACTION_REDIRECT_HEADER, ACTION_REDIRECT_STATUS
9
10
  import { internalServerErrorResponse, payloadTooLargeResponse } from "./http-error-responses.js";
10
11
  import { attachRequestCfMetadata, validateCsrfOrigin, validateServerActionPayload } from "./request-pipeline.js";
11
12
  import { splitPathSegments } from "../routing/utils.js";
13
+ import { getRequestExecutionContext } from "../shims/request-context.js";
14
+ import { shareIsolatePromise } from "./isolate-shared-promise.js";
12
15
  import { APP_RSC_RENDER_MODE_NAVIGATION } from "./app-rsc-render-mode.js";
13
16
  import { isDraftModeRequest, setHeadersContext } from "../shims/headers.js";
14
17
  import { _drainPendingRevalidations, getAndClearActionRevalidationKind } from "../shims/cache-request-state.js";
15
18
  import { setCurrentFetchCacheMode, setCurrentFetchRevalidate, setCurrentFetchSoftTags, setCurrentForceDynamicFetchDefault } from "../shims/fetch-cache.js";
16
19
  import { readStreamAsTextWithLimit } from "../utils/text-stream.js";
17
- import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
18
20
  import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, createRscRequestUrl, stripRscCacheBustingSearchParam } from "./app-rsc-cache-busting.js";
19
21
  import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
20
22
  import { applyEdgeRuntimeHeader } from "./app-page-response.js";
21
23
  import { getNextErrorDigest, parseNextHttpErrorDigest, parseNextRedirectDigest } from "./next-error-digest.js";
22
24
  import { hasDigest } from "./app-rsc-errors.js";
23
- import { buildAppPageTags } from "./implicit-tags.js";
24
- import "./app-page-stream.js";
25
25
  import { getSetCookieName } from "./cookie-utils.js";
26
26
  import { createServerActionNotFoundResponse, getServerActionNotFoundMessage, isServerActionNotFoundError } from "./server-action-not-found.js";
27
27
  import { resolveAppPageNavigationParams } from "./app-page-element-builder.js";
28
+ import "./app-page-stream.js";
29
+ import { buildAppPageTags } from "./implicit-tags.js";
28
30
  import { resolveAppPageActionRerenderTarget } from "./app-page-request.js";
29
31
  import { createRootParamsUsageController, runWithRootParamsUsage } from "../shims/root-params.js";
30
32
  import { createStaticGenerationHeadersContext } from "./app-static-generation.js";
@@ -43,50 +45,47 @@ import { markAppRscResponseConfigHeadersApplied } from "./app-rsc-response-final
43
45
  *
44
46
  * The result is awaited inside the callback because `decodeReply()` returns a
45
47
  * lazy thenable that only resolves (and imports) its references once awaited.
48
+ *
49
+ * The imports are shared with every later request that names the same modules,
50
+ * and the server-reference loader cannot see this request's execution context
51
+ * once it has been left, so the request is kept alive here until they settle.
52
+ * From here a request that starts a load cannot be told apart from one that
53
+ * joins it, so each keeps its own decode alive; it awaits that decode anyway.
46
54
  */
47
55
  function loadOutsideRequestScopes(load) {
48
- return runOutsideRequestScopes(async () => await load());
56
+ const ctx = getRequestExecutionContext();
57
+ return shareIsolatePromise(runOutsideRequestScopes(async () => await load()), ctx);
49
58
  }
50
- function parseBoundProgressiveActionReference(body, referencePrefix) {
51
- const fieldPrefix = `$ACTION_${referencePrefix}:`;
52
- const chunks = /* @__PURE__ */ new Map();
53
- for (const [key, value] of body) {
54
- if (!key.startsWith(fieldPrefix) || typeof value !== "string") continue;
55
- const chunkId = key.slice(fieldPrefix.length);
56
- if (chunks.has(chunkId)) return null;
57
- try {
58
- chunks.set(chunkId, JSON.parse(value));
59
- } catch {
60
- return null;
61
- }
62
- }
63
- const rootMetadata = chunks.get("0");
64
- if (typeof rootMetadata !== "object" || rootMetadata === null || typeof Reflect.get(rootMetadata, "id") !== "string") return null;
65
- const actionId = Reflect.get(rootMetadata, "id");
66
- const referencedActionIds = /* @__PURE__ */ new Set([actionId]);
67
- for (const chunk of chunks.values()) {
68
- const values = [chunk];
69
- while (values.length > 0) {
70
- const value = values.pop();
71
- if (typeof value === "string") {
72
- if (!value.startsWith("$h")) continue;
73
- const [encodedChunkId, ...path] = value.slice(2).split(":");
74
- const chunkId = Number.parseInt(encodedChunkId, 16);
75
- if (!Number.isSafeInteger(chunkId) || chunkId < 0) return null;
76
- let metadata = chunks.get(String(chunkId));
77
- for (const segment of path) {
78
- if (typeof metadata !== "object" || metadata === null || !Object.hasOwn(metadata, segment)) return null;
79
- metadata = Reflect.get(metadata, segment);
80
- }
81
- if (typeof metadata !== "object" || metadata === null || typeof Reflect.get(metadata, "id") !== "string") return null;
82
- referencedActionIds.add(Reflect.get(metadata, "id"));
83
- } else if (typeof value === "object" && value !== null) values.push(...Object.values(value));
84
- }
59
+ /**
60
+ * Read the action a bound `$ACTION_REF_` submission names, which Next.js checks
61
+ * before decoding (`areAllActionIdsValid()`). The bound arguments are left to
62
+ * React, which resolves their references through the route-scoped manifest.
63
+ */
64
+ function readBoundProgressiveActionId(body, referencePrefix) {
65
+ const descriptors = body.getAll(`$ACTION_${referencePrefix}:0`);
66
+ if (descriptors.length !== 1 || typeof descriptors[0] !== "string") return null;
67
+ let descriptor;
68
+ try {
69
+ descriptor = JSON.parse(descriptors[0]);
70
+ } catch {
71
+ return null;
85
72
  }
86
- return {
87
- actionId,
88
- referencedActionIds: [...referencedActionIds]
89
- };
73
+ const actionId = typeof descriptor === "object" && descriptor !== null ? Reflect.get(descriptor, "id") : void 0;
74
+ return typeof actionId === "string" ? actionId : null;
75
+ }
76
+ /**
77
+ * Scope the manifest React resolves server references through to the current
78
+ * route's Server Actions, as Next.js scopes its server module map to the
79
+ * current page. React then fails to resolve any other id wherever a payload
80
+ * carries it, so that module never loads. A denied lookup throws because React
81
+ * retries a missing `module#a#b` as module `module#a` with export `b`, which
82
+ * would reach a non-action export of an owned module.
83
+ */
84
+ function createRouteServerManifest(manifest, validateActionReferences) {
85
+ return new Proxy(manifest, { get(target, id, receiver) {
86
+ if (typeof id === "string" && !validateActionReferences([id])) throw new Error(`Server reference "${id}" is not a Server Action of this route.`);
87
+ return Reflect.get(target, id, receiver);
88
+ } });
90
89
  }
91
90
  function prepareActionPageRerenderContext(options) {
92
91
  if (options.dynamicConfig === "force-static" || options.dynamicConfig === "error") {
@@ -572,32 +571,26 @@ async function handleProgressiveServerActionRequest(options) {
572
571
  let actionKey = null;
573
572
  for (const key of body.keys()) if (key.startsWith("$ACTION_ID_") || key.startsWith("$ACTION_REF_")) actionKey = key;
574
573
  let directActionId = null;
575
- let referencedActionIds = [];
576
574
  let invalidDirectActionReference = false;
577
- if (actionKey?.startsWith("$ACTION_ID_")) {
578
- directActionId = actionKey.slice(11);
579
- referencedActionIds = [directActionId];
580
- } else if (actionKey?.startsWith("$ACTION_REF_")) {
581
- const referencePrefix = actionKey.slice(12);
582
- const reference = parseBoundProgressiveActionReference(body, referencePrefix);
583
- if (reference) {
584
- directActionId = reference.actionId;
585
- referencedActionIds = reference.referencedActionIds;
586
- } else invalidDirectActionReference = true;
575
+ if (actionKey?.startsWith("$ACTION_ID_")) directActionId = actionKey.slice(11);
576
+ else if (actionKey?.startsWith("$ACTION_REF_")) {
577
+ directActionId = readBoundProgressiveActionId(body, actionKey.slice(12));
578
+ invalidDirectActionReference = directActionId === null;
587
579
  }
588
580
  if (invalidDirectActionReference) return createActionNotFoundResponse(null, {
589
581
  clearRequestContext: options.clearRequestContext,
590
582
  getAndClearPendingCookies: options.getAndClearPendingCookies
591
583
  });
592
- if (directActionId && options.forwardAction) {
584
+ if (directActionId !== null && options.forwardAction) {
593
585
  const forwardResponse = await options.forwardAction(directActionId);
594
586
  if (forwardResponse) return forwardResponse;
595
587
  }
596
- if (options.validateActionReferences && !options.validateActionReferences(referencedActionIds)) return createActionNotFoundResponse(directActionId, {
588
+ if (directActionId !== null && !options.validateActionReferences([directActionId])) return createActionNotFoundResponse(directActionId, {
597
589
  clearRequestContext: options.clearRequestContext,
598
590
  getAndClearPendingCookies: options.getAndClearPendingCookies
599
591
  });
600
- const action = await loadOutsideRequestScopes(() => options.decodeAction(body));
592
+ const serverManifest = createRouteServerManifest(options.createServerManifest(), options.validateActionReferences);
593
+ const action = await loadOutsideRequestScopes(() => options.decodeAction(body, serverManifest));
601
594
  if (!isAppServerActionFunction(action)) {
602
595
  if (options.hasPageRoute) return createActionNotFoundResponse(null, {
603
596
  clearRequestContext: options.clearRequestContext,
@@ -676,7 +669,7 @@ async function handleProgressiveServerActionRequest(options) {
676
669
  };
677
670
  return {
678
671
  kind: "form-state",
679
- formState: await loadOutsideRequestScopes(() => options.decodeFormState(actionResult, body)) ?? null,
672
+ formState: await loadOutsideRequestScopes(() => options.decodeFormState(actionResult, body, serverManifest)) ?? null,
680
673
  pendingCookies: actionPendingCookies,
681
674
  draftCookie: actionDraftCookie,
682
675
  revalidationKind
@@ -821,8 +814,9 @@ async function handleServerActionRscRequest(options) {
821
814
  });
822
815
  action = loadedAction;
823
816
  }
817
+ const serverManifest = createRouteServerManifest(options.createServerManifest(), options.validateActionReferences);
824
818
  const temporaryReferences = options.createTemporaryReferenceSet();
825
- const args = await loadOutsideRequestScopes(() => options.decodeReply(body, { temporaryReferences }));
819
+ const args = await loadOutsideRequestScopes(() => options.decodeReply(body, serverManifest, { temporaryReferences }));
826
820
  let returnValue;
827
821
  let actionRedirect = null;
828
822
  let actionStatus = 200;
@@ -25,6 +25,12 @@ export declare function handleSsr(rscStream: ReadableStream<Uint8Array>, navCont
25
25
  value: Promise<ArrayBuffer> | null;
26
26
  };
27
27
  pprFallbackShellSignal?: AbortSignal;
28
+ /**
29
+ * Pattern of the route this render shows, whose client references load
30
+ * before it starts, or null for a render without a route (a route-miss
31
+ * 404). Omitted, every client reference loads first.
32
+ */
33
+ preloadRoutePattern?: string | null;
28
34
  formState?: ReactFormState | null;
29
35
  basePath?: string;
30
36
  /**
@@ -64,6 +70,12 @@ export declare function handleSsr(rscStream: ReadableStream<Uint8Array>, navCont
64
70
  */
65
71
  isCacheCandidate?: boolean;
66
72
  fallbackToErrorDocumentOnShellError?: boolean;
73
+ /**
74
+ * The parallel slot not-found boundaries that catch the error that
75
+ * rejected the shell, or null when none catches it. The document then
76
+ * renders again from the same payload with them caught.
77
+ */
78
+ resolveCaughtNotFoundBoundaries?: (error: unknown) => readonly string[] | null;
67
79
  dynamicStaleTimeSeconds?: number;
68
80
  getInitialNavigationCacheMetadata?: () => InitialNavigationCacheMetadata;
69
81
  }): Promise<AppSsrRenderResult>;