'use strict'; const stacktraceParser = require("stacktrace-parser"); const objectOmit = require("object.omit"); const printError = require("../print-error"); const parseStacktrace = require("./stack/parse"); const filterModules = require("./stack/filter-modules"); const filterAllModules = require("./stack/filter-all-modules"); const collapseIgnored = require("./stack/collapse-ignored"); module.exports = function parseError(error) { return { name: error.name, message: error.message, stack: parseStacktrace(error.stack), properties: objectOmit(error, ["name", "message", "stack"]), stackWithout: function stackWithout(modules, collapse = false) { let filteredStack; if (modules === "*") { filteredStack = filterAllModules(this.stack); } else { filteredStack = filterModules(this.stack, modules); } if (collapse) { return collapseIgnored(filteredStack); } else { return filteredStack; } } } };