/** * Custom Error Classes for Homelab Topology API * * Structured error hierarchy following nodejs-backend-patterns skill. * All operational errors extend AppError with appropriate HTTP status codes. */ export class AppError extends Error { constructor( public message: string, public statusCode: number = 500, public isOperational: boolean = true ) { super(message); Object.setPrototypeOf(this, AppError.prototype); Error.captureStackTrace(this, this.constructor); } } export class NotFoundError extends AppError { constructor(message: string = 'Resource not found') { super(message, 404); } } export class ValidationError extends AppError { constructor(message: string, public errors?: Array<{ field: string; message: string }>) { super(message, 400); } } export class ServiceUnavailableError extends AppError { constructor(message: string = 'Service temporarily unavailable') { super(message, 503); } }