1*a5fb1ba8SEvan Bacon"use strict"; 226ad19fcSEvan Bacon/** 326ad19fcSEvan Bacon * Copyright (c) 650 Industries. 426ad19fcSEvan Bacon * Copyright (c) Meta Platforms, Inc. and affiliates. 526ad19fcSEvan Bacon * 626ad19fcSEvan Bacon * This source code is licensed under the MIT license found in the 726ad19fcSEvan Bacon * LICENSE file in the root directory of this source tree. 826ad19fcSEvan Bacon */ 9*a5fb1ba8SEvan Baconvar __importDefault = (this && this.__importDefault) || function (mod) { 10*a5fb1ba8SEvan Bacon return (mod && mod.__esModule) ? mod : { "default": mod }; 11*a5fb1ba8SEvan Bacon}; 12*a5fb1ba8SEvan BaconObject.defineProperty(exports, "__esModule", { value: true }); 13*a5fb1ba8SEvan Baconconst parseErrorStack_1 = __importDefault(require("../parseErrorStack")); 1426ad19fcSEvan Baconclass SyntheticError extends Error { 1526ad19fcSEvan Bacon name = ''; 1626ad19fcSEvan Bacon} 1726ad19fcSEvan Bacon/** 1826ad19fcSEvan Bacon * Handles the developer-visible aspect of errors and exceptions 1926ad19fcSEvan Bacon */ 2026ad19fcSEvan Baconlet exceptionID = 0; 2126ad19fcSEvan Baconfunction parseException(e, isFatal) { 22*a5fb1ba8SEvan Bacon const stack = (0, parseErrorStack_1.default)(e?.stack); 2326ad19fcSEvan Bacon const currentExceptionID = ++exceptionID; 2426ad19fcSEvan Bacon const originalMessage = e.message || ''; 2526ad19fcSEvan Bacon let message = originalMessage; 2626ad19fcSEvan Bacon if (e.componentStack != null) { 2726ad19fcSEvan Bacon message += `\n\nThis error is located at:${e.componentStack}`; 2826ad19fcSEvan Bacon } 2926ad19fcSEvan Bacon const namePrefix = e.name == null || e.name === '' ? '' : `${e.name}: `; 3026ad19fcSEvan Bacon if (!message.startsWith(namePrefix)) { 3126ad19fcSEvan Bacon message = namePrefix + message; 3226ad19fcSEvan Bacon } 3326ad19fcSEvan Bacon message = e.jsEngine == null ? message : `${message}, js engine: ${e.jsEngine}`; 3426ad19fcSEvan Bacon const data = { 3526ad19fcSEvan Bacon message, 3626ad19fcSEvan Bacon originalMessage: message === originalMessage ? null : originalMessage, 3726ad19fcSEvan Bacon name: e.name == null || e.name === '' ? null : e.name, 3826ad19fcSEvan Bacon componentStack: typeof e.componentStack === 'string' ? e.componentStack : null, 3926ad19fcSEvan Bacon stack, 4026ad19fcSEvan Bacon id: currentExceptionID, 4126ad19fcSEvan Bacon isFatal, 4226ad19fcSEvan Bacon extraData: { 4326ad19fcSEvan Bacon jsEngine: e.jsEngine, 4426ad19fcSEvan Bacon rawStack: e.stack, 4526ad19fcSEvan Bacon }, 4626ad19fcSEvan Bacon }; 4726ad19fcSEvan Bacon return { 4826ad19fcSEvan Bacon ...data, 4926ad19fcSEvan Bacon isComponentError: !!e.isComponentError, 5026ad19fcSEvan Bacon }; 5126ad19fcSEvan Bacon} 5226ad19fcSEvan Bacon/** 5326ad19fcSEvan Bacon * Logs exceptions to the (native) console and displays them 5426ad19fcSEvan Bacon */ 5526ad19fcSEvan Baconfunction handleException(e) { 5626ad19fcSEvan Bacon let error; 5726ad19fcSEvan Bacon if (e instanceof Error) { 5826ad19fcSEvan Bacon error = e; 5926ad19fcSEvan Bacon } 6026ad19fcSEvan Bacon else { 6126ad19fcSEvan Bacon // Workaround for reporting errors caused by `throw 'some string'` 6226ad19fcSEvan Bacon // Unfortunately there is no way to figure out the stacktrace in this 6326ad19fcSEvan Bacon // case, so if you ended up here trying to trace an error, look for 6426ad19fcSEvan Bacon // `throw '<error message>'` somewhere in your codebase. 6526ad19fcSEvan Bacon error = new SyntheticError(e); 6626ad19fcSEvan Bacon } 6726ad19fcSEvan Bacon require('../../LogBox').default.addException(parseException(error, true)); 6826ad19fcSEvan Bacon} 6926ad19fcSEvan Baconconst ErrorUtils = { 7026ad19fcSEvan Bacon parseException, 7126ad19fcSEvan Bacon handleException, 7226ad19fcSEvan Bacon SyntheticError, 7326ad19fcSEvan Bacon}; 74*a5fb1ba8SEvan Baconexports.default = ErrorUtils; 7526ad19fcSEvan Bacon//# sourceMappingURL=index.js.map