UNPKG

errobj

Version:

☠️ Serialise errors to literal (JSONable) object

127 lines (121 loc) 3.78 kB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { errobj: () => errobj }); module.exports = __toCommonJS(src_exports); // src/lib/props/index.ts var FIELDS = [ "message", "stack", "code", "name", "fileName", "lineNumber", "columnNumber", "address", "dest", "errno", "info", "path", "port", "syscall", "opensslErrorStack", "function", "library", "reason", "details", "description" ]; var props = (error) => Array.from(new Set(Object.getOwnPropertyNames(error).concat(FIELDS))); // src/lib/verify/index.ts function verify(error) { if (!(error instanceof Error)) { throw new RangeError( `Expected an error. Insead got ${typeof error}: ${error}` ); } } // src/lib/parseStack/index.ts var import_error_stack_parser = __toESM(require("error-stack-parser"), 1); function parseStack(error, { offset, parsedStack } = {}) { try { const parsed = import_error_stack_parser.default.parse(error); if (typeof offset === "number" && offset > 0) { parsed.splice(0, offset); } if (parsedStack) { parsed.length = Math.min(parsed.length, parsedStack); } return parsed; } catch (_) { return [{}]; } } // src/index.ts function errobj(error, enrichment = {}, { offset = 0, parsedStack = 0 } = {}) { verify(error); if (typeof error.toJSON === "function") { error = error.toJSON(); } const parsed = parseStack(error, { offset, parsedStack }); parsedStack && Object.assign(error, { parsedStack: parsed }); const cause = getCause(error); return Object.assign( props(error).reduce( (accumulator, key) => error[key] ? Object.assign(accumulator, { [key]: error[key] }) : accumulator, __spreadValues({}, parsed[0]) ), cause ? { cause } : {}, enrichment ); } function getCause(error) { let { cause } = error; if (cause instanceof Error) { if (cause === error) { cause = "[Circular]"; } else { cause = errobj(cause); } } return typeof cause === "undefined" ? cause : String(cause); } //# sourceMappingURL=index.js.map