UNPKG

eyeglass

Version:
62 lines 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assertions_1 = require("./assertions"); function hasMessage(o) { return typeof o === "object" && o !== null && typeof o.message === "string"; } function errorMessageFor(err) { switch (typeof err) { case "bigint": return err.toString(); case "boolean": return err.toString(); case "number": return err.toString(); case "string": return err.toString(); case "function": return assertions_1.unreachable(); case "object": if (hasMessage(err)) { return err.message || "The cause is unknown."; } else if (err !== null) { // [Object object] unless they've customized the toString behavior. return err.toString(); } else { return "The cause is unknown."; } case "symbol": return Symbol.keyFor(err) || "The cause is unknown."; case "undefined": return "The cause is unknown."; default: return assertions_1.unreachable(); } } exports.errorMessageFor = errorMessageFor; function errorFor(err, messagePrefix) { if (err === null || typeof err === "undefined") return null; if (typeof err === "function") { try { err = err(); } catch (e) { err = e; } } if (err instanceof Error) { if (messagePrefix) { err.message = `${messagePrefix}: ${err.message}`; } return err; } let message = errorMessageFor(err); return new Error(messagePrefix ? `${messagePrefix}: ${message}` : message); } exports.default = errorFor; //# sourceMappingURL=errorFor.js.map