export class ApiError extends Error { constructor( public statusCode: number, message: string, public code: string = "INTERNAL_ERROR" ) { super(message); this.name = "ApiError"; } } export const ApiErrors = { UNAUTHORIZED: () => new ApiError(401, "Unauthorized", "UNAUTHORIZED"), FORBIDDEN: () => new ApiError(403, "Forbidden", "FORBIDDEN"), NOT_FOUND: (resource: string) => new ApiError(404, `${resource} not found`, "NOT_FOUND"), INVALID_REQUEST: (message: string) => new ApiError(400, message, "INVALID_REQUEST"), UNPROCESSABLE: (message: string) => new ApiError(422, message, "UNPROCESSABLE"), RATE_LIMITED: () => new ApiError(429, "Too many requests", "RATE_LIMITED"), INTERNAL_SERVER_ERROR: (message?: string) => new ApiError(500, message || "Internal server error", "INTERNAL_SERVER_ERROR"), };