eyeglass
Version:
Sass modules for npm.
62 lines • 1.88 kB
JavaScript
;
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