UNPKG

@taraai/read-write

Version:

Synchronous NoSQL/Firestore for React

67 lines (53 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createFirestoreInstance; exports.getFirestore = getFirestore; var _actions = require("./actions"); var _actions2 = require("./utils/actions"); var _constants = require("./constants"); let firestoreInstance; function createFirestoreInstance(firebase, configs, dispatch) { const defaultInternals = { listeners: {}, pathListenerCounts: {}, config: { ..._constants.defaultConfig, ...configs } }; const aliases = [{ action: _actions.firestoreActions.deleteRef, name: 'delete' }, { action: _actions.firestoreActions.setListener, name: 'onSnapshot' }]; const methods = (0, _actions2.mapWithFirebaseAndDispatch)(firebase, dispatch, _actions.firestoreActions, aliases); const methodsFromFirestore = _constants.methodsToAddFromFirestore.reduce((acc, methodName) => typeof firebase.firestore()[methodName] === 'function' ? { ...acc, [methodName]: function () { const fs = firebase.firestore(); return fs[methodName].call(fs, ...arguments); } } : acc, {}); methodsFromFirestore.mutate = methods.mutate; firestoreInstance = Object.assign(methodsFromFirestore, firebase.firestore, { _: firebase._ }, configs.helpersNamespace ? { [configs.helpersNamespace]: methods } : methods); if (location && location.hostName === 'localhost') { console.log(`🔥 Read/Write started. Enable logging: localStore.debug = 'readwrite:cache,readwrite:mutate'; See stats for document loading phases: readwriteStats(true)`); } return firestoreInstance; } function getFirestore() { if (!firestoreInstance) { throw new Error('Firestore instance does not yet exist. Check your setup.'); } return firestoreInstance; }