// src/lib/asyncHandler.ts import type { Request, Response, NextFunction, RequestHandler } from 'express'; /** * Wraps an async Express handler so any thrown error / rejected promise * is forwarded to `next()` (and thus to our centralized error middleware). */ export function asyncHandler< Req extends Request = Request, Res extends Response = Response, >(fn: (req: Req, res: Res, next: NextFunction) => Promise): RequestHandler { return (req, res, next) => { Promise.resolve(fn(req as Req, res as Res, next)).catch(next); }; }