@grafana/faro-core
Version:
Core package of Faro.
66 lines • 3.31 kB
JavaScript
;
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