UNPKG

http-micro

Version:

Micro-framework on top of node's http module

40 lines (39 loc) 1.79 kB
/// <reference types="node" /> import * as net from "net"; import * as http from "http"; import * as https from "https"; export declare type MicroServer = MicroHttpServer | MicroHttpsServer; export declare type MicroHttpServer = http.Server & MicroServerExtensions; export declare type MicroHttpsServer = https.Server & MicroServerExtensions; export declare type MicroServerExtensions = IShutdown & { micro: MicroExtensionContainer; }; export declare type MicroExtensionContainer = { shutdownManager: ShutdownManager; clientErrorHandler: (err: any, socket: net.Socket) => void; }; export declare function attachServerExtensions(server: http.Server | https.Server, socketErrorHandler?: (err: any, socket: net.Socket) => void): MicroServer; export declare function detachServerExtensions(server: http.Server | https.Server): void; export interface IShutdown { shutdown: (gracePeriodMs?: number, callback?: Function) => void; } export declare type ShutdownListener = (isForcedExit: boolean) => void; export declare class ShutdownManager implements IShutdown { server: http.Server | https.Server; socketRequestCountMap: Map<net.Socket, number>; shutdownRequested: boolean; private _shutdownListeners; private _onConnectionBound; private _onRequestBound; private _destroySocketsBound; constructor(server: http.Server | https.Server); destroy(): void; shutdown(gracePeriodMs?: number, callback?: ShutdownListener): void; private _onConnection(socket); private _onSocketClose(socket); private _invokeAndResetShutdownListeners(isForcedExit); private _onRequest(req, res); private _onResponseFinished(socket); private _destroySockets(); private _pushListener(listener); }