UNPKG

jai-server

Version:

Fast , simple and powerful web framework for creating REST APIs for your next project. RESTFul API server

111 lines (110 loc) 4.03 kB
/// <reference types="node" /> /// <reference types="node" /> /// <reference types="node" /> /// <reference types="node" /> /// <reference types="node" /> /// <reference types="node" /> export type HandlerFunction = (req?: any, res?: any, next?: Function) => void | Promise<void> | any; export type ErrorHandlerFunction = (error: any, req?: any, res?: any, next?: Function) => void | Promise<void>; import { ServerResponse } from 'http'; export type RouteObject = { url?: string | string[] | null; method?: string | null; handler: HandlerFunction | ErrorHandlerFunction | { stack: RouteObject[]; }; isUse: boolean; isErrorHandler?: boolean; }; export type RouteObjectMakerArgs = { callback: HandlerFunction | ErrorHandlerFunction | Router; url?: string | null | string[]; method: string | null; isUse: boolean; isErrorHandler: boolean; }; export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS' | 'HEAD'; export type Middleware = (req: any, res: any, next: any) => void; export type Router = { stack: RouteObject[]; addRoute(method: HttpMethod, url: string, ...middleware: Middleware[]): void; get(url: string, ...middleware: Middleware[]): void; post(url: string, ...middleware: Middleware[]): void; put(url: string, ...middleware: Middleware[]): void; delete(url: string, ...middleware: Middleware[]): void; options(url: string, ...middleware: Middleware[]): void; head(url: string, ...middleware: Middleware[]): void; use(urlOrMiddleware: string | string[] | Middleware | Router, ...middleware: Middleware[] | Router[]): void; }; import { Http2SecureServer, Http2Server } from 'http2'; import { Server as HttpServer } from 'http'; import { Server as HttpsServer } from 'https'; import { Server as NetServer } from 'net'; export type JaiServer = HttpServer & Http2Server & Http2SecureServer & NetServer | Http2Server | Http2SecureServer | HttpServer | HttpsServer; export type JaiProto = Router & { listen(port: number, host?: string, ...args: any[]): JaiServer; close(callback: () => void): void; getConfig(): JaiServerConfig; server?: JaiServer; requestHandler?: (req: any, res: any) => void; }; export type sendFileOptions = { root: string; dotfiles: string; lastModified: true; etag: true; acceptRanges: true; cacheControl: true; fallthrough: boolean; }; import { ServerResponse as HttpServerResponse } from 'http'; import { Http2ServerResponse } from 'http2'; export type JaiServerConfig = { http2?: boolean; https?: { key: string | Buffer; cert: string | Buffer; }; allowHTTP1?: boolean; host?: string; [key: string]: any; Http1ServerResponse?: typeof HttpServerResponse; Http2ServerResponse?: typeof Http2ServerResponse; port?: number; static?: any; bodyParser?: any; httpVersion?: string; protocol?: string; timeout?: number; }; export type Params = { [key: string]: string | number | boolean | undefined; }; import { IncomingMessage } from 'http'; export interface RequestObject extends IncomingMessage { params?: Params; body?: any; method?: string; url?: string; originalUrl?: string; protocol?: string; path?: string; host?: string; port?: number; query?: Record<string, string>; ip?: string; timeOutId?: NodeJS.Timeout | any; } export interface ExtendedServerResponse extends ServerResponse { send: (data?: any) => void; json: (data?: any) => void; set: (key: string, value: string) => void; redirect: (link: string, statusCode?: number) => void; get: (key: string) => string | undefined; status: (statusCode: number) => ExtendedServerResponse; header: (key: string, value: string) => ExtendedServerResponse; sendFile: (filePath: string, options: sendFileOptions, callback: Function) => void; JAI: true; clearSetTimeout: () => void; } export type RequestHandlerExtended = (req: any, res: any) => void;