@vitruvius-labs/ts-predicate
Version:
TypeScript predicates library
26 lines (25 loc) • 1.32 kB
JavaScript
import { normalizeErrorTree } from "./normalize-error-tree.mjs";
var TreeStructure;
(function (TreeStructure) {
TreeStructure["CHILD_CONNECTOR"] = "\u251C\u2500\u2500\u2500 ";
TreeStructure["LAST_CHILD_CONNECTOR"] = "\u2514\u2500\u2500\u2500 ";
TreeStructure["CHILD_INDENT"] = "\u2502 ";
TreeStructure["LAST_CHILD_INDENT"] = " ";
})(TreeStructure || (TreeStructure = {}));
function generateTreeStructure(errors, indent) {
let result = "";
const LAST_INDEX = errors.length - 1;
errors.forEach((error, index) => {
const IS_LAST_CHILD = index === LAST_INDEX;
const CONNECTOR = IS_LAST_CHILD ? "\u2514\u2500\u2500\u2500 " /* TreeStructure.LAST_CHILD_CONNECTOR */ : "\u251C\u2500\u2500\u2500 " /* TreeStructure.CHILD_CONNECTOR */;
const INDENT = IS_LAST_CHILD ? " " /* TreeStructure.LAST_CHILD_INDENT */ : "\u2502 " /* TreeStructure.CHILD_INDENT */;
result = `${result}${indent}${CONNECTOR}${error.message}\n`;
result = result + generateTreeStructure(error.causes, `${indent}${INDENT}`);
});
return result;
}
function stringifyErrorTree(error) {
const ERROR = (error instanceof Error) ? normalizeErrorTree(error) : error;
return `${ERROR.message}\n${generateTreeStructure(ERROR.causes, "")}`;
}
export { stringifyErrorTree };