vinext 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/README.md +12 -9
  2. package/dist/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/build/action-owner-manifest.d.ts +3 -2
  4. package/dist/build/action-owner-manifest.js +18 -2
  5. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  6. package/dist/build/app-page-static-eligibility.js +80 -13
  7. package/dist/build/clean-output.d.ts +2 -1
  8. package/dist/build/client-build-config.d.ts +77 -6
  9. package/dist/build/client-build-config.js +176 -12
  10. package/dist/build/client-reference-async.d.ts +48 -0
  11. package/dist/build/client-reference-async.js +123 -0
  12. package/dist/build/client-reference-chunks.d.ts +32 -0
  13. package/dist/build/client-reference-chunks.js +111 -0
  14. package/dist/build/client-reference-groups.d.ts +171 -0
  15. package/dist/build/client-reference-groups.js +572 -0
  16. package/dist/build/css-url-assets.d.ts +2 -1
  17. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  18. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  19. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  20. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  21. package/dist/build/google-fonts/validate.d.ts +2 -1
  22. package/dist/build/inline-css.d.ts +2 -1
  23. package/dist/build/layout-classification.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +33 -1
  25. package/dist/build/module-dependency-cache.js +51 -1
  26. package/dist/build/next-client-runtime-manifests.d.ts +12 -2
  27. package/dist/build/next-client-runtime-manifests.js +19 -4
  28. package/dist/build/nitro-public-files.d.ts +24 -0
  29. package/dist/build/nitro-public-files.js +60 -0
  30. package/dist/build/pages-client-assets-module.js +1 -1
  31. package/dist/build/precompress.d.ts +2 -1
  32. package/dist/build/precompress.js +1 -1
  33. package/dist/build/prerender-paths.d.ts +2 -1
  34. package/dist/build/prerender-paths.js +5 -2
  35. package/dist/build/prerender-phase.d.ts +2 -1
  36. package/dist/build/prerender-server-pool.js +1 -1
  37. package/dist/build/prerender.d.ts +3 -2
  38. package/dist/build/prerender.js +5 -4
  39. package/dist/build/report.d.ts +2 -1
  40. package/dist/build/route-classification-injector.d.ts +2 -1
  41. package/dist/build/route-classification-manifest.d.ts +2 -1
  42. package/dist/build/run-prerender.d.ts +2 -1
  43. package/dist/build/server-actions-encryption-key.d.ts +24 -0
  44. package/dist/build/server-actions-encryption-key.js +101 -0
  45. package/dist/build/ssr-manifest.d.ts +3 -0
  46. package/dist/build/ssr-manifest.js +34 -2
  47. package/dist/build/standalone.d.ts +2 -1
  48. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  49. package/dist/cache.js +1 -2
  50. package/dist/check.d.ts +2 -1
  51. package/dist/check.js +4 -0
  52. package/dist/cli-args.d.ts +2 -1
  53. package/dist/cli.js +2 -0
  54. package/dist/client/client-redirect-matcher.js +2 -1
  55. package/dist/client/client-redirects.d.ts +4 -3
  56. package/dist/client/client-redirects.js +2 -1
  57. package/dist/client/client-rewrite-params.d.ts +9 -0
  58. package/dist/client/client-rewrite-params.js +20 -0
  59. package/dist/client/client-rewrites.d.ts +2 -1
  60. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  61. package/dist/client/dev-error-overlay.js +2 -1
  62. package/dist/client/index.js +1 -2
  63. package/dist/client/instrumentation-client-state.js +5 -5
  64. package/dist/client/navigation-runtime.d.ts +28 -3
  65. package/dist/client/navigation-runtime.js +42 -11
  66. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  67. package/dist/client/vinext-next-data.d.ts +25 -2
  68. package/dist/client/window-next.d.ts +2 -1
  69. package/dist/config/config-matchers.d.ts +27 -41
  70. package/dist/config/config-matchers.js +293 -270
  71. package/dist/config/config-source.d.ts +34 -0
  72. package/dist/config/config-source.js +141 -0
  73. package/dist/config/dotenv.d.ts +2 -1
  74. package/dist/config/header-params.d.ts +29 -0
  75. package/dist/config/header-params.js +106 -0
  76. package/dist/config/next-config.d.ts +20 -6
  77. package/dist/config/next-config.js +149 -11
  78. package/dist/config/tsconfig-paths.d.ts +2 -1
  79. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  80. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  81. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  82. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  83. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  84. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  105. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  106. package/dist/entries/app-browser-entry.d.ts +34 -6
  107. package/dist/entries/app-browser-entry.js +103 -40
  108. package/dist/entries/app-rsc-entry.d.ts +4 -1
  109. package/dist/entries/app-rsc-entry.js +131 -66
  110. package/dist/entries/app-rsc-manifest.d.ts +12 -1
  111. package/dist/entries/app-rsc-manifest.js +73 -1
  112. package/dist/entries/app-ssr-entry.d.ts +4 -1
  113. package/dist/entries/app-ssr-entry.js +9 -2
  114. package/dist/entries/pages-client-entry.d.ts +1 -0
  115. package/dist/entries/pages-client-entry.js +6 -6
  116. package/dist/entries/pages-entry-helpers.js +1 -2
  117. package/dist/entries/pages-server-entry.d.ts +2 -1
  118. package/dist/entries/pages-server-entry.js +18 -15
  119. package/dist/entries/runtime-entry-module.d.ts +1 -0
  120. package/dist/entries/runtime-entry-module.js +4 -1
  121. package/dist/image/image-adapters-virtual.d.ts +2 -1
  122. package/dist/index.d.ts +11 -0
  123. package/dist/index.js +340 -116
  124. package/dist/init.js +17 -0
  125. package/dist/plugins/client-compile-hints.d.ts +30 -0
  126. package/dist/plugins/client-compile-hints.js +88 -0
  127. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  128. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  129. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  130. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  131. package/dist/plugins/environment.d.ts +2 -1
  132. package/dist/plugins/fonts.js +9 -12
  133. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  134. package/dist/plugins/import-meta-url.d.ts +2 -1
  135. package/dist/plugins/og-assets.d.ts +2 -1
  136. package/dist/plugins/og-assets.js +2 -3
  137. package/dist/plugins/optimize-imports.d.ts +27 -3
  138. package/dist/plugins/optimize-imports.js +106 -20
  139. package/dist/plugins/pages-node-externals.d.ts +2 -1
  140. package/dist/plugins/remove-console.d.ts +2 -1
  141. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  142. package/dist/plugins/rsc-client-reference-loaders.d.ts +53 -1
  143. package/dist/plugins/rsc-client-reference-loaders.js +447 -27
  144. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  145. package/dist/plugins/sass.d.ts +2 -1
  146. package/dist/plugins/strip-server-exports.d.ts +2 -1
  147. package/dist/plugins/styled-jsx.d.ts +2 -1
  148. package/dist/plugins/transform-result.d.ts +2 -1
  149. package/dist/plugins/typeof-window.d.ts +2 -1
  150. package/dist/plugins/use-cache-callable.d.ts +5 -0
  151. package/dist/plugins/use-cache-callable.js +30 -8
  152. package/dist/plugins/worker-image-imports.d.ts +1 -0
  153. package/dist/plugins/worker-image-imports.js +2 -2
  154. package/dist/plugins/worker-use-server.d.ts +2 -1
  155. package/dist/routing/app-route-graph.d.ts +41 -1
  156. package/dist/routing/app-route-graph.js +122 -50
  157. package/dist/routing/browser-route-manifest.d.ts +44 -0
  158. package/dist/routing/browser-route-manifest.js +195 -0
  159. package/dist/routing/hashed-route-patterns.d.ts +4 -0
  160. package/dist/routing/hashed-route-patterns.js +22 -0
  161. package/dist/routing/optimistic-route-trie.d.ts +28 -0
  162. package/dist/routing/optimistic-route-trie.js +102 -0
  163. package/dist/routing/route-matching.d.ts +2 -1
  164. package/dist/routing/route-pattern.d.ts +2 -1
  165. package/dist/routing/route-validation.d.ts +6 -1
  166. package/dist/routing/route-validation.js +26 -10
  167. package/dist/server/accept-encoding.d.ts +2 -1
  168. package/dist/server/app-action-forwarding.d.ts +10 -1
  169. package/dist/server/app-action-forwarding.js +15 -1
  170. package/dist/server/app-bfcache-identity.d.ts +2 -1
  171. package/dist/server/app-browser-action-result.d.ts +2 -1
  172. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
  173. package/dist/server/app-browser-entry.js +175 -64
  174. package/dist/server/app-browser-error.d.ts +5 -2
  175. package/dist/server/app-browser-error.js +7 -2
  176. package/dist/server/app-browser-history-controller.d.ts +2 -1
  177. package/dist/server/app-browser-hydration.d.ts +2 -1
  178. package/dist/server/app-browser-interception-context.d.ts +4 -3
  179. package/dist/server/app-browser-mpa-navigation.d.ts +1 -0
  180. package/dist/server/app-browser-mpa-navigation.js +6 -5
  181. package/dist/server/app-browser-navigation-controller.d.ts +17 -6
  182. package/dist/server/app-browser-navigation-controller.js +103 -36
  183. package/dist/server/app-browser-popstate.d.ts +2 -1
  184. package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
  185. package/dist/server/app-browser-server-action-client.d.ts +2 -1
  186. package/dist/server/app-browser-state.d.ts +2 -2
  187. package/dist/server/app-browser-state.js +1 -1
  188. package/dist/server/app-browser-stream.d.ts +2 -1
  189. package/dist/server/app-browser-visible-commit.d.ts +6 -5
  190. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  191. package/dist/server/app-client-reference-manifest.js +46 -0
  192. package/dist/server/app-client-reference-preloader.d.ts +45 -2
  193. package/dist/server/app-client-reference-preloader.js +48 -10
  194. package/dist/server/app-elements-wire.d.ts +2 -1
  195. package/dist/server/app-elements.d.ts +2 -0
  196. package/dist/server/app-elements.js +3 -1
  197. package/dist/server/app-fallback-renderer.d.ts +9 -2
  198. package/dist/server/app-fallback-renderer.js +6 -2
  199. package/dist/server/app-history-state.d.ts +2 -1
  200. package/dist/server/app-inline-css-client.d.ts +2 -1
  201. package/dist/server/app-layout-param-observation.d.ts +2 -1
  202. package/dist/server/app-metadata-tracing.d.ts +2 -1
  203. package/dist/server/app-middleware.d.ts +6 -0
  204. package/dist/server/app-middleware.js +8 -10
  205. package/dist/server/app-optimistic-routing.d.ts +26 -11
  206. package/dist/server/app-optimistic-routing.js +38 -96
  207. package/dist/server/app-page-boundary-render.d.ts +20 -2
  208. package/dist/server/app-page-boundary-render.js +229 -39
  209. package/dist/server/app-page-boundary.d.ts +34 -5
  210. package/dist/server/app-page-boundary.js +40 -7
  211. package/dist/server/app-page-cache-finalizer.d.ts +2 -1
  212. package/dist/server/app-page-cache-finalizer.js +1 -1
  213. package/dist/server/app-page-cache-render.d.ts +10 -2
  214. package/dist/server/app-page-cache-render.js +15 -2
  215. package/dist/server/app-page-cache.js +2 -2
  216. package/dist/server/app-page-dispatch.d.ts +34 -1
  217. package/dist/server/app-page-dispatch.js +165 -34
  218. package/dist/server/app-page-element-builder.d.ts +17 -1
  219. package/dist/server/app-page-element-builder.js +187 -66
  220. package/dist/server/app-page-execution.d.ts +28 -1
  221. package/dist/server/app-page-execution.js +114 -5
  222. package/dist/server/app-page-head.d.ts +95 -3
  223. package/dist/server/app-page-head.js +307 -152
  224. package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
  225. package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
  226. package/dist/server/app-page-method.d.ts +2 -1
  227. package/dist/server/app-page-probe.d.ts +2 -1
  228. package/dist/server/app-page-render-identity.d.ts +2 -1
  229. package/dist/server/app-page-render.d.ts +7 -1
  230. package/dist/server/app-page-render.js +38 -11
  231. package/dist/server/app-page-request.d.ts +14 -1
  232. package/dist/server/app-page-request.js +1 -1
  233. package/dist/server/app-page-route-wiring.d.ts +52 -2
  234. package/dist/server/app-page-route-wiring.js +197 -47
  235. package/dist/server/app-page-rsc-render-status.d.ts +3 -1
  236. package/dist/server/app-page-rsc-render-status.js +1 -0
  237. package/dist/server/app-page-search-params-observation.d.ts +8 -6
  238. package/dist/server/app-page-search-params-observation.js +16 -11
  239. package/dist/server/app-page-segment-plan.d.ts +2 -1
  240. package/dist/server/app-page-stream.d.ts +38 -1
  241. package/dist/server/app-page-stream.js +24 -4
  242. package/dist/server/app-pages-bridge.d.ts +4 -2
  243. package/dist/server/app-pages-bridge.js +11 -7
  244. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  245. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  246. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  247. package/dist/server/app-prerender-static-params.d.ts +2 -1
  248. package/dist/server/app-prerender-static-params.js +3 -2
  249. package/dist/server/app-render-dependency.d.ts +11 -1
  250. package/dist/server/app-render-dependency.js +65 -6
  251. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  252. package/dist/server/app-request-stage-independent-entry.js +2 -2
  253. package/dist/server/app-response-stage-entry.d.ts +2 -1
  254. package/dist/server/app-response-stage-entry.js +3 -3
  255. package/dist/server/app-route-handler-cache.d.ts +2 -1
  256. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  257. package/dist/server/app-route-handler-dispatch.js +4 -2
  258. package/dist/server/app-route-handler-execution.d.ts +4 -1
  259. package/dist/server/app-route-handler-execution.js +9 -2
  260. package/dist/server/app-route-handler-middleware-context.d.ts +2 -1
  261. package/dist/server/app-route-handler-middleware-context.js +3 -3
  262. package/dist/server/app-route-handler-response.d.ts +4 -2
  263. package/dist/server/app-route-handler-response.js +2 -2
  264. package/dist/server/app-route-handler-runtime.d.ts +4 -1
  265. package/dist/server/app-route-handler-runtime.js +20 -3
  266. package/dist/server/app-route-module-loader.d.ts +18 -1
  267. package/dist/server/app-route-module-loader.js +15 -6
  268. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  269. package/dist/server/app-route-tree.d.ts +20 -0
  270. package/dist/server/app-route-tree.js +18 -0
  271. package/dist/server/app-router-entry.js +2 -2
  272. package/dist/server/app-rsc-combined-handler.js +8 -1
  273. package/dist/server/app-rsc-error-handler.d.ts +2 -1
  274. package/dist/server/app-rsc-errors.d.ts +9 -1
  275. package/dist/server/app-rsc-errors.js +9 -2
  276. package/dist/server/app-rsc-handler.d.ts +6 -2
  277. package/dist/server/app-rsc-handler.js +152 -140
  278. package/dist/server/app-rsc-response-finalizer.d.ts +7 -1
  279. package/dist/server/app-rsc-response-finalizer.js +4 -1
  280. package/dist/server/app-rsc-response-stage.js +3 -1
  281. package/dist/server/app-rsc-route-matching.d.ts +39 -1
  282. package/dist/server/app-rsc-route-matching.js +25 -1
  283. package/dist/server/app-segment-config.d.ts +2 -1
  284. package/dist/server/app-segment-config.js +1 -14
  285. package/dist/server/app-server-action-execution.d.ts +25 -7
  286. package/dist/server/app-server-action-execution.js +53 -59
  287. package/dist/server/app-ssr-entry.d.ts +12 -0
  288. package/dist/server/app-ssr-entry.js +104 -48
  289. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  290. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  291. package/dist/server/app-ssr-stream.d.ts +29 -10
  292. package/dist/server/app-ssr-stream.js +311 -67
  293. package/dist/server/app-static-generation.d.ts +2 -1
  294. package/dist/server/app-streamed-client-references.d.ts +39 -0
  295. package/dist/server/app-streamed-client-references.js +156 -0
  296. package/dist/server/app-visited-response-cache.d.ts +2 -1
  297. package/dist/server/app-worker-stages.d.ts +2 -1
  298. package/dist/server/artifact-compatibility.d.ts +2 -1
  299. package/dist/server/bfcache-identity.d.ts +2 -1
  300. package/dist/server/cache-headers.d.ts +2 -1
  301. package/dist/server/cacheability-request.d.ts +2 -1
  302. package/dist/server/client-reuse-manifest.d.ts +2 -1
  303. package/dist/server/config-headers.d.ts +2 -1
  304. package/dist/server/config-headers.js +12 -3
  305. package/dist/server/csp.d.ts +2 -1
  306. package/dist/server/default-global-not-found-module.d.ts +2 -1
  307. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  308. package/dist/server/default-http-access-fallback-modules.js +31 -0
  309. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  310. package/dist/server/defer-until-stream-consumed.js +154 -21
  311. package/dist/server/dev-lockfile.d.ts +32 -2
  312. package/dist/server/dev-lockfile.js +46 -2
  313. package/dist/server/dev-module-runner.d.ts +2 -1
  314. package/dist/server/dev-server.js +10 -3
  315. package/dist/server/fetch-handler.js +1 -2
  316. package/dist/server/file-based-metadata.d.ts +2 -1
  317. package/dist/server/framework-tracer.d.ts +2 -1
  318. package/dist/server/html.d.ts +1 -0
  319. package/dist/server/html.js +19 -1
  320. package/dist/server/http-conditional.d.ts +2 -1
  321. package/dist/server/http-error-responses.d.ts +2 -1
  322. package/dist/server/implicit-tags.d.ts +2 -1
  323. package/dist/server/isolate-shared-promise.d.ts +10 -0
  324. package/dist/server/isolate-shared-promise.js +33 -0
  325. package/dist/server/isr-cache.js +3 -2
  326. package/dist/server/metadata-route-build-data.d.ts +2 -1
  327. package/dist/server/metadata-route-build-data.js +1 -1
  328. package/dist/server/metadata-route-response.d.ts +2 -1
  329. package/dist/server/metadata-route-response.js +1 -1
  330. package/dist/server/metadata-routes.d.ts +2 -1
  331. package/dist/server/middleware-matcher-pattern.d.ts +0 -1
  332. package/dist/server/middleware-matcher-pattern.js +11 -140
  333. package/dist/server/middleware-matcher.js +5 -6
  334. package/dist/server/middleware-response-headers.d.ts +31 -0
  335. package/dist/server/middleware-response-headers.js +57 -1
  336. package/dist/server/middleware-runtime.d.ts +2 -1
  337. package/dist/server/middleware-runtime.js +26 -13
  338. package/dist/server/navigation-planner.d.ts +2 -2
  339. package/dist/server/navigation-trace.d.ts +2 -1
  340. package/dist/server/next-error-digest.d.ts +2 -1
  341. package/dist/server/nitro-public-files-plugin.d.ts +39 -0
  342. package/dist/server/nitro-public-files-plugin.js +106 -0
  343. package/dist/server/nitro-public-files.d.ts +22 -0
  344. package/dist/server/nitro-public-files.js +39 -0
  345. package/dist/server/opentelemetry-api.d.ts +2 -1
  346. package/dist/server/operation-token.d.ts +2 -1
  347. package/dist/server/pages-api-route.d.ts +2 -1
  348. package/dist/server/pages-asset-tags.d.ts +7 -1
  349. package/dist/server/pages-asset-tags.js +9 -2
  350. package/dist/server/pages-body-parser-config.d.ts +2 -1
  351. package/dist/server/pages-client-assets.d.ts +8 -1
  352. package/dist/server/pages-data-route.d.ts +2 -1
  353. package/dist/server/pages-document-asset-props.d.ts +2 -1
  354. package/dist/server/pages-document-initial-props.d.ts +2 -1
  355. package/dist/server/pages-execution-tracing.d.ts +2 -1
  356. package/dist/server/pages-execution-tracing.js +1 -1
  357. package/dist/server/pages-get-initial-props.d.ts +2 -1
  358. package/dist/server/pages-i18n.d.ts +18 -0
  359. package/dist/server/pages-i18n.js +18 -2
  360. package/dist/server/pages-node-compat.d.ts +5 -3
  361. package/dist/server/pages-node-compat.js +35 -16
  362. package/dist/server/pages-page-data.d.ts +7 -1
  363. package/dist/server/pages-page-data.js +35 -12
  364. package/dist/server/pages-page-handler.d.ts +3 -2
  365. package/dist/server/pages-page-handler.js +16 -7
  366. package/dist/server/pages-page-method.d.ts +2 -1
  367. package/dist/server/pages-page-response.d.ts +2 -1
  368. package/dist/server/pages-preview.d.ts +2 -1
  369. package/dist/server/pages-readiness.d.ts +2 -1
  370. package/dist/server/pages-request-pipeline.d.ts +8 -2
  371. package/dist/server/pages-request-pipeline.js +35 -40
  372. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  373. package/dist/server/pages-request-stage-entry.js +16 -6
  374. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  375. package/dist/server/pages-response-stage-entry.js +1 -1
  376. package/dist/server/pages-revalidate.js +1 -0
  377. package/dist/server/pages-route-data-kind.d.ts +2 -1
  378. package/dist/server/pages-router-entry.js +1 -1
  379. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  380. package/dist/server/prerender-route-params.d.ts +2 -1
  381. package/dist/server/prod-server.d.ts +2 -2
  382. package/dist/server/prod-server.js +80 -36
  383. package/dist/server/proxy-trust.d.ts +6 -0
  384. package/dist/server/proxy-trust.js +12 -6
  385. package/dist/server/request-log.d.ts +2 -1
  386. package/dist/server/request-pipeline.d.ts +5 -0
  387. package/dist/server/request-pipeline.js +12 -1
  388. package/dist/server/request-tracing.d.ts +2 -1
  389. package/dist/server/request-tracing.js +1 -1
  390. package/dist/server/response-start-tracing.js +7 -29
  391. package/dist/server/rsc-render-stream.d.ts +4 -0
  392. package/dist/server/rsc-render-stream.js +25 -0
  393. package/dist/server/seed-cache.d.ts +2 -1
  394. package/dist/server/seed-cache.js +1 -1
  395. package/dist/server/server-reference-loader.js +10 -1
  396. package/dist/server/static-file-cache.d.ts +2 -1
  397. package/dist/server/static-file-cache.js +16 -3
  398. package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
  399. package/dist/server/worker-revalidation-context.d.ts +2 -1
  400. package/dist/server/worker-stages.d.ts +2 -1
  401. package/dist/server/worker-utils.js +1 -1
  402. package/dist/shims/app.d.ts +2 -1
  403. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  404. package/dist/shims/cache-handler.d.ts +8 -3
  405. package/dist/shims/cache-handler.js +32 -11
  406. package/dist/shims/cache-request-state.d.ts +40 -3
  407. package/dist/shims/cache-request-state.js +70 -5
  408. package/dist/shims/cache-runtime.js +47 -19
  409. package/dist/shims/cache.d.ts +2 -2
  410. package/dist/shims/cache.js +17 -8
  411. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  412. package/dist/shims/caught-not-found-boundaries.js +48 -0
  413. package/dist/shims/cdn-purge-routes.d.ts +25 -0
  414. package/dist/shims/cdn-purge-routes.js +77 -0
  415. package/dist/shims/client-locale.js +2 -1
  416. package/dist/shims/client-page-root.d.ts +2 -1
  417. package/dist/shims/config.d.ts +2 -1
  418. package/dist/shims/default-forbidden.d.ts +4 -0
  419. package/dist/shims/default-forbidden.js +18 -0
  420. package/dist/shims/default-not-found.d.ts +0 -5
  421. package/dist/shims/default-not-found.js +5 -41
  422. package/dist/shims/default-unauthorized.d.ts +4 -0
  423. package/dist/shims/default-unauthorized.js +18 -0
  424. package/dist/shims/dynamic.js +17 -4
  425. package/dist/shims/error-boundary.d.ts +39 -3
  426. package/dist/shims/error-boundary.js +31 -16
  427. package/dist/shims/font-google.js +1 -2
  428. package/dist/shims/font-utils.d.ts +3 -2
  429. package/dist/shims/font-utils.js +5 -3
  430. package/dist/shims/form.js +9 -4
  431. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  432. package/dist/shims/http-access-error-fallback.js +47 -0
  433. package/dist/shims/image-props.d.ts +93 -0
  434. package/dist/shims/image-props.js +323 -0
  435. package/dist/shims/image.d.ts +4 -39
  436. package/dist/shims/image.js +4 -319
  437. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  438. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  439. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  440. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  441. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  442. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  443. package/dist/shims/internal/client-reference-loader.js +91 -0
  444. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  445. package/dist/shims/internal/cookies.js +1 -2
  446. package/dist/shims/internal/headers-state.d.ts +9 -0
  447. package/dist/shims/internal/headers-state.js +19 -2
  448. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -2
  449. package/dist/shims/internal/hybrid-client-route-owner-direct.js +31 -14
  450. package/dist/shims/internal/hybrid-client-route-owner.js +8 -8
  451. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  452. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  453. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  454. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  455. package/dist/shims/link.js +198 -53
  456. package/dist/shims/metadata.d.ts +32 -11
  457. package/dist/shims/metadata.js +88 -26
  458. package/dist/shims/navigation-errors.d.ts +2 -1
  459. package/dist/shims/navigation.d.ts +23 -3
  460. package/dist/shims/navigation.js +91 -25
  461. package/dist/shims/og.js +35 -10
  462. package/dist/shims/pages-router-runtime.d.ts +2 -1
  463. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  464. package/dist/shims/request-context.d.ts +13 -0
  465. package/dist/shims/router.js +33 -43
  466. package/dist/shims/server.d.ts +31 -4
  467. package/dist/shims/server.js +58 -10
  468. package/dist/shims/thenable-params.d.ts +6 -1
  469. package/dist/shims/thenable-params.js +11 -2
  470. package/dist/shims/unified-request-context.d.ts +5 -0
  471. package/dist/shims/unified-request-context.js +5 -3
  472. package/dist/typegen.d.ts +2 -1
  473. package/dist/utils/asset-prefix.d.ts +7 -0
  474. package/dist/utils/asset-prefix.js +10 -1
  475. package/dist/utils/client-build-manifest.d.ts +4 -1
  476. package/dist/utils/client-build-manifest.js +20 -6
  477. package/dist/utils/client-entry-manifest.d.ts +13 -0
  478. package/dist/utils/client-entry-manifest.js +20 -1
  479. package/dist/utils/client-reference-chunks.d.ts +45 -0
  480. package/dist/utils/client-reference-chunks.js +30 -0
  481. package/dist/utils/client-runtime-metadata.d.ts +10 -1
  482. package/dist/utils/client-runtime-metadata.js +53 -9
  483. package/dist/utils/compare.d.ts +9 -0
  484. package/dist/utils/compare.js +15 -1
  485. package/dist/utils/lazy-chunks.d.ts +18 -0
  486. package/dist/utils/lazy-chunks.js +27 -1
  487. package/dist/utils/manifest-paths.d.ts +14 -0
  488. package/dist/utils/manifest-paths.js +22 -1
  489. package/dist/utils/middleware-request-headers.d.ts +2 -1
  490. package/dist/utils/path-to-regexp.d.ts +21 -0
  491. package/dist/{server/middleware-path-to-regexp.js → utils/path-to-regexp.js} +14 -11
  492. package/dist/utils/plugin-react-version.d.ts +15 -0
  493. package/dist/utils/plugin-react-version.js +64 -0
  494. package/dist/utils/project.d.ts +2 -1
  495. package/dist/utils/project.js +9 -1
  496. package/dist/utils/public-routes.d.ts +2 -0
  497. package/dist/utils/public-routes.js +18 -7
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/sorted-array.d.ts +2 -1
  500. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  501. package/package.json +5 -5
  502. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  503. package/dist/server/default-not-found-module.d.ts +0 -19
  504. package/dist/server/default-not-found-module.js +0 -18
  505. package/dist/server/middleware-path-to-regexp.d.ts +0 -13
  506. package/dist/server/rsc-stream-hints.d.ts +0 -21
  507. package/dist/server/rsc-stream-hints.js +0 -227
  508. package/dist/utils/regex-safety.d.ts +0 -17
  509. package/dist/utils/regex-safety.js +0 -789
