import type {IHttpRequest, IHttpResponse, IMiddleware} from "./interfaces"; import type {RequestHandler} from "express"; import {injectable} from "inversify"; type Class = new (...arg: unknown[]) => T; // noinspection JSUnusedGlobalSymbols export function ExpressMiddleware(native: RequestHandler): Class { @injectable() class ExpressMiddlewareWrapper implements IMiddleware { handle(req: IHttpRequest, res: IHttpResponse): Promise { return new Promise((resolve, reject) => { native(req, res, (err?: unknown) => (err ? reject(err) : resolve())) }) } } return ExpressMiddlewareWrapper }