UNPKG

@renegade-fi/core

Version:
57 lines 2.3 kB
import axios, {} from 'axios'; export class PriceReporterError extends Error { constructor(message) { super(`PriceReporterError: ${message}`); Object.setPrototypeOf(this, PriceReporterError.prototype); } } export class HttpError extends PriceReporterError { /** * Creates a new HttpError with detailed error information * @param error - The original error (typically an AxiosError) * @param url - The URL that was being accessed * @param method - The HTTP method that was being used * @param customMessage - Optional custom message prefix (defaults to "HTTP request failed") */ constructor(error, url, method, customMessage = 'HTTP request failed') { const requestInfo = `[${method.toUpperCase()}] ${url}`; let finalMessage = `${customMessage} - ${requestInfo}`; if (axios.isAxiosError(error)) { const axiosError = error; if (axiosError.response) { const { status, statusText, data } = axiosError.response; const errorCode = axiosError.code ? ` (${axiosError.code})` : ''; const errorMessage = typeof data === 'string' ? `: ${data}` : ''; finalMessage = `${finalMessage} - Received ${status} ${statusText}${errorCode}${errorMessage}`; } else if (axiosError.request) { finalMessage = `${finalMessage} - No response received from server`; } else { finalMessage = `${finalMessage} - Request failed: ${axiosError.message}`; } } super(finalMessage); Object.defineProperty(this, "status", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "details", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.setPrototypeOf(this, HttpError.prototype); if (axios.isAxiosError(error) && error.response) { this.status = error.response.status; this.details = error.response.data; } else { this.details = error; } } } //# sourceMappingURL=error.js.map