UNPKG

react-native-filament

Version:

A real-time physically based 3D rendering engine for React Native

52 lines (49 loc) 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reportFatalError = reportFatalError; exports.reportWorkletError = reportWorkletError; exports.wrapWithErrorHandler = wrapWithErrorHandler; var _reactNativeWorkletsCore = require("react-native-worklets-core"); /** * Report an error to react native's `ErrorUtils` if available, or log to console otherwise. */ function reportFatalError(error) { // @ts-expect-error this is defined by react-native. if (global.ErrorUtils != null) { // @ts-expect-error this is defined by react-native. global.ErrorUtils.reportFatalError(error); } else { console.error(`An unknown Filament error occurred!`, error); } } const throwErrorOnJS = _reactNativeWorkletsCore.Worklets.createRunOnJS((message, stack) => { const error = new Error(); error.message = message; error.stack = stack; error.name = 'Filament Error'; // @ts-expect-error this is react-native specific error.jsEngine = 'Filament'; // From react-native: // @ts-ignore the reportFatalError method is an internal method of ErrorUtils not exposed in the type definitions reportFatalError(error); }); function reportWorkletError(error) { 'worklet'; const safeError = error; const message = safeError != null && 'message' in safeError ? safeError.message : 'Filament threw an error.'; throwErrorOnJS(message, safeError === null || safeError === void 0 ? void 0 : safeError.stack); } function wrapWithErrorHandler(callback) { return (...args) => { 'worklet'; try { return callback(...args); } catch (error) { reportFatalError(error); throw error; } }; } //# sourceMappingURL=ErrorUtils.js.map