34 lines
719 B
JavaScript
34 lines
719 B
JavaScript
export default class BaseError extends Error {
|
|
details = {};
|
|
|
|
constructor(error) {
|
|
let computedError;
|
|
|
|
try {
|
|
computedError = JSON.parse(error);
|
|
} catch {
|
|
computedError =
|
|
typeof error === 'string' || Array.isArray(error) ? { error } : error;
|
|
}
|
|
|
|
let computedMessage;
|
|
|
|
try {
|
|
// challenge to input to see if it is stringified JSON
|
|
JSON.parse(error);
|
|
computedMessage = error;
|
|
} catch {
|
|
if (typeof error === 'string') {
|
|
computedMessage = error;
|
|
} else {
|
|
computedMessage = JSON.stringify(error, null, 2);
|
|
}
|
|
}
|
|
|
|
super(computedMessage);
|
|
|
|
this.details = computedError;
|
|
this.name = this.constructor.name;
|
|
}
|
|
}
|