@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
64 lines • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getErrorDetails = getErrorDetails;
exports.getDetailsFromErrorArgs = getDetailsFromErrorArgs;
exports.getDetailsFromConsoleErrorArgs = getDetailsFromConsoleErrorArgs;
const faro_core_1 = require("@grafana/faro-core");
const const_1 = require("./const");
const getValueAndTypeFromMessage_1 = require("./getValueAndTypeFromMessage");
const stackFrames_1 = require("./stackFrames");
function getErrorDetails(evt) {
let value;
let type;
let stackFrames = [];
let isDomErrorRes;
let isEventRes;
if ((0, faro_core_1.isErrorEvent)(evt) && evt.error) {
value = evt.error.message;
type = evt.error.name;
stackFrames = (0, stackFrames_1.getStackFramesFromError)(evt.error);
}
else if ((isDomErrorRes = (0, faro_core_1.isDomError)(evt)) || (0, faro_core_1.isDomException)(evt)) {
const { name, message } = evt;
type = name !== null && name !== void 0 ? name : (isDomErrorRes ? const_1.domErrorType : const_1.domExceptionType);
value = message ? `${type}: ${message}` : type;
}
else if ((0, faro_core_1.isError)(evt)) {
type = evt.name;
value = evt.message;
stackFrames = (0, stackFrames_1.getStackFramesFromError)(evt);
}
else if ((0, faro_core_1.isObject)(evt) || (isEventRes = (0, faro_core_1.isEvent)(evt))) {
type = isEventRes ? evt.constructor.name : undefined;
value = `${const_1.objectEventValue} ${Object.keys(evt)}`;
}
return [value, type, stackFrames];
}
function getDetailsFromErrorArgs(args) {
const [evt, source, lineno, colno, error] = args;
let value;
let type;
let stackFrames = [];
const eventIsString = (0, faro_core_1.isString)(evt);
const initialStackFrame = (0, stackFrames_1.buildStackFrame)(source, const_1.unknownSymbolString, lineno, colno);
if (error || !eventIsString) {
[value, type, stackFrames] = getErrorDetails((error !== null && error !== void 0 ? error : evt));
if (stackFrames.length === 0) {
stackFrames = [initialStackFrame];
}
}
else if (eventIsString) {
[value, type] = (0, getValueAndTypeFromMessage_1.getValueAndTypeFromMessage)(evt);
stackFrames = [initialStackFrame];
}
return { value, type, stackFrames };
}
function getDetailsFromConsoleErrorArgs(args, serializer) {
if ((0, faro_core_1.isError)(args[0])) {
return getDetailsFromErrorArgs(args);
}
else {
return { value: serializer(args) };
}
}
//# sourceMappingURL=getErrorDetails.js.map