CLI · middleware

cem add middleware

Generate a new custom middleware that conforms to the enforced <name>.middleware.ts naming convention.

bash
cem add middleware requestLogger

Creates src/app/middlewares/requestLogger.middleware.ts wrapped with catchAsync so async errors are handled correctly.

Generated boilerplate

src/app/middlewares/requestLogger.middleware.tsts
import { NextFunction, Request, Response } from 'express';
import { catchAsync } from '../utils/catchAsync';
import logger from '../utils/logger';

const requestLogger = catchAsync(
  async (req: Request, _res: Response, next: NextFunction) => {
    logger.info(`Incoming Request ➔ [${req.method}] ${req.originalUrl}`);
    next();
  },
);

export default requestLogger;

Register it

src/app.tsts
import requestLogger from './app/middlewares/requestLogger.middleware';

const app: Application = express();

app.use(requestLogger); // global logger

Protected core middlewares

These ship with every project and cannot be deleted via cem remove:

  • auth.middleware.ts — JWT role guard
  • globalErrorHandler.middleware.ts — JSON error mapper
  • notFound.middleware.ts — 404 router
  • rateLimiter.middleware.ts — global + login limiters