@sls-next/core
Version:
Handles Next.js routing independent of provider
259 lines (258 loc) • 6.29 kB
TypeScript
/// <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[];
};