import { Request, Response } from 'express'; import { BaseController } from '../BaseController'; import { route } from '../route'; import { useMiddleware } from '../useMiddleware'; import buildController from '../utils/buildController'; @useMiddleware((req, res, n) => { res.locals.count = 0; n() }) /** Can also be an array of middleware! */ class ClassLevelMiddlewareController extends BaseController { static PATH = '/classLevelMiddleware' @route({ middleware: (req, res, n) => { res.locals.count++; n(); } }) /** Count was provided by class-level middleware since it always runs first! */ async route_1(req: Request, res: Response, n) { res.status(200).send( `[${this.constructor.name}] This is an example of a root class-level middleware.

Count: ${res.locals.count} ` ); } } export default buildController(ClassLevelMiddlewareController)