import type { ApiErrorOptions } from './types'; export { AxiosError } from 'axios'; /** * Base error class that properly extends default Error class in TypeScript * By extending other errors from this one, you don't need to do additional manipulations * (e.g. override constructor, set prototype, set name, etc.) */ export class BaseError extends Error { public readonly cause?: ErrorOptions['cause']; constructor(message: string, options: ErrorOptions = {}) { super(message, options); Object.setPrototypeOf(this, new.target.prototype); this.name = this.constructor.name; } } export class ApiError extends BaseError { public readonly statusCode?: ApiErrorOptions['statusCode']; constructor(message: string, { statusCode, ...options }: ApiErrorOptions = {}) { super(message, options); this.statusCode = statusCode; } } export class ApiTimeoutError extends ApiError { }