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
|
@@ -1,38 +1,36 @@
|
|
|
1
1
|
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
|
+
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
2
3
|
import { bindRequestContext } from "../shims/unified-request-context.js";
|
|
3
4
|
import { VINEXT_DYNAMIC_STALE_TIME_HEADER, VINEXT_RSC_COMPLETION_METADATA_HEADER } from "./headers.js";
|
|
4
5
|
import { internalServerErrorResponse } from "./http-error-responses.js";
|
|
5
6
|
import { getRequestExecutionContext } from "../shims/request-context.js";
|
|
6
|
-
import {
|
|
7
|
+
import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
8
|
+
import { getRouteCacheabilityCaptureOptions, isRouteCacheabilityEvaluation, recordRouteCacheabilityClientTraceMetadataMarker } from "../shims/cacheability-classification.js";
|
|
7
9
|
import { NEVER_CACHE_CONTROL, NO_STORE_CACHE_CONTROL, applyCdnResponseHeaders, isCdnResponsePolicyHeader } from "./cache-control.js";
|
|
10
|
+
import "./app-rsc-render-mode.js";
|
|
8
11
|
import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
|
|
9
|
-
import { isRenderDynamicLatched
|
|
10
|
-
import { peekDynamicUsage
|
|
12
|
+
import { isRenderDynamicLatched } from "../shims/internal/headers-state.js";
|
|
13
|
+
import { peekDynamicUsage } from "../shims/headers.js";
|
|
11
14
|
import { runWithFetchDedupe } from "../shims/fetch-cache.js";
|
|
12
15
|
import { setCacheStateHeaders } from "./cache-headers.js";
|
|
13
|
-
import {
|
|
16
|
+
import { copyLinkHeaderProvenance, getFrameworkLinkHeader } from "./app-response-header-provenance.js";
|
|
17
|
+
import { traceResponseStartWithCompletion } from "./response-start-tracing.js";
|
|
18
|
+
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
14
19
|
import { createArtifactCompatibilityEnvelope, createArtifactCompatibilityGraphVersion } from "./artifact-compatibility.js";
|
|
15
20
|
import { AppElementsWire, isAppElementsRecord } from "./app-elements-wire.js";
|
|
16
21
|
import "./app-elements.js";
|
|
22
|
+
import { appendRscCompletionMetadata } from "./rsc-completion-metadata.js";
|
|
17
23
|
import { isBailoutToCSRError } from "../shims/navigation-errors.js";
|
|
18
|
-
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
19
24
|
import { applyPrerenderCacheLifeHeader, applyPrerenderCacheTagsHeader } from "./prerender-cache-life-header.js";
|
|
20
|
-
import { copyLinkHeaderProvenance, getFrameworkLinkHeader } from "./app-response-header-provenance.js";
|
|
21
25
|
import { applyClientStaleTimeHeader, applyEdgeRuntimeHeader, buildAppPageHtmlResponse, buildAppPageRscResponse, resolveAppPageHtmlResponsePolicy, resolveAppPageRscResponsePolicy, resolveUncacheableCacheControl } from "./app-page-response.js";
|
|
22
|
-
import { buildAppPageFontLinkHeader, readAppPageBinaryStream, resolveAppPageShellSpecialError, resolveAppPageSpecialError, resolveAppPageSpecialErrorStoredHeaders, teeAppPageRscStreamForCapture } from "./app-page-execution.js";
|
|
23
|
-
import {
|
|
26
|
+
import { buildAppPageFontLinkHeader, readAppPageBinaryStream, resolveAppPageCaughtNotFoundBoundaries, resolveAppPageShellSpecialError, resolveAppPageSpecialError, resolveAppPageSpecialErrorStoredHeaders, teeAppPageRscStreamForCapture } from "./app-page-execution.js";
|
|
27
|
+
import { getAppPageLayoutGate } from "./app-page-layout-gate.js";
|
|
24
28
|
import { hasDigest } from "./app-rsc-errors.js";
|
|
25
29
|
import { recordAppPageRenderError, traceAppPageRender } from "./app-page-tracing.js";
|
|
26
|
-
import {
|
|
27
|
-
import { DEFAULT_CACHE_VARIANT_BUDGET, buildCacheVariantWithRouteBudget, buildRenderObservation, buildRenderRequestApiObservations, createStaticLayoutArtifactReuseDecision } from "./cache-proof.js";
|
|
30
|
+
import { buildAppPageHtmlDocumentResponse, buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, createAppPageSsrErrorHandler, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery } from "./app-page-stream.js";
|
|
28
31
|
import { createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
|
|
29
|
-
import { buildAppPageLinkHeader, createAppPageFontData, createAppPageRscErrorTracker, createAppPageSsrErrorHandler, renderAppPageHtmlStream, renderAppPageHtmlStreamWithRecovery } from "./app-page-stream.js";
|
|
30
32
|
import { createAppPageRscRenderStatusResolver } from "./app-page-rsc-render-status.js";
|
|
31
33
|
import { finalizeAppPageCacheabilityEvaluationResponse, finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse } from "./app-page-cache-finalizer.js";
|
|
32
|
-
import { createStaticLayoutClientReuseArtifactCompatibility, createStaticLayoutClientReusePayloadHash, createStaticLayoutClientReuseRouteId } from "./static-layout-client-reuse-proof.js";
|
|
33
|
-
import { appendRscCompletionMetadata } from "./rsc-completion-metadata.js";
|
|
34
|
-
import { getStaticLayoutObservationSkipRejection } from "./app-layout-param-observation.js";
|
|
35
|
-
import { createClientReuseSkipTransportPlan, crossCheckClientReuseManifestEntryWithCache } from "./skip-cache-proof.js";
|
|
36
34
|
//#region src/server/app-page-render.ts
|
|
37
35
|
function buildResponseTiming(options) {
|
|
38
36
|
if (options.isProduction) return;
|
|
@@ -74,11 +72,11 @@ function applyRequestCacheLife(options) {
|
|
|
74
72
|
* its response policy, such as error boundaries and special errors, get the
|
|
75
73
|
* same header as the normal render.
|
|
76
74
|
*/
|
|
77
|
-
function applyIneligibleRouteCachePolicy(response, options,
|
|
75
|
+
function applyIneligibleRouteCachePolicy(response, options, requestCacheLife = null) {
|
|
78
76
|
const cacheControl = resolveEarlyResponseCacheControl(options);
|
|
79
77
|
const isRscRedirect = options.isRscRequest && response.headers.has("X-Vinext-Rsc-Redirect");
|
|
80
78
|
if (!cacheControl) {
|
|
81
|
-
const staleTimeSeconds = isRscRedirect ? resolveClientStaleTimeSeconds(
|
|
79
|
+
const staleTimeSeconds = isRscRedirect ? resolveClientStaleTimeSeconds(requestCacheLife) : void 0;
|
|
82
80
|
if (staleTimeSeconds === void 0) return response;
|
|
83
81
|
const stamped = cloneForStamping(response);
|
|
84
82
|
applyClientStaleTimeHeader(stamped.headers, staleTimeSeconds);
|
|
@@ -131,146 +129,6 @@ function createAppPageArtifactCompatibility(element, routePattern) {
|
|
|
131
129
|
rootBoundaryId
|
|
132
130
|
});
|
|
133
131
|
}
|
|
134
|
-
function readStringMetadata(element, key) {
|
|
135
|
-
const value = element[key];
|
|
136
|
-
return typeof value === "string" ? value : null;
|
|
137
|
-
}
|
|
138
|
-
function createStaticLayoutOutputScope(input) {
|
|
139
|
-
const routeId = readStringMetadata(input.element, AppElementsWire.keys.route);
|
|
140
|
-
if (routeId === null) return null;
|
|
141
|
-
return {
|
|
142
|
-
kind: "layout",
|
|
143
|
-
layoutId: input.layoutId,
|
|
144
|
-
rootBoundaryId: input.artifactCompatibility.rootBoundaryId,
|
|
145
|
-
routeId
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
function createRenderAndSendSkipDisposition() {
|
|
149
|
-
return {
|
|
150
|
-
code: "SKIP_MODEL_DISABLED",
|
|
151
|
-
enabled: false,
|
|
152
|
-
mode: "renderAndSend"
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
function rejectStaticLayoutObservation(entry, code, fields = {}) {
|
|
156
|
-
return {
|
|
157
|
-
kind: "rejected",
|
|
158
|
-
rejection: {
|
|
159
|
-
code,
|
|
160
|
-
entryId: entry.id,
|
|
161
|
-
fields
|
|
162
|
-
},
|
|
163
|
-
skipDisposition: createRenderAndSendSkipDisposition()
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
function rejectUnsafeStaticLayoutObservation(entry, layoutParamAccess) {
|
|
167
|
-
const observation = layoutParamAccess?.getLayoutObservation(entry.id);
|
|
168
|
-
if (!observation) return rejectStaticLayoutObservation(entry, "SKIP_LAYOUT_PARAMS_OBSERVATION_INCOMPLETE");
|
|
169
|
-
const observationRejection = getStaticLayoutObservationSkipRejection(observation);
|
|
170
|
-
if (observationRejection) return rejectStaticLayoutObservation(entry, observationRejection.code, observationRejection.fields);
|
|
171
|
-
return null;
|
|
172
|
-
}
|
|
173
|
-
function createRenderLifecycleSkipDisposition(input) {
|
|
174
|
-
if (!input.isRscRequest || input.clientReuseManifest === void 0) return;
|
|
175
|
-
const clientReuseManifest = input.clientReuseManifest;
|
|
176
|
-
if (clientReuseManifest.kind !== "parsed" || clientReuseManifest.manifest.entries.length === 0) return;
|
|
177
|
-
if (!isAppElementsRecord(input.element) || input.artifactCompatibility === void 0) return {
|
|
178
|
-
code: "SKIP_MODEL_DISABLED",
|
|
179
|
-
enabled: false,
|
|
180
|
-
mode: "renderAndSend"
|
|
181
|
-
};
|
|
182
|
-
const element = input.element;
|
|
183
|
-
const artifactCompatibility = input.artifactCompatibility;
|
|
184
|
-
const staticLayoutIds = new Set(Object.entries(input.layoutFlags).filter(([, flag]) => flag === "s").map(([layoutId]) => layoutId));
|
|
185
|
-
return createClientReuseSkipTransportPlan({
|
|
186
|
-
manifest: clientReuseManifest,
|
|
187
|
-
verifyEntry(entry) {
|
|
188
|
-
if (entry.kind !== "layout" || !staticLayoutIds.has(entry.id) || AppElementsWire.parseElementKey(entry.id)?.kind !== "layout") return crossCheckClientReuseManifestEntryWithCache({
|
|
189
|
-
artifact: {
|
|
190
|
-
compatibility: artifactCompatibility,
|
|
191
|
-
invalidation: { kind: "unknown" },
|
|
192
|
-
payloadHash: null
|
|
193
|
-
},
|
|
194
|
-
cacheDecision: null,
|
|
195
|
-
entry
|
|
196
|
-
});
|
|
197
|
-
const currentOutput = createStaticLayoutOutputScope({
|
|
198
|
-
artifactCompatibility,
|
|
199
|
-
element,
|
|
200
|
-
layoutId: entry.id
|
|
201
|
-
});
|
|
202
|
-
if (currentOutput === null) return crossCheckClientReuseManifestEntryWithCache({
|
|
203
|
-
artifact: {
|
|
204
|
-
compatibility: artifactCompatibility,
|
|
205
|
-
invalidation: { kind: "unknown" },
|
|
206
|
-
payloadHash: null
|
|
207
|
-
},
|
|
208
|
-
cacheDecision: null,
|
|
209
|
-
entry
|
|
210
|
-
});
|
|
211
|
-
const observationRejection = rejectUnsafeStaticLayoutObservation(entry, input.layoutParamAccess);
|
|
212
|
-
if (observationRejection) return observationRejection;
|
|
213
|
-
const candidateRouteId = createStaticLayoutClientReuseRouteId(entry.id);
|
|
214
|
-
const candidateOutput = {
|
|
215
|
-
...currentOutput,
|
|
216
|
-
routeId: candidateRouteId
|
|
217
|
-
};
|
|
218
|
-
const candidateVariant = buildCacheVariantWithRouteBudget({
|
|
219
|
-
budget: DEFAULT_CACHE_VARIANT_BUDGET,
|
|
220
|
-
dimensions: [],
|
|
221
|
-
output: candidateOutput,
|
|
222
|
-
routeBudget: {
|
|
223
|
-
routeId: candidateRouteId,
|
|
224
|
-
variantCacheKeys: []
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
const skipArtifactCompatibility = candidateVariant.kind === "variant" ? createStaticLayoutClientReuseArtifactCompatibility({
|
|
228
|
-
artifactCompatibility,
|
|
229
|
-
layoutId: entry.id,
|
|
230
|
-
rootBoundaryId: candidateOutput.rootBoundaryId,
|
|
231
|
-
routeId: candidateOutput.routeId,
|
|
232
|
-
variantCacheKey: candidateVariant.variant.cacheKey
|
|
233
|
-
}) : artifactCompatibility;
|
|
234
|
-
const cacheDecision = createStaticLayoutArtifactReuseDecision({
|
|
235
|
-
candidateArtifactCompatibility: skipArtifactCompatibility,
|
|
236
|
-
candidateObservation: buildRenderObservation({
|
|
237
|
-
boundaryOutcome: { kind: "success" },
|
|
238
|
-
cacheability: "public",
|
|
239
|
-
cacheTags: [],
|
|
240
|
-
completeness: "complete",
|
|
241
|
-
dynamicFetches: [],
|
|
242
|
-
output: candidateOutput,
|
|
243
|
-
pathTags: [input.cleanPathname],
|
|
244
|
-
requestApis: buildRenderRequestApiObservations({
|
|
245
|
-
completeness: "complete",
|
|
246
|
-
observed: []
|
|
247
|
-
})
|
|
248
|
-
}),
|
|
249
|
-
candidateVariant,
|
|
250
|
-
currentArtifactCompatibility: skipArtifactCompatibility,
|
|
251
|
-
currentOutput
|
|
252
|
-
});
|
|
253
|
-
return crossCheckClientReuseManifestEntryWithCache({
|
|
254
|
-
artifact: {
|
|
255
|
-
compatibility: skipArtifactCompatibility,
|
|
256
|
-
invalidation: { kind: "valid" },
|
|
257
|
-
payloadHash: candidateVariant.kind === "variant" ? createStaticLayoutClientReusePayloadHash({
|
|
258
|
-
artifactCompatibility: skipArtifactCompatibility,
|
|
259
|
-
layoutId: entry.id,
|
|
260
|
-
rootBoundaryId: candidateOutput.rootBoundaryId,
|
|
261
|
-
routeId: candidateOutput.routeId,
|
|
262
|
-
variantCacheKey: candidateVariant.variant.cacheKey
|
|
263
|
-
}) : null
|
|
264
|
-
},
|
|
265
|
-
cacheDecision,
|
|
266
|
-
entry
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
}).skipDisposition;
|
|
270
|
-
}
|
|
271
|
-
function isSkipTransportEnabled(skipDisposition) {
|
|
272
|
-
return skipDisposition?.enabled === true;
|
|
273
|
-
}
|
|
274
132
|
/**
|
|
275
133
|
* Wraps an RSC response body to report invalid dynamic usage errors after the
|
|
276
134
|
* stream is fully consumed. In dev mode, errors from cookies()/headers() inside
|
|
@@ -389,27 +247,6 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
389
247
|
}
|
|
390
248
|
return dynamicUsageObserved;
|
|
391
249
|
};
|
|
392
|
-
const probeOutcome = await runWithDetachedDynamicUsage(() => probeAppPageBeforeRender({
|
|
393
|
-
skipProbes: options.pprFallbackShellSignal !== void 0,
|
|
394
|
-
layoutCount: options.layoutCount,
|
|
395
|
-
probeLayoutAt(layoutIndex) {
|
|
396
|
-
return options.probeLayoutAt(layoutIndex);
|
|
397
|
-
},
|
|
398
|
-
renderLayoutSpecialError(specialError, layoutIndex) {
|
|
399
|
-
return options.renderLayoutSpecialError(specialError, layoutIndex);
|
|
400
|
-
},
|
|
401
|
-
resolveSpecialError: resolveAppPageSpecialError,
|
|
402
|
-
runWithSuppressedHookWarning(probe) {
|
|
403
|
-
return options.runWithSuppressedHookWarning(probe);
|
|
404
|
-
},
|
|
405
|
-
classification: options.classification
|
|
406
|
-
}));
|
|
407
|
-
const preRenderResult = probeOutcome.result;
|
|
408
|
-
if (preRenderResult.response) {
|
|
409
|
-
if (probeOutcome.dynamicDetected) markDynamicUsage();
|
|
410
|
-
return applyIneligibleRouteCachePolicy(preRenderResult.response, options, probeOutcome.cacheLife);
|
|
411
|
-
}
|
|
412
|
-
const layoutFlags = preRenderResult.layoutFlags;
|
|
413
250
|
const artifactCompatibility = createAppPageArtifactCompatibility(options.element, options.routePattern);
|
|
414
251
|
const rootBoundaryId = artifactCompatibility?.rootBoundaryId ?? null;
|
|
415
252
|
const renderEpoch = artifactCompatibility?.renderEpoch ?? null;
|
|
@@ -426,23 +263,13 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
426
263
|
rootBoundaryId,
|
|
427
264
|
routePattern: options.routePattern
|
|
428
265
|
});
|
|
429
|
-
const
|
|
430
|
-
|
|
431
|
-
cleanPathname: options.cleanPathname,
|
|
432
|
-
clientReuseManifest: options.clientReuseManifest,
|
|
433
|
-
element: options.element,
|
|
434
|
-
isRscRequest: options.isRscRequest,
|
|
435
|
-
layoutFlags,
|
|
436
|
-
layoutParamAccess: options.layoutParamAccess
|
|
437
|
-
});
|
|
438
|
-
const shouldBypassRscCache = options.isRscRequest && isSkipTransportEnabled(skipDisposition) || options.bypassInterceptionContextCache === true;
|
|
266
|
+
const isPartialPayload = options.isRscRequest && isAppElementsRecord(options.element) && Object.hasOwn(options.element, AppElementsWire.keys.skippedLayoutIds);
|
|
267
|
+
const shouldBypassRscCache = options.bypassInterceptionContextCache === true || isPartialPayload;
|
|
439
268
|
const dynamicStaleTimeSeconds = options.dynamicStaleTimeSeconds ?? resolveConfiguredDynamicStaleTimeSeconds();
|
|
440
269
|
const outgoingElement = AppElementsWire.encodeOutgoingPayload({
|
|
441
270
|
element: options.element,
|
|
442
|
-
layoutFlags,
|
|
443
271
|
...dynamicStaleTimeSeconds !== void 0 && options.isPrerender !== true && !options.isForceStatic ? { dynamicStaleTimeSeconds } : {},
|
|
444
|
-
...artifactCompatibility ? { artifactCompatibility } : {}
|
|
445
|
-
skipDisposition: options.isRscRequest ? skipDisposition : void 0
|
|
272
|
+
...artifactCompatibility ? { artifactCompatibility } : {}
|
|
446
273
|
});
|
|
447
274
|
const compileEnd = options.isProduction ? void 0 : performance.now();
|
|
448
275
|
const errorContextOverrides = {
|
|
@@ -453,6 +280,7 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
453
280
|
...options.isPrerender ? { revalidateReason: "stale" } : {}
|
|
454
281
|
};
|
|
455
282
|
const baseOnError = options.createRscOnErrorHandler(options.cleanPathname, options.routePattern, errorContextOverrides);
|
|
283
|
+
const layoutGate = options.isRscRequest && options.isPrerender !== true && options.pprFallbackShellSignal === void 0 ? getAppPageLayoutGate(options.element) : null;
|
|
456
284
|
const rscErrorTracker = createAppPageRscErrorTracker((error, requestInfo, errorContext) => {
|
|
457
285
|
if (renderSpan) recordAppPageRenderError(renderSpan, error);
|
|
458
286
|
return baseOnError(error, requestInfo, errorContext);
|
|
@@ -471,6 +299,24 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
471
299
|
});
|
|
472
300
|
let pprFallbackShellRsc = null;
|
|
473
301
|
if (options.pprFallbackShellSignal) pprFallbackShellRsc = new Uint8Array(await readAppPageBinaryStream(rscStream));
|
|
302
|
+
if (layoutGate) {
|
|
303
|
+
const [heldStream, watchedStream] = rscStream.tee();
|
|
304
|
+
rscStream = heldStream;
|
|
305
|
+
const watchedReader = watchedStream.getReader();
|
|
306
|
+
const renderEnded = (async () => {
|
|
307
|
+
while (!(await watchedReader.read()).done);
|
|
308
|
+
})();
|
|
309
|
+
const layoutFailure = await layoutGate.wait((layoutId) => isAppElementsRecord(outgoingElement) && Object.hasOwn(outgoingElement, layoutId), renderEnded);
|
|
310
|
+
watchedReader.cancel().catch(() => {});
|
|
311
|
+
const layoutSpecialError = layoutFailure ? resolveAppPageSpecialError(layoutFailure.error) : null;
|
|
312
|
+
if (layoutFailure && layoutSpecialError) {
|
|
313
|
+
rscStream.cancel().catch(() => {});
|
|
314
|
+
return applyIneligibleRouteCachePolicy(await options.renderPageSpecialError(layoutSpecialError.kind === "http-access-fallback" ? {
|
|
315
|
+
...layoutSpecialError,
|
|
316
|
+
layoutIndex: layoutFailure.layoutIndex
|
|
317
|
+
} : layoutSpecialError), options, options.peekRequestCacheLife?.() ?? options.getRequestCacheLife());
|
|
318
|
+
}
|
|
319
|
+
}
|
|
474
320
|
let revalidateSeconds = options.revalidateSeconds;
|
|
475
321
|
let expireSeconds = options.expireSeconds;
|
|
476
322
|
const shouldWaitForAllReady = options.isPrerender === true && options.isSpeculativePrerender !== true || options.renderWholeDocument === true;
|
|
@@ -488,10 +334,47 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
488
334
|
const rscForResponse = rscCapture.ssrStream;
|
|
489
335
|
const capturedRscDataRef = { value: null };
|
|
490
336
|
if (rscCapture.sideStream && options.isRscRequest) capturedRscDataRef.value = readAppPageBinaryStream(rscCapture.sideStream);
|
|
337
|
+
const resolveInitialNavigationCacheMetadata = (dynamicUsed, requestCacheLife) => {
|
|
338
|
+
let kind;
|
|
339
|
+
if (options.isForceStatic) kind = "static";
|
|
340
|
+
else if (options.isForceDynamic || dynamicUsed) kind = "dynamic";
|
|
341
|
+
else {
|
|
342
|
+
const observation = options.peekRenderObservationState?.();
|
|
343
|
+
kind = observation && (observation.dynamicFetches.length > 0 || observation.requestApis.length > 0) ? "dynamic" : "static";
|
|
344
|
+
}
|
|
345
|
+
const staleTimeSeconds = resolveClientStaleTimeSeconds(requestCacheLife);
|
|
346
|
+
return {
|
|
347
|
+
kind,
|
|
348
|
+
...kind === "dynamic" && dynamicStaleTimeSeconds !== void 0 && options.isPrerender !== true ? { dynamicStaleTimeSeconds } : {},
|
|
349
|
+
...staleTimeSeconds === void 0 ? {} : { staleTimeSeconds: Math.floor(staleTimeSeconds) }
|
|
350
|
+
};
|
|
351
|
+
};
|
|
491
352
|
if (options.isRscRequest) {
|
|
492
|
-
const
|
|
353
|
+
const capturedRscData = capturedRscDataRef.value;
|
|
354
|
+
const resolvesRscRenderStatus = options.isProduction && shouldCaptureRscForCacheMetadata && capturedRscData !== null && options.isPrerender !== true && options.isRoutePPREnabled !== true;
|
|
355
|
+
const isPageDocumentRender = options.isCacheCandidate === true && !options.scriptNonce && !options.mountedSlotsHeader && !options.interceptionContext && !options.interceptionId && (options.renderMode === void 0 || options.renderMode === "navigation");
|
|
356
|
+
const cdnCacheAdapter = getCdnCacheAdapter();
|
|
357
|
+
const captureAdmittedDocument = resolvesRscRenderStatus && isPageDocumentRender && !cdnCacheAdapter.ownsBackgroundRevalidation ? cdnCacheAdapter.captureAppPageDocument?.() : void 0;
|
|
358
|
+
const rendersDocument = isPageDocumentRender && (cdnCacheAdapter.ownsBackgroundRevalidation || captureAdmittedDocument !== void 0);
|
|
359
|
+
const resolveRscRenderStatus = resolvesRscRenderStatus ? createAppPageRscRenderStatusResolver({
|
|
493
360
|
basePath: options.basePath,
|
|
494
|
-
capturedRscData
|
|
361
|
+
capturedRscData,
|
|
362
|
+
...rendersDocument ? { document: {
|
|
363
|
+
clientTraceMetadata: options.clientTraceMetadata,
|
|
364
|
+
...captureAdmittedDocument ? { deadlineAt: getRouteCacheabilityCaptureOptions()?.captureDeadlineAt } : {},
|
|
365
|
+
getFontData: () => createAppPageFontData({
|
|
366
|
+
getLinks: options.getFontLinks,
|
|
367
|
+
getPreloads: options.getFontPreloads,
|
|
368
|
+
getStyles: options.getFontStyles
|
|
369
|
+
}),
|
|
370
|
+
getInitialNavigationCacheMetadata: () => resolveInitialNavigationCacheMetadata(peekDynamicUsage(), options.peekRequestCacheLife?.()),
|
|
371
|
+
mirrorNextFlight: () => rscErrorTracker.getCapturedSpecialError() !== null,
|
|
372
|
+
onSsrError: createAppPageSsrErrorHandler(options.createRscOnErrorHandler(options.cleanPathname, options.routePattern, {
|
|
373
|
+
...errorContextOverrides,
|
|
374
|
+
renderSource: "server-rendering"
|
|
375
|
+
}), rscErrorTracker.isCapturedError),
|
|
376
|
+
reactMaxHeadersLength: options.reactMaxHeadersLength
|
|
377
|
+
} } : {},
|
|
495
378
|
getCapturedSpecialError: rscErrorTracker.getCapturedSpecialError,
|
|
496
379
|
getCapturedSpecialErrors: rscErrorTracker.getCapturedSpecialErrors,
|
|
497
380
|
isForceStatic: options.isForceStatic,
|
|
@@ -511,7 +394,7 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
511
394
|
}));
|
|
512
395
|
}
|
|
513
396
|
const dynamicUsedDuringBuild = consumeRenderDynamicUsage();
|
|
514
|
-
const rscResponsePolicy = shouldBypassRscCache ? { cacheControl: NO_STORE_CACHE_CONTROL } : resolveAppPageRscResponsePolicy({
|
|
397
|
+
const rscResponsePolicy = isPartialPayload ? { cacheControl: resolveUncacheableCacheControl(options.isProduction) } : shouldBypassRscCache ? { cacheControl: NO_STORE_CACHE_CONTROL } : resolveAppPageRscResponsePolicy({
|
|
515
398
|
dynamicUsedDuringBuild,
|
|
516
399
|
isDraftMode: options.isDraftMode,
|
|
517
400
|
isDynamicError: options.isDynamicError,
|
|
@@ -522,7 +405,7 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
522
405
|
expireSeconds,
|
|
523
406
|
revalidateSeconds
|
|
524
407
|
});
|
|
525
|
-
if (shouldBypassRscCache) options.isrDebug?.(
|
|
408
|
+
if (shouldBypassRscCache) options.isrDebug?.(isPartialPayload ? "RSC cache write skipped (partial payload)" : "RSC cache write skipped (unverified interception context)", options.cleanPathname);
|
|
526
409
|
const shouldEmitDynamicStaleTime = dynamicStaleTimeSeconds !== void 0 && options.isPrerender !== true && !options.isForceStatic && (dynamicUsedDuringBuild || options.isForceDynamic);
|
|
527
410
|
const staleTimePending = options.isPrerender !== true && mayResolveCacheLifeAfterHeaders && !dynamicUsedDuringBuild;
|
|
528
411
|
const rscResponse = buildAppPageRscResponse(rscForResponse, {
|
|
@@ -562,9 +445,22 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
562
445
|
return finalizeAppPageRscCacheResponse(devRscResponse, {
|
|
563
446
|
capturedRscDataPromise: options.isProduction && shouldCaptureRscForCacheMetadata ? capturedRscDataRef.value : null,
|
|
564
447
|
bypassInterceptionContextCache: options.bypassInterceptionContextCache,
|
|
448
|
+
captureAdmittedDocument,
|
|
565
449
|
cleanPathname: options.cleanPathname,
|
|
566
450
|
consumeDynamicUsage: finalizeRenderDynamicUsage,
|
|
567
451
|
consumeRenderObservationState,
|
|
452
|
+
createHtmlRenderObservation(input) {
|
|
453
|
+
return createAppPageRenderObservation({
|
|
454
|
+
boundaryOutcome: { kind: "success" },
|
|
455
|
+
cacheability: "public",
|
|
456
|
+
cacheTags: input.cacheTags,
|
|
457
|
+
cleanPathname: options.cleanPathname,
|
|
458
|
+
completeness: "complete",
|
|
459
|
+
output: htmlOutputScope,
|
|
460
|
+
params: options.navigationParams,
|
|
461
|
+
state: input.state
|
|
462
|
+
});
|
|
463
|
+
},
|
|
568
464
|
createRscRenderObservation(input) {
|
|
569
465
|
return createAppPageRenderObservation({
|
|
570
466
|
boundaryOutcome: { kind: "success" },
|
|
@@ -585,6 +481,7 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
585
481
|
return readRequestCacheLifeForCachePolicy(options);
|
|
586
482
|
},
|
|
587
483
|
isrDebug: options.isrDebug,
|
|
484
|
+
isrHtmlKey: options.isrHtmlKey,
|
|
588
485
|
isrRscKey: options.isrRscKey,
|
|
589
486
|
isrSet: options.isrSet,
|
|
590
487
|
interceptionContext: options.interceptionContext,
|
|
@@ -788,22 +685,7 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
788
685
|
};
|
|
789
686
|
return renderAppPageHtmlStream({
|
|
790
687
|
capturedRscDataRef,
|
|
791
|
-
getInitialNavigationCacheMetadata: () =>
|
|
792
|
-
let kind;
|
|
793
|
-
if (options.isForceStatic) kind = "static";
|
|
794
|
-
else if (options.isForceDynamic || dynamicUsedDuringHtmlRender || peekDynamicUsage()) kind = "dynamic";
|
|
795
|
-
else {
|
|
796
|
-
const observation = options.peekRenderObservationState?.();
|
|
797
|
-
kind = observation && (observation.dynamicFetches.length > 0 || observation.requestApis.length > 0) ? "dynamic" : "static";
|
|
798
|
-
}
|
|
799
|
-
const requestCacheLife = options.isPrerender === true ? requestCacheLifeForPrerender ?? options.peekRequestCacheLife?.() : options.peekRequestCacheLife?.();
|
|
800
|
-
const staleTimeSeconds = resolveClientStaleTimeSeconds(requestCacheLife);
|
|
801
|
-
return {
|
|
802
|
-
kind,
|
|
803
|
-
...kind === "dynamic" && dynamicStaleTimeSeconds !== void 0 && options.isPrerender !== true ? { dynamicStaleTimeSeconds } : {},
|
|
804
|
-
...staleTimeSeconds === void 0 ? {} : { staleTimeSeconds: Math.floor(staleTimeSeconds) }
|
|
805
|
-
};
|
|
806
|
-
},
|
|
688
|
+
getInitialNavigationCacheMetadata: () => resolveInitialNavigationCacheMetadata(dynamicUsedDuringHtmlRender || peekDynamicUsage(), options.isPrerender === true ? requestCacheLifeForPrerender ?? options.peekRequestCacheLife?.() : options.peekRequestCacheLife?.()),
|
|
807
689
|
fontData,
|
|
808
690
|
hasCustomGlobalError: options.hasCustomGlobalError,
|
|
809
691
|
navigationContext: options.getNavigationContext(),
|
|
@@ -825,10 +707,11 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
825
707
|
isForceStatic: options.isForceStatic,
|
|
826
708
|
isCacheCandidate: isCacheCandidateHtmlRender,
|
|
827
709
|
onSsrError: createAppPageSsrErrorHandler(onSsrError, rscErrorTracker.isCapturedError),
|
|
828
|
-
mirrorNextFlight: () => rscErrorTracker.getCapturedSpecialError() !== null
|
|
710
|
+
mirrorNextFlight: () => rscErrorTracker.getCapturedSpecialError() !== null,
|
|
711
|
+
resolveCaughtNotFoundBoundaries: (error) => resolveAppPageCaughtNotFoundBoundaries(error, rscErrorTracker.getCapturedSpecialErrors(error))
|
|
829
712
|
});
|
|
830
713
|
},
|
|
831
|
-
async renderSpecialErrorResponse(specialError) {
|
|
714
|
+
async renderSpecialErrorResponse(specialError, caughtDocument) {
|
|
832
715
|
shellSpecialError = specialError;
|
|
833
716
|
const mayPrerender = mayPrerenderShellSpecialError();
|
|
834
717
|
if (mayStoreShellSpecialError() || mayPrerender) await settleCapturedRscRenderForCacheMetadata(capturedRscDataRef.value, peekRenderDynamicUsage);
|
|
@@ -836,7 +719,18 @@ async function renderAppPageLifecycleImpl(options, renderSpan) {
|
|
|
836
719
|
dynamicUsed: consumeRenderDynamicUsage(),
|
|
837
720
|
redirectMetadata: specialError.kind === "redirect" ? readPrerenderCacheMetadata() : null
|
|
838
721
|
};
|
|
839
|
-
return options.renderPageSpecialError(specialError, {
|
|
722
|
+
return options.renderPageSpecialError(specialError, {
|
|
723
|
+
isCacheCandidate: isCacheCandidateHtmlRender,
|
|
724
|
+
...caughtDocument ? { caughtDocument: buildAppPageHtmlDocumentResponse(caughtDocument.htmlStream, {
|
|
725
|
+
clearRequestContext: options.clearRequestContext,
|
|
726
|
+
fontLinkHeader,
|
|
727
|
+
isEdgeRuntime: options.isEdgeRuntime,
|
|
728
|
+
middlewareHeaders: null,
|
|
729
|
+
reactLinkHeader: caughtDocument.linkHeader,
|
|
730
|
+
reactMaxHeadersLength: options.reactMaxHeadersLength,
|
|
731
|
+
status: specialError.statusCode
|
|
732
|
+
}) } : {}
|
|
733
|
+
});
|
|
840
734
|
},
|
|
841
735
|
resolveSpecialError(error) {
|
|
842
736
|
return resolveAppPageShellSpecialError(error, rscErrorTracker.getCapturedSpecialErrors(error));
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AppPageSpecialError } from "./app-page-execution.js";
|
|
2
|
-
import { AppLayoutParamAccessTracker } from "./app-layout-param-observation.js";
|
|
3
2
|
//#region src/server/app-page-request.d.ts
|
|
4
3
|
type AppPageParams = Record<string, string | string[]>;
|
|
5
4
|
type GenerateStaticParams = (args: {
|
|
@@ -66,8 +65,11 @@ type AppPageInterceptMatch<TPage = unknown> = {
|
|
|
66
65
|
interceptLoadings?: readonly unknown[] | null;
|
|
67
66
|
interceptLoadingTreePositions?: readonly number[] | null;
|
|
68
67
|
interceptNotFoundBranchSegments?: readonly string[] | null;
|
|
68
|
+
interceptNotFounds?: readonly unknown[] | null;
|
|
69
|
+
interceptNotFoundTreePositions?: readonly number[] | null;
|
|
69
70
|
__loadInterceptLayouts?: readonly (() => Promise<unknown>)[] | null;
|
|
70
71
|
__loadInterceptLoadings?: readonly (() => Promise<unknown>)[] | null;
|
|
72
|
+
__loadInterceptNotFounds?: readonly (() => Promise<unknown>)[] | null;
|
|
71
73
|
matchedParams: AppPageParams;
|
|
72
74
|
sourceMatchedParams?: AppPageParams;
|
|
73
75
|
page: TPage;
|
|
@@ -75,6 +77,15 @@ type AppPageInterceptMatch<TPage = unknown> = {
|
|
|
75
77
|
notFound?: unknown;
|
|
76
78
|
__loadNotFound?: (() => Promise<unknown>) | null;
|
|
77
79
|
notFoundTreePosition?: number | null;
|
|
80
|
+
interceptForbiddens?: readonly unknown[] | null;
|
|
81
|
+
interceptForbiddenTreePositions?: readonly number[] | null;
|
|
82
|
+
__loadInterceptForbiddens?: readonly (() => Promise<unknown>)[] | null;
|
|
83
|
+
interceptUnauthorizeds?: readonly unknown[] | null;
|
|
84
|
+
interceptUnauthorizedTreePositions?: readonly number[] | null;
|
|
85
|
+
__loadInterceptUnauthorizeds?: readonly (() => Promise<unknown>)[] | null;
|
|
86
|
+
interceptErrors?: readonly unknown[] | null;
|
|
87
|
+
interceptErrorTreePositions?: readonly number[] | null;
|
|
88
|
+
__loadInterceptErrors?: readonly (() => Promise<unknown>)[] | null;
|
|
78
89
|
__loadState?: {
|
|
79
90
|
page: TPage;
|
|
80
91
|
pageLoading: Promise<TPage> | null;
|
|
@@ -108,7 +119,7 @@ type ResolveAppPageInterceptionRerenderTargetResult<TRoute, TInterceptOpts> = {
|
|
|
108
119
|
type ResolveAppPageActionRerenderTargetOptions<TRoute, TPage, TInterceptOpts> = ResolveAppPageInterceptionRerenderTargetOptions<TRoute, TPage, TInterceptOpts>;
|
|
109
120
|
type ResolveAppPageActionRerenderTargetResult<TRoute, TInterceptOpts> = ResolveAppPageInterceptionRerenderTargetResult<TRoute, TInterceptOpts>;
|
|
110
121
|
type ResolveAppPageInterceptOptions<TRoute, TPage, TInterceptOpts, TElement> = {
|
|
111
|
-
buildPageElement: (route: TRoute, params: AppPageParams, interceptOpts: TInterceptOpts | undefined, searchParams: URLSearchParams,
|
|
122
|
+
buildPageElement: (route: TRoute, params: AppPageParams, interceptOpts: TInterceptOpts | undefined, searchParams: URLSearchParams, buildOptions?: {
|
|
112
123
|
observeMetadataSearchParamsAccess?: boolean;
|
|
113
124
|
observePageSearchParamsAccess?: boolean;
|
|
114
125
|
}) => Promise<TElement>;
|
|
@@ -118,7 +129,6 @@ type ResolveAppPageInterceptOptions<TRoute, TPage, TInterceptOpts, TElement> = {
|
|
|
118
129
|
getRouteParamNames: (route: TRoute) => readonly string[];
|
|
119
130
|
getSourceRoute: (sourceRouteIndex: number) => Awaitable<TRoute | undefined>;
|
|
120
131
|
isRscRequest: boolean;
|
|
121
|
-
layoutParamAccess?: AppLayoutParamAccessTracker;
|
|
122
132
|
resolveNavigationParams: (route: TRoute, params: AppPageParams, pathname: string, interceptOpts: TInterceptOpts) => AppPageParams;
|
|
123
133
|
renderInterceptResponse: (route: TRoute, element: TElement) => Promise<Response> | Response;
|
|
124
134
|
resolveSearchParams?: (route: TRoute, searchParams: URLSearchParams) => Awaitable<URLSearchParams>;
|
|
@@ -140,4 +150,5 @@ export declare function resolveAppPageInterceptionRerenderTarget<TRoute, TPage,
|
|
|
140
150
|
export declare function resolveAppPageActionRerenderTarget<TRoute, TPage, TInterceptOpts>(options: ResolveAppPageActionRerenderTargetOptions<TRoute, TPage, TInterceptOpts>): Promise<ResolveAppPageActionRerenderTargetResult<TRoute, TInterceptOpts>>;
|
|
141
151
|
export declare function resolveAppPageIntercept<TRoute, TPage, TInterceptOpts, TElement>(options: ResolveAppPageInterceptOptions<TRoute, TPage, TInterceptOpts, TElement>): Promise<ResolveAppPageInterceptResult<TInterceptOpts>>;
|
|
142
152
|
export declare function buildAppPageElement<TElement>(options: BuildAppPageElementOptions<TElement>): Promise<BuildAppPageElementResult<TElement>>;
|
|
143
|
-
//#endregion
|
|
153
|
+
//#endregion
|
|
154
|
+
export {};
|
|
@@ -283,7 +283,7 @@ async function resolveAppPageInterceptState(options) {
|
|
|
283
283
|
if (!intercept) return { kind: "none" };
|
|
284
284
|
await loadAppInterceptPage(intercept);
|
|
285
285
|
await loadAppInterceptNotFound(intercept);
|
|
286
|
-
if (intercept.__loadInterceptLayouts || intercept.__loadInterceptLoadings) await loadAppInterceptLayouts(intercept);
|
|
286
|
+
if (intercept.__loadInterceptLayouts || intercept.__loadInterceptLoadings || intercept.__loadInterceptNotFounds || intercept.__loadInterceptForbiddens || intercept.__loadInterceptUnauthorizeds || intercept.__loadInterceptErrors) await loadAppInterceptLayouts(intercept);
|
|
287
287
|
const sourceRoute = await options.getSourceRoute(intercept.sourceRouteIndex);
|
|
288
288
|
if (!sourceRoute) return { kind: "none" };
|
|
289
289
|
if (sourceRoute === options.currentRoute) return {
|
|
@@ -353,7 +353,7 @@ async function resolveAppPageIntercept(options) {
|
|
|
353
353
|
pathname: options.cleanPathname,
|
|
354
354
|
searchParams: renderSearchParams
|
|
355
355
|
});
|
|
356
|
-
const interceptElement = await options.buildPageElement(renderRoute, renderParams, interceptOpts, renderSearchParams
|
|
356
|
+
const interceptElement = await options.buildPageElement(renderRoute, renderParams, interceptOpts, renderSearchParams);
|
|
357
357
|
return {
|
|
358
358
|
interceptOpts: void 0,
|
|
359
359
|
response: await options.renderInterceptResponse(renderRoute, interceptElement)
|
|
@@ -2,14 +2,14 @@ import { VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_VARY_HEADER } from "./app-rsc-v
|
|
|
2
2
|
import { NEXT_CACHE_TAGS_HEADER, NEXT_ROUTER_STALE_TIME_HEADER, VINEXT_DYNAMIC_STALE_TIME_HEADER, VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, VINEXT_STALE_TIME_PENDING_HEADER, VINEXT_TIMING_HEADER } from "./headers.js";
|
|
3
3
|
import { NEVER_CACHE_CONTROL, NO_STORE_CACHE_CONTROL, STATIC_CACHE_CONTROL, buildRevalidateCacheControl } from "./cache-control.js";
|
|
4
4
|
import { setCacheStateHeaders } from "./cache-headers.js";
|
|
5
|
-
import {
|
|
5
|
+
import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
|
|
6
6
|
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
7
|
+
import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
|
|
7
8
|
import { applyPrerenderCacheLifeHeader } from "./prerender-cache-life-header.js";
|
|
8
|
-
import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
|
|
9
9
|
//#region src/server/app-page-response.ts
|
|
10
10
|
function applyTimingHeader(headers, timing) {
|
|
11
11
|
if (!timing) return;
|
|
12
|
-
const handlerStart = Math.round(timing.handlerStart);
|
|
12
|
+
const handlerStart = Math.round(Date.now() - (performance.now() - timing.handlerStart));
|
|
13
13
|
const compileMs = timing.compileEnd !== void 0 ? Math.round(timing.compileEnd - timing.handlerStart) : -1;
|
|
14
14
|
const renderMs = timing.responseKind === "html" && timing.renderEnd !== void 0 && timing.compileEnd !== void 0 ? Math.round(timing.renderEnd - timing.compileEnd) : -1;
|
|
15
15
|
headers.set(VINEXT_TIMING_HEADER, `${handlerStart},${compileMs},${renderMs}`);
|