// lib/errors.ts export type ValidationIssue = { path: string; message: string; }; export type AppError = | { type: 'validation'; message: string; issues?: ValidationIssue[]; } | { type: 'not_found'; message: string; } | { type: 'conflict'; message: string; } | { type: 'unauthorized'; message: string; } | { type: 'forbidden'; message: string; } | { type: 'unexpected'; message: string; }; export const Errors = { validation(message: string, issues?: ValidationIssue[]): AppError { return { type: 'validation', message, issues }; }, notFound(message = 'Resource not found'): AppError { return { type: 'not_found', message }; }, conflict(message: string): AppError { return { type: 'conflict', message }; }, unauthorized(message = 'Unauthorized'): AppError { return { type: 'unauthorized', message }; }, forbidden(message = 'Forbidden'): AppError { return { type: 'forbidden', message }; }, unexpected(message = 'Unexpected error'): AppError { return { type: 'unexpected', message }; }, };