@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
JavaScript
;
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