UNPKG

@react-firebase/database

Version:

Efficiently Render & mutate Firebase Realtime Database data in your react(or react-native) app.

732 lines (709 loc) 35.7 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('lodash/memoize'), require('render-and-add-props'), require('immer'), require('lodash/sortBy'), require('lodash/keys'), require('lodash/set')) : typeof define === 'function' && define.amd ? define(['exports', 'react', 'lodash/memoize', 'render-and-add-props', 'immer', 'lodash/sortBy', 'lodash/keys', 'lodash/set'], factory) : (factory((global.ReactFirebaseDatabase = {}),global.React,global.memoize,global.renderAndAddProps,global.produce,global.sortBy,global.keys,global.set)); }(this, (function (exports,React,memoize,renderAndAddProps,produce,sortBy,keys,set) { 'use strict'; memoize = memoize && memoize.hasOwnProperty('default') ? memoize['default'] : memoize; var produce__default = 'default' in produce ? produce['default'] : produce; sortBy = sortBy && sortBy.hasOwnProperty('default') ? sortBy['default'] : sortBy; keys = keys && keys.hasOwnProperty('default') ? keys['default'] : keys; set = set && set.hasOwnProperty('default') ? set['default'] : set; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global Reflect, Promise */ var extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; function __extends(d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __awaiter(thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } var firebaseDatabaseDefaultContext = { firebase: {} }; var getContext = memoize(function (createContext) { if (createContext === void 0) { createContext = function (defaultContext) { return React.createContext(defaultContext); }; } var _a = createContext(firebaseDatabaseDefaultContext), FirebaseDatabaseContextProvider = _a.Provider, FirebaseDatabaseContextConsumer = _a.Consumer; return { FirebaseDatabaseContextProvider: FirebaseDatabaseContextProvider, FirebaseDatabaseContextConsumer: FirebaseDatabaseContextConsumer }; }, function () { return 1; }); var initializeFirebaseApp = function (_a) { var firebase = _a.firebase, authDomain = _a.authDomain, databaseURL = _a.databaseURL, projectId = _a.projectId, storageBucket = _a.storageBucket, messagingSenderId = _a.messagingSenderId, apiKey = _a.apiKey; try { firebase.initializeApp({ apiKey: apiKey, authDomain: authDomain, databaseURL: databaseURL, projectId: projectId, storageBucket: storageBucket, messagingSenderId: messagingSenderId }); } catch (err) { if (err.code !== "app/duplicate-app") { throw err; } } }; var FirebaseDatabaseProvider = (function (_super) { __extends(FirebaseDatabaseProvider, _super); function FirebaseDatabaseProvider(props) { var _this = _super.call(this, props) || this; _this.__isMounted = true; _this.state = { firebase: props.firebase }; if (_this.props.apiKey) { initializeFirebaseApp(_this.props); } return _this; } FirebaseDatabaseProvider.prototype.render = function () { var _a = this.props, children = _a.children, createContext = _a.createContext; var FirebaseDatabaseContextProvider = getContext(createContext).FirebaseDatabaseContextProvider; return (React.createElement(FirebaseDatabaseContextProvider, { value: this.state }, renderAndAddProps.renderAndAddProps(children, {}))); }; return FirebaseDatabaseProvider; }(React.Component)); var getFirebaseQuery = function (_a) { var _b = _a.firebase, firebase = _b === void 0 ? null : _b, path = _a.path, _c = _a.orderByChild, orderByChild = _c === void 0 ? null : _c, _d = _a.orderByKey, orderByKey = _d === void 0 ? null : _d, _e = _a.orderByValue, orderByValue = _e === void 0 ? null : _e, _f = _a.limitToFirst, limitToFirst = _f === void 0 ? null : _f, _g = _a.limitToLast, limitToLast = _g === void 0 ? null : _g, _h = _a.startAt, startAt = _h === void 0 ? null : _h, _j = _a.endAt, endAt = _j === void 0 ? null : _j, _k = _a.equalTo, equalTo = _k === void 0 ? null : _k; if (firebase === null) { throw new Error("Need to supply firebase argument to getFirebaseQuery"); } if (path === null || typeof path === "undefined") { throw new Error("Need to supply path argument to getFirebaseQuery"); } var result = firebase.database().ref(path); if (orderByChild !== null) { result = result.orderByChild(orderByChild); } if (orderByKey !== null) { result = result.orderByKey(); } if (orderByValue !== null) { result = result.orderByValue(); } if (limitToFirst !== null) { result = result.limitToFirst(limitToFirst); } if (limitToLast !== null) { result = result.limitToLast(limitToLast); } if (startAt !== null) { result = result.startAt(startAt); } if (endAt !== null) { result = result.endAt(endAt); } if (equalTo !== null) { result = result.equalTo(equalTo); } return result; }; var dataNodeProps = [ "firebase", "path", "orderByChild", "orderByKey", "orderByValue", "limitToFirst", "limitToLast", "startAt", "endAt", "equalTo", "keysOnly", "once", "isList", "unsub" ]; var getPropsOrNull = function (props) { var cleanProps = {}; for (var _i = 0, dataNodeProps_1 = dataNodeProps; _i < dataNodeProps_1.length; _i++) { var propName = dataNodeProps_1[_i]; if (props[propName]) { cleanProps[propName] = props[propName]; } else { cleanProps[propName] = null; } } return cleanProps; }; var havePropsChanged = function (prevProps, props) { for (var _i = 0, dataNodeProps_2 = dataNodeProps; _i < dataNodeProps_2.length; _i++) { var propName = dataNodeProps_2[_i]; if (props[propName] !== prevProps[propName]) { return true; } } return false; }; var hasStateChanged = function (prevState, state) { var keysICareAbout = ["firebase", "value", "isLoading", "path"]; for (var _i = 0, keysICareAbout_1 = keysICareAbout; _i < keysICareAbout_1.length; _i++) { var propName = keysICareAbout_1[_i]; if (state[propName] !== prevState[propName]) { return true; } } return false; }; var reducers = { setIsLoading: function (isLoading) { return function (state) { return produce.produce(state, function (draft) { draft.isLoading = isLoading; }); }; }, setValue: function (value) { return function (state) { return produce.produce(state, function (draft) { draft.value = value; }); }; }, setPath: function (path) { return function (state) { return produce.produce(state, function (draft) { draft.path = path; }); }; }, addKeyToList: function (key) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = [key]; return; } draft.value = draft.value.filter(function (k) { return k !== key; }).concat([key]); }); }; }, removeKeyFromList: function (key) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = []; return; } draft.value = draft.value.filter(function (k) { return k !== key; }); }); }; }, addToList: function (value, key, order) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = [{ data: value, key: key, order: order }]; return; } var orderedList = draft.value.filter(function (v) { return v.key !== key; }).concat([ { data: value, key: key, order: order } ]); draft.value = orderedList.sort(function (a, b) { return a.order - b.order; }); }); }; }, removeFromList: function (value, key) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = []; return; } draft.value = draft.value.filter(function (v) { return v.key !== key; }); }); }; }, removeFirstFromList: function (count) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = []; return; } var arrayLength = draft.value.length; draft.value = draft.value.slice(arrayLength - count, arrayLength - 1); }); }; }, removeLastFromList: function (count) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = []; return; } var arrayLength = draft.value.length; draft.value = draft.value.slice(0, arrayLength - count); }); }; }, prependKeyToList: function (key) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = [key]; return; } draft.value = [key].concat(draft.value.filter(function (k) { return k !== key; })); }); }; }, prependToList: function (value, key) { return function (state) { return produce.produce(state, function (draft) { if (!Array.isArray(draft.value)) { draft.value = [{ data: value, key: key }]; return; } draft.value = [ { data: value, key: key } ].concat(draft.value.filter(function (v) { return v.key !== key; })); }); }; } }; var FirebaseDatabaseContextConsumerLifeCycle = (function (_super) { __extends(FirebaseDatabaseContextConsumerLifeCycle, _super); function FirebaseDatabaseContextConsumerLifeCycle() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { firebase: null, path: null, orderByChild: null, orderByKey: null, orderByValue: null, limitToFirst: null, limitToLast: null, startAt: null, endAt: null, equalTo: null, keysOnly: null, once: null, isList: null, unsub: null, value: null, isLoading: null }; _this.__isMounted = false; _this.ss = function () { if (_this.__isMounted === false) { return (function () { }); } return _this.setState.bind(_this); }; _this.handleOnce = function (props, prevProps, ref) { _this.ss()(reducers.setIsLoading(true)); ref.once("value", function (v) { _this.ss()(reducers.setIsLoading(false)); if (!v) return; if (v.val() === null) return; var value = v.val(); var keysOnly = props.keysOnly, isList = props.isList, orderByChild = props.orderByChild; if (!keysOnly && !isList) { _this.ss()(reducers.setValue(value)); return; } var unsortedKeys = keys(value); var sortedKeys = orderByChild ? sortBy(unsortedKeys, function (key) { return value[key][orderByChild]; }) : unsortedKeys; if (keysOnly) { _this.ss()(reducers.setValue(sortedKeys)); return; } if (isList) { var val = sortedKeys.map(function (key) { return ({ key: key, data: value[key] }); }); _this.ss()(reducers.setValue(val)); return; } else { _this.ss()(reducers.setValue(value)); return; } }); }; _this.handleOn = function (props, prevProps, ref) { _this.unsub && _this.unsub(); _this.ss()(reducers.setIsLoading(true)); _this.unsub = ref.on("value", function (v) { _this.ss()(reducers.setIsLoading(false)); if (!v) return; if (v.val() === null) return; var value = v.val(); var keysOnly = props.keysOnly, isList = props.isList, orderByChild = props.orderByChild; if (!keysOnly && !isList) { _this.ss()(reducers.setValue(value)); return; } var unsortedKeys = keys(value); var sortedKeys = orderByChild ? sortBy(unsortedKeys, function (key) { return value[key][orderByChild]; }) : unsortedKeys; if (keysOnly) { _this.ss()(reducers.setValue(sortedKeys)); return; } if (isList) { var val = sortedKeys.map(function (key) { return ({ key: key, data: value[key] }); }); _this.ss()(reducers.setValue(val)); return; } else { _this.ss()(reducers.setValue(value)); return; } }); }; _this.listenToRef = function (props, prevProps) { var propsOrNull = getPropsOrNull(_this.props); var firebase = propsOrNull.firebase, path = propsOrNull.path; if (firebase === null) { return; } if (path === null) { return; } _this.ss()(reducers.setPath(path)); _this.ss()(reducers.setIsLoading(true)); var query = getFirebaseQuery(propsOrNull); if (propsOrNull.once) { _this.handleOnce(props, prevProps, query); } else { _this.handleOn(props, prevProps, query); } }; return _this; } FirebaseDatabaseContextConsumerLifeCycle.prototype.componentDidMount = function () { this.__isMounted = true; this.listenToRef(getPropsOrNull(this.props), null); }; FirebaseDatabaseContextConsumerLifeCycle.prototype.componentDidUpdate = function (prevProps) { if (havePropsChanged(this.props, prevProps)) { this.listenToRef(getPropsOrNull(this.props), getPropsOrNull(prevProps)); } }; FirebaseDatabaseContextConsumerLifeCycle.prototype.componentWillUnmount = function () { this.__isMounted = false; this.unsub && this.unsub(); }; FirebaseDatabaseContextConsumerLifeCycle.prototype.shouldComponentUpdate = function (nextProps, nextState) { return (havePropsChanged(this.props, nextProps) || hasStateChanged(this.state, nextState)); }; FirebaseDatabaseContextConsumerLifeCycle.prototype.render = function () { var _a = this.state, path = _a.path, value = _a.value, isLoading = _a.isLoading; return renderAndAddProps.renderAndAddProps(this.props.children, { path: path, value: value, isLoading: isLoading }); }; return FirebaseDatabaseContextConsumerLifeCycle; }(React.Component)); var FirebaseDatabaseNode = (function (_super) { __extends(FirebaseDatabaseNode, _super); function FirebaseDatabaseNode() { return _super !== null && _super.apply(this, arguments) || this; } FirebaseDatabaseNode.prototype.render = function () { var _this = this; var FirebaseDatabaseContextConsumer = getContext().FirebaseDatabaseContextConsumer; return (React.createElement(FirebaseDatabaseContextConsumer, null, function (context) { return (React.createElement(React.Fragment, null, React.createElement(FirebaseDatabaseContextConsumerLifeCycle, __assign({ firebase: context.firebase }, _this.props)))); })); }; return FirebaseDatabaseNode; }(React.Component)); var initialState = { isLoading: true, value: {} }; var addNodeToState = function (state, _a) { var id = _a.id, value = _a.value, isLoading = _a.isLoading; var updatedState = produce__default(state, function (newState) { set(newState, "value." + id + ".value", value); set(newState, "value." + id + ".isLoading", isLoading); return newState; }); return updatedState; }; var PureNodeReader = (function (_super) { __extends(PureNodeReader, _super); function PureNodeReader() { return _super !== null && _super.apply(this, arguments) || this; } PureNodeReader.prototype.componentDidMount = function () { var _a = this.props, id = _a.id, value = _a.value, isLoading = _a.isLoading, onChange = _a.onChange; onChange({ id: id, value: value, isLoading: isLoading, onChange: onChange }); }; PureNodeReader.prototype.componentDidUpdate = function () { var _a = this.props, id = _a.id, value = _a.value, isLoading = _a.isLoading, onChange = _a.onChange; onChange({ id: id, value: value, isLoading: isLoading, onChange: onChange }); }; PureNodeReader.prototype.shouldComponentUpdate = function (prevProps) { var _a = this.props, id = _a.id, value = _a.value, isLoading = _a.isLoading, onChange = _a.onChange; return (prevProps.id !== id || prevProps.value !== value || prevProps.isLoading !== isLoading); }; PureNodeReader.prototype.render = function () { return null; }; return PureNodeReader; }(React.Component)); var FirebaseDatabaseNodes = (function (_super) { __extends(FirebaseDatabaseNodes, _super); function FirebaseDatabaseNodes() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = initialState; return _this; } FirebaseDatabaseNodes.prototype.componentDidMount = function () { var _loop_1 = function (node) { var id = node.id; this_1.setState(function (state) { return addNodeToState(state, { id: id, value: null, isLoading: true }); }); }; var this_1 = this; for (var _i = 0, _a = this.props.nodes; _i < _a.length; _i++) { var node = _a[_i]; _loop_1(node); } }; FirebaseDatabaseNodes.prototype.componentDidUpdate = function () { var nodeIDs = this.props.nodes.map(function (n) { return n.id; }); var _loop_2 = function (nodeID) { if (!(nodeID in this_2.state.value)) { this_2.setState(function (state) { return addNodeToState(state, { id: nodeID, value: null, isLoading: true }); }); } }; var this_2 = this; for (var _i = 0, nodeIDs_1 = nodeIDs; _i < nodeIDs_1.length; _i++) { var nodeID = nodeIDs_1[_i]; _loop_2(nodeID); } }; FirebaseDatabaseNodes.prototype.render = function () { var _this = this; return (React.createElement(React.Fragment, null, this.props.nodes.map(function (node) { return (React.createElement(FirebaseDatabaseNode, __assign({ path: node.path, key: node.id }, node.query), function (_a) { var value = _a.value, isLoading = _a.isLoading; return (React.createElement(PureNodeReader, { value: value, isLoading: isLoading, id: node.id, onChange: function (_a) { var id = _a.id, value = _a.value, isLoading = _a.isLoading; _this.setState(function (state) { return addNodeToState(state, { id: id, value: value, isLoading: isLoading }); }); } })); })); }), renderAndAddProps.renderAndAddProps(this.props.children, this.state))); }; return FirebaseDatabaseNodes; }(React.PureComponent)); var FirebaseDatabaseMutationWithContext = (function (_super) { __extends(FirebaseDatabaseMutationWithContext, _super); function FirebaseDatabaseMutationWithContext() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.createMutationRunner = function () { var _a = _this.props, firebase = _a.firebase, path = _a.path, type = _a.type; var firebaseRef = firebase .app() .database() .ref(path); var runMutation; switch (type) { case "push": { runMutation = function (value) { return __awaiter(_this, void 0, void 0, function () { var key; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, firebaseRef.push(value).key]; case 1: key = _a.sent(); return [2, { path: path, value: value, type: type, key: key }]; } }); }); }; break; } case "update": { runMutation = function (value) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, firebaseRef.update(value)]; case 1: _a.sent(); return [2, { path: path, value: value, type: type, key: null }]; } }); }); }; break; } case "set": { runMutation = function (value) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: return [4, firebaseRef.set(value)]; case 1: _a.sent(); return [2, { path: path, value: value, type: type, key: null }]; } }); }); }; break; } default: { throw new Error("Unsupported mutation type " + type + ". \nPlease file an issue if you'd like to see us support it !"); } } return runMutation; }; return _this; } FirebaseDatabaseMutationWithContext.prototype.shouldComponentUpdate = function (nextProps) { return (nextProps.path !== this.props.path || nextProps.firebase !== this.props.firebase); }; FirebaseDatabaseMutationWithContext.prototype.render = function () { var children = this.props.children; var runMutation = this.createMutationRunner(); return renderAndAddProps.renderAndAddProps(children, __assign({ runMutation: runMutation }, this.props)); }; return FirebaseDatabaseMutationWithContext; }(React.Component)); var FirebaseDatabaseMutation = (function (_super) { __extends(FirebaseDatabaseMutation, _super); function FirebaseDatabaseMutation() { return _super !== null && _super.apply(this, arguments) || this; } FirebaseDatabaseMutation.prototype.render = function () { var _a = this.props, children = _a.children, type = _a.type, path = _a.path; var FirebaseDatabaseContextConsumer = getContext().FirebaseDatabaseContextConsumer; return (React.createElement(FirebaseDatabaseContextConsumer, null, function (context) { return (React.createElement(FirebaseDatabaseMutationWithContext, __assign({ type: type, path: path }, context, { children: children }))); })); }; return FirebaseDatabaseMutation; }(React.Component)); var FirebaseDatabaseTransactionWithContext = (function (_super) { __extends(FirebaseDatabaseTransactionWithContext, _super); function FirebaseDatabaseTransactionWithContext() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.createTransactionRunner = function () { var _a = _this.props, firebase = _a.firebase, path = _a.path; var firebaseRef = firebase .app() .database() .ref(path); var runTransaction = function (_a) { var reducer = _a.reducer; return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_b) { switch (_b.label) { case 0: return [4, firebaseRef.transaction(reducer)]; case 1: _b.sent(); return [2, { path: path }]; } }); }); }; return runTransaction; }; return _this; } FirebaseDatabaseTransactionWithContext.prototype.shouldComponentUpdate = function (nextProps) { return (nextProps.path !== this.props.path || nextProps.firebase !== this.props.firebase); }; FirebaseDatabaseTransactionWithContext.prototype.render = function () { var children = this.props.children; var runTransaction = this.createTransactionRunner(); return renderAndAddProps.renderAndAddProps(children, __assign({ runTransaction: runTransaction }, this.props)); }; return FirebaseDatabaseTransactionWithContext; }(React.Component)); var FirebaseDatabaseTransaction = (function (_super) { __extends(FirebaseDatabaseTransaction, _super); function FirebaseDatabaseTransaction() { return _super !== null && _super.apply(this, arguments) || this; } FirebaseDatabaseTransaction.prototype.render = function () { var _a = this.props, children = _a.children, path = _a.path; var FirebaseDatabaseContextConsumer = getContext().FirebaseDatabaseContextConsumer; return (React.createElement(FirebaseDatabaseContextConsumer, null, function (context) { return (React.createElement(FirebaseDatabaseTransactionWithContext, __assign({ path: path }, context, { children: children }))); })); }; return FirebaseDatabaseTransaction; }(React.Component)); exports.FirebaseDatabaseNode = FirebaseDatabaseNode; exports.FirebaseDatabaseNodes = FirebaseDatabaseNodes; exports.FirebaseDatabaseProvider = FirebaseDatabaseProvider; exports.FirebaseDatabaseMutation = FirebaseDatabaseMutation; exports.FirebaseDatabaseTransaction = FirebaseDatabaseTransaction; exports.getFirebaseQuery = getFirebaseQuery; exports.initializeFirebaseApp = initializeFirebaseApp; Object.defineProperty(exports, '__esModule', { value: true }); })));