@mark01/express-utils
Version:
npm package that contains utilities for express.js
39 lines (38 loc) • 1.02 kB
JavaScript
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 {
return String(obj);
}
}
export function isError(err) {
return (isObject(err) &&
typeof err.name === 'string' &&
typeof err.message === 'string' &&
(!('stack' in err) || typeof err.stack === 'string'));
}
export function asError(err) {
if (isError(err))
return err;
const error = new Error(isObject(err) ? getObjectMessage(err) : String(err));
if (isObject(err) && err.constructor && err.constructor.name !== 'Object') {
error.name = err.constructor.name;
}
else if (!isObject(err)) {
error.name = typeof err;
}
else {
error.name = 'Object';
}
return error;
}