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

52 lines (50 loc) 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getReactNativeModule = getReactNativeModule; exports.setReactNativeModule = setReactNativeModule; var _RNFBAppModule = _interopRequireDefault(require("./web/RNFBAppModule.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /* eslint-disable no-console */ const nativeModuleRegistry = {}; function getReactNativeModule(moduleName) { const nativeModule = nativeModuleRegistry[moduleName]; // Throw an error if the module is not registered. if (!nativeModule) { throw new Error(`Native module ${moduleName} is not registered.`); } if (!globalThis.RNFBDebug) { return nativeModule; } return new Proxy(nativeModule, { ownKeys(target) { // FIXME - test in new arch context - I don't think Object.keys works return Object.keys(target); }, get: (_, name) => { const prop = nativeModule[name]; if (typeof prop !== 'function') return prop; return (...args) => { console.debug(`[RNFB->Native][🔵] ${moduleName}.${String(name)} -> ${JSON.stringify(args)}`); const result = prop(...args); if (result && typeof result === 'object' && 'then' in result) { return result.then(res => { console.debug(`[RNFB<-Native][🟢] ${moduleName}.${String(name)} <- ${JSON.stringify(res)}`); return res; }, err => { console.debug(`[RNFB<-Native][🔴] ${moduleName}.${String(name)} <- ${JSON.stringify(err)}`); throw err; }); } console.debug(`[RNFB<-Native][🟢] ${moduleName}.${String(name)} <- ${JSON.stringify(result)}`); return result; }; } }); } function setReactNativeModule(moduleName, nativeModule) { nativeModuleRegistry[moduleName] = nativeModule; } setReactNativeModule('RNFBAppModule', _RNFBAppModule.default); //# sourceMappingURL=nativeModuleWeb.js.map