UNPKG

next

Version:

The React Framework

225 lines (224 loc) • 8.05 kB
import type { NextConfigComplete } from '../server/config-shared'; import type { Revalidate } from '../server/lib/cache-control'; import '../lib/setup-exception-listeners'; import { Worker } from '../lib/worker'; import { RSC_PREFETCH_SUFFIX, RSC_SUFFIX, RSC_SEGMENTS_DIR_SUFFIX, RSC_SEGMENT_SUFFIX } from '../lib/constants'; import type { Header, Redirect, Rewrite, RouteHas } from '../lib/load-custom-routes'; import type { __ApiPreviewProps } from '../server/api-utils'; import { NEXT_ROUTER_PREFETCH_HEADER, RSC_HEADER, RSC_CONTENT_TYPE_HEADER, NEXT_DID_POSTPONE_HEADER, NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, NEXT_REWRITTEN_PATH_HEADER, NEXT_REWRITTEN_QUERY_HEADER } from '../client/components/app-router-headers'; import { RenderingMode } from './rendering-mode'; import { type PrefetchSegmentDataRoute } from '../server/lib/router-utils/build-prefetch-segment-data-route'; type Fallback = null | boolean | string; export interface PrerenderManifestRoute { dataRoute: string | null; experimentalBypassFor?: RouteHas[]; /** * The headers that should be served along side this prerendered route. */ initialHeaders?: Record<string, string>; /** * The status code that should be served along side this prerendered route. */ initialStatus?: number; /** * The revalidate value for this route. This might be inferred from: * - route segment configs * - fetch calls * - unstable_cache * - "use cache" */ initialRevalidateSeconds: Revalidate; /** * The expire value for this route, which is inferred from the "use cache" * functions that are used by the route, or the expireTime config. */ initialExpireSeconds: number | undefined; /** * The prefetch data route associated with this page. If not defined, this * page does not support prefetching. */ prefetchDataRoute: string | null | undefined; /** * The dynamic route that this statically prerendered route is based on. If * this is null, then the route was not based on a dynamic route. */ srcRoute: string | null; /** * @deprecated use `renderingMode` instead */ experimentalPPR: boolean | undefined; /** * The rendering mode for this route. Only `undefined` when not an app router * route. */ renderingMode: RenderingMode | undefined; /** * The headers that are allowed to be used when revalidating this route. These * are used internally by Next.js to revalidate routes. */ allowHeader: string[]; } export interface DynamicPrerenderManifestRoute { dataRoute: string | null; dataRouteRegex: string | null; experimentalBypassFor?: RouteHas[]; fallback: Fallback; /** * When defined, it describes the revalidation configuration for the fallback * route. */ fallbackRevalidate: Revalidate | undefined; /** * When defined, it describes the expire configuration for the fallback route. */ fallbackExpire: number | undefined; /** * The headers that should used when serving the fallback. */ fallbackHeaders?: Record<string, string>; /** * The status code that should be used when serving the fallback. */ fallbackStatus?: number; /** * The root params that are unknown for this fallback route. */ fallbackRootParams: readonly string[] | undefined; /** * The source route that this fallback route is based on. This is a reference * so that we can associate this dynamic route with the correct source. */ fallbackSourceRoute: string | undefined; prefetchDataRoute: string | null | undefined; prefetchDataRouteRegex: string | null | undefined; routeRegex: string; /** * @deprecated use `renderingMode` instead */ experimentalPPR: boolean | undefined; /** * The rendering mode for this route. Only `undefined` when not an app router * route. */ renderingMode: RenderingMode | undefined; /** * The headers that are allowed to be used when revalidating this route. These * are used internally by Next.js to revalidate routes. */ allowHeader: string[]; } export type PrerenderManifest = { version: 4; routes: { [route: string]: PrerenderManifestRoute; }; dynamicRoutes: { [route: string]: DynamicPrerenderManifestRoute; }; notFoundRoutes: string[]; preview: __ApiPreviewProps; }; type ManifestBuiltRoute = { /** * The route pattern used to match requests for this route. */ regex: string; }; export type ManifestRewriteRoute = ManifestBuiltRoute & Rewrite; export type ManifestRedirectRoute = ManifestBuiltRoute & Redirect; export type ManifestHeaderRoute = ManifestBuiltRoute & Header; export type ManifestRoute = ManifestBuiltRoute & { page: string; namedRegex?: string; routeKeys?: { [key: string]: string; }; prefetchSegmentDataRoutes?: PrefetchSegmentDataRoute[]; }; type ManifestDataRoute = { page: string; routeKeys?: { [key: string]: string; }; dataRouteRegex: string; namedDataRouteRegex?: string; }; export type RoutesManifest = { version: number; pages404: boolean; basePath: string; redirects: Array<Redirect>; rewrites?: Array<ManifestRewriteRoute> | { beforeFiles: Array<ManifestRewriteRoute>; afterFiles: Array<ManifestRewriteRoute>; fallback: Array<ManifestRewriteRoute>; }; headers: Array<ManifestHeaderRoute>; staticRoutes: Array<ManifestRoute>; dynamicRoutes: Array<ManifestRoute>; dataRoutes: Array<ManifestDataRoute>; i18n?: { domains?: ReadonlyArray<{ http?: true; domain: string; locales?: readonly string[]; defaultLocale: string; }>; locales: readonly string[]; defaultLocale: string; localeDetection?: false; }; rsc: { header: typeof RSC_HEADER; didPostponeHeader: typeof NEXT_DID_POSTPONE_HEADER; contentTypeHeader: typeof RSC_CONTENT_TYPE_HEADER; varyHeader: string; prefetchHeader: typeof NEXT_ROUTER_PREFETCH_HEADER; suffix: typeof RSC_SUFFIX; prefetchSuffix: typeof RSC_PREFETCH_SUFFIX; prefetchSegmentHeader: typeof NEXT_ROUTER_SEGMENT_PREFETCH_HEADER; prefetchSegmentDirSuffix: typeof RSC_SEGMENTS_DIR_SUFFIX; prefetchSegmentSuffix: typeof RSC_SEGMENT_SUFFIX; }; rewriteHeaders: { pathHeader: typeof NEXT_REWRITTEN_PATH_HEADER; queryHeader: typeof NEXT_REWRITTEN_QUERY_HEADER; }; skipMiddlewareUrlNormalize?: boolean; caseSensitive?: boolean; /** * Configuration related to Partial Prerendering. */ ppr?: { /** * The chained response for the PPR resume. */ chain: { /** * The headers that will indicate to Next.js that the request is for a PPR * resume. */ headers: Record<string, string>; }; }; }; export interface FunctionsConfigManifest { version: number; functions: Record<string, { maxDuration?: number | undefined; runtime?: 'nodejs'; matchers?: Array<{ regexp: string; originalSource: string; has?: Rewrite['has']; missing?: Rewrite['has']; }>; }>; } type StaticWorker = typeof import('./worker') & Worker; export declare function createStaticWorker(config: NextConfigComplete, progress?: { run: () => void; clear: () => void; }): StaticWorker; export default function build(dir: string, reactProductionProfiling: boolean | undefined, debugOutput: boolean | undefined, runLint: boolean | undefined, noMangling: boolean | undefined, appDirOnly: boolean | undefined, turboNextBuild: boolean | undefined, experimentalBuildMode: 'default' | 'compile' | 'generate', traceUploadUrl: string | undefined): Promise<void>; export {};