vinext 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/THIRD_PARTY_LICENSES.md +47 -0
- package/dist/_virtual/_rolldown/runtime.js +4 -3
- package/dist/build/action-owner-manifest.d.ts +3 -2
- package/dist/build/action-owner-manifest.js +18 -2
- package/dist/build/app-page-static-eligibility.d.ts +17 -1
- package/dist/build/app-page-static-eligibility.js +80 -13
- package/dist/build/clean-output.d.ts +2 -1
- package/dist/build/client-build-config.d.ts +13 -3
- package/dist/build/client-build-config.js +46 -9
- package/dist/build/client-reference-async.d.ts +48 -0
- package/dist/build/client-reference-async.js +123 -0
- package/dist/build/client-reference-chunks.d.ts +32 -0
- package/dist/build/client-reference-chunks.js +111 -0
- package/dist/build/client-reference-groups.d.ts +9 -1
- package/dist/build/client-reference-groups.js +40 -2
- package/dist/build/css-url-assets.d.ts +2 -1
- package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
- package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
- package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
- package/dist/build/google-fonts/font-metadata.d.ts +2 -1
- package/dist/build/google-fonts/validate.d.ts +2 -1
- package/dist/build/inline-css.d.ts +2 -1
- package/dist/build/module-dependency-cache.d.ts +2 -1
- package/dist/build/next-client-runtime-manifests.d.ts +2 -1
- package/dist/build/precompress.d.ts +2 -1
- package/dist/build/precompress.js +1 -1
- package/dist/build/prerender-paths.d.ts +2 -1
- package/dist/build/prerender-phase.d.ts +2 -1
- package/dist/build/prerender-server-pool.js +1 -1
- package/dist/build/prerender.d.ts +3 -2
- package/dist/build/prerender.js +6 -5
- package/dist/build/report.d.ts +2 -15
- package/dist/build/report.js +1 -51
- package/dist/build/run-prerender.d.ts +2 -1
- package/dist/build/server-actions-encryption-key.d.ts +2 -1
- package/dist/build/ssr-manifest.js +25 -2
- package/dist/build/standalone.d.ts +2 -1
- package/dist/cache/cache-adapters-virtual.d.ts +2 -1
- package/dist/cache.js +1 -2
- package/dist/check.d.ts +2 -1
- package/dist/check.js +5 -1
- package/dist/cli-args.d.ts +2 -1
- package/dist/cli.js +5 -0
- package/dist/client/client-redirect-matcher.js +2 -1
- package/dist/client/client-redirects.d.ts +4 -3
- package/dist/client/client-redirects.js +2 -1
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/dev-error-overlay-store.d.ts +2 -1
- package/dist/client/dev-error-overlay.js +1 -1
- package/dist/client/index.js +1 -2
- package/dist/client/instrumentation-client-state.js +5 -5
- package/dist/client/navigation-runtime.d.ts +16 -2
- package/dist/client/navigation-runtime.js +2 -2
- package/dist/client/pages-router-link-navigation.d.ts +2 -1
- package/dist/client/vinext-next-data.d.ts +25 -1
- package/dist/client/window-next.d.ts +2 -1
- package/dist/config/config-matchers.d.ts +12 -1
- package/dist/config/config-matchers.js +111 -16
- package/dist/config/dotenv.d.ts +2 -1
- package/dist/config/next-config.d.ts +32 -1
- package/dist/config/next-config.js +93 -5
- package/dist/config/tsconfig-paths.d.ts +2 -1
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +327 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +123 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +29 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +134 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +50 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +455 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +169 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +2584 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +2220 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +227 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +425 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +427 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +229 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +292 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +106 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +182 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +42 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +147 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +94 -0
- package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +95 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
- package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
- package/dist/deps/.pnpm/safer-buffer@2.1.2/deps/safer-buffer/safer.js +45 -0
- package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
- package/dist/entries/app-browser-entry.d.ts +20 -5
- package/dist/entries/app-browser-entry.js +79 -6
- package/dist/entries/app-rsc-entry.d.ts +2 -1
- package/dist/entries/app-rsc-entry.js +59 -60
- package/dist/entries/app-rsc-manifest.d.ts +2 -1
- package/dist/entries/app-rsc-manifest.js +56 -4
- package/dist/entries/app-ssr-entry.js +1 -0
- package/dist/entries/pages-entry-helpers.js +1 -2
- package/dist/entries/pages-server-entry.d.ts +2 -1
- package/dist/entries/pages-server-entry.js +34 -9
- package/dist/entries/runtime-entry-module.d.ts +1 -0
- package/dist/entries/runtime-entry-module.js +4 -1
- package/dist/image/image-adapters-virtual.d.ts +2 -1
- package/dist/index.js +184 -103
- package/dist/init-cloudflare.d.ts +1 -3
- package/dist/init-cloudflare.js +10 -48
- package/dist/init-platform.d.ts +2 -0
- package/dist/init-platform.js +4 -0
- package/dist/plugins/client-compile-hints.d.ts +30 -0
- package/dist/plugins/client-compile-hints.js +88 -0
- package/dist/plugins/client-reference-dedup.d.ts +2 -1
- package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
- package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
- package/dist/plugins/dynamic-preload-metadata.js +1 -1
- package/dist/plugins/environment.d.ts +2 -1
- package/dist/plugins/extensionless-dynamic-import.js +6 -2
- package/dist/plugins/fonts.js +9 -12
- package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
- package/dist/plugins/import-meta-url.d.ts +2 -1
- package/dist/plugins/next-intl-catalog.d.ts +12 -0
- package/dist/plugins/next-intl-catalog.js +85 -0
- package/dist/plugins/og-assets.d.ts +2 -1
- package/dist/plugins/og-assets.js +2 -3
- package/dist/plugins/optimize-imports.d.ts +2 -1
- package/dist/plugins/pages-node-externals.d.ts +3 -1
- package/dist/plugins/pages-node-externals.js +1 -1
- package/dist/plugins/remove-console.d.ts +2 -1
- package/dist/plugins/require-condition-resolution.d.ts +2 -1
- package/dist/plugins/rsc-client-reference-loaders.d.ts +8 -0
- package/dist/plugins/rsc-client-reference-loaders.js +170 -68
- package/dist/plugins/rsc-client-shim-excludes.js +2 -0
- package/dist/plugins/sass.d.ts +2 -1
- package/dist/plugins/strip-server-exports.d.ts +2 -1
- package/dist/plugins/styled-jsx.d.ts +2 -1
- package/dist/plugins/transform-result.d.ts +2 -1
- package/dist/plugins/typeof-window.d.ts +2 -1
- package/dist/plugins/use-cache-callable.d.ts +1 -1
- package/dist/plugins/use-cache-callable.js +136 -94
- package/dist/plugins/worker-image-imports.js +1 -1
- package/dist/plugins/worker-use-server.d.ts +2 -1
- package/dist/routing/app-route-graph.d.ts +46 -0
- package/dist/routing/app-route-graph.js +131 -51
- package/dist/routing/browser-route-manifest.d.ts +2 -1
- package/dist/routing/optimistic-route-trie.d.ts +2 -1
- package/dist/routing/route-matching.d.ts +2 -1
- package/dist/routing/route-pattern.d.ts +2 -1
- package/dist/server/accept-encoding.d.ts +2 -1
- package/dist/server/api-handler.js +19 -4
- package/dist/server/app-action-forwarding.d.ts +2 -1
- package/dist/server/app-bfcache-identity.d.ts +2 -1
- package/dist/server/app-bfcache-identity.js +1 -1
- package/dist/server/app-browser-action-result.d.ts +2 -1
- package/dist/server/app-browser-entry.js +106 -66
- package/dist/server/app-browser-error.d.ts +2 -1
- package/dist/server/app-browser-history-controller.d.ts +7 -5
- package/dist/server/app-browser-history-controller.js +93 -15
- package/dist/server/app-browser-hydration.d.ts +2 -1
- package/dist/server/app-browser-interception-context.d.ts +2 -1
- package/dist/server/app-browser-navigation-controller.d.ts +2 -2
- package/dist/server/app-browser-navigation-controller.js +16 -12
- package/dist/server/app-browser-popstate.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
- package/dist/server/app-browser-rsc-redirect.js +4 -4
- package/dist/server/app-browser-server-action-client.d.ts +4 -1
- package/dist/server/app-browser-server-action-client.js +4 -3
- package/dist/server/app-browser-state.d.ts +2 -4
- package/dist/server/app-browser-state.js +9 -4
- package/dist/server/app-browser-stream.d.ts +2 -1
- package/dist/server/app-browser-supplemental-refresh.js +16 -1
- package/dist/server/app-browser-visible-commit.d.ts +3 -2
- package/dist/server/app-browser-visible-commit.js +2 -12
- package/dist/server/app-client-reference-manifest.d.ts +31 -0
- package/dist/server/app-client-reference-manifest.js +46 -0
- package/dist/server/app-client-reference-preloader.d.ts +25 -5
- package/dist/server/app-client-reference-preloader.js +22 -7
- package/dist/server/app-elements-wire.d.ts +8 -39
- package/dist/server/app-elements-wire.js +4 -41
- package/dist/server/app-elements.d.ts +4 -2
- package/dist/server/app-elements.js +4 -2
- package/dist/server/app-fallback-renderer.d.ts +9 -2
- package/dist/server/app-fallback-renderer.js +4 -1
- package/dist/server/app-history-state.d.ts +4 -3
- package/dist/server/app-history-state.js +5 -2
- package/dist/server/app-inline-css-client.d.ts +2 -1
- package/dist/server/app-metadata-tracing.d.ts +2 -1
- package/dist/server/app-mounted-layouts.d.ts +21 -0
- package/dist/server/app-mounted-layouts.js +67 -0
- package/dist/server/app-optimistic-routing.d.ts +37 -2
- package/dist/server/app-optimistic-routing.js +75 -2
- package/dist/server/app-page-boundary-render.d.ts +20 -2
- package/dist/server/app-page-boundary-render.js +224 -40
- package/dist/server/app-page-boundary.d.ts +34 -5
- package/dist/server/app-page-boundary.js +41 -8
- package/dist/server/app-page-cache-finalizer.d.ts +14 -2
- package/dist/server/app-page-cache-finalizer.js +71 -30
- package/dist/server/app-page-cache-render.d.ts +10 -2
- package/dist/server/app-page-cache-render.js +14 -2
- package/dist/server/app-page-cache.d.ts +13 -1
- package/dist/server/app-page-cache.js +33 -11
- package/dist/server/app-page-dispatch.d.ts +39 -11
- package/dist/server/app-page-dispatch.js +236 -177
- package/dist/server/app-page-element-builder.d.ts +19 -3
- package/dist/server/app-page-element-builder.js +193 -71
- package/dist/server/app-page-execution.d.ts +43 -51
- package/dist/server/app-page-execution.js +205 -92
- package/dist/server/app-page-head.d.ts +108 -3
- package/dist/server/app-page-head.js +337 -154
- package/dist/server/app-page-http-access-fallback-metadata.d.ts +49 -2
- package/dist/server/app-page-http-access-fallback-metadata.js +77 -2
- package/dist/server/app-page-layout-gate.d.ts +35 -0
- package/dist/server/app-page-layout-gate.js +50 -0
- package/dist/server/app-page-method.d.ts +2 -1
- package/dist/server/app-page-params.d.ts +0 -1
- package/dist/server/app-page-params.js +1 -14
- package/dist/server/app-page-probe.d.ts +5 -22
- package/dist/server/app-page-probe.js +4 -37
- package/dist/server/app-page-render-identity.d.ts +2 -1
- package/dist/server/app-page-render.d.ts +9 -13
- package/dist/server/app-page-render.js +108 -214
- package/dist/server/app-page-request.d.ts +15 -4
- package/dist/server/app-page-request.js +2 -2
- package/dist/server/app-page-response.js +3 -3
- package/dist/server/app-page-route-wiring.d.ts +65 -8
- package/dist/server/app-page-route-wiring.js +259 -103
- package/dist/server/app-page-rsc-render-status.d.ts +29 -2
- package/dist/server/app-page-rsc-render-status.js +121 -13
- package/dist/server/app-page-search-params-observation.d.ts +7 -2
- package/dist/server/app-page-search-params-observation.js +8 -1
- package/dist/server/app-page-segment-plan.d.ts +2 -1
- package/dist/server/app-page-stream.d.ts +33 -1
- package/dist/server/app-page-stream.js +25 -6
- package/dist/server/app-pages-bridge.d.ts +6 -1
- package/dist/server/app-pages-bridge.js +7 -3
- package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
- package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
- package/dist/server/app-prerender-endpoints.d.ts +2 -1
- package/dist/server/app-prerender-static-params.d.ts +2 -1
- package/dist/server/app-render-dependency.d.ts +21 -4
- package/dist/server/app-render-dependency.js +100 -33
- package/dist/server/app-request-stage-dispatch.js +1 -1
- package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
- package/dist/server/app-response-stage-entry.d.ts +2 -1
- package/dist/server/app-route-handler-cache.d.ts +2 -1
- package/dist/server/app-route-handler-cache.js +2 -2
- package/dist/server/app-route-handler-dispatch.d.ts +2 -1
- package/dist/server/app-route-handler-dispatch.js +15 -10
- package/dist/server/app-route-handler-execution.d.ts +2 -1
- package/dist/server/app-route-handler-execution.js +8 -3
- package/dist/server/app-route-handler-policy.d.ts +1 -1
- package/dist/server/app-route-handler-policy.js +3 -3
- package/dist/server/app-route-handler-response.d.ts +2 -1
- package/dist/server/app-route-handler-response.js +1 -1
- package/dist/server/app-route-handler-runtime.d.ts +2 -1
- package/dist/server/app-route-handler-runtime.js +17 -4
- package/dist/server/app-route-module-loader.d.ts +18 -1
- package/dist/server/app-route-module-loader.js +8 -0
- package/dist/server/app-route-tree-prefetch.d.ts +2 -1
- package/dist/server/app-rsc-cache-busting.d.ts +2 -2
- package/dist/server/app-rsc-cache-busting.js +4 -4
- package/dist/server/app-rsc-error-handler.d.ts +4 -2
- package/dist/server/app-rsc-error-handler.js +9 -1
- package/dist/server/app-rsc-errors.d.ts +10 -1
- package/dist/server/app-rsc-errors.js +8 -1
- package/dist/server/app-rsc-handler.d.ts +7 -6
- package/dist/server/app-rsc-handler.js +36 -34
- package/dist/server/app-rsc-request-normalization.d.ts +0 -4
- package/dist/server/app-rsc-request-normalization.js +1 -4
- package/dist/server/app-rsc-response-finalizer.d.ts +2 -1
- package/dist/server/app-rsc-response-finalizer.js +2 -2
- package/dist/server/app-rsc-response-stage.js +5 -3
- package/dist/server/app-rsc-route-matching.d.ts +38 -1
- package/dist/server/app-rsc-route-matching.js +24 -0
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-segment-config.js +1 -14
- package/dist/server/app-server-action-execution.d.ts +5 -2
- package/dist/server/app-server-action-execution.js +10 -7
- package/dist/server/app-ssr-entry.d.ts +8 -0
- package/dist/server/app-ssr-entry.js +98 -50
- package/dist/server/app-ssr-error-meta.d.ts +2 -1
- package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
- package/dist/server/app-ssr-stream.d.ts +22 -10
- package/dist/server/app-ssr-stream.js +300 -68
- package/dist/server/app-static-generation.d.ts +2 -1
- package/dist/server/app-streamed-client-references.d.ts +39 -0
- package/dist/server/app-streamed-client-references.js +156 -0
- package/dist/server/app-visited-response-cache.d.ts +38 -2
- package/dist/server/app-visited-response-cache.js +46 -5
- package/dist/server/app-worker-stages.d.ts +27 -4
- package/dist/server/app-worker-stages.js +45 -6
- package/dist/server/artifact-compatibility.d.ts +2 -2
- package/dist/server/artifact-compatibility.js +1 -10
- package/dist/server/bfcache-identity.d.ts +2 -1
- package/dist/server/cache-headers.d.ts +2 -1
- package/dist/server/cache-proof.d.ts +1 -115
- package/dist/server/cache-proof.js +1 -544
- package/dist/server/cacheability-request.d.ts +2 -1
- package/dist/server/cacheability-request.js +13 -8
- package/dist/server/config-headers.d.ts +2 -1
- package/dist/server/csp.d.ts +2 -1
- package/dist/server/default-global-not-found-module.d.ts +2 -1
- package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
- package/dist/server/default-http-access-fallback-modules.js +31 -0
- package/dist/server/defer-until-stream-consumed.d.ts +34 -0
- package/dist/server/defer-until-stream-consumed.js +154 -21
- package/dist/server/dev-lockfile.d.ts +32 -2
- package/dist/server/dev-lockfile.js +46 -2
- package/dist/server/dev-module-runner.d.ts +2 -1
- package/dist/server/dev-server.js +14 -6
- package/dist/server/fetch-handler.js +1 -2
- package/dist/server/file-based-metadata.d.ts +2 -1
- package/dist/server/framework-tracer.d.ts +2 -1
- package/dist/server/headers.d.ts +6 -3
- package/dist/server/headers.js +9 -5
- package/dist/server/html.d.ts +1 -0
- package/dist/server/html.js +19 -1
- package/dist/server/http-conditional.d.ts +2 -1
- package/dist/server/http-error-responses.d.ts +2 -1
- package/dist/server/implicit-tags.d.ts +2 -1
- package/dist/server/isr-cache.d.ts +8 -2
- package/dist/server/isr-cache.js +26 -1
- package/dist/server/metadata-route-build-data.d.ts +2 -1
- package/dist/server/metadata-route-build-data.js +1 -1
- package/dist/server/metadata-route-response.d.ts +2 -1
- package/dist/server/metadata-route-response.js +32 -15
- package/dist/server/metadata-routes.d.ts +2 -1
- package/dist/server/middleware-runtime.d.ts +2 -1
- package/dist/server/multi-stage.d.ts +52 -11
- package/dist/server/multi-stage.js +13 -1
- package/dist/server/navigation-planner.js +1 -1
- package/dist/server/navigation-trace.d.ts +2 -1
- package/dist/server/next-error-digest.d.ts +2 -1
- package/dist/server/nitro-public-files-plugin.d.ts +2 -1
- package/dist/server/nitro-public-files.d.ts +2 -1
- package/dist/server/opentelemetry-api.d.ts +2 -1
- package/dist/server/operation-token.d.ts +2 -1
- package/dist/server/pages-api-route.d.ts +2 -1
- package/dist/server/pages-api-route.js +28 -19
- package/dist/server/pages-asset-tags.d.ts +2 -1
- package/dist/server/pages-body-parser-config.d.ts +2 -1
- package/dist/server/pages-client-assets.d.ts +4 -0
- package/dist/server/pages-data-route.d.ts +2 -1
- package/dist/server/pages-document-asset-props.d.ts +2 -1
- package/dist/server/pages-document-initial-props.d.ts +2 -1
- package/dist/server/pages-execution-tracing.d.ts +2 -1
- package/dist/server/pages-execution-tracing.js +1 -1
- package/dist/server/pages-get-initial-props.d.ts +2 -1
- package/dist/server/pages-media-type.d.ts +21 -1
- package/dist/server/pages-media-type.js +69 -5
- package/dist/server/pages-node-compat.js +52 -27
- package/dist/server/pages-page-data.d.ts +7 -1
- package/dist/server/pages-page-data.js +35 -12
- package/dist/server/pages-page-handler.d.ts +3 -2
- package/dist/server/pages-page-handler.js +27 -27
- package/dist/server/pages-page-method.d.ts +2 -1
- package/dist/server/pages-page-response.d.ts +2 -1
- package/dist/server/pages-preview.d.ts +2 -1
- package/dist/server/pages-readiness.d.ts +2 -1
- package/dist/server/pages-request-pipeline.d.ts +10 -1
- package/dist/server/pages-request-pipeline.js +6 -7
- package/dist/server/pages-request-stage-entry.d.ts +2 -1
- package/dist/server/pages-request-stage-entry.js +14 -12
- package/dist/server/pages-response-stage-entry.d.ts +2 -1
- package/dist/server/pages-response-stage-entry.js +9 -3
- package/dist/server/pages-route-data-kind.d.ts +2 -1
- package/dist/server/prerender-cache-life-header.d.ts +2 -1
- package/dist/server/prerender-route-params.d.ts +2 -1
- package/dist/server/prod-server.js +14 -4
- package/dist/server/request-log.d.ts +2 -1
- package/dist/server/request-pipeline.d.ts +6 -0
- package/dist/server/request-pipeline.js +21 -1
- package/dist/server/request-tracing.d.ts +2 -1
- package/dist/server/request-tracing.js +1 -1
- package/dist/server/response-start-tracing.js +7 -29
- package/dist/server/rsc-render-stream.d.ts +4 -0
- package/dist/server/rsc-render-stream.js +25 -0
- package/dist/server/seed-cache.d.ts +2 -1
- package/dist/server/seed-cache.js +1 -1
- package/dist/server/shared-cache-identity.d.ts +23 -0
- package/dist/server/shared-cache-identity.js +36 -0
- package/dist/server/static-file-cache.d.ts +2 -1
- package/dist/server/static-file-cache.js +1 -0
- package/dist/server/worker-revalidation-context.d.ts +2 -1
- package/dist/server/worker-stages.d.ts +18 -4
- package/dist/server/worker-stages.js +23 -4
- package/dist/shims/app.d.ts +2 -1
- package/dist/shims/cache-callable-runtime.d.ts +2 -1
- package/dist/shims/cache-handler.d.ts +8 -3
- package/dist/shims/cache-handler.js +31 -11
- package/dist/shims/cache-request-state.d.ts +17 -20
- package/dist/shims/cache-request-state.js +16 -21
- package/dist/shims/cache-runtime.js +27 -11
- package/dist/shims/cache.d.ts +8 -7
- package/dist/shims/cache.js +17 -19
- package/dist/shims/cacheability-classification.d.ts +2 -0
- package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
- package/dist/shims/caught-not-found-boundaries.js +48 -0
- package/dist/shims/cdn-cache.d.ts +22 -5
- package/dist/shims/cdn-purge-routes.d.ts +2 -1
- package/dist/shims/client-locale.js +2 -1
- package/dist/shims/client-page-root.d.ts +2 -1
- package/dist/shims/client-page-root.js +2 -2
- package/dist/shims/config.d.ts +2 -1
- package/dist/shims/default-forbidden.d.ts +4 -0
- package/dist/shims/default-forbidden.js +18 -0
- package/dist/shims/default-not-found.d.ts +0 -5
- package/dist/shims/default-not-found.js +5 -41
- package/dist/shims/default-unauthorized.d.ts +4 -0
- package/dist/shims/default-unauthorized.js +18 -0
- package/dist/shims/dynamic.js +9 -6
- package/dist/shims/error-boundary.d.ts +39 -3
- package/dist/shims/error-boundary.js +33 -18
- package/dist/shims/fetch-cache-state.d.ts +5 -1
- package/dist/shims/fetch-cache-state.js +1 -3
- package/dist/shims/fetch-cache.d.ts +2 -1
- package/dist/shims/fetch-cache.js +34 -24
- package/dist/shims/font-google.js +1 -2
- package/dist/shims/font-utils.d.ts +3 -2
- package/dist/shims/font-utils.js +5 -3
- package/dist/shims/form.js +3 -3
- package/dist/shims/headers.d.ts +8 -23
- package/dist/shims/headers.js +17 -67
- package/dist/shims/http-access-error-fallback.d.ts +7 -0
- package/dist/shims/http-access-error-fallback.js +47 -0
- package/dist/shims/image.d.ts +1 -22
- package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
- package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
- package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
- package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
- package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
- package/dist/shims/internal/client-reference-loader.d.ts +7 -0
- package/dist/shims/internal/client-reference-loader.js +91 -0
- package/dist/shims/internal/cookie-serialize.d.ts +2 -1
- package/dist/shims/internal/cookies.js +1 -2
- package/dist/shims/internal/headers-state.d.ts +2 -0
- package/dist/shims/internal/headers-state.js +6 -1
- package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +2 -1
- package/dist/shims/internal/interpolate-as.d.ts +2 -1
- package/dist/shims/internal/navigation-untracked.js +1 -1
- package/dist/shims/internal/pages-data-target.d.ts +2 -1
- package/dist/shims/internal/pages-data-url.d.ts +2 -1
- package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
- package/dist/shims/link.js +197 -52
- package/dist/shims/metadata.d.ts +52 -29
- package/dist/shims/metadata.js +142 -42
- package/dist/shims/navigation-errors.d.ts +2 -1
- package/dist/shims/navigation-server.js +1 -1
- package/dist/shims/navigation.d.ts +95 -8
- package/dist/shims/navigation.js +255 -47
- package/dist/shims/navigation.react-server.js +2 -2
- package/dist/shims/pages-router-runtime.d.ts +2 -1
- package/dist/shims/ppr-fallback-shell.d.ts +2 -1
- package/dist/shims/request-state-types.d.ts +2 -2
- package/dist/shims/router.js +14 -3
- package/dist/shims/slot.d.ts +12 -0
- package/dist/shims/slot.js +37 -9
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +5 -6
- package/dist/typegen.d.ts +2 -1
- package/dist/utils/cache-control-metadata.d.ts +5 -0
- package/dist/utils/cache-control-metadata.js +9 -1
- package/dist/utils/client-build-manifest.d.ts +4 -1
- package/dist/utils/client-build-manifest.js +9 -2
- package/dist/utils/client-entry-manifest.d.ts +13 -0
- package/dist/utils/client-entry-manifest.js +20 -1
- package/dist/utils/client-reference-chunks.d.ts +45 -0
- package/dist/utils/client-reference-chunks.js +30 -0
- package/dist/utils/client-runtime-metadata.d.ts +9 -1
- package/dist/utils/client-runtime-metadata.js +40 -9
- package/dist/utils/compare.d.ts +9 -0
- package/dist/utils/compare.js +15 -1
- package/dist/utils/lazy-chunks.d.ts +14 -0
- package/dist/utils/lazy-chunks.js +27 -1
- package/dist/utils/middleware-request-headers.d.ts +2 -1
- package/dist/utils/project.d.ts +4 -3
- package/dist/utils/project.js +12 -17
- package/dist/utils/query.d.ts +2 -1
- package/dist/utils/regex.d.ts +5 -0
- package/dist/utils/regex.js +11 -1
- package/dist/utils/text-stream.d.ts +10 -5
- package/dist/utils/text-stream.js +6 -6
- package/dist/utils/vite-cli-invocation.d.ts +2 -1
- package/package.json +6 -5
- package/dist/build/layout-classification-types.d.ts +0 -60
- package/dist/build/layout-classification-types.js +0 -1
- package/dist/build/layout-classification.d.ts +0 -61
- package/dist/build/layout-classification.js +0 -98
- package/dist/build/route-classification-injector.d.ts +0 -32
- package/dist/build/route-classification-injector.js +0 -59
- package/dist/build/route-classification-manifest.d.ts +0 -53
- package/dist/build/route-classification-manifest.js +0 -143
- package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
- package/dist/server/app-browser-client-reuse-manifest.d.ts +0 -10
- package/dist/server/app-browser-client-reuse-manifest.js +0 -101
- package/dist/server/app-layout-param-observation.d.ts +0 -41
- package/dist/server/app-layout-param-observation.js +0 -168
- package/dist/server/client-reuse-manifest.d.ts +0 -102
- package/dist/server/client-reuse-manifest.js +0 -209
- package/dist/server/default-not-found-module.d.ts +0 -19
- package/dist/server/default-not-found-module.js +0 -18
- package/dist/server/rsc-stream-hints.d.ts +0 -21
- package/dist/server/rsc-stream-hints.js +0 -227
- package/dist/server/skip-cache-proof.d.ts +0 -60
- package/dist/server/skip-cache-proof.js +0 -168
- package/dist/server/static-layout-client-reuse-proof.d.ts +0 -13
- package/dist/server/static-layout-client-reuse-proof.js +0 -33
- package/dist/utils/sorted-array.d.ts +0 -7
- package/dist/utils/sorted-array.js +0 -20
|
@@ -3,7 +3,7 @@ import { requestContextFromRequest } from "../config/request-context.js";
|
|
|
3
3
|
import { hasBasePath, stripBasePath } from "../utils/base-path.js";
|
|
4
4
|
import { VINEXT_CACHEABILITY_PROBE_QUERY_PARAM, VINEXT_EXPECTED_WORKER_VERSION_HEADER } from "./headers.js";
|
|
5
5
|
import { notFoundStaticAssetResponse } from "./http-error-responses.js";
|
|
6
|
-
import { attachRequestCfMetadata,
|
|
6
|
+
import { attachRequestCfMetadata, cloneRequestWithUrl, filterInternalHeaders, guardProtocolRelativeUrl, haveSameHeaders, withRequestHeaders } from "./request-pipeline.js";
|
|
7
7
|
import { assetPrefixPathname, isNextStaticPath } from "../utils/asset-prefix.js";
|
|
8
8
|
import { normalizePathnameForRouteMatchStrict } from "../routing/utils.js";
|
|
9
9
|
import { runWithExecutionContext } from "../shims/request-context.js";
|
|
@@ -22,7 +22,8 @@ import { resolveClientBuildFile } from "./client-build-files.js";
|
|
|
22
22
|
import { createWorkerRevalidationContext } from "./worker-revalidation-context.js";
|
|
23
23
|
import { createWorkerPrerenderDiscoveryContext, createWorkerPrerenderReadinessResponse, isWorkerPrerenderDiscoveryPath } from "./worker-prerender-discovery.js";
|
|
24
24
|
import { getPagesResponseStageCacheDisposition } from "./pages-response-stage.js";
|
|
25
|
-
import "./
|
|
25
|
+
import { adapterUsesSharedCacheIdentity, pagesCacheIdentityOrigin, pagesPageSharesAcrossHosts } from "./shared-cache-identity.js";
|
|
26
|
+
import { createSharedPagesPageCacheIdentity } from "./worker-stages.js";
|
|
26
27
|
import { consumePagesResponseStagePolicyOwner, prependResponseStageAdditiveHeaders, withResponseStageVary, withoutResponseStageVary } from "./response-stage-policy.js";
|
|
27
28
|
import * as configuredCdnCacheAdapters from "virtual:vinext-cdn-cache-adapter";
|
|
28
29
|
import { registerConfiguredImageOptimizer } from "virtual:vinext-image-adapters";
|
|
@@ -34,11 +35,6 @@ import * as pagesEntry from "virtual:vinext-pages-request-entry";
|
|
|
34
35
|
* The public pages-router-entry delegates here. Multi-stage hosts import the
|
|
35
36
|
* named request handler directly and provide their response-stage dispatcher.
|
|
36
37
|
*/
|
|
37
|
-
function haveSameHeaders(first, second) {
|
|
38
|
-
const firstEntries = [...first];
|
|
39
|
-
const secondEntries = [...second];
|
|
40
|
-
return firstEntries.length === secondEntries.length && firstEntries.every(([name, value], index) => name === secondEntries[index]?.[0] && value === secondEntries[index]?.[1]);
|
|
41
|
-
}
|
|
42
38
|
function captureOuterResponsePolicyHeaders(stagedHeaders, transportedPolicyHeaders) {
|
|
43
39
|
return captureCdnResponsePolicyOverrides(stagedHeaders, new Headers(transportedPolicyHeaders ?? []));
|
|
44
40
|
}
|
|
@@ -151,7 +147,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
151
147
|
const expectedWorkerVersion = request.headers.get(VINEXT_EXPECTED_WORKER_VERSION_HEADER);
|
|
152
148
|
if (expectedWorkerVersion) filteredHeaders.set(VINEXT_EXPECTED_WORKER_VERSION_HEADER, expectedWorkerVersion);
|
|
153
149
|
}
|
|
154
|
-
request =
|
|
150
|
+
request = withRequestHeaders(request, filteredHeaders);
|
|
155
151
|
const url = new URL(request.url);
|
|
156
152
|
let pathname = url.pathname;
|
|
157
153
|
if (ctx.isPrerenderPathDiscovery && isWorkerPrerenderDiscoveryPath(pathname)) return trackedDispatchResponseStage(request, {
|
|
@@ -162,7 +158,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
162
158
|
resolvedRoutePathname: pathname
|
|
163
159
|
},
|
|
164
160
|
kind: "pages-prerender-discovery",
|
|
165
|
-
protocolVersion:
|
|
161
|
+
protocolVersion: 6,
|
|
166
162
|
requestHost: url.host,
|
|
167
163
|
stagedHeaders: null
|
|
168
164
|
}, { cache: "bypass" }, env, ctx);
|
|
@@ -247,6 +243,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
247
243
|
stagedHeaders
|
|
248
244
|
});
|
|
249
245
|
const isSharedStaticPage = cache === "shared" && matchedPage?.route.dataKind === "static";
|
|
246
|
+
const sharedAcrossHosts = (cache === "shared" || probeMode !== null) && pagesPageSharesAcrossHosts(matchedPage?.route) && adapterUsesSharedCacheIdentity();
|
|
250
247
|
const transportedPolicyHeaders = isSharedStaticPage ? withoutResponseStageVary(responseStagePolicyHeaders) : withResponseStageVary(responseStagePolicyHeaders, stagedHeaders?.get("Vary"));
|
|
251
248
|
const responseStageProps = () => ({
|
|
252
249
|
buildId: pagesEntry.buildId,
|
|
@@ -257,17 +254,22 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
257
254
|
resolvedRoutePathname: new URL(resolvedUrl, req.url).pathname
|
|
258
255
|
},
|
|
259
256
|
kind: "pages-page",
|
|
260
|
-
protocolVersion:
|
|
257
|
+
protocolVersion: 6,
|
|
261
258
|
requestHost: new URL(req.url).host,
|
|
262
259
|
renderOptions: isDataReq ? {
|
|
263
260
|
...options,
|
|
264
261
|
originalUrl: originalRenderUrl
|
|
265
262
|
} : options ?? null,
|
|
266
263
|
resolvedUrl,
|
|
264
|
+
sharedAcrossHosts,
|
|
267
265
|
stagedHeaders: isSharedStaticPage ? null : [...stagedHeaders ?? new Headers()]
|
|
268
266
|
});
|
|
269
267
|
const isHeadRequest = req.method.toUpperCase() === "HEAD";
|
|
270
|
-
const
|
|
268
|
+
const props = responseStageProps();
|
|
269
|
+
const responsePromise = trackedDispatchResponseStage(stageRequest, props, cache === "shared" && sharedAcrossHosts ? {
|
|
270
|
+
cache,
|
|
271
|
+
cacheIdentity: createSharedPagesPageCacheIdentity(stageRequest, props, pagesCacheIdentityOrigin(stageRequest.url, i18nConfig))
|
|
272
|
+
} : { cache }, env, ctx).then((response) => {
|
|
271
273
|
const consumed = consumePagesResponseStagePolicyOwner(response);
|
|
272
274
|
if (cache === "shared") {
|
|
273
275
|
if (isSharedStaticPage && stagedHeaders) prependResponseStageAdditiveHeaders(consumed.response.headers, stagedHeaders);
|
|
@@ -297,7 +299,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
297
299
|
resolvedRoutePathname: new URL(apiUrl, req.url).pathname
|
|
298
300
|
},
|
|
299
301
|
kind: "pages-api",
|
|
300
|
-
protocolVersion:
|
|
302
|
+
protocolVersion: 6,
|
|
301
303
|
requestHost: new URL(req.url).host,
|
|
302
304
|
stagedHeaders: [...stagedHeaders]
|
|
303
305
|
});
|
|
@@ -8,4 +8,5 @@ type PagesWorkerExecutionContext = ExecutionContextLike & {
|
|
|
8
8
|
};
|
|
9
9
|
export declare function renderPagesResponse(request: Request, env: PagesWorkerEnv | undefined, platformCtx: PagesWorkerExecutionContext | undefined, props: WorkerResponseStageProps, stagedHeaders?: Headers, dispatchRequestStage?: VinextRequestStageTransport, dispatchOptions?: VinextResponseStageDispatchOptions): Promise<Response>;
|
|
10
10
|
export declare function handleResponseStage(request: Request, env: PagesWorkerEnv | undefined, ctx: PagesWorkerExecutionContext | undefined, props: WorkerResponseStageProps, dispatchRequestStage: VinextRequestStageTransport, options: VinextResponseStageDispatchOptions): Promise<Response>;
|
|
11
|
-
//#endregion
|
|
11
|
+
//#endregion
|
|
12
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
2
|
import "../shims/unified-request-context.js";
|
|
3
3
|
import { runWithExecutionContext } from "../shims/request-context.js";
|
|
4
|
-
import { beginRouteCacheability } from "../shims/cacheability-classification.js";
|
|
4
|
+
import { beginRouteCacheability, markRouteCacheabilityDynamic } from "../shims/cacheability-classification.js";
|
|
5
5
|
import { validateCdnRequest } from "./cache-control.js";
|
|
6
6
|
import { createWorkerRevalidationContext } from "./worker-revalidation-context.js";
|
|
7
7
|
import { createWorkerPrerenderReadinessResponse } from "./worker-prerender-discovery.js";
|
|
@@ -57,6 +57,12 @@ async function renderPagesResponse(request, env, platformCtx, props, stagedHeade
|
|
|
57
57
|
...ctx,
|
|
58
58
|
isStoredEntryRegeneration: true
|
|
59
59
|
};
|
|
60
|
+
let runtimeDataKind;
|
|
61
|
+
const runtimeDataKindIsRequestTime = () => {
|
|
62
|
+
if (props.kind !== "pages-page") return false;
|
|
63
|
+
runtimeDataKind ??= pagesEntry.getRuntimePageDataKind(props.resolvedUrl, request);
|
|
64
|
+
return runtimeDataKind === "server" || runtimeDataKind === "initial";
|
|
65
|
+
};
|
|
60
66
|
const render = async (cacheabilityContext) => {
|
|
61
67
|
if (props.kind === "pages-prerender-discovery") {
|
|
62
68
|
const readinessResponse = createWorkerPrerenderReadinessResponse(cacheabilityContext, request);
|
|
@@ -77,6 +83,7 @@ async function renderPagesResponse(request, env, platformCtx, props, stagedHeade
|
|
|
77
83
|
});
|
|
78
84
|
}
|
|
79
85
|
if (typeof pagesEntry.renderPage !== "function") return new Response("This page could not be found", { status: 404 });
|
|
86
|
+
if (props.sharedAcrossHosts && runtimeDataKindIsRequestTime()) runWithExecutionContext(cacheabilityContext, () => markRouteCacheabilityDynamic("getInitialProps render shares a cache entry across hosts"));
|
|
80
87
|
return stripStreamedHtmlContentLength(await pagesEntry.renderPage(request, props.resolvedUrl, null, cacheabilityContext, renderHeaders, props.renderOptions ?? void 0, initialResponseHeaders));
|
|
81
88
|
};
|
|
82
89
|
const handle = async (cacheabilityContext) => stripInheritedResponseStageCookies(await render(cacheabilityContext), renderHeaders);
|
|
@@ -94,9 +101,8 @@ async function renderPagesResponse(request, env, platformCtx, props, stagedHeade
|
|
|
94
101
|
resolvedRoutePathname: props.cacheability.resolvedRoutePathname
|
|
95
102
|
}, handle);
|
|
96
103
|
if (props.kind !== "pages-page") return response;
|
|
97
|
-
const runtimeDataKind = pagesEntry.getRuntimePageDataKind(props.resolvedUrl, request);
|
|
98
104
|
const headers = new Headers(response.headers);
|
|
99
|
-
headers.set(PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER,
|
|
105
|
+
headers.set(PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER, runtimeDataKindIsRequestTime() ? "request-time" : "static");
|
|
100
106
|
return preserveFullyBufferedBodyMetadata(response, new Response(response.body, {
|
|
101
107
|
headers,
|
|
102
108
|
status: response.status,
|
|
@@ -15,4 +15,5 @@ type AppComponent = {
|
|
|
15
15
|
} | null;
|
|
16
16
|
/** Classify loaded Pages modules after HOCs and re-exports have been evaluated. */
|
|
17
17
|
export declare function getRuntimePagesDataKind(pageModule: PagesModule, appComponent: AppComponent): RuntimePagesDataKind;
|
|
18
|
-
//#endregion
|
|
18
|
+
//#endregion
|
|
19
|
+
export {};
|
|
@@ -7,4 +7,5 @@ type PrerenderCacheLife = {
|
|
|
7
7
|
};
|
|
8
8
|
export declare function applyPrerenderCacheLifeHeader(headers: Headers, requestCacheLife: PrerenderCacheLife | null | undefined): void;
|
|
9
9
|
export declare function applyPrerenderCacheTagsHeader(headers: Headers, cacheTags: readonly string[]): void;
|
|
10
|
-
//#endregion
|
|
10
|
+
//#endregion
|
|
11
|
+
export {};
|
|
@@ -26,4 +26,5 @@ export declare function readTrustedPrerenderStateFromHeaders(headers: Headers, e
|
|
|
26
26
|
export declare function readTrustedPrerenderRouteParams(request: Request): PrerenderRouteParamsPayload | null;
|
|
27
27
|
export declare function matchPrerenderRouteParamsPayload(payload: PrerenderRouteParamsPayload | null, routePattern: string, params: PrerenderRouteParams): PrerenderRouteParamsRouteMatch | null;
|
|
28
28
|
export declare function encodePrerenderRouteParams(pattern: string, params: PrerenderRouteParams, fallbackParamNames?: readonly string[]): PrerenderRouteParamsPayload | null;
|
|
29
|
-
//#endregion
|
|
29
|
+
//#endregion
|
|
30
|
+
export {};
|
|
@@ -31,7 +31,6 @@ import { readPrerenderSecret, readServerCompress } from "../build/server-manifes
|
|
|
31
31
|
import { readTrustedPrerenderRouteParamsFromHeaders, serializePrerenderRouteParamsHeader } from "./prerender-route-params.js";
|
|
32
32
|
import { resolveClientBuildFile } from "./client-build-files.js";
|
|
33
33
|
import { registerPrerenderCloudflareLoader } from "../build/prerender-cloudflare-loader.js";
|
|
34
|
-
import { seedMemoryCacheFromPrerender } from "./seed-cache.js";
|
|
35
34
|
import { negotiateEncoding, parseAcceptedEncodings, selectContentEncoding } from "./accept-encoding.js";
|
|
36
35
|
import { COMPRESS_THRESHOLD, hasNoTransform, isCompressibleContentType, parseContentLengthHeader, resolveResponseCompression } from "./response-compression.js";
|
|
37
36
|
import { ifRangeAllowsRange, parseByteRange } from "./http-range.js";
|
|
@@ -329,6 +328,7 @@ function installClientBuildManifestGlobals(clientDir, assetBase, assetPrefix, cr
|
|
|
329
328
|
});
|
|
330
329
|
setPagesClientAssets({
|
|
331
330
|
appBootstrapPreinitModules: metadata.appBootstrapPreinitModules,
|
|
331
|
+
appRouteManifestModule: metadata.appRouteManifestModule,
|
|
332
332
|
lazyChunks: metadata.lazyChunks,
|
|
333
333
|
dynamicPreloads: metadata.dynamicPreloads,
|
|
334
334
|
crossOrigin
|
|
@@ -904,6 +904,7 @@ function waitForNodeResponseCompletion(res) {
|
|
|
904
904
|
*/
|
|
905
905
|
async function startProdServer(options = {}) {
|
|
906
906
|
installSocketErrorBackstop({ runningServer: options.purpose !== "prerender" });
|
|
907
|
+
if (options.purpose !== "prerender" && !process.env.NODE_ENV) Reflect.set(process.env, "NODE_ENV", "production");
|
|
907
908
|
const { port = process.env.PORT ? parseInt(process.env.PORT) : 3e3, host = "0.0.0.0", outDir = path.resolve("dist"), rscEntryPath: explicitRscEntryPath, serverDir: explicitServerDir, serverEntryPath: explicitServerEntryPath, noCompression = false, purpose, silent = false } = options;
|
|
908
909
|
if (purpose === "prerender") registerPrerenderCloudflareLoader();
|
|
909
910
|
const compress = !noCompression;
|
|
@@ -1007,15 +1008,19 @@ function resolveAppRouterHandler(entry) {
|
|
|
1007
1008
|
console.error("[vinext] App Router entry must export either a default handler function or a Worker-style default export with fetch()");
|
|
1008
1009
|
process.exit(1);
|
|
1009
1010
|
}
|
|
1011
|
+
async function seedMemoryCacheFromPrerenderFallback(serverDir) {
|
|
1012
|
+
const { seedMemoryCacheFromPrerender } = await import("./seed-cache.js");
|
|
1013
|
+
return seedMemoryCacheFromPrerender(serverDir);
|
|
1014
|
+
}
|
|
1010
1015
|
function isAppRouterPrerenderSeederExport(value) {
|
|
1011
1016
|
return typeof value === "function";
|
|
1012
1017
|
}
|
|
1013
1018
|
function resolveAppRouterPrerenderSeeder(entryModule) {
|
|
1014
|
-
if (typeof entryModule !== "object" || entryModule === null) return
|
|
1019
|
+
if (typeof entryModule !== "object" || entryModule === null) return seedMemoryCacheFromPrerenderFallback;
|
|
1015
1020
|
const seedExport = Object.getOwnPropertyDescriptor(entryModule, "seedMemoryCacheFromPrerender")?.value;
|
|
1016
1021
|
if (!isAppRouterPrerenderSeederExport(seedExport)) {
|
|
1017
1022
|
if (process.env.NEXT_PRIVATE_DEBUG_CACHE) console.debug("[vinext] ISR: using fallback prerender cache seeder");
|
|
1018
|
-
return
|
|
1023
|
+
return seedMemoryCacheFromPrerenderFallback;
|
|
1019
1024
|
}
|
|
1020
1025
|
if (process.env.NEXT_PRIVATE_DEBUG_CACHE) console.debug("[vinext] ISR: using App Router entry prerender cache seeder");
|
|
1021
1026
|
return async (serverDir) => {
|
|
@@ -1091,6 +1096,7 @@ function installPagesClientAssets(options) {
|
|
|
1091
1096
|
setPagesClientAssets({
|
|
1092
1097
|
clientEntry: metadata.clientEntryFile,
|
|
1093
1098
|
appBootstrapPreinitModules: metadata.appBootstrapPreinitModules,
|
|
1099
|
+
appRouteManifestModule: metadata.appRouteManifestModule,
|
|
1094
1100
|
ssrManifest: Object.keys(ssrManifest).length > 0 ? ssrManifest : void 0,
|
|
1095
1101
|
sharedChunks: metadata.sharedChunks,
|
|
1096
1102
|
cssGraph: metadata.cssGraph,
|
|
@@ -1640,7 +1646,11 @@ async function createPagesRouterRequestHandler(options) {
|
|
|
1640
1646
|
...options,
|
|
1641
1647
|
originalUrl: originalRenderUrl
|
|
1642
1648
|
}, stagedHeaders?.has("Cache-Control") ? new Headers({ "Cache-Control": stagedHeaders.get("Cache-Control") }) : void 0) : null,
|
|
1643
|
-
handleApi: typeof handleApi === "function" ? (request, apiUrl
|
|
1649
|
+
handleApi: typeof handleApi === "function" ? (request, apiUrl, _ctx, stagedHeaders) => {
|
|
1650
|
+
stagedHeaders.delete("Content-Length");
|
|
1651
|
+
return handleApi(request, apiUrl, createNodeExecutionContext(), resolveTrustedNodeRevalidateOrigin(req, host, port), "node", stagedHeaders);
|
|
1652
|
+
} : null,
|
|
1653
|
+
handleApiAppliesStagedHeaders: true,
|
|
1644
1654
|
serveFilesystemRoute: async (requestPathname, stagedHeaders, phase, resolvedUrl, _request, resolvedPathnameHasBasePath) => {
|
|
1645
1655
|
if (resolvedPathnameHasBasePath && isImageOptimizationPath(requestPathname)) {
|
|
1646
1656
|
for (const [name, value] of Object.entries(stagedHeaders)) res.setHeader(name, value);
|
|
@@ -181,6 +181,12 @@ export declare function attachRequestCfMetadata(target: Request, source: Request
|
|
|
181
181
|
* a RequestInit with best-effort metadata.
|
|
182
182
|
*/
|
|
183
183
|
export declare function cloneRequestWithHeaders(request: Request, headers: Headers): Request;
|
|
184
|
+
export declare function haveSameHeaders(first: Headers, second: Headers): boolean;
|
|
185
|
+
/**
|
|
186
|
+
* `cloneRequestWithHeaders`, except that a native request whose headers
|
|
187
|
+
* already match is returned as is, so its body stays where it is.
|
|
188
|
+
*/
|
|
189
|
+
export declare function withRequestHeaders(request: Request, headers: Headers): Request;
|
|
184
190
|
/**
|
|
185
191
|
* Clone a Request while overriding the URL, preserving headers and metadata
|
|
186
192
|
* when possible.
|
|
@@ -407,6 +407,26 @@ function cloneRequestWithHeaders(request, headers) {
|
|
|
407
407
|
}
|
|
408
408
|
return attachRequestCfMetadata(cloned, request);
|
|
409
409
|
}
|
|
410
|
+
function haveSameHeaders(first, second) {
|
|
411
|
+
const firstEntries = [...first];
|
|
412
|
+
const secondEntries = [...second];
|
|
413
|
+
return firstEntries.length === secondEntries.length && firstEntries.every(([name, value], index) => name === secondEntries[index]?.[0] && value === secondEntries[index]?.[1]);
|
|
414
|
+
}
|
|
415
|
+
function isNativeRequest(request) {
|
|
416
|
+
try {
|
|
417
|
+
Reflect.get(Request.prototype, "url", request);
|
|
418
|
+
return true;
|
|
419
|
+
} catch {
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* `cloneRequestWithHeaders`, except that a native request whose headers
|
|
425
|
+
* already match is returned as is, so its body stays where it is.
|
|
426
|
+
*/
|
|
427
|
+
function withRequestHeaders(request, headers) {
|
|
428
|
+
return isNativeRequest(request) && haveSameHeaders(headers, request.headers) ? request : cloneRequestWithHeaders(request, headers);
|
|
429
|
+
}
|
|
410
430
|
/**
|
|
411
431
|
* Clone a Request while overriding the URL, preserving headers and metadata
|
|
412
432
|
* when possible.
|
|
@@ -444,4 +464,4 @@ function cloneRequestWithUrl(request, url) {
|
|
|
444
464
|
return attachRequestCfMetadata(cloned, request);
|
|
445
465
|
}
|
|
446
466
|
//#endregion
|
|
447
|
-
export { INTERNAL_HEADERS, VINEXT_INTERNAL_HEADERS, attachRequestCfMetadata, canonicalizeRequestPathname, canonicalizeRequestUrlPathname, cloneRequestWithHeaders, cloneRequestWithUrl, createStaticFileSignal, dropEmptyMiddlewareSetCookie, filterInternalHeaders, getRepeatedSlashRedirect, guardProtocolRelativeUrl, hasBasePath, isOpenRedirectShaped, isOriginAllowed, normalizeTrailingSlash, normalizeTrailingSlashPathname, processMiddlewareHeaders, resolvePublicFileRoute, sendRepeatedSlashRedirect, stripBasePath, validateCsrfOrigin, validateServerActionPayload };
|
|
467
|
+
export { INTERNAL_HEADERS, VINEXT_INTERNAL_HEADERS, attachRequestCfMetadata, canonicalizeRequestPathname, canonicalizeRequestUrlPathname, cloneRequestWithHeaders, cloneRequestWithUrl, createStaticFileSignal, dropEmptyMiddlewareSetCookie, filterInternalHeaders, getRepeatedSlashRedirect, guardProtocolRelativeUrl, hasBasePath, haveSameHeaders, isOpenRedirectShaped, isOriginAllowed, normalizeTrailingSlash, normalizeTrailingSlashPathname, processMiddlewareHeaders, resolvePublicFileRoute, sendRepeatedSlashRedirect, stripBasePath, validateCsrfOrigin, validateServerActionPayload, withRequestHeaders };
|
|
@@ -19,4 +19,5 @@ export declare function clearFrameworkRequestError(response: Response): Response
|
|
|
19
19
|
export declare function attachFrameworkRequestError(response: Response, error: unknown): Response;
|
|
20
20
|
export declare function consumeFrameworkRequestRoute(response: Response): Response;
|
|
21
21
|
export declare function traceFrameworkRequest<T>(input: RequestTraceInput<T>): Promise<T>;
|
|
22
|
-
//#endregion
|
|
22
|
+
//#endregion
|
|
23
|
+
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getOrCreateAls } from "../shims/internal/als-registry.js";
|
|
2
2
|
import { isFullyBufferedBody, markFullyBufferedBody, preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
3
|
+
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
3
4
|
import { VINEXT_TRACE_BUFFERED_BODY_HEADER, VINEXT_TRACE_ERROR_HEADER, VINEXT_TRACE_ROUTE_HEADER } from "./headers.js";
|
|
4
5
|
import { frameworkTracer } from "./tracer.js";
|
|
5
|
-
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
6
6
|
import { getResponseStartCompletion } from "./response-start-tracing.js";
|
|
7
7
|
//#region src/server/request-tracing.ts
|
|
8
8
|
const activeRequestTrace = getOrCreateAls("vinext.requestTracing.als");
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { preserveFullyBufferedBodyMetadata } from "./fully-buffered-response.js";
|
|
2
|
+
import { observeStreamConsumption } from "./defer-until-stream-consumed.js";
|
|
2
3
|
import { frameworkTracer } from "./tracer.js";
|
|
3
4
|
import { copyLinkHeaderProvenance } from "./app-response-header-provenance.js";
|
|
4
5
|
//#region src/server/response-start-tracing.ts
|
|
@@ -13,37 +14,14 @@ function createResponseStartSpanDescriptor() {
|
|
|
13
14
|
};
|
|
14
15
|
}
|
|
15
16
|
function traceResponseStartStream(stream, onSettled) {
|
|
16
|
-
const reader = stream.getReader();
|
|
17
17
|
const runInTraceContext = frameworkTracer.captureActiveContext();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const result = await reader.read();
|
|
23
|
-
if (result.done) {
|
|
24
|
-
onSettled();
|
|
25
|
-
controller.close();
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (!started) {
|
|
29
|
-
started = true;
|
|
30
|
-
runInTraceContext(() => frameworkTracer.trace(createResponseStartSpanDescriptor(), () => void 0));
|
|
31
|
-
onSettled();
|
|
32
|
-
}
|
|
33
|
-
controller.enqueue(result.value);
|
|
34
|
-
} catch (error) {
|
|
35
|
-
onSettled();
|
|
36
|
-
controller.error(error);
|
|
37
|
-
}
|
|
18
|
+
return observeStreamConsumption(stream, {
|
|
19
|
+
onStart() {
|
|
20
|
+
runInTraceContext(() => frameworkTracer.trace(createResponseStartSpanDescriptor(), () => void 0));
|
|
21
|
+
onSettled();
|
|
38
22
|
},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
await reader.cancel(reason);
|
|
42
|
-
} finally {
|
|
43
|
-
onSettled();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}, { highWaterMark: 0 });
|
|
23
|
+
onFlush: onSettled
|
|
24
|
+
});
|
|
47
25
|
}
|
|
48
26
|
function traceResponseStartWithCompletion(response) {
|
|
49
27
|
const existing = tracedResponses.get(response);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { deferUntilStreamConsumed } from "./defer-until-stream-consumed.js";
|
|
2
|
+
import { createRenderStreamCancellation } from "./app-render-abort-error.js";
|
|
3
|
+
//#region src/server/rsc-render-stream.ts
|
|
4
|
+
const noop = () => {};
|
|
5
|
+
function createRscRenderer(render) {
|
|
6
|
+
return (model, options) => {
|
|
7
|
+
const cancellation = createRenderStreamCancellation();
|
|
8
|
+
return deferUntilStreamConsumed(render(model, ignoreCancellationErrors(options, cancellation)), noop, void 0, cancellation.record);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/** A consumer cancelling the payload is not a render failure. */
|
|
12
|
+
function ignoreCancellationErrors(options, cancellation) {
|
|
13
|
+
if (!options || typeof options !== "object") return options;
|
|
14
|
+
const onError = Reflect.get(options, "onError");
|
|
15
|
+
if (typeof onError !== "function") return options;
|
|
16
|
+
return {
|
|
17
|
+
...options,
|
|
18
|
+
onError(error, ...rest) {
|
|
19
|
+
if (cancellation.isReason(error)) return void 0;
|
|
20
|
+
return Reflect.apply(onError, options, [error, ...rest]);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { createRscRenderer };
|
|
@@ -30,4 +30,5 @@ type PrerenderCacheSeedOptions = {
|
|
|
30
30
|
* @returns The number of routes seeded (0 if no manifest or no renderable routes).
|
|
31
31
|
*/
|
|
32
32
|
export declare function seedMemoryCacheFromPrerender(serverDir: string, options?: PrerenderCacheSeedOptions): Promise<number>;
|
|
33
|
-
//#endregion
|
|
33
|
+
//#endregion
|
|
34
|
+
export {};
|
|
@@ -2,8 +2,8 @@ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
|
|
|
2
2
|
import { appIsrCacheKey, appIsrFallbackShellKey, isrSet, isrSetPrerenderedAppPage } from "./isr-cache.js";
|
|
3
3
|
import { addPregeneratedConcretePath, addPregeneratedRoute, clearPregeneratedConcretePaths, normalizePregeneratedPathname } from "./pregenerated-concrete-paths.js";
|
|
4
4
|
import { getRenderedAppRoutes, getRenderedMetadataRoutes, isFallbackShellArtifactPath, readPrerenderManifest } from "./prerender-manifest.js";
|
|
5
|
-
import { buildAppPageCacheTags, buildAppRouteCacheTags } from "./app-page-cache.js";
|
|
6
5
|
import { getAppRouteOutputPath, getOutputPath, getRscOutputPath } from "../utils/prerender-output-paths.js";
|
|
6
|
+
import { buildAppPageCacheTags, buildAppRouteCacheTags } from "./app-page-cache.js";
|
|
7
7
|
import fs from "node:fs";
|
|
8
8
|
//#region src/server/seed-cache.ts
|
|
9
9
|
/**
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { NextI18nConfig } from "../config/next-config.js";
|
|
2
|
+
//#region src/server/shared-cache-identity.d.ts
|
|
3
|
+
/** The core cache identity the configured adapter keys shared dispatches by, if any. */
|
|
4
|
+
export declare function adapterSharedCacheIdentity(): "host-free" | "query-free" | null;
|
|
5
|
+
/** Whether the configured adapter keys shared dispatches by a core cache identity. */
|
|
6
|
+
export declare function adapterUsesSharedCacheIdentity(): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Whether a Pages page's response is one for every host, as Next.js serves a
|
|
9
|
+
* getStaticProps page and an automatically static page. A page without data
|
|
10
|
+
* functions is rendered per request when its getInitialProps or a custom
|
|
11
|
+
* _app's runs, and may read the host, so it keeps the host in its key.
|
|
12
|
+
*/
|
|
13
|
+
export declare function pagesPageSharesAcrossHosts(route: {
|
|
14
|
+
dataKind?: string;
|
|
15
|
+
runsInitialProps?: boolean;
|
|
16
|
+
} | null | undefined): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* The origin a shared Pages page identity names. A static Pages render reads
|
|
19
|
+
* the host only to select a configured i18n domain, so the identity keeps that
|
|
20
|
+
* domain, as vinext's Pages ISR key does, and every other host shares one entry.
|
|
21
|
+
*/
|
|
22
|
+
export declare function pagesCacheIdentityOrigin(requestUrl: string, i18nConfig: NextI18nConfig | null | undefined): string;
|
|
23
|
+
//#endregion
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { detectDomainLocale, normalizeDomainHostname } from "../utils/domain-locale.js";
|
|
2
|
+
import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
3
|
+
import { VINEXT_CACHE_IDENTITY_ORIGIN } from "./multi-stage.js";
|
|
4
|
+
//#region src/server/shared-cache-identity.ts
|
|
5
|
+
/** The core cache identity the configured adapter keys shared dispatches by, if any. */
|
|
6
|
+
function adapterSharedCacheIdentity() {
|
|
7
|
+
const adapter = getCdnCacheAdapter();
|
|
8
|
+
if (adapter.requiresCompletedResponseAdmission !== true) return null;
|
|
9
|
+
return adapter.responseStageCacheIdentity ?? null;
|
|
10
|
+
}
|
|
11
|
+
/** Whether the configured adapter keys shared dispatches by a core cache identity. */
|
|
12
|
+
function adapterUsesSharedCacheIdentity() {
|
|
13
|
+
return adapterSharedCacheIdentity() !== null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Whether a Pages page's response is one for every host, as Next.js serves a
|
|
17
|
+
* getStaticProps page and an automatically static page. A page without data
|
|
18
|
+
* functions is rendered per request when its getInitialProps or a custom
|
|
19
|
+
* _app's runs, and may read the host, so it keeps the host in its key.
|
|
20
|
+
*/
|
|
21
|
+
function pagesPageSharesAcrossHosts(route) {
|
|
22
|
+
if (route?.dataKind === "static") return true;
|
|
23
|
+
return route?.dataKind === "none" && route.runsInitialProps !== true;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The origin a shared Pages page identity names. A static Pages render reads
|
|
27
|
+
* the host only to select a configured i18n domain, so the identity keeps that
|
|
28
|
+
* domain, as vinext's Pages ISR key does, and every other host shares one entry.
|
|
29
|
+
*/
|
|
30
|
+
function pagesCacheIdentityOrigin(requestUrl, i18nConfig) {
|
|
31
|
+
const domainLocale = detectDomainLocale(i18nConfig?.domains, new URL(requestUrl).hostname);
|
|
32
|
+
if (!domainLocale) return VINEXT_CACHE_IDENTITY_ORIGIN;
|
|
33
|
+
return `${domainLocale.http ? "http" : "https"}://${normalizeDomainHostname(domainLocale.domain)}`;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { adapterSharedCacheIdentity, adapterUsesSharedCacheIdentity, pagesCacheIdentityOrigin, pagesPageSharesAcrossHosts };
|
|
@@ -9,4 +9,5 @@ type PlatformExecutionContext = Partial<ExecutionContextLike> & VinextRequestSta
|
|
|
9
9
|
* on the normal header-scrubbing path.
|
|
10
10
|
*/
|
|
11
11
|
export declare function createWorkerRevalidationContext(base: PlatformExecutionContext | undefined, handleInternalRequest: (request: Request, ctx: ExecutionContextLike) => Promise<Response>, defaultHostRuntime?: "node" | "worker"): ExecutionContextLike;
|
|
12
|
-
//#endregion
|
|
12
|
+
//#endregion
|
|
13
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { VinextResponseStageCacheability, VinextResponseStageTransport } from "./multi-stage.js";
|
|
1
|
+
import { VinextResponseStageCacheability, VinextResponseStageDispatchOptions, VinextResponseStageTransport } from "./multi-stage.js";
|
|
2
2
|
import { PagesRenderOptions } from "./pages-request-pipeline.js";
|
|
3
3
|
//#region src/server/worker-stages.d.ts
|
|
4
|
-
export declare const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION =
|
|
4
|
+
export declare const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION = 6;
|
|
5
5
|
export declare const PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER = "x-vinext-pages-response-stage-policy-owner";
|
|
6
6
|
export type PagesResponseStagePolicyOwner = "request-time" | "static";
|
|
7
7
|
type PagesResponseStageEnvelope = {
|
|
@@ -14,10 +14,16 @@ type PagesResponseStageEnvelope = {
|
|
|
14
14
|
stagedHeaders: Array<[string, string]> | null;
|
|
15
15
|
};
|
|
16
16
|
/** Serializable Pages page render delegated to a cacheable Worker stage. */
|
|
17
|
-
type PagesPageResponseStageProps = PagesResponseStageEnvelope & {
|
|
17
|
+
export type PagesPageResponseStageProps = PagesResponseStageEnvelope & {
|
|
18
18
|
kind: "pages-page";
|
|
19
19
|
renderOptions: PagesRenderOptions | null;
|
|
20
20
|
resolvedUrl: string;
|
|
21
|
+
/**
|
|
22
|
+
* The shared cache entry answers every host, as Next.js keys a static page
|
|
23
|
+
* by its path, so a getInitialProps render of a page without
|
|
24
|
+
* getStaticProps, which reads the request, is not stored.
|
|
25
|
+
*/
|
|
26
|
+
sharedAcrossHosts: boolean;
|
|
21
27
|
};
|
|
22
28
|
/** Serializable Pages API dispatch delegated to a cacheable Worker stage. */
|
|
23
29
|
type PagesApiResponseStageProps = PagesResponseStageEnvelope & {
|
|
@@ -39,5 +45,13 @@ export type WorkerResponseStageProps = PagesApiResponseStageProps | PagesPageRes
|
|
|
39
45
|
* response as Next.js.
|
|
40
46
|
*/
|
|
41
47
|
export type DispatchWorkerResponseStage = VinextResponseStageTransport<WorkerResponseStageProps>;
|
|
48
|
+
type PagesPageResponseStageCacheIdentity = NonNullable<VinextResponseStageDispatchOptions["cacheIdentity"]>;
|
|
49
|
+
/**
|
|
50
|
+
* Build the cache identity of a shared Pages page dispatch: the dispatched
|
|
51
|
+
* request and props under `origin`, so every host that names it shares one
|
|
52
|
+
* entry.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createSharedPagesPageCacheIdentity(request: Request, props: PagesPageResponseStageProps, origin: string): PagesPageResponseStageCacheIdentity;
|
|
42
55
|
export declare function isPagesResponseStageProps(value: unknown): value is WorkerResponseStageProps;
|
|
43
|
-
//#endregion
|
|
56
|
+
//#endregion
|
|
57
|
+
export {};
|
|
@@ -1,6 +1,25 @@
|
|
|
1
|
+
import { withCacheIdentityOrigin } from "./multi-stage.js";
|
|
1
2
|
//#region src/server/worker-stages.ts
|
|
2
|
-
const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION =
|
|
3
|
+
const PAGES_RESPONSE_STAGE_PROTOCOL_VERSION = 6;
|
|
3
4
|
const PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER = "x-vinext-pages-response-stage-policy-owner";
|
|
5
|
+
/**
|
|
6
|
+
* Build the cache identity of a shared Pages page dispatch: the dispatched
|
|
7
|
+
* request and props under `origin`, so every host that names it shares one
|
|
8
|
+
* entry.
|
|
9
|
+
*/
|
|
10
|
+
function createSharedPagesPageCacheIdentity(request, props, origin) {
|
|
11
|
+
return {
|
|
12
|
+
props: {
|
|
13
|
+
...props,
|
|
14
|
+
requestHost: new URL(origin).host
|
|
15
|
+
},
|
|
16
|
+
regenerateFromDispatch: true,
|
|
17
|
+
request: new Request(withCacheIdentityOrigin(request.url, origin), {
|
|
18
|
+
headers: new Headers(request.headers),
|
|
19
|
+
method: request.method
|
|
20
|
+
})
|
|
21
|
+
};
|
|
22
|
+
}
|
|
4
23
|
function isSerializedHeaders(value) {
|
|
5
24
|
return Array.isArray(value) && value.every((entry) => Array.isArray(entry) && entry.length === 2 && typeof entry[0] === "string" && typeof entry[1] === "string");
|
|
6
25
|
}
|
|
@@ -12,14 +31,14 @@ function isResponseStageCacheability(value) {
|
|
|
12
31
|
function isPagesResponseStageProps(value) {
|
|
13
32
|
if (!value || typeof value !== "object") return false;
|
|
14
33
|
const props = value;
|
|
15
|
-
if (props.protocolVersion !==
|
|
34
|
+
if (props.protocolVersion !== 6 || props.buildId !== null && typeof props.buildId !== "string" || !isResponseStageCacheability(props.cacheability) || typeof props.requestHost !== "string" || props.requestHost.length === 0 || props.stagedHeaders !== null && !isSerializedHeaders(props.stagedHeaders)) return false;
|
|
16
35
|
if (props.kind === "pages-api") return typeof props.apiUrl === "string";
|
|
17
36
|
if (props.kind === "pages-prerender-discovery") return true;
|
|
18
|
-
if (props.kind !== "pages-page" || typeof props.resolvedUrl !== "string") return false;
|
|
37
|
+
if (props.kind !== "pages-page" || typeof props.resolvedUrl !== "string" || typeof props.sharedAcrossHosts !== "boolean") return false;
|
|
19
38
|
if (props.renderOptions === null) return true;
|
|
20
39
|
if (!props.renderOptions || typeof props.renderOptions !== "object") return false;
|
|
21
40
|
const options = props.renderOptions;
|
|
22
41
|
return (options.isDataReq === void 0 || typeof options.isDataReq === "boolean") && (options.renderErrorPageOnMiss === void 0 || typeof options.renderErrorPageOnMiss === "boolean") && (options.originalUrl === void 0 || typeof options.originalUrl === "string");
|
|
23
42
|
}
|
|
24
43
|
//#endregion
|
|
25
|
-
export { PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER, PAGES_RESPONSE_STAGE_PROTOCOL_VERSION, isPagesResponseStageProps };
|
|
44
|
+
export { PAGES_RESPONSE_STAGE_POLICY_OWNER_HEADER, PAGES_RESPONSE_STAGE_PROTOCOL_VERSION, createSharedPagesPageCacheIdentity, isPagesResponseStageProps };
|
package/dist/shims/app.d.ts
CHANGED
|
@@ -12,4 +12,5 @@ export declare function registerCachedFunction<TArgs extends unknown[], TResult>
|
|
|
12
12
|
}): (...args: TArgs) => Promise<TResult>;
|
|
13
13
|
/** Replay the persisted payload without re-reading or re-encoding caller objects. */
|
|
14
14
|
export declare function invokeCacheFunction(invocation: VinextCacheFunctionInvocation, loadServerAction: (id: string) => Promise<unknown>): Promise<void>;
|
|
15
|
-
//#endregion
|
|
15
|
+
//#endregion
|
|
16
|
+
export {};
|
|
@@ -96,7 +96,7 @@ type MemoryCacheHandlerOptions = Pick<CacheHandlerContext, "maxMemoryCacheSize">
|
|
|
96
96
|
};
|
|
97
97
|
export declare class MemoryCacheHandler implements CacheHandler {
|
|
98
98
|
private store;
|
|
99
|
-
private
|
|
99
|
+
private tagsManifest;
|
|
100
100
|
private readonly maxMemoryCacheSize;
|
|
101
101
|
private currentMemoryCacheSize;
|
|
102
102
|
constructor(options?: number | MemoryCacheHandlerOptions);
|
|
@@ -106,7 +106,11 @@ export declare class MemoryCacheHandler implements CacheHandler {
|
|
|
106
106
|
private evictLeastRecentlyUsed;
|
|
107
107
|
get(key: string, ctx?: Record<string, unknown>): Promise<CacheHandlerValue | null>;
|
|
108
108
|
set(key: string, data: IncrementalCacheValue | null, ctx?: Record<string, unknown>): Promise<void>;
|
|
109
|
-
revalidateTag(tags: string | string[]
|
|
109
|
+
revalidateTag(tags: string | string[], durations?: {
|
|
110
|
+
expire?: number;
|
|
111
|
+
}): Promise<void>;
|
|
112
|
+
private isTagExpired;
|
|
113
|
+
private isTagStale;
|
|
110
114
|
resetRequestCache(): void;
|
|
111
115
|
}
|
|
112
116
|
export declare function configureMemoryCacheHandler(options?: MemoryCacheHandlerOptions): void;
|
|
@@ -121,4 +125,5 @@ export declare function registerLazyDataCacheHandler(load: () => Promise<void>):
|
|
|
121
125
|
export declare function getDataCacheHandler(): CacheHandler;
|
|
122
126
|
export declare function setCacheHandler(handler: CacheHandler): void;
|
|
123
127
|
export declare function getCacheHandler(): CacheHandler;
|
|
124
|
-
//#endregion
|
|
128
|
+
//#endregion
|
|
129
|
+
export {};
|