@embrace-io/react-native
Version:
A React Native wrapper for the Embrace SDK
45 lines (44 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSDKErrorLoggingConfig = exports.configureSDKErrorLogging = exports.safePromise = exports.handleSDKError = void 0;
let errorLoggingConfig = {
enabled: false,
allowLogToConsole: false,
};
const handleSDKError = (methodName, error) => {
if (!errorLoggingConfig.enabled) {
return;
}
const errorObj = error instanceof Error ? error : new Error(String(error));
const errorMessage = errorObj.message || String(error);
if (errorLoggingConfig.customHandler) {
try {
errorLoggingConfig.customHandler(methodName, errorObj);
}
catch (handlerError) {
if (errorLoggingConfig.allowLogToConsole) {
console.error(`[Embrace RN SDK] Error in custom error handler for ${methodName}:`, handlerError);
}
}
}
if (errorLoggingConfig.allowLogToConsole) {
console.error(`[Embrace RN SDK] SDK error in ${methodName}: ${errorMessage}`, errorObj);
if (errorObj.stack) {
console.error(`Stack trace:\n${errorObj.stack}`);
}
}
};
exports.handleSDKError = handleSDKError;
const safePromise = (promise, methodName, fallback) => promise.catch((error) => {
(0, exports.handleSDKError)(methodName, error);
return fallback;
});
exports.safePromise = safePromise;
const configureSDKErrorLogging = (config) => {
errorLoggingConfig = Object.assign(Object.assign({}, errorLoggingConfig), config);
};
exports.configureSDKErrorLogging = configureSDKErrorLogging;
const getSDKErrorLoggingConfig = () => {
return Object.assign({}, errorLoggingConfig);
};
exports.getSDKErrorLoggingConfig = getSDKErrorLoggingConfig;