@@ -1,44 +1,82 @@
1
+ import { shareIsolatePromise } from "./isolate-shared-promise.js";
1
2
  //#region src/server/app-client-reference-preloader.ts
2
3
  const resolvedPreload = Promise.resolve();
4
+ /**
5
+ * The client references a render of `routePattern` preloads, or of no route
6
+ * when it is null, and those it streams.
7
+ * Undefined, meaning every reference, without a plan or a route to look up,
8
+ * or for a pattern the plan doesn't know.
9
+ */
10
+ function resolveRouteClientReferences(plan, routePattern) {
11
+ if (!plan || routePattern === void 0) return void 0;
12
+ let files;
13
+ if (routePattern === null) files = plan.routeless;
14
+ else if (Object.hasOwn(plan.routes, routePattern)) files = plan.routes[routePattern];
15
+ else return;
16
+ const indices = new Set(plan.always);
17
+ for (const file of files) for (const index of plan.files[file]) indices.add(index);
18
+ const asyncIndices = new Set(plan.async);
19
+ const references = [];
20
+ const streamed = [];
21
+ for (const index of indices) {
22
+ const id = plan.references[index];
23
+ references.push(id);
24
+ if (asyncIndices.has(index)) streamed.push(id);
25
+ }
26
+ return {
27
+ references,
28
+ streamed
29
+ };
30
+ }
3
31
  function createClientReferencePreloader(options) {
4
32
  let allReferencesPreloaded = false;
5
33
  let allReferencesPreloadPromise = null;
6
34
  const preloadedReferences = /* @__PURE__ */ new Set();
7
35
  const referencePreloadPromises = /* @__PURE__ */ new Map();
8
36
  function preloadReference(id, clientRequire) {
9
- if (preloadedReferences.has(id)) return resolvedPreload;
10
37
  const existing = referencePreloadPromises.get(id);
11
38
  if (existing) return existing;
12
- const preloadPromise = clientRequire(id).catch((error) => {
39
+ const loading = clientRequire(id);
40
+ const preloadPromise = shareIsolatePromise(loading.then((value) => {
41
+ loading.status = "fulfilled";
42
+ loading.value = value;
43
+ }, (error) => {
44
+ loading.status = "rejected";
45
+ loading.reason = error;
46
+ throw error;
47
+ }).catch((error) => {
13
48
  options.onPreloadError?.(id, error);
14
49
  }).then(() => {
15
50
  preloadedReferences.add(id);
16
51
  }).finally(() => {
17
52
  referencePreloadPromises.delete(id);
18
- });
53
+ }));
19
54
  referencePreloadPromises.set(id, preloadPromise);
20
55
  return preloadPromise;
21
56
  }
22
- function preloadReferenceSet(referenceIds, refs, clientRequire) {
57
+ function preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds) {
23
58
  const pending = [];
24
- for (const id of referenceIds) if (Object.hasOwn(refs, id)) pending.push(preloadReference(id, clientRequire));
59
+ for (const id of referenceIds) if (Object.hasOwn(refs, id) && !preloadedReferences.has(id)) {
60
+ const loading = preloadReference(id, clientRequire);
61
+ if (!streamedIds?.has(id)) pending.push(loading);
62
+ }
25
63
  if (pending.length === 0) return resolvedPreload;
26
64
  return Promise.all(pending).then(() => {});
27
65
  }
28
- return { preload(referenceIds) {
66
+ return { preload(referenceIds, streamedIds) {
29
67
  const refs = options.getReferences();
30
68
  const clientRequire = options.getClientRequire();
31
69
  if (!refs || !clientRequire) return resolvedPreload;
32
- if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire);
70
+ if (referenceIds) return preloadReferenceSet(referenceIds, refs, clientRequire, streamedIds);
33
71
  if (allReferencesPreloaded) return resolvedPreload;
34
72
  if (allReferencesPreloadPromise) return allReferencesPreloadPromise;
35
- allReferencesPreloadPromise = preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {
73
+ allReferencesPreloadPromise = shareIsolatePromise(preloadReferenceSet(Object.keys(refs), refs, clientRequire).then(() => {
36
74
  allReferencesPreloaded = true;
37
75
  }).finally(() => {
38
76
  allReferencesPreloadPromise = null;
39
- });
77
+ }));
40
78
  return allReferencesPreloadPromise;
41
79
  } };
42
80
  }
