@nestjs/platform-fastify
Version:
Nest - modern, fast, powerful node.js web framework (@platform-fastify)
90 lines (89 loc) • 2.48 kB
TypeScript
/**
* "fastify-static" interfaces
* @see https://github.com/fastify/fastify-static/blob/master/types/index.d.ts
* @publicApi
*/
import { RouteOptions, FastifyRequest, FastifyReply } from 'fastify';
import { Stats } from 'fs';
interface SetHeadersResponse {
getHeader: FastifyReply['getHeader'];
setHeader: FastifyReply['header'];
readonly filename: string;
statusCode: number;
}
interface ExtendedInformation {
fileCount: number;
totalFileCount: number;
folderCount: number;
totalFolderCount: number;
totalSize: number;
lastModified: number;
}
interface ListDir {
href: string;
name: string;
stats: Stats;
extendedInfo?: ExtendedInformation;
}
interface ListFile {
href: string;
name: string;
stats: Stats;
}
interface ListRender {
(dirs: ListDir[], files: ListFile[]): string;
}
interface ListOptions {
names: string[];
extendedFolderInfo?: boolean;
jsonFormat?: 'names' | 'extended';
}
export interface ListOptionsJsonFormat extends ListOptions {
format: 'json';
render?: ListRender;
}
export interface ListOptionsHtmlFormat extends ListOptions {
format: 'html';
render: ListRender;
}
interface SendOptions {
acceptRanges?: boolean;
cacheControl?: boolean;
dotfiles?: 'allow' | 'deny' | 'ignore';
etag?: boolean;
extensions?: string[];
immutable?: boolean;
index?: string[] | string | false;
lastModified?: boolean;
maxAge?: string | number;
serveDotFiles?: boolean;
}
export interface FastifyStaticOptions extends SendOptions {
root: string | string[] | URL | URL[];
prefix?: string;
prefixAvoidTrailingSlash?: boolean;
serve?: boolean;
decorateReply?: boolean;
schemaHide?: boolean;
setHeaders?: (res: SetHeadersResponse, path: string, stat: Stats) => void;
redirect?: boolean;
wildcard?: boolean;
list?: boolean | ListOptionsJsonFormat | ListOptionsHtmlFormat;
allowedPath?: (pathName: string, root: string, request: FastifyRequest) => boolean;
/**
* @description
* Opt-in to looking for pre-compressed files
*/
preCompressed?: boolean;
acceptRanges?: boolean;
cacheControl?: boolean;
dotfiles?: 'allow' | 'deny' | 'ignore';
etag?: boolean;
extensions?: string[];
immutable?: boolean;
index?: string[] | string | false;
lastModified?: boolean;
maxAge?: string | number;
constraints?: RouteOptions['constraints'];
}
export {};