| import type { __ApiPreviewProps } from './api-utils'; |
| import type { LoadComponentsReturnType } from './load-components'; |
| import type { MiddlewareRouteMatch } from '../shared/lib/router/utils/middleware-route-matcher'; |
| import type { Params } from './request/params'; |
| import type { NextConfig, NextConfigComplete } from './config-shared'; |
| import type { NextParsedUrlQuery, NextUrlWithParsedQuery } from './request-meta'; |
| import type { ParsedUrlQuery } from 'querystring'; |
| import type { RenderOptsPartial as PagesRenderOptsPartial } from './render'; |
| import type { RenderOptsPartial as AppRenderOptsPartial, ServerOnInstrumentationRequestError } from './app-render/types'; |
| import type { ServerComponentsHmrCache, ResponseCacheBase } from './response-cache'; |
| import type { UrlWithParsedQuery } from 'url'; |
| import type { PagesManifest } from '../build/webpack/plugins/pages-manifest-plugin'; |
| import type { BaseNextRequest, BaseNextResponse } from './base-http'; |
| import type { ManifestRewriteRoute, ManifestRoute, PrerenderManifest } from '../build'; |
| import type { ClientReferenceManifest } from '../build/webpack/plugins/flight-manifest-plugin'; |
| import type { NextFontManifest } from '../build/webpack/plugins/next-font-manifest-plugin'; |
| import type { PagesAPIRouteMatch } from './route-matches/pages-api-route-match'; |
| import type { Server as HTTPServer, IncomingMessage, ServerResponse as HTTPServerResponse } from 'http'; |
| import type { MiddlewareMatcher } from '../build/analysis/get-page-static-info'; |
| import type { InstrumentationModule } from './instrumentation/types'; |
| import RenderResult from './render-result'; |
| import type { RouteMatcherManager } from './route-matcher-managers/route-matcher-manager'; |
| import { LocaleRouteNormalizer } from './normalizers/locale-route-normalizer'; |
| import { I18NProvider } from './lib/i18n-provider'; |
| import { RSCPathnameNormalizer } from './normalizers/request/rsc'; |
| import { PrefetchRSCPathnameNormalizer } from './normalizers/request/prefetch-rsc'; |
| import { NextDataPathnameNormalizer } from './normalizers/request/next-data'; |
| import type { DeepReadonly } from '../shared/lib/deep-readonly'; |
| import { type WaitUntil } from './after/builtin-request-context'; |
| import { type FallbackMode } from '../lib/fallback'; |
| import { SegmentPrefixRSCPathnameNormalizer } from './normalizers/request/segment-prefix-rsc'; |
| import type { CacheControl } from './lib/cache-control'; |
| import type { PrerenderedRoute } from '../build/static-paths/types'; |
| export type FindComponentsResult = { |
| components: LoadComponentsReturnType; |
| query: NextParsedUrlQuery; |
| }; |
| export interface MiddlewareRoutingItem { |
| page: string; |
| match: MiddlewareRouteMatch; |
| matchers?: MiddlewareMatcher[]; |
| } |
| export type RouteHandler<ServerRequest extends BaseNextRequest = BaseNextRequest, ServerResponse extends BaseNextResponse = BaseNextResponse> = (req: ServerRequest, res: ServerResponse, parsedUrl: NextUrlWithParsedQuery) => PromiseLike<boolean> | boolean; |
| |
| |
| |
| |
| export type NormalizedRouteManifest = { |
| readonly dynamicRoutes: ReadonlyArray<ManifestRoute>; |
| readonly rewrites: { |
| readonly beforeFiles: ReadonlyArray<ManifestRewriteRoute>; |
| readonly afterFiles: ReadonlyArray<ManifestRewriteRoute>; |
| readonly fallback: ReadonlyArray<ManifestRewriteRoute>; |
| }; |
| }; |
| export interface Options { |
| |
| |
| |
| conf: NextConfig; |
| |
| |
| |
| customServer?: boolean; |
| |
| |
| |
| dev?: boolean; |
| |
| |
| |
| experimentalTestProxy?: boolean; |
| |
| |
| |
| experimentalHttpsServer?: boolean; |
| |
| |
| |
| dir?: string; |
| |
| |
| |
| minimalMode?: boolean; |
| |
| |
| |
| quiet?: boolean; |
| |
| |
| |
| hostname?: string; |
| |
| |
| |
| port?: number; |
| |
| |
| |
| httpServer?: HTTPServer; |
| } |
| export type RenderOpts = PagesRenderOptsPartial & AppRenderOptsPartial; |
| export type LoadedRenderOpts = RenderOpts & LoadComponentsReturnType & RequestLifecycleOpts; |
| export type RequestLifecycleOpts = { |
| waitUntil: ((promise: Promise<any>) => void) | undefined; |
| onClose: (callback: () => void) => void; |
| onAfterTaskError: ((error: unknown) => void) | undefined; |
| }; |
| type BaseRenderOpts = RenderOpts & { |
| poweredByHeader: boolean; |
| generateEtags: boolean; |
| previewProps: __ApiPreviewProps; |
| }; |
| |
| |
| |
| |
| |
| |
| export interface BaseRequestHandler<ServerRequest extends BaseNextRequest | IncomingMessage = BaseNextRequest, ServerResponse extends BaseNextResponse | HTTPServerResponse = BaseNextResponse> { |
| (req: ServerRequest, res: ServerResponse, parsedUrl?: NextUrlWithParsedQuery | undefined): Promise<void> | void; |
| } |
| export type RequestContext<ServerRequest extends BaseNextRequest = BaseNextRequest, ServerResponse extends BaseNextResponse = BaseNextResponse> = { |
| req: ServerRequest; |
| res: ServerResponse; |
| pathname: string; |
| query: NextParsedUrlQuery; |
| renderOpts: RenderOpts; |
| }; |
| export declare class WrappedBuildError extends Error { |
| innerError: Error; |
| constructor(innerError: Error); |
| } |
| type ResponsePayload = { |
| body: RenderResult; |
| cacheControl?: CacheControl; |
| }; |
| export type NextEnabledDirectories = { |
| readonly pages: boolean; |
| readonly app: boolean; |
| }; |
| export default abstract class Server<ServerOptions extends Options = Options, ServerRequest extends BaseNextRequest = BaseNextRequest, ServerResponse extends BaseNextResponse = BaseNextResponse> { |
| readonly hostname?: string; |
| readonly fetchHostname?: string; |
| readonly port?: number; |
| protected readonly dir: string; |
| protected readonly quiet: boolean; |
| protected readonly nextConfig: NextConfigComplete; |
| protected readonly distDir: string; |
| protected readonly publicDir: string; |
| protected readonly hasStaticDir: boolean; |
| protected readonly pagesManifest?: PagesManifest; |
| protected readonly appPathsManifest?: PagesManifest; |
| protected readonly buildId: string; |
| protected readonly minimalMode: boolean; |
| protected readonly renderOpts: BaseRenderOpts; |
| protected readonly serverOptions: Readonly<ServerOptions>; |
| protected readonly appPathRoutes?: Record<string, string[]>; |
| protected readonly clientReferenceManifest?: DeepReadonly<ClientReferenceManifest>; |
| protected interceptionRoutePatterns: RegExp[]; |
| protected nextFontManifest?: DeepReadonly<NextFontManifest>; |
| protected instrumentation: InstrumentationModule | undefined; |
| private readonly responseCache; |
| protected abstract getPublicDir(): string; |
| protected abstract getHasStaticDir(): boolean; |
| protected abstract getPagesManifest(): PagesManifest | undefined; |
| protected abstract getAppPathsManifest(): PagesManifest | undefined; |
| protected abstract getBuildId(): string; |
| protected abstract getinterceptionRoutePatterns(): RegExp[]; |
| protected readonly enabledDirectories: NextEnabledDirectories; |
| protected abstract getEnabledDirectories(dev: boolean): NextEnabledDirectories; |
| protected readonly experimentalTestProxy?: boolean; |
| protected abstract findPageComponents(params: { |
| locale: string | undefined; |
| page: string; |
| query: NextParsedUrlQuery; |
| params: Params; |
| isAppPath: boolean; |
| sriEnabled?: boolean; |
| appPaths?: ReadonlyArray<string> | null; |
| shouldEnsure?: boolean; |
| url?: string; |
| }): Promise<FindComponentsResult | null>; |
| protected abstract getPrerenderManifest(): DeepReadonly<PrerenderManifest>; |
| protected abstract getNextFontManifest(): DeepReadonly<NextFontManifest> | undefined; |
| protected abstract attachRequestMeta(req: ServerRequest, parsedUrl: NextUrlWithParsedQuery): void; |
| protected abstract hasPage(pathname: string): Promise<boolean>; |
| protected abstract sendRenderResult(req: ServerRequest, res: ServerResponse, options: { |
| result: RenderResult; |
| generateEtags: boolean; |
| poweredByHeader: boolean; |
| cacheControl: CacheControl | undefined; |
| }): Promise<void>; |
| protected abstract runApi(req: ServerRequest, res: ServerResponse, query: ParsedUrlQuery, match: PagesAPIRouteMatch): Promise<boolean>; |
| protected abstract renderHTML(req: ServerRequest, res: ServerResponse, pathname: string, query: NextParsedUrlQuery, renderOpts: LoadedRenderOpts): Promise<RenderResult>; |
| protected abstract getIncrementalCache(options: { |
| requestHeaders: Record<string, undefined | string | string[]>; |
| }): Promise<import('./lib/incremental-cache').IncrementalCache>; |
| protected abstract getResponseCache(options: { |
| dev: boolean; |
| }): ResponseCacheBase; |
| protected getServerComponentsHmrCache(): ServerComponentsHmrCache | undefined; |
| protected abstract loadEnvConfig(params: { |
| dev: boolean; |
| forceReload?: boolean; |
| }): void; |
| readonly matchers: RouteMatcherManager; |
| protected readonly i18nProvider?: I18NProvider; |
| protected readonly localeNormalizer?: LocaleRouteNormalizer; |
| protected readonly normalizers: { |
| readonly rsc: RSCPathnameNormalizer | undefined; |
| readonly prefetchRSC: PrefetchRSCPathnameNormalizer | undefined; |
| readonly segmentPrefetchRSC: SegmentPrefixRSCPathnameNormalizer | undefined; |
| readonly data: NextDataPathnameNormalizer | undefined; |
| }; |
| private readonly isAppPPREnabled; |
| private readonly isAppSegmentPrefetchEnabled; |
| |
| |
| |
| |
| |
| constructor(options: ServerOptions); |
| private handleRSCRequest; |
| private handleNextDataRequest; |
| protected handleNextImageRequest: RouteHandler<ServerRequest, ServerResponse>; |
| protected handleCatchallRenderRequest: RouteHandler<ServerRequest, ServerResponse>; |
| protected handleCatchallMiddlewareRequest: RouteHandler<ServerRequest, ServerResponse>; |
| protected getRouteMatchers(): RouteMatcherManager; |
| protected instrumentationOnRequestError(...args: Parameters<ServerOnInstrumentationRequestError>): Promise<void>; |
| logError(err: Error): void; |
| handleRequest(req: ServerRequest, res: ServerResponse, parsedUrl?: NextUrlWithParsedQuery): Promise<void>; |
| private handleRequestImpl; |
| |
| |
| |
| |
| |
| |
| |
| private normalize; |
| private normalizeAndAttachMetadata; |
| getRequestHandler(): BaseRequestHandler<ServerRequest, ServerResponse>; |
| protected abstract handleUpgrade(req: ServerRequest, socket: any, head?: any): Promise<void>; |
| setAssetPrefix(prefix?: string): void; |
| protected prepared: boolean; |
| protected preparedPromise: Promise<void> | null; |
| |
| |
| |
| |
| prepare(): Promise<void>; |
| protected prepareImpl(): Promise<void>; |
| protected loadInstrumentationModule(): Promise<any>; |
| close(): Promise<void>; |
| protected getAppPathRoutes(): Record<string, string[]>; |
| protected run(req: ServerRequest, res: ServerResponse, parsedUrl: UrlWithParsedQuery): Promise<void>; |
| private runImpl; |
| private pipe; |
| private pipeImpl; |
| private getStaticHTML; |
| render(req: ServerRequest, res: ServerResponse, pathname: string, query?: NextParsedUrlQuery, parsedUrl?: NextUrlWithParsedQuery, internalRender?: boolean): Promise<void>; |
| protected getWaitUntil(): WaitUntil | undefined; |
| protected getInternalWaitUntil(): WaitUntil | undefined; |
| private renderImpl; |
| protected getStaticPaths({ pathname, }: { |
| pathname: string; |
| urlPathname: string; |
| requestHeaders: import('./lib/incremental-cache').IncrementalCache['requestHeaders']; |
| page: string; |
| isAppPath: boolean; |
| }): Promise<{ |
| staticPaths?: string[]; |
| prerenderedRoutes?: PrerenderedRoute[]; |
| fallbackMode?: FallbackMode; |
| }>; |
| private renderToResponseWithComponents; |
| protected pathCouldBeIntercepted(resolvedPathname: string): boolean; |
| protected setVaryHeader(req: ServerRequest, res: ServerResponse, isAppPath: boolean, resolvedPathname: string): void; |
| private renderToResponseWithComponentsImpl; |
| private stripNextDataPath; |
| protected getOriginalAppPaths(route: string): string[] | null; |
| protected renderPageComponent(ctx: RequestContext<ServerRequest, ServerResponse>, bubbleNoFallback: boolean): Promise<false | ResponsePayload | null>; |
| private renderToResponse; |
| protected abstract getMiddleware(): Promise<MiddlewareRoutingItem | undefined>; |
| protected abstract getFallbackErrorComponents(url?: string): Promise<LoadComponentsReturnType | null>; |
| protected abstract getRoutesManifest(): NormalizedRouteManifest | undefined; |
| private renderToResponseImpl; |
| renderToHTML(req: ServerRequest, res: ServerResponse, pathname: string, query?: ParsedUrlQuery): Promise<string | null>; |
| private renderToHTMLImpl; |
| renderError(err: Error | null, req: ServerRequest, res: ServerResponse, pathname: string, query?: NextParsedUrlQuery, setHeaders?: boolean): Promise<void>; |
| private renderErrorImpl; |
| private customErrorNo404Warn; |
| private renderErrorToResponse; |
| protected renderErrorToResponseImpl(ctx: RequestContext<ServerRequest, ServerResponse>, err: Error | null): Promise<ResponsePayload | null>; |
| renderErrorToHTML(err: Error | null, req: ServerRequest, res: ServerResponse, pathname: string, query?: ParsedUrlQuery): Promise<string | null>; |
| render404(req: ServerRequest, res: ServerResponse, parsedUrl?: Pick<NextUrlWithParsedQuery, 'pathname' | 'query'>, setHeaders?: boolean): Promise<void>; |
| } |
| export {}; |
|
|