UNPKG

@grafana/faro-core

Version:
66 lines 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeExceptionsAPI = void 0; var transports_1 = require("../../transports"); var utils_1 = require("../../utils"); var date_1 = require("../../utils/date"); var const_1 = require("./const"); var stacktraceParser; function initializeExceptionsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) { var _a; internalLogger.debug('Initializing exceptions API'); var lastPayload = null; stacktraceParser = (_a = config.parseStacktrace) !== null && _a !== void 0 ? _a : stacktraceParser; var changeStacktraceParser = function (newStacktraceParser) { internalLogger.debug('Changing stacktrace parser'); stacktraceParser = newStacktraceParser !== null && newStacktraceParser !== void 0 ? newStacktraceParser : stacktraceParser; }; var getStacktraceParser = function () { return stacktraceParser; }; var pushError = function (error, _a) { var _b = _a === void 0 ? {} : _a, skipDedupe = _b.skipDedupe, stackFrames = _b.stackFrames, type = _b.type, context = _b.context, spanContext = _b.spanContext, timestampOverwriteMs = _b.timestampOverwriteMs; type = type || error.name || const_1.defaultExceptionType; var item = { meta: metas.value, payload: { type: type, value: error.message, timestamp: timestampOverwriteMs ? (0, date_1.timestampToIsoString)(timestampOverwriteMs) : (0, utils_1.getCurrentTimestamp)(), trace: spanContext ? { trace_id: spanContext.traceId, span_id: spanContext.spanId, } : tracesApi.getTraceContext(), context: context !== null && context !== void 0 ? context : {}, }, type: transports_1.TransportItemType.EXCEPTION, }; stackFrames = stackFrames !== null && stackFrames !== void 0 ? stackFrames : (error.stack ? stacktraceParser === null || stacktraceParser === void 0 ? void 0 : stacktraceParser(error).frames : undefined); if (stackFrames === null || stackFrames === void 0 ? void 0 : stackFrames.length) { item.payload.stacktrace = { frames: stackFrames, }; } var testingPayload = { type: item.payload.type, value: item.payload.value, stackTrace: item.payload.stacktrace, context: item.payload.context, }; if (!skipDedupe && config.dedupe && !(0, utils_1.isNull)(lastPayload) && (0, utils_1.deepEqual)(testingPayload, lastPayload)) { internalLogger.debug('Skipping error push because it is the same as the last one\n', item.payload); return; } lastPayload = testingPayload; internalLogger.debug('Pushing exception\n', item); transports.execute(item); }; changeStacktraceParser(config.parseStacktrace); return { changeStacktraceParser: changeStacktraceParser, getStacktraceParser: getStacktraceParser, pushError: pushError, }; } exports.initializeExceptionsAPI = initializeExceptionsAPI; //# sourceMappingURL=initialize.js.map