43
81
  //#endregion
44
- export { createClientReferencePreloader };
82
+ export { createClientReferencePreloader, resolveRouteClientReferences };
@@ -183,4 +183,5 @@ export declare function buildOutgoingAppPayload(input: {
183
183
  }): ReactNode | AppOutgoingElements;
184
184
  export declare function readAppElementsMetadata(elements: Readonly<Record<string, unknown>>): AppElementsMetadata;
185
185
  export declare const AppElementsWire: AppElementsWireCodec;
186
- //#endregion
186
+ //#endregion
187
+ export {};
@@ -1,6 +1,8 @@
1
1
  import { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementValue, AppElements, AppElementsBfcacheSegmentIdentities, AppElementsInterception, AppElementsSlotBinding, AppElementsWire, AppOutgoingElements, AppWireElements, LayoutFlags, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, withLayoutFlags } from "./app-elements-wire.js";
2
2
  //#region src/server/app-elements.d.ts
3
3
  export declare const APP_PREFETCH_LOADING_SHELL_MARKER_KEY = "__prefetchLoadingShell";
4
+ /** Prefix of the element that streams a route's generateMetadata() tags in the body. */
5
+ export declare const APP_STREAMING_METADATA_BODY_ID_PREFIX = "__vinext_streaming_metadata_body:";
4
6
  export declare function getMountedSlotIds(elements: AppElements): string[];
