@vitruvius-labs/ts-predicate
Version:
TypeScript predicates library
23 lines (22 loc) • 777 B
JavaScript
import { ValidationError } from "../type-assertion/utils/validation-error.mjs";
import { toError } from "./to-error.mjs";
function normalizeErrorTree(error) {
const ERROR = {
message: error.message === "" ? "An unknown error occurred." : error.message,
// eslint-disable-next-line @ts/no-use-before-define -- Circularity
causes: getCauses(error),
};
return ERROR;
}
function getCauses(error) {
if (error instanceof AggregateError || error instanceof ValidationError) {
return error.errors.map((cause) => {
return normalizeErrorTree(toError(cause));
});
}
if (error.cause !== undefined) {
return [normalizeErrorTree(toError(error.cause))];
}
return [];
}
export { normalizeErrorTree };