@airbrake/browser
Version:
Official Airbrake notifier for browsers
57 lines • 1.63 kB
JavaScript
import ErrorStackParser from 'error-stack-parser';
var hasConsole = typeof console === 'object' && console.warn;
function parse(err) {
try {
return ErrorStackParser.parse(err);
}
catch (parseErr) {
if (hasConsole && err.stack) {
console.warn('ErrorStackParser:', parseErr.toString(), err.stack);
}
}
if (err.fileName) {
return [err];
}
return [];
}
export function espProcessor(err) {
var backtrace = [];
if (err.noStack) {
backtrace.push({
function: err.functionName || '',
file: err.fileName || '',
line: err.lineNumber || 0,
column: err.columnNumber || 0,
});
}
else {
var frames_2 = parse(err);
if (frames_2.length === 0) {
try {
throw new Error('fake');
}
catch (fakeErr) {
frames_2 = parse(fakeErr);
frames_2.shift();
frames_2.shift();
}
}
for (var _i = 0, frames_1 = frames_2; _i < frames_1.length; _i++) {
var frame = frames_1[_i];
backtrace.push({
function: frame.functionName || '',
file: frame.fileName || '',
line: frame.lineNumber || 0,
column: frame.columnNumber || 0,
});
}
}
var type = err.name ? err.name : '';
var msg = err.message ? String(err.message) : String(err);
return {
type: type,
message: msg,
backtrace: backtrace,
};
}
//# sourceMappingURL=esp.js.map