Uecko_ERP/apps/server/src/common/presentation/express/api-error.ts

38 lines
966 B
TypeScript
Raw Normal View History

2025-02-01 21:48:13 +00:00
interface IApiErrorOptions {
status: number;
title: string;
detail: string;
type?: string;
instance?: string;
errors?: any[];
[key: string]: any; // Para permitir añadir campos extra
}
export class ApiError extends Error {
public status: number;
public title: string;
public detail: string;
public type: string;
public instance?: string;
public errors?: any[];
public timestamp: string;
constructor(options: IApiErrorOptions) {
super(options.title);
// Asegura que la instancia sea reconocida correctamente como ApiError
Object.setPrototypeOf(this, ApiError.prototype);
// Campos obligatorios
this.status = options.status;
this.title = options.title;
this.detail = options.detail;
this.timestamp = new Date().toISOString();
// Campos opcionales con valores por defecto
this.type = options.type ?? "about:blank";
this.instance = options.instance;
this.errors = options.errors;
}
}