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,3 +1,4 @@
|
|
|
1
|
+
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
1
2
|
import { NEXTJS_CACHE_HEADER, VINEXT_CACHE_HEADER } from "./headers.js";
|
|
2
3
|
import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
3
4
|
import { captureRouteCacheabilityResponsePolicy, deferRouteCacheability, isRouteCacheabilityEvaluation } from "../shims/cacheability-classification.js";
|
|
@@ -6,7 +7,6 @@ import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } fr
|
|
|
6
7
|
import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
|
|
7
8
|
import { setCacheStateHeaders } from "./cache-headers.js";
|
|
8
9
|
import { readStreamAsText } from "../utils/text-stream.js";
|
|
9
|
-
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
10
10
|
import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
|
|
11
11
|
import { hasQueryInvariantRenderProof } from "./cache-proof.js";
|
|
12
12
|
import { createEmptyAppPageRenderObservationState } from "./app-page-render-observation.js";
|
|
@@ -67,55 +67,79 @@ function applyRscRenderStatus(outcome, renderStatus) {
|
|
|
67
67
|
...renderStatus.headers ? { headers: renderStatus.headers } : {}
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
|
+
/** Hand an adapter the document; its failure never holds back admission. */
|
|
71
|
+
function settleAdmittedDocument(capture, document) {
|
|
72
|
+
try {
|
|
73
|
+
capture?.(document);
|
|
74
|
+
} catch (error) {
|
|
75
|
+
console.error("[vinext] CDN adapter document capture error:", error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
70
78
|
function finalizeEvaluatedAppPageResponse(response, options) {
|
|
71
79
|
if (!isRouteCacheabilityEvaluation()) return null;
|
|
72
80
|
const complete = deferRouteCacheability();
|
|
73
|
-
if (!complete)
|
|
81
|
+
if (!complete) {
|
|
82
|
+
settleAdmittedDocument(options.captureAdmittedDocument, null);
|
|
83
|
+
return response;
|
|
84
|
+
}
|
|
74
85
|
captureRouteCacheabilityResponsePolicy(captureCdnResponsePolicyHeaders(response.headers));
|
|
86
|
+
const admit = (renderStatus) => {
|
|
87
|
+
const observationState = options.consumeRenderObservationState?.();
|
|
88
|
+
const cacheControl = resolveAppPageCacheControl({
|
|
89
|
+
expireSeconds: options.expireSeconds,
|
|
90
|
+
requestCacheLife: options.getRequestCacheLife?.(),
|
|
91
|
+
revalidateSeconds: options.revalidateSeconds
|
|
92
|
+
});
|
|
93
|
+
const outcome = cacheControl ? {
|
|
94
|
+
cacheable: true,
|
|
95
|
+
cacheControl: appPageCacheControlHeader(cacheControl),
|
|
96
|
+
...observationState && !observationState.requestApis.includes("searchParams") ? { searchParamsUnread: true } : {},
|
|
97
|
+
...cacheControl.stale !== void 0 ? { staleTimeSeconds: cacheControl.stale } : {},
|
|
98
|
+
tags: options.getPageTags()
|
|
99
|
+
} : {
|
|
100
|
+
cacheable: false,
|
|
101
|
+
reason: "render did not produce a cache policy"
|
|
102
|
+
};
|
|
103
|
+
const admitted = renderStatus ? applyRscRenderStatus(outcome, renderStatus) : outcome;
|
|
104
|
+
settleAdmittedDocument(options.captureAdmittedDocument, admitted.cacheable && admitted.searchParamsUnread === true && renderStatus?.kind === "page" ? renderStatus.document ?? null : null);
|
|
105
|
+
complete(admitted);
|
|
106
|
+
};
|
|
75
107
|
let completed = false;
|
|
76
108
|
const finish = () => {
|
|
77
109
|
if (completed) return;
|
|
78
110
|
completed = true;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) outcome = {
|
|
111
|
+
let ineligible;
|
|
112
|
+
if (options.capturedDynamicUsageBeforeContextCleanup?.() === true || options.consumeDynamicUsage()) ineligible = {
|
|
82
113
|
cacheable: false,
|
|
83
114
|
dynamicUsage: true,
|
|
84
115
|
reason: "dynamic API used during render"
|
|
85
116
|
};
|
|
86
|
-
else if (options.isStaticEligible === false)
|
|
117
|
+
else if (options.isStaticEligible === false) ineligible = {
|
|
87
118
|
cacheable: false,
|
|
88
119
|
reason: "route is not statically generated"
|
|
89
120
|
};
|
|
90
|
-
else if (response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(response.headers))
|
|
121
|
+
else if (response.headers.has("set-cookie") || hasExplicitNonCacheableResponsePolicy(response.headers)) ineligible = {
|
|
91
122
|
cacheable: false,
|
|
92
123
|
reason: "response explicitly opts out of shared caching"
|
|
93
124
|
};
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
});
|
|
100
|
-
outcome = cacheControl ? {
|
|
101
|
-
cacheable: true,
|
|
102
|
-
cacheControl: appPageCacheControlHeader(cacheControl),
|
|
103
|
-
...observationState && !observationState.requestApis.includes("searchParams") ? { searchParamsUnread: true } : {},
|
|
104
|
-
tags: options.getPageTags()
|
|
105
|
-
} : {
|
|
106
|
-
cacheable: false,
|
|
107
|
-
reason: "render did not produce a cache policy"
|
|
108
|
-
};
|
|
125
|
+
if (ineligible) {
|
|
126
|
+
options.consumeRenderObservationState?.();
|
|
127
|
+
settleAdmittedDocument(options.captureAdmittedDocument, null);
|
|
128
|
+
complete(ineligible);
|
|
129
|
+
return;
|
|
109
130
|
}
|
|
110
|
-
if (
|
|
111
|
-
|
|
112
|
-
options.resolveRscRenderStatus().then((renderStatus) => complete(applyRscRenderStatus(cacheableOutcome, renderStatus)), () => complete({
|
|
113
|
-
cacheable: false,
|
|
114
|
-
reason: "render status could not be resolved"
|
|
115
|
-
}));
|
|
131
|
+
if (!options.resolveRscRenderStatus) {
|
|
132
|
+
admit();
|
|
116
133
|
return;
|
|
117
134
|
}
|
|
118
|
-
|
|
135
|
+
options.resolveRscRenderStatus().then(admit, () => {
|
|
136
|
+
options.consumeRenderObservationState?.();
|
|
137
|
+
settleAdmittedDocument(options.captureAdmittedDocument, null);
|
|
138
|
+
complete({
|
|
139
|
+
cacheable: false,
|
|
140
|
+
reason: "render status could not be resolved"
|
|
141
|
+
});
|
|
142
|
+
});
|
|
119
143
|
};
|
|
120
144
|
if (!response.body) {
|
|
121
145
|
finish();
|
|
@@ -230,6 +254,7 @@ function finalizeAppPageRscCacheResponse(response, options) {
|
|
|
230
254
|
options.capturedRscDataPromise?.catch(() => {});
|
|
231
255
|
return probeResponse;
|
|
232
256
|
}
|
|
257
|
+
settleAdmittedDocument(options.captureAdmittedDocument, null);
|
|
233
258
|
scheduleAppPageRscCacheWrite(options);
|
|
234
259
|
const isUncacheableVariant = Boolean(options.mountedSlotsHeader) || options.bypassInterceptionContextCache === true;
|
|
235
260
|
if (options.preserveClientResponseHeaders === true && !isUncacheableVariant) return response;
|
|
@@ -253,6 +278,7 @@ function scheduleAppPageRscCacheWrite(options) {
|
|
|
253
278
|
options.isrDebug?.("RSC cache write skipped (dynamic usage during render)", rscKey);
|
|
254
279
|
return;
|
|
255
280
|
}
|
|
281
|
+
const renderStatus = await options.resolveRscRenderStatus?.() ?? { kind: "page" };
|
|
256
282
|
const cacheControl = resolveAppPageCacheControl({
|
|
257
283
|
expireSeconds: options.expireSeconds,
|
|
258
284
|
requestCacheLife: options.getRequestCacheLife?.(),
|
|
@@ -272,7 +298,6 @@ function scheduleAppPageRscCacheWrite(options) {
|
|
|
272
298
|
options.isrDebug?.("RSC cache write skipped (searchParams not proven unread)", rscKey);
|
|
273
299
|
return;
|
|
274
300
|
}
|
|
275
|
-
const renderStatus = await options.resolveRscRenderStatus?.() ?? { kind: "page" };
|
|
276
301
|
if (renderStatus.kind === "unstorable") {
|
|
277
302
|
options.isrDebug?.("RSC cache write skipped (unstorable special error)", rscKey);
|
|
278
303
|
return;
|
|
@@ -282,6 +307,22 @@ function scheduleAppPageRscCacheWrite(options) {
|
|
|
282
307
|
tags: pageTags
|
|
283
308
|
});
|
|
284
309
|
options.isrDebug?.("RSC cache written", rscKey);
|
|
310
|
+
const document = renderStatus.kind === "page" ? renderStatus.document : void 0;
|
|
311
|
+
if (!document || !options.isrHtmlKey || !options.createHtmlRenderObservation) return;
|
|
312
|
+
const htmlKey = options.isrHtmlKey(options.cleanPathname);
|
|
313
|
+
const htmlRenderObservation = options.createHtmlRenderObservation({
|
|
314
|
+
cacheTags: pageTags,
|
|
315
|
+
state: observationState
|
|
316
|
+
});
|
|
317
|
+
if (!hasQueryInvariantRenderProof(htmlRenderObservation)) {
|
|
318
|
+
options.isrDebug?.("HTML cache write skipped (searchParams not proven unread)", htmlKey);
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
await options.isrSet(htmlKey, buildAppPageCacheValue(document.html, void 0, 200, htmlRenderObservation, document.linkHeader ? { link: document.linkHeader } : void 0), {
|
|
322
|
+
cacheControl,
|
|
323
|
+
tags: pageTags
|
|
324
|
+
});
|
|
325
|
+
options.isrDebug?.("HTML cache written", htmlKey);
|
|
285
326
|
} catch (cacheError) {
|
|
286
327
|
console.error("[vinext] ISR RSC cache write error:", cacheError);
|
|
287
328
|
}
|
|
@@ -35,7 +35,14 @@ export type RenderAppPageCacheArtifactsOptions = {
|
|
|
35
35
|
* Render the document of a special error that rejected the shell, or return
|
|
36
36
|
* null to fail the render with it.
|
|
37
37
|
*/
|
|
38
|
-
renderShellSpecialError?: (error: unknown
|
|
38
|
+
renderShellSpecialError?: (error: unknown,
|
|
39
|
+
/** The page's own document, in which parallel slot boundaries caught it. */
|
|
40
|
+
caughtDocument?: {
|
|
41
|
+
html: string;
|
|
42
|
+
linkHeader?: string;
|
|
43
|
+
}) => Promise<AppPageCacheSpecialErrorDocument | null>;
|
|
44
|
+
/** The parallel slot not-found boundaries that catch a shell error. See handleSsr. */
|
|
45
|
+
resolveCaughtNotFoundBoundaries?: (error: unknown) => readonly string[] | null;
|
|
39
46
|
renderToReadableStream: (element: AppPageRenderableElement, options: {
|
|
40
47
|
onError: (error: unknown, requestInfo: unknown, errorContext: unknown) => unknown;
|
|
41
48
|
}) => ReadableStream<Uint8Array>;
|
|
@@ -73,4 +80,5 @@ export type RenderAppPageCacheArtifactsResult = {
|
|
|
73
80
|
* shell regeneration.
|
|
74
81
|
*/
|
|
75
82
|
export declare function renderAppPageCacheArtifacts(options: RenderAppPageCacheArtifactsOptions): Promise<RenderAppPageCacheArtifactsResult>;
|
|
76
|
-
//#endregion
|
|
83
|
+
//#endregion
|
|
84
|
+
export {};
|
|
@@ -5,9 +5,9 @@ import { getCollectedFetchTags } from "../shims/fetch-cache.js";
|
|
|
5
5
|
import { readStreamAsText } from "../utils/text-stream.js";
|
|
6
6
|
import { buildAppPageFontLinkHeader, teeAppPageRscStreamForCapture } from "./app-page-execution.js";
|
|
7
7
|
import { recordAppPageRenderError, traceAppPageRender } from "./app-page-tracing.js";
|
|
8
|
-
import { buildAppPageTags } from "./implicit-tags.js";
|
|
9
|
-
import { consumeAppPageRenderObservationState, createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
|
|
10
8
|
import { buildAppPageLinkHeader, createAppPageSsrErrorHandler, isAppSsrRenderResult } from "./app-page-stream.js";
|
|
9
|
+
import { consumeAppPageRenderObservationState, createAppPageHtmlOutputScope, createAppPageRenderObservation, createAppPageRscOutputScope } from "./app-page-render-observation.js";
|
|
10
|
+
import { buildAppPageTags } from "./implicit-tags.js";
|
|
11
11
|
//#region src/server/app-page-cache-render.ts
|
|
12
12
|
/**
|
|
13
13
|
* Render an App page element to HTML (and optionally its RSC payload) for cache
|
|
@@ -44,6 +44,7 @@ async function renderAppPageCacheArtifactsImpl(options, renderSpan) {
|
|
|
44
44
|
isStaticGeneration: true,
|
|
45
45
|
isForceStatic: options.isForceStatic,
|
|
46
46
|
preloadRoutePattern: options.route.pattern,
|
|
47
|
+
resolveCaughtNotFoundBoundaries: options.resolveCaughtNotFoundBoundaries,
|
|
47
48
|
onSsrError: options.onSsrError && options.isCapturedRscError ? createAppPageSsrErrorHandler((error) => {
|
|
48
49
|
recordAppPageRenderError(renderSpan, error);
|
|
49
50
|
return options.onSsrError?.(error);
|
|
@@ -69,6 +70,17 @@ async function renderAppPageCacheArtifactsImpl(options, renderSpan) {
|
|
|
69
70
|
const reactLinkHeader = isAppSsrRenderResult(htmlResult) ? htmlResult.linkHeader : void 0;
|
|
70
71
|
linkHeader = buildAppPageLinkHeader(reactLinkHeader, buildAppPageFontLinkHeader(fontPreloads), options.reactMaxHeadersLength);
|
|
71
72
|
html = await readStreamAsText(htmlStream);
|
|
73
|
+
const caughtShellError = isAppSsrRenderResult(htmlResult) ? htmlResult.caughtShellError : void 0;
|
|
74
|
+
if (caughtShellError !== void 0) {
|
|
75
|
+
await capturedRscDataRef.value?.catch(() => {});
|
|
76
|
+
specialErrorDocument = await options.renderShellSpecialError?.(caughtShellError, {
|
|
77
|
+
html,
|
|
78
|
+
linkHeader
|
|
79
|
+
}) ?? null;
|
|
80
|
+
if (!specialErrorDocument) throw caughtShellError;
|
|
81
|
+
html = specialErrorDocument.html;
|
|
82
|
+
linkHeader = specialErrorDocument.linkHeader;
|
|
83
|
+
}
|
|
72
84
|
}
|
|
73
85
|
let rscData;
|
|
74
86
|
if (options.captureRscData) {
|
|
@@ -83,7 +83,19 @@ type ReadAppPageCacheResponseOptions = {
|
|
|
83
83
|
renderMode?: AppRscRenderMode;
|
|
84
84
|
expireSeconds?: number;
|
|
85
85
|
revalidateSeconds: number;
|
|
86
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Whether this is an RSC request Next.js renders dynamically under PPR (one
|
|
88
|
+
* that is not a prefetch, for a path not generated at build time), and so
|
|
89
|
+
* never regenerates the page's document.
|
|
90
|
+
*/
|
|
91
|
+
isDynamicRscRequest?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Renders the page for its cache entries. `renderDocument` asks for the
|
|
94
|
+
* document as an HTML request renders it, to be stored beside the RSC payload.
|
|
95
|
+
*/
|
|
96
|
+
renderFreshPageForCache: (options: {
|
|
97
|
+
renderDocument: boolean;
|
|
98
|
+
}) => Promise<AppPageCacheRenderResult>;
|
|
87
99
|
scheduleBackgroundRegeneration: AppPageBackgroundRegenerator;
|
|
88
100
|
};
|
|
89
101
|
type ReadAppPageFallbackShellCacheResponseOptions = {
|
|
@@ -6,14 +6,14 @@ import { buildAppPageCacheValue, isrCacheControl, resolveRouteExpireSeconds } fr
|
|
|
6
6
|
import { resolveClientStaleTimeSeconds } from "../utils/cache-control-metadata.js";
|
|
7
7
|
import { encodeCacheTag } from "../utils/encode-cache-tag.js";
|
|
8
8
|
import { setCacheStateHeaders } from "./cache-headers.js";
|
|
9
|
-
import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
|
|
10
|
-
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
11
9
|
import { markFrameworkLinkHeaders } from "./app-response-header-provenance.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
10
|
+
import { mergeMiddlewareResponseHeaders } from "./middleware-response-headers.js";
|
|
11
|
+
import { VINEXT_RSC_CONTENT_TYPE, applyRscCompatibilityIdHeader, applyRscDeploymentIdHeader } from "./app-rsc-cache-busting.js";
|
|
14
12
|
import { isAppPprDynamicFallbackShellHtml } from "./app-ppr-fallback-shell.js";
|
|
15
|
-
import {
|
|
13
|
+
import { hasQueryInvariantRenderProof } from "./cache-proof.js";
|
|
14
|
+
import { applyClientStaleTimeHeader, applyEdgeRuntimeHeader } from "./app-page-response.js";
|
|
16
15
|
import { finalizeAppPageHtmlCacheResponse, finalizeAppPageRscCacheResponse, scheduleAppPageRscCacheWrite } from "./app-page-cache-finalizer.js";
|
|
16
|
+
import { buildPageCacheTags } from "./implicit-tags.js";
|
|
17
17
|
//#region src/server/app-page-cache.ts
|
|
18
18
|
function recordAppPageCacheOutcome(recordCacheOutcome, input) {
|
|
19
19
|
try {
|
|
@@ -92,6 +92,25 @@ function resolveRegenerationFailureCacheControl(previous) {
|
|
|
92
92
|
...previous.stale === void 0 ? {} : { stale: previous.stale }
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Next.js stamps every prerender with the stale time it collected. A render
|
|
97
|
+
* that made no `cacheLife` claim keeps the `INFINITE_CACHE` sentinel, which
|
|
98
|
+
* resolves to `experimental.staleTimes.static` (`createSelectStaleTime` in
|
|
99
|
+
* `server/app-render/stale-time.ts`, applied by
|
|
100
|
+
* `applyMetadataFromPrerenderResult` in `app-render.tsx`). Its client only
|
|
101
|
+
* caches a navigation response for that long under
|
|
102
|
+
* `experimental.cachedNavigations` (`fetch-server-response.ts`); otherwise the
|
|
103
|
+
* value only dates prefetches. vinext's client reuses navigation responses for
|
|
104
|
+
* any advertised stale time, so the unclaimed value is only advertised when
|
|
105
|
+
* cached navigations are on.
|
|
106
|
+
*/
|
|
107
|
+
function resolveUnclaimedPrerenderStaleTimeSeconds(isRoutePPREnabled) {
|
|
108
|
+
if (isRoutePPREnabled !== true) return void 0;
|
|
109
|
+
if (String(process.env.__NEXT_EXPERIMENTAL_CACHED_NAVIGATIONS) !== "true") return void 0;
|
|
110
|
+
const raw = process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME;
|
|
111
|
+
const seconds = raw === void 0 || raw === "" ? 300 : Number(raw);
|
|
112
|
+
return Number.isFinite(seconds) && seconds >= 0 ? Math.floor(seconds) : void 0;
|
|
113
|
+
}
|
|
95
114
|
function isRedirectStatus(status) {
|
|
96
115
|
return status === 301 || status === 302 || status === 303 || status === 307 || status === 308;
|
|
97
116
|
}
|
|
@@ -108,7 +127,7 @@ function buildAppPageCachedResponse(cachedValue, options) {
|
|
|
108
127
|
expireSeconds: options.expireSeconds,
|
|
109
128
|
cacheControlMeta: options.cacheControl
|
|
110
129
|
});
|
|
111
|
-
const staleTimeSeconds = resolveClientStaleTimeSeconds(options.cacheControl);
|
|
130
|
+
const staleTimeSeconds = resolveClientStaleTimeSeconds(options.cacheControl) ?? resolveUnclaimedPrerenderStaleTimeSeconds(options.isRoutePPREnabled);
|
|
112
131
|
if (options.isRscRequest) {
|
|
113
132
|
if (!cachedValue.rscData) return null;
|
|
114
133
|
const rscHeaders = buildAppPageCachedHeaders({
|
|
@@ -276,8 +295,10 @@ async function readAppPageCacheResponse(options) {
|
|
|
276
295
|
console.error(`[vinext] Failed to keep the previous entry for ${key}:`, storeError);
|
|
277
296
|
}
|
|
278
297
|
};
|
|
298
|
+
const regeneratesDocument = !options.isRscRequest || options.isDynamicRscRequest !== true && isrKey === options.isrRscKey(options.cleanPathname, null);
|
|
299
|
+
const htmlKey = options.isRscRequest ? regeneratesDocument ? options.isrHtmlKey(options.cleanPathname) : null : isrKey;
|
|
279
300
|
const regenerate = async () => {
|
|
280
|
-
const revalidatedPage = await options.renderFreshPageForCache();
|
|
301
|
+
const revalidatedPage = await options.renderFreshPageForCache({ renderDocument: regeneratesDocument });
|
|
281
302
|
const cacheControl = resolveRegeneratedAppPageCacheControl({
|
|
282
303
|
expireSeconds: options.expireSeconds,
|
|
283
304
|
renderCacheControl: revalidatedPage.cacheControl,
|
|
@@ -285,7 +306,8 @@ async function readAppPageCacheResponse(options) {
|
|
|
285
306
|
});
|
|
286
307
|
if (options.isRoutePPREnabled !== true && (revalidatedPage.usedDynamicApi || cacheControl.revalidate === 0)) throw new Error(`Page changed from static to dynamic at runtime ${options.cleanPathname}
|
|
287
308
|
see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`);
|
|
288
|
-
|
|
309
|
+
const documentKey = options.isRscRequest && revalidatedPage.html === "" ? null : htmlKey;
|
|
310
|
+
if (!hasQueryInvariantRenderProof(revalidatedPage.rscRenderObservation) || documentKey !== null && !hasQueryInvariantRenderProof(revalidatedPage.htmlRenderObservation)) {
|
|
289
311
|
options.isrDebug?.("regen write skipped (searchParams not proven unread)", isrKey);
|
|
290
312
|
return;
|
|
291
313
|
}
|
|
@@ -304,15 +326,15 @@ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`);
|
|
|
304
326
|
};
|
|
305
327
|
const status = revalidatedPage.status ?? 200;
|
|
306
328
|
if (!await store(rscKey, buildAppPageCacheValue("", revalidatedPage.rscData, status, revalidatedPage.rscRenderObservation, revalidatedPage.headers))) return;
|
|
307
|
-
if (
|
|
308
|
-
if (!await store(
|
|
329
|
+
if (documentKey !== null) {
|
|
330
|
+
if (!await store(documentKey, buildAppPageCacheValue(revalidatedPage.html, void 0, status, revalidatedPage.htmlRenderObservation, revalidatedPage.linkHeader ? {
|
|
309
331
|
...revalidatedPage.headers,
|
|
310
332
|
link: revalidatedPage.linkHeader
|
|
311
333
|
} : revalidatedPage.headers))) return;
|
|
312
334
|
}
|
|
313
335
|
options.isrDebug?.("regen complete", options.cleanPathname);
|
|
314
336
|
};
|
|
315
|
-
options.scheduleBackgroundRegeneration(isrKey, async () => {
|
|
337
|
+
options.scheduleBackgroundRegeneration(htmlKey ?? isrKey, async () => {
|
|
316
338
|
try {
|
|
317
339
|
await regenerate();
|
|
318
340
|
} catch (error) {
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { ClassificationReason } from "../build/layout-classification-types.js";
|
|
2
|
-
import { ClientReuseManifestParseResult } from "./client-reuse-manifest.js";
|
|
3
1
|
import { AppOutgoingElements } from "./app-elements-wire.js";
|
|
4
2
|
import "./app-elements.js";
|
|
5
3
|
import { AppRscRenderMode } from "./app-rsc-render-mode.js";
|
|
6
4
|
import { NavigationContext } from "../shims/navigation-context-state.js";
|
|
7
5
|
import "../shims/navigation.js";
|
|
8
|
-
import { AppPageFontPreload
|
|
6
|
+
import { AppPageFontPreload } from "./app-page-execution.js";
|
|
9
7
|
import { AppPageMiddlewareContext } from "./app-page-response.js";
|
|
10
|
-
import {
|
|
8
|
+
import { AppPageFallbackRouteHead, AppPagePreparedRouteHead } from "./app-page-head.js";
|
|
11
9
|
import { RootParams } from "../shims/root-params.js";
|
|
12
10
|
import { AppPageSsrHandler } from "./app-page-stream.js";
|
|
13
11
|
import { AppRenderErrorContextOverrides } from "./app-rsc-error-handler.js";
|
|
@@ -43,8 +41,16 @@ type AppPageDispatchIntercept<TPage = unknown> = {
|
|
|
43
41
|
interceptLoadings?: readonly unknown[] | null;
|
|
44
42
|
interceptLoadingTreePositions?: readonly number[] | null;
|
|
45
43
|
interceptNotFoundBranchSegments?: readonly string[] | null;
|
|
44
|
+
interceptNotFounds?: readonly unknown[] | null;
|
|
45
|
+
interceptNotFoundTreePositions?: readonly number[] | null;
|
|
46
46
|
notFound?: unknown;
|
|
47
47
|
notFoundTreePosition?: number | null;
|
|
48
|
+
interceptForbiddens?: readonly unknown[] | null;
|
|
49
|
+
interceptForbiddenTreePositions?: readonly number[] | null;
|
|
50
|
+
interceptUnauthorizeds?: readonly unknown[] | null;
|
|
51
|
+
interceptUnauthorizedTreePositions?: readonly number[] | null;
|
|
52
|
+
interceptErrors?: readonly unknown[] | null;
|
|
53
|
+
interceptErrorTreePositions?: readonly number[] | null;
|
|
48
54
|
matchedParams: AppPageParams;
|
|
49
55
|
sourceMatchedParams?: AppPageParams;
|
|
50
56
|
page: TPage;
|
|
@@ -67,6 +73,14 @@ type AppPageDispatchInterceptOptions<TPage = unknown> = {
|
|
|
67
73
|
interceptNotFoundBranchSegments?: readonly string[] | null;
|
|
68
74
|
interceptNotFound?: unknown;
|
|
69
75
|
interceptNotFoundTreePosition?: number | null;
|
|
76
|
+
interceptForbiddens?: readonly unknown[] | null;
|
|
77
|
+
interceptForbiddenTreePositions?: readonly number[] | null;
|
|
78
|
+
interceptUnauthorizeds?: readonly unknown[] | null;
|
|
79
|
+
interceptUnauthorizedTreePositions?: readonly number[] | null;
|
|
80
|
+
interceptErrors?: readonly unknown[] | null;
|
|
81
|
+
interceptErrorTreePositions?: readonly number[] | null;
|
|
82
|
+
interceptNotFounds?: readonly unknown[] | null;
|
|
83
|
+
interceptNotFoundTreePositions?: readonly number[] | null;
|
|
70
84
|
interceptPage: TPage;
|
|
71
85
|
interceptParams: AppPageParams;
|
|
72
86
|
interceptSlotId?: string | null;
|
|
@@ -90,8 +104,6 @@ type AppPageDispatchSlot = {
|
|
|
90
104
|
slotParamNames?: readonly string[] | null;
|
|
91
105
|
};
|
|
92
106
|
export type AppPageDispatchRoute = {
|
|
93
|
-
__buildTimeClassifications?: LayoutClassificationOptions["buildTimeClassifications"];
|
|
94
|
-
__buildTimeReasons?: LayoutClassificationOptions["buildTimeReasons"];
|
|
95
107
|
error?: AppPageModule | null;
|
|
96
108
|
errors?: readonly (AppPageModule | null | undefined)[];
|
|
97
109
|
forbidden?: AppPageModule | null;
|
|
@@ -108,6 +120,12 @@ export type AppPageDispatchRoute = {
|
|
|
108
120
|
params: readonly string[];
|
|
109
121
|
pattern: string;
|
|
110
122
|
routeSegments: readonly string[];
|
|
123
|
+
segmentForbiddens?: readonly (AppPageModule | null | undefined)[];
|
|
124
|
+
segmentForbiddenTreePositions?: readonly number[];
|
|
125
|
+
segmentNotFounds?: readonly (AppPageModule | null | undefined)[];
|
|
126
|
+
segmentNotFoundTreePositions?: readonly number[];
|
|
127
|
+
segmentUnauthorizeds?: readonly (AppPageModule | null | undefined)[];
|
|
128
|
+
segmentUnauthorizedTreePositions?: readonly number[];
|
|
111
129
|
slots?: Readonly<Record<string, AppPageDispatchSlot>>;
|
|
112
130
|
unauthorized?: AppPageModule | null;
|
|
113
131
|
unauthorizedTreePosition?: number | null;
|
|
@@ -138,19 +156,22 @@ export type DispatchAppPageOptions<TRoute extends AppPageDispatchRoute> = {
|
|
|
138
156
|
* `next.config`. Undefined falls back to the React default downstream.
|
|
139
157
|
*/
|
|
140
158
|
reactMaxHeadersLength?: number;
|
|
141
|
-
buildPageElement: (route: TRoute, params: AppPageParams, opts: AppPageDispatchInterceptOptions | undefined, searchParams: URLSearchParams,
|
|
159
|
+
buildPageElement: (route: TRoute, params: AppPageParams, opts: AppPageDispatchInterceptOptions | undefined, searchParams: URLSearchParams, options?: {
|
|
142
160
|
isForceStatic?: boolean;
|
|
161
|
+
isUncacheableRender?: boolean;
|
|
162
|
+
/** Layouts the navigating client holds, which the render may leave out. */
|
|
163
|
+
mountedLayouts?: ReadonlySet<string> | null;
|
|
143
164
|
observeMetadataSearchParamsAccess?: boolean;
|
|
144
165
|
observePageSearchParamsAccess?: boolean;
|
|
145
166
|
serveStreamingMetadata?: boolean;
|
|
146
167
|
placeStreamedMetadataInHead?: boolean;
|
|
168
|
+
/** Receives the route's head once the render starts resolving it. */
|
|
169
|
+
onHeadPrepared?: (head: AppPagePreparedRouteHead) => void;
|
|
147
170
|
}) => Promise<AppPageElement>;
|
|
148
|
-
clientReuseManifest?: ClientReuseManifestParseResult;
|
|
149
171
|
cleanPathname: string;
|
|
150
172
|
displayPathname?: string;
|
|
151
173
|
clearRequestContext: () => void;
|
|
152
174
|
createRscOnErrorHandler: (pathname: string, routePath: string, overrides?: AppRenderErrorContextOverrides) => AppPageBoundaryOnError;
|
|
153
|
-
debugClassification?: (layoutId: string, reason: ClassificationReason) => void;
|
|
154
175
|
draftModeSecret: string;
|
|
155
176
|
dynamicConfig?: string;
|
|
156
177
|
dynamicStaleTimeSeconds?: number;
|
|
@@ -223,17 +244,23 @@ export type DispatchAppPageOptions<TRoute extends AppPageDispatchRoute> = {
|
|
|
223
244
|
skipStaticParamsValidation?: boolean;
|
|
224
245
|
staticParamsValidationParams?: AppPageParams;
|
|
225
246
|
rootParams?: RootParams;
|
|
226
|
-
probeLayoutAt: (layoutIndex: number
|
|
247
|
+
probeLayoutAt: (layoutIndex: number) => unknown;
|
|
227
248
|
expireSeconds?: number;
|
|
228
249
|
renderErrorBoundaryPage: (error: unknown, errorOrigin?: "rsc" | "ssr") => Promise<Response | null>;
|
|
229
250
|
renderHttpAccessFallbackPage: (statusCode: number, opts: {
|
|
230
251
|
boundaryComponent?: unknown;
|
|
231
252
|
boundaryModule?: AppPageModule | null;
|
|
253
|
+
/** Boundary whose metadata the head uses, when not `boundaryModule`. */
|
|
254
|
+
headBoundaryModule?: AppPageModule | null;
|
|
255
|
+
/** Layouts whose metadata the head uses, when more than `layouts`. */
|
|
256
|
+
headLayouts?: readonly AppPageModule[];
|
|
232
257
|
intercept?: AppPageDispatchInterceptOptions | null;
|
|
233
258
|
/** The document may be stored, so it must not carry the request's query. */
|
|
234
259
|
isCacheCandidate?: boolean;
|
|
235
260
|
layouts?: readonly AppPageModule[];
|
|
236
261
|
matchedParams: AppPageParams;
|
|
262
|
+
/** The route's render threw the signal, so the document keeps the route's head. */
|
|
263
|
+
routeHead?: AppPageFallbackRouteHead;
|
|
237
264
|
}, middlewareContext: AppPageMiddlewareContext | null) => Promise<Response | null>;
|
|
238
265
|
renderToReadableStream: (element: AppPageRenderableElement, options: {
|
|
239
266
|
onError: AppPageBoundaryOnError;
|
|
@@ -290,4 +317,5 @@ export declare function shouldReadAppPageCache(options: {
|
|
|
290
317
|
}): boolean;
|
|
291
318
|
export declare function hasSearchParams(searchParams: URLSearchParams | null | undefined): boolean;
|
|
292
319
|
export declare function dispatchAppPage<TRoute extends AppPageDispatchRoute>(options: DispatchAppPageOptions<TRoute>): Promise<Response>;
|
|
293
|
-
//#endregion
|
|
320
|
+
//#endregion
|
|
321
|
+
export {};
|