vinext 1.3.0 → 1.4.0

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 (529) hide show
  1. package/README.md +5 -2
  2. package/THIRD_PARTY_LICENSES.md +47 -0
  3. package/dist/_virtual/_rolldown/runtime.js +4 -3
  4. package/dist/build/action-owner-manifest.d.ts +3 -2
  5. package/dist/build/action-owner-manifest.js +18 -2
  6. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  7. package/dist/build/app-page-static-eligibility.js +80 -13
  8. package/dist/build/clean-output.d.ts +2 -1
  9. package/dist/build/client-build-config.d.ts +13 -3
  10. package/dist/build/client-build-config.js +46 -9
  11. package/dist/build/client-reference-async.d.ts +48 -0
  12. package/dist/build/client-reference-async.js +123 -0
  13. package/dist/build/client-reference-chunks.d.ts +32 -0
  14. package/dist/build/client-reference-chunks.js +111 -0
  15. package/dist/build/client-reference-groups.d.ts +9 -1
  16. package/dist/build/client-reference-groups.js +40 -2
  17. package/dist/build/css-url-assets.d.ts +2 -1
  18. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  19. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  20. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  21. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  22. package/dist/build/google-fonts/validate.d.ts +2 -1
  23. package/dist/build/inline-css.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +2 -1
  25. package/dist/build/next-client-runtime-manifests.d.ts +2 -1
  26. package/dist/build/precompress.d.ts +2 -1
  27. package/dist/build/precompress.js +1 -1
  28. package/dist/build/prerender-paths.d.ts +2 -1
  29. package/dist/build/prerender-phase.d.ts +2 -1
  30. package/dist/build/prerender-server-pool.js +1 -1
  31. package/dist/build/prerender.d.ts +3 -2
  32. package/dist/build/prerender.js +6 -5
  33. package/dist/build/report.d.ts +2 -15
  34. package/dist/build/report.js +1 -51
  35. package/dist/build/run-prerender.d.ts +2 -1
  36. package/dist/build/server-actions-encryption-key.d.ts +2 -1
  37. package/dist/build/ssr-manifest.js +25 -2
  38. package/dist/build/standalone.d.ts +2 -1
  39. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  40. package/dist/cache.js +1 -2
  41. package/dist/check.d.ts +2 -1
  42. package/dist/check.js +5 -1
  43. package/dist/cli-args.d.ts +2 -1
  44. package/dist/cli.js +5 -0
  45. package/dist/client/client-redirect-matcher.js +2 -1
  46. package/dist/client/client-redirects.d.ts +4 -3
  47. package/dist/client/client-redirects.js +2 -1
  48. package/dist/client/client-rewrites.d.ts +2 -1
  49. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  50. package/dist/client/dev-error-overlay.js +1 -1
  51. package/dist/client/index.js +1 -2
  52. package/dist/client/instrumentation-client-state.js +5 -5
  53. package/dist/client/navigation-runtime.d.ts +16 -2
  54. package/dist/client/navigation-runtime.js +2 -2
  55. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  56. package/dist/client/vinext-next-data.d.ts +25 -1
  57. package/dist/client/window-next.d.ts +2 -1
  58. package/dist/config/config-matchers.d.ts +12 -1
  59. package/dist/config/config-matchers.js +111 -16
  60. package/dist/config/dotenv.d.ts +2 -1
  61. package/dist/config/next-config.d.ts +32 -1
  62. package/dist/config/next-config.js +93 -5
  63. package/dist/config/tsconfig-paths.d.ts +2 -1
  64. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +327 -0
  65. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +123 -0
  66. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +29 -0
  67. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +134 -0
  68. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +50 -0
  69. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +455 -0
  70. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +147 -0
  71. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +169 -0
  72. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +2584 -0
  73. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +2220 -0
  74. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +227 -0
  75. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +425 -0
  76. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +427 -0
  77. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +229 -0
  78. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +292 -0
  79. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +106 -0
  80. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +182 -0
  81. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +42 -0
  82. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +147 -0
  83. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +94 -0
  84. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +95 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  105. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  106. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  107. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  108. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  109. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  110. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  111. package/dist/deps/.pnpm/safer-buffer@2.1.2/deps/safer-buffer/safer.js +45 -0
  112. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  113. package/dist/entries/app-browser-entry.d.ts +20 -5
  114. package/dist/entries/app-browser-entry.js +79 -6
  115. package/dist/entries/app-rsc-entry.d.ts +2 -1
  116. package/dist/entries/app-rsc-entry.js +59 -60
  117. package/dist/entries/app-rsc-manifest.d.ts +2 -1
  118. package/dist/entries/app-rsc-manifest.js +56 -4
  119. package/dist/entries/app-ssr-entry.js +1 -0
  120. package/dist/entries/pages-entry-helpers.js +1 -2
  121. package/dist/entries/pages-server-entry.d.ts +2 -1
  122. package/dist/entries/pages-server-entry.js +34 -9
  123. package/dist/entries/runtime-entry-module.d.ts +1 -0
  124. package/dist/entries/runtime-entry-module.js +4 -1
  125. package/dist/image/image-adapters-virtual.d.ts +2 -1
  126. package/dist/index.js +184 -103
  127. package/dist/init-cloudflare.d.ts +1 -3
  128. package/dist/init-cloudflare.js +10 -48
  129. package/dist/init-platform.d.ts +2 -0
  130. package/dist/init-platform.js +4 -0
  131. package/dist/plugins/client-compile-hints.d.ts +30 -0
  132. package/dist/plugins/client-compile-hints.js +88 -0
  133. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  134. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  135. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  136. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  137. package/dist/plugins/environment.d.ts +2 -1
  138. package/dist/plugins/extensionless-dynamic-import.js +6 -2
  139. package/dist/plugins/fonts.js +9 -12
  140. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  141. package/dist/plugins/import-meta-url.d.ts +2 -1
  142. package/dist/plugins/next-intl-catalog.d.ts +12 -0
  143. package/dist/plugins/next-intl-catalog.js +85 -0
  144. package/dist/plugins/og-assets.d.ts +2 -1
  145. package/dist/plugins/og-assets.js +2 -3
  146. package/dist/plugins/optimize-imports.d.ts +2 -1
  147. package/dist/plugins/pages-node-externals.d.ts +3 -1
  148. package/dist/plugins/pages-node-externals.js +1 -1
  149. package/dist/plugins/remove-console.d.ts +2 -1
  150. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  151. package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
  152. package/dist/plugins/rsc-client-reference-loaders.js +170 -68
  153. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  154. package/dist/plugins/sass.d.ts +2 -1
  155. package/dist/plugins/strip-server-exports.d.ts +2 -1
  156. package/dist/plugins/styled-jsx.d.ts +2 -1
  157. package/dist/plugins/transform-result.d.ts +2 -1
  158. package/dist/plugins/typeof-window.d.ts +2 -1
  159. package/dist/plugins/use-cache-callable.d.ts +1 -1
  160. package/dist/plugins/use-cache-callable.js +136 -94
  161. package/dist/plugins/worker-image-imports.js +1 -1
  162. package/dist/plugins/worker-use-server.d.ts +2 -1
  163. package/dist/routing/app-route-graph.d.ts +46 -0
  164. package/dist/routing/app-route-graph.js +131 -51
  165. package/dist/routing/browser-route-manifest.d.ts +2 -1
  166. package/dist/routing/optimistic-route-trie.d.ts +2 -1
  167. package/dist/routing/route-matching.d.ts +2 -1
  168. package/dist/routing/route-pattern.d.ts +2 -1
  169. package/dist/server/accept-encoding.d.ts +2 -1
  170. package/dist/server/api-handler.js +19 -4
  171. package/dist/server/app-action-forwarding.d.ts +2 -1
  172. package/dist/server/app-bfcache-identity.d.ts +2 -1
  173. package/dist/server/app-bfcache-identity.js +1 -1
  174. package/dist/server/app-browser-action-result.d.ts +2 -1
  175. package/dist/server/app-browser-entry.js +106 -66
  176. package/dist/server/app-browser-error.d.ts +2 -1
  177. package/dist/server/app-browser-history-controller.d.ts +7 -5
  178. package/dist/server/app-browser-history-controller.js +93 -15
  179. package/dist/server/app-browser-hydration.d.ts +2 -1
  180. package/dist/server/app-browser-interception-context.d.ts +2 -1
  181. package/dist/server/app-browser-navigation-controller.d.ts +2 -2
  182. package/dist/server/app-browser-navigation-controller.js +16 -12
  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-rsc-redirect.js +4 -4
  186. package/dist/server/app-browser-server-action-client.d.ts +4 -1
  187. package/dist/server/app-browser-server-action-client.js +4 -3
  188. package/dist/server/app-browser-state.d.ts +2 -4
  189. package/dist/server/app-browser-state.js +9 -4
  190. package/dist/server/app-browser-stream.d.ts +2 -1
  191. package/dist/server/app-browser-supplemental-refresh.js +16 -1
  192. package/dist/server/app-browser-visible-commit.d.ts +3 -2
  193. package/dist/server/app-browser-visible-commit.js +2 -12
  194. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  195. package/dist/server/app-client-reference-manifest.js +46 -0
  196. package/dist/server/app-client-reference-preloader.d.ts +25 -5
  197. package/dist/server/app-client-reference-preloader.js +22 -7
  198. package/dist/server/app-elements-wire.d.ts +8 -39
  199. package/dist/server/app-elements-wire.js +4 -41
  200. package/dist/server/app-elements.d.ts +4 -2
  201. package/dist/server/app-elements.js +4 -2
  202. package/dist/server/app-fallback-renderer.d.ts +9 -2
  203. package/dist/server/app-fallback-renderer.js +4 -1
  204. package/dist/server/app-history-state.d.ts +4 -3
  205. package/dist/server/app-history-state.js +5 -2
  206. package/dist/server/app-inline-css-client.d.ts +2 -1
  207. package/dist/server/app-metadata-tracing.d.ts +2 -1
  208. package/dist/server/app-mounted-layouts.d.ts +21 -0
  209. package/dist/server/app-mounted-layouts.js +67 -0
  210. package/dist/server/app-optimistic-routing.d.ts +37 -2
  211. package/dist/server/app-optimistic-routing.js +75 -2
  212. package/dist/server/app-page-boundary-render.d.ts +20 -2
  213. package/dist/server/app-page-boundary-render.js +224 -40
  214. package/dist/server/app-page-boundary.d.ts +34 -5
  215. package/dist/server/app-page-boundary.js +41 -8
  216. package/dist/server/app-page-cache-finalizer.d.ts +14 -2
  217. package/dist/server/app-page-cache-finalizer.js +71 -30
  218. package/dist/server/app-page-cache-render.d.ts +10 -2
  219. package/dist/server/app-page-cache-render.js +14 -2
  220. package/dist/server/app-page-cache.d.ts +13 -1
  221. package/dist/server/app-page-cache.js +33 -11
  222. package/dist/server/app-page-dispatch.d.ts +39 -11
  223. package/dist/server/app-page-dispatch.js +236 -177
  224. package/dist/server/app-page-element-builder.d.ts +19 -3
  225. package/dist/server/app-page-element-builder.js +193 -71
  226. package/dist/server/app-page-execution.d.ts +43 -51
  227. package/dist/server/app-page-execution.js +205 -92
  228. package/dist/server/app-page-head.d.ts +108 -3
  229. package/dist/server/app-page-head.js +337 -154
  230. package/dist/server/app-page-http-access-fallback-metadata.d.ts +49 -2
  231. package/dist/server/app-page-http-access-fallback-metadata.js +77 -2
  232. package/dist/server/app-page-layout-gate.d.ts +35 -0
  233. package/dist/server/app-page-layout-gate.js +50 -0
  234. package/dist/server/app-page-method.d.ts +2 -1
  235. package/dist/server/app-page-params.d.ts +0 -1
  236. package/dist/server/app-page-params.js +1 -14
  237. package/dist/server/app-page-probe.d.ts +5 -22
  238. package/dist/server/app-page-probe.js +4 -37
  239. package/dist/server/app-page-render-identity.d.ts +2 -1
  240. package/dist/server/app-page-render.d.ts +9 -13
  241. package/dist/server/app-page-render.js +108 -214
  242. package/dist/server/app-page-request.d.ts +15 -4
  243. package/dist/server/app-page-request.js +2 -2
  244. package/dist/server/app-page-response.js +3 -3
  245. package/dist/server/app-page-route-wiring.d.ts +65 -8
  246. package/dist/server/app-page-route-wiring.js +259 -103
  247. package/dist/server/app-page-rsc-render-status.d.ts +29 -2
  248. package/dist/server/app-page-rsc-render-status.js +121 -13
  249. package/dist/server/app-page-search-params-observation.d.ts +7 -2
  250. package/dist/server/app-page-search-params-observation.js +8 -1
  251. package/dist/server/app-page-segment-plan.d.ts +2 -1
  252. package/dist/server/app-page-stream.d.ts +33 -1
  253. package/dist/server/app-page-stream.js +25 -6
  254. package/dist/server/app-pages-bridge.d.ts +6 -1
  255. package/dist/server/app-pages-bridge.js +7 -3
  256. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  257. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  258. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  259. package/dist/server/app-prerender-static-params.d.ts +2 -1
  260. package/dist/server/app-render-dependency.d.ts +21 -4
  261. package/dist/server/app-render-dependency.js +100 -33
  262. package/dist/server/app-request-stage-dispatch.js +1 -1
  263. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  264. package/dist/server/app-response-stage-entry.d.ts +2 -1
  265. package/dist/server/app-route-handler-cache.d.ts +2 -1
  266. package/dist/server/app-route-handler-cache.js +2 -2
  267. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  268. package/dist/server/app-route-handler-dispatch.js +15 -10
  269. package/dist/server/app-route-handler-execution.d.ts +2 -1
  270. package/dist/server/app-route-handler-execution.js +8 -3
  271. package/dist/server/app-route-handler-policy.d.ts +1 -1
  272. package/dist/server/app-route-handler-policy.js +3 -3
  273. package/dist/server/app-route-handler-response.d.ts +2 -1
  274. package/dist/server/app-route-handler-response.js +1 -1
  275. package/dist/server/app-route-handler-runtime.d.ts +2 -1
  276. package/dist/server/app-route-handler-runtime.js +17 -4
  277. package/dist/server/app-route-module-loader.d.ts +18 -1
  278. package/dist/server/app-route-module-loader.js +8 -0
  279. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  280. package/dist/server/app-rsc-cache-busting.d.ts +2 -2
  281. package/dist/server/app-rsc-cache-busting.js +4 -4
  282. package/dist/server/app-rsc-error-handler.d.ts +4 -2
  283. package/dist/server/app-rsc-error-handler.js +9 -1
  284. package/dist/server/app-rsc-errors.d.ts +10 -1
  285. package/dist/server/app-rsc-errors.js +8 -1
  286. package/dist/server/app-rsc-handler.d.ts +7 -6
  287. package/dist/server/app-rsc-handler.js +36 -34
  288. package/dist/server/app-rsc-request-normalization.d.ts +0 -4
  289. package/dist/server/app-rsc-request-normalization.js +1 -4
  290. package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
  291. package/dist/server/app-rsc-response-finalizer.js +2 -2
  292. package/dist/server/app-rsc-response-stage.js +5 -3
  293. package/dist/server/app-rsc-route-matching.d.ts +38 -1
  294. package/dist/server/app-rsc-route-matching.js +24 -0
  295. package/dist/server/app-segment-config.d.ts +2 -1
  296. package/dist/server/app-segment-config.js +1 -14
  297. package/dist/server/app-server-action-execution.d.ts +5 -2
  298. package/dist/server/app-server-action-execution.js +10 -7
  299. package/dist/server/app-ssr-entry.d.ts +8 -0
  300. package/dist/server/app-ssr-entry.js +98 -50
  301. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  302. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  303. package/dist/server/app-ssr-stream.d.ts +22 -10
  304. package/dist/server/app-ssr-stream.js +300 -68
  305. package/dist/server/app-static-generation.d.ts +2 -1
  306. package/dist/server/app-streamed-client-references.d.ts +39 -0
  307. package/dist/server/app-streamed-client-references.js +156 -0
  308. package/dist/server/app-visited-response-cache.d.ts +38 -2
  309. package/dist/server/app-visited-response-cache.js +46 -5
  310. package/dist/server/app-worker-stages.d.ts +27 -4
  311. package/dist/server/app-worker-stages.js +45 -6
  312. package/dist/server/artifact-compatibility.d.ts +2 -2
  313. package/dist/server/artifact-compatibility.js +1 -10
  314. package/dist/server/bfcache-identity.d.ts +2 -1
  315. package/dist/server/cache-headers.d.ts +2 -1
  316. package/dist/server/cache-proof.d.ts +1 -115
  317. package/dist/server/cache-proof.js +1 -544
  318. package/dist/server/cacheability-request.d.ts +2 -1
  319. package/dist/server/cacheability-request.js +13 -8
  320. package/dist/server/config-headers.d.ts +2 -1
  321. package/dist/server/csp.d.ts +2 -1
  322. package/dist/server/default-global-not-found-module.d.ts +2 -1
  323. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  324. package/dist/server/default-http-access-fallback-modules.js +31 -0
  325. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  326. package/dist/server/defer-until-stream-consumed.js +154 -21
  327. package/dist/server/dev-lockfile.d.ts +32 -2
  328. package/dist/server/dev-lockfile.js +46 -2
  329. package/dist/server/dev-module-runner.d.ts +2 -1
  330. package/dist/server/dev-server.js +14 -6
  331. package/dist/server/fetch-handler.js +1 -2
  332. package/dist/server/file-based-metadata.d.ts +2 -1
  333. package/dist/server/framework-tracer.d.ts +2 -1
  334. package/dist/server/headers.d.ts +6 -3
  335. package/dist/server/headers.js +9 -5
  336. package/dist/server/html.d.ts +1 -0
  337. package/dist/server/html.js +19 -1
  338. package/dist/server/http-conditional.d.ts +2 -1
  339. package/dist/server/http-error-responses.d.ts +2 -1
  340. package/dist/server/implicit-tags.d.ts +2 -1
  341. package/dist/server/isr-cache.d.ts +8 -2
  342. package/dist/server/isr-cache.js +26 -1
  343. package/dist/server/metadata-route-build-data.d.ts +2 -1
  344. package/dist/server/metadata-route-build-data.js +1 -1
  345. package/dist/server/metadata-route-response.d.ts +2 -1
  346. package/dist/server/metadata-route-response.js +32 -15
  347. package/dist/server/metadata-routes.d.ts +2 -1
  348. package/dist/server/middleware-runtime.d.ts +2 -1
  349. package/dist/server/multi-stage.d.ts +52 -11
  350. package/dist/server/multi-stage.js +13 -1
  351. package/dist/server/navigation-planner.js +1 -1
  352. package/dist/server/navigation-trace.d.ts +2 -1
  353. package/dist/server/next-error-digest.d.ts +2 -1
  354. package/dist/server/nitro-public-files-plugin.d.ts +2 -1
  355. package/dist/server/nitro-public-files.d.ts +2 -1
  356. package/dist/server/opentelemetry-api.d.ts +2 -1
  357. package/dist/server/operation-token.d.ts +2 -1
  358. package/dist/server/pages-api-route.d.ts +2 -1
  359. package/dist/server/pages-api-route.js +28 -19
  360. package/dist/server/pages-asset-tags.d.ts +2 -1
  361. package/dist/server/pages-body-parser-config.d.ts +2 -1
  362. package/dist/server/pages-client-assets.d.ts +4 -0
  363. package/dist/server/pages-data-route.d.ts +2 -1
  364. package/dist/server/pages-document-asset-props.d.ts +2 -1
  365. package/dist/server/pages-document-initial-props.d.ts +2 -1
  366. package/dist/server/pages-execution-tracing.d.ts +2 -1
  367. package/dist/server/pages-execution-tracing.js +1 -1
  368. package/dist/server/pages-get-initial-props.d.ts +2 -1
  369. package/dist/server/pages-media-type.d.ts +21 -1
  370. package/dist/server/pages-media-type.js +69 -5
  371. package/dist/server/pages-node-compat.js +52 -27
  372. package/dist/server/pages-page-data.d.ts +7 -1
  373. package/dist/server/pages-page-data.js +35 -12
  374. package/dist/server/pages-page-handler.d.ts +3 -2
  375. package/dist/server/pages-page-handler.js +27 -27
  376. package/dist/server/pages-page-method.d.ts +2 -1
  377. package/dist/server/pages-page-response.d.ts +2 -1
  378. package/dist/server/pages-preview.d.ts +2 -1
  379. package/dist/server/pages-readiness.d.ts +2 -1
  380. package/dist/server/pages-request-pipeline.d.ts +10 -1
  381. package/dist/server/pages-request-pipeline.js +6 -7
  382. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  383. package/dist/server/pages-request-stage-entry.js +14 -12
  384. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  385. package/dist/server/pages-response-stage-entry.js +9 -3
  386. package/dist/server/pages-route-data-kind.d.ts +2 -1
  387. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  388. package/dist/server/prerender-route-params.d.ts +2 -1
  389. package/dist/server/prod-server.js +14 -4
  390. package/dist/server/request-log.d.ts +2 -1
  391. package/dist/server/request-pipeline.d.ts +6 -0
  392. package/dist/server/request-pipeline.js +21 -1
  393. package/dist/server/request-tracing.d.ts +2 -1
  394. package/dist/server/request-tracing.js +1 -1
  395. package/dist/server/response-start-tracing.js +7 -29
  396. package/dist/server/rsc-render-stream.d.ts +4 -0
  397. package/dist/server/rsc-render-stream.js +25 -0
  398. package/dist/server/seed-cache.d.ts +2 -1
  399. package/dist/server/seed-cache.js +1 -1
  400. package/dist/server/shared-cache-identity.d.ts +23 -0
  401. package/dist/server/shared-cache-identity.js +36 -0
  402. package/dist/server/static-file-cache.d.ts +2 -1
  403. package/dist/server/static-file-cache.js +1 -0
  404. package/dist/server/worker-revalidation-context.d.ts +2 -1
  405. package/dist/server/worker-stages.d.ts +18 -4
  406. package/dist/server/worker-stages.js +23 -4
  407. package/dist/shims/app.d.ts +2 -1
  408. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  409. package/dist/shims/cache-handler.d.ts +8 -3
  410. package/dist/shims/cache-handler.js +31 -11
  411. package/dist/shims/cache-request-state.d.ts +17 -20
  412. package/dist/shims/cache-request-state.js +16 -21
  413. package/dist/shims/cache-runtime.js +27 -11
  414. package/dist/shims/cache.d.ts +8 -7
  415. package/dist/shims/cache.js +17 -19
  416. package/dist/shims/cacheability-classification.d.ts +2 -0
  417. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  418. package/dist/shims/caught-not-found-boundaries.js +48 -0
  419. package/dist/shims/cdn-cache.d.ts +22 -5
  420. package/dist/shims/cdn-purge-routes.d.ts +2 -1
  421. package/dist/shims/client-locale.js +2 -1
  422. package/dist/shims/client-page-root.d.ts +2 -1
  423. package/dist/shims/client-page-root.js +2 -2
  424. package/dist/shims/config.d.ts +2 -1
  425. package/dist/shims/default-forbidden.d.ts +4 -0
  426. package/dist/shims/default-forbidden.js +18 -0
  427. package/dist/shims/default-not-found.d.ts +0 -5
  428. package/dist/shims/default-not-found.js +5 -41
  429. package/dist/shims/default-unauthorized.d.ts +4 -0
  430. package/dist/shims/default-unauthorized.js +18 -0
  431. package/dist/shims/dynamic.js +9 -6
  432. package/dist/shims/error-boundary.d.ts +39 -3
  433. package/dist/shims/error-boundary.js +33 -18
  434. package/dist/shims/fetch-cache-state.d.ts +5 -1
  435. package/dist/shims/fetch-cache-state.js +1 -3
  436. package/dist/shims/fetch-cache.d.ts +2 -1
  437. package/dist/shims/fetch-cache.js +34 -24
  438. package/dist/shims/font-google.js +1 -2
  439. package/dist/shims/font-utils.d.ts +3 -2
  440. package/dist/shims/font-utils.js +5 -3
  441. package/dist/shims/form.js +3 -3
  442. package/dist/shims/headers.d.ts +8 -23
  443. package/dist/shims/headers.js +17 -67
  444. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  445. package/dist/shims/http-access-error-fallback.js +47 -0
  446. package/dist/shims/image.d.ts +1 -22
  447. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  448. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  449. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  450. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  451. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  452. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  453. package/dist/shims/internal/client-reference-loader.js +91 -0
  454. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  455. package/dist/shims/internal/cookies.js +1 -2
  456. package/dist/shims/internal/headers-state.d.ts +2 -0
  457. package/dist/shims/internal/headers-state.js +6 -1
  458. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
  459. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  460. package/dist/shims/internal/navigation-untracked.js +1 -1
  461. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  462. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  463. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  464. package/dist/shims/link.js +197 -52
  465. package/dist/shims/metadata.d.ts +52 -29
  466. package/dist/shims/metadata.js +142 -42
  467. package/dist/shims/navigation-errors.d.ts +2 -1
  468. package/dist/shims/navigation-server.js +1 -1
  469. package/dist/shims/navigation.d.ts +95 -8
  470. package/dist/shims/navigation.js +255 -47
  471. package/dist/shims/navigation.react-server.js +2 -2
  472. package/dist/shims/pages-router-runtime.d.ts +2 -1
  473. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  474. package/dist/shims/request-state-types.d.ts +2 -2
  475. package/dist/shims/router.js +14 -3
  476. package/dist/shims/slot.d.ts +12 -0
  477. package/dist/shims/slot.js +37 -9
  478. package/dist/shims/unified-request-context.d.ts +1 -1
  479. package/dist/shims/unified-request-context.js +5 -6
  480. package/dist/typegen.d.ts +2 -1
  481. package/dist/utils/cache-control-metadata.d.ts +5 -0
  482. package/dist/utils/cache-control-metadata.js +9 -1
  483. package/dist/utils/client-build-manifest.d.ts +4 -1
  484. package/dist/utils/client-build-manifest.js +9 -2
  485. package/dist/utils/client-entry-manifest.d.ts +13 -0
  486. package/dist/utils/client-entry-manifest.js +20 -1
  487. package/dist/utils/client-reference-chunks.d.ts +45 -0
  488. package/dist/utils/client-reference-chunks.js +30 -0
  489. package/dist/utils/client-runtime-metadata.d.ts +9 -1
  490. package/dist/utils/client-runtime-metadata.js +40 -9
  491. package/dist/utils/compare.d.ts +9 -0
  492. package/dist/utils/compare.js +15 -1
  493. package/dist/utils/lazy-chunks.d.ts +14 -0
  494. package/dist/utils/lazy-chunks.js +27 -1
  495. package/dist/utils/middleware-request-headers.d.ts +2 -1
  496. package/dist/utils/project.d.ts +4 -3
  497. package/dist/utils/project.js +12 -17
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/regex.d.ts +5 -0
  500. package/dist/utils/regex.js +11 -1
  501. package/dist/utils/text-stream.d.ts +10 -5
  502. package/dist/utils/text-stream.js +6 -6
  503. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  504. package/package.json +6 -5
  505. package/dist/build/layout-classification-types.d.ts +0 -60
  506. package/dist/build/layout-classification-types.js +0 -1
  507. package/dist/build/layout-classification.d.ts +0 -61
  508. package/dist/build/layout-classification.js +0 -98
  509. package/dist/build/route-classification-injector.d.ts +0 -32
  510. package/dist/build/route-classification-injector.js +0 -59
  511. package/dist/build/route-classification-manifest.d.ts +0 -53
  512. package/dist/build/route-classification-manifest.js +0 -143
  513. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  514. package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -10
  515. package/dist/server/app-browser-client-reuse-manifest.js +0 -101
  516. package/dist/server/app-layout-param-observation.d.ts +0 -41
  517. package/dist/server/app-layout-param-observation.js +0 -168
  518. package/dist/server/client-reuse-manifest.d.ts +0 -102
  519. package/dist/server/client-reuse-manifest.js +0 -209
  520. package/dist/server/default-not-found-module.d.ts +0 -19
  521. package/dist/server/default-not-found-module.js +0 -18
  522. package/dist/server/rsc-stream-hints.d.ts +0 -21
  523. package/dist/server/rsc-stream-hints.js +0 -227
  524. package/dist/server/skip-cache-proof.d.ts +0 -60
  525. package/dist/server/skip-cache-proof.js +0 -168
  526. package/dist/server/static-layout-client-reuse-proof.d.ts +0 -13
  527. package/dist/server/static-layout-client-reuse-proof.js +0 -33
  528. package/dist/utils/sorted-array.d.ts +0 -7
  529. package/dist/utils/sorted-array.js +0 -20
