From 8c9ebc30e5452ff9381af5d79f547394fa55633c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?X=C3=AC=20G=C3=A0?= Date: Wed, 22 Nov 2023 23:48:59 +0700 Subject: [PATCH] fix(typings): allow to bind to a non-secure Http2Server (#4853) --- lib/index.ts | 45 ++++++++++++++++----------------------------- 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index 5bd1d03d9b..48497e3352 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,6 +1,6 @@ import http = require("http"); import type { Server as HTTPSServer } from "https"; -import type { Http2SecureServer } from "http2"; +import type { Http2SecureServer, Http2Server } from "http2"; import { createReadStream } from "fs"; import { createDeflate, createGzip, createBrotliCompress } from "zlib"; import accepts = require("accepts"); @@ -56,6 +56,12 @@ type ParentNspNameMatchFn = ( type AdapterConstructor = typeof Adapter | ((nsp: Namespace) => Adapter); +type TServerInstance = + | http.Server + | HTTPSServer + | Http2SecureServer + | Http2Server; + interface ServerOptions extends EngineOptions, AttachOptions { /** * name of the path to capture @@ -203,7 +209,7 @@ export class Server< * @private */ _connectTimeout: number; - private httpServer: http.Server | HTTPSServer | Http2SecureServer; + private httpServer: TServerInstance; private _corsMiddleware: ( req: http.IncomingMessage, res: http.ServerResponse, @@ -217,28 +223,13 @@ export class Server< * @param [opts] */ constructor(opts?: Partial); + constructor(srv?: TServerInstance | number, opts?: Partial); constructor( - srv?: http.Server | HTTPSServer | Http2SecureServer | number, - opts?: Partial - ); - constructor( - srv: - | undefined - | Partial - | http.Server - | HTTPSServer - | Http2SecureServer - | number, + srv: undefined | Partial | TServerInstance | number, opts?: Partial ); constructor( - srv: - | undefined - | Partial - | http.Server - | HTTPSServer - | Http2SecureServer - | number, + srv: undefined | Partial | TServerInstance | number, opts: Partial = {} ) { super(); @@ -271,9 +262,7 @@ export class Server< opts.cleanupEmptyChildNamespaces = !!opts.cleanupEmptyChildNamespaces; this.sockets = this.of("/"); if (srv || typeof srv == "number") - this.attach( - srv as http.Server | HTTPSServer | Http2SecureServer | number - ); + this.attach(srv as TServerInstance | number); if (this.opts.cors) { this._corsMiddleware = corsMiddleware(this.opts.cors); @@ -407,7 +396,7 @@ export class Server< * @return self */ public listen( - srv: http.Server | HTTPSServer | Http2SecureServer | number, + srv: TServerInstance | number, opts: Partial = {} ): this { return this.attach(srv, opts); @@ -421,7 +410,7 @@ export class Server< * @return self */ public attach( - srv: http.Server | HTTPSServer | Http2SecureServer | number, + srv: TServerInstance | number, opts: Partial = {} ): this { if ("function" == typeof srv) { @@ -527,7 +516,7 @@ export class Server< * @private */ private initEngine( - srv: http.Server | HTTPSServer | Http2SecureServer, + srv: TServerInstance, opts: EngineOptions & AttachOptions ): void { // initialize engine @@ -550,9 +539,7 @@ export class Server< * @param srv http server * @private */ - private attachServe( - srv: http.Server | HTTPSServer | Http2SecureServer - ): void { + private attachServe(srv: TServerInstance): void { debug("attaching client serving req handler"); const evs = srv.listeners("request").slice(0);