@taraai/read-write
Version:
Synchronous NoSQL/Firestore for React
67 lines (53 loc) • 1.81 kB
JavaScript
;
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;
}