agent-smith/src/products/errors.ts
2026-02-26 19:41:09 +01:00

30 lines
849 B
TypeScript

import { ProductErrorCode } from './enums.js';
export interface ProductErrorPayload {
message: string;
[key: string]: any;
}
export class ProductError extends Error {
public readonly code: ProductErrorCode;
public readonly payload: ProductErrorPayload;
constructor(code: ProductErrorCode, payload: ProductErrorPayload | string) {
const message = typeof payload === 'string' ? payload : payload.message;
super(message);
this.code = code;
this.payload = typeof payload === 'string' ? { message: payload } : payload;
// Restore prototype chain
Object.setPrototypeOf(this, new.target.prototype);
}
toJSON() {
return {
code: this.code,
message: this.message,
payload: this.payload
};
}
}