| /** | |
| * Custom application exceptions. | |
| * @module errors | |
| */ | |
| export class AppError extends Error { | |
| public readonly statusCode: number; | |
| public readonly isOperational: boolean; | |
| constructor( | |
| message: string, | |
| statusCode: number = 500, | |
| isOperational: boolean = true | |
| ) { | |
| super(message); | |
| this.statusCode = statusCode; | |
| this.isOperational = isOperational; | |
| Error.captureStackTrace(this, this.constructor); | |
| } | |
| } | |
| export class ValidationError extends AppError { | |
| constructor(message: string) { | |
| super(message, 400); | |
| } | |
| } | |
| export class NotFoundError extends AppError { | |
| constructor(resource: string) { | |
| super(`${resource} not found`, 404); | |
| } | |
| } | |
| export class AuthenticationError extends AppError { | |
| constructor(message: string = 'Authentication failed') { | |
| super(message, 401); | |
| } | |
| } | |