UNPKG

@react-native-firebase/app

Version:

A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto

54 lines (48 loc) 1.72 kB
"use strict"; /* * Copyright (c) 2016-present Invertase Limited & Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this library except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import { DeviceEventEmitter } from 'react-native'; // A general purpose guard function to catch errors and return a structured error object. export function guard(fn) { return fn().catch(e => Promise.reject(getWebError(e))); } // Converts a thrown error to a structured error object // required by RNFirebase native module internals. export function getWebError(error) { const obj = { code: error.code || 'unknown', message: error.message }; // Some modules send codes as PERMISSION_DENIED, which is not // the same as the Firebase error code format. obj.code = obj.code.toLowerCase(); // Replace _ with - in code obj.code = obj.code.replace(/_/g, '-'); // Split out prefix, since we internally prefix all error codes already. if (obj.code.includes('/')) { const parts = obj.code.split('/'); obj.code = parts[1] || obj.code; } return { ...obj, userInfo: obj }; } export function emitEvent(eventName, event) { setImmediate(() => DeviceEventEmitter.emit('rnfb_' + eventName, event)); } //# sourceMappingURL=utils.js.map