UNPKG

@sls-next/core

Version:
259 lines (258 loc) 6.29 kB
/// <reference types="node" /> import { IncomingHttpHeaders, IncomingMessage, ServerResponse } from "http"; export declare type Header = { key?: string; value: string; }; export declare type Headers = { [key: string]: Header[]; }; export declare type Request = { headers: Headers; querystring?: string; uri: string; }; export declare type Event = { req: IncomingMessage; res: ServerResponse; responsePromise: Promise<any>; }; export declare type RedirectData = { statusCode: number; source: string; destination: string; internal?: boolean; }; export declare type RewriteData = { source: string; destination: string; }; export declare type DynamicRoute = { route: string; regex: string; }; export declare type Dynamic = { file: string; regex: string; }; export declare type DynamicSSG = { fallback: false | null | string; }; export declare type NonDynamicSSG = { initialRevalidateSeconds: false | number; srcRoute: string | null; }; export declare type Manifest = { authentication?: { username: string; password: string; }; domainRedirects?: { [key: string]: string; }; publicFiles?: { [key: string]: string; }; trailingSlash?: boolean; }; export declare type ApiManifest = Manifest & { apis: { dynamic: Dynamic[]; nonDynamic: { [key: string]: string; }; }; }; export declare type PageManifest = Manifest & { buildId: string; pages: { dynamic: DynamicRoute[]; html: { dynamic: { [key: string]: string; }; nonDynamic: { [key: string]: string; }; }; ssg: { dynamic: { [key: string]: DynamicSSG; }; nonDynamic: { [key: string]: NonDynamicSSG; }; notFound?: { [key: string]: true; }; }; ssr: { dynamic: { [key: string]: string; }; nonDynamic: { [key: string]: string; }; }; }; publicFiles: { [key: string]: string; }; trailingSlash: boolean; hasApiPages: boolean; }; export declare type HeaderData = { source: string; headers: Header[]; }; export declare type DomainData = { domain: string; defaultLocale: string; locales?: string[]; }; export declare type I18nData = { locales: string[]; defaultLocale: string; localeDetection?: boolean; domains?: DomainData[]; }; export declare type RoutesManifest = { basePath: string; redirects: RedirectData[]; rewrites: RewriteData[]; headers: HeaderData[]; i18n?: I18nData; }; export declare type PrerenderManifest = { preview: { previewModeId: string; previewModeSigningKey: string; previewModeEncryptionKey: string; }; }; export interface AnyRoute { file?: string; headers?: Headers; querystring?: string; statusCode?: number; isApi?: boolean; isExternal?: boolean; isPublicFile?: boolean; isNextStaticFile?: boolean; isRedirect?: boolean; isRender?: boolean; isStatic?: boolean; isUnauthorized?: boolean; } export interface ApiRoute extends AnyRoute { isApi: true; page: string; } export interface ExternalRoute extends AnyRoute { isExternal: true; path: string; } export interface PublicFileRoute extends AnyRoute { isPublicFile: true; file: string; } export interface NextStaticFileRoute extends AnyRoute { isNextStaticFile: true; file: string; } export interface RedirectRoute extends AnyRoute { isRedirect: true; status: number; statusDescription: string; } export interface RenderRoute extends AnyRoute { isRender: true; isData: boolean; page: string; } export interface StaticRoute extends AnyRoute { isStatic: true; isData: boolean; file: string; page?: string; revalidate?: false | number; fallback?: false | null | string; } export interface UnauthorizedRoute extends AnyRoute { isUnauthorized: true; status: number; statusDescription: string; body: string; } export declare type DataRoute = (RenderRoute | StaticRoute) & { isData: true; }; export declare type PageRoute = (RenderRoute | StaticRoute) & { isData: false; }; export declare type Route = ExternalRoute | PublicFileRoute | NextStaticFileRoute | RedirectRoute | RenderRoute | StaticRoute | ApiRoute | UnauthorizedRoute; export declare type PreRenderedManifest = { version: 2; routes: { [route: string]: { initialRevalidateSeconds: number | false; srcRoute: string | null; dataRoute: string; }; }; dynamicRoutes: { [route: string]: { routeRegex: string; fallback: string | false; dataRoute: string; dataRouteRegex: string; }; }; preview: { previewModeId: string; previewModeSigningKey: string; previewModeEncryptionKey: string; }; }; export declare type PerfLogger = { now: () => number | undefined; log: (metricDescription: string, t1?: number, t2?: number) => void; }; export declare type RegenerationEventRequest = { url: string | undefined; headers: IncomingHttpHeaders; }; export declare type RegenerationEvent = { request: RegenerationEventRequest; pagePath: string; basePath: string; pageKey: string; storeName: string; storeRegion: string; }; export declare type ImageBuildManifest = { domainRedirects?: { [key: string]: string; }; }; export declare type CoreBuildOptions = { nextConfigDir?: string; nextStaticDir?: string; outputDir?: string; args?: string[]; cwd?: string; env?: NodeJS.ProcessEnv; cmd?: string; domainRedirects?: { [key: string]: string; }; minifyHandlers?: boolean; handler?: string; authentication?: { username: string; password: string; } | undefined; baseDir?: string; cleanupDotNext?: boolean; assetIgnorePatterns?: string[]; };