export class AppError extends Error { readonly statusCode: number; readonly code: string; constructor(message: string, code: string, statusCode = 400) { super(message); this.name = "AppError"; this.code = code; this.statusCode = statusCode; } } export class ConflictError extends AppError { constructor(message: string) { super(message, "CONFLICT", 409); this.name = "ConflictError"; } } export class UnauthorizedError extends AppError { constructor(message = "unauthorized") { super(message, "UNAUTHORIZED", 401); this.name = "UnauthorizedError"; } }