catch-unknown
Version:
Utility functions for writing type-safe catch blocks
36 lines • 1.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.asError = exports.isError = void 0;
function isObject(value) {
return typeof value === 'object' && value != null;
}
function getObjectMessage(obj) {
if (typeof obj.message === 'string') {
return obj.message;
}
if (obj.toString !== Object.prototype.toString) {
return obj.toString();
}
try {
return JSON.stringify(obj);
}
catch (_a) {
return String(obj);
}
}
function isError(err) {
return (isObject(err) &&
typeof err.name === 'string' &&
typeof err.message === 'string' &&
(!('stack' in err) || typeof err.stack === 'string'));
}
exports.isError = isError;
function asError(err) {
if (isError(err))
return err;
const error = new Error(isObject(err) ? getObjectMessage(err) : String(err));
error.name = (isObject(err) && err.constructor.name) || typeof err;
return error;
}
exports.asError = asError;
//# sourceMappingURL=index.js.map