/// import { IncomingMessage, ServerResponse } from 'http'; import { ParsedUrlQuery } from 'querystring'; import { UrlWithParsedQuery } from 'url'; import { PrerenderManifest } from '../../build'; import { CustomRoutes } from '../../lib/load-custom-routes'; import { getRouteMatcher } from '../lib/router/utils'; import { __ApiPreviewProps } from './api-utils'; import { DomainLocales, NextConfig } from './config'; import Router, { DynamicRoutes, PageChecker, Params, Route } from './router'; import './node-polyfill-fetch'; import { PagesManifest } from '../../build/webpack/plugins/pages-manifest-plugin'; import { FontManifest } from './font-utils'; declare type DynamicRouteItem = { page: string; match: ReturnType; }; export declare type ServerConstructor = { /** * Where the Next project is located - @default '.' */ dir?: string; /** * Hide error messages containing server information - @default false */ quiet?: boolean; /** * Object what you would use in next.config.js - @default {} */ conf?: NextConfig | null; dev?: boolean; customServer?: boolean; }; export default class Server { protected dir: string; protected quiet: boolean; protected nextConfig: NextConfig; protected distDir: string; protected pagesDirs?: string[]; protected publicDir: string; protected hasStaticDir: boolean; protected serverBuildDir: string; protected pagesManifest?: PagesManifest; protected buildId: string; protected minimalMode: boolean; protected renderOpts: { poweredByHeader: boolean; buildId: string; generateEtags: boolean; runtimeConfig?: { [key: string]: any; }; assetPrefix?: string; canonicalBase: string; dev?: boolean; previewProps: __ApiPreviewProps; customServer?: boolean; ampOptimizerConfig?: { [key: string]: any; }; basePath: string; optimizeFonts: boolean; images: string; fontManifest: FontManifest; optimizeImages: boolean; optimizeCss: any; locale?: string; locales?: string[]; defaultLocale?: string; domainLocales?: DomainLocales; distDir: string; }; private compression?; private onErrorMiddleware?; private incrementalCache; protected router: Router; protected dynamicRoutes?: DynamicRoutes; protected customRoutes: CustomRoutes; constructor({ dir, quiet, conf, dev, minimalMode, customServer, }: ServerConstructor & { conf: NextConfig; minimalMode?: boolean; }); logError(err: Error): void; private handleRequest; getRequestHandler(): (req: IncomingMessage, res: ServerResponse, parsedUrl?: UrlWithParsedQuery | undefined) => Promise; setAssetPrefix(prefix?: string): void; prepare(): Promise; protected close(): Promise; protected setImmutableAssetCacheControl(res: ServerResponse): void; protected getCustomRoutes(): CustomRoutes; private _cachedPreviewManifest; protected getPrerenderManifest(): PrerenderManifest; protected getPreviewProps(): __ApiPreviewProps; protected generateRoutes(): { basePath: string; headers: Route[]; rewrites: { beforeFiles: Route[]; afterFiles: Route[]; fallback: Route[]; }; fsRoutes: Route[]; redirects: Route[]; catchAllRoute: Route; pageChecker: PageChecker; useFileSystemPublicRoutes: boolean; dynamicRoutes: DynamicRoutes | undefined; locales: string[]; }; private getPagePath; protected hasPage(pathname: string): Promise; protected _beforeCatchAllRender(_req: IncomingMessage, _res: ServerResponse, _params: Params, _parsedUrl: UrlWithParsedQuery): Promise; protected ensureApiPage(_pathname: string): Promise; /** * Resolves `API` request, in development builds on demand * @param req http request * @param res http response * @param pathname path of request */ private handleApiRequest; protected generatePublicRoutes(): Route[]; protected getDynamicRoutes(): Array; private handleCompression; protected run(req: IncomingMessage, res: ServerResponse, parsedUrl: UrlWithParsedQuery): Promise; protected sendHTML(req: IncomingMessage, res: ServerResponse, html: string): Promise; render(req: IncomingMessage, res: ServerResponse, pathname: string, query?: ParsedUrlQuery, parsedUrl?: UrlWithParsedQuery): Promise; private findPageComponents; protected getStaticPaths(pathname: string): Promise<{ staticPaths: string[] | undefined; fallbackMode: 'static' | 'blocking' | false; }>; private renderToHTMLWithComponents; renderToHTML(req: IncomingMessage, res: ServerResponse, pathname: string, query?: ParsedUrlQuery): Promise; renderError(err: Error | null, req: IncomingMessage, res: ServerResponse, pathname: string, query?: ParsedUrlQuery, setHeaders?: boolean): Promise; private customErrorNo404Warn; renderErrorToHTML(err: Error | null, req: IncomingMessage, res: ServerResponse, _pathname: string, query?: ParsedUrlQuery): Promise; render404(req: IncomingMessage, res: ServerResponse, parsedUrl?: UrlWithParsedQuery, setHeaders?: boolean): Promise; serveStatic(req: IncomingMessage, res: ServerResponse, path: string, parsedUrl?: UrlWithParsedQuery): Promise; private _validFilesystemPathSet; private getFilesystemPaths; protected isServeableUrl(untrustedFileUrl: string): boolean; protected readBuildId(): string; protected get _isLikeServerless(): boolean; } export {};