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