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.
- package/README.md +5 -2
- package/THIRD_PARTY_LICENSES.md +47 -0
- package/dist/_virtual/_rolldown/runtime.js +4 -3
- package/dist/build/action-owner-manifest.d.ts +3 -2
- package/dist/build/action-owner-manifest.js +18 -2
- package/dist/build/app-page-static-eligibility.d.ts +17 -1
- package/dist/build/app-page-static-eligibility.js +80 -13
- package/dist/build/clean-output.d.ts +2 -1
- package/dist/build/client-build-config.d.ts +13 -3
- package/dist/build/client-build-config.js +46 -9
- package/dist/build/client-reference-async.d.ts +48 -0
- package/dist/build/client-reference-async.js +123 -0
- package/dist/build/client-reference-chunks.d.ts +32 -0
- package/dist/build/client-reference-chunks.js +111 -0
- package/dist/build/client-reference-groups.d.ts +9 -1
- package/dist/build/client-reference-groups.js +40 -2
- package/dist/build/css-url-assets.d.ts +2 -1
- package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
- package/dist/build/google-fonts/font-metadata.d.ts +2 -1
- package/dist/build/google-fonts/validate.d.ts +2 -1
- package/dist/build/inline-css.d.ts +2 -1
- package/dist/build/module-dependency-cache.d.ts +2 -1
- package/dist/build/next-client-runtime-manifests.d.ts +2 -1
- package/dist/build/precompress.d.ts +2 -1
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-paths.d.ts +2 -1
- package/dist/build/prerender-phase.d.ts +2 -1
- package/dist/build/prerender-server-pool.js +1 -1
- package/dist/build/prerender.d.ts +3 -2
- package/dist/build/prerender.js +6 -5
- package/dist/build/report.d.ts +2 -15
- package/dist/build/report.js +1 -51
- package/dist/build/run-prerender.d.ts +2 -1
- package/dist/build/server-actions-encryption-key.d.ts +2 -1
- package/dist/build/ssr-manifest.js +25 -2
- package/dist/build/standalone.d.ts +2 -1
- package/dist/cache/cache-adapters-virtual.d.ts +2 -1
- package/dist/cache.js +1 -2
- package/dist/check.d.ts +2 -1
- package/dist/check.js +5 -1
- package/dist/cli-args.d.ts +2 -1
- package/dist/cli.js +5 -0
- package/dist/client/client-redirect-matcher.js +2 -1
- package/dist/client/client-redirects.d.ts +4 -3
- package/dist/client/client-redirects.js +2 -1
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/dev-error-overlay-store.d.ts +2 -1
- package/dist/client/dev-error-overlay.js +1 -1
- package/dist/client/index.js +1 -2
- package/dist/client/instrumentation-client-state.js +5 -5
- package/dist/client/navigation-runtime.d.ts +16 -2
- package/dist/client/navigation-runtime.js +2 -2
- package/dist/client/pages-router-link-navigation.d.ts +2 -1
- package/dist/client/vinext-next-data.d.ts +25 -1
- package/dist/client/window-next.d.ts +2 -1
- package/dist/config/config-matchers.d.ts +12 -1
- package/dist/config/config-matchers.js +111 -16
- package/dist/config/dotenv.d.ts +2 -1
- package/dist/config/next-config.d.ts +32 -1
- package/dist/config/next-config.js +93 -5
- package/dist/config/tsconfig-paths.d.ts +2 -1
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +327 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +123 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +29 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +134 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +50 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +455 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +169 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +2584 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +2220 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +227 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +425 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +427 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +229 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +292 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +106 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +182 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +42 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +94 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +95 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
- package/dist/deps/.pnpm/safer-buffer@2.1.2/deps/safer-buffer/safer.js +45 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
- package/dist/entries/app-browser-entry.d.ts +20 -5
- package/dist/entries/app-browser-entry.js +79 -6
- package/dist/entries/app-rsc-entry.d.ts +2 -1
- package/dist/entries/app-rsc-entry.js +59 -60
- package/dist/entries/app-rsc-manifest.d.ts +2 -1
- package/dist/entries/app-rsc-manifest.js +56 -4
- package/dist/entries/app-ssr-entry.js +1 -0
- package/dist/entries/pages-entry-helpers.js +1 -2
- package/dist/entries/pages-server-entry.d.ts +2 -1
- package/dist/entries/pages-server-entry.js +34 -9
- package/dist/entries/runtime-entry-module.d.ts +1 -0
- package/dist/entries/runtime-entry-module.js +4 -1
- package/dist/image/image-adapters-virtual.d.ts +2 -1
- package/dist/index.js +184 -103
- package/dist/init-cloudflare.d.ts +1 -3
- package/dist/init-cloudflare.js +10 -48
- package/dist/init-platform.d.ts +2 -0
- package/dist/init-platform.js +4 -0
- package/dist/plugins/client-compile-hints.d.ts +30 -0
- package/dist/plugins/client-compile-hints.js +88 -0
- package/dist/plugins/client-reference-dedup.d.ts +2 -1
- package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
- package/dist/plugins/dynamic-preload-metadata.js +1 -1
- package/dist/plugins/environment.d.ts +2 -1
- package/dist/plugins/extensionless-dynamic-import.js +6 -2
- package/dist/plugins/fonts.js +9 -12
- package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
- package/dist/plugins/import-meta-url.d.ts +2 -1
- package/dist/plugins/next-intl-catalog.d.ts +12 -0
- package/dist/plugins/next-intl-catalog.js +85 -0
- package/dist/plugins/og-assets.d.ts +2 -1
- package/dist/plugins/og-assets.js +2 -3
- package/dist/plugins/optimize-imports.d.ts +2 -1
- package/dist/plugins/pages-node-externals.d.ts +3 -1
- package/dist/plugins/pages-node-externals.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -1
- package/dist/plugins/require-condition-resolution.d.ts +2 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
- package/dist/plugins/rsc-client-reference-loaders.js +170 -68
- package/dist/plugins/rsc-client-shim-excludes.js +2 -0
- package/dist/plugins/sass.d.ts +2 -1
- package/dist/plugins/strip-server-exports.d.ts +2 -1
- package/dist/plugins/styled-jsx.d.ts +2 -1
- package/dist/plugins/transform-result.d.ts +2 -1
- package/dist/plugins/typeof-window.d.ts +2 -1
- package/dist/plugins/use-cache-callable.d.ts +1 -1
- package/dist/plugins/use-cache-callable.js +136 -94
- package/dist/plugins/worker-image-imports.js +1 -1
- package/dist/plugins/worker-use-server.d.ts +2 -1
- package/dist/routing/app-route-graph.d.ts +46 -0
- package/dist/routing/app-route-graph.js +131 -51
- package/dist/routing/browser-route-manifest.d.ts +2 -1
- package/dist/routing/optimistic-route-trie.d.ts +2 -1
- package/dist/routing/route-matching.d.ts +2 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/server/accept-encoding.d.ts +2 -1
- package/dist/server/api-handler.js +19 -4
- package/dist/server/app-action-forwarding.d.ts +2 -1
- package/dist/server/app-bfcache-identity.d.ts +2 -1
- package/dist/server/app-bfcache-identity.js +1 -1
- package/dist/server/app-browser-action-result.d.ts +2 -1
- package/dist/server/app-browser-entry.js +106 -66
- package/dist/server/app-browser-error.d.ts +2 -1
- package/dist/server/app-browser-history-controller.d.ts +7 -5
- package/dist/server/app-browser-history-controller.js +93 -15
- package/dist/server/app-browser-hydration.d.ts +2 -1
- package/dist/server/app-browser-interception-context.d.ts +2 -1
- package/dist/server/app-browser-navigation-controller.d.ts +2 -2
- package/dist/server/app-browser-navigation-controller.js +16 -12
- package/dist/server/app-browser-popstate.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.js +4 -4
- package/dist/server/app-browser-server-action-client.d.ts +4 -1
- package/dist/server/app-browser-server-action-client.js +4 -3
- package/dist/server/app-browser-state.d.ts +2 -4
- package/dist/server/app-browser-state.js +9 -4
- package/dist/server/app-browser-stream.d.ts +2 -1
- package/dist/server/app-browser-supplemental-refresh.js +16 -1
- package/dist/server/app-browser-visible-commit.d.ts +3 -2
- package/dist/server/app-browser-visible-commit.js +2 -12
- package/dist/server/app-client-reference-manifest.d.ts +31 -0
- package/dist/server/app-client-reference-manifest.js +46 -0
- package/dist/server/app-client-reference-preloader.d.ts +25 -5
- package/dist/server/app-client-reference-preloader.js +22 -7
- package/dist/server/app-elements-wire.d.ts +8 -39
- package/dist/server/app-elements-wire.js +4 -41
- package/dist/server/app-elements.d.ts +4 -2
- package/dist/server/app-elements.js +4 -2
- package/dist/server/app-fallback-renderer.d.ts +9 -2
- package/dist/server/app-fallback-renderer.js +4 -1
- package/dist/server/app-history-state.d.ts +4 -3
- package/dist/server/app-history-state.js +5 -2
- package/dist/server/app-inline-css-client.d.ts +2 -1
- package/dist/server/app-metadata-tracing.d.ts +2 -1
- package/dist/server/app-mounted-layouts.d.ts +21 -0
- package/dist/server/app-mounted-layouts.js +67 -0
- package/dist/server/app-optimistic-routing.d.ts +37 -2
- package/dist/server/app-optimistic-routing.js +75 -2
- package/dist/server/app-page-boundary-render.d.ts +20 -2
- package/dist/server/app-page-boundary-render.js +224 -40
- package/dist/server/app-page-boundary.d.ts +34 -5
- package/dist/server/app-page-boundary.js +41 -8
- package/dist/server/app-page-cache-finalizer.d.ts +14 -2
- package/dist/server/app-page-cache-finalizer.js +71 -30
- package/dist/server/app-page-cache-render.d.ts +10 -2
- package/dist/server/app-page-cache-render.js +14 -2
- package/dist/server/app-page-cache.d.ts +13 -1
- package/dist/server/app-page-cache.js +33 -11
- package/dist/server/app-page-dispatch.d.ts +39 -11
- package/dist/server/app-page-dispatch.js +236 -177
- package/dist/server/app-page-element-builder.d.ts +19 -3
- package/dist/server/app-page-element-builder.js +193 -71
- package/dist/server/app-page-execution.d.ts +43 -51
- package/dist/server/app-page-execution.js +205 -92
- package/dist/server/app-page-head.d.ts +108 -3
- package/dist/server/app-page-head.js +337 -154
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +49 -2
- package/dist/server/app-page-http-access-fallback-metadata.js +77 -2
- package/dist/server/app-page-layout-gate.d.ts +35 -0
- package/dist/server/app-page-layout-gate.js +50 -0
- package/dist/server/app-page-method.d.ts +2 -1
- package/dist/server/app-page-params.d.ts +0 -1
- package/dist/server/app-page-params.js +1 -14
- package/dist/server/app-page-probe.d.ts +5 -22
- package/dist/server/app-page-probe.js +4 -37
- package/dist/server/app-page-render-identity.d.ts +2 -1
- package/dist/server/app-page-render.d.ts +9 -13
- package/dist/server/app-page-render.js +108 -214
- package/dist/server/app-page-request.d.ts +15 -4
- package/dist/server/app-page-request.js +2 -2
- package/dist/server/app-page-response.js +3 -3
- package/dist/server/app-page-route-wiring.d.ts +65 -8
- package/dist/server/app-page-route-wiring.js +259 -103
- package/dist/server/app-page-rsc-render-status.d.ts +29 -2
- package/dist/server/app-page-rsc-render-status.js +121 -13
- package/dist/server/app-page-search-params-observation.d.ts +7 -2
- package/dist/server/app-page-search-params-observation.js +8 -1
- package/dist/server/app-page-segment-plan.d.ts +2 -1
- package/dist/server/app-page-stream.d.ts +33 -1
- package/dist/server/app-page-stream.js +25 -6
- package/dist/server/app-pages-bridge.d.ts +6 -1
- package/dist/server/app-pages-bridge.js +7 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
- package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
- package/dist/server/app-prerender-endpoints.d.ts +2 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-render-dependency.d.ts +21 -4
- package/dist/server/app-render-dependency.js +100 -33
- package/dist/server/app-request-stage-dispatch.js +1 -1
- package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
- package/dist/server/app-response-stage-entry.d.ts +2 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -1
- package/dist/server/app-route-handler-cache.js +2 -2
- package/dist/server/app-route-handler-dispatch.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.js +15 -10
- package/dist/server/app-route-handler-execution.d.ts +2 -1
- package/dist/server/app-route-handler-execution.js +8 -3
- package/dist/server/app-route-handler-policy.d.ts +1 -1
- package/dist/server/app-route-handler-policy.js +3 -3
- package/dist/server/app-route-handler-response.d.ts +2 -1
- package/dist/server/app-route-handler-response.js +1 -1
- package/dist/server/app-route-handler-runtime.d.ts +2 -1
- package/dist/server/app-route-handler-runtime.js +17 -4
- package/dist/server/app-route-module-loader.d.ts +18 -1
- package/dist/server/app-route-module-loader.js +8 -0
- package/dist/server/app-route-tree-prefetch.d.ts +2 -1
- package/dist/server/app-rsc-cache-busting.d.ts +2 -2
- package/dist/server/app-rsc-cache-busting.js +4 -4
- package/dist/server/app-rsc-error-handler.d.ts +4 -2
- package/dist/server/app-rsc-error-handler.js +9 -1
- package/dist/server/app-rsc-errors.d.ts +10 -1
- package/dist/server/app-rsc-errors.js +8 -1
- package/dist/server/app-rsc-handler.d.ts +7 -6
- package/dist/server/app-rsc-handler.js +36 -34
- package/dist/server/app-rsc-request-normalization.d.ts +0 -4
- package/dist/server/app-rsc-request-normalization.js +1 -4
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
- package/dist/server/app-rsc-response-finalizer.js +2 -2
- package/dist/server/app-rsc-response-stage.js +5 -3
- package/dist/server/app-rsc-route-matching.d.ts +38 -1
- package/dist/server/app-rsc-route-matching.js +24 -0
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-segment-config.js +1 -14
- package/dist/server/app-server-action-execution.d.ts +5 -2
- package/dist/server/app-server-action-execution.js +10 -7
- package/dist/server/app-ssr-entry.d.ts +8 -0
- package/dist/server/app-ssr-entry.js +98 -50
- package/dist/server/app-ssr-error-meta.d.ts +2 -1
- package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
- package/dist/server/app-ssr-stream.d.ts +22 -10
- package/dist/server/app-ssr-stream.js +300 -68
- package/dist/server/app-static-generation.d.ts +2 -1
- package/dist/server/app-streamed-client-references.d.ts +39 -0
- package/dist/server/app-streamed-client-references.js +156 -0
- package/dist/server/app-visited-response-cache.d.ts +38 -2
- package/dist/server/app-visited-response-cache.js +46 -5
- package/dist/server/app-worker-stages.d.ts +27 -4
- package/dist/server/app-worker-stages.js +45 -6
- package/dist/server/artifact-compatibility.d.ts +2 -2
- package/dist/server/artifact-compatibility.js +1 -10
- package/dist/server/bfcache-identity.d.ts +2 -1
- package/dist/server/cache-headers.d.ts +2 -1
- package/dist/server/cache-proof.d.ts +1 -115
- package/dist/server/cache-proof.js +1 -544
- package/dist/server/cacheability-request.d.ts +2 -1
- package/dist/server/cacheability-request.js +13 -8
- package/dist/server/config-headers.d.ts +2 -1
- package/dist/server/csp.d.ts +2 -1
- package/dist/server/default-global-not-found-module.d.ts +2 -1
- package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
- package/dist/server/default-http-access-fallback-modules.js +31 -0
- package/dist/server/defer-until-stream-consumed.d.ts +34 -0
- package/dist/server/defer-until-stream-consumed.js +154 -21
- package/dist/server/dev-lockfile.d.ts +32 -2
- package/dist/server/dev-lockfile.js +46 -2
- package/dist/server/dev-module-runner.d.ts +2 -1
- package/dist/server/dev-server.js +14 -6
- package/dist/server/fetch-handler.js +1 -2
- package/dist/server/file-based-metadata.d.ts +2 -1
- package/dist/server/framework-tracer.d.ts +2 -1
- package/dist/server/headers.d.ts +6 -3
- package/dist/server/headers.js +9 -5
- package/dist/server/html.d.ts +1 -0
- package/dist/server/html.js +19 -1
- package/dist/server/http-conditional.d.ts +2 -1
- package/dist/server/http-error-responses.d.ts +2 -1
- package/dist/server/implicit-tags.d.ts +2 -1
- package/dist/server/isr-cache.d.ts +8 -2
- package/dist/server/isr-cache.js +26 -1
- package/dist/server/metadata-route-build-data.d.ts +2 -1
- package/dist/server/metadata-route-build-data.js +1 -1
- package/dist/server/metadata-route-response.d.ts +2 -1
- package/dist/server/metadata-route-response.js +32 -15
- package/dist/server/metadata-routes.d.ts +2 -1
- package/dist/server/middleware-runtime.d.ts +2 -1
- package/dist/server/multi-stage.d.ts +52 -11
- package/dist/server/multi-stage.js +13 -1
- package/dist/server/navigation-planner.js +1 -1
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/next-error-digest.d.ts +2 -1
- package/dist/server/nitro-public-files-plugin.d.ts +2 -1
- package/dist/server/nitro-public-files.d.ts +2 -1
- package/dist/server/opentelemetry-api.d.ts +2 -1
- package/dist/server/operation-token.d.ts +2 -1
- package/dist/server/pages-api-route.d.ts +2 -1
- package/dist/server/pages-api-route.js +28 -19
- package/dist/server/pages-asset-tags.d.ts +2 -1
- package/dist/server/pages-body-parser-config.d.ts +2 -1
- package/dist/server/pages-client-assets.d.ts +4 -0
- package/dist/server/pages-data-route.d.ts +2 -1
- package/dist/server/pages-document-asset-props.d.ts +2 -1
- package/dist/server/pages-document-initial-props.d.ts +2 -1
- package/dist/server/pages-execution-tracing.d.ts +2 -1
- package/dist/server/pages-execution-tracing.js +1 -1
- package/dist/server/pages-get-initial-props.d.ts +2 -1
- package/dist/server/pages-media-type.d.ts +21 -1
- package/dist/server/pages-media-type.js +69 -5
- package/dist/server/pages-node-compat.js +52 -27
- package/dist/server/pages-page-data.d.ts +7 -1
- package/dist/server/pages-page-data.js +35 -12
- package/dist/server/pages-page-handler.d.ts +3 -2
- package/dist/server/pages-page-handler.js +27 -27
- package/dist/server/pages-page-method.d.ts +2 -1
- package/dist/server/pages-page-response.d.ts +2 -1
- package/dist/server/pages-preview.d.ts +2 -1
- package/dist/server/pages-readiness.d.ts +2 -1
- package/dist/server/pages-request-pipeline.d.ts +10 -1
- package/dist/server/pages-request-pipeline.js +6 -7
- package/dist/server/pages-request-stage-entry.d.ts +2 -1
- package/dist/server/pages-request-stage-entry.js +14 -12
- package/dist/server/pages-response-stage-entry.d.ts +2 -1
- package/dist/server/pages-response-stage-entry.js +9 -3
- package/dist/server/pages-route-data-kind.d.ts +2 -1
- package/dist/server/prerender-cache-life-header.d.ts +2 -1
- package/dist/server/prerender-route-params.d.ts +2 -1
- package/dist/server/prod-server.js +14 -4
- package/dist/server/request-log.d.ts +2 -1
- package/dist/server/request-pipeline.d.ts +6 -0
- package/dist/server/request-pipeline.js +21 -1
- package/dist/server/request-tracing.d.ts +2 -1
- package/dist/server/request-tracing.js +1 -1
- package/dist/server/response-start-tracing.js +7 -29
- package/dist/server/rsc-render-stream.d.ts +4 -0
- package/dist/server/rsc-render-stream.js +25 -0
- package/dist/server/seed-cache.d.ts +2 -1
- package/dist/server/seed-cache.js +1 -1
- package/dist/server/shared-cache-identity.d.ts +23 -0
- package/dist/server/shared-cache-identity.js +36 -0
- package/dist/server/static-file-cache.d.ts +2 -1
- package/dist/server/static-file-cache.js +1 -0
- package/dist/server/worker-revalidation-context.d.ts +2 -1
- package/dist/server/worker-stages.d.ts +18 -4
- package/dist/server/worker-stages.js +23 -4
- package/dist/shims/app.d.ts +2 -1
- package/dist/shims/cache-callable-runtime.d.ts +2 -1
- package/dist/shims/cache-handler.d.ts +8 -3
- package/dist/shims/cache-handler.js +31 -11
- package/dist/shims/cache-request-state.d.ts +17 -20
- package/dist/shims/cache-request-state.js +16 -21
- package/dist/shims/cache-runtime.js +27 -11
- package/dist/shims/cache.d.ts +8 -7
- package/dist/shims/cache.js +17 -19
- package/dist/shims/cacheability-classification.d.ts +2 -0
- package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
- package/dist/shims/caught-not-found-boundaries.js +48 -0
- package/dist/shims/cdn-cache.d.ts +22 -5
- package/dist/shims/cdn-purge-routes.d.ts +2 -1
- package/dist/shims/client-locale.js +2 -1
- package/dist/shims/client-page-root.d.ts +2 -1
- package/dist/shims/client-page-root.js +2 -2
- package/dist/shims/config.d.ts +2 -1
- package/dist/shims/default-forbidden.d.ts +4 -0
- package/dist/shims/default-forbidden.js +18 -0
- package/dist/shims/default-not-found.d.ts +0 -5
- package/dist/shims/default-not-found.js +5 -41
- package/dist/shims/default-unauthorized.d.ts +4 -0
- package/dist/shims/default-unauthorized.js +18 -0
- package/dist/shims/dynamic.js +9 -6
- package/dist/shims/error-boundary.d.ts +39 -3
- package/dist/shims/error-boundary.js +33 -18
- package/dist/shims/fetch-cache-state.d.ts +5 -1
- package/dist/shims/fetch-cache-state.js +1 -3
- package/dist/shims/fetch-cache.d.ts +2 -1
- package/dist/shims/fetch-cache.js +34 -24
- package/dist/shims/font-google.js +1 -2
- package/dist/shims/font-utils.d.ts +3 -2
- package/dist/shims/font-utils.js +5 -3
- package/dist/shims/form.js +3 -3
- package/dist/shims/headers.d.ts +8 -23
- package/dist/shims/headers.js +17 -67
- package/dist/shims/http-access-error-fallback.d.ts +7 -0
- package/dist/shims/http-access-error-fallback.js +47 -0
- package/dist/shims/image.d.ts +1 -22
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
- package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
- package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
- package/dist/shims/internal/client-reference-loader.d.ts +7 -0
- package/dist/shims/internal/client-reference-loader.js +91 -0
- package/dist/shims/internal/cookie-serialize.d.ts +2 -1
- package/dist/shims/internal/cookies.js +1 -2
- package/dist/shims/internal/headers-state.d.ts +2 -0
- package/dist/shims/internal/headers-state.js +6 -1
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
- package/dist/shims/internal/interpolate-as.d.ts +2 -1
- package/dist/shims/internal/navigation-untracked.js +1 -1
- package/dist/shims/internal/pages-data-target.d.ts +2 -1
- package/dist/shims/internal/pages-data-url.d.ts +2 -1
- package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
- package/dist/shims/link.js +197 -52
- package/dist/shims/metadata.d.ts +52 -29
- package/dist/shims/metadata.js +142 -42
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation-server.js +1 -1
- package/dist/shims/navigation.d.ts +95 -8
- package/dist/shims/navigation.js +255 -47
- package/dist/shims/navigation.react-server.js +2 -2
- package/dist/shims/pages-router-runtime.d.ts +2 -1
- package/dist/shims/ppr-fallback-shell.d.ts +2 -1
- package/dist/shims/request-state-types.d.ts +2 -2
- package/dist/shims/router.js +14 -3
- package/dist/shims/slot.d.ts +12 -0
- package/dist/shims/slot.js +37 -9
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +5 -6
- package/dist/typegen.d.ts +2 -1
- package/dist/utils/cache-control-metadata.d.ts +5 -0
- package/dist/utils/cache-control-metadata.js +9 -1
- package/dist/utils/client-build-manifest.d.ts +4 -1
- package/dist/utils/client-build-manifest.js +9 -2
- package/dist/utils/client-entry-manifest.d.ts +13 -0
- package/dist/utils/client-entry-manifest.js +20 -1
- package/dist/utils/client-reference-chunks.d.ts +45 -0
- package/dist/utils/client-reference-chunks.js +30 -0
- package/dist/utils/client-runtime-metadata.d.ts +9 -1
- package/dist/utils/client-runtime-metadata.js +40 -9
- package/dist/utils/compare.d.ts +9 -0
- package/dist/utils/compare.js +15 -1
- package/dist/utils/lazy-chunks.d.ts +14 -0
- package/dist/utils/lazy-chunks.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +2 -1
- package/dist/utils/project.d.ts +4 -3
- package/dist/utils/project.js +12 -17
- package/dist/utils/query.d.ts +2 -1
- package/dist/utils/regex.d.ts +5 -0
- package/dist/utils/regex.js +11 -1
- package/dist/utils/text-stream.d.ts +10 -5
- package/dist/utils/text-stream.js +6 -6
- package/dist/utils/vite-cli-invocation.d.ts +2 -1
- package/package.json +6 -5
- package/dist/build/layout-classification-types.d.ts +0 -60
- package/dist/build/layout-classification-types.js +0 -1
- package/dist/build/layout-classification.d.ts +0 -61
- package/dist/build/layout-classification.js +0 -98
- package/dist/build/route-classification-injector.d.ts +0 -32
- package/dist/build/route-classification-injector.js +0 -59
- package/dist/build/route-classification-manifest.d.ts +0 -53
- package/dist/build/route-classification-manifest.js +0 -143
- package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
- package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -10
- package/dist/server/app-browser-client-reuse-manifest.js +0 -101
- package/dist/server/app-layout-param-observation.d.ts +0 -41
- package/dist/server/app-layout-param-observation.js +0 -168
- package/dist/server/client-reuse-manifest.d.ts +0 -102
- package/dist/server/client-reuse-manifest.js +0 -209
- package/dist/server/default-not-found-module.d.ts +0 -19
- package/dist/server/default-not-found-module.js +0 -18
- package/dist/server/rsc-stream-hints.d.ts +0 -21
- package/dist/server/rsc-stream-hints.js +0 -227
- package/dist/server/skip-cache-proof.d.ts +0 -60
- package/dist/server/skip-cache-proof.js +0 -168
- package/dist/server/static-layout-client-reuse-proof.d.ts +0 -13
- package/dist/server/static-layout-client-reuse-proof.js +0 -33
- package/dist/utils/sorted-array.d.ts +0 -7
- package/dist/utils/sorted-array.js +0 -20
|
@@ -3,12 +3,14 @@ import "./app-rsc-vary.js";
|
|
|
3
3
|
import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
|
|
4
4
|
import { createRscOnErrorHandler } from "./app-rsc-errors.js";
|
|
5
5
|
//#region src/server/app-rsc-error-handler.ts
|
|
6
|
+
const loggedErrorsByRequest = /* @__PURE__ */ new WeakMap();
|
|
6
7
|
/**
|
|
7
8
|
* Build a per-request RSC error handler that extracts request metadata from
|
|
8
9
|
* the incoming Web `Request`, wires it into a `createRscOnErrorHandler` call,
|
|
9
10
|
* and binds the configured `reportRequestError` reporter.
|
|
10
11
|
*
|
|
11
|
-
*
|
|
12
|
+
* Takes all deps explicitly. The only module-level state is the set of errors
|
|
13
|
+
* each request already logged, keyed weakly by its `Request`.
|
|
12
14
|
*/
|
|
13
15
|
function createAppRscOnErrorHandler(reportRequestError, request, pathname, routePath, overrides) {
|
|
14
16
|
const requestHeaders = Object.fromEntries(request.headers.entries());
|
|
@@ -24,9 +26,15 @@ function createAppRscOnErrorHandler(reportRequestError, request, pathname, route
|
|
|
24
26
|
renderSource: overrides?.renderSource ?? (request.headers.get("RSC") === "1" || new URL(request.url).pathname.endsWith(".rsc") ? "react-server-components-payload" : "react-server-components"),
|
|
25
27
|
revalidateReason: isOnDemandRevalidateRequest(request.headers.get("x-prerender-revalidate")) ? "on-demand" : overrides?.revalidateReason
|
|
26
28
|
};
|
|
29
|
+
let loggedErrors = loggedErrorsByRequest.get(request);
|
|
30
|
+
if (!loggedErrors) {
|
|
31
|
+
loggedErrors = /* @__PURE__ */ new WeakSet();
|
|
32
|
+
loggedErrorsByRequest.set(request, loggedErrors);
|
|
33
|
+
}
|
|
27
34
|
return createRscOnErrorHandler({
|
|
28
35
|
attachDigest: errorContext.renderSource !== "server-rendering",
|
|
29
36
|
errorContext,
|
|
37
|
+
loggedErrors,
|
|
30
38
|
reportRequestError(error, info, context) {
|
|
31
39
|
reportRequestError(error, info, context);
|
|
32
40
|
},
|
|
@@ -15,6 +15,14 @@ type RscErrorReporter = (error: unknown, requestInfo: RscRequestInfo, errorConte
|
|
|
15
15
|
type CreateRscOnErrorHandlerOptions = {
|
|
16
16
|
attachDigest?: boolean;
|
|
17
17
|
errorContext: RscErrorContext | null;
|
|
18
|
+
/**
|
|
19
|
+
* The errors this request already logged, shared by its handlers so an error
|
|
20
|
+
* reaching more than one, such as in the RSC and then the SSR pass, is logged
|
|
21
|
+
* once. Like Next.js, a digest alone does not mean an error was logged: user
|
|
22
|
+
* code can set its own. Request-scoped, as a failed module evaluation throws
|
|
23
|
+
* the same error on every request. Defaults to this handler's own.
|
|
24
|
+
*/
|
|
25
|
+
loggedErrors?: WeakSet<object>;
|
|
18
26
|
nodeEnv?: string;
|
|
19
27
|
reportRequestError: RscErrorReporter;
|
|
20
28
|
requestInfo: RscRequestInfo | null;
|
|
@@ -46,4 +54,5 @@ export declare function errorDigest(input: string): string;
|
|
|
46
54
|
export declare const PRODUCTION_SERVER_COMPONENTS_ERROR_MESSAGE = "Minified React error #441; visit https://react.dev/errors/441 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";
|
|
47
55
|
export declare function sanitizeErrorForClient(error: unknown, nodeEnv?: "development" | "production" | "test"): unknown;
|
|
48
56
|
export declare function createRscOnErrorHandler(options: CreateRscOnErrorHandlerOptions): (error: unknown) => string | undefined;
|
|
49
|
-
//#endregion
|
|
57
|
+
//#endregion
|
|
58
|
+
export {};
|
|
@@ -63,6 +63,13 @@ function sanitizeErrorForClient(error, nodeEnv = process.env.NODE_ENV) {
|
|
|
63
63
|
}
|
|
64
64
|
function createRscOnErrorHandler(options) {
|
|
65
65
|
let loggedPrerenderErrors;
|
|
66
|
+
const loggedErrors = options.loggedErrors ?? /* @__PURE__ */ new WeakSet();
|
|
67
|
+
const wasLogged = (error) => {
|
|
68
|
+
if (typeof error !== "object" && typeof error !== "function" || error === null) return false;
|
|
69
|
+
if (loggedErrors.has(error)) return true;
|
|
70
|
+
loggedErrors.add(error);
|
|
71
|
+
return false;
|
|
72
|
+
};
|
|
66
73
|
return (error) => {
|
|
67
74
|
const nodeEnv = options.nodeEnv ?? process.env.NODE_ENV;
|
|
68
75
|
const reportableError = error && typeof error === "object" && ORIGINAL_SERVER_ERROR in error ? Reflect.get(error, ORIGINAL_SERVER_ERROR) : error;
|
|
@@ -87,7 +94,7 @@ function createRscOnErrorHandler(options) {
|
|
|
87
94
|
const route = options.requestInfo?.path ?? options.errorContext?.routePath ?? "<unknown>";
|
|
88
95
|
console.error(`[vinext] Error prerendering route ${JSON.stringify(route)}:`, reportableError);
|
|
89
96
|
}
|
|
90
|
-
} else if (
|
|
97
|
+
} else if (!(reportableError !== error && thrownHasDigest) && !wasLogged(reportableError)) console.error("[vinext] Server render error:", properError);
|
|
91
98
|
return digest;
|
|
92
99
|
};
|
|
93
100
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { VinextCacheabilityProbeMode } from "./multi-stage.js";
|
|
2
2
|
import { NextHeader, NextI18nConfig, NextRedirect, NextRewrite } from "../config/next-config.js";
|
|
3
|
+
import { AppRscRenderMode } from "./app-rsc-render-mode.js";
|
|
3
4
|
import { ImageConfig } from "./image-optimization.js";
|
|
4
5
|
import { ExecutionContextLike } from "../shims/request-context.js";
|
|
5
6
|
import { AppMiddlewareContext, ApplyAppMiddlewareResult } from "./app-middleware.js";
|
|
6
|
-
import { ClientReuseManifestParseResult } from "./client-reuse-manifest.js";
|
|
7
|
-
import { AppRscRenderMode } from "./app-rsc-render-mode.js";
|
|
8
7
|
import { RootParams } from "../shims/root-params.js";
|
|
9
8
|
import { AppPagePprFallbackCacheShell } from "./app-ppr-fallback-shell.js";
|
|
10
|
-
import { AppPrerenderRootParamNamesMap, AppPrerenderStaticParamsMap } from "./app-prerender-endpoints.js";
|
|
11
9
|
import { PagesRouteDataKind } from "./pages-route-data-kind.js";
|
|
10
|
+
import { AppPrerenderRootParamNamesMap, AppPrerenderStaticParamsMap } from "./app-prerender-endpoints.js";
|
|
12
11
|
import { TrustedPrerenderState } from "./prerender-route-params.js";
|
|
13
12
|
import { AppRouteTreePrefetchRoute, PrefetchInliningConfig } from "./app-route-tree-prefetch.js";
|
|
14
13
|
import { DispatchAppWorkerResponseStage, RenderAppWorkerResponseStageLocally } from "./app-worker-stages.js";
|
|
@@ -52,7 +51,6 @@ type AppRscRouteMatch<TRoute> = {
|
|
|
52
51
|
type DispatchMatchedPageOptions<TRoute> = {
|
|
53
52
|
bypassInterceptionContextCache: boolean;
|
|
54
53
|
cachePathname: string;
|
|
55
|
-
clientReuseManifest: ClientReuseManifestParseResult;
|
|
56
54
|
cleanPathname: string;
|
|
57
55
|
displayPathname: string;
|
|
58
56
|
formState: ReactFormState | null;
|
|
@@ -170,7 +168,7 @@ type RenderPagesFallbackOptions = {
|
|
|
170
168
|
pattern: string;
|
|
171
169
|
};
|
|
172
170
|
} | null;
|
|
173
|
-
dispatchPagesResponseStage?: (request: Request, resourceKind: "api" | "page", dataKind?: PagesRouteDataKind, hasRequestAwareDocument?: boolean) => Promise<Response>;
|
|
171
|
+
dispatchPagesResponseStage?: (request: Request, resourceKind: "api" | "page", dataKind?: PagesRouteDataKind, hasRequestAwareDocument?: boolean, runsInitialProps?: boolean) => Promise<Response>;
|
|
174
172
|
isDataRequest?: boolean;
|
|
175
173
|
isRscRequest: boolean;
|
|
176
174
|
initialResponseHeaders?: Headers;
|
|
@@ -179,6 +177,8 @@ type RenderPagesFallbackOptions = {
|
|
|
179
177
|
pathname?: string;
|
|
180
178
|
pagesDataRequest?: Request | null;
|
|
181
179
|
request: Request;
|
|
180
|
+
/** The shared cache entry answers every host; a request-time render is not stored. */
|
|
181
|
+
sharedAcrossHosts?: boolean;
|
|
182
182
|
url: URL;
|
|
183
183
|
};
|
|
184
184
|
type NavigationContextValue = {
|
|
@@ -263,4 +263,5 @@ export type CreateAppRscHandlerOptions<TRoute extends AppRscHandlerRoute> = {
|
|
|
263
263
|
export type AppRscRequestHandler = (request: Request, ctx: unknown, allowInternalRscDocumentFallback?: boolean, dispatchResponseStage?: DispatchAppWorkerResponseStage, responseStageProbeMode?: VinextCacheabilityProbeMode | null, trustedPrerenderState?: TrustedPrerenderState | null) => Promise<Response>;
|
|
264
264
|
/** Build the request-only handler without retaining the response renderer graph. */
|
|
265
265
|
export declare function createAppRscRequestHandler<TRoute extends AppRscHandlerRoute>(options: CreateAppRscHandlerOptions<TRoute>): AppRscRequestHandler;
|
|
266
|
-
//#endregion
|
|
266
|
+
//#endregion
|
|
267
|
+
export {};
|
|
@@ -17,7 +17,6 @@ import { runOutsideWorkStoreScope } from "../shims/internal/work-store-scope.js"
|
|
|
17
17
|
import { isInterceptionMatchedUrlPath, normalizePath } from "./normalize-path.js";
|
|
18
18
|
import { normalizeDefaultLocalePathname, shouldRestoreLocaleRootTrailingSlash } from "./pages-i18n.js";
|
|
19
19
|
import { buildNextDataNotFoundResponse, normalizePagesDataRequest } from "./pages-data-route.js";
|
|
20
|
-
import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
21
20
|
import { markRouteCacheabilityDynamic, preserveRouteCacheabilityResponsePolicy } from "../shims/cacheability-classification.js";
|
|
22
21
|
import { NEVER_CACHE_CONTROL, applyCdnResponseHeaders, captureCdnResponsePolicyOverrides, isCdnResponsePolicyHeader, reconcileCdnResponseHeadersAfterOuterPolicy } from "./cache-control.js";
|
|
23
22
|
import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
|
|
@@ -28,29 +27,30 @@ import { traceFindPageComponents } from "./pages-execution-tracing.js";
|
|
|
28
27
|
import { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, isImageOptimizationPath, markImageOptimizationSignal, resolveDevImageRedirect } from "./image-optimization.js";
|
|
29
28
|
import { parseCacheabilityManifest } from "./cacheability-manifest.js";
|
|
30
29
|
import { getRenderedConcreteUrlPathsForRoute } from "./pregenerated-concrete-paths.js";
|
|
31
|
-
import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, canonicalizeLoadingShellRscRequestHeaders, canonicalizePrewarmableRscRequestHeaders, createCanonicalRscRequestUrl, createRscRedirectLocation, createRscRequestUrl, hasRscCacheBustingSearchParam, resolveInvalidRscCacheBustingRequest, stripRscCacheBustingSearchParam, stripRscSuffix } from "./app-rsc-cache-busting.js";
|
|
32
|
-
import { mergeMiddlewareResponseHeaders, mergeMiddlewareResponseHeadersOntoResponse, withExternalRewriteResponseHeaders } from "./middleware-response-headers.js";
|
|
33
|
-
import { consumeResponseStageLinkProvenance, copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
|
|
34
|
-
import "./app-page-response.js";
|
|
35
|
-
import { parseNextHttpErrorDigest } from "./next-error-digest.js";
|
|
36
|
-
import { traceAppPageRender } from "./app-page-tracing.js";
|
|
37
30
|
import { openForwardedMiddlewareContext } from "./forwarded-middleware-context.js";
|
|
31
|
+
import { consumeResponseStageLinkProvenance, copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
|
|
38
32
|
import { setFrameworkRequestRoute, traceFrameworkRequest } from "./request-tracing.js";
|
|
33
|
+
import { mergeMiddlewareResponseHeaders, mergeMiddlewareResponseHeadersOntoResponse, withExternalRewriteResponseHeaders } from "./middleware-response-headers.js";
|
|
34
|
+
import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, canonicalizeLoadingShellRscRequestHeaders, canonicalizePrewarmableRscRequestHeaders, createCanonicalRscRequestUrl, createRscRedirectLocation, createRscRequestUrl, hasRscCacheBustingSearchParam, resolveInvalidRscCacheBustingRequest, stripRscCacheBustingSearchParam, stripRscSuffix } from "./app-rsc-cache-busting.js";
|
|
39
35
|
import { matchPrerenderRouteParamsPayload, readTrustedPrerenderRouteParams, serializePrerenderRouteParamsHeader } from "./prerender-route-params.js";
|
|
40
|
-
import { buildPageCacheTags } from "./implicit-tags.js";
|
|
41
36
|
import { createServerActionNotFoundResponse, getServerActionNotFoundMessage } from "./server-action-not-found.js";
|
|
42
37
|
import { isPossibleAppRouteActionRequest } from "./app-action-request.js";
|
|
38
|
+
import "./app-page-response.js";
|
|
39
|
+
import { parseNextHttpErrorDigest } from "./next-error-digest.js";
|
|
43
40
|
import { isAppRouteHandlerRoute } from "./app-rsc-route-matching.js";
|
|
41
|
+
import { traceAppPageRender } from "./app-page-tracing.js";
|
|
44
42
|
import { normalizeInterceptionContextHeader } from "./app-interception-context-header.js";
|
|
43
|
+
import { buildPageCacheTags } from "./implicit-tags.js";
|
|
45
44
|
import { buildPostMwRequestContext } from "./app-post-middleware-context.js";
|
|
46
45
|
import { pickRootParams, setRootParams } from "../shims/root-params.js";
|
|
47
46
|
import { createRouteTreePrefetchResponse, isRouteTreePrefetchRequest } from "./app-route-tree-prefetch.js";
|
|
48
|
-
import { createSharedAppPageCacheIdentity, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery } from "./app-worker-stages.js";
|
|
47
|
+
import { createSharedAppCacheIdentity, createSharedAppPageCacheIdentity, createSharedHybridPagesCacheIdentity, isStaticCandidateAppPageDispatch, prepareSharedAppPageDispatch, withoutAppPageDispatchQuery } from "./app-worker-stages.js";
|
|
49
48
|
import { flattenErrorCauses } from "../utils/error-cause.js";
|
|
50
49
|
import { applyAppRscConfigHeaders, finalizeAppRscResponse, markAppRscResponseConfigHeadersApplied } from "./app-rsc-response-finalizer.js";
|
|
51
50
|
import { normalizeRscRequest } from "./app-rsc-request-normalization.js";
|
|
52
51
|
import { hasPagesPreviewCookie } from "./pages-response-stage.js";
|
|
53
52
|
import { runWithPrerenderWorkUnit } from "./prerender-work-unit-setup.js";
|
|
53
|
+
import { adapterSharedCacheIdentity, adapterUsesSharedCacheIdentity, pagesCacheIdentityOrigin, pagesPageSharesAcrossHosts } from "./shared-cache-identity.js";
|
|
54
54
|
import { consumePagesResponseStagePolicyOwner, withoutResponseStageVary } from "./response-stage-policy.js";
|
|
55
55
|
//#region src/server/app-rsc-handler.ts
|
|
56
56
|
const HAS_CONFIG_HEADERS = process.env.__VINEXT_HAS_CONFIG_HEADERS !== "false";
|
|
@@ -132,10 +132,6 @@ function readCacheabilityRequestProjection(options) {
|
|
|
132
132
|
};
|
|
133
133
|
return parsedCacheabilityRequestProjection.manifest;
|
|
134
134
|
}
|
|
135
|
-
function adapterUsesQueryFreeCacheIdentity() {
|
|
136
|
-
const adapter = getCdnCacheAdapter();
|
|
137
|
-
return adapter.requiresCompletedResponseAdmission === true && adapter.responseStageCacheIdentity === "query-free";
|
|
138
|
-
}
|
|
139
135
|
function hasUrlParserDotSegment(pathname) {
|
|
140
136
|
return pathname.split("/").some((segment) => {
|
|
141
137
|
const decodedDots = segment.replaceAll(/%2e/gi, ".");
|
|
@@ -195,10 +191,6 @@ function createMissingServerActionResponse(options, actionId) {
|
|
|
195
191
|
options.clearRequestContext();
|
|
196
192
|
return createServerActionNotFoundResponse();
|
|
197
193
|
}
|
|
198
|
-
function redirectDestinationWithBasePath(destination, basePath, hadBasePath) {
|
|
199
|
-
if (!basePath || !hadBasePath || isExternalUrl(destination) || hasBasePath(destination, basePath)) return destination;
|
|
200
|
-
return basePath + destination;
|
|
201
|
-
}
|
|
202
194
|
async function applyRewrite(options, cleanPathname, recordCacheability = true) {
|
|
203
195
|
if (!HAS_CONFIG_REWRITES || !options.rewrites.length) return null;
|
|
204
196
|
const sourcePathname = options.paramsPathname ?? cleanPathname;
|
|
@@ -316,7 +308,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
316
308
|
if (request.headers.has("X-Vinext-Interception-Context") || request.headers.has("X-Vinext-Interception-Id")) setInterceptionResponseUncacheable(true);
|
|
317
309
|
return normalized;
|
|
318
310
|
}
|
|
319
|
-
const { url, isRscRequest, interceptionContextHeader, interceptionIdHeader, mountedSlotsHeader, renderMode,
|
|
311
|
+
const { url, isRscRequest, interceptionContextHeader, interceptionIdHeader, mountedSlotsHeader, renderMode, hadBasePath } = normalized;
|
|
320
312
|
setFrameworkRequestRoute(void 0, isRscRequest);
|
|
321
313
|
const hasRawInterceptionContext = isRscRequest && request.headers.has("X-Vinext-Interception-Context");
|
|
322
314
|
if (hasRawInterceptionContext) setInterceptionResponseUncacheable(true);
|
|
@@ -371,7 +363,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
371
363
|
});
|
|
372
364
|
if (prerenderEndpointResponse) return prerenderEndpointResponse;
|
|
373
365
|
}
|
|
374
|
-
if (!options.skipTrailingSlashRedirect) {
|
|
366
|
+
if (!isDataRequest && !options.skipTrailingSlashRedirect) {
|
|
375
367
|
const trailingSlashRedirect = options.trailingSlash && options.isMetadataRoutePath && await options.isMetadataRoutePath(cleanPathname) ? null : normalizeTrailingSlash(requestCleanPathname, hadBasePath ? options.basePath : "", options.trailingSlash, url.search);
|
|
376
368
|
if (trailingSlashRedirect) return trailingSlashRedirect;
|
|
377
369
|
}
|
|
@@ -385,10 +377,10 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
385
377
|
const configMatchers = HAS_CONFIG_REDIRECTS && options.configRedirects.length ? await import("../config/config-matchers.js") : null;
|
|
386
378
|
const redirect = configMatchers ? configMatchers.matchRedirect(redirectPathname, options.configRedirects, preMiddlewareRequestContext, basePathState, dispatchResponseStage ? void 0 : markConditionalRedirectCacheability) : null;
|
|
387
379
|
if (configMatchers && redirect) {
|
|
388
|
-
const destination =
|
|
389
|
-
const location = isRscRequest && request.headers.get("RSC") === "1" ? await createRscRedirectLocation(destination, request) : configMatchers.preserveRedirectDestinationQuery(destination, url.search, redirect.destinationQuery);
|
|
380
|
+
const destination = redirect.destination;
|
|
381
|
+
const location = isRscRequest && request.headers.get("RSC") === "1" ? await createRscRedirectLocation(configMatchers.encodeRedirectLocation(destination), request) : configMatchers.encodeRedirectLocation(configMatchers.preserveRedirectDestinationQuery(destination, url.search, redirect.destinationQuery));
|
|
390
382
|
return new Response(null, {
|
|
391
|
-
status: redirect.
|
|
383
|
+
status: redirect.statusCode,
|
|
392
384
|
headers: { Location: location }
|
|
393
385
|
});
|
|
394
386
|
}
|
|
@@ -484,7 +476,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
484
476
|
const cache = responseStageProbeMode || isOnDemandRevalidate || (props.kind === "app-page" || props.kind === "app-route-handler") && (props.bypassInterceptionContextCache || props.forceDynamic === true && responseStagePolicy === null) ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
|
|
485
477
|
let dispatchRequest = props.kind === "app-page" ? prepareSharedAppPageDispatch(stageRequest, cache) : stageRequest;
|
|
486
478
|
let canonicalRsc = null;
|
|
487
|
-
if (cache === "shared" && props.kind === "app-page" && props.isRscRequest && props.matchKind === "request" && props.interceptionContext === null && props.interceptionId === null && props.mountedSlotsHeader === null) {
|
|
479
|
+
if (cache === "shared" && props.kind === "app-page" && props.isRscRequest && (props.matchKind === "request" || props.matchKind === "resolved") && props.interceptionContext === null && props.interceptionId === null && props.mountedSlotsHeader === null) {
|
|
488
480
|
const headers = new Headers(dispatchRequest.headers);
|
|
489
481
|
if (props.renderMode === "navigation" ? canonicalizePrewarmableRscRequestHeaders(headers) : props.renderMode === "prefetch-loading-shell" && props.canUseCanonicalLoadingShell ? canonicalizeLoadingShellRscRequestHeaders(headers) : false) {
|
|
490
482
|
canonicalRsc = {
|
|
@@ -513,7 +505,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
513
505
|
const rscPath = canonicalRsc.navigation ? createCanonicalRscRequestUrl(dispatchRequest.url) : await createRscRequestUrl(dispatchRequest.url, canonicalRsc.headers);
|
|
514
506
|
dispatchRequest = cloneRequestWithUrl(dispatchRequest, new URL(rscPath, dispatchRequest.url).toString());
|
|
515
507
|
}
|
|
516
|
-
const cacheIdentity = cache
|
|
508
|
+
const cacheIdentity = cache !== "shared" || stageProps.kind === "app-full-request" || stageProps.kind === "hybrid-pages" || !adapterUsesSharedCacheIdentity() ? void 0 : stageProps.kind === "app-page" && adapterSharedCacheIdentity() === "query-free" && responseStagePolicy === null && stageProps.matchKind !== "interception" && stageProps.interceptionContext === null && stageProps.interceptionId === null && stageProps.mountedSlotsHeader === null ? createSharedAppPageCacheIdentity(dispatchRequest, stageProps) : createSharedAppCacheIdentity(dispatchRequest, stageProps);
|
|
517
509
|
let response = await dispatchResponseStage(dispatchRequest, stageProps, cacheIdentity ? {
|
|
518
510
|
cache,
|
|
519
511
|
cacheIdentity
|
|
@@ -557,7 +549,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
557
549
|
isRscRequest,
|
|
558
550
|
middlewareCookieOverlay,
|
|
559
551
|
mountedSlotsHeader,
|
|
560
|
-
protocolVersion:
|
|
552
|
+
protocolVersion: 13,
|
|
561
553
|
requestOrigin: url.origin,
|
|
562
554
|
renderMode,
|
|
563
555
|
resolvedUrl,
|
|
@@ -925,10 +917,15 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
925
917
|
if (!filesystemRouteEligible) return null;
|
|
926
918
|
const pagesRouteUrl = cleanPathnameIsRequestPathname ? requestCleanPathname + resolvedUrl.slice(pathnameForResolvedUrl(resolvedUrl).length) : resolvedUrl;
|
|
927
919
|
let sharedOuterPolicyNeedsReconciliation = false;
|
|
928
|
-
const dispatchPagesResponseStage = dispatchResponseStage ? async (stageRequest, resourceKind, dataKind, hasRequestAwareDocument) => {
|
|
920
|
+
const dispatchPagesResponseStage = dispatchResponseStage ? async (stageRequest, resourceKind, dataKind, hasRequestAwareDocument, runsInitialProps) => {
|
|
929
921
|
const pagesOnDemandRevalidate = resourceKind === "page" && isOnDemandRevalidateRequest(stageRequest.headers.get("x-prerender-revalidate"));
|
|
930
922
|
const cache = responseStageProbeMode || pagesOnDemandRevalidate || hasPagesPreviewCookie(stageRequest.headers.get("cookie")) || resourceKind === "page" && dataKind === "static" && hasRequestAwareDocument ? "bypass" : canUseSharedWorkerResponseStage ? "shared" : "bypass";
|
|
931
|
-
|
|
923
|
+
const renderRequest = responseStageRequest(stageRequest);
|
|
924
|
+
const sharedAcrossHosts = (cache === "shared" || responseStageProbeMode !== null) && resourceKind === "page" && pagesPageSharesAcrossHosts({
|
|
925
|
+
dataKind,
|
|
926
|
+
runsInitialProps
|
|
927
|
+
}) && adapterUsesSharedCacheIdentity();
|
|
928
|
+
const hybridProps = {
|
|
932
929
|
kind: "hybrid-pages",
|
|
933
930
|
buildId: options.buildId,
|
|
934
931
|
cacheability: {
|
|
@@ -949,13 +946,18 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
949
946
|
matchKind,
|
|
950
947
|
middlewareCookieOverlay,
|
|
951
948
|
preHandlerHeaders: cache === "shared" && resourceKind === "page" && dataKind === "static" ? null : [...await loadPreHandlerResponseHeaders()],
|
|
952
|
-
protocolVersion:
|
|
949
|
+
protocolVersion: 13,
|
|
953
950
|
requestOrigin: url.origin,
|
|
954
951
|
resourceKind,
|
|
955
952
|
requestUrl: request.url,
|
|
956
953
|
resolvedUrl: pagesRouteUrl,
|
|
957
|
-
scriptNonce: scriptNonce ?? null
|
|
958
|
-
|
|
954
|
+
scriptNonce: scriptNonce ?? null,
|
|
955
|
+
sharedAcrossHosts
|
|
956
|
+
};
|
|
957
|
+
let response = await dispatchResponseStage(renderRequest, hybridProps, cache === "shared" && sharedAcrossHosts ? {
|
|
958
|
+
cache,
|
|
959
|
+
cacheIdentity: createSharedHybridPagesCacheIdentity(renderRequest, hybridProps, pagesCacheIdentityOrigin(request.url, options.i18nConfig))
|
|
960
|
+
} : { cache });
|
|
959
961
|
const policyOwner = resourceKind === "page" ? consumePagesResponseStagePolicyOwner(response) : {
|
|
960
962
|
owner: null,
|
|
961
963
|
response
|
|
@@ -1163,7 +1165,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
1163
1165
|
isRscRequest,
|
|
1164
1166
|
middlewareCookieOverlay,
|
|
1165
1167
|
mountedSlotsHeader,
|
|
1166
|
-
protocolVersion:
|
|
1168
|
+
protocolVersion: 13,
|
|
1167
1169
|
requestOrigin: url.origin,
|
|
1168
1170
|
renderMode,
|
|
1169
1171
|
resolvedUrl,
|
|
@@ -1250,7 +1252,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
1250
1252
|
middlewareCookieOverlay,
|
|
1251
1253
|
mountedSlotsHeader,
|
|
1252
1254
|
params,
|
|
1253
|
-
protocolVersion:
|
|
1255
|
+
protocolVersion: 13,
|
|
1254
1256
|
requestOrigin: url.origin,
|
|
1255
1257
|
renderMode,
|
|
1256
1258
|
resolvedUrl,
|
|
@@ -1292,7 +1294,7 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
1292
1294
|
middlewareCookieOverlay,
|
|
1293
1295
|
mountedSlotsHeader,
|
|
1294
1296
|
params,
|
|
1295
|
-
protocolVersion:
|
|
1297
|
+
protocolVersion: 13,
|
|
1296
1298
|
requestOrigin: url.origin,
|
|
1297
1299
|
renderMode,
|
|
1298
1300
|
resolvedUrl,
|
|
@@ -1302,7 +1304,6 @@ async function handleAppRscRequest(options, request, preMiddlewareRequestContext
|
|
|
1302
1304
|
}).then(composeResponseStageResponse) : await options.dispatchMatchedPage({
|
|
1303
1305
|
bypassInterceptionContextCache,
|
|
1304
1306
|
cachePathname,
|
|
1305
|
-
clientReuseManifest,
|
|
1306
1307
|
cleanPathname,
|
|
1307
1308
|
displayPathname: canonicalPathname,
|
|
1308
1309
|
formState: progressiveActionFormState?.formState ?? null,
|
|
@@ -1410,6 +1411,7 @@ function createAppRscRequestHandler(options) {
|
|
|
1410
1411
|
const requestContext = createRequestContext({
|
|
1411
1412
|
headersContext,
|
|
1412
1413
|
executionContext,
|
|
1414
|
+
isOnDemandRevalidate: isOnDemandRevalidateRequest(request.headers.get(PRERENDER_REVALIDATE_HEADER)),
|
|
1413
1415
|
requestSignal: executionContext?.requestSignal ?? rawRequestSignal,
|
|
1414
1416
|
unstableCacheRevalidation: "background"
|
|
1415
1417
|
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ClientReuseManifestParseResult } from "./client-reuse-manifest.js";
|
|
2
1
|
import { AppRscRenderMode } from "./app-rsc-render-mode.js";
|
|
3
2
|
import { normalizeMountedSlotsHeader } from "./app-mounted-slots-header.js";
|
|
4
3
|
//#region src/server/app-rsc-request-normalization.d.ts
|
|
@@ -21,8 +20,6 @@ export type NormalizedRscRequest = {
|
|
|
21
20
|
mountedSlotsHeader: string | null;
|
|
22
21
|
/** Semantic RSC payload mode. HTML requests always normalize to "navigation". */
|
|
23
22
|
renderMode: AppRscRenderMode;
|
|
24
|
-
/** Parsed ClientReuseManifest hint. Verification and skip authorization happen later. */
|
|
25
|
-
clientReuseManifest: ClientReuseManifestParseResult;
|
|
26
23
|
/** Whether the incoming pathname included the configured basePath. */
|
|
27
24
|
hadBasePath: boolean;
|
|
28
25
|
};
|
|
@@ -52,7 +49,6 @@ export type NormalizedRscRequest = {
|
|
|
52
49
|
* 8. Sanitize X-Vinext-Interception-Context — strip null bytes (header injection)
|
|
53
50
|
* 9. Normalize x-vinext-mounted-slots — dedup and sort for canonical cache keys
|
|
54
51
|
* 10. Read semantic render mode for refresh/action payload rendering
|
|
55
|
-
* 11. Parse ClientReuseManifest hints on canonical RSC payload requests
|
|
56
52
|
*
|
|
57
53
|
* @returns A 400 or 404 Response for invalid or out-of-scope inputs,
|
|
58
54
|
* or a NormalizedRscRequest for valid requests.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { hasBasePath, stripBasePath } from "../utils/base-path.js";
|
|
2
2
|
import { NEXT_ROUTER_STATE_TREE_HEADER, NEXT_URL_HEADER, VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_INTERCEPTION_ID_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_RENDER_MODE_HEADER } from "./app-rsc-vary.js";
|
|
3
|
-
import
|
|
3
|
+
import "./headers.js";
|
|
4
4
|
import { badRequestResponse, notFoundResponse } from "./http-error-responses.js";
|
|
5
5
|
import { guardProtocolRelativeUrl } from "./request-pipeline.js";
|
|
6
6
|
import { assetPrefixPathname, isNextStaticPath } from "../utils/asset-prefix.js";
|
|
@@ -9,7 +9,6 @@ import { normalizePath } from "./normalize-path.js";
|
|
|
9
9
|
import { normalizeMountedSlotsHeader } from "./app-mounted-slots-header.js";
|
|
10
10
|
import { APP_RSC_RENDER_MODE_NAVIGATION, APP_RSC_RENDER_MODE_PREFETCH_EMPTY, APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL, parseAppRscRenderMode } from "./app-rsc-render-mode.js";
|
|
11
11
|
import { VINEXT_RSC_CACHE_BUSTING_SEARCH_PARAM, stripRscSuffix } from "./app-rsc-cache-busting.js";
|
|
12
|
-
import { parseClientReuseManifestHeader } from "./client-reuse-manifest.js";
|
|
13
12
|
import { normalizeInterceptionContextHeader } from "./app-interception-context-header.js";
|
|
14
13
|
//#region src/server/app-rsc-request-normalization.ts
|
|
15
14
|
function extractFlightRouterStatePath(value, depth = 0) {
|
|
@@ -86,7 +85,6 @@ function tryNormalizeComparablePathAndSearch(value, basePath, baseUrl) {
|
|
|
86
85
|
* 8. Sanitize X-Vinext-Interception-Context — strip null bytes (header injection)
|
|
87
86
|
* 9. Normalize x-vinext-mounted-slots — dedup and sort for canonical cache keys
|
|
88
87
|
* 10. Read semantic render mode for refresh/action payload rendering
|
|
89
|
-
* 11. Parse ClientReuseManifest hints on canonical RSC payload requests
|
|
90
88
|
*
|
|
91
89
|
* @returns A 400 or 404 Response for invalid or out-of-scope inputs,
|
|
92
90
|
* or a NormalizedRscRequest for valid requests.
|
|
@@ -135,7 +133,6 @@ function normalizeRscRequest(request, basePath, allowOutsideBasePath = false, as
|
|
|
135
133
|
}
|
|
136
134
|
}
|
|
137
135
|
return {
|
|
138
|
-
clientReuseManifest: isRscRequest ? parseClientReuseManifestHeader(request.headers.get(VINEXT_CLIENT_REUSE_MANIFEST_HEADER)) : { kind: "absent" },
|
|
139
136
|
hadBasePath,
|
|
140
137
|
url,
|
|
141
138
|
pathname,
|
|
@@ -47,4 +47,5 @@ export declare function applyAppRscConfigHeaders(headers: Headers, request: Requ
|
|
|
47
47
|
* to redirects regardless.
|
|
48
48
|
*/
|
|
49
49
|
export declare function finalizeAppRscResponse(response: Response, request: Request, options: FinalizeAppRscResponseOptions): Promise<Response>;
|
|
50
|
-
//#endregion
|
|
50
|
+
//#endregion
|
|
51
|
+
export {};
|
|
@@ -6,9 +6,9 @@ import { normalizeDefaultLocalePathname } from "./pages-i18n.js";
|
|
|
6
6
|
import { isNonCacheableCacheControl } from "../shims/cdn-cache.js";
|
|
7
7
|
import { captureRouteCacheabilityResponsePolicy } from "../shims/cacheability-classification.js";
|
|
8
8
|
import { NO_STORE_CACHE_CONTROL, applyCdnResponseHeaders, captureCdnResponsePolicyHeaders, hasExplicitNonCacheableResponsePolicy, isCdnResponsePolicyHeader } from "./cache-control.js";
|
|
9
|
-
import "./app-rsc-cache-busting.js";
|
|
10
|
-
import { mergeVaryHeader } from "./middleware-response-headers.js";
|
|
11
9
|
import { hasPostConfigLinkHeaders } from "./app-response-header-provenance.js";
|
|
10
|
+
import { mergeVaryHeader } from "./middleware-response-headers.js";
|
|
11
|
+
import "./app-rsc-cache-busting.js";
|
|
12
12
|
//#region src/server/app-rsc-response-finalizer.ts
|
|
13
13
|
const HAS_CONFIG_HEADERS = process.env.__VINEXT_HAS_CONFIG_HEADERS !== "false";
|
|
14
14
|
const configHeadersAlreadyApplied = /* @__PURE__ */ new WeakSet();
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
2
|
import { closeAfterResponse, closeAfterResponseWithBody, createRequestContext, runWithRequestContext } from "../shims/unified-request-context.js";
|
|
3
|
-
import { VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
|
|
3
|
+
import { PRERENDER_REVALIDATE_HEADER, VINEXT_REVALIDATE_HOST_HEADER } from "../utils/protocol-headers.js";
|
|
4
4
|
import "./headers.js";
|
|
5
5
|
import { cloneRequestWithHeaders, cloneRequestWithUrl, filterInternalHeaders } from "./request-pipeline.js";
|
|
6
6
|
import { getRequestExecutionContext } from "../shims/request-context.js";
|
|
7
7
|
import { runOutsideWorkStoreScope } from "../shims/internal/work-store-scope.js";
|
|
8
|
+
import { isOnDemandRevalidateRequest } from "./revalidation-request.js";
|
|
8
9
|
import { applyEffectiveRequestCookieHeader, getDraftModeCookieHeader, headersContextFromRequest, restoreDraftModeTransition } from "../shims/headers.js";
|
|
9
10
|
import { ensureFetchPatch, setCurrentFetchSoftTags } from "../shims/fetch-cache.js";
|
|
10
11
|
import { traceFindPageComponents } from "./pages-execution-tracing.js";
|
|
@@ -69,7 +70,7 @@ function rematchAppWorkerResponseStageRoute(options, normalized, props) {
|
|
|
69
70
|
return match;
|
|
70
71
|
}
|
|
71
72
|
async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, stageOptions) {
|
|
72
|
-
if (props.protocolVersion !==
|
|
73
|
+
if (props.protocolVersion !== 13 || props.buildId !== options.buildId) return new Response("Incompatible vinext App response stage", { status: 409 });
|
|
73
74
|
if (props.kind === "app-full-request") return new Response("Invalid vinext App response stage", { status: 400 });
|
|
74
75
|
const rawRequestSignal = rawRequest.signal;
|
|
75
76
|
options.registerCacheAdapters();
|
|
@@ -104,6 +105,7 @@ async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, sta
|
|
|
104
105
|
const requestContext = createRequestContext({
|
|
105
106
|
headersContext,
|
|
106
107
|
executionContext,
|
|
108
|
+
isOnDemandRevalidate: isOnDemandRevalidateRequest(request.headers.get(PRERENDER_REVALIDATE_HEADER)),
|
|
107
109
|
requestSignal: executionContext?.requestSignal ?? rawRequestSignal,
|
|
108
110
|
unstableCacheRevalidation: "background"
|
|
109
111
|
});
|
|
@@ -171,6 +173,7 @@ async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, sta
|
|
|
171
173
|
pathname: props.resolvedUrl,
|
|
172
174
|
pagesDataRequest: props.isDataRequest ? request : null,
|
|
173
175
|
request: pageRequest,
|
|
176
|
+
sharedAcrossHosts: props.sharedAcrossHosts,
|
|
174
177
|
url: new URL(props.requestUrl)
|
|
175
178
|
}));
|
|
176
179
|
if (!pagesResponse) return new Response("Invalid vinext App response stage", { status: 404 });
|
|
@@ -216,7 +219,6 @@ async function renderAppWorkerResponseStage(options, rawRequest, ctx, props, sta
|
|
|
216
219
|
return options.dispatchMatchedPage({
|
|
217
220
|
bypassInterceptionContextCache: props.bypassInterceptionContextCache,
|
|
218
221
|
cachePathname: props.cachePathname,
|
|
219
|
-
clientReuseManifest: normalized.clientReuseManifest,
|
|
220
222
|
cleanPathname: props.cleanPathname,
|
|
221
223
|
displayPathname: props.canonicalPathname,
|
|
222
224
|
formState: null,
|
|
@@ -35,13 +35,25 @@ type AppRscInterceptForMatching = {
|
|
|
35
35
|
interceptLoadings?: readonly unknown[];
|
|
36
36
|
interceptLoadingTreePositions?: readonly number[];
|
|
37
37
|
interceptNotFoundBranchSegments?: readonly string[];
|
|
38
|
+
interceptNotFounds?: readonly unknown[];
|
|
39
|
+
interceptNotFoundTreePositions?: readonly number[];
|
|
38
40
|
__loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
|
|
39
41
|
__loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
|
|
42
|
+
__loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
|
|
40
43
|
page: unknown;
|
|
41
44
|
__pageLoader?: (() => Promise<unknown>) | null;
|
|
42
45
|
notFound?: unknown;
|
|
43
46
|
__loadNotFound?: (() => Promise<unknown>) | null;
|
|
44
47
|
notFoundTreePosition?: number | null;
|
|
48
|
+
interceptForbiddens?: readonly unknown[];
|
|
49
|
+
interceptForbiddenTreePositions?: readonly number[];
|
|
50
|
+
__loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
|
|
51
|
+
interceptUnauthorizeds?: readonly unknown[];
|
|
52
|
+
interceptUnauthorizedTreePositions?: readonly number[];
|
|
53
|
+
__loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
|
|
54
|
+
interceptErrors?: readonly unknown[];
|
|
55
|
+
interceptErrorTreePositions?: readonly number[];
|
|
56
|
+
__loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
|
|
45
57
|
params: readonly string[];
|
|
46
58
|
};
|
|
47
59
|
type AppRscSlotForMatching = {
|
|
@@ -60,13 +72,25 @@ type AppRscSiblingInterceptForMatching = {
|
|
|
60
72
|
interceptLoadings?: readonly unknown[];
|
|
61
73
|
interceptLoadingTreePositions?: readonly number[];
|
|
62
74
|
interceptNotFoundBranchSegments?: readonly string[];
|
|
75
|
+
interceptNotFounds?: readonly unknown[];
|
|
76
|
+
interceptNotFoundTreePositions?: readonly number[];
|
|
63
77
|
__loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
|
|
64
78
|
__loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
|
|
79
|
+
__loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
|
|
65
80
|
page: unknown;
|
|
66
81
|
__pageLoader?: (() => Promise<unknown>) | null;
|
|
67
82
|
notFound?: unknown;
|
|
68
83
|
__loadNotFound?: (() => Promise<unknown>) | null;
|
|
69
84
|
notFoundTreePosition?: number | null;
|
|
85
|
+
interceptForbiddens?: readonly unknown[];
|
|
86
|
+
interceptForbiddenTreePositions?: readonly number[];
|
|
87
|
+
__loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
|
|
88
|
+
interceptUnauthorizeds?: readonly unknown[];
|
|
89
|
+
interceptUnauthorizedTreePositions?: readonly number[];
|
|
90
|
+
__loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
|
|
91
|
+
interceptErrors?: readonly unknown[];
|
|
92
|
+
interceptErrorTreePositions?: readonly number[];
|
|
93
|
+
__loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
|
|
70
94
|
params: readonly string[];
|
|
71
95
|
};
|
|
72
96
|
type AppRscRouteForMatching = {
|
|
@@ -108,13 +132,25 @@ type AppRscInterceptLookupEntry = {
|
|
|
108
132
|
interceptLoadings?: readonly unknown[];
|
|
109
133
|
interceptLoadingTreePositions?: readonly number[];
|
|
110
134
|
interceptNotFoundBranchSegments?: readonly string[];
|
|
135
|
+
interceptNotFounds?: readonly unknown[];
|
|
136
|
+
interceptNotFoundTreePositions?: readonly number[];
|
|
111
137
|
__loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
|
|
112
138
|
__loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
|
|
139
|
+
__loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
|
|
113
140
|
page: unknown;
|
|
114
141
|
__pageLoader?: (() => Promise<unknown>) | null;
|
|
115
142
|
notFound: unknown;
|
|
116
143
|
__loadNotFound?: (() => Promise<unknown>) | null;
|
|
117
144
|
notFoundTreePosition?: number | null;
|
|
145
|
+
interceptForbiddens?: readonly unknown[];
|
|
146
|
+
interceptForbiddenTreePositions?: readonly number[];
|
|
147
|
+
__loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
|
|
148
|
+
interceptUnauthorizeds?: readonly unknown[];
|
|
149
|
+
interceptUnauthorizedTreePositions?: readonly number[];
|
|
150
|
+
__loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
|
|
151
|
+
interceptErrors?: readonly unknown[];
|
|
152
|
+
interceptErrorTreePositions?: readonly number[];
|
|
153
|
+
__loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
|
|
118
154
|
__loadState: AppRscInterceptLoadState;
|
|
119
155
|
params: readonly string[];
|
|
120
156
|
slotId: string | null;
|
|
@@ -141,4 +177,5 @@ export declare function createAppRscRouteMatcher<Route extends AppRscRouteForMat
|
|
|
141
177
|
} | null;
|
|
142
178
|
findIntercept(pathname: string, sourcePathname?: string | null, interceptionId?: string | null): AppRscInterceptMatch | null;
|
|
143
179
|
};
|
|
144
|
-
//#endregion
|
|
180
|
+
//#endregion
|
|
181
|
+
export {};
|
|
@@ -209,6 +209,9 @@ function createInterceptLookup(routes) {
|
|
|
209
209
|
interceptLoadings: intercept.interceptLoadings,
|
|
210
210
|
interceptLoadingTreePositions: intercept.interceptLoadingTreePositions,
|
|
211
211
|
interceptNotFoundBranchSegments: intercept.interceptNotFoundBranchSegments,
|
|
212
|
+
interceptNotFounds: intercept.interceptNotFounds,
|
|
213
|
+
interceptNotFoundTreePositions: intercept.interceptNotFoundTreePositions,
|
|
214
|
+
__loadInterceptNotFounds: intercept.__loadInterceptNotFounds,
|
|
212
215
|
__loadInterceptLayouts: intercept.__loadInterceptLayouts,
|
|
213
216
|
__loadInterceptLoadings: intercept.__loadInterceptLoadings,
|
|
214
217
|
page: intercept.page,
|
|
@@ -216,6 +219,15 @@ function createInterceptLookup(routes) {
|
|
|
216
219
|
notFound: intercept.notFound,
|
|
217
220
|
__loadNotFound: intercept.__loadNotFound,
|
|
218
221
|
notFoundTreePosition: intercept.notFoundTreePosition,
|
|
222
|
+
interceptForbiddens: intercept.interceptForbiddens,
|
|
223
|
+
interceptForbiddenTreePositions: intercept.interceptForbiddenTreePositions,
|
|
224
|
+
__loadInterceptForbiddens: intercept.__loadInterceptForbiddens,
|
|
225
|
+
interceptUnauthorizeds: intercept.interceptUnauthorizeds,
|
|
226
|
+
interceptUnauthorizedTreePositions: intercept.interceptUnauthorizedTreePositions,
|
|
227
|
+
__loadInterceptUnauthorizeds: intercept.__loadInterceptUnauthorizeds,
|
|
228
|
+
interceptErrors: intercept.interceptErrors,
|
|
229
|
+
interceptErrorTreePositions: intercept.interceptErrorTreePositions,
|
|
230
|
+
__loadInterceptErrors: intercept.__loadInterceptErrors,
|
|
219
231
|
__loadState: {
|
|
220
232
|
page: intercept.page,
|
|
221
233
|
pageLoading: null,
|
|
@@ -248,6 +260,9 @@ function createInterceptLookup(routes) {
|
|
|
248
260
|
interceptLoadings: intercept.interceptLoadings,
|
|
249
261
|
interceptLoadingTreePositions: intercept.interceptLoadingTreePositions,
|
|
250
262
|
interceptNotFoundBranchSegments: intercept.interceptNotFoundBranchSegments,
|
|
263
|
+
interceptNotFounds: intercept.interceptNotFounds,
|
|
264
|
+
interceptNotFoundTreePositions: intercept.interceptNotFoundTreePositions,
|
|
265
|
+
__loadInterceptNotFounds: intercept.__loadInterceptNotFounds,
|
|
251
266
|
__loadInterceptLayouts: intercept.__loadInterceptLayouts,
|
|
252
267
|
__loadInterceptLoadings: intercept.__loadInterceptLoadings,
|
|
253
268
|
page: intercept.page,
|
|
@@ -255,6 +270,15 @@ function createInterceptLookup(routes) {
|
|
|
255
270
|
notFound: intercept.notFound,
|
|
256
271
|
__loadNotFound: intercept.__loadNotFound,
|
|
257
272
|
notFoundTreePosition: intercept.notFoundTreePosition,
|
|
273
|
+
interceptForbiddens: intercept.interceptForbiddens,
|
|
274
|
+
interceptForbiddenTreePositions: intercept.interceptForbiddenTreePositions,
|
|
275
|
+
__loadInterceptForbiddens: intercept.__loadInterceptForbiddens,
|
|
276
|
+
interceptUnauthorizeds: intercept.interceptUnauthorizeds,
|
|
277
|
+
interceptUnauthorizedTreePositions: intercept.interceptUnauthorizedTreePositions,
|
|
278
|
+
__loadInterceptUnauthorizeds: intercept.__loadInterceptUnauthorizeds,
|
|
279
|
+
interceptErrors: intercept.interceptErrors,
|
|
280
|
+
interceptErrorTreePositions: intercept.interceptErrorTreePositions,
|
|
281
|
+
__loadInterceptErrors: intercept.__loadInterceptErrors,
|
|
258
282
|
__loadState: {
|
|
259
283
|
page: intercept.page,
|
|
260
284
|
pageLoading: null,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { compareFolderNames } from "../utils/compare.js";
|
|
1
2
|
import { isEdgeApiRuntime } from "./edge-api-runtime.js";
|
|
2
3
|
//#region src/server/app-segment-config.ts
|
|
3
4
|
const DYNAMIC_VALUES = /* @__PURE__ */ new Set([
|
|
@@ -310,20 +311,6 @@ function hasGenerateStaticParamsExport(segment) {
|
|
|
310
311
|
}
|
|
311
312
|
const DEFAULT_SEGMENT_NAME = "__DEFAULT__";
|
|
312
313
|
/**
|
|
313
|
-
* Turbopack reads a folder's subfolders from a `BTreeMap<RcStr, _>`, whose
|
|
314
|
-
* keys compare as Rust `str`s: by UTF-8 bytes. That is Unicode code point
|
|
315
|
-
* order, which JavaScript's `<` (UTF-16 code units) doesn't match above the
|
|
316
|
-
* Basic Multilingual Plane.
|
|
317
|
-
* https://github.com/vercel/next.js/blob/v16.2.7/crates/next-core/src/app_structure.rs#L188-L192
|
|
318
|
-
* https://github.com/vercel/next.js/blob/v16.2.7/turbopack/crates/turbo-rcstr/src/lib.rs#L350-L354
|
|
319
|
-
*/
|
|
320
|
-
function compareFolderNames(a, b) {
|
|
321
|
-
const left = Array.from(a, (char) => char.codePointAt(0) ?? 0);
|
|
322
|
-
const right = Array.from(b, (char) => char.codePointAt(0) ?? 0);
|
|
323
|
-
for (let index = 0; index < Math.min(left.length, right.length); index++) if (left[index] !== right[index]) return left[index] - right[index];
|
|
324
|
-
return left.length - right.length;
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
314
|
* Collect the loader-tree segments of an App page route from its layout, page
|
|
328
315
|
* and parallel-slot modules, for `lastDynamicSegmentHasGenerateStaticParams`.
|
|
329
316
|
*
|