@dynatrace/react-native-plugin
Version:
This plugin gives you the ability to use the Dynatrace Mobile agent in your react native application.
50 lines (49 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.reportErrorToDynatrace = exports.startErrorHandler = void 0;
const DynatraceInternal_1 = require("./DynatraceInternal");
const Dynatrace_1 = require("./Dynatrace");
const StringUtils_1 = require("./util/StringUtils");
const ConsoleLogger_1 = require("./logging/ConsoleLogger");
const react_native_1 = require("react-native");
const logger = new ConsoleLogger_1.ConsoleLogger('ErrorHandler');
let manualStart = { enabled: false };
const startErrorHandler = (reportFatalErrorAsCrash) => {
manualStart = {
enabled: true,
reportFatalErrorAsCrash: reportFatalErrorAsCrash,
};
};
exports.startErrorHandler = startErrorHandler;
const reportErrorToDynatrace = (exception, isFatal, reportFatalErrorAsCrashFromConfig, autoStart) => {
if (!autoStart && !manualStart)
return 0;
const reportFatalErrorAsCrash = manualStart.enabled
? manualStart.reportFatalErrorAsCrash
: reportFatalErrorAsCrashFromConfig;
if (exception != null && isExceptionAnError(exception)) {
if (!StringUtils_1.StringUtils.isStringNullEmptyOrUndefined(exception.name)) {
if (isFatal === undefined) {
isFatal = false;
}
DynatraceInternal_1.DynatraceInternal.reportErrorFromHandler(isFatal, String(exception.name), adjustedReason(exception.message), exception.stack != null ? exception.stack : '', reportFatalErrorAsCrash);
logger.debug(`reportErrorToDynatrace(${exception}, ${isFatal})`);
}
}
else {
Dynatrace_1.Dynatrace.reportError(String(exception), -1);
logger.debug(`reportErrorToDynatrace(${exception}, -1)`);
}
return react_native_1.Platform.OS === 'ios' ? 200 : 0;
};
exports.reportErrorToDynatrace = reportErrorToDynatrace;
const adjustedReason = (reason) => {
if (!StringUtils_1.StringUtils.isStringNullEmptyOrUndefined(reason)) {
const reasonNewLineIndex = reason.indexOf('\n');
if (reasonNewLineIndex !== -1) {
reason = reason.substring(0, reasonNewLineIndex);
}
}
return reason;
};
const isExceptionAnError = (exception) => exception.message !== undefined;