You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1.1 KiB
JavaScript

'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;
}
}
}
};