@@ -131,7 +131,7 @@ function createStaticSegmentGraph(routes) {
131
131
  treePath
132
132
  });
133
133
  }
134
- addRouteManifestSegmentErrorBoundaryFacts({
134
+ addRouteManifestSegmentBoundaryFacts({
135
135
  boundaries,
136
136
  route
137
137
  });
@@ -303,19 +303,42 @@ function addRouteManifestBoundaryFacts(input) {
303
303
  addRouteManifestBoundaryFact(input, "forbidden", input.route.forbiddenPaths[input.layoutIndex]);
304
304
  addRouteManifestBoundaryFact(input, "unauthorized", input.route.unauthorizedPaths[input.layoutIndex]);
305
305
  }
306
- function addRouteManifestSegmentErrorBoundaryFacts(input) {
307
- for (const [index, boundaryPath] of (input.route.errorPaths ?? []).entries()) {
308
- const treePosition = input.route.errorTreePositions?.[index];
309
- assertRouteManifestBoundaryTreePosition(input.route, boundaryPath, treePosition);
310
- const ownerLayoutId = findRouteManifestOwnerLayoutId(input.route, treePosition);
306
+ function addRouteManifestSegmentBoundaryFacts(input) {
307
+ const { route } = input;
308
+ const segmentBoundaries = [
309
+ [
310
+ "error",
311
+ route.errorPaths,
312
+ route.errorTreePositions
313
+ ],
314
+ [
315
+ "notFound",
316
+ route.segmentNotFoundPaths,
317
+ route.segmentNotFoundTreePositions
318
+ ],
319
+ [
320
+ "forbidden",
321
+ route.segmentForbiddenPaths,
322
+ route.segmentForbiddenTreePositions
323
+ ],
324
+ [
325
+ "unauthorized",
326
+ route.segmentUnauthorizedPaths,
327
+ route.segmentUnauthorizedTreePositions
328
+ ]
329
+ ];
330
+ for (const [outcome, boundaryPaths, treePositions] of segmentBoundaries) for (const [index, boundaryPath] of (boundaryPaths ?? []).entries()) {
331
+ const treePosition = treePositions?.[index];
332
+ assertRouteManifestBoundaryTreePosition(route, boundaryPath, treePosition);
333
+ const ownerLayoutId = findRouteManifestOwnerLayoutId(route, treePosition);
311
334
  if (ownerLayoutId !== null) continue;
312
- const treePath = createAppRouteGraphTreePath(input.route.routeSegments, treePosition);
335
+ const treePath = createAppRouteGraphTreePath(route.routeSegments, treePosition);
313
336
  addRouteManifestBoundaryFact({
314
337
  boundaries: input.boundaries,
315
- route: input.route,
338
+ route,
316
339
  layoutId: ownerLayoutId,
317
340
  treePath
318
- }, "error", boundaryPath);
341
+ }, outcome, boundaryPath);
319
342
  }
320
343
  }
321
344
  function addRouteManifestBoundaryFact(input, outcome, boundaryPath) {
@@ -458,14 +481,11 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
458
481
  const subPage = slotPages.get(slot.key);
459
482
  if (subPage !== void 0) {
460
483
  const configLayoutPaths = findSlotConfigLayoutPaths(slot.ownerDir, subPage, matcher);
461
- const notFoundBoundary = findSlotNotFoundBoundary(slot.ownerDir, subPage, matcher);
462
484
  return withSlotLoadingEntries({
463
485
  ...slot,
464
486
  pagePath: subPage,
465
487
  configLayoutPaths,
466
488
  configLayoutTreePositions: findSlotConfigLayoutTreePositions(slot.ownerDir, configLayoutPaths),
467
- notFoundPath: notFoundBoundary.path,
468
- notFoundTreePosition: notFoundBoundary.treePosition,
469
489
  routeSegments: rawSegments
470
490
  }, subPage, matcher);
471
491
  }
@@ -547,14 +567,11 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
547
567
  const subSlots = parentRoute.parallelSlots.map((slot) => {
548
568
  const subPage = slotPages.get(slot.key);
549
569
  const configLayoutPaths = findSlotConfigLayoutPaths(slot.ownerDir, subPage ?? null, matcher);
550
- const notFoundBoundary = findSlotNotFoundBoundary(slot.ownerDir, subPage ?? null, matcher);
551
570
  return withSlotLoadingEntries({
552
571
  ...slot,
553
572
  pagePath: subPage || null,
554
573
  configLayoutPaths,
555
574
  configLayoutTreePositions: findSlotConfigLayoutTreePositions(slot.ownerDir, configLayoutPaths),
556
- notFoundPath: notFoundBoundary.path,
557
- notFoundTreePosition: notFoundBoundary.treePosition,
558
575
  routeSegments: subPage ? rawSegments : null
559
576
  }, subPage ?? null, matcher);
560
577
  });
@@ -593,6 +610,12 @@ function discoverSlotSubRoutes(routes, matcher, ghostParents = []) {
593
610
  unauthorizedPath: parentRoute.unauthorizedPath,
594
611
  unauthorizedTreePosition: parentRoute.unauthorizedTreePosition,
595
612
  unauthorizedPaths: parentRoute.unauthorizedPaths,
613
+ segmentNotFoundPaths: parentRoute.segmentNotFoundPaths,
614
+ segmentNotFoundTreePositions: parentRoute.segmentNotFoundTreePositions,
615
+ segmentForbiddenPaths: parentRoute.segmentForbiddenPaths,
616
+ segmentForbiddenTreePositions: parentRoute.segmentForbiddenTreePositions,
617
+ segmentUnauthorizedPaths: parentRoute.segmentUnauthorizedPaths,
618
+ segmentUnauthorizedTreePositions: parentRoute.segmentUnauthorizedTreePositions,
596
619
  routeSegments: [...parentRoute.routeSegments, ...rawSegments],
597
620
  childrenRouteSegments: childrenDefault ? parentRoute.routeSegments : void 0,
598
621
  templateTreePositions: parentRoute.templateTreePositions,
@@ -679,53 +702,61 @@ function findSlotConfigLayoutTreePositions(slotDir, layoutPaths) {
679
702
  return relativeDir ? relativeDir.split(path.sep).filter(Boolean).length : 0;
680
703
  });
681
704
  }
705
+ /**
706
+ * The tree position of a slot's active page relative to the slot root, in the
707
+ * coordinates of configLayoutTreePositions. Route groups count, unlike in
708
+ * `routeSegments`, since each is its own loader-tree segment.
709
+ */
710
+ function findSlotPageTreePosition(slot) {
711
+ return slot.pagePath ? findSlotConfigLayoutTreePositions(slot.ownerDir, [slot.pagePath])[0] : null;
712
+ }
682
713
  function findSlotLoadingEntries(slotDir, pagePath, matcher) {
714
+ return findSlotSegmentFileEntries(slotDir, pagePath, "loading", matcher);
715
+ }
716
+ /** Find a convention file in each directory from the slot root to the page, outermost first. */
717
+ function findSlotSegmentFileEntries(slotDir, pagePath, fileName, matcher) {
683
718
  const pageDir = pagePath ? path.dirname(pagePath) : slotDir;
684
719
  if (pageDir !== slotDir && !pageDir.startsWith(`${slotDir}${path.sep}`)) return [];
685
720
  const relativeDir = path.relative(slotDir, pageDir);
686
721
  const segments = relativeDir ? relativeDir.split(path.sep).filter(Boolean) : [];
687
- const loadings = [];
722
+ const entries = [];
688
723
  let currentDir = slotDir;
689
- const rootLoading = findFile(currentDir, "loading", matcher);
690
- if (rootLoading) loadings.push({
691
- path: rootLoading,
724
+ const rootEntry = findFile(currentDir, fileName, matcher);
725
+ if (rootEntry) entries.push({
726
+ path: rootEntry,
692
727
  treePosition: 0
693
728
  });
694
729
  for (let index = 0; index < segments.length; index++) {
695
730
  currentDir = path.join(currentDir, segments[index]);
696
- const loading = findFile(currentDir, "loading", matcher);
697
- if (loading) loadings.push({
698
- path: loading,
731
+ const entry = findFile(currentDir, fileName, matcher);
732
+ if (entry) entries.push({
733
+ path: entry,
699
734
  treePosition: index + 1
700
735
  });
701
736
  }
702
- return loadings;
737
+ return entries;
703
738
  }
704
739
  function withSlotLoadingEntries(slot, pagePath, matcher) {
705
740
  const loadingEntries = findSlotLoadingEntries(slot.ownerDir, pagePath, matcher);
706
741
  return {
707
742
  ...slot,
708
743
  loadingPaths: loadingEntries.map((entry) => entry.path),
709
- loadingTreePositions: loadingEntries.map((entry) => entry.treePosition)
744
+ loadingTreePositions: loadingEntries.map((entry) => entry.treePosition),
745
+ ...findSlotNotFoundFields(slot.ownerDir, pagePath, matcher)
710
746
  };
711
747
  }
712
- function findSlotNotFoundBoundary(slotDir, pagePath, matcher) {
713
- let dir = pagePath ? path.dirname(pagePath) : slotDir;
714
- while (dir === slotDir || dir.startsWith(`${slotDir}${path.sep}`)) {
715
- const boundaryPath = findFile(dir, "not-found", matcher);
716
- if (boundaryPath) {
717
- const relativeDir = path.relative(slotDir, dir);
718
- return {
719
- path: boundaryPath,
720
- treePosition: relativeDir ? relativeDir.split(path.sep).filter(Boolean).length : 0
721
- };
722
- }
723
- if (dir === slotDir) break;
724
- dir = path.dirname(dir);
725
- }
748
+ /**
749
+ * Every not-found convention on the slot's active branch, plus the nearest one,
750
+ * which supplies the slot's not-found metadata.
751
+ */
752
+ function findSlotNotFoundFields(slotDir, pagePath, matcher) {
753
+ const entries = findSlotSegmentFileEntries(slotDir, pagePath, "not-found", matcher);
754
+ const nearest = entries.at(-1);
726
755
  return {
727
- path: null,
728
- treePosition: null
756
+ notFoundPath: nearest?.path ?? null,
757
+ notFoundTreePosition: nearest?.treePosition ?? null,
758
+ notFoundPaths: entries.map((entry) => entry.path),
759
+ notFoundTreePositions: entries.map((entry) => entry.treePosition)
729
760
  };
730
761
  }
731
762
  /**
@@ -801,6 +832,10 @@ function directoryToAppRoute(dir, appDir, matcher, pagePath, routePath, includeN
801
832
  const notFoundPaths = discoverBoundaryFilePerLayout(layouts, "not-found", matcher);
802
833
  const forbiddenPaths = discoverBoundaryFilePerLayout(layouts, "forbidden", matcher);
803
834
  const unauthorizedPaths = discoverBoundaryFilePerLayout(layouts, "unauthorized", matcher);
835
+ const discoverPageSegmentBoundaryFiles = (fileName) => pagePath === null && routePath !== null ? [] : discoverSegmentBoundaryFiles(segments, appDir, fileName, matcher);
836
+ const segmentNotFounds = discoverPageSegmentBoundaryFiles("not-found");
837
+ const segmentForbiddens = discoverPageSegmentBoundaryFiles("forbidden");
838
+ const segmentUnauthorizeds = discoverPageSegmentBoundaryFiles("unauthorized");
804
839
  const parallelSlots = discoverInheritedParallelSlots(segments, appDir, routeDir, matcher, includeNestedOnlySlots);
805
840
  return {
806
841
  ids: createAppRouteSemanticIds({
@@ -833,6 +868,12 @@ function directoryToAppRoute(dir, appDir, matcher, pagePath, routePath, includeN
833
868
  forbiddenTreePosition: forbiddenEntry?.treePosition ?? null,
834
869
  unauthorizedPath,
835
870
  unauthorizedTreePosition: unauthorizedEntry?.treePosition ?? null,
871
+ segmentNotFoundPaths: segmentNotFounds.map((entry) => entry.path),
872
+ segmentNotFoundTreePositions: segmentNotFounds.map((entry) => entry.treePosition),
873
+ segmentForbiddenPaths: segmentForbiddens.map((entry) => entry.path),
874
+ segmentForbiddenTreePositions: segmentForbiddens.map((entry) => entry.treePosition),
875
+ segmentUnauthorizedPaths: segmentUnauthorizeds.map((entry) => entry.path),
876
+ segmentUnauthorizedTreePositions: segmentUnauthorizeds.map((entry) => entry.treePosition),
836
877
  unauthorizedPaths,
837
878
  routeSegments: segments,
838
879
  templateTreePositions,
@@ -1034,6 +1075,24 @@ function discoverBoundaryFileEntry(segments, appDir, fileName, matcher) {
1034
1075
  return null;
1035
1076
  }
1036
1077
  /**
1078
+ * Discover boundary files (not-found, forbidden, unauthorized) by segment tree
1079
+ * position. As with error.tsx, Next.js wraps each segment's children in its
1080
+ * boundary whether or not the segment has a layout.
1081
+ */
1082
+ function discoverSegmentBoundaryFiles(segments, appDir, fileName, matcher) {
1083
+ const boundaries = [];
1084
+ let currentDir = appDir;
1085
+ for (let index = 0; index <= segments.length; index++) {
1086
+ if (index > 0) currentDir = path.join(currentDir, segments[index - 1]);
1087
+ const boundary = findFile(currentDir, fileName, matcher);
1088
+ if (boundary) boundaries.push({
1089
+ path: boundary,
1090
+ treePosition: index
1091
+ });
1092
+ }
1093
+ return boundaries;
1094
+ }
1095
+ /**
1037
1096
  * Discover boundary files (not-found, forbidden, unauthorized) at each layout directory.
1038
1097
  * Returns an array aligned with the layouts array, where each entry is the boundary
1039
1098
  * file at that layout's directory, or null if none exists there.
@@ -1271,7 +1330,6 @@ function discoverParallelSlots(dir, appDir, matcher, includeNestedOnlySlots = fa
1271
1330
  const ownerTreePath = createAppRouteGraphTreePath(ownerSegments, ownerSegments.length);
1272
1331
  const configLayoutPaths = findSlotConfigLayoutPaths(slotDir, pagePath, matcher);
1273
1332
  const loadingEntries = findSlotLoadingEntries(slotDir, pagePath, matcher);
1274
- const notFoundBoundary = findSlotNotFoundBoundary(slotDir, pagePath, matcher);
1275
1333
  slots.push({
1276
1334
  id: createAppRouteGraphSlotId(slotName, ownerTreePath),
1277
1335
  key: `${slotName}@${path.relative(appDir, slotDir)}`,
@@ -1289,8 +1347,7 @@ function discoverParallelSlots(dir, appDir, matcher, includeNestedOnlySlots = fa
1289
1347
  loadingPaths: loadingEntries.map((loading) => loading.path),
1290
1348
  loadingTreePositions: loadingEntries.map((loading) => loading.treePosition),
1291
1349
  errorPath: findFile(slotDir, "error", matcher),
1292
- notFoundPath: notFoundBoundary.path,
1293
- notFoundTreePosition: notFoundBoundary.treePosition,
1350
+ ...findSlotNotFoundFields(slotDir, pagePath, matcher),
1294
1351
  interceptingRoutes,
1295
1352
  layoutIndex: -1,
1296
1353
  routeSegments: pagePath ? [] : null
@@ -1440,7 +1497,7 @@ function findOwnerRouteForDir(dir, appDir, routes, routesByDir) {
1440
1497
  * Recursively scan a directory tree for page.tsx files that are inside
1441
1498
  * intercepting route directories.
1442
1499
  */
1443
- function scanForInterceptingPages(currentDir, slotRootDir, routeDir, appDir, results, matcher, parentLoadingEntries = []) {
1500
+ function scanForInterceptingPages(currentDir, slotRootDir, routeDir, appDir, results, matcher, parentLoadingEntries = [], parentLayoutPaths = []) {
1444
1501
  if (!fs.existsSync(currentDir)) return;
1445
1502
  const entries = fs.readdirSync(currentDir, { withFileTypes: true });
1446
1503
  for (const entry of entries) {
@@ -1450,13 +1507,14 @@ function scanForInterceptingPages(currentDir, slotRootDir, routeDir, appDir, res
1450
1507
  const interceptDir = path.join(currentDir, entry.name);
1451
1508
  if (interceptMatch) {
1452
1509
  const restOfName = entry.name.slice(interceptMatch.prefix.length);
1453
- collectInterceptingPages(interceptDir, interceptDir, interceptMatch.convention, restOfName, routeDir, appDir, currentDir, slotRootDir, results, matcher, [], parentLoadingEntries, path.relative(slotRootDir, currentDir).split(path.sep).filter(Boolean).length);
1510
+ collectInterceptingPages(interceptDir, interceptDir, interceptMatch.convention, restOfName, routeDir, appDir, currentDir, slotRootDir, results, matcher, parentLayoutPaths, parentLoadingEntries, path.relative(slotRootDir, currentDir).split(path.sep).filter(Boolean).length);
1454
1511
  } else {
1512
+ const layout = findFile(interceptDir, "layout", matcher);
1455
1513
  const loading = findFile(interceptDir, "loading", matcher);
1456
1514
  scanForInterceptingPages(interceptDir, slotRootDir, routeDir, appDir, results, matcher, loading ? [...parentLoadingEntries, {
1457
1515
  path: loading,
1458
1516
  treePosition: path.relative(slotRootDir, interceptDir).split(path.sep).filter(Boolean).length
1459
- }] : parentLoadingEntries);
1517
+ }] : parentLoadingEntries, layout ? [...parentLayoutPaths, layout] : parentLayoutPaths);
1460
1518
  }
1461
1519
  }
1462
1520
  }
@@ -1486,7 +1544,15 @@ function collectInterceptingPages(currentDir, interceptRoot, convention, interce
1486
1544
  const targetPattern = computeInterceptTarget(convention, interceptSegment, currentDir, interceptRoot, routeDir, appDir);
1487
1545
  if (targetPattern) {
1488
1546
  const sourceMatchPattern = computeInterceptSourceMatchPattern(interceptParentDir, appDir);
1489
- const notFoundBoundary = findSlotNotFoundBoundary(slotRootDir ?? interceptRoot, page, matcher);
1547
+ const notFoundTreePositionOffset = slotRootDir ? 0 : 1;
1548
+ const notFoundFields = findSlotNotFoundFields(slotRootDir ?? interceptRoot, page, matcher);
1549
+ const findInterceptBoundaries = (fileName) => findSlotSegmentFileEntries(slotRootDir ?? interceptRoot, page, fileName, matcher).map((entry) => ({
1550
+ path: entry.path,
1551
+ treePosition: entry.treePosition + notFoundTreePositionOffset
1552
+ }));
1553
+ const forbiddenBoundaries = findInterceptBoundaries("forbidden");
1554
+ const unauthorizedBoundaries = findInterceptBoundaries("unauthorized");
1555
+ const errorBoundaries = findInterceptBoundaries("error");
1490
1556
  const slotParentSegments = slotRootDir ? path.relative(slotRootDir, interceptParentDir).split(path.sep).filter(Boolean) : [];
1491
1557
  const branchSegments = [
1492
1558
  ...slotParentSegments,
@@ -1498,7 +1564,9 @@ function collectInterceptingPages(currentDir, interceptRoot, convention, interce
1498
1564
  convention,
1499
1565
  layoutPaths: [...layoutPaths],
1500
1566
  layoutSegments: layoutPaths.map((layoutPath) => {
1501
- const relativeDir = path.relative(interceptRoot, path.dirname(layoutPath));
1567
+ const layoutDir = path.dirname(layoutPath);
1568
+ if (slotRootDir && layoutDir !== interceptRoot && !layoutDir.startsWith(`${interceptRoot}${path.sep}`)) return path.relative(slotRootDir, layoutDir).split(path.sep).filter(Boolean);
1569
+ const relativeDir = path.relative(interceptRoot, layoutDir);
1502
1570
  return [
1503
1571
  ...slotParentSegments,
1504
1572
  interceptSegment,
@@ -1508,8 +1576,20 @@ function collectInterceptingPages(currentDir, interceptRoot, convention, interce
1508
1576
  loadingPaths: loadingEntries.map((loading) => loading.path),
1509
1577
  loadingTreePositions: loadingEntries.map((loading) => loading.treePosition),
1510
1578
  notFoundBranchSegments: branchSegments,
1511
- notFoundPath: notFoundBoundary.path,
1512
- notFoundTreePosition: notFoundBoundary.treePosition === null ? null : slotRootDir ? notFoundBoundary.treePosition : notFoundBoundary.treePosition + 1,
1579
+ notFoundPath: notFoundFields.notFoundPath,
1580
+ notFoundTreePosition: notFoundFields.notFoundTreePosition == null ? null : notFoundFields.notFoundTreePosition + notFoundTreePositionOffset,
1581
+ notFoundPaths: notFoundFields.notFoundPaths,
1582
+ notFoundTreePositions: notFoundFields.notFoundTreePositions?.map((treePosition) => treePosition + notFoundTreePositionOffset),
1583
+ forbiddenPath: forbiddenBoundaries.at(-1)?.path ?? null,
1584
+ forbiddenTreePosition: forbiddenBoundaries.at(-1)?.treePosition ?? null,
1585
+ forbiddenPaths: forbiddenBoundaries.map((boundary) => boundary.path),
1586
+ forbiddenTreePositions: forbiddenBoundaries.map((boundary) => boundary.treePosition),
1587
+ unauthorizedPath: unauthorizedBoundaries.at(-1)?.path ?? null,
1588
+ unauthorizedTreePosition: unauthorizedBoundaries.at(-1)?.treePosition ?? null,
1589
+ unauthorizedPaths: unauthorizedBoundaries.map((boundary) => boundary.path),
1590
+ unauthorizedTreePositions: unauthorizedBoundaries.map((boundary) => boundary.treePosition),
1591
+ errorPaths: errorBoundaries.map((boundary) => boundary.path),
1592
+ errorTreePositions: errorBoundaries.map((boundary) => boundary.treePosition),
1513
1593
  targetPattern: targetPattern.pattern,
1514
1594
  sourceMatchPattern,
1515
1595
  pagePath: page,
@@ -1751,4 +1831,4 @@ function computeAppRouteStaticSiblings(allRoutes, matchedRoute) {
1751
1831
  return Array.from(siblings);
1752
1832
  }
1753
1833
  //#endregion
1754
- export { buildAppRouteGraph, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, findOwnerRouteForDir, isInvisibleSegment, patternsStructurallyEquivalent };
1834
+ export { buildAppRouteGraph, computeAppRouteStaticSiblings, computeRootParamNames, convertSegmentsToRouteParts, findOwnerRouteForDir, findSlotPageTreePosition, isInvisibleSegment, patternsStructurallyEquivalent };
@@ -40,4 +40,5 @@ export type BrowserRouteManifestWire = {
40
40
  };
41
41
  export declare function toBrowserRouteManifestWire(routeManifest: RouteManifest): BrowserRouteManifestWire;
42
42
  export declare function decodeBrowserRouteManifest(wire: BrowserRouteManifestWire): BrowserRouteManifest;
43
- //#endregion
43
+ //#endregion
44
+ export {};
@@ -24,4 +24,5 @@ export type OptimisticRouteTrieMatch<Route extends OptimisticTrieRoute> = {
24
24
  };
25
25
  export declare function buildOptimisticRouteTrie<Route extends OptimisticTrieRoute>(routes: Iterable<Route>, onDynamicSegmentConflict?: (existingParamName: string, part: string) => void): OptimisticRouteTrieNode<Route>;
26
26
  export declare function matchOptimisticRouteTrie<Route extends OptimisticTrieRoute>(trie: OptimisticRouteTrieNode<Route>, urlParts: readonly string[]): OptimisticRouteTrieMatch<Route> | null;
27
- //#endregion
27
+ //#endregion
28
+ export {};
@@ -35,4 +35,5 @@ export declare function matchRouteWithTrieRawPathname<R extends {
35
35
  route: R;
36
36
  params: Record<string, string | string[]>;
37
37
  } | null;
38
- //#endregion
38
+ //#endregion
39
+ export {};
@@ -68,4 +68,5 @@ export declare function normalizeStaticPathname(pathname: string): string;
68
68
  * locale handling should be added here, not duplicated at call sites.
69
69
  */
70
70
  export declare function normalizeStaticPathsEntry(entry: StaticPathsEntry, routePattern: string): NormalizedStaticPathsEntry;
71
- //#endregion
71
+ //#endregion
72
+ export {};
@@ -23,4 +23,5 @@ export declare function selectContentEncoding<T extends ContentEncoding>(parsed:
23
23
  export declare const HAS_ZSTD: boolean;
24
24
  /** Select by client q-value first, then zstd > br > gzip > deflate > identity. */
25
25
  export declare function negotiateEncoding(req: IncomingMessage): NegotiatedEncoding;
26
- //#endregion
26
+ //#endregion
27
+ export {};
@@ -7,13 +7,14 @@ import { importModule, reportRequestError } from "./instrumentation.js";
7
7
  import { mergeRouteParamsIntoQuery, parseQueryString, urlQueryToSearchParams } from "../utils/query.js";
8
8
  import { tracePagesApiHandler } from "./pages-execution-tracing.js";
9
9
  import { DEFAULT_PAGES_API_BODY_SIZE_LIMIT, resolveBodyParserConfig } from "./pages-body-parser-config.js";
10
- import { PagesBodyParseError, getMediaType, isJsonMediaType } from "./pages-media-type.js";
10
+ import { PagesBodyParseError, createPagesBodyDecoder, isJsonMediaType } from "./pages-media-type.js";
11
11
  import { performOnDemandRevalidate } from "./pages-revalidate.js";
12
12
  import { attachPagesPreviewApi, attachPagesRequestCookies } from "./pages-node-compat.js";
13
13
  import { finalizeEdgeApiResponse, isEdgeApiRuntime } from "./edge-api-runtime.js";
14
14
  import { signalFromNodeResponse } from "./node-response-signal.js";
15
15
  import { Buffer } from "node:buffer";
16
16
  import { decode } from "node:querystring";
17
+ import { Stream } from "node:stream";
17
18
  //#region src/server/api-handler.ts
18
19
  /**
19
20
  * Default request body size (1 MB). Matches Next.js default bodyParser sizeLimit.
@@ -32,6 +33,8 @@ const MAX_BODY_SIZE = DEFAULT_PAGES_API_BODY_SIZE_LIMIT;
32
33
  * HMAC signature verification).
33
34
  */
34
35
  async function parseBody(req, sizeLimit = MAX_BODY_SIZE) {
36
+ const { mediaType, decoder } = await createPagesBodyDecoder(req.headers["content-type"]);
37
+ if (req.destroyed) throw req.errored ?? /* @__PURE__ */ new Error("Request aborted");
35
38
  return new Promise((resolve, reject) => {
36
39
  const chunks = [];
37
40
  let totalSize = 0;
@@ -55,10 +58,10 @@ async function parseBody(req, sizeLimit = MAX_BODY_SIZE) {
55
58
  req.on("end", () => {
56
59
  if (settled) return;
57
60
  settled = true;
58
- const raw = Buffer.concat(chunks).toString("utf-8");
59
- const mediaType = getMediaType(req.headers["content-type"]);
61
+ const body = Buffer.concat(chunks);
62
+ const raw = decoder.decode(body);
60
63
  if (!raw) {
61
- resolve(isJsonMediaType(mediaType) ? {} : mediaType === "application/x-www-form-urlencoded" ? decode(raw) : void 0);
64
+ resolve(isJsonMediaType(mediaType) ? {} : mediaType === "application/x-www-form-urlencoded" ? decode(raw) : body.length > 0 ? raw : void 0);
62
65
  return;
63
66
  }
64
67
  if (isJsonMediaType(mediaType)) try {
@@ -188,6 +191,18 @@ function enhanceApiObjects(req, res, query, body, trustedRevalidateOrigin, allow
188
191
  this.end(JSON.stringify(data));
189
192
  },
190
193
  send(data) {
194
+ if (this.statusCode === 204 || this.statusCode === 304) {
195
+ this.removeHeader("Content-Type");
196
+ this.removeHeader("Content-Length");
197
+ this.removeHeader("Transfer-Encoding");
198
+ this.end();
199
+ return;
200
+ }
201
+ if (data instanceof Stream) {
202
+ if (!this.getHeader("Content-Type")) this.setHeader("Content-Type", "application/octet-stream");
203
+ data.pipe(this);
204
+ return;
205
+ }
191
206
  if (Buffer.isBuffer(data)) {
192
207
  if (!this.getHeader("Content-Type")) this.setHeader("Content-Type", "application/octet-stream");
193
208
  this.setHeader("Content-Length", String(data.length));
@@ -22,4 +22,5 @@ export declare function createForwardedActionContext(executionContext: Execution
22
22
  actionForwarded: true;
23
23
  } & Partial<ExecutionContextLike>;
24
24
  export declare function forwardServerActionIfNeeded(options: ForwardServerActionOptions): Promise<Response | null>;
25
- //#endregion
25
+ //#endregion
26
+ export {};
@@ -31,4 +31,5 @@ export declare function preserveBfcacheIdsForMergedElements(options: {
31
31
  preservedElementIds?: readonly string[];
32
32
  preservePreviousIds?: readonly string[];
33
33
  }): BfcacheIdMap;
34
- //#endregion
34
+ //#endregion
35
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { AppElementsWire } from "./app-elements-wire.js";
2
2
  import "./app-elements.js";
3
- import { isNestedBfcacheSlotSegmentIdFor } from "./bfcache-identity.js";
4
3
  import { isBfcacheSegmentId } from "./app-bfcache-id.js";
4
+ import { isNestedBfcacheSlotSegmentIdFor } from "./bfcache-identity.js";
5
5
  //#region src/server/app-bfcache-identity.ts
6
6
  let nextBfcacheId = 0;
7
7
  function rememberBfcacheId(value) {
@@ -62,4 +62,5 @@ type DiscardedServerActionRefreshSchedulerOptions = {
62
62
  runRefresh: () => void;
63
63
  };
64
64
  export declare function createDiscardedServerActionRefreshScheduler(options: DiscardedServerActionRefreshSchedulerOptions): DiscardedServerActionRefreshScheduler;
65
- //#endregion
65
+ //#endregion
66
+ export {};