From b7ea18402ffb183d0b7dbc13bc5471f7833e9f63 Mon Sep 17 00:00:00 2001 From: notaphplover Date: Thu, 30 Jan 2025 02:10:01 +0100 Subject: [PATCH] Update BaseMiddleware to allow async handlers (#419) * feat: update BaseMiddleware to allow async handlers * fix: update Server.resolveMiddleware update resolveMiddleware to return handler result * docs: update docs * feat: update server to return handler result --- CHANGELOG.md | 1 + src/base_middleware.ts | 4 ++-- src/server.ts | 9 +++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac1e60f..69687d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Changed +- Updated `BaseMiddleware.handler` to allow async handlers. ### Fixed diff --git a/src/base_middleware.ts b/src/base_middleware.ts index 01e93e5..dbc054d 100644 --- a/src/base_middleware.ts +++ b/src/base_middleware.ts @@ -18,6 +18,6 @@ export abstract class BaseMiddleware implements BaseMiddleware { public abstract handler( req: Request, res: Response, - next: NextFunction, - ): void; + next: NextFunction + ): void | Promise; } diff --git a/src/server.ts b/src/server.ts index 8fa8dc6..3d4558f 100644 --- a/src/server.ts +++ b/src/server.ts @@ -265,11 +265,16 @@ export class InversifyExpressServer { this._container.get(middlewareItem); if (middlewareInstance instanceof BaseMiddleware) { - return (req: Request, res: Response, next: NextFunction): void => { + return ( + req: Request, + res: Response, + next: NextFunction, + ): void | Promise => { const mReq: BaseMiddleware = this._container.get(middlewareItem); mReq.httpContext = this._getHttpContext(req); - mReq.handler(req, res, next); + + return mReq.handler(req, res, next); }; }