UNPKG

@grafana/faro-web-sdk

Version:

Faro instrumentations, metas, transports for web.

69 lines 3.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getStackFramesFromError = getStackFramesFromError; var faro_core_1 = require("@grafana/faro-core"); var buildStackFrame_1 = require("./buildStackFrame"); var const_1 = require("./const"); var getDataFromSafariExtensions_1 = require("./getDataFromSafariExtensions"); function getStackFramesFromError(error) { var lines = []; if (error.stacktrace) { lines = error.stacktrace.split(const_1.newLineString).filter(function (_line, idx) { return idx % 2 === 0; }); } else if (error.stack) { lines = error.stack.split(const_1.newLineString); } var stackFrames = lines.reduce(function (acc, line, idx) { var _a, _b; var parts; var func; var filename; var lineno; var colno; if ((parts = const_1.webkitLineRegex.exec(line))) { func = parts[1]; filename = parts[2]; lineno = parts[3]; colno = parts[4]; if (filename === null || filename === void 0 ? void 0 : filename.startsWith(const_1.webkitEvalString)) { var submatch = const_1.webkitEvalRegex.exec(filename); if (submatch) { filename = submatch[1]; lineno = submatch[2]; colno = submatch[3]; } } filename = (filename === null || filename === void 0 ? void 0 : filename.startsWith(const_1.webkitAddressAtString)) ? filename.substring(const_1.webkitAddressAtStringLength) : filename; _a = (0, getDataFromSafariExtensions_1.getDataFromSafariExtensions)(func, filename), func = _a[0], filename = _a[1]; } else if ((parts = const_1.firefoxLineRegex.exec(line))) { func = parts[1]; filename = parts[3]; lineno = parts[4]; colno = parts[5]; if (!!filename && filename.includes(const_1.firefoxEvalString)) { var submatch = const_1.firefoxEvalRegex.exec(filename); if (submatch) { func = func || const_1.evalString; filename = submatch[1]; lineno = submatch[2]; } } else if (idx === 0 && !colno && (0, faro_core_1.isNumber)(error.columnNumber)) { colno = String(error.columnNumber + 1); } _b = (0, getDataFromSafariExtensions_1.getDataFromSafariExtensions)(func, filename), func = _b[0], filename = _b[1]; } if (filename || func) { acc.push((0, buildStackFrame_1.buildStackFrame)(filename, func, lineno ? Number(lineno) : undefined, colno ? Number(colno) : undefined)); } return acc; }, []); if (const_1.reactMinifiedRegex.test(error.message)) { return stackFrames.slice(1); } return stackFrames; } //# sourceMappingURL=getStackFramesFromError.js.map