CLI · middleware

cem add middleware

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

bash
# Single middleware
cem add middleware requestLogger

# Batch — create several at once
cem add middleware requestLogger errorLogger corsHandler

Creates src/app/middlewares/<name>.middleware.ts for each name, 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 middleware — the CLI warns and skips them:

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

Removing custom middlewares

bash
cem remove middleware requestLogger
cem remove middleware requestLogger errorLogger
cem rm middleware requestLogger errorLogger