UNPKG

@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
"use strict"; 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;