@coinbase/agentkit
Version:
Coinbase AgentKit core primitives
66 lines (65 loc) • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMessariError = createMessariError;
exports.formatMessariApiError = formatMessariApiError;
exports.formatGenericError = formatGenericError;
/**
* Creates a MessariError from an HTTP response
*
* @param response - The fetch Response object
* @returns A MessariError with response details
*/
async function createMessariError(response) {
const error = new Error(`Messari API returned ${response.status} ${response.statusText}`);
error.status = response.status;
error.statusText = response.statusText;
const responseText = await response.text();
error.responseText = responseText;
try {
const errorJson = JSON.parse(responseText);
error.errorResponse = errorJson;
}
catch {
// If parsing fails, just use the raw text
}
return error;
}
/**
* Formats error details for API errors
*
* @param error - The MessariError to format
* @returns Formatted error message
*/
function formatMessariApiError(error) {
if (error.errorResponse?.error) {
return `Messari API Error: ${error.errorResponse.error}`;
}
const errorDetails = {
status: error.status,
statusText: error.statusText,
responseText: error.responseText,
message: error.message,
};
return `Messari API Error: ${JSON.stringify(errorDetails, null, 2)}`;
}
/**
* Formats generic errors
*
* @param error - The error to format
* @returns Formatted error message
*/
function formatGenericError(error) {
// Check if this might be a JSON string containing an error message
if (typeof error === "string") {
try {
const parsedError = JSON.parse(error);
if (parsedError.error) {
return `Messari API Error: ${parsedError.error}`;
}
}
catch {
// Not valid JSON, continue with normal handling
}
}
return `Unexpected error: ${error instanceof Error ? error.message : String(error)}`;
}