UNPKG

@northscaler/service-support

Version:

Artifacts that assist in writing service layers effectively

44 lines (41 loc) 4.42 kB
'use strict'; /** * @typedef {object} FormattedError * @property {string} [name] * @property {string} [message] * @property {string} [code] * @property {*} [info] * @property {string} [stack] * @property {object} [cause] */ /** * Formats the given error as a plain object. * * @param {object} [arg0] The argument to be deconstructed. * @param {object} [error] The `Error` (or `Error`-like object) to be formatted. * @param {boolean} [includeStack=true] Whether to include the `stack` property. * @param {boolean} [includeCause=true] Whether to include the `cause` property. * @return {FormattedError} The formatted error as a literal object. */ function formatError({ error, includeStack = true, includeCause = true } = {}) { if (!error) return error; const e = { name: error.name }; if (error.message) e.message = error.message.toString(); if (error.code) e.code = error.code.toString(); if (error.info) e.info = error.info; if (includeStack && error.stack) e.stack = error.stack.toString(); if (includeCause && error.cause) e.cause = formatError({ error: error.cause, includeStack, includeCause }); return e; } module.exports = formatError; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYWluL2Zvcm1hdHRlcnMvZXJyb3ItZm9ybWF0dGVyLmpzIl0sIm5hbWVzIjpbImZvcm1hdEVycm9yIiwiZXJyb3IiLCJpbmNsdWRlU3RhY2siLCJpbmNsdWRlQ2F1c2UiLCJlIiwibmFtZSIsIm1lc3NhZ2UiLCJ0b1N0cmluZyIsImNvZGUiLCJpbmZvIiwic3RhY2siLCJjYXVzZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxTQUFTQSxXQUFULENBQXNCO0FBQ3BCQyxFQUFBQSxLQURvQjtBQUVwQkMsRUFBQUEsWUFBWSxHQUFHLElBRks7QUFHcEJDLEVBQUFBLFlBQVksR0FBRztBQUhLLElBSWxCLEVBSkosRUFJUTtBQUNOLE1BQUksQ0FBQ0YsS0FBTCxFQUFZLE9BQU9BLEtBQVA7QUFFWixRQUFNRyxDQUFDLEdBQUc7QUFBRUMsSUFBQUEsSUFBSSxFQUFFSixLQUFLLENBQUNJO0FBQWQsR0FBVjtBQUVBLE1BQUlKLEtBQUssQ0FBQ0ssT0FBVixFQUFtQkYsQ0FBQyxDQUFDRSxPQUFGLEdBQVlMLEtBQUssQ0FBQ0ssT0FBTixDQUFjQyxRQUFkLEVBQVo7QUFDbkIsTUFBSU4sS0FBSyxDQUFDTyxJQUFWLEVBQWdCSixDQUFDLENBQUNJLElBQUYsR0FBU1AsS0FBSyxDQUFDTyxJQUFOLENBQVdELFFBQVgsRUFBVDtBQUNoQixNQUFJTixLQUFLLENBQUNRLElBQVYsRUFBZ0JMLENBQUMsQ0FBQ0ssSUFBRixHQUFTUixLQUFLLENBQUNRLElBQWY7QUFFaEIsTUFBSVAsWUFBWSxJQUFJRCxLQUFLLENBQUNTLEtBQTFCLEVBQWlDTixDQUFDLENBQUNNLEtBQUYsR0FBVVQsS0FBSyxDQUFDUyxLQUFOLENBQVlILFFBQVosRUFBVjtBQUNqQyxNQUFJSixZQUFZLElBQUlGLEtBQUssQ0FBQ1UsS0FBMUIsRUFBaUNQLENBQUMsQ0FBQ08sS0FBRixHQUFVWCxXQUFXLENBQUM7QUFBRUMsSUFBQUEsS0FBSyxFQUFFQSxLQUFLLENBQUNVLEtBQWY7QUFBc0JULElBQUFBLFlBQXRCO0FBQW9DQyxJQUFBQTtBQUFwQyxHQUFELENBQXJCO0FBRWpDLFNBQU9DLENBQVA7QUFDRDs7QUFFRFEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCYixXQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEZvcm1hdHRlZEVycm9yXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21lc3NhZ2VdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NvZGVdXG4gKiBAcHJvcGVydHkgeyp9IFtpbmZvXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzdGFja11cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbY2F1c2VdXG4gKi9cblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBlcnJvciBhcyBhIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2FyZzBdIFRoZSBhcmd1bWVudCB0byBiZSBkZWNvbnN0cnVjdGVkLlxuICogQHBhcmFtIHtvYmplY3R9IFtlcnJvcl0gVGhlIGBFcnJvcmAgKG9yIGBFcnJvcmAtbGlrZSBvYmplY3QpIHRvIGJlIGZvcm1hdHRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luY2x1ZGVTdGFjaz10cnVlXSBXaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGBzdGFja2AgcHJvcGVydHkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbmNsdWRlQ2F1c2U9dHJ1ZV0gV2hldGhlciB0byBpbmNsdWRlIHRoZSBgY2F1c2VgIHByb3BlcnR5LlxuICogQHJldHVybiB7Rm9ybWF0dGVkRXJyb3J9IFRoZSBmb3JtYXR0ZWQgZXJyb3IgYXMgYSBsaXRlcmFsIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0RXJyb3IgKHtcbiAgZXJyb3IsXG4gIGluY2x1ZGVTdGFjayA9IHRydWUsXG4gIGluY2x1ZGVDYXVzZSA9IHRydWVcbn0gPSB7fSkge1xuICBpZiAoIWVycm9yKSByZXR1cm4gZXJyb3JcblxuICBjb25zdCBlID0geyBuYW1lOiBlcnJvci5uYW1lIH1cblxuICBpZiAoZXJyb3IubWVzc2FnZSkgZS5tZXNzYWdlID0gZXJyb3IubWVzc2FnZS50b1N0cmluZygpXG4gIGlmIChlcnJvci5jb2RlKSBlLmNvZGUgPSBlcnJvci5jb2RlLnRvU3RyaW5nKClcbiAgaWYgKGVycm9yLmluZm8pIGUuaW5mbyA9IGVycm9yLmluZm9cblxuICBpZiAoaW5jbHVkZVN0YWNrICYmIGVycm9yLnN0YWNrKSBlLnN0YWNrID0gZXJyb3Iuc3RhY2sudG9TdHJpbmcoKVxuICBpZiAoaW5jbHVkZUNhdXNlICYmIGVycm9yLmNhdXNlKSBlLmNhdXNlID0gZm9ybWF0RXJyb3IoeyBlcnJvcjogZXJyb3IuY2F1c2UsIGluY2x1ZGVTdGFjaywgaW5jbHVkZUNhdXNlIH0pXG5cbiAgcmV0dXJuIGVcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmb3JtYXRFcnJvclxuIl19