vinext 1.0.1 → 1.2.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 +93 -10
- package/dist/build/app-page-static-eligibility.d.ts +15 -0
- package/dist/build/app-page-static-eligibility.js +82 -0
- package/dist/build/client-build-config.d.ts +10 -0
- package/dist/build/client-build-config.js +18 -2
- package/dist/build/pages-client-assets-module.d.ts +8 -0
- package/dist/build/pages-client-assets-module.js +21 -1
- package/dist/build/prerender-paths.js +8 -81
- package/dist/build/prerender.js +33 -8
- package/dist/build/run-prerender.js +1 -1
- package/dist/build/server-manifest.d.ts +7 -0
- package/dist/build/server-manifest.js +11 -1
- package/dist/build/ssr-manifest.d.ts +2 -0
- package/dist/build/ssr-manifest.js +6 -2
- package/dist/cache/cache-adapters-virtual.d.ts +7 -1
- package/dist/cache/cache-adapters-virtual.js +3 -3
- package/dist/check.js +7 -6
- package/dist/cli.js +2 -1
- package/dist/client/client-redirect-matcher.d.ts +14 -0
- package/dist/client/client-redirect-matcher.js +37 -0
- package/dist/client/client-redirects.d.ts +27 -0
- package/dist/client/client-redirects.js +28 -0
- package/dist/client/client-rewrites.d.ts +2 -1
- package/dist/client/client-rewrites.js +1 -1
- package/dist/client/navigation-runtime.d.ts +11 -0
- package/dist/client/navigation-runtime.js +1 -1
- package/dist/config/config-matchers.d.ts +26 -11
- package/dist/config/config-matchers.js +81 -82
- package/dist/config/destination-params.d.ts +47 -0
- package/dist/config/destination-params.js +116 -0
- package/dist/config/next-config.d.ts +14 -0
- package/dist/config/next-config.js +21 -3
- package/dist/entries/app-rsc-entry.d.ts +6 -0
- package/dist/entries/app-rsc-entry.js +84 -49
- package/dist/entries/pages-client-entry.js +3 -1
- package/dist/entries/pages-server-entry.js +13 -37
- package/dist/index.d.ts +7 -2
- package/dist/index.js +193 -73
- package/dist/init-cloudflare.d.ts +9 -0
- package/dist/init-cloudflare.js +107 -31
- package/dist/init-platform.d.ts +4 -0
- package/dist/init-platform.js +27 -2
- package/dist/init.d.ts +1 -0
- package/dist/init.js +67 -3
- package/dist/plugins/ast-scope.d.ts +7 -0
- package/dist/plugins/ast-scope.js +59 -3
- package/dist/plugins/cache-flight-codec.d.ts +19 -0
- package/dist/plugins/cache-flight-codec.js +68 -0
- package/dist/plugins/commonjs-esm-facade.d.ts +35 -0
- package/dist/plugins/commonjs-esm-facade.js +80 -0
- package/dist/plugins/dynamic-preload-metadata.d.ts +1 -1
- package/dist/plugins/dynamic-preload-metadata.js +9 -8
- package/dist/plugins/fonts.d.ts +8 -11
- package/dist/plugins/fonts.js +71 -34
- package/dist/plugins/ignore-dynamic-requests.d.ts +1 -1
- package/dist/plugins/ignore-dynamic-requests.js +3 -4
- package/dist/plugins/middleware-server-only.d.ts +5 -4
- package/dist/plugins/middleware-server-only.js +8 -5
- package/dist/plugins/pages-node-externals.js +1 -1
- package/dist/plugins/rsc-scan-glob-imports.d.ts +19 -0
- package/dist/plugins/rsc-scan-glob-imports.js +50 -0
- package/dist/plugins/strip-server-exports.js +262 -98
- package/dist/plugins/transform-result.d.ts +9 -5
- package/dist/plugins/transitive-externals.js +1 -1
- package/dist/plugins/typeof-window.d.ts +2 -2
- package/dist/plugins/use-cache-callable.js +8 -2
- package/dist/plugins/worker-server-only-imports.d.ts +20 -0
- package/dist/plugins/worker-server-only-imports.js +31 -0
- package/dist/plugins/worker-use-server.d.ts +25 -0
- package/dist/plugins/worker-use-server.js +129 -0
- package/dist/routing/file-matcher.d.ts +1 -0
- package/dist/routing/file-matcher.js +1 -1
- package/dist/server/api-handler.d.ts +1 -0
- package/dist/server/api-handler.js +19 -8
- package/dist/server/app-browser-action-result.d.ts +1 -1
- package/dist/server/app-browser-action-result.js +9 -2
- package/dist/server/app-browser-entry.js +11 -7
- package/dist/server/app-browser-history-controller.d.ts +2 -0
- package/dist/server/app-browser-history-controller.js +8 -0
- package/dist/server/app-browser-interception-context.js +26 -2
- package/dist/server/app-browser-navigation-controller.d.ts +7 -1
- package/dist/server/app-browser-navigation-controller.js +94 -11
- package/dist/server/app-browser-server-action-client.js +1 -1
- package/dist/server/app-fallback-renderer.d.ts +2 -0
- package/dist/server/app-fallback-renderer.js +1 -0
- package/dist/server/app-history-state.d.ts +3 -0
- package/dist/server/app-history-state.js +7 -0
- package/dist/server/app-middleware.d.ts +11 -0
- package/dist/server/app-middleware.js +19 -3
- package/dist/server/app-optimistic-routing.js +1 -1
- package/dist/server/app-page-boundary-render.d.ts +5 -0
- package/dist/server/app-page-boundary-render.js +6 -4
- package/dist/server/app-page-cache-finalizer.d.ts +11 -0
- package/dist/server/app-page-cache-finalizer.js +41 -7
- package/dist/server/app-page-cache-render.d.ts +18 -0
- package/dist/server/app-page-cache-render.js +63 -43
- package/dist/server/app-page-cache.d.ts +6 -1
- package/dist/server/app-page-cache.js +28 -8
- package/dist/server/app-page-dispatch.d.ts +12 -2
- package/dist/server/app-page-dispatch.js +51 -33
- package/dist/server/app-page-element-builder.d.ts +7 -0
- package/dist/server/app-page-element-builder.js +27 -42
- package/dist/server/app-page-execution.d.ts +15 -12
- package/dist/server/app-page-execution.js +30 -40
- package/dist/server/app-page-head.d.ts +5 -0
- package/dist/server/app-page-head.js +9 -3
- package/dist/server/app-page-ppr-runtime.js +1 -1
- package/dist/server/app-page-probe.d.ts +0 -109
- package/dist/server/app-page-probe.js +3 -136
- package/dist/server/app-page-render-identity.d.ts +0 -1
- package/dist/server/app-page-render-identity.js +1 -1
- package/dist/server/app-page-render-observation.js +3 -3
- package/dist/server/app-page-render.d.ts +13 -5
- package/dist/server/app-page-render.js +219 -119
- package/dist/server/app-page-request.d.ts +0 -1
- package/dist/server/app-page-request.js +54 -17
- package/dist/server/app-page-response.d.ts +4 -3
- package/dist/server/app-page-response.js +4 -3
- package/dist/server/app-page-route-wiring.d.ts +17 -5
- package/dist/server/app-page-route-wiring.js +57 -35
- package/dist/server/app-page-rsc-render-status.d.ts +48 -0
- package/dist/server/app-page-rsc-render-status.js +54 -0
- package/dist/server/app-page-stream.d.ts +15 -8
- package/dist/server/app-page-stream.js +6 -0
- package/dist/server/app-pages-bridge.d.ts +1 -1
- package/dist/server/app-pages-bridge.js +2 -3
- package/dist/server/app-prerender-endpoints.js +9 -6
- package/dist/server/app-request-stage-dispatch.js +7 -3
- package/dist/server/app-request-stage-independent-entry.js +29 -9
- package/dist/server/app-response-header-provenance.d.ts +2 -0
- package/dist/server/app-response-header-provenance.js +10 -4
- package/dist/server/app-response-stage-entry.js +10 -2
- package/dist/server/app-route-handler-cache.d.ts +1 -0
- package/dist/server/app-route-handler-cache.js +1 -0
- package/dist/server/app-route-handler-dispatch.d.ts +1 -0
- package/dist/server/app-route-handler-dispatch.js +6 -3
- package/dist/server/app-route-handler-execution.d.ts +1 -0
- package/dist/server/app-route-handler-execution.js +1 -0
- package/dist/server/app-route-handler-runtime.d.ts +4 -1
- package/dist/server/app-route-handler-runtime.js +45 -24
- package/dist/server/app-router-entry.js +27 -8
- package/dist/server/app-rsc-cache-busting.js +1 -1
- package/dist/server/app-rsc-errors.js +20 -16
- package/dist/server/app-rsc-handler.d.ts +11 -0
- package/dist/server/app-rsc-handler.js +291 -125
- package/dist/server/app-rsc-request-normalization.d.ts +3 -1
- package/dist/server/app-rsc-request-normalization.js +4 -2
- package/dist/server/app-rsc-response-stage.d.ts +1 -1
- package/dist/server/app-rsc-response-stage.js +10 -6
- package/dist/server/app-rsc-route-matching.d.ts +9 -1
- package/dist/server/app-rsc-route-matching.js +36 -19
- package/dist/server/app-segment-config.d.ts +2 -1
- package/dist/server/app-server-action-execution.d.ts +2 -1
- package/dist/server/app-server-action-execution.js +62 -23
- package/dist/server/app-ssr-entry.d.ts +3 -2
- package/dist/server/app-ssr-entry.js +8 -5
- package/dist/server/app-ssr-stream.d.ts +6 -1
- package/dist/server/app-ssr-stream.js +34 -15
- package/dist/server/app-worker-stages.d.ts +7 -2
- package/dist/server/app-worker-stages.js +4 -4
- package/dist/server/cacheability-request.js +11 -7
- package/dist/server/client-build-files.d.ts +16 -0
- package/dist/server/client-build-files.js +36 -0
- package/dist/server/client-reuse-manifest.js +1 -1
- package/dist/server/config-headers.js +2 -0
- package/dist/server/dev-server.js +50 -29
- package/dist/server/dev-stack-sourcemap.js +18 -23
- package/dist/server/document-initial-head.d.ts +0 -11
- package/dist/server/document-initial-head.js +1 -1
- package/dist/server/forwarded-middleware-context.d.ts +5 -0
- package/dist/server/forwarded-middleware-context.js +22 -0
- package/dist/server/headers.d.ts +18 -1
- package/dist/server/headers.js +19 -2
- package/dist/server/http-conditional.d.ts +11 -0
- package/dist/server/http-conditional.js +10 -1
- package/dist/server/http-error-responses.d.ts +1 -1
- package/dist/server/image-optimization.d.ts +54 -0
- package/dist/server/image-optimization.js +118 -9
- package/dist/server/isr-cache.d.ts +10 -0
- package/dist/server/isr-cache.js +43 -8
- package/dist/server/metadata-route-response.js +9 -8
- package/dist/server/middleware-matcher-pattern.js +8 -4
- package/dist/server/middleware-matcher.d.ts +2 -0
- package/dist/server/middleware-matcher.js +23 -2
- package/dist/server/middleware-response-headers.js +2 -0
- package/dist/server/middleware-runtime.d.ts +13 -0
- package/dist/server/middleware-runtime.js +33 -20
- package/dist/server/middleware.d.ts +1 -1
- package/dist/server/middleware.js +3 -1
- package/dist/server/multi-stage.d.ts +19 -0
- package/dist/server/navigation-planner.js +1 -1
- package/dist/server/node-response-signal.d.ts +16 -0
- package/dist/server/node-response-signal.js +26 -0
- package/dist/server/normalize-path.d.ts +0 -13
- package/dist/server/normalize-path.js +1 -34
- package/dist/server/open-redirect.d.ts +47 -0
- package/dist/server/open-redirect.js +74 -1
- package/dist/server/pages-api-route.d.ts +3 -2
- package/dist/server/pages-api-route.js +4 -3
- package/dist/server/pages-cache-tag.d.ts +12 -0
- package/dist/server/pages-cache-tag.js +19 -0
- package/dist/server/pages-client-assets.d.ts +2 -0
- package/dist/server/pages-data-route.d.ts +10 -0
- package/dist/server/pages-data-route.js +19 -2
- package/dist/server/pages-document-asset-props.d.ts +5 -1
- package/dist/server/pages-document-asset-props.js +13 -5
- package/dist/server/pages-document-splice.d.ts +19 -0
- package/dist/server/pages-document-splice.js +55 -0
- package/dist/server/pages-i18n.d.ts +12 -1
- package/dist/server/pages-i18n.js +18 -4
- package/dist/server/pages-node-compat.d.ts +16 -5
- package/dist/server/pages-node-compat.js +20 -12
- package/dist/server/pages-page-data.d.ts +32 -24
- package/dist/server/pages-page-data.js +50 -120
- package/dist/server/pages-page-handler.d.ts +0 -6
- package/dist/server/pages-page-handler.js +209 -130
- package/dist/server/pages-page-response.d.ts +12 -6
- package/dist/server/pages-page-response.js +41 -34
- package/dist/server/pages-request-pipeline.d.ts +10 -2
- package/dist/server/pages-request-pipeline.js +37 -18
- package/dist/server/pages-request-stage-entry.d.ts +6 -0
- package/dist/server/pages-request-stage-entry.js +79 -16
- package/dist/server/pages-response-stage-entry.js +4 -0
- package/dist/server/pages-revalidate.js +1 -1
- package/dist/server/pages-router-entry.js +4 -3
- package/dist/server/prerender-manifest.d.ts +3 -3
- package/dist/server/prerender-manifest.js +4 -3
- package/dist/server/prerender-work-unit-setup.js +4 -0
- package/dist/server/prod-server.d.ts +20 -7
- package/dist/server/prod-server.js +343 -129
- package/dist/server/proper-error.d.ts +4 -0
- package/dist/server/proper-error.js +31 -0
- package/dist/server/request-pipeline.d.ts +24 -9
- package/dist/server/request-pipeline.js +24 -9
- package/dist/server/response-compression.d.ts +43 -0
- package/dist/server/response-compression.js +111 -0
- package/dist/server/revalidation-request.d.ts +1 -0
- package/dist/server/revalidation-request.js +1 -1
- package/dist/server/rsc-stream-hints.js +31 -2
- package/dist/server/seed-cache.d.ts +1 -0
- package/dist/server/seed-cache.js +15 -11
- package/dist/server/server-reference-loader.d.ts +4 -0
- package/dist/server/server-reference-loader.js +29 -0
- package/dist/server/socket-error-backstop.d.ts +23 -1
- package/dist/server/socket-error-backstop.js +69 -17
- package/dist/server/static-file-signal.d.ts +15 -4
- package/dist/server/static-file-signal.js +46 -12
- package/dist/server/worker-image-optimization.d.ts +34 -0
- package/dist/server/worker-image-optimization.js +86 -0
- package/dist/server/worker-stages.d.ts +1 -1
- package/dist/server/worker-stages.js +2 -2
- package/dist/server/worker-utils.d.ts +8 -3
- package/dist/server/worker-utils.js +12 -7
- package/dist/shims/app-router-scroll.js +4 -1
- package/dist/shims/app-router-tree-context.d.ts +5 -0
- package/dist/shims/app-router-tree-context.js +27 -0
- package/dist/shims/cache-adapter-instantiate.d.ts +50 -0
- package/dist/shims/cache-adapter-instantiate.js +118 -0
- package/dist/shims/cache-callable-runtime.d.ts +6 -42
- package/dist/shims/cache-callable-runtime.js +65 -174
- package/dist/shims/cache-flight-arguments.d.ts +22 -0
- package/dist/shims/cache-flight-arguments.js +56 -0
- package/dist/shims/cache-handler.js +1 -9
- package/dist/shims/cache-request-state.d.ts +15 -0
- package/dist/shims/cache-request-state.js +31 -8
- package/dist/shims/cache-runtime.d.ts +12 -20
- package/dist/shims/cache-runtime.js +166 -225
- package/dist/shims/cache.d.ts +4 -4
- package/dist/shims/cache.js +44 -16
- package/dist/shims/cacheability-classification.d.ts +7 -0
- package/dist/shims/cdn-cache.d.ts +8 -0
- package/dist/shims/cdn-cache.js +17 -1
- package/dist/shims/disable-smooth-scroll.d.ts +3 -0
- package/dist/shims/disable-smooth-scroll.js +36 -0
- package/dist/shims/document-placeholders.d.ts +19 -0
- package/dist/shims/document-placeholders.js +45 -0
- package/dist/shims/document.js +21 -5
- package/dist/shims/dynamic-preload-chunks.d.ts +1 -0
- package/dist/shims/dynamic-preload-chunks.js +13 -9
- package/dist/shims/dynamic.d.ts +1 -1
- package/dist/shims/dynamic.js +60 -8
- package/dist/shims/error-boundary-navigation.d.ts +7 -0
- package/dist/shims/error-boundary-navigation.js +19 -1
- package/dist/shims/error-boundary.d.ts +10 -10
- package/dist/shims/error-boundary.js +26 -7
- package/dist/shims/fetch-cache-state.d.ts +66 -0
- package/dist/shims/fetch-cache-state.js +92 -0
- package/dist/shims/fetch-cache.d.ts +3 -61
- package/dist/shims/fetch-cache.js +161 -108
- package/dist/shims/form.js +1 -1
- package/dist/shims/head.d.ts +10 -6
- package/dist/shims/head.js +15 -13
- package/dist/shims/headers.d.ts +13 -0
- package/dist/shims/headers.js +47 -4
- package/dist/shims/image.js +2 -1
- package/dist/shims/internal/app-page-props-cache-key.d.ts +5 -2
- package/dist/shims/internal/app-page-props-cache-key.js +24 -15
- package/dist/shims/internal/headers-state.d.ts +0 -1
- package/dist/shims/internal/work-store-scope.d.ts +5 -0
- package/dist/shims/internal/work-store-scope.js +24 -0
- package/dist/shims/metadata.js +3 -3
- package/dist/shims/navigation-errors.d.ts +6 -0
- package/dist/shims/navigation-errors.js +11 -1
- package/dist/shims/navigation.d.ts +7 -0
- package/dist/shims/navigation.js +45 -9
- package/dist/shims/request-context.d.ts +11 -0
- package/dist/shims/request-state-types.d.ts +2 -1
- package/dist/shims/router.js +12 -20
- package/dist/shims/server.d.ts +16 -0
- package/dist/shims/server.js +24 -4
- package/dist/shims/thenable-params.d.ts +4 -0
- package/dist/shims/thenable-params.js +25 -3
- package/dist/shims/unified-request-context.d.ts +1 -1
- package/dist/shims/unified-request-context.js +1 -0
- package/dist/shims/url-utils.d.ts +2 -0
- package/dist/shims/url-utils.js +3 -1
- package/dist/utils/client-runtime-metadata.js +1 -1
- package/dist/utils/hash.d.ts +7 -0
- package/dist/utils/hash.js +11 -1
- package/dist/utils/mdx-scan.d.ts +5 -0
- package/dist/utils/mdx-scan.js +8 -1
- package/dist/utils/package-name.d.ts +6 -0
- package/dist/utils/package-name.js +12 -1
- package/dist/utils/plugin-rsc-version.d.ts +4 -0
- package/dist/utils/plugin-rsc-version.js +15 -0
- package/dist/utils/prerender-output-paths.js +15 -4
- package/dist/utils/public-file-path.d.ts +10 -2
- package/dist/utils/public-file-path.js +13 -9
- package/dist/utils/public-routes.js +2 -2
- package/dist/utils/react-version.d.ts +3 -0
- package/dist/utils/react-version.js +1 -1
- package/dist/utils/regex-safety.d.ts +10 -0
- package/dist/utils/regex-safety.js +70 -18
- package/package.json +9 -5
|
@@ -6,17 +6,19 @@ import { hasBasePath, stripBasePath } from "../utils/base-path.js";
|
|
|
6
6
|
import { runWithExecutionContext } from "../shims/request-context.js";
|
|
7
7
|
import { VINEXT_CACHEABILITY_PROBE_QUERY_PARAM, VINEXT_EXPECTED_WORKER_VERSION_HEADER } from "./headers.js";
|
|
8
8
|
import { notFoundStaticAssetResponse } from "./http-error-responses.js";
|
|
9
|
-
import {
|
|
10
|
-
import { attachRequestCfMetadata, cloneRequestWithHeaders, cloneRequestWithUrl, filterInternalHeaders } from "./request-pipeline.js";
|
|
9
|
+
import { attachRequestCfMetadata, cloneRequestWithHeaders, cloneRequestWithUrl, filterInternalHeaders, guardProtocolRelativeUrl } from "./request-pipeline.js";
|
|
11
10
|
import { normalizeDefaultLocalePathname } from "./pages-i18n.js";
|
|
11
|
+
import { isNextDataPathname } from "./pages-data-route.js";
|
|
12
12
|
import { getExplicitCdnCacheAdapter } from "../shims/cdn-cache-state.js";
|
|
13
13
|
import { CACHEABILITY_REQUEST_STATE } from "../shims/cacheability-classification.js";
|
|
14
14
|
import { applyCdnResponseIdentityHeaders, captureCdnResponsePolicyOverrides, reconcileCdnResponseHeadersAfterOuterPolicy, validateCdnRequest } from "./cache-control.js";
|
|
15
15
|
import { registerLazyDataCacheHandler } from "../shims/cache-handler.js";
|
|
16
|
-
import { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, handleConfiguredImageOptimization, isImageOptimizationPath } from "./image-optimization.js";
|
|
16
|
+
import { DEFAULT_DEVICE_SIZES, DEFAULT_IMAGE_SIZES, handleConfiguredImageOptimization, isImageOptimizationPath, isImageSourceBodyStatus } from "./image-optimization.js";
|
|
17
17
|
import { traceFrameworkRequest } from "./request-tracing.js";
|
|
18
18
|
import { resolveResponseStageCachePolicy } from "./config-headers.js";
|
|
19
|
+
import { createStaticAssetRequest } from "./worker-utils.js";
|
|
19
20
|
import { fetchWorkerFilesystemRoute, runPagesRequest, wrapMiddlewareWithBasePath } from "./pages-request-pipeline.js";
|
|
21
|
+
import { resolveClientBuildFile } from "./client-build-files.js";
|
|
20
22
|
import { createWorkerRevalidationContext } from "./worker-revalidation-context.js";
|
|
21
23
|
import { createWorkerPrerenderDiscoveryContext, createWorkerPrerenderReadinessResponse, isWorkerPrerenderDiscoveryPath } from "./worker-prerender-discovery.js";
|
|
22
24
|
import { getPagesResponseStageCacheDisposition } from "./pages-response-stage.js";
|
|
@@ -40,12 +42,13 @@ function haveSameHeaders(first, second) {
|
|
|
40
42
|
function captureOuterResponsePolicyHeaders(stagedHeaders, transportedPolicyHeaders) {
|
|
41
43
|
return captureCdnResponsePolicyOverrides(stagedHeaders, new Headers(transportedPolicyHeaders ?? []));
|
|
42
44
|
}
|
|
43
|
-
const { authorizeOnDemandRevalidate, hasMiddleware, hasRequestAwareDocument, matchApiRoute, matchPageRoute, normalizeDataRequest, publicFiles, runMiddleware, vinextConfig } = pagesEntry;
|
|
45
|
+
const { authorizeOnDemandRevalidate, hasMiddleware, hasRequestAwareDocument, matchApiRoute, matchPageRoute, normalizeDataRequest, publicFiles, clientBuildFiles, runMiddleware, vinextConfig } = pagesEntry;
|
|
44
46
|
const pagesRequestStageBuildId = pagesEntry.buildId ?? null;
|
|
45
47
|
const pagesRequestStagePrerenderSecret = pagesEntry.prerenderSecret ?? null;
|
|
46
48
|
const basePath = vinextConfig?.basePath ?? "";
|
|
47
49
|
const assetPathPrefix = assetPrefixPathname(vinextConfig?.assetPrefix ?? "");
|
|
48
50
|
const trailingSlash = vinextConfig?.trailingSlash ?? false;
|
|
51
|
+
const skipTrailingSlashRedirect = vinextConfig?.skipTrailingSlashRedirect ?? false;
|
|
49
52
|
const i18nConfig = vinextConfig?.i18n ?? null;
|
|
50
53
|
const configRedirects = vinextConfig?.redirects ?? [];
|
|
51
54
|
const configRewrites = vinextConfig?.rewrites ?? {
|
|
@@ -61,6 +64,17 @@ const imageConfig = vinextConfig?.images ? {
|
|
|
61
64
|
contentDispositionType: vinextConfig.images.contentDispositionType,
|
|
62
65
|
contentSecurityPolicy: vinextConfig.images.contentSecurityPolicy
|
|
63
66
|
} : void 0;
|
|
67
|
+
/**
|
|
68
|
+
* Whether the request stage serves this request as a client build file
|
|
69
|
+
* outside `_next/static`. Such responses resolve no route, so the Worker
|
|
70
|
+
* keeps their ASSETS cache policy out of route cacheability admission.
|
|
71
|
+
*/
|
|
72
|
+
function isPagesClientBuildFileRequest(request, env, ctx) {
|
|
73
|
+
return (request.method === "GET" || request.method === "HEAD") && resolveAssetFetcher(ctx?.assets, env, "worker") !== void 0 && resolveClientBuildFile(new URL(request.url).pathname, basePath, clientBuildFiles) !== null;
|
|
74
|
+
}
|
|
75
|
+
function resolveAssetFetcher(assets, env, defaultHostRuntime) {
|
|
76
|
+
return assets ?? getExplicitCdnCacheAdapter()?.assets ?? (defaultHostRuntime === "worker" ? env?.ASSETS : void 0);
|
|
77
|
+
}
|
|
64
78
|
/** Run the request-time stage with a host-owned response dispatcher. */
|
|
65
79
|
function handleRequestStage(request, env, ctx, dispatchResponseStage) {
|
|
66
80
|
const originalRequest = request;
|
|
@@ -90,7 +104,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
90
104
|
let sharedOuterPolicyHeaders = null;
|
|
91
105
|
let ctx = createWorkerRevalidationContext(platformCtx, (internalRequest, internalCtx) => handleRequest(internalRequest, env, internalCtx, dispatchResponseStage, forceCacheBypass, defaultHostRuntime, assets), defaultHostRuntime);
|
|
92
106
|
configuredCdnCacheAdapters.registerConfiguredCacheAdapters(env);
|
|
93
|
-
assets
|
|
107
|
+
assets = resolveAssetFetcher(assets, env, defaultHostRuntime);
|
|
94
108
|
if (configuredCdnCacheAdapters.hasConfiguredDataCache) registerLazyDataCacheHandler(async () => {
|
|
95
109
|
(await import("virtual:vinext-cache-adapters")).registerConfiguredCacheAdapters(env);
|
|
96
110
|
});
|
|
@@ -144,16 +158,21 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
144
158
|
resolvedRoutePathname: pathname
|
|
145
159
|
},
|
|
146
160
|
kind: "pages-prerender-discovery",
|
|
147
|
-
protocolVersion:
|
|
161
|
+
protocolVersion: 5,
|
|
148
162
|
requestHost: url.host,
|
|
149
163
|
stagedHeaders: null
|
|
150
164
|
}, { cache: "bypass" }, env, ctx);
|
|
151
|
-
|
|
165
|
+
const protocolRelativeGuard = guardProtocolRelativeUrl(pathname, url.search);
|
|
166
|
+
if (protocolRelativeGuard) return protocolRelativeGuard;
|
|
152
167
|
try {
|
|
153
168
|
normalizePathnameForRouteMatchStrict(pathname);
|
|
154
169
|
} catch {
|
|
155
170
|
return new Response("Bad Request", { status: 400 });
|
|
156
171
|
}
|
|
172
|
+
if (assets && (request.method === "GET" || request.method === "HEAD")) {
|
|
173
|
+
const clientBuildFile = resolveClientBuildFile(pathname, basePath, clientBuildFiles);
|
|
174
|
+
if (clientBuildFile) return await assets.fetch(createStaticAssetRequest(clientBuildFile, request));
|
|
175
|
+
}
|
|
157
176
|
const missingBuildAsset = isNextStaticPath(pathname, basePath, assetPathPrefix);
|
|
158
177
|
const hadBasePath = !basePath || hasBasePath(pathname, basePath);
|
|
159
178
|
{
|
|
@@ -166,6 +185,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
166
185
|
}
|
|
167
186
|
}
|
|
168
187
|
const middlewareRequest = request;
|
|
188
|
+
const originalRenderUrl = pathname + new URL(request.url).search;
|
|
169
189
|
const dataNorm = normalizeDataRequest(request);
|
|
170
190
|
if (dataNorm.notFoundResponse && !vinextConfig?.skipProxyUrlNormalize) return dataNorm.notFoundResponse;
|
|
171
191
|
const isDataReq = dataNorm.isDataReq;
|
|
@@ -188,6 +208,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
188
208
|
assetPrefix: vinextConfig?.assetPrefix,
|
|
189
209
|
basePath,
|
|
190
210
|
trailingSlash,
|
|
211
|
+
skipTrailingSlashRedirect,
|
|
191
212
|
i18nConfig,
|
|
192
213
|
configRedirects,
|
|
193
214
|
configRewrites,
|
|
@@ -227,9 +248,12 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
227
248
|
resolvedRoutePathname: new URL(resolvedUrl, req.url).pathname
|
|
228
249
|
},
|
|
229
250
|
kind: "pages-page",
|
|
230
|
-
protocolVersion:
|
|
251
|
+
protocolVersion: 5,
|
|
231
252
|
requestHost: new URL(req.url).host,
|
|
232
|
-
renderOptions:
|
|
253
|
+
renderOptions: isDataReq ? {
|
|
254
|
+
...options,
|
|
255
|
+
originalUrl: originalRenderUrl
|
|
256
|
+
} : options ?? null,
|
|
233
257
|
resolvedUrl,
|
|
234
258
|
stagedHeaders: isSharedStaticPage ? null : [...stagedHeaders ?? new Headers()]
|
|
235
259
|
});
|
|
@@ -264,7 +288,7 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
264
288
|
resolvedRoutePathname: new URL(apiUrl, req.url).pathname
|
|
265
289
|
},
|
|
266
290
|
kind: "pages-api",
|
|
267
|
-
protocolVersion:
|
|
291
|
+
protocolVersion: 5,
|
|
268
292
|
requestHost: new URL(req.url).host,
|
|
269
293
|
stagedHeaders: [...stagedHeaders]
|
|
270
294
|
});
|
|
@@ -281,17 +305,56 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
281
305
|
return response;
|
|
282
306
|
}) : dispatched;
|
|
283
307
|
},
|
|
284
|
-
serveFilesystemRoute: async (requestPathname, _stagedHeaders, phase, resolvedUrl) => {
|
|
308
|
+
serveFilesystemRoute: async (requestPathname, _stagedHeaders, phase, resolvedUrl, filesystemRequest, resolvedPathnameHasBasePath) => {
|
|
285
309
|
if (!assets) return false;
|
|
286
|
-
if (isImageOptimizationPath(requestPathname)) {
|
|
310
|
+
if (resolvedPathnameHasBasePath && isImageOptimizationPath(requestPathname)) {
|
|
287
311
|
const imageUrl = new URL(resolvedUrl, request.url);
|
|
288
|
-
const imageRequest =
|
|
312
|
+
const imageRequest = cloneRequestWithUrl(request, imageUrl.href);
|
|
289
313
|
const allowedWidths = [...vinextConfig?.images?.deviceSizes ?? DEFAULT_DEVICE_SIZES, ...vinextConfig?.images?.imageSizes ?? DEFAULT_IMAGE_SIZES];
|
|
290
|
-
|
|
314
|
+
const { fetchWorkerImageSource } = await import("./worker-image-optimization.js");
|
|
315
|
+
return handleConfiguredImageOptimization(imageRequest, (sourceUrl, sourceImageRequest) => fetchWorkerImageSource(sourceUrl, sourceImageRequest, {
|
|
316
|
+
assets,
|
|
317
|
+
basePath,
|
|
318
|
+
assetPathPrefix,
|
|
319
|
+
clientBuildFiles,
|
|
320
|
+
fetchPublicFile: (sourceRequest) => resolvePublicImageSource(sourceRequest, assets)
|
|
321
|
+
}), allowedWidths, imageConfig);
|
|
291
322
|
}
|
|
292
|
-
return fetchWorkerFilesystemRoute(
|
|
323
|
+
return fetchWorkerFilesystemRoute(filesystemRequest, requestPathname, phase, (assetRequest) => Promise.resolve(assets.fetch(assetRequest)), publicFiles, basePath, assetPathPrefix, hadBasePath);
|
|
293
324
|
}
|
|
294
325
|
};
|
|
326
|
+
const resolvePublicImageSource = async (sourceRequest, sourceAssets) => {
|
|
327
|
+
const sourceUrl = new URL(sourceRequest.url);
|
|
328
|
+
if (guardProtocolRelativeUrl(sourceUrl.pathname, sourceUrl.search)) return null;
|
|
329
|
+
const sourceHadBasePath = !basePath || hasBasePath(sourceUrl.pathname, basePath);
|
|
330
|
+
const sourcePathname = stripBasePath(sourceUrl.pathname, basePath);
|
|
331
|
+
if (isNextDataPathname(sourcePathname)) return null;
|
|
332
|
+
let sourceAsset = null;
|
|
333
|
+
const sourceResult = await runPagesRequest(attachRequestCfMetadata(new Request(new URL(sourcePathname + sourceUrl.search, sourceUrl), { signal: sourceRequest.signal }), sourceRequest), {
|
|
334
|
+
...deps,
|
|
335
|
+
hadBasePath: sourceHadBasePath,
|
|
336
|
+
isDataReq: false,
|
|
337
|
+
isDataRequest: false,
|
|
338
|
+
middlewareRequest: void 0,
|
|
339
|
+
dataNotFoundResponse: null,
|
|
340
|
+
recordCacheability: false,
|
|
341
|
+
runMiddleware: typeof runMiddleware === "function" ? wrapMiddlewareWithBasePath(runMiddleware, basePath, sourceHadBasePath) : null,
|
|
342
|
+
renderPage: null,
|
|
343
|
+
handleApi: null,
|
|
344
|
+
serveFilesystemRoute: async (candidate, _stagedHeaders, phase, _resolvedUrl, filesystemRequest) => {
|
|
345
|
+
if (isImageOptimizationPath(candidate)) return false;
|
|
346
|
+
const asset = await fetchWorkerFilesystemRoute(filesystemRequest, candidate, phase, (assetRequest) => Promise.resolve(sourceAssets.fetch(assetRequest)), publicFiles, basePath, assetPathPrefix, sourceHadBasePath);
|
|
347
|
+
if (asset === false) return false;
|
|
348
|
+
sourceAsset = asset;
|
|
349
|
+
return new Response(null);
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
if (sourceResult.type !== "response") return null;
|
|
353
|
+
await sourceResult.response.body?.cancel().catch(() => {});
|
|
354
|
+
if (isImageSourceBodyStatus(sourceResult.response.status)) return sourceAsset;
|
|
355
|
+
await sourceAsset?.body?.cancel().catch(() => {});
|
|
356
|
+
return null;
|
|
357
|
+
};
|
|
295
358
|
const result = await runPagesRequest(request, deps);
|
|
296
359
|
if (result.type === "response") {
|
|
297
360
|
let response = result.response;
|
|
@@ -313,4 +376,4 @@ async function handleRequestImpl(request, env, platformCtx, dispatchResponseStag
|
|
|
313
376
|
}
|
|
314
377
|
}
|
|
315
378
|
//#endregion
|
|
316
|
-
export { handleRequestStage, handleRequestStageLocally, pagesRequestStageBuildId, pagesRequestStagePrerenderSecret };
|
|
379
|
+
export { handleRequestStage, handleRequestStageLocally, isPagesClientBuildFileRequest, pagesRequestStageBuildId, pagesRequestStagePrerenderSecret };
|
|
@@ -53,6 +53,10 @@ async function renderPagesResponse(request, env, platformCtx, props, stagedHeade
|
|
|
53
53
|
...ctx,
|
|
54
54
|
isPrerenderPathDiscovery: true
|
|
55
55
|
};
|
|
56
|
+
else if (props.kind === "pages-page" && dispatchOptions.regeneratesStoredEntry === true) ctx = {
|
|
57
|
+
...ctx,
|
|
58
|
+
isStoredEntryRegeneration: true
|
|
59
|
+
};
|
|
56
60
|
const render = async (cacheabilityContext) => {
|
|
57
61
|
if (props.kind === "pages-prerender-discovery") {
|
|
58
62
|
const readinessResponse = createWorkerPrerenderReadinessResponse(cacheabilityContext, request);
|
|
@@ -29,7 +29,7 @@ async function performOnDemandRevalidate(source, urlPath, opts = {}, trustedOrig
|
|
|
29
29
|
const res = await fetchRevalidateTarget(target, headers, dispatchRevalidate);
|
|
30
30
|
if (!((res.headers.get("x-vercel-cache") ?? res.headers.get("x-nextjs-cache"))?.toUpperCase() === "REVALIDATED" || res.status === 200 || res.status === 404 && opts.unstable_onlyGenerated === true)) throw new Error(`Failed to revalidate ${urlPath}: ${res.status}`);
|
|
31
31
|
const regeneratedTag = res.headers.get(VINEXT_REVALIDATED_CACHE_TAG_HEADER);
|
|
32
|
-
if (regeneratedTag) await getCdnCacheAdapter().revalidateTag(regeneratedTag);
|
|
32
|
+
if (regeneratedTag) await getCdnCacheAdapter().revalidateTag(decodeURIComponent(regeneratedTag));
|
|
33
33
|
}
|
|
34
34
|
function readSourceHeader(source, key) {
|
|
35
35
|
if (isWebHeaders(source)) return source.get(key) ?? void 0;
|
|
@@ -5,7 +5,7 @@ import { getCdnCacheAdapter } from "../shims/cdn-cache.js";
|
|
|
5
5
|
import { validateCdnRequest } from "./cache-control.js";
|
|
6
6
|
import { createWorkerRevalidationContext } from "./worker-revalidation-context.js";
|
|
7
7
|
import { createWorkerPrerenderDiscoveryContext, createWorkerPrerenderReadinessResponse } from "./worker-prerender-discovery.js";
|
|
8
|
-
import { handleRequestStageLocally, pagesRequestStageBuildId, pagesRequestStagePrerenderSecret } from "./pages-request-stage-entry.js";
|
|
8
|
+
import { handleRequestStageLocally, isPagesClientBuildFileRequest, pagesRequestStageBuildId, pagesRequestStagePrerenderSecret } from "./pages-request-stage-entry.js";
|
|
9
9
|
import { renderPagesResponse } from "./pages-response-stage-entry.js";
|
|
10
10
|
import { registerConfiguredCacheAdapters } from "virtual:vinext-cache-adapters";
|
|
11
11
|
import { __ensureInstrumentation } from "virtual:vinext-pages-request-entry";
|
|
@@ -23,8 +23,9 @@ async function handleSingleStageRequest(request, env, platformCtx) {
|
|
|
23
23
|
if (readinessResponse.status === 204) await Promise.all([__ensureInstrumentation(), __ensureInstrumentation$1()]);
|
|
24
24
|
return await validateCdnRequest(request) ?? readinessResponse;
|
|
25
25
|
}
|
|
26
|
+
const isClientBuildFile = isPagesClientBuildFileRequest(request, env, ctx);
|
|
26
27
|
let finalize;
|
|
27
|
-
if (request.headers.has("X-Vinext-Cacheability-Probe")) {
|
|
28
|
+
if (!isClientBuildFile && request.headers.has("X-Vinext-Cacheability-Probe")) {
|
|
28
29
|
const cacheability = await import("./cacheability-request.js");
|
|
29
30
|
const probeContext = cacheability.createWorkerCacheabilityContext(ctx, request, pagesRequestStagePrerenderSecret, adapter.responseVary);
|
|
30
31
|
if (probeContext !== ctx) {
|
|
@@ -39,7 +40,7 @@ async function handleSingleStageRequest(request, env, platformCtx) {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
const requiresCompletedResponseAdmission = adapter.requiresCompletedResponseAdmission === true;
|
|
42
|
-
if (!finalize && (__cacheabilityManifest || requiresCompletedResponseAdmission)) {
|
|
43
|
+
if (!finalize && !isClientBuildFile && (__cacheabilityManifest || requiresCompletedResponseAdmission)) {
|
|
43
44
|
const cacheability = await import("./cacheability-request.js");
|
|
44
45
|
const admissionContext = cacheability.createWorkerCacheabilityAdmissionContext(ctx, request, __cacheabilityManifest, pagesRequestStageBuildId, requiresCompletedResponseAdmission, adapter.responseVary);
|
|
45
46
|
if (admissionContext !== ctx) {
|
|
@@ -32,7 +32,6 @@ export type PrerenderManifest = {
|
|
|
32
32
|
pregeneratedConcretePaths?: Array<[string, string[]]>;
|
|
33
33
|
};
|
|
34
34
|
export type PrerenderedPathSelectionOptions = {
|
|
35
|
-
includeFallbackShells?: boolean;
|
|
36
35
|
includeErrorDocuments?: boolean;
|
|
37
36
|
};
|
|
38
37
|
export declare function readPrerenderManifest(manifestPath: string): PrerenderManifest | null;
|
|
@@ -58,8 +57,9 @@ export declare function buildPregeneratedConcretePathTable(manifest: PrerenderMa
|
|
|
58
57
|
* This intentionally includes both App Router and Pages Router entries because
|
|
59
58
|
* deploy-time cache warmup should exercise the same URLs the prerender phase
|
|
60
59
|
* proved are statically renderable. PPR fallback-shell placeholder artifacts
|
|
61
|
-
* and known error documents
|
|
62
|
-
* synthetic bracket paths or treat a healthy 404 response as a failed
|
|
60
|
+
* are always excluded, and known error documents by default, so warmup does not
|
|
61
|
+
* request synthetic bracket paths or treat a healthy 404 response as a failed
|
|
62
|
+
* warmup.
|
|
63
63
|
*/
|
|
64
64
|
export declare function getPrerenderedConcretePaths(manifest: PrerenderManifest, options?: PrerenderedPathSelectionOptions): string[];
|
|
65
65
|
//#endregion
|
|
@@ -65,8 +65,9 @@ function buildPregeneratedConcretePathTable(manifest) {
|
|
|
65
65
|
* This intentionally includes both App Router and Pages Router entries because
|
|
66
66
|
* deploy-time cache warmup should exercise the same URLs the prerender phase
|
|
67
67
|
* proved are statically renderable. PPR fallback-shell placeholder artifacts
|
|
68
|
-
* and known error documents
|
|
69
|
-
* synthetic bracket paths or treat a healthy 404 response as a failed
|
|
68
|
+
* are always excluded, and known error documents by default, so warmup does not
|
|
69
|
+
* request synthetic bracket paths or treat a healthy 404 response as a failed
|
|
70
|
+
* warmup.
|
|
70
71
|
*/
|
|
71
72
|
function getPrerenderedConcretePaths(manifest, options) {
|
|
72
73
|
const routes = manifest.routes;
|
|
@@ -76,7 +77,7 @@ function getPrerenderedConcretePaths(manifest, options) {
|
|
|
76
77
|
for (const route of routes) {
|
|
77
78
|
if (route.status !== "rendered" || route.notFound) continue;
|
|
78
79
|
const pathname = route.path ?? route.route;
|
|
79
|
-
if (
|
|
80
|
+
if (isFallbackShellArtifactPath(pathname, route)) continue;
|
|
80
81
|
if (!options?.includeErrorDocuments && isErrorDocumentRoute(pathname, route)) continue;
|
|
81
82
|
if (seen.has(pathname)) continue;
|
|
82
83
|
seen.add(pathname);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runInWorkStoreScope } from "../shims/internal/work-store-scope.js";
|
|
1
2
|
import { workUnitAsyncStorage } from "../shims/internal/work-unit-async-storage.js";
|
|
2
3
|
import { isRouteCacheabilityProbe } from "../shims/cacheability-classification.js";
|
|
3
4
|
import { NO_STORE_CACHE_CONTROL } from "./cache-control.js";
|
|
@@ -15,6 +16,9 @@ import { NO_STORE_CACHE_CONTROL } from "./cache-control.js";
|
|
|
15
16
|
*
|
|
16
17
|
*/
|
|
17
18
|
function runWithPrerenderWorkUnit(fn, options) {
|
|
19
|
+
return runInWorkStoreScope(() => runWithWorkUnit(fn, options));
|
|
20
|
+
}
|
|
21
|
+
function runWithWorkUnit(fn, options) {
|
|
18
22
|
if (process.env.VINEXT_PRERENDER === "1" || isRouteCacheabilityProbe()) {
|
|
19
23
|
if (options?.cacheComponents !== true) return workUnitAsyncStorage.run({ type: "prerender-legacy" }, fn);
|
|
20
24
|
return runWithPrerenderWorkUnitOwner(fn, options);
|
|
@@ -2,6 +2,7 @@ import { NextI18nConfig } from "../config/next-config.js";
|
|
|
2
2
|
import { negotiateEncoding } from "./accept-encoding.js";
|
|
3
3
|
import { StaticFileCache } from "./static-file-cache.js";
|
|
4
4
|
import { resolveRequestHost, trustProxy, trustedHosts } from "./proxy-trust.js";
|
|
5
|
+
import { COMPRESS_THRESHOLD, isCompressibleContentType } from "./response-compression.js";
|
|
5
6
|
import { IncomingMessage, ServerResponse } from "node:http";
|
|
6
7
|
//#region src/server/prod-server.d.ts
|
|
7
8
|
/**
|
|
@@ -68,10 +69,6 @@ export type ProdServerOptions = {
|
|
|
68
69
|
/** Suppress the startup log for internal child-process servers. */
|
|
69
70
|
silent?: boolean;
|
|
70
71
|
};
|
|
71
|
-
/** Content types that benefit from compression. */
|
|
72
|
-
declare const COMPRESSIBLE_TYPES: Set<string>;
|
|
73
|
-
/** Minimum size threshold for compression (in bytes). Below this, compression overhead isn't worth it. */
|
|
74
|
-
declare const COMPRESS_THRESHOLD = 1024;
|
|
75
72
|
/**
|
|
76
73
|
* Merge middleware headers and a Web Response's headers into a single
|
|
77
74
|
* record suitable for Node.js `res.writeHead()`. Uses `getSetCookie()`
|
|
@@ -104,15 +101,19 @@ declare function sendCompressed(req: IncomingMessage, res: ServerResponse, body:
|
|
|
104
101
|
*
|
|
105
102
|
* Without a cache, falls back to async filesystem probing (still non-blocking,
|
|
106
103
|
* unlike the old sync existsSync/statSync approach).
|
|
104
|
+
*
|
|
105
|
+
* `extraHeaders` go on every response for the file. `representationHeaders` go
|
|
106
|
+
* only on responses that carry the file's bytes (200 and 206), never on a 304,
|
|
107
|
+
* 412, 416 or 405.
|
|
107
108
|
*/
|
|
108
|
-
declare function tryServeStatic(req: IncomingMessage, res: ServerResponse, clientDir: string, pathname: string, compress: boolean, cache?: StaticFileCache, extraHeaders?: Record<string, string | string[]>, statusCode?: number): Promise<boolean>;
|
|
109
|
+
declare function tryServeStatic(req: IncomingMessage, res: ServerResponse, clientDir: string, pathname: string, compress: boolean, cache?: StaticFileCache, extraHeaders?: Record<string, string | string[]>, statusCode?: number, representationHeaders?: Record<string, string>): Promise<boolean>;
|
|
109
110
|
/**
|
|
110
111
|
* Convert a Node.js IncomingMessage to a Web Request object.
|
|
111
112
|
*
|
|
112
113
|
* When `urlOverride` is provided, it is used as the path + query string
|
|
113
114
|
* instead of `req.url`.
|
|
114
115
|
*/
|
|
115
|
-
declare function nodeToWebRequest(req: IncomingMessage, urlOverride?: string, prerenderSecret?: string, i18nConfig?: NextI18nConfig | null, authorizeOnDemandRevalidate?: (headerValue: string | null) => boolean): Request;
|
|
116
|
+
declare function nodeToWebRequest(req: IncomingMessage, urlOverride?: string, prerenderSecret?: string, i18nConfig?: NextI18nConfig | null, authorizeOnDemandRevalidate?: (headerValue: string | null) => boolean, signal?: AbortSignal): Request;
|
|
116
117
|
/**
|
|
117
118
|
* Stream a Web Response back to a Node.js ServerResponse.
|
|
118
119
|
* Supports streaming compression for SSR responses.
|
|
@@ -154,5 +155,17 @@ export declare function resolveAppRouterPrerenderSeeder(entryModule: unknown): A
|
|
|
154
155
|
* route through; the on-disk path is just `_next/static/...`.
|
|
155
156
|
*/
|
|
156
157
|
export declare function resolveAppRouterAssetPath(pathname: string, assetPathPrefix: string, assetPrefix: string): string | null;
|
|
158
|
+
/**
|
|
159
|
+
* Create the Pages Router request handler for `vite preview`. Vite's preview
|
|
160
|
+
* middleware (proxy, compression, `base`, static files) runs first, so this
|
|
161
|
+
* handles only the requests Vite doesn't serve and leaves compression to Vite.
|
|
162
|
+
* Resolves to null when the build has no Pages Router server entry.
|
|
163
|
+
*/
|
|
164
|
+
export declare function createPagesPreviewHandler(options: {
|
|
165
|
+
clientDir: string;
|
|
166
|
+
serverDir: string;
|
|
167
|
+
host: string;
|
|
168
|
+
port: number;
|
|
169
|
+
}): Promise<((req: IncomingMessage, res: ServerResponse) => void) | null>;
|
|
157
170
|
//#endregion
|
|
158
|
-
export {
|
|
171
|
+
export { COMPRESS_THRESHOLD, isCompressibleContentType, mergeResponseHeaders, mergeWebResponse, negotiateEncoding, nodeToWebRequest, resolveRequestHost as resolveHost, sendCompressed, sendWebResponse, trustProxy, trustedHosts, tryServeStatic, waitForNodeResponseCompletion };
|