5
7
  export declare function getMountedSlotIdsHeader(elements: AppElements): string | null;
6
8
  export declare function resolveVisitedResponseInterceptionContext(requestInterceptionContext: string | null, payloadInterceptionContext: string | null): string | null;
@@ -2,6 +2,8 @@ import { normalizeMountedSlotsHeader } from "./app-mounted-slots-header.js";
2
2
  import { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, withLayoutFlags } from "./app-elements-wire.js";
3
3
  //#region src/server/app-elements.ts
4
4
  const APP_PREFETCH_LOADING_SHELL_MARKER_KEY = "__prefetchLoadingShell";
5
+ /** Prefix of the element that streams a route's generateMetadata() tags in the body. */
6
+ const APP_STREAMING_METADATA_BODY_ID_PREFIX = "__vinext_streaming_metadata_body:";
5
7
  function getMountedSlotIds(elements) {
6
8
  return Object.keys(elements).filter((key) => {
7
9
  const value = elements[key];
@@ -16,4 +18,4 @@ function resolveVisitedResponseInterceptionContext(requestInterceptionContext, p
16
18
  return payloadInterceptionContext ?? requestInterceptionContext;
17
19
  }
18
20
  //#endregion
19
- export { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_PREFETCH_LOADING_SHELL_MARKER_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, getMountedSlotIds, getMountedSlotIdsHeader, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, resolveVisitedResponseInterceptionContext, withLayoutFlags };
21
+ export { APP_ARTIFACT_COMPATIBILITY_KEY, APP_BFCACHE_SEGMENT_IDENTITIES_KEY, APP_CACHE_ENTRY_REUSE_PROOF_KEY, APP_DYNAMIC_STALE_TIME_KEY, APP_INTERCEPTION_CONTEXT_KEY, APP_INTERCEPTION_KEY, APP_LAYOUT_FLAGS_KEY, APP_LAYOUT_IDS_KEY, APP_PREFETCH_LOADING_SHELL_MARKER_KEY, APP_ROOT_LAYOUT_KEY, APP_ROUTE_KEY, APP_SKIPPED_LAYOUT_IDS_KEY, APP_SLOT_BINDINGS_KEY, APP_SOURCE_PAGE_SEGMENTS_KEY, APP_STATIC_SIBLINGS_KEY, APP_STREAMING_METADATA_BODY_ID_PREFIX, APP_UNMATCHED_SLOT_WIRE_VALUE, AppElementsWire, UNMATCHED_SLOT, buildOutgoingAppPayload, compareAppElementsSlotIds, getMountedSlotIds, getMountedSlotIdsHeader, isAppElementsRecord, normalizeAppElements, normalizeAppElementsSlotBindings, readAppElementsMetadata, resolveVisitedResponseInterceptionContext, withLayoutFlags };
@@ -6,7 +6,7 @@ import "../shims/navigation.js";
6
6
  import { AppPageParams } from "./app-page-boundary.js";
7
7
  import { AppPageFontPreload } from "./app-page-execution.js";
8
8
  import { AppPageMiddlewareContext } from "./app-page-response.js";
9
- import { ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
9
+ import { AppPageFallbackRouteHead, ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
10
10
  import { AppPageInterceptOptions } from "./app-page-element-builder.js";
11
11
  import { AppPageSsrHandler } from "./app-page-stream.js";
12
12
  import { AppRenderErrorContextOverrides } from "./app-rsc-error-handler.js";
@@ -95,13 +95,20 @@ type AppFallbackRenderer<TModule extends AppPageModule = AppPageModule> = {
95
95
  renderHttpAccessFallback: (route: AppPageBoundaryRoute<TModule> | null, statusCode: number, isRscRequest: boolean, request: Request, opts: {
96
96
  boundaryComponent?: AppPageComponent | null;
97
97
  boundaryModule?: TModule | null;
98
+ /** Boundary whose metadata the head uses, when not `boundaryModule`. */
99
+ headBoundaryModule?: TModule | null;
100
+ /** Layouts whose metadata the head uses, when more than `layouts`. */
101
+ headLayouts?: readonly (TModule | null | undefined)[] | null;
98
102
  intercept?: AppPageInterceptOptions<TModule> | null;
99
103
  /** The document may be stored, so it must not carry the request's query. */
100
104
  isCacheCandidate?: boolean;
101
105
  layouts?: readonly (TModule | null | undefined)[] | null;
102
106
  matchedParams?: AppPageParams;
107
+ /** The route's render threw the signal, so the document keeps the route's head. */
108
+ routeHead?: AppPageFallbackRouteHead | null;
103
109
  }, scriptNonce: string | undefined, middlewareContext: AppPageMiddlewareContext, callContext?: AppFallbackRendererCallContext) => Promise<Response | null>;
104
110
  renderNotFound: (route: AppPageBoundaryRoute<TModule> | null, isRscRequest: boolean, request: Request, matchedParams: AppPageParams | undefined, scriptNonce: string | undefined, middlewareContext: AppPageMiddlewareContext, callContext?: AppFallbackRendererCallContext) => Promise<Response | null>;
105
111
  };
106
112
  export declare function createAppFallbackRenderer<TModule extends AppPageModule>(options: AppFallbackRendererOptions<TModule>): AppFallbackRenderer<TModule>;
107
- //#endregion
113
+ //#endregion
114
+ export {};
@@ -1,9 +1,10 @@
1
1
  import { runOutsideRequestScopes } from "../shims/internal/als-registry.js";
2
+ import { shareIsolatePromise } from "./isolate-shared-promise.js";
2
3
  import { DEFAULT_GLOBAL_ERROR_MODULE } from "./default-global-error-module.js";
3
4
  import { shouldServeStreamingMetadata } from "./streaming-metadata.js";
4
5
  import { renderAppPageErrorBoundary, renderAppPageHttpAccessFallback } from "./app-page-boundary-render.js";
5
6
  import { DEFAULT_GLOBAL_NOT_FOUND_MODULE } from "./default-global-not-found-module.js";
6
- import { DEFAULT_NOT_FOUND_MODULE } from "./default-not-found-module.js";
7
+ import { DEFAULT_NOT_FOUND_MODULE } from "./default-http-access-fallback-modules.js";
7
8
  //#region src/server/app-fallback-renderer.ts
8
9
  const EMPTY_MW_CTX = {
9
10
  headers: null,
@@ -17,7 +18,7 @@ function createAppFallbackRenderer(options) {
17
18
  let globalNotFoundModulePromise = null;
18
19
  function resolveGlobalNotFoundModule() {
19
20
  if (!loadGlobalNotFoundModule) return null;
20
- if (globalNotFoundModulePromise === null) globalNotFoundModulePromise = runOutsideRequestScopes(() => Promise.resolve().then(loadGlobalNotFoundModule));
21
+ if (globalNotFoundModulePromise === null) globalNotFoundModulePromise = shareIsolatePromise(runOutsideRequestScopes(() => Promise.resolve().then(loadGlobalNotFoundModule)));
21
22
  return globalNotFoundModulePromise;
22
23
  }
23
24
  return {
@@ -85,6 +86,8 @@ function createAppFallbackRenderer(options) {
85
86
  getAndClearPendingCookies,
86
87
  getNavigationContext,
87
88
  globalErrorModule: effectiveGlobalErrorModule,
89
+ headBoundaryModule: opts?.headBoundaryModule ?? null,
90
+ headLayoutModules: useGlobalNotFound ? [] : opts?.headLayouts ?? null,
88
91
  intercept: opts?.intercept ?? null,
89
92
  isCacheCandidate: opts?.isCacheCandidate,
90
93
  isEdgeRuntime: callContext?.isEdgeRuntime,
@@ -103,6 +106,7 @@ function createAppFallbackRenderer(options) {
103
106
  rootNotFoundModule: routeMissRootNotFoundModule,
104
107
  rootUnauthorizedModule,
105
108
  route: useGlobalNotFound ? null : route,
109
+ routeHead: opts?.routeHead ?? null,
106
110
  routePathname: callContext?.routePathname,
107
111
  renderToReadableStream: rscRenderer,
108
112
  scriptNonce,
@@ -104,4 +104,5 @@ export declare function resolveHistoryTraversalIntent(options: {
104
104
  currentHistoryIndex: number | null;
105
105
  historyState: unknown;
106
106
  }): HistoryTraversalIntent;
107
- //#endregion
107
+ //#endregion
108
+ export {};
@@ -2,4 +2,5 @@
2
2
  type InlineCssStylesheetLinkElement = Pick<HTMLLinkElement, "getAttribute" | "hasAttribute">;
3
3
  export declare function isInlineCssStylesheetLinkElement(link: InlineCssStylesheetLinkElement): boolean;
4
4
  export declare function removeStylesheetLinksCoveredByInlineCss(): void;
5
- //#endregion
5
+ //#endregion
6
+ export {};
@@ -38,4 +38,5 @@ export type StaticLayoutObservationSkipRejection = Readonly<{
38
38
  export declare function getStaticLayoutObservationSkipRejection(observation: AppLayoutParamAccessObservation): StaticLayoutObservationSkipRejection | null;
39
39
  export declare function isAppLayoutObservationUnsafeForStaticReuse(observation: AppLayoutParamAccessObservation): boolean;
40
40
  export declare function createAppLayoutParamAccessTracker(): AppLayoutParamAccessTracker;
41
- //#endregion
41
+ //#endregion
42
+ export {};
@@ -9,4 +9,5 @@ export declare function createGenerateMetadataSpanDescriptor(moduleRoute: string
9
9
  readonly name: `generateMetadata ${string}`;
10
10
  readonly type: "ResolveMetadata.generateMetadata";
11
11
  };
12
- //#endregion
12
+ //#endregion
13
+ export {};
@@ -50,6 +50,12 @@ export type ApplyAppMiddlewareResult = {
50
50
  search: string | null;
51
51
  } | {
52
52
  kind: "response";
53
+ /**
54
+ * True when `response` proxies a middleware external rewrite. It carries
55
+ * middleware's headers, and the caller still stages next.config headers
56
+ * beneath them.
57
+ */
58
+ externalRewrite?: boolean;
53
59
  /** Present on real middleware results; optional for older generated callers. */
54
60
  matched?: boolean;
55
61
  /** True when this pathname can match middleware for some request context. */
@@ -6,7 +6,7 @@ import { internalServerErrorResponse } from "./http-error-responses.js";
6
6
  import { cloneRequestWithHeaders, processMiddlewareHeaders } from "./request-pipeline.js";
7
7
  import { executeMiddleware } from "./middleware-runtime.js";
8
8
  import { applyMiddlewareRequestHeaders, setHeadersContext } from "../shims/headers.js";
9
- import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
9
+ import { mergeMiddlewareResponseHeaders, withExternalRewriteResponseHeaders } from "./middleware-response-headers.js";
10
10
  import { setNavigationContext } from "../shims/navigation-context-accessors.js";
11
11
  //#region src/server/app-middleware.ts
12
12
  const FLIGHT_HEADER_SET = new Set(FLIGHT_HEADERS);
@@ -92,19 +92,15 @@ async function proxyExternalMiddlewareRewrite(request, rewriteUrl, context) {
92
92
  const proxyResponse = await proxyExternalRequest(proxyRequest, rewriteUrl);
93
93
  const headers = new Headers(proxyResponse.headers);
94
94
  processMiddlewareHeaders(headers);
95
- if (!context.headers) return new Response(proxyResponse.body, {
96
- status: proxyResponse.status,
97
- statusText: proxyResponse.statusText,
98
- headers
99
- });
100
- const middlewareHeaders = new Headers(context.headers);
95
+ const stagedHeaders = new Headers();
96
+ const middlewareHeaders = new Headers(context.headers ?? void 0);
101
97
  processMiddlewareHeaders(middlewareHeaders);
102
- mergeMiddlewareResponseHeaders(headers, middlewareHeaders);
103
- return new Response(proxyResponse.body, {
98
+ mergeMiddlewareResponseHeaders(stagedHeaders, middlewareHeaders);
99
+ return withExternalRewriteResponseHeaders(new Response(proxyResponse.body, {
104
100
  status: proxyResponse.status,
105
101
  statusText: proxyResponse.statusText,
106
102
  headers
107
- });
103
+ }), stagedHeaders, middlewareHeaders.getSetCookie());
108
104
  }
109
105
  function validationResponseWithMiddlewareHeaders(response, context) {
110
106
  if (!context.headers) return response;
@@ -171,6 +167,7 @@ async function applyAppMiddleware(options) {
171
167
  const externalRequest = options.externalRewriteRequest ?? options.request;
172
168
  return {
173
169
  kind: "response",
170
+ externalRewrite: true,
174
171
  matched,
175
172
  pathnameEligible,
176
173
  response: await proxyExternalMiddlewareRewrite(externalRequest, forwarded.rewriteUrl, options.context)
@@ -248,6 +245,7 @@ async function applyAppMiddleware(options) {
248
245
  const externalRequest = options.externalRewriteRequest ?? options.request;
249
246
  return {
250
247
  kind: "response",
248
+ externalRewrite: true,
251
249
  matched,
252
250
  pathnameEligible,
253
251
  response: await proxyExternalMiddlewareRewrite(externalRequest, result.rewriteUrl, options.context)
@@ -1,11 +1,9 @@
1
- import { RouteManifest, RouteManifestRoute } from "../routing/app-route-graph.js";
1
+ import { BrowserRouteManifest, BrowserRouteManifestRoute } from "../routing/browser-route-manifest.js";
2
+ import { OptimisticRouteTrieMatch } from "../routing/optimistic-route-trie.js";
2
3
  import { AppElements } from "./app-elements-wire.js";
3
4
  import "./app-elements.js";
4
5
  //#region src/server/app-optimistic-routing.d.ts
5
- type OptimisticRouteMatch = {
6
- params: Record<string, string | string[]>;
7
- route: RouteManifestRoute;
8
- };
6
+ type OptimisticRouteMatch = OptimisticRouteTrieMatch<BrowserRouteManifestRoute>;
9
7
  export type OptimisticRouteTemplate = {
10
8
  elements: AppElements;
11
9
  mountedSlotsHeader: string | null;
@@ -34,12 +32,12 @@ export declare function getOptimisticPrefetchSourceKey(options: {
34
32
  export declare function matchOptimisticRouteManifestRoute(options: {
35
33
  basePath: string;
36
34
  href: string;
37
- routeManifest: RouteManifest;
35
+ routeManifest: BrowserRouteManifest;
38
36
  }): OptimisticRouteMatch | null;
39
37
  export declare function resolveOptimisticNavigationParamsForHref(options: {
40
38
  basePath: string;
41
39
  href: string;
42
- routeManifest: RouteManifest;
40
+ routeManifest: BrowserRouteManifest;
43
41
  }): Record<string, string | string[]> | null;
44
42
  export declare function createOptimisticRouteTemplate(options: {
45
43
  allowLoadingShell?: boolean;
@@ -48,9 +46,25 @@ export declare function createOptimisticRouteTemplate(options: {
48
46
  href: string;
49
47
  interceptionContext: string | null;
50
48
  mountedSlotsHeader: string | null;
51
- routeManifest: RouteManifest;
49
+ routeManifest: BrowserRouteManifest;
52
50
  }): OptimisticRouteTemplate | null;
53
51
  export declare function createOptimisticRouteElements(template: OptimisticRouteTemplate): AppElements;
52
+ /**
53
+ * The optimistic shell reveals the prefetch's streamed metadata, such as its
54
+ * title. React won't hide revealed content again in a transition, so while the
55
+ * authoritative payload's own metadata streams, its whole commit, page
56
+ * included, would wait for it. Render that metadata in a new boundary whose
57
+ * fallback is the shell's instead, so the page commits as it streams and the
58
+ * prefetched title stays until the payload's arrives. Next.js likewise renders
59
+ * the prefetched head until the dynamic one resolves (`Head` in app-router.tsx).
60
+ *
61
+ * A payload streams at most one route's metadata. The shell's may carry
62
+ * another concrete route id, since a template learned for one set of params
63
+ * is reused for others. `navigationKey` remounts the boundary on every
64
+ * navigation, so one that already revealed an earlier navigation's metadata
65
+ * can't hold back the next, as Next.js keys `Head` by its vary path.
66
+ */
67
+ export declare function keepOptimisticStreamingMetadata(elements: AppElements, optimisticElements: AppElements, navigationKey: string): AppElements;
54
68
  /**
55
69
  * A loading-shell prefetch stops at the first loading boundary, so layouts
56
70
  * below that boundary are present in the route metadata but absent from the
@@ -63,7 +77,7 @@ export declare function canCommitOptimisticRouteTemplate(options: {
63
77
  currentElements: AppElements;
64
78
  currentLayoutIds: readonly string[];
65
79
  currentParams: Readonly<Record<string, string | string[]>>;
66
- routeManifest: RouteManifest;
80
+ routeManifest: BrowserRouteManifest;
67
81
  targetRouteParams: Readonly<Record<string, string | string[]>>;
68
82
  targetUrlParts: readonly string[];
69
83
  template: OptimisticRouteTemplate;
@@ -73,7 +87,8 @@ export declare function resolveOptimisticNavigationPayload(options: {
73
87
  href: string;
74
88
  interceptionContext: string | null;
75
89
  mountedSlotsHeader: string | null;
76
- routeManifest: RouteManifest;
90
+ routeManifest: BrowserRouteManifest;
77
91
  templates: ReadonlyMap<string, OptimisticRouteTemplate>;
78
92
  }): OptimisticNavigationPayload | null;
79
- //#endregion
93
+ //#endregion
94
+ export {};
@@ -1,7 +1,8 @@
1
1
  import { isUnknownRecord } from "../utils/record.js";
2
2
  import { stripBasePath } from "../utils/base-path.js";
3
- import { buildParams, decodeMatchedParams, splitPathnameForRouteMatch } from "../routing/utils.js";
3
+ import { decodeMatchedParams, splitPathnameForRouteMatch } from "../routing/utils.js";
4
4
  import { extractRawRoutePatternParams, matchRoutePattern } from "../routing/route-pattern.js";
5
+ import { buildOptimisticRouteTrie, matchOptimisticRouteTrie } from "../routing/optimistic-route-trie.js";
5
6
  import { AppElementsWire } from "./app-elements-wire.js";
6
7
  import "./app-elements.js";
7
8
  import { createNestedBfcacheSlotSegmentId, deriveBfcacheSegmentIdentity, isNestedBfcacheSlotSegmentId } from "./bfcache-identity.js";
@@ -17,61 +18,8 @@ function getOptimisticRouteTemplateKey(options) {
17
18
  function getOptimisticPrefetchSourceKey(options) {
18
19
  return `${options.cacheKey}\0${options.interceptionContext ?? ""}\0${options.mountedSlotsHeader ?? ""}`;
19
20
  }
20
- function createNode() {
21
- return {
22
- catchAllChild: null,
23
- dynamicChild: null,
24
- optionalCatchAllChild: null,
25
- route: null,
26
- staticChildren: /* @__PURE__ */ new Map()
27
- };
28
- }
29
21
  function buildRouteTrie(routeManifest) {
30
- const root = createNode();
31
- for (const route of routeManifest.segmentGraph.routes.values()) {
32
- let node = root;
33
- const parts = route.patternParts;
34
- if (parts.length === 0) {
35
- node.route ??= route;
36
- continue;
37
- }
38
- for (const [index, part] of parts.entries()) {
39
- const isTerminal = index === parts.length - 1;
40
- if (part.startsWith(":") && part.endsWith("+")) {
41
- if (isTerminal && node.catchAllChild === null) node.catchAllChild = {
42
- paramName: part.slice(1, -1),
43
- route
44
- };
45
- break;
46
- }
47
- if (part.startsWith(":") && part.endsWith("*")) {
48
- if (isTerminal && node.optionalCatchAllChild === null) node.optionalCatchAllChild = {
49
- paramName: part.slice(1, -1),
50
- route
51
- };
52
- break;
53
- }
54
- if (part.startsWith(":")) {
55
- const paramName = part.slice(1);
56
- if (node.dynamicChild === null) node.dynamicChild = {
57
- node: createNode(),
58
- paramName
59
- };
60
- else if (node.dynamicChild.paramName !== paramName && import.meta.env.DEV) console.warn(`[vinext] Optimistic route trie found conflicting dynamic segments at the same level: :${node.dynamicChild.paramName} vs ${part}`);
61
- node = node.dynamicChild.node;
62
- if (isTerminal) node.route ??= route;
63
- continue;
64
- }
65
- let staticChild = node.staticChildren.get(part);
66
- if (staticChild === void 0) {
67
- staticChild = createNode();
68
- node.staticChildren.set(part, staticChild);
69
- }
70
- node = staticChild;
71
- if (isTerminal) node.route ??= route;
72
- }
73
- }
74
- return root;
22
+ return buildOptimisticRouteTrie(routeManifest.segmentGraph.routes.values(), import.meta.env.DEV ? (existingParamName, part) => console.warn(`[vinext] Optimistic route trie found conflicting dynamic segments at the same level: :${existingParamName} vs ${part}`) : void 0);
75
23
  }
76
24
  function getRouteTrie(routeManifest) {
77
25
  const existing = routeTrieCache.get(routeManifest);
@@ -80,45 +28,6 @@ function getRouteTrie(routeManifest) {
80
28
  routeTrieCache.set(routeManifest, trie);
81
29
  return trie;
82
30
  }
83
- function matchNode(node, urlParts, index, entries) {
84
- if (index === urlParts.length) {
85
- if (node.route !== null) return {
86
- route: node.route,
87
- params: buildParams(entries)
88
- };
89
- if (node.optionalCatchAllChild !== null) return {
90
- route: node.optionalCatchAllChild.route,
91
- params: buildParams(entries)
92
- };
93
- return null;
94
- }
95
- const segment = urlParts[index];
96
- const staticChild = node.staticChildren.get(segment);
97
- if (staticChild !== void 0) return matchNode(staticChild, urlParts, index + 1, entries);
98
- if (node.dynamicChild !== null) {
99
- entries.push([node.dynamicChild.paramName, segment]);
100
- const match = matchNode(node.dynamicChild.node, urlParts, index + 1, entries);
101
- if (match !== null) return match;
102
- entries.pop();
103
- }
104
- if (node.catchAllChild !== null) {
105
- const params = buildParams(entries);
106
- params[node.catchAllChild.paramName] = urlParts.slice(index);
107
- return {
108
- route: node.catchAllChild.route,
109
- params
110
- };
111
- }
112
- if (node.optionalCatchAllChild !== null) {
113
- const params = buildParams(entries);
114
- params[node.optionalCatchAllChild.paramName] = urlParts.slice(index);
115
- return {
116
- route: node.optionalCatchAllChild.route,
117
- params
118
- };
119
- }
120
- return null;
121
- }
122
31
  function hrefToRouteParts(href, basePath) {
123
32
  let url;
124
33
  try {
@@ -138,7 +47,7 @@ function hrefToRouteParts(href, basePath) {
138
47
  function matchOptimisticRouteManifestRoute(options) {
139
48
  const urlParts = hrefToRouteParts(options.href, options.basePath);
140
49
  if (urlParts === null) return null;
141
- const match = matchNode(getRouteTrie(options.routeManifest), urlParts.normalized, 0, []);
50
+ const match = matchOptimisticRouteTrie(getRouteTrie(options.routeManifest), urlParts.normalized);
142
51
  if (match === null) return null;
143
52
  decodeMatchedParams(match.params);
144
53
  return match;
@@ -294,6 +203,39 @@ function createOptimisticRouteElements(template) {
294
203
  for (const pageElementId of template.pageElementIds) elements[pageElementId] = createElement(OptimisticRouteSegment);
295
204
  return elements;
296
205
  }
206
+ function findStreamingMetadataBody(elements) {
207
+ for (const id of Object.keys(elements)) if (id.startsWith("__vinext_streaming_metadata_body:")) return id;
208
+ return null;
209
+ }
210
+ /**
211
+ * The optimistic shell reveals the prefetch's streamed metadata, such as its
212
+ * title. React won't hide revealed content again in a transition, so while the
213
+ * authoritative payload's own metadata streams, its whole commit, page
214
+ * included, would wait for it. Render that metadata in a new boundary whose
215
+ * fallback is the shell's instead, so the page commits as it streams and the
216
+ * prefetched title stays until the payload's arrives. Next.js likewise renders
217
+ * the prefetched head until the dynamic one resolves (`Head` in app-router.tsx).
218
+ *
219
+ * A payload streams at most one route's metadata. The shell's may carry
220
+ * another concrete route id, since a template learned for one set of params
221
+ * is reused for others. `navigationKey` remounts the boundary on every
222
+ * navigation, so one that already revealed an earlier navigation's metadata
223
+ * can't hold back the next, as Next.js keys `Head` by its vary path.
224
+ */
225
+ function keepOptimisticStreamingMetadata(elements, optimisticElements, navigationKey) {
226
+ const id = findStreamingMetadataBody(elements);
227
+ const optimisticId = findStreamingMetadataBody(optimisticElements);
228
+ if (id === null || optimisticId === null) return elements;
229
+ const optimisticMetadata = optimisticElements[optimisticId];
230
+ if (optimisticMetadata == null) return elements;
231
+ return {
232
+ ...elements,
233
+ [id]: createElement(Suspense, {
234
+ fallback: optimisticMetadata,
235
+ key: navigationKey
236
+ }, elements[id])
237
+ };
238
+ }
297
239
  /**
298
240
  * A loading-shell prefetch stops at the first loading boundary, so layouts
299
241
  * below that boundary are present in the route metadata but absent from the
@@ -369,4 +311,4 @@ function resolveOptimisticNavigationPayload(options) {
369
311
  };
370
312
  }
371
313
  //#endregion
372
- export { canCommitOptimisticRouteTemplate, createOptimisticRouteElements, createOptimisticRouteTemplate, getOptimisticPrefetchSourceKey, getOptimisticRouteTemplateKey, matchOptimisticRouteManifestRoute, resolveOptimisticNavigationParamsForHref, resolveOptimisticNavigationPayload };
314
+ export { canCommitOptimisticRouteTemplate, createOptimisticRouteElements, createOptimisticRouteTemplate, getOptimisticPrefetchSourceKey, getOptimisticRouteTemplateKey, keepOptimisticStreamingMetadata, matchOptimisticRouteManifestRoute, resolveOptimisticNavigationParamsForHref, resolveOptimisticNavigationPayload };
@@ -6,7 +6,7 @@ import "../shims/navigation.js";
6
6
  import { AppPageParams } from "./app-page-boundary.js";
7
7
  import { AppPageFontPreload } from "./app-page-execution.js";
8
8
  import { AppPageMiddlewareContext } from "./app-page-response.js";
9
- import { ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
9
+ import { AppPageFallbackRouteHead, ApplyAppPageFileBasedMetadata } from "./app-page-head.js";
10
10
  import { AppPageRouteWiringRoute } from "./app-page-route-wiring.js";
11
11
  import { AppPageInterceptOptions } from "./app-page-element-builder.js";
12
12
  import { AppPageSsrHandler } from "./app-page-stream.js";
@@ -30,9 +30,17 @@ export type AppPageBoundaryRoute<TModule extends AppPageModule = AppPageModule>
30
30
  notFound?: TModule | null;
31
31
  notFounds?: readonly (TModule | null | undefined)[] | null;
32
32
  notFoundTreePosition?: number | null;
33
+ page?: TModule | null;
33
34
  params?: AppPageParams;
34
35
  pattern?: string;
35
36
  routeSegments?: readonly string[];
37
+ childrenSlot?: AppPageRouteWiringRoute<TModule>["childrenSlot"];
38
+ segmentForbiddens?: readonly (TModule | null | undefined)[] | null;
39
+ segmentForbiddenTreePositions?: readonly number[] | null;
40
+ segmentNotFounds?: readonly (TModule | null | undefined)[] | null;
41
+ segmentNotFoundTreePositions?: readonly number[] | null;
42
+ segmentUnauthorizeds?: readonly (TModule | null | undefined)[] | null;
43
+ segmentUnauthorizedTreePositions?: readonly number[] | null;
36
44
  slots?: AppPageRouteWiringRoute<TModule>["slots"];
37
45
  unauthorized?: TModule | null;
38
46
  unauthorizedTreePosition?: number | null;
@@ -88,12 +96,21 @@ type AppPageBoundaryRenderCommonOptions<TModule extends AppPageModule = AppPageM
88
96
  type RenderAppPageHttpAccessFallbackOptions<TModule extends AppPageModule = AppPageModule> = {
89
97
  boundaryComponent?: AppPageComponent | null;
90
98
  boundaryModule?: TModule | null;
99
+ /** Boundary whose metadata the head uses, when not the rendered boundary. */
100
+ headBoundaryModule?: TModule | null;
101
+ /** Layouts whose metadata the head uses, when more than render around the boundary. */
102
+ headLayoutModules?: readonly (TModule | null | undefined)[] | null;
91
103
  intercept?: AppPageInterceptOptions<TModule> | null;
92
104
  layoutModules?: readonly (TModule | null | undefined)[] | null;
93
105
  matchedParams: AppPageParams;
94
106
  rootForbiddenModule?: TModule | null;
95
107
  rootNotFoundModule?: TModule | null;
96
108
  rootUnauthorizedModule?: TModule | null;
109
+ /**
110
+ * The matched route's render threw the signal, so the document keeps the
111
+ * route's own head rather than the boundary convention's.
112
+ */
113
+ routeHead?: AppPageFallbackRouteHead | null;
97
114
  /** Normalized, basePath-free application pathname used for route matching. */
98
115
  routePathname?: string;
99
116
  route?: AppPageBoundaryRoute<TModule> | null;
@@ -116,4 +133,5 @@ type RenderAppPageErrorBoundaryOptions<TModule extends AppPageModule = AppPageMo
116
133
  } & AppPageBoundaryRenderCommonOptions<TModule>;
117
134
  export declare function renderAppPageHttpAccessFallback<TModule extends AppPageModule>(options: RenderAppPageHttpAccessFallbackOptions<TModule>): Promise<Response | null>;
118
135
  export declare function renderAppPageErrorBoundary<TModule extends AppPageModule>(options: RenderAppPageErrorBoundaryOptions<TModule>): Promise<Response | null>;
119
- //#endregion
136
+ //#endregion
137
+ export {};