UNPKG

veloze

Version:

A modern and fast express-like webserver for the web

129 lines (128 loc) 4.53 kB
import * as http from 'node:http'; import { SecureServerOptions } from 'node:http2'; import { CookieOpts } from './utils/cookie.js'; export { CookieOpts }; export { TooBusyOptions } from './utils/tooBusy.js'; export { HeaderParserResult } from './utils/headerParser.js'; import { RouterOptions } from './Router.js'; export { RouterOptions }; export { BodyParserOptions } from './middleware/bodyParser.js'; export { CacheControlDirectives } from './middleware/cacheControl.js'; export { CspMiddlewareOptions, CspOptions, HstsOptions, ReferrerPolicy } from './middleware/contentSec.js'; export { CorsOptions } from './middleware/cors.js'; export { PresetOptions } from './middleware/presets.js'; export { RetryAfterOption } from './middleware/tooBusy.js'; export type Method = 'ALL' | 'ACL' | 'BIND' | 'CHECKOUT' | 'CONNECT' | 'COPY' | 'DELETE' | 'GET' | 'HEAD' | 'LINK' | 'LOCK' | 'M-SEARCH' | 'MERGE' | 'MKACTIVITY' | 'MKCALENDAR' | 'MKCOL' | 'MOVE' | 'NOTIFY' | 'OPTIONS' | 'PATCH' | 'POST' | 'PROPFIND' | 'PROPPATCH' | 'PURGE' | 'PUT' | 'REBIND' | 'REPORT' | 'SEARCH' | 'SOURCE' | 'SUBSCRIBE' | 'TRACE' | 'UNBIND' | 'UNLINK' | 'UNLOCK' | 'UNSUBSCRIBE'; export interface Request extends http.IncomingMessage { /** * url of the request */ url: string; /** * original url of the request. `url` is rewritten if Router is mounted */ originalUrl?: string; /** * params object from url parameters e.g. for route * `/authors/:author/books/:bookTitle` would return with url * `/authors/melville/books/moby-dick` the object * `{ author: 'melville', bookTitle: 'moby-dick' }` */ params: Record<string, string> | {}; /** * url path; * needs queryParser middleware */ path?: string; /** * query parameters e.g. `?foo=bar&v=1` becomes `{ foo: 'bar', v: '1' }`; * needs queryParser middleware */ query?: Record<string, string> | {}; /** * parsed request body; * needs bodyParser middleware */ body?: Record<string, any> | {} | Buffer; /** * parsed cookies; * needs cookieParser middleware */ cookies?: Record<string, string> | {}; /** * request id; * needs requestId middleware */ id?: string; } export interface Response extends http.ServerResponse { /** * response body */ body?: any; /** * send request; * needs send or sendEtag middleware */ send?: (body: any, status?: number, headers?: object) => void; /** * redirect request; * needs send middleware */ redirect?: (location: string, status?: number, headers?: object) => void; /** * send request; * needs json or jsonEtag middleware */ json?: (body: any, status?: number, headers?: object) => void; /** * sets a response cookie; * needs cookieParser middleware */ cookie?: (name: string, value: string | number | boolean, opts?: CookieOpts) => Response; /** * Clears the cookie specified by name; * needs cookieParser middleware */ clearCookie?: (name: string, opts?: CookieOpts) => Response; /** * local template variables for res.render; * needs renderEngine middleware */ locals?: Record<string, any>; /** * template render function; * needs renderEngine middleware */ render?: (name: string, locals: Record<string, any>) => Promise<void>; /** * set flag for connect to indicate that response is ended by a streaming * pipeline. Causes connect to exit stack loop. */ writablePiped?: boolean; } export declare function HandlerCb(req: Request, res: Response, next: Function): void; export declare function HandlerAsync(req: Request, res: Response): Promise<void>; export declare function ErrorHandler(err: Error, req: Request, res: Response, next: Function): void; export declare function FinalHandler(err: Error, req: Request, res: Response): void; export type Handler = typeof HandlerCb | typeof HandlerAsync | typeof ErrorHandler; export interface HttpError extends Error { status: number; } export interface Log { debug: Function; info: Function; warn: Function; error: Function; } export interface ServerOptions extends RouterOptions, SecureServerOptions { /** * start server only in HTTP1 mode * @default false */ onlyHTTP1: boolean; /** * graceful timeout on server shutdown. time in milliseconds */ gracefulTimeout: number; }