bktide
Version:
Command-line interface for Buildkite CI/CD workflows with rich shell completions (Fish, Bash, Zsh) and Alfred workflow integration for macOS power users
98 lines • 2.91 kB
JavaScript
import { logger } from '../../services/logger.js';
/**
* Base class for error formatters
*/
export class BaseErrorFormatter {
format(data, formatFn, options) {
if (options?.debug) {
logger.debug(`Formatting with ${this.name} formatter`);
}
return formatFn(data, options);
}
/**
* Extract error message from an error object
* @param error The error object
* @returns The error message
*/
getErrorMessage(error) {
if (error instanceof Error) {
return error.message;
}
else if (error && typeof error === 'object') {
const errorObj = error;
if (errorObj.message && typeof errorObj.message === 'string') {
return errorObj.message;
}
return 'Unknown object error';
}
return String(error);
}
/**
* Extract error name from an error object
* @param error The error object
* @returns The error name
*/
getErrorName(error) {
if (error instanceof Error) {
return error.name;
}
else if (error && typeof error === 'object') {
const errorObj = error;
if (errorObj.name && typeof errorObj.name === 'string') {
return errorObj.name;
}
}
return 'Error';
}
/**
* Extract stack trace from an error object
* @param error The error object
* @returns The stack trace or undefined
*/
getStackTrace(error) {
if (error instanceof Error) {
return error.stack;
}
else if (error && typeof error === 'object') {
const errorObj = error;
if (errorObj.stack && typeof errorObj.stack === 'string') {
return errorObj.stack;
}
}
return undefined;
}
/**
* Extract API errors from an error object
* @param error The error object
* @returns Array of API errors or undefined
*/
getApiErrors(error) {
if (error && typeof error === 'object') {
const errorObj = error;
const response = errorObj.response;
if (response?.errors && Array.isArray(response.errors)) {
return response.errors;
}
}
return undefined;
}
/**
* Extract request details from an error object
* @param error The error object
* @returns Request details or undefined
*/
getRequestDetails(error) {
if (error && typeof error === 'object') {
const errorObj = error;
const request = errorObj.request;
if (request) {
return {
url: request.url,
method: request.method
};
}
}
return undefined;
}
}
//# sourceMappingURL=Formatter.js.map