From 9236f173b86e92a8fcdb56d80ef2f6aeead1e908 Mon Sep 17 00:00:00 2001 From: Leonardo Bazico Date: Tue, 11 May 2021 22:00:48 -0300 Subject: [PATCH 1/2] chore(typescript): extract handlers types --- src/types.ts | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/src/types.ts b/src/types.ts index f90c0f2f..101254f2 100644 --- a/src/types.ts +++ b/src/types.ts @@ -29,20 +29,14 @@ export interface Options extends httpProxy.ServerOptions { | ((req: Request) => httpProxy.ServerOptions['target']) | ((req: Request) => Promise); logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent'; - logProvider?(provider: LogProvider): LogProvider; - - onError?(err: Error, req: Request, res: Response): void; - onProxyRes?(proxyRes: http.IncomingMessage, req: Request, res: Response): void; - onProxyReq?(proxyReq: http.ClientRequest, req: Request, res: Response): void; - onProxyReqWs?( - proxyReq: http.ClientRequest, - req: Request, - socket: net.Socket, - options: httpProxy.ServerOptions, - head: any - ): void; - onOpen?(proxySocket: net.Socket): void; - onClose?(res: Response, socket: net.Socket, head: any): void; + logProvider?: LogProviderCallback; + + onError?: OnErrorCallback; + onProxyRes?: OnProxyResCallback; + onProxyReq?: OnProxyReqCallback; + onProxyReqWs?: OnProxyReqWsCallback; + onOpen?: OnOpenCallback; + onClose?: OnCloseCallback; } interface LogProvider { @@ -54,3 +48,27 @@ interface LogProvider { } type Logger = (...args: any[]) => void; + +export type LogProviderCallback = (provider: LogProvider) => LogProvider; + +export type OnErrorCallback = (err: Error, req: Request, res: Response) => void; +export type OnProxyResCallback = ( + proxyRes: http.IncomingMessage, + req: Request, + res: Response +) => void; +export type OnProxyReqCallback = ( + proxyReq: http.ClientRequest, + req: Request, + res: Response +) => void; +export type OnProxyReqWsCallback = ( + proxyReq: http.ClientRequest, + req: Request, + socket: net.Socket, + options: httpProxy.ServerOptions, + head: any +) => void; +export type OnCloseCallback = (res: Response, socket: net.Socket, head: any) => void; + +export type OnOpenCallback = (proxySocket: net.Socket) => void; From 6c50ccd1a11b38c1306cc44c201be92dfbe23c14 Mon Sep 17 00:00:00 2001 From: Leonardo Bazico Date: Tue, 11 May 2021 22:06:44 -0300 Subject: [PATCH 2/2] chore(typescript): set callback types based on the http-proxy --- src/types.ts | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/types.ts b/src/types.ts index 101254f2..767a5688 100644 --- a/src/types.ts +++ b/src/types.ts @@ -9,6 +9,7 @@ import type * as express from 'express'; import type * as http from 'http'; import type * as httpProxy from 'http-proxy'; import type * as net from 'net'; +import type * as url from 'url'; export interface Request extends express.Request {} export interface Response extends express.Response {} @@ -51,24 +52,38 @@ type Logger = (...args: any[]) => void; export type LogProviderCallback = (provider: LogProvider) => LogProvider; -export type OnErrorCallback = (err: Error, req: Request, res: Response) => void; +/** + * Use types based on the events listeners from http-proxy + * https://github.com/DefinitelyTyped/DefinitelyTyped/blob/51504fd999031b7f025220fab279f1b2155cbaff/types/http-proxy/index.d.ts + */ +export type OnErrorCallback = ( + err: Error, + req: http.IncomingMessage, + res: http.ServerResponse, + target?: string | Partial +) => void; export type OnProxyResCallback = ( proxyRes: http.IncomingMessage, - req: Request, - res: Response + req: http.IncomingMessage, + res: http.ServerResponse ) => void; export type OnProxyReqCallback = ( proxyReq: http.ClientRequest, - req: Request, - res: Response + req: http.IncomingMessage, + res: http.ServerResponse, + options: httpProxy.ServerOptions ) => void; export type OnProxyReqWsCallback = ( proxyReq: http.ClientRequest, - req: Request, + req: http.IncomingMessage, socket: net.Socket, options: httpProxy.ServerOptions, head: any ) => void; -export type OnCloseCallback = (res: Response, socket: net.Socket, head: any) => void; +export type OnCloseCallback = ( + proxyRes: http.IncomingMessage, + proxySocket: net.Socket, + proxyHead: any +) => void; export type OnOpenCallback = (proxySocket: net.Socket) => void;