{"version":3,"file":"static/js/main.89ab2d19.js","mappings":"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","sources":["libs/cookieManager.js","libs/helpers.js","libs/language.js","libs/messages.js","store/cartStore.js","../node_modules/@firebase/util/src/constants.ts","../node_modules/@firebase/util/src/assert.ts","../node_modules/@firebase/util/src/crypt.ts","../node_modules/@firebase/util/src/deepCopy.ts","../node_modules/@firebase/util/src/defaults.ts","../node_modules/@firebase/util/src/global.ts","../node_modules/@firebase/util/src/deferred.ts","../node_modules/@firebase/util/src/environment.ts","../node_modules/@firebase/util/src/errors.ts","../node_modules/@firebase/util/src/json.ts","../node_modules/@firebase/util/src/jwt.ts","../node_modules/@firebase/util/src/obj.ts","../node_modules/@firebase/util/src/sha1.ts","../node_modules/@firebase/util/src/validation.ts","../node_modules/@firebase/util/src/utf8.ts","../node_modules/@firebase/util/src/compat.ts","../node_modules/@firebase/component/src/component.ts","../node_modules/@firebase/component/src/constants.ts","../node_modules/@firebase/component/src/provider.ts","../node_modules/@firebase/component/src/component_container.ts","../node_modules/@firebase/logger/src/logger.ts","../node_modules/idb/build/wrap-idb-value.js","../node_modules/idb/build/index.js","../node_modules/@firebase/app/src/platformLoggerService.ts","../node_modules/@firebase/app/src/logger.ts","../node_modules/@firebase/app/src/constants.ts","../node_modules/@firebase/app/src/internal.ts","../node_modules/@firebase/app/src/errors.ts","../node_modules/@firebase/app/src/firebaseApp.ts","../node_modules/@firebase/app/src/api.ts","../node_modules/@firebase/app/src/indexeddb.ts","../node_modules/@firebase/app/src/heartbeatService.ts","../node_modules/@firebase/app/src/registerCoreComponents.ts","../node_modules/@firebase/app/src/index.ts","../node_modules/firebase/app/index.ts","../node_modules/@firebase/database/src/core/version.ts","../node_modules/@firebase/database/src/core/storage/DOMStorageWrapper.ts","../node_modules/@firebase/database/src/core/storage/MemoryStorage.ts","../node_modules/@firebase/database/src/core/storage/storage.ts","../node_modules/@firebase/database/src/core/util/util.ts","../node_modules/@firebase/database/src/core/AppCheckTokenProvider.ts","../node_modules/@firebase/database/src/core/AuthTokenProvider.ts","../node_modules/@firebase/database/src/realtime/Constants.ts","../node_modules/@firebase/database/src/core/RepoInfo.ts","../node_modules/@firebase/database/src/core/stats/StatsCollection.ts","../node_modules/@firebase/database/src/core/stats/StatsManager.ts","../node_modules/@firebase/database/src/realtime/polling/PacketReceiver.ts","../node_modules/@firebase/database/src/realtime/BrowserPollConnection.ts","../node_modules/@firebase/database/src/realtime/WebSocketConnection.ts","../node_modules/@firebase/database/src/realtime/TransportManager.ts","../node_modules/@firebase/database/src/realtime/Connection.ts","../node_modules/@firebase/database/src/core/ServerActions.ts","../node_modules/@firebase/database/src/core/util/EventEmitter.ts","../node_modules/@firebase/database/src/core/util/OnlineMonitor.ts","../node_modules/@firebase/database/src/core/util/Path.ts","../node_modules/@firebase/database/src/core/util/VisibilityMonitor.ts","../node_modules/@firebase/database/src/core/PersistentConnection.ts","../node_modules/@firebase/database/src/core/snap/Node.ts","../node_modules/@firebase/database/src/core/snap/indexes/Index.ts","../node_modules/@firebase/database/src/core/snap/indexes/KeyIndex.ts","../node_modules/@firebase/database/src/core/util/SortedMap.ts","../node_modules/@firebase/database/src/core/snap/comparators.ts","../node_modules/@firebase/database/src/core/snap/snap.ts","../node_modules/@firebase/database/src/core/snap/LeafNode.ts","../node_modules/@firebase/database/src/core/snap/indexes/PriorityIndex.ts","../node_modules/@firebase/database/src/core/snap/childSet.ts","../node_modules/@firebase/database/src/core/snap/IndexMap.ts","../node_modules/@firebase/database/src/core/snap/ChildrenNode.ts","../node_modules/@firebase/database/src/core/snap/nodeFromJSON.ts","../node_modules/@firebase/database/src/core/snap/indexes/PathIndex.ts","../node_modules/@firebase/database/src/core/snap/indexes/ValueIndex.ts","../node_modules/@firebase/database/src/core/view/Change.ts","../node_modules/@firebase/database/src/core/view/filter/IndexedFilter.ts","../node_modules/@firebase/database/src/core/view/filter/RangedFilter.ts","../node_modules/@firebase/database/src/core/view/filter/LimitedFilter.ts","../node_modules/@firebase/database/src/core/view/QueryParams.ts","../node_modules/@firebase/database/src/core/ReadonlyRestClient.ts","../node_modules/@firebase/util/src/query.ts","../node_modules/@firebase/database/src/core/SnapshotHolder.ts","../node_modules/@firebase/database/src/core/SparseSnapshotTree.ts","../node_modules/@firebase/database/src/core/stats/StatsListener.ts","../node_modules/@firebase/database/src/core/stats/StatsReporter.ts","../node_modules/@firebase/database/src/core/operation/Operation.ts","../node_modules/@firebase/database/src/core/operation/AckUserWrite.ts","../node_modules/@firebase/database/src/core/operation/ListenComplete.ts","../node_modules/@firebase/database/src/core/operation/Overwrite.ts","../node_modules/@firebase/database/src/core/operation/Merge.ts","../node_modules/@firebase/database/src/core/view/CacheNode.ts","../node_modules/@firebase/database/src/core/view/EventGenerator.ts","../node_modules/@firebase/database/src/core/view/ViewCache.ts","../node_modules/@firebase/database/src/core/util/ImmutableTree.ts","../node_modules/@firebase/database/src/core/CompoundWrite.ts","../node_modules/@firebase/database/src/core/WriteTree.ts","../node_modules/@firebase/database/src/core/view/ChildChangeAccumulator.ts","../node_modules/@firebase/database/src/core/view/CompleteChildSource.ts","../node_modules/@firebase/database/src/core/view/ViewProcessor.ts","../node_modules/@firebase/database/src/core/view/View.ts","../node_modules/@firebase/database/src/core/SyncPoint.ts","../node_modules/@firebase/database/src/core/SyncTree.ts","../node_modules/@firebase/database/src/core/util/ServerValues.ts","../node_modules/@firebase/database/src/core/util/Tree.ts","../node_modules/@firebase/database/src/core/util/validation.ts","../node_modules/@firebase/database/src/core/view/EventQueue.ts","../node_modules/@firebase/database/src/core/Repo.ts","../node_modules/@firebase/database/src/core/util/libs/parser.ts","../node_modules/@firebase/database/src/core/util/NextPushId.ts","../node_modules/@firebase/database/src/core/view/Event.ts","../node_modules/@firebase/database/src/core/view/EventRegistration.ts","../node_modules/@firebase/database/src/api/Reference_impl.ts","../node_modules/@firebase/database/src/api/Database.ts","../node_modules/@firebase/database/src/api/test_access.ts","../node_modules/@firebase/database/src/register.ts","../node_modules/@firebase/database/src/index.ts","libs/firebaseApi.js","../node_modules/@firebase/util/src/emulator.ts","store/siteStore.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/lodash/lodash.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.min.js","../node_modules/use-sync-external-store/with-selector.js","../node_modules/reselect/src/utils.ts","../node_modules/reselect/src/autotrackMemoize/proxy.ts","../node_modules/reselect/src/weakMapMemoize.ts","../node_modules/reselect/src/createSelectorCreator.ts","../node_modules/reselect/src/createStructuredSelector.ts","../node_modules/redux/src/utils/formatProdErrorMessage.ts","../node_modules/redux/src/utils/symbol-observable.ts","../node_modules/redux/src/utils/actionTypes.ts","../node_modules/redux/src/utils/isPlainObject.ts","../node_modules/redux/src/createStore.ts","../node_modules/redux/src/combineReducers.ts","../node_modules/redux/src/compose.ts","../node_modules/redux-thunk/dist/redux-thunk.mjs","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/redux/src/utils/isAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/getDefaultEnhancers.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/redux/src/applyMiddleware.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/exceptions.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/utils.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/combineSlices.ts","../node_modules/@reduxjs/toolkit/src/formatProdErrorMessage.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/env.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/errors.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/common.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/utils/plugins.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/scope.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/finalize.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/proxy.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/immerClass.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/core/current.ts","../node_modules/@reduxjs/toolkit/node_modules/immer/src/immer.ts","../node_modules/react-redux/src/utils/react.ts","../node_modules/react-redux/src/components/Context.ts","../node_modules/react-redux/src/utils/useSyncExternalStore.ts","../node_modules/react-redux/src/hooks/useReduxContext.ts","../node_modules/react-redux/src/hooks/useSelector.ts","../node_modules/react-redux/src/utils/react-is.ts","../node_modules/react-redux/src/connect/selectorFactory.ts","../node_modules/react-redux/src/connect/wrapMapToProps.ts","../node_modules/react-redux/src/connect/invalidArgFactory.ts","../node_modules/react-redux/src/connect/mergeProps.ts","../node_modules/react-redux/src/utils/batch.ts","../node_modules/react-redux/src/utils/Subscription.ts","../node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts","../node_modules/react-redux/src/utils/shallowEqual.ts","../node_modules/react-redux/src/utils/hoistStatics.ts","../node_modules/react-redux/src/components/connect.tsx","../node_modules/react-redux/src/connect/mapStateToProps.ts","../node_modules/react-redux/src/connect/mapDispatchToProps.ts","../node_modules/react-redux/src/utils/bindActionCreators.ts","../node_modules/react-redux/src/components/Provider.tsx","../node_modules/react-redux/src/hooks/useStore.ts","../node_modules/react-redux/src/hooks/useDispatch.ts","../node_modules/react-redux/src/index.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/chunk loaded","../webpack/runtime/chunk prefetch function","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/runtime/chunk prefetch trigger","../webpack/runtime/startup prefetch","store/store.js","index.js"],"sourcesContent":["export function getCookieForm(cname, idiom = null) {\r\n var name = cname + '=';\r\n if (idiom !== null) name = cname + '-' + idiom + '=';\r\n var decodedCookie = decodeURIComponent(document.cookie);\r\n var ca = decodedCookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n}\r\nexport function setCookieForm(cname, cvalue, idiom = null) {\r\n var d = new Date();\r\n d.setTime(d.getTime() + 60 * 60 * 1000);\r\n var expires = 'expires=' + d.toUTCString();\r\n if (idiom !== null) cname = cname + '-' + idiom;\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n}\r\nexport function deleteCookieForm(cname, idiom = null) {\r\n var expires = 'expires=Thu, 21 Aug 2014 20:00:00 UTC';\r\n if (idiom !== null) cname = cname + '-' + idiom;\r\n document.cookie = cname + '=;' + expires + ';path=/';\r\n}\r\n","import _ from 'lodash';\r\nimport getTexto from './messages';\r\nimport { getLanguage } from './language';\r\n\r\nexport function isHome(location){\r\n \r\n return location.pathname === process.env.PUBLIC_URL + '/' || location.pathname === process.env.PUBLIC_URL || location.pathname === process.env.PUBLIC_URL + '/index.html'\r\n}\r\n\r\nexport function backToTop() {\r\n document.body.scrollTop = 0; // For Safari\r\n document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera\r\n}\r\nexport function getParamsFromUrl(variable) {\r\n let search = window.location.search.substr(1);\r\n var searchParams = new URLSearchParams(search);\r\n return searchParams.get(variable);\r\n}\r\nexport function getAllParamsFromUrl() {\r\n let search = window.location.search.substr(1);\r\n var searchParams = new URLSearchParams(search);\r\n return searchParams;\r\n}\r\n\r\nexport function setCookie(cname, cvalue, exdays) {\r\n var d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n var expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n}\r\nexport function isKsk(site) {\r\n return site?.initialConfig?.WebSection === kskTag()//\"KSK\"\r\n}\r\nexport function isRentals(site) {\r\n return site?.initialConfig?.WebSection === rentalsTag()//\"RENTAL\"\r\n}\r\nexport function isGifts(site) {\r\n return site?.initialConfig?.WebSection === giftsTag()//\"SPGIFT\"\r\n}\r\nexport function kskTag() {\r\n return \"KSK\"\r\n}\r\nexport function rentalsTag() {\r\n return \"Rentals\"\r\n}\r\nexport function giftsTag() {\r\n return \"SpecialGifts\"\r\n}\r\nexport function getWebSectionForEndpoint(webSection = \"KSK\"){\r\n let tag = kskTag();\r\n switch(webSection){\r\n case \"KSK\": tag = kskTag(); break;\r\n case \"RENTAL\": tag = rentalsTag(); break;\r\n case \"SPGIFT\": tag = giftsTag(); break;\r\n default: tag = kskTag();break\r\n }\r\n\r\n return tag;\r\n}\r\n// function getCookie(cname) {\r\n// var name = cname + '=';\r\n// var decodedCookie = decodeURIComponent(document.cookie);\r\n// var ca = decodedCookie.split(';');\r\n// for (var i = 0; i < ca.length; i++) {\r\n// var c = ca[i];\r\n// while (c.charAt(0) === ' ') {\r\n// c = c.substring(1);\r\n// }\r\n// if (c.indexOf(name) === 0) {\r\n// return c.substring(name.length, c.length);\r\n// }\r\n// }\r\n// return '';\r\n// }\r\n\r\nexport function openModalForLogin(config, reduxLogin) {\r\n var left = Screen.width / 2 - 400 / 2;\r\n var top = Screen.height / 2 - 600 / 2;\r\n var strWindowFeatures =\r\n 'menubar=no,location=no,resizable=no,scrollbars=yes,status=no,width=400,innerHeight=600,centerscreen=yes,chrome=yes, top=' +\r\n top +\r\n ', left=' +\r\n left +\r\n '';\r\n window['output'] = function (userToken ) {\r\n console.log(userToken);\r\n reduxLogin(userToken);\r\n };\r\n \r\n let idioma = getLanguage() ==\"en-US\"? \"en\": \"es\";\r\n window.open(\r\n config.urlToGetTokenToLogin +\r\n '?Code=' +\r\n config.codeToGetTokenToLogin +\r\n '&Lang='+idioma+\r\n '&ReturnUrl=' +\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n (window.location.hostname === 'localhost' ? ':3000' : '') +\r\n '/redirect.html',\r\n 'CNN_WindowName',\r\n strWindowFeatures\r\n );\r\n}\r\nexport function RetrieveRandomObjByCat(objects, cat, numberToRetrieve) {\r\n let arrayItems = [];\r\n let itents = 0;\r\n let itemsFilteredByCat = _.filter(objects, function (o) {\r\n return o.ItemExt.Group.SGroupCode === cat;\r\n });\r\n while (arrayItems.length < numberToRetrieve && itents < 1000) {\r\n let number = _.random(0, Object.keys(itemsFilteredByCat).length);\r\n let newArray = itemsFilteredByCat.slice(number, number + 1);\r\n if (newArray.length > 0) {\r\n if (\r\n _.findIndex(arrayItems, function (o) {\r\n return o.IItemID === newArray[0].IItemID;\r\n }) === -1\r\n ) {\r\n arrayItems.push(...newArray);\r\n }\r\n }\r\n itents++;\r\n }\r\n return arrayItems;\r\n}\r\n\r\nexport function openModalForRetrieveUser(config, reduxLogin) {\r\n var left = Screen.width / 2 - 400 / 2;\r\n var top = Screen.height / 2 - 600 / 2;\r\n var strWindowFeatures =\r\n 'menubar=no,location=no,resizable=no,scrollbars=yes,status=no,width=400,innerHeight=600,centerscreen=yes,chrome=yes, top=' +\r\n top +\r\n ', left=' +\r\n left +\r\n '';\r\n window['output'] = function (userToken) {\r\n reduxLogin(userToken);\r\n };\r\n window.open(\r\n config.urlToRetrieveTokenToLogin +\r\n '?Code=' +\r\n config.codeToGetTokenToLogin +\r\n '&ReturnUrl=' +\r\n window.location.protocol +\r\n '//' +\r\n window.location.hostname +\r\n (window.location.hostname === 'localhost' ? ':3000' : '') +\r\n '/redirect.html',\r\n 'CNN_WindowName',\r\n strWindowFeatures\r\n );\r\n}\r\n\r\nexport function removeCharactersFromText(str) {\r\n let result = '';\r\n for (let i = 0; i < str.length; i++) {\r\n let char = str[i];\r\n if (\r\n (char === '*' && str[i + 1] === '*') ||\r\n (char === '_' && str[i + 1] === '_')\r\n ) {\r\n i++;\r\n continue;\r\n }\r\n result = result + char;\r\n }\r\n return result;\r\n}\r\nexport function getRichText(str) {\r\n let result = '';\r\n let key = '';\r\n for (let i = 0; i < str.length; i++) {\r\n let char = str[i];\r\n if (char === '*' && str[i + 1] === '*' && key === '') {\r\n result = result + '';\r\n key = '*';\r\n i++;\r\n continue;\r\n } else if (char === '*' && str[i + 1] === '*' && key === '*') {\r\n result = result + '';\r\n key = '';\r\n i++;\r\n continue;\r\n }\r\n\r\n if (char === '_' && str[i + 1] === '_' && key === '') {\r\n result = result + '';\r\n key = '_';\r\n i++;\r\n continue;\r\n } else if (char === '_' && str[i + 1] === '_' && key === '_') {\r\n result = result + '';\r\n key = '';\r\n i++;\r\n continue;\r\n }\r\n result = result + char;\r\n }\r\n\r\n return result;\r\n}\r\nexport function filterItemsByNew(items) {\r\n let newResultItems = []; // adding all the items that have the YnNewItem node set to 1\r\n items.forEach((item) => {\r\n if (item.YnNewItem && item.YnNewItem === '1') {\r\n newResultItems.unshift(item);\r\n } else {\r\n newResultItems.push(item);\r\n }\r\n });\r\n return newResultItems;\r\n}\r\n\r\nexport function addOfferCategory(list) {\r\n return [\r\n {\r\n ICategoryID: 'ALL',\r\n SCategoryCode: 'ALL',\r\n SCategoryDesc: getTexto('All Categories'),\r\n LsGroup: [\r\n {\r\n IGroupID: 999999,\r\n SGroupCode: 'ALL',\r\n SGroupDesc: getTexto('All Categories'),\r\n },\r\n ],\r\n },\r\n ...list,\r\n {\r\n ICategoryID: 'OFFER',\r\n SCategoryCode: 'OFFER',\r\n SCategoryDesc: 'OFFERS',\r\n LsGroup: [\r\n {\r\n IGroupID: 0,\r\n SGroupCode: 'OFFER',\r\n SGroupDesc: 'OFFERS',\r\n },\r\n ],\r\n },\r\n ];\r\n}\r\n\r\nexport function getOfferPriceDetails(item) {\r\n let result = {\r\n priceWDiscount: item.OfferDetail.reduce((a, b) => a.Price + b.Price),\r\n price: item.OfferDetail.reduce(\r\n (a, b) => a.Price - a.Discount + b.Price - b.Discount\r\n ),\r\n totalDiscount: item.OfferDetail.reduce((a, b) => a.Discount + b.Discount),\r\n };\r\n return result;\r\n}\r\n\r\nexport function getDetailsCart(cart) {\r\n let result = {\r\n subTotal: 0.0,\r\n discount10: 0.0, \r\n discountOffer: 0.0,\r\n total: 0.0,\r\n };\r\n cart.map((item) => {\r\n if (item.item.isOffer) {\r\n result.subTotal +=\r\n parseFloat(item.item.priceDetails.priceWDiscount).toFixed(2) *\r\n parseFloat(item.totalItems);\r\n result.discountOffer +=\r\n parseFloat(item.item.priceDetails.totalDiscount).toFixed(2) *\r\n parseFloat(item.totalItems);\r\n result.total +=\r\n parseFloat(item.item.priceDetails.price).toFixed(2) *\r\n parseFloat(item.totalItems);\r\n } else {\r\n let priceItem =\r\n parseFloat(item.item.DPrice).toFixed(2) * parseFloat(item.totalItems);\r\n result.subTotal += priceItem;\r\n result.discount10 += parseFloat(priceItem).toFixed(2) * getDiscountByTag();\r\n result.total += priceItem * (1 - getDiscountByTag());\r\n }\r\n return true;\r\n });\r\n result['totalPrice'] = result.subTotal;\r\n\r\n return result;\r\n}\r\n\r\nexport function thereIsDiscountByTag(webSection = localStorage.getItem('site') ? localStorage.getItem('site') : \"KSK\" ){\r\n let discout = true;\r\n switch(webSection){\r\n case \"KSK\": discout = true; break;\r\n case \"RENTAL\": discout = false; break;\r\n case \"SPGIFT\": discout = false; break;\r\n default: discout = false;break\r\n }\r\n return discout;\r\n}\r\nexport function getDiscountByTag(webSection = localStorage.getItem('site') ? localStorage.getItem('site') : \"KSK\" ){\r\n let discout = 0.1;\r\n switch(webSection){\r\n case \"KSK\": discout = 0.1; break;\r\n case \"RENTAL\": discout = 0.0; break;\r\n case \"SPGIFT\": discout = 0.0; break;\r\n default: discout = 0.0;break\r\n }\r\n return discout;\r\n}\r\n","import { setCookieForm, getCookieForm } from './cookieManager';\r\nimport {getWebSectionForEndpoint} from \"./helpers\"\r\nexport function SetLanguage(idiom = 'en-US', callback) {\r\n setCookieForm('Language', idiom);\r\n window.location.reload();\r\n setTimeout(() => {\r\n callback();\r\n }, 100);\r\n}\r\nexport function getLanguage() {\r\n return getCookieForm('Language') === '' ? 'en-US' : getCookieForm('Language');\r\n}\r\n\r\nexport function getLanguageEndpoints(domain, devDomain, webSection = 'KSK') {\r\n let urlEndpoint = ''; \r\n if (isDev()) {\r\n //se agrega lenguaje\r\n urlEndpoint += devDomain;\r\n urlEndpoint +=\r\n getCookieForm('Language') === ''\r\n ? '/'\r\n : getCookieForm('Language') === 'en-US'\r\n ? '/'\r\n : 'ES/';\r\n urlEndpoint += getWebSectionForEndpoint(webSection) + '/';\r\n urlEndpoint += 'Shopping';\r\n } else {\r\n urlEndpoint += domain;\r\n urlEndpoint +=\r\n getCookieForm('Language') === ''\r\n ? '/'\r\n : getCookieForm('Language') === 'en-US'\r\n ? '/'\r\n : '/es/';\r\n urlEndpoint += 'RoyalMarket/';\r\n urlEndpoint += getWebSectionForEndpoint(webSection) + '/';\r\n urlEndpoint += 'Shopping';\r\n }\r\n return urlEndpoint;\r\n}\r\n\r\nexport function isDev() {\r\n if (window.location.host === 'localhost:3000') {\r\n return false;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport function SetCurrency(cur) {\r\n setCookieForm('Currency', cur);\r\n}\r\nexport function getCurrency() {\r\n return getCookieForm('Currency') === '' ? 'MXN' : getCookieForm('Currency');\r\n}\r\n","import { getLanguage } from '../libs/language';\r\n\r\nvar textos = {};\r\n\r\nexport default function getTexto(textoInput) {\r\n if (getLanguage() === 'en-US') {\r\n return textoInput;\r\n } else {\r\n return textos[textoInput] !== undefined ? textos[textoInput] : textoInput;\r\n }\r\n}\r\n\r\nexport function setTextToTraslateTool(textResp) {\r\n textos = {};\r\n textos = textResp;\r\n}\r\n","import { createSlice, current } from '@reduxjs/toolkit';\r\nimport { getDetailsCart, getWebSectionForEndpoint } from '../libs/helpers';\r\n\r\nexport const cartSlice = createSlice({\r\n name: 'cart',\r\n initialState: { itemsCart: [], isShowed: false, loader: false },\r\n reducers: {\r\n setLoader: (state, action) => {\r\n return { ...state, loader: action.payload };\r\n },\r\n resetCartItems: (state, action) => {\r\n let cartSite = localStorage.getItem('site');\r\n localStorage.setItem(`cart-${cartSite}`, window.btoa(JSON.stringify([])));\r\n return {\r\n ...state,\r\n itemsCart: [],\r\n itemsCount: 0,\r\n totalPrice: parseFloat(0.0).toFixed(1),\r\n };\r\n },\r\n fetchCartItems: (state, action) => {\r\n let iniConfig = action.payload;\r\n let count = 0;\r\n let itemsCart = [];\r\n\r\n let cartSite = localStorage.getItem('site');\r\n if (localStorage.getItem(`cart-${cartSite}`)) {\r\n itemsCart = JSON.parse(window.atob(localStorage.getItem(`cart-${cartSite}`)));\r\n itemsCart.forEach((item) => {\r\n count = count + 1;\r\n });\r\n }\r\n return {\r\n ...current(state),\r\n ini: iniConfig,\r\n itemsCart: itemsCart,\r\n itemsCount: count,\r\n ...getDetailsCart(itemsCart),\r\n };\r\n },\r\n deleteCartItem: (state, action) => {\r\n let currentState = current(state);\r\n let codeItem = action.payload;\r\n let newArray = [];\r\n\r\n newArray = currentState.itemsCart.filter(\r\n (i) => i.item.SItemCode !== codeItem\r\n );\r\n let cartSite = localStorage.getItem('site');\r\n localStorage.setItem(`cart-${cartSite}`, window.btoa(JSON.stringify(newArray)));\r\n return {\r\n ...currentState,\r\n itemsCart: newArray,\r\n itemsCount: newArray.length,\r\n ...getDetailsCart(newArray),\r\n };\r\n },\r\n setItemToCart: (state, action) => {\r\n let currentState = current(state);\r\n let newListItemsCart = [...currentState.itemsCart];\r\n let newItemToCart = action.payload.item;\r\n let Exist = false;\r\n\r\n let newItems = newListItemsCart.map((item) => {\r\n if (item.item.SItemCode === newItemToCart.SItemCode) {\r\n Exist = true;\r\n if (action.payload.onList === true) {\r\n if (item.item.YnAllowFractionalSale === 1) {\r\n let totalItems =\r\n parseFloat(item.totalItems) +\r\n parseFloat(action.payload.totalItems);\r\n item = { ...item, totalItems: totalItems };\r\n } else {\r\n let totalItems =\r\n item.totalItems + parseInt(action.payload.totalItems);\r\n item = { ...item, totalItems: totalItems };\r\n }\r\n } else {\r\n item = { ...item, totalItems: action.payload.totalItems };\r\n }\r\n }\r\n return item;\r\n });\r\n newListItemsCart = newItems;\r\n if (!Exist) {\r\n newListItemsCart.push(action.payload);\r\n }\r\n let cartSite = localStorage.getItem('site');\r\n localStorage.setItem(\r\n `cart-${cartSite}`,\r\n window.btoa(JSON.stringify(newListItemsCart))\r\n );\r\n\r\n return {\r\n ...currentState,\r\n itemsCart: newListItemsCart,\r\n itemsCount: newListItemsCart.length,\r\n ...getDetailsCart(newListItemsCart),\r\n };\r\n },\r\n },\r\n});\r\n\r\nexport const setCartToSessionSync = (obj) => async (dispatch, getState) => {\r\n dispatch(setLoader(true));\r\n\r\n let paramForForm = JSON.stringify(obj);\r\n let user = {};\r\n if (getState().site.user !== undefined && getState().site.user !== null) {\r\n user = JSON.stringify({\r\n Email: getState().site.user.Email,\r\n FullName: getState().site.user.fullName,\r\n Name: getState().site.user.FName,\r\n LastName: getState().site.user.LName1,\r\n });\r\n } else {\r\n user = '';\r\n }\r\n\r\n var form = document.createElement('form');\r\n document.body.appendChild(form);\r\n var element1 = document.createElement('input');\r\n var element2 = document.createElement('input');\r\n form.method = 'POST';\r\n form.action = `${getState().site.initialConfig.urlAPI}/RoyalMarket/${getWebSectionForEndpoint(\r\n getState().site.initialConfig.WebSection\r\n )}/Shopping/InformationPayV2`;\r\n element1.value = paramForForm;\r\n element1.name = 'Data';\r\n element1.type = 'hidden';\r\n element2.value = user;\r\n element2.name = 'UserData';\r\n element2.type = 'hidden';\r\n form.appendChild(element1);\r\n form.appendChild(element2);\r\n dispatch(resetCartItems());\r\n form.submit();\r\n};\r\n\r\nexport const {\r\n fetchCartItems,\r\n setItemToCart,\r\n deleteCartItem,\r\n setLoader,\r\n resetCartItems,\r\n} = cartSlice.actions;\r\nexport const selectItemsCart = (state) => state.cart.itemsCart;\r\nexport default cartSlice.reducer;\r\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\n */\n\nexport const CONSTANTS = {\n /**\n * @define {boolean} Whether this is the client Node.js SDK.\n */\n NODE_CLIENT: false,\n /**\n * @define {boolean} Whether this is the Admin Node.js SDK.\n */\n NODE_ADMIN: false,\n\n /**\n * Firebase SDK Version\n */\n SDK_VERSION: '${JSCORE_VERSION}'\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CONSTANTS } from './constants';\n\n/**\n * Throws an error if the provided assertion is falsy\n */\nexport const assert = function (assertion: unknown, message: string): void {\n if (!assertion) {\n throw assertionError(message);\n }\n};\n\n/**\n * Returns an Error object suitable for throwing.\n */\nexport const assertionError = function (message: string): Error {\n return new Error(\n 'Firebase Database (' +\n CONSTANTS.SDK_VERSION +\n ') INTERNAL ASSERT FAILED: ' +\n message\n );\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst stringToByteArray = function (str: string): number[] {\n // TODO(user): Use native implementations if/when available\n const out: number[] = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n } else if (\n (c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n ) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n } else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param bytes Array of numbers representing characters.\n * @return Stringification of the array.\n */\nconst byteArrayToString = function (bytes: number[]): string {\n // TODO(user): Use native implementations if/when available\n const out: string[] = [];\n let pos = 0,\n c = 0;\n while (pos < bytes.length) {\n const c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n } else if (c1 > 191 && c1 < 224) {\n const c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n const c4 = bytes[pos++];\n const u =\n (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n } else {\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n out[c++] = String.fromCharCode(\n ((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)\n );\n }\n }\n return out.join('');\n};\n\ninterface Base64 {\n byteToCharMap_: { [key: number]: string } | null;\n charToByteMap_: { [key: string]: number } | null;\n byteToCharMapWebSafe_: { [key: number]: string } | null;\n charToByteMapWebSafe_: { [key: string]: number } | null;\n ENCODED_VALS_BASE: string;\n readonly ENCODED_VALS: string;\n readonly ENCODED_VALS_WEBSAFE: string;\n HAS_NATIVE_SUPPORT: boolean;\n encodeByteArray(input: number[] | Uint8Array, webSafe?: boolean): string;\n encodeString(input: string, webSafe?: boolean): string;\n decodeString(input: string, webSafe: boolean): string;\n decodeStringToByteArray(input: string, webSafe: boolean): number[];\n init_(): void;\n}\n\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\n// Static lookup maps, lazily populated by init_()\nexport const base64: Base64 = {\n /**\n * Maps bytes to characters.\n */\n byteToCharMap_: null,\n\n /**\n * Maps characters to bytes.\n */\n charToByteMap_: null,\n\n /**\n * Maps bytes to websafe characters.\n * @private\n */\n byteToCharMapWebSafe_: null,\n\n /**\n * Maps websafe characters to bytes.\n * @private\n */\n charToByteMapWebSafe_: null,\n\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n */\n ENCODED_VALS_BASE:\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n\n /**\n * Our websafe alphabet.\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n\n /**\n * Base64-encode an array of bytes.\n *\n * @param input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeByteArray(input: number[] | Uint8Array, webSafe?: boolean): string {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n\n this.init_();\n\n const byteToCharMap = webSafe\n ? this.byteToCharMapWebSafe_!\n : this.byteToCharMap_!;\n\n const output = [];\n\n for (let i = 0; i < input.length; i += 3) {\n const byte1 = input[i];\n const haveByte2 = i + 1 < input.length;\n const byte2 = haveByte2 ? input[i + 1] : 0;\n const haveByte3 = i + 2 < input.length;\n const byte3 = haveByte3 ? input[i + 2] : 0;\n\n const outByte1 = byte1 >> 2;\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n let outByte4 = byte3 & 0x3f;\n\n if (!haveByte3) {\n outByte4 = 64;\n\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n\n output.push(\n byteToCharMap[outByte1],\n byteToCharMap[outByte2],\n byteToCharMap[outByte3],\n byteToCharMap[outByte4]\n );\n }\n\n return output.join('');\n },\n\n /**\n * Base64-encode a string.\n *\n * @param input A string to encode.\n * @param webSafe If true, we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeString(input: string, webSafe?: boolean): string {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray(input), webSafe);\n },\n\n /**\n * Base64-decode a string.\n *\n * @param input to decode.\n * @param webSafe True if we should use the\n * alternative alphabet.\n * @return string representing the decoded value.\n */\n decodeString(input: string, webSafe: boolean): string {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\n },\n\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param input Input to decode.\n * @param webSafe True if we should use the web-safe alphabet.\n * @return bytes representing the decoded value.\n */\n decodeStringToByteArray(input: string, webSafe: boolean): number[] {\n this.init_();\n\n const charToByteMap = webSafe\n ? this.charToByteMapWebSafe_!\n : this.charToByteMap_!;\n\n const output: number[] = [];\n\n for (let i = 0; i < input.length; ) {\n const byte1 = charToByteMap[input.charAt(i++)];\n\n const haveByte2 = i < input.length;\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n\n const haveByte3 = i < input.length;\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n\n const haveByte4 = i < input.length;\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw new DecodeBase64StringError();\n }\n\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n\n if (byte3 !== 64) {\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n\n if (byte4 !== 64) {\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n\n return output;\n },\n\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_() {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n\n // We want quick mappings back and forth, so we precompute two maps.\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n\n/**\n * An error encountered while decoding base64 string.\n */\nexport class DecodeBase64StringError extends Error {\n readonly name = 'DecodeBase64StringError';\n}\n\n/**\n * URL-safe base64 encoding\n */\nexport const base64Encode = function (str: string): string {\n const utf8Bytes = stringToByteArray(str);\n return base64.encodeByteArray(utf8Bytes, true);\n};\n\n/**\n * URL-safe base64 encoding (without \".\" padding in the end).\n * e.g. Used in JSON Web Token (JWT) parts.\n */\nexport const base64urlEncodeWithoutPadding = function (str: string): string {\n // Use base64url encoding and remove padding in the end (dot characters).\n return base64Encode(str).replace(/\\./g, '');\n};\n\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param str To be decoded\n * @return Decoded result, if possible\n */\nexport const base64Decode = function (str: string): string | null {\n try {\n return base64.decodeString(str, true);\n } catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Do a deep-copy of basic JavaScript Objects or Arrays.\n */\nexport function deepCopy(value: T): T {\n return deepExtend(undefined, value) as T;\n}\n\n/**\n * Copy properties from source to target (recursively allows extension\n * of Objects and Arrays). Scalar values in the target are over-written.\n * If target is undefined, an object of the appropriate type will be created\n * (and returned).\n *\n * We recursively copy all child properties of plain Objects in the source- so\n * that namespace- like dictionaries are merged.\n *\n * Note that the target can be a function, in which case the properties in\n * the source Object are copied onto it as static properties of the Function.\n *\n * Note: we don't merge __proto__ to prevent prototype pollution\n */\nexport function deepExtend(target: unknown, source: unknown): unknown {\n if (!(source instanceof Object)) {\n return source;\n }\n\n switch (source.constructor) {\n case Date:\n // Treat Dates like scalars; if the target date object had any child\n // properties - they will be lost!\n const dateValue = source as Date;\n return new Date(dateValue.getTime());\n\n case Object:\n if (target === undefined) {\n target = {};\n }\n break;\n case Array:\n // Always copy the array source and overwrite the target.\n target = [];\n break;\n\n default:\n // Not a plain Object - treat it as a scalar.\n return source;\n }\n\n for (const prop in source) {\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\n continue;\n }\n (target as Record)[prop] = deepExtend(\n (target as Record)[prop],\n (source as Record)[prop]\n );\n }\n\n return target;\n}\n\nfunction isValidKey(key: string): boolean {\n return key !== '__proto__';\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { base64Decode } from './crypt';\nimport { getGlobal } from './global';\n\n/**\n * Keys for experimental properties on the `FirebaseDefaults` object.\n * @public\n */\nexport type ExperimentalKey = 'authTokenSyncURL' | 'authIdTokenMaxAge';\n\n/**\n * An object that can be injected into the environment as __FIREBASE_DEFAULTS__,\n * either as a property of globalThis, a shell environment variable, or a\n * cookie.\n *\n * This object can be used to automatically configure and initialize\n * a Firebase app as well as any emulators.\n *\n * @public\n */\nexport interface FirebaseDefaults {\n config?: Record;\n emulatorHosts?: Record;\n _authTokenSyncURL?: string;\n _authIdTokenMaxAge?: number;\n /**\n * Override Firebase's runtime environment detection and\n * force the SDK to act as if it were in the specified environment.\n */\n forceEnvironment?: 'browser' | 'node';\n [key: string]: unknown;\n}\n\ndeclare global {\n // Need `var` for this to work.\n // eslint-disable-next-line no-var\n var __FIREBASE_DEFAULTS__: FirebaseDefaults | undefined;\n}\n\nconst getDefaultsFromGlobal = (): FirebaseDefaults | undefined =>\n getGlobal().__FIREBASE_DEFAULTS__;\n\n/**\n * Attempt to read defaults from a JSON string provided to\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\n * The dots are in parens because certain compilers (Vite?) cannot\n * handle seeing that variable in comments.\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\n */\nconst getDefaultsFromEnvVariable = (): FirebaseDefaults | undefined => {\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\n return;\n }\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\n if (defaultsJsonString) {\n return JSON.parse(defaultsJsonString);\n }\n};\n\nconst getDefaultsFromCookie = (): FirebaseDefaults | undefined => {\n if (typeof document === 'undefined') {\n return;\n }\n let match;\n try {\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\n } catch (e) {\n // Some environments such as Angular Universal SSR have a\n // `document` object but error on accessing `document.cookie`.\n return;\n }\n const decoded = match && base64Decode(match[1]);\n return decoded && JSON.parse(decoded);\n};\n\n/**\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\n * (1) if such an object exists as a property of `globalThis`\n * (2) if such an object was provided on a shell environment variable\n * (3) if such an object exists in a cookie\n * @public\n */\nexport const getDefaults = (): FirebaseDefaults | undefined => {\n try {\n return (\n getDefaultsFromGlobal() ||\n getDefaultsFromEnvVariable() ||\n getDefaultsFromCookie()\n );\n } catch (e) {\n /**\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\n * to any environment case we have not accounted for. Log to\n * info instead of swallowing so we can find these unknown cases\n * and add paths for them if needed.\n */\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\n return;\n }\n};\n\n/**\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\n * @public\n */\nexport const getDefaultEmulatorHost = (\n productName: string\n): string | undefined => getDefaults()?.emulatorHosts?.[productName];\n\n/**\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\n * @public\n */\nexport const getDefaultEmulatorHostnameAndPort = (\n productName: string\n): [hostname: string, port: number] | undefined => {\n const host = getDefaultEmulatorHost(productName);\n if (!host) {\n return undefined;\n }\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\n }\n // eslint-disable-next-line no-restricted-globals\n const port = parseInt(host.substring(separatorIndex + 1), 10);\n if (host[0] === '[') {\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\n return [host.substring(1, separatorIndex - 1), port];\n } else {\n return [host.substring(0, separatorIndex), port];\n }\n};\n\n/**\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\n * @public\n */\nexport const getDefaultAppConfig = (): Record | undefined =>\n getDefaults()?.config;\n\n/**\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\n * prefixed by \"_\")\n * @public\n */\nexport const getExperimentalSetting = (\n name: T\n): FirebaseDefaults[`_${T}`] =>\n getDefaults()?.[`_${name}`] as FirebaseDefaults[`_${T}`];\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Polyfill for `globalThis` object.\n * @returns the `globalThis` object for the given environment.\n * @public\n */\nexport function getGlobal(): typeof globalThis {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('Unable to locate global object.');\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class Deferred {\n promise: Promise;\n reject: (value?: unknown) => void = () => {};\n resolve: (value?: unknown) => void = () => {};\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve as (value?: unknown) => void;\n this.reject = reject as (value?: unknown) => void;\n });\n }\n\n /**\n * Our API internals are not promisified and cannot because our callback APIs have subtle expectations around\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\n */\n wrapCallback(\n callback?: (error?: unknown, value?: unknown) => void\n ): (error: unknown, value?: unknown) => void {\n return (error, value?) => {\n if (error) {\n this.reject(error);\n } else {\n this.resolve(value);\n }\n if (typeof callback === 'function') {\n // Attaching noop handler just in case developer wasn't expecting\n // promises\n this.promise.catch(() => {});\n\n // Some of our callbacks don't expect a value and our own tests\n // assert that the parameter length is 1\n if (callback.length === 1) {\n callback(error);\n } else {\n callback(error, value);\n }\n }\n };\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CONSTANTS } from './constants';\nimport { getDefaults } from './defaults';\n\n/**\n * Type placeholder for `WorkerGlobalScope` from `webworker`\n */\ndeclare class WorkerGlobalScope {}\n\n/**\n * Returns navigator.userAgent string or '' if it's not defined.\n * @return user agent string\n */\nexport function getUA(): string {\n if (\n typeof navigator !== 'undefined' &&\n typeof navigator['userAgent'] === 'string'\n ) {\n return navigator['userAgent'];\n } else {\n return '';\n }\n}\n\n/**\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\n *\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\n * wait for a callback.\n */\nexport function isMobileCordova(): boolean {\n return (\n typeof window !== 'undefined' &&\n // @ts-ignore Setting up an broadly applicable index signature for Window\n // just to deal with this case would probably be a bad idea.\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA())\n );\n}\n\n/**\n * Detect Node.js.\n *\n * @return true if Node.js environment is detected or specified.\n */\n// Node detection logic from: https://github.com/iliakan/detect-node/\nexport function isNode(): boolean {\n const forceEnvironment = getDefaults()?.forceEnvironment;\n if (forceEnvironment === 'node') {\n return true;\n } else if (forceEnvironment === 'browser') {\n return false;\n }\n\n try {\n return (\n Object.prototype.toString.call(global.process) === '[object process]'\n );\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Detect Browser Environment.\n * Note: This will return true for certain test frameworks that are incompletely\n * mimicking a browser, and should not lead to assuming all browser APIs are\n * available.\n */\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined' || isWebWorker();\n}\n\n/**\n * Detect Web Worker context.\n */\nexport function isWebWorker(): boolean {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope\n );\n}\n\n/**\n * Detect Cloudflare Worker context.\n */\nexport function isCloudflareWorker(): boolean {\n return (\n typeof navigator !== 'undefined' &&\n navigator.userAgent === 'Cloudflare-Workers'\n );\n}\n\n/**\n * Detect browser extensions (Chrome and Firefox at least).\n */\ninterface BrowserRuntime {\n id?: unknown;\n}\ndeclare const chrome: { runtime?: BrowserRuntime };\ndeclare const browser: { runtime?: BrowserRuntime };\nexport function isBrowserExtension(): boolean {\n const runtime =\n typeof chrome === 'object'\n ? chrome.runtime\n : typeof browser === 'object'\n ? browser.runtime\n : undefined;\n return typeof runtime === 'object' && runtime.id !== undefined;\n}\n\n/**\n * Detect React Native.\n *\n * @return true if ReactNative environment is detected.\n */\nexport function isReactNative(): boolean {\n return (\n typeof navigator === 'object' && navigator['product'] === 'ReactNative'\n );\n}\n\n/** Detects Electron apps. */\nexport function isElectron(): boolean {\n return getUA().indexOf('Electron/') >= 0;\n}\n\n/** Detects Internet Explorer. */\nexport function isIE(): boolean {\n const ua = getUA();\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n}\n\n/** Detects Universal Windows Platform apps. */\nexport function isUWP(): boolean {\n return getUA().indexOf('MSAppHost/') >= 0;\n}\n\n/**\n * Detect whether the current SDK build is the Node version.\n *\n * @return true if it's the Node SDK build.\n */\nexport function isNodeSdk(): boolean {\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\n}\n\n/** Returns true if we are running in Safari. */\nexport function isSafari(): boolean {\n return (\n !isNode() &&\n !!navigator.userAgent &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome')\n );\n}\n\n/**\n * This method checks if indexedDB is supported by current browser/service worker context\n * @return true if indexedDB is supported by current browser/service worker context\n */\nexport function isIndexedDBAvailable(): boolean {\n try {\n return typeof indexedDB === 'object';\n } catch (e) {\n return false;\n }\n}\n\n/**\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\n * if errors occur during the database open operation.\n *\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\n * private browsing)\n */\nexport function validateIndexedDBOpenable(): Promise {\n return new Promise((resolve, reject) => {\n try {\n let preExist: boolean = true;\n const DB_CHECK_NAME =\n 'validate-browser-context-for-indexeddb-analytics-module';\n const request = self.indexedDB.open(DB_CHECK_NAME);\n request.onsuccess = () => {\n request.result.close();\n // delete database only when it doesn't pre-exist\n if (!preExist) {\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\n }\n resolve(true);\n };\n request.onupgradeneeded = () => {\n preExist = false;\n };\n\n request.onerror = () => {\n reject(request.error?.message || '');\n };\n } catch (error) {\n reject(error);\n }\n });\n}\n\n/**\n *\n * This method checks whether cookie is enabled within current browser\n * @return true if cookie is enabled within current browser\n */\nexport function areCookiesEnabled(): boolean {\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\n return false;\n }\n return true;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Standardized Firebase Error.\n *\n * Usage:\n *\n * // TypeScript string literals for type-safe codes\n * type Err =\n * 'unknown' |\n * 'object-not-found'\n * ;\n *\n * // Closure enum for type-safe error codes\n * // at-enum {string}\n * var Err = {\n * UNKNOWN: 'unknown',\n * OBJECT_NOT_FOUND: 'object-not-found',\n * }\n *\n * let errors: Map = {\n * 'generic-error': \"Unknown error\",\n * 'file-not-found': \"Could not find file: {$file}\",\n * };\n *\n * // Type-safe function - must pass a valid error code as param.\n * let error = new ErrorFactory('service', 'Service', errors);\n *\n * ...\n * throw error.create(Err.GENERIC);\n * ...\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\n * ...\n * // Service: Could not file file: foo.txt (service/file-not-found).\n *\n * catch (e) {\n * assert(e.message === \"Could not find file: foo.txt.\");\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\n * console.log(\"Could not read file: \" + e['file']);\n * }\n * }\n */\n\nexport type ErrorMap = {\n readonly [K in ErrorCode]: string;\n};\n\nconst ERROR_NAME = 'FirebaseError';\n\nexport interface StringLike {\n toString(): string;\n}\n\nexport interface ErrorData {\n [key: string]: unknown;\n}\n\n// Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\nexport class FirebaseError extends Error {\n /** The custom name for all FirebaseErrors. */\n readonly name: string = ERROR_NAME;\n\n constructor(\n /** The error code for this error. */\n readonly code: string,\n message: string,\n /** Custom data for this error. */\n public customData?: Record\n ) {\n super(message);\n\n // Fix For ES5\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, FirebaseError.prototype);\n\n // Maintains proper stack trace for where our error was thrown.\n // Only available on V8.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\n }\n }\n}\n\nexport class ErrorFactory<\n ErrorCode extends string,\n ErrorParams extends { readonly [K in ErrorCode]?: ErrorData } = {}\n> {\n constructor(\n private readonly service: string,\n private readonly serviceName: string,\n private readonly errors: ErrorMap\n ) {}\n\n create(\n code: K,\n ...data: K extends keyof ErrorParams ? [ErrorParams[K]] : []\n ): FirebaseError {\n const customData = (data[0] as ErrorData) || {};\n const fullCode = `${this.service}/${code}`;\n const template = this.errors[code];\n\n const message = template ? replaceTemplate(template, customData) : 'Error';\n // Service Name: Error message (service/code).\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\n\n const error = new FirebaseError(fullCode, fullMessage, customData);\n\n return error;\n }\n}\n\nfunction replaceTemplate(template: string, data: ErrorData): string {\n return template.replace(PATTERN, (_, key) => {\n const value = data[key];\n return value != null ? String(value) : `<${key}?>`;\n });\n}\n\nconst PATTERN = /\\{\\$([^}]+)}/g;\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Evaluates a JSON string into a javascript object.\n *\n * @param {string} str A string containing JSON.\n * @return {*} The javascript object representing the specified JSON.\n */\nexport function jsonEval(str: string): unknown {\n return JSON.parse(str);\n}\n\n/**\n * Returns JSON representing a javascript object.\n * @param {*} data JavaScript object to be stringified.\n * @return {string} The JSON contents of the object.\n */\nexport function stringify(data: unknown): string {\n return JSON.stringify(data);\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { base64Decode } from './crypt';\nimport { jsonEval } from './json';\n\ninterface Claims {\n [key: string]: {};\n}\n\ninterface DecodedToken {\n header: object;\n claims: Claims;\n data: object;\n signature: string;\n}\n\n/**\n * Decodes a Firebase auth. token into constituent parts.\n *\n * Notes:\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nexport const decode = function (token: string): DecodedToken {\n let header = {},\n claims: Claims = {},\n data = {},\n signature = '';\n\n try {\n const parts = token.split('.');\n header = jsonEval(base64Decode(parts[0]) || '') as object;\n claims = jsonEval(base64Decode(parts[1]) || '') as Claims;\n signature = parts[2];\n data = claims['d'] || {};\n delete claims['d'];\n } catch (e) {}\n\n return {\n header,\n claims,\n data,\n signature\n };\n};\n\ninterface DecodedToken {\n header: object;\n claims: Claims;\n data: object;\n signature: string;\n}\n\n/**\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nexport const isValidTimestamp = function (token: string): boolean {\n const claims: Claims = decode(token).claims;\n const now: number = Math.floor(new Date().getTime() / 1000);\n let validSince: number = 0,\n validUntil: number = 0;\n\n if (typeof claims === 'object') {\n if (claims.hasOwnProperty('nbf')) {\n validSince = claims['nbf'] as number;\n } else if (claims.hasOwnProperty('iat')) {\n validSince = claims['iat'] as number;\n }\n\n if (claims.hasOwnProperty('exp')) {\n validUntil = claims['exp'] as number;\n } else {\n // token will expire after 24h by default\n validUntil = validSince + 86400;\n }\n }\n\n return (\n !!now &&\n !!validSince &&\n !!validUntil &&\n now >= validSince &&\n now <= validUntil\n );\n};\n\n/**\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\n *\n * Notes:\n * - May return null if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nexport const issuedAtTime = function (token: string): number | null {\n const claims: Claims = decode(token).claims;\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\n return claims['iat'] as number;\n }\n return null;\n};\n\n/**\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nexport const isValidFormat = function (token: string): boolean {\n const decoded = decode(token),\n claims = decoded.claims;\n\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\n};\n\n/**\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nexport const isAdmin = function (token: string): boolean {\n const claims: Claims = decode(token).claims;\n return typeof claims === 'object' && claims['admin'] === true;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function contains(obj: T, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport function safeGet(\n obj: T,\n key: K\n): T[K] | undefined {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj[key];\n } else {\n return undefined;\n }\n}\n\nexport function isEmpty(obj: object): obj is {} {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport function map(\n obj: { [key in K]: V },\n fn: (value: V, key: K, obj: { [key in K]: V }) => U,\n contextObj?: unknown\n): { [key in K]: U } {\n const res: Partial<{ [key in K]: U }> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[key] = fn.call(contextObj, obj[key], key, obj);\n }\n }\n return res as { [key in K]: U };\n}\n\n/**\n * Deep equal two objects. Support Arrays and Objects.\n */\nexport function deepEqual(a: object, b: object): boolean {\n if (a === b) {\n return true;\n }\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n for (const k of aKeys) {\n if (!bKeys.includes(k)) {\n return false;\n }\n\n const aProp = (a as Record)[k];\n const bProp = (b as Record)[k];\n if (isObject(aProp) && isObject(bProp)) {\n if (!deepEqual(aProp, bProp)) {\n return false;\n }\n } else if (aProp !== bProp) {\n return false;\n }\n }\n\n for (const k of bKeys) {\n if (!aKeys.includes(k)) {\n return false;\n }\n }\n return true;\n}\n\nfunction isObject(thing: unknown): thing is object {\n return thing !== null && typeof thing === 'object';\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview SHA-1 cryptographic hash.\n * Variable names follow the notation in FIPS PUB 180-3:\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\n *\n * Usage:\n * var sha1 = new sha1();\n * sha1.update(bytes);\n * var hash = sha1.digest();\n *\n * Performance:\n * Chrome 23: ~400 Mbit/s\n * Firefox 16: ~250 Mbit/s\n *\n */\n\n/**\n * SHA-1 cryptographic hash constructor.\n *\n * The properties declared here are discussed in the above algorithm document.\n * @constructor\n * @final\n * @struct\n */\nexport class Sha1 {\n /**\n * Holds the previous values of accumulated variables a-e in the compress_\n * function.\n * @private\n */\n private chain_: number[] = [];\n\n /**\n * A buffer holding the partially computed hash result.\n * @private\n */\n private buf_: number[] = [];\n\n /**\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\n * as the message schedule in the docs.\n * @private\n */\n private W_: number[] = [];\n\n /**\n * Contains data needed to pad messages less than 64 bytes.\n * @private\n */\n private pad_: number[] = [];\n\n /**\n * @private {number}\n */\n private inbuf_: number = 0;\n\n /**\n * @private {number}\n */\n private total_: number = 0;\n\n blockSize: number;\n\n constructor() {\n this.blockSize = 512 / 8;\n\n this.pad_[0] = 128;\n for (let i = 1; i < this.blockSize; ++i) {\n this.pad_[i] = 0;\n }\n\n this.reset();\n }\n\n reset(): void {\n this.chain_[0] = 0x67452301;\n this.chain_[1] = 0xefcdab89;\n this.chain_[2] = 0x98badcfe;\n this.chain_[3] = 0x10325476;\n this.chain_[4] = 0xc3d2e1f0;\n\n this.inbuf_ = 0;\n this.total_ = 0;\n }\n\n /**\n * Internal compress helper function.\n * @param buf Block to compress.\n * @param offset Offset of the block in the buffer.\n * @private\n */\n compress_(buf: number[] | Uint8Array | string, offset?: number): void {\n if (!offset) {\n offset = 0;\n }\n\n const W = this.W_;\n\n // get 16 big endian words\n if (typeof buf === 'string') {\n for (let i = 0; i < 16; i++) {\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\n // have a bug that turns the post-increment ++ operator into pre-increment\n // during JIT compilation. We have code that depends heavily on SHA-1 for\n // correctness and which is affected by this bug, so I've removed all uses\n // of post-increment ++ in which the result value is used. We can revert\n // this change once the Safari bug\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\n // most clients have been updated.\n W[i] =\n (buf.charCodeAt(offset) << 24) |\n (buf.charCodeAt(offset + 1) << 16) |\n (buf.charCodeAt(offset + 2) << 8) |\n buf.charCodeAt(offset + 3);\n offset += 4;\n }\n } else {\n for (let i = 0; i < 16; i++) {\n W[i] =\n (buf[offset] << 24) |\n (buf[offset + 1] << 16) |\n (buf[offset + 2] << 8) |\n buf[offset + 3];\n offset += 4;\n }\n }\n\n // expand to 80 words\n for (let i = 16; i < 80; i++) {\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\n }\n\n let a = this.chain_[0];\n let b = this.chain_[1];\n let c = this.chain_[2];\n let d = this.chain_[3];\n let e = this.chain_[4];\n let f, k;\n\n // TODO(user): Try to unroll this loop to speed up the computation.\n for (let i = 0; i < 80; i++) {\n if (i < 40) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5a827999;\n } else {\n f = b ^ c ^ d;\n k = 0x6ed9eba1;\n }\n } else {\n if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8f1bbcdc;\n } else {\n f = b ^ c ^ d;\n k = 0xca62c1d6;\n }\n }\n\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\n e = d;\n d = c;\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\n b = a;\n a = t;\n }\n\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\n }\n\n update(bytes?: number[] | Uint8Array | string, length?: number): void {\n // TODO(johnlenz): tighten the function signature and remove this check\n if (bytes == null) {\n return;\n }\n\n if (length === undefined) {\n length = bytes.length;\n }\n\n const lengthMinusBlock = length - this.blockSize;\n let n = 0;\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\n const buf = this.buf_;\n let inbuf = this.inbuf_;\n\n // The outer while loop should execute at most twice.\n while (n < length) {\n // When we have no data in the block to top up, we can directly process the\n // input buffer (assuming it contains sufficient data). This gives ~25%\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\n // the data is provided in large chunks (or in multiples of 64 bytes).\n if (inbuf === 0) {\n while (n <= lengthMinusBlock) {\n this.compress_(bytes, n);\n n += this.blockSize;\n }\n }\n\n if (typeof bytes === 'string') {\n while (n < length) {\n buf[inbuf] = bytes.charCodeAt(n);\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n } else {\n while (n < length) {\n buf[inbuf] = bytes[n];\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n }\n }\n\n this.inbuf_ = inbuf;\n this.total_ += length;\n }\n\n /** @override */\n digest(): number[] {\n const digest: number[] = [];\n let totalBits = this.total_ * 8;\n\n // Add pad 0x80 0x00*.\n if (this.inbuf_ < 56) {\n this.update(this.pad_, 56 - this.inbuf_);\n } else {\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\n }\n\n // Add # bits.\n for (let i = this.blockSize - 1; i >= 56; i--) {\n this.buf_[i] = totalBits & 255;\n totalBits /= 256; // Don't use bit-shifting here!\n }\n\n this.compress_(this.buf_);\n\n let n = 0;\n for (let i = 0; i < 5; i++) {\n for (let j = 24; j >= 0; j -= 8) {\n digest[n] = (this.chain_[i] >> j) & 255;\n ++n;\n }\n }\n return digest;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Check to make sure the appropriate number of arguments are provided for a public function.\n * Throws an error if it fails.\n *\n * @param fnName The function name\n * @param minCount The minimum number of arguments to allow for the function call\n * @param maxCount The maximum number of argument to allow for the function call\n * @param argCount The actual number of arguments provided.\n */\nexport const validateArgCount = function (\n fnName: string,\n minCount: number,\n maxCount: number,\n argCount: number\n): void {\n let argError;\n if (argCount < minCount) {\n argError = 'at least ' + minCount;\n } else if (argCount > maxCount) {\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\n }\n if (argError) {\n const error =\n fnName +\n ' failed: Was called with ' +\n argCount +\n (argCount === 1 ? ' argument.' : ' arguments.') +\n ' Expects ' +\n argError +\n '.';\n throw new Error(error);\n }\n};\n\n/**\n * Generates a string to prefix an error message about failed argument validation\n *\n * @param fnName The function name\n * @param argName The name of the argument\n * @return The prefix to add to the error thrown for validation.\n */\nexport function errorPrefix(fnName: string, argName: string): string {\n return `${fnName} failed: ${argName} argument `;\n}\n\n/**\n * @param fnName\n * @param argumentNumber\n * @param namespace\n * @param optional\n */\nexport function validateNamespace(\n fnName: string,\n namespace: string,\n optional: boolean\n): void {\n if (optional && !namespace) {\n return;\n }\n if (typeof namespace !== 'string') {\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\n throw new Error(\n errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.'\n );\n }\n}\n\nexport function validateCallback(\n fnName: string,\n argumentName: string,\n // eslint-disable-next-line @typescript-eslint/ban-types\n callback: Function,\n optional: boolean\n): void {\n if (optional && !callback) {\n return;\n }\n if (typeof callback !== 'function') {\n throw new Error(\n errorPrefix(fnName, argumentName) + 'must be a valid function.'\n );\n }\n}\n\nexport function validateContextObject(\n fnName: string,\n argumentName: string,\n context: unknown,\n optional: boolean\n): void {\n if (optional && !context) {\n return;\n }\n if (typeof context !== 'object' || context === null) {\n throw new Error(\n errorPrefix(fnName, argumentName) + 'must be a valid context object.'\n );\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from './assert';\n\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\n// so it's been modified.\n\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\n// use 2 characters in JavaScript. All 4-byte UTF-8 characters begin with a first\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\n// pair).\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\n\n/**\n * @param {string} str\n * @return {Array}\n */\nexport const stringToByteArray = function (str: string): number[] {\n const out: number[] = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n\n // Is this the lead surrogate in a surrogate pair?\n if (c >= 0xd800 && c <= 0xdbff) {\n const high = c - 0xd800; // the high 10 bits.\n i++;\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\n c = 0x10000 + (high << 10) + low;\n }\n\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n } else if (c < 65536) {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n } else {\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n\n/**\n * Calculate length without actually converting; useful for doing cheaper validation.\n * @param {string} str\n * @return {number}\n */\nexport const stringLength = function (str: string): number {\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 128) {\n p++;\n } else if (c < 2048) {\n p += 2;\n } else if (c >= 0xd800 && c <= 0xdbff) {\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\n p += 4;\n i++; // skip trail surrogate.\n } else {\n p += 3;\n }\n }\n return p;\n};\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Compat {\n _delegate: T;\n}\n\nexport function getModularInstance(\n service: Compat | ExpService\n): ExpService {\n if (service && (service as Compat)._delegate) {\n return (service as Compat)._delegate;\n } else {\n return service as ExpService;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n InstantiationMode,\n InstanceFactory,\n ComponentType,\n Dictionary,\n Name,\n onInstanceCreatedCallback\n} from './types';\n\n/**\n * Component for service name T, e.g. `auth`, `auth-internal`\n */\nexport class Component {\n multipleInstances = false;\n /**\n * Properties to be added to the service namespace\n */\n serviceProps: Dictionary = {};\n\n instantiationMode = InstantiationMode.LAZY;\n\n onInstanceCreated: onInstanceCreatedCallback | null = null;\n\n /**\n *\n * @param name The public service name, e.g. app, auth, firestore, database\n * @param instanceFactory Service factory responsible for creating the public interface\n * @param type whether the service provided by the component is public or private\n */\n constructor(\n readonly name: T,\n readonly instanceFactory: InstanceFactory,\n readonly type: ComponentType\n ) {}\n\n setInstantiationMode(mode: InstantiationMode): this {\n this.instantiationMode = mode;\n return this;\n }\n\n setMultipleInstances(multipleInstances: boolean): this {\n this.multipleInstances = multipleInstances;\n return this;\n }\n\n setServiceProps(props: Dictionary): this {\n this.serviceProps = props;\n return this;\n }\n\n setInstanceCreatedCallback(callback: onInstanceCreatedCallback): this {\n this.onInstanceCreated = callback;\n return this;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DEFAULT_ENTRY_NAME = '[DEFAULT]';\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Deferred } from '@firebase/util';\nimport { ComponentContainer } from './component_container';\nimport { DEFAULT_ENTRY_NAME } from './constants';\nimport {\n InitializeOptions,\n InstantiationMode,\n Name,\n NameServiceMapping,\n OnInitCallBack\n} from './types';\nimport { Component } from './component';\n\n/**\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\n * NameServiceMapping[T] is an alias for the type of the instance\n */\nexport class Provider {\n private component: Component | null = null;\n private readonly instances: Map = new Map();\n private readonly instancesDeferred: Map<\n string,\n Deferred\n > = new Map();\n private readonly instancesOptions: Map> =\n new Map();\n private onInitCallbacks: Map>> = new Map();\n\n constructor(\n private readonly name: T,\n private readonly container: ComponentContainer\n ) {}\n\n /**\n * @param identifier A provider can provide multiple instances of a service\n * if this.component.multipleInstances is true.\n */\n get(identifier?: string): Promise {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\n const deferred = new Deferred();\n this.instancesDeferred.set(normalizedIdentifier, deferred);\n\n if (\n this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()\n ) {\n // initialize the service if it can be auto-initialized\n try {\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n if (instance) {\n deferred.resolve(instance);\n }\n } catch (e) {\n // when the instance factory throws an exception during get(), it should not cause\n // a fatal error. We just return the unresolved promise in this case.\n }\n }\n }\n\n return this.instancesDeferred.get(normalizedIdentifier)!.promise;\n }\n\n /**\n *\n * @param options.identifier A provider can provide multiple instances of a service\n * if this.component.multipleInstances is true.\n * @param options.optional If optional is false or not provided, the method throws an error when\n * the service is not immediately available.\n * If optional is true, the method returns null if the service is not immediately available.\n */\n getImmediate(options: {\n identifier?: string;\n optional: true;\n }): NameServiceMapping[T] | null;\n getImmediate(options?: {\n identifier?: string;\n optional?: false;\n }): NameServiceMapping[T];\n getImmediate(options?: {\n identifier?: string;\n optional?: boolean;\n }): NameServiceMapping[T] | null {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(\n options?.identifier\n );\n const optional = options?.optional ?? false;\n\n if (\n this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()\n ) {\n try {\n return this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n } catch (e) {\n if (optional) {\n return null;\n } else {\n throw e;\n }\n }\n } else {\n // In case a component is not initialized and should/cannot be auto-initialized at the moment, return null if the optional flag is set, or throw\n if (optional) {\n return null;\n } else {\n throw Error(`Service ${this.name} is not available`);\n }\n }\n }\n\n getComponent(): Component | null {\n return this.component;\n }\n\n setComponent(component: Component): void {\n if (component.name !== this.name) {\n throw Error(\n `Mismatching Component ${component.name} for Provider ${this.name}.`\n );\n }\n\n if (this.component) {\n throw Error(`Component for ${this.name} has already been provided`);\n }\n\n this.component = component;\n\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\n if (!this.shouldAutoInitialize()) {\n return;\n }\n\n // if the service is eager, initialize the default instance\n if (isComponentEager(component)) {\n try {\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\n } catch (e) {\n // when the instance factory for an eager Component throws an exception during the eager\n // initialization, it should not cause a fatal error.\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\n // a fatal error in this case?\n }\n }\n\n // Create service instances for the pending promises and resolve them\n // NOTE: if this.multipleInstances is false, only the default instance will be created\n // and all promises with resolve with it regardless of the identifier.\n for (const [\n instanceIdentifier,\n instanceDeferred\n ] of this.instancesDeferred.entries()) {\n const normalizedIdentifier =\n this.normalizeInstanceIdentifier(instanceIdentifier);\n\n try {\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n })!;\n instanceDeferred.resolve(instance);\n } catch (e) {\n // when the instance factory throws an exception, it should not cause\n // a fatal error. We just leave the promise unresolved.\n }\n }\n }\n\n clearInstance(identifier: string = DEFAULT_ENTRY_NAME): void {\n this.instancesDeferred.delete(identifier);\n this.instancesOptions.delete(identifier);\n this.instances.delete(identifier);\n }\n\n // app.delete() will call this method on every provider to delete the services\n // TODO: should we mark the provider as deleted?\n async delete(): Promise {\n const services = Array.from(this.instances.values());\n\n await Promise.all([\n ...services\n .filter(service => 'INTERNAL' in service) // legacy services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => (service as any).INTERNAL!.delete()),\n ...services\n .filter(service => '_delete' in service) // modularized services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => (service as any)._delete())\n ]);\n }\n\n isComponentSet(): boolean {\n return this.component != null;\n }\n\n isInitialized(identifier: string = DEFAULT_ENTRY_NAME): boolean {\n return this.instances.has(identifier);\n }\n\n getOptions(identifier: string = DEFAULT_ENTRY_NAME): Record {\n return this.instancesOptions.get(identifier) || {};\n }\n\n initialize(opts: InitializeOptions = {}): NameServiceMapping[T] {\n const { options = {} } = opts;\n const normalizedIdentifier = this.normalizeInstanceIdentifier(\n opts.instanceIdentifier\n );\n if (this.isInitialized(normalizedIdentifier)) {\n throw Error(\n `${this.name}(${normalizedIdentifier}) has already been initialized`\n );\n }\n\n if (!this.isComponentSet()) {\n throw Error(`Component ${this.name} has not been registered yet`);\n }\n\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier,\n options\n })!;\n\n // resolve any pending promise waiting for the service instance\n for (const [\n instanceIdentifier,\n instanceDeferred\n ] of this.instancesDeferred.entries()) {\n const normalizedDeferredIdentifier =\n this.normalizeInstanceIdentifier(instanceIdentifier);\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\n instanceDeferred.resolve(instance);\n }\n }\n\n return instance;\n }\n\n /**\n *\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\n *\n * @param identifier An optional instance identifier\n * @returns a function to unregister the callback\n */\n onInit(callback: OnInitCallBack, identifier?: string): () => void {\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n const existingCallbacks =\n this.onInitCallbacks.get(normalizedIdentifier) ??\n new Set>();\n existingCallbacks.add(callback);\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\n\n const existingInstance = this.instances.get(normalizedIdentifier);\n if (existingInstance) {\n callback(existingInstance, normalizedIdentifier);\n }\n\n return () => {\n existingCallbacks.delete(callback);\n };\n }\n\n /**\n * Invoke onInit callbacks synchronously\n * @param instance the service instance`\n */\n private invokeOnInitCallbacks(\n instance: NameServiceMapping[T],\n identifier: string\n ): void {\n const callbacks = this.onInitCallbacks.get(identifier);\n if (!callbacks) {\n return;\n }\n for (const callback of callbacks) {\n try {\n callback(instance, identifier);\n } catch {\n // ignore errors in the onInit callback\n }\n }\n }\n\n private getOrInitializeService({\n instanceIdentifier,\n options = {}\n }: {\n instanceIdentifier: string;\n options?: Record;\n }): NameServiceMapping[T] | null {\n let instance = this.instances.get(instanceIdentifier);\n if (!instance && this.component) {\n instance = this.component.instanceFactory(this.container, {\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\n options\n });\n this.instances.set(instanceIdentifier, instance);\n this.instancesOptions.set(instanceIdentifier, options);\n\n /**\n * Invoke onInit listeners.\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\n * while onInit listeners are registered by consumers of the provider.\n */\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\n\n /**\n * Order is important\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\n * makes `isInitialized()` return true.\n */\n if (this.component.onInstanceCreated) {\n try {\n this.component.onInstanceCreated(\n this.container,\n instanceIdentifier,\n instance\n );\n } catch {\n // ignore errors in the onInstanceCreatedCallback\n }\n }\n }\n\n return instance || null;\n }\n\n private normalizeInstanceIdentifier(\n identifier: string = DEFAULT_ENTRY_NAME\n ): string {\n if (this.component) {\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\n } else {\n return identifier; // assume multiple instances are supported before the component is provided.\n }\n }\n\n private shouldAutoInitialize(): boolean {\n return (\n !!this.component &&\n this.component.instantiationMode !== InstantiationMode.EXPLICIT\n );\n }\n}\n\n// undefined should be passed to the service factory for the default instance\nfunction normalizeIdentifierForFactory(identifier: string): string | undefined {\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\n}\n\nfunction isComponentEager(component: Component): boolean {\n return component.instantiationMode === InstantiationMode.EAGER;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Provider } from './provider';\nimport { Component } from './component';\nimport { Name } from './types';\n\n/**\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\n */\nexport class ComponentContainer {\n private readonly providers = new Map>();\n\n constructor(private readonly name: string) {}\n\n /**\n *\n * @param component Component being added\n * @param overwrite When a component with the same name has already been registered,\n * if overwrite is true: overwrite the existing component with the new component and create a new\n * provider with the new component. It can be useful in tests where you want to use different mocks\n * for different tests.\n * if overwrite is false: throw an exception\n */\n addComponent(component: Component): void {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n throw new Error(\n `Component ${component.name} has already been registered with ${this.name}`\n );\n }\n\n provider.setComponent(component);\n }\n\n addOrOverwriteComponent(component: Component): void {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n // delete the existing provider from the container, so we can register the new component\n this.providers.delete(component.name);\n }\n\n this.addComponent(component);\n }\n\n /**\n * getProvider provides a type safe interface where it can only be called with a field name\n * present in NameServiceMapping interface.\n *\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\n * themselves.\n */\n getProvider(name: T): Provider {\n if (this.providers.has(name)) {\n return this.providers.get(name) as unknown as Provider;\n }\n\n // create a Provider for a service that hasn't registered with Firebase\n const provider = new Provider(name, this);\n this.providers.set(name, provider as unknown as Provider);\n\n return provider as Provider;\n }\n\n getProviders(): Array> {\n return Array.from(this.providers.values());\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type LogLevelString =\n | 'debug'\n | 'verbose'\n | 'info'\n | 'warn'\n | 'error'\n | 'silent';\n\nexport interface LogOptions {\n level: LogLevelString;\n}\n\nexport type LogCallback = (callbackParams: LogCallbackParams) => void;\n\nexport interface LogCallbackParams {\n level: LogLevelString;\n message: string;\n args: unknown[];\n type: string;\n}\n\n/**\n * A container for all of the Logger instances\n */\nexport const instances: Logger[] = [];\n\n/**\n * The JS SDK supports 5 log levels and also allows a user the ability to\n * silence the logs altogether.\n *\n * The order is a follows:\n * DEBUG < VERBOSE < INFO < WARN < ERROR\n *\n * All of the log types above the current log level will be captured (i.e. if\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\n * `VERBOSE` logs will not)\n */\nexport enum LogLevel {\n DEBUG,\n VERBOSE,\n INFO,\n WARN,\n ERROR,\n SILENT\n}\n\nconst levelStringToEnum: { [key in LogLevelString]: LogLevel } = {\n 'debug': LogLevel.DEBUG,\n 'verbose': LogLevel.VERBOSE,\n 'info': LogLevel.INFO,\n 'warn': LogLevel.WARN,\n 'error': LogLevel.ERROR,\n 'silent': LogLevel.SILENT\n};\n\n/**\n * The default log level\n */\nconst defaultLogLevel: LogLevel = LogLevel.INFO;\n\n/**\n * We allow users the ability to pass their own log handler. We will pass the\n * type of log, the current log level, and any other arguments passed (i.e. the\n * messages that the user wants to log) to this function.\n */\nexport type LogHandler = (\n loggerInstance: Logger,\n logType: LogLevel,\n ...args: unknown[]\n) => void;\n\n/**\n * By default, `console.debug` is not displayed in the developer console (in\n * chrome). To avoid forcing users to have to opt-in to these logs twice\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\n * logs to the `console.log` function.\n */\nconst ConsoleMethod = {\n [LogLevel.DEBUG]: 'log',\n [LogLevel.VERBOSE]: 'log',\n [LogLevel.INFO]: 'info',\n [LogLevel.WARN]: 'warn',\n [LogLevel.ERROR]: 'error'\n};\n\n/**\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\n * messages on to their corresponding console counterparts (if the log method\n * is supported by the current log level)\n */\nconst defaultLogHandler: LogHandler = (instance, logType, ...args): void => {\n if (logType < instance.logLevel) {\n return;\n }\n const now = new Date().toISOString();\n const method = ConsoleMethod[logType as keyof typeof ConsoleMethod];\n if (method) {\n console[method as 'log' | 'info' | 'warn' | 'error'](\n `[${now}] ${instance.name}:`,\n ...args\n );\n } else {\n throw new Error(\n `Attempted to log a message with an invalid logType (value: ${logType})`\n );\n }\n};\n\nexport class Logger {\n /**\n * Gives you an instance of a Logger to capture messages according to\n * Firebase's logging scheme.\n *\n * @param name The name that the logs will be associated with\n */\n constructor(public name: string) {\n /**\n * Capture the current instance for later use\n */\n instances.push(this);\n }\n\n /**\n * The log level of the given Logger instance.\n */\n private _logLevel = defaultLogLevel;\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n set logLevel(val: LogLevel) {\n if (!(val in LogLevel)) {\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\n }\n this._logLevel = val;\n }\n\n // Workaround for setter/getter having to be the same type.\n setLogLevel(val: LogLevel | LogLevelString): void {\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\n }\n\n /**\n * The main (internal) log handler for the Logger instance.\n * Can be set to a new function in internal package code but not by user.\n */\n private _logHandler: LogHandler = defaultLogHandler;\n get logHandler(): LogHandler {\n return this._logHandler;\n }\n set logHandler(val: LogHandler) {\n if (typeof val !== 'function') {\n throw new TypeError('Value assigned to `logHandler` must be a function');\n }\n this._logHandler = val;\n }\n\n /**\n * The optional, additional, user-defined log handler for the Logger instance.\n */\n private _userLogHandler: LogHandler | null = null;\n get userLogHandler(): LogHandler | null {\n return this._userLogHandler;\n }\n set userLogHandler(val: LogHandler | null) {\n this._userLogHandler = val;\n }\n\n /**\n * The functions below are all based on the `console` interface\n */\n\n debug(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\n this._logHandler(this, LogLevel.DEBUG, ...args);\n }\n log(...args: unknown[]): void {\n this._userLogHandler &&\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\n this._logHandler(this, LogLevel.VERBOSE, ...args);\n }\n info(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\n this._logHandler(this, LogLevel.INFO, ...args);\n }\n warn(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\n this._logHandler(this, LogLevel.WARN, ...args);\n }\n error(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\n this._logHandler(this, LogLevel.ERROR, ...args);\n }\n}\n\nexport function setLogLevel(level: LogLevelString | LogLevel): void {\n instances.forEach(inst => {\n inst.setLogLevel(level);\n });\n}\n\nexport function setUserLogHandler(\n logCallback: LogCallback | null,\n options?: LogOptions\n): void {\n for (const instance of instances) {\n let customLogLevel: LogLevel | null = null;\n if (options && options.level) {\n customLogLevel = levelStringToEnum[options.level];\n }\n if (logCallback === null) {\n instance.userLogHandler = null;\n } else {\n instance.userLogHandler = (\n instance: Logger,\n level: LogLevel,\n ...args: unknown[]\n ) => {\n const message = args\n .map(arg => {\n if (arg == null) {\n return null;\n } else if (typeof arg === 'string') {\n return arg;\n } else if (typeof arg === 'number' || typeof arg === 'boolean') {\n return arg.toString();\n } else if (arg instanceof Error) {\n return arg.message;\n } else {\n try {\n return JSON.stringify(arg);\n } catch (ignored) {\n return null;\n }\n }\n })\n .filter(arg => arg)\n .join(' ');\n if (level >= (customLogLevel ?? instance.logLevel)) {\n logCallback({\n level: LogLevel[level].toLowerCase() as LogLevelString,\n message,\n args,\n type: instance.name\n });\n }\n };\n }\n }\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ComponentContainer,\n ComponentType,\n Provider,\n Name\n} from '@firebase/component';\nimport { PlatformLoggerService, VersionService } from './types';\n\nexport class PlatformLoggerServiceImpl implements PlatformLoggerService {\n constructor(private readonly container: ComponentContainer) {}\n // In initial implementation, this will be called by installations on\n // auth token refresh, and installations will send this string.\n getPlatformInfoString(): string {\n const providers = this.container.getProviders();\n // Loop through providers and get library/version pairs from any that are\n // version components.\n return providers\n .map(provider => {\n if (isVersionServiceProvider(provider)) {\n const service = provider.getImmediate() as VersionService;\n return `${service.library}/${service.version}`;\n } else {\n return null;\n }\n })\n .filter(logString => logString)\n .join(' ');\n }\n}\n/**\n *\n * @param provider check if this provider provides a VersionService\n *\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\n * provides VersionService. The provider is not necessarily a 'app-version'\n * provider.\n */\nfunction isVersionServiceProvider(provider: Provider): boolean {\n const component = provider.getComponent();\n return component?.type === ComponentType.VERSION;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Logger } from '@firebase/logger';\n\nexport const logger = new Logger('@firebase/app');\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { name as appName } from '../package.json';\nimport { name as appCompatName } from '../../app-compat/package.json';\nimport { name as analyticsCompatName } from '../../../packages/analytics-compat/package.json';\nimport { name as analyticsName } from '../../../packages/analytics/package.json';\nimport { name as appCheckCompatName } from '../../../packages/app-check-compat/package.json';\nimport { name as appCheckName } from '../../../packages/app-check/package.json';\nimport { name as authName } from '../../../packages/auth/package.json';\nimport { name as authCompatName } from '../../../packages/auth-compat/package.json';\nimport { name as databaseName } from '../../../packages/database/package.json';\nimport { name as dataconnectName } from '../../../packages/data-connect/package.json';\nimport { name as databaseCompatName } from '../../../packages/database-compat/package.json';\nimport { name as functionsName } from '../../../packages/functions/package.json';\nimport { name as functionsCompatName } from '../../../packages/functions-compat/package.json';\nimport { name as installationsName } from '../../../packages/installations/package.json';\nimport { name as installationsCompatName } from '../../../packages/installations-compat/package.json';\nimport { name as messagingName } from '../../../packages/messaging/package.json';\nimport { name as messagingCompatName } from '../../../packages/messaging-compat/package.json';\nimport { name as performanceName } from '../../../packages/performance/package.json';\nimport { name as performanceCompatName } from '../../../packages/performance-compat/package.json';\nimport { name as remoteConfigName } from '../../../packages/remote-config/package.json';\nimport { name as remoteConfigCompatName } from '../../../packages/remote-config-compat/package.json';\nimport { name as storageName } from '../../../packages/storage/package.json';\nimport { name as storageCompatName } from '../../../packages/storage-compat/package.json';\nimport { name as firestoreName } from '../../../packages/firestore/package.json';\nimport { name as vertexName } from '../../../packages/vertexai/package.json';\nimport { name as firestoreCompatName } from '../../../packages/firestore-compat/package.json';\nimport { name as packageName } from '../../../packages/firebase/package.json';\n\n/**\n * The default app name\n *\n * @internal\n */\nexport const DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\nexport const PLATFORM_LOG_STRING = {\n [appName]: 'fire-core',\n [appCompatName]: 'fire-core-compat',\n [analyticsName]: 'fire-analytics',\n [analyticsCompatName]: 'fire-analytics-compat',\n [appCheckName]: 'fire-app-check',\n [appCheckCompatName]: 'fire-app-check-compat',\n [authName]: 'fire-auth',\n [authCompatName]: 'fire-auth-compat',\n [databaseName]: 'fire-rtdb',\n [dataconnectName]: 'fire-data-connect',\n [databaseCompatName]: 'fire-rtdb-compat',\n [functionsName]: 'fire-fn',\n [functionsCompatName]: 'fire-fn-compat',\n [installationsName]: 'fire-iid',\n [installationsCompatName]: 'fire-iid-compat',\n [messagingName]: 'fire-fcm',\n [messagingCompatName]: 'fire-fcm-compat',\n [performanceName]: 'fire-perf',\n [performanceCompatName]: 'fire-perf-compat',\n [remoteConfigName]: 'fire-rc',\n [remoteConfigCompatName]: 'fire-rc-compat',\n [storageName]: 'fire-gcs',\n [storageCompatName]: 'fire-gcs-compat',\n [firestoreName]: 'fire-fst',\n [firestoreCompatName]: 'fire-fst-compat',\n [vertexName]: 'fire-vertex',\n 'fire-js': 'fire-js', // Platform identifier for JS SDK.\n [packageName]: 'fire-js-all'\n} as const;\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseApp,\n FirebaseOptions,\n FirebaseServerApp\n} from './public-types';\nimport { Component, Provider, Name } from '@firebase/component';\nimport { logger } from './logger';\nimport { DEFAULT_ENTRY_NAME } from './constants';\nimport { FirebaseAppImpl } from './firebaseApp';\nimport { FirebaseServerAppImpl } from './firebaseServerApp';\n\n/**\n * @internal\n */\nexport const _apps = new Map();\n\n/**\n * @internal\n */\nexport const _serverApps = new Map();\n\n/**\n * Registered components.\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const _components = new Map>();\n\n/**\n * @param component - the component being added to this app's container\n *\n * @internal\n */\nexport function _addComponent(\n app: FirebaseApp,\n component: Component\n): void {\n try {\n (app as FirebaseAppImpl).container.addComponent(component);\n } catch (e) {\n logger.debug(\n `Component ${component.name} failed to register with FirebaseApp ${app.name}`,\n e\n );\n }\n}\n\n/**\n *\n * @internal\n */\nexport function _addOrOverwriteComponent(\n app: FirebaseApp,\n component: Component\n): void {\n (app as FirebaseAppImpl).container.addOrOverwriteComponent(component);\n}\n\n/**\n *\n * @param component - the component to register\n * @returns whether or not the component is registered successfully\n *\n * @internal\n */\nexport function _registerComponent(\n component: Component\n): boolean {\n const componentName = component.name;\n if (_components.has(componentName)) {\n logger.debug(\n `There were multiple attempts to register component ${componentName}.`\n );\n\n return false;\n }\n\n _components.set(componentName, component);\n\n // add the component to existing app instances\n for (const app of _apps.values()) {\n _addComponent(app as FirebaseAppImpl, component);\n }\n\n for (const serverApp of _serverApps.values()) {\n _addComponent(serverApp as FirebaseServerAppImpl, component);\n }\n\n return true;\n}\n\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n *\n * @returns the provider for the service with the matching name\n *\n * @internal\n */\nexport function _getProvider(\n app: FirebaseApp,\n name: T\n): Provider {\n const heartbeatController = (app as FirebaseAppImpl).container\n .getProvider('heartbeat')\n .getImmediate({ optional: true });\n if (heartbeatController) {\n void heartbeatController.triggerHeartbeat();\n }\n return (app as FirebaseAppImpl).container.getProvider(name);\n}\n\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\n *\n * @internal\n */\nexport function _removeServiceInstance(\n app: FirebaseApp,\n name: T,\n instanceIdentifier: string = DEFAULT_ENTRY_NAME\n): void {\n _getProvider(app, name).clearInstance(instanceIdentifier);\n}\n\n/**\n *\n * @param obj - an object of type FirebaseApp or FirebaseOptions.\n *\n * @returns true if the provide object is of type FirebaseApp.\n *\n * @internal\n */\nexport function _isFirebaseApp(\n obj: FirebaseApp | FirebaseOptions\n): obj is FirebaseApp {\n return (obj as FirebaseApp).options !== undefined;\n}\n\n/**\n *\n * @param obj - an object of type FirebaseApp.\n *\n * @returns true if the provided object is of type FirebaseServerAppImpl.\n *\n * @internal\n */\nexport function _isFirebaseServerApp(\n obj: FirebaseApp | FirebaseServerApp\n): obj is FirebaseServerApp {\n return (obj as FirebaseServerApp).settings !== undefined;\n}\n\n/**\n * Test only\n *\n * @internal\n */\nexport function _clearComponents(): void {\n _components.clear();\n}\n\n/**\n * Exported in order to be used in app-compat package\n */\nexport { DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\n\nexport const enum AppError {\n NO_APP = 'no-app',\n BAD_APP_NAME = 'bad-app-name',\n DUPLICATE_APP = 'duplicate-app',\n APP_DELETED = 'app-deleted',\n SERVER_APP_DELETED = 'server-app-deleted',\n NO_OPTIONS = 'no-options',\n INVALID_APP_ARGUMENT = 'invalid-app-argument',\n INVALID_LOG_ARGUMENT = 'invalid-log-argument',\n IDB_OPEN = 'idb-open',\n IDB_GET = 'idb-get',\n IDB_WRITE = 'idb-set',\n IDB_DELETE = 'idb-delete',\n FINALIZATION_REGISTRY_NOT_SUPPORTED = 'finalization-registry-not-supported',\n INVALID_SERVER_APP_ENVIRONMENT = 'invalid-server-app-environment'\n}\n\nconst ERRORS: ErrorMap = {\n [AppError.NO_APP]:\n \"No Firebase App '{$appName}' has been created - \" +\n 'call initializeApp() first',\n [AppError.BAD_APP_NAME]: \"Illegal App name: '{$appName}'\",\n [AppError.DUPLICATE_APP]:\n \"Firebase App named '{$appName}' already exists with different options or config\",\n [AppError.APP_DELETED]: \"Firebase App named '{$appName}' already deleted\",\n [AppError.SERVER_APP_DELETED]: 'Firebase Server App has been deleted',\n [AppError.NO_OPTIONS]:\n 'Need to provide options, when not being deployed to hosting via source.',\n [AppError.INVALID_APP_ARGUMENT]:\n 'firebase.{$appName}() takes either no argument or a ' +\n 'Firebase App instance.',\n [AppError.INVALID_LOG_ARGUMENT]:\n 'First argument to `onLog` must be null or a function.',\n [AppError.IDB_OPEN]:\n 'Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.',\n [AppError.IDB_GET]:\n 'Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.',\n [AppError.IDB_WRITE]:\n 'Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.',\n [AppError.IDB_DELETE]:\n 'Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.',\n [AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED]:\n 'FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.',\n [AppError.INVALID_SERVER_APP_ENVIRONMENT]:\n 'FirebaseServerApp is not for use in browser environments.'\n};\n\ninterface ErrorParams {\n [AppError.NO_APP]: { appName: string };\n [AppError.BAD_APP_NAME]: { appName: string };\n [AppError.DUPLICATE_APP]: { appName: string };\n [AppError.APP_DELETED]: { appName: string };\n [AppError.INVALID_APP_ARGUMENT]: { appName: string };\n [AppError.IDB_OPEN]: { originalErrorMessage?: string };\n [AppError.IDB_GET]: { originalErrorMessage?: string };\n [AppError.IDB_WRITE]: { originalErrorMessage?: string };\n [AppError.IDB_DELETE]: { originalErrorMessage?: string };\n [AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED]: { appName?: string };\n}\n\nexport const ERROR_FACTORY = new ErrorFactory(\n 'app',\n 'Firebase',\n ERRORS\n);\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseApp,\n FirebaseOptions,\n FirebaseAppSettings\n} from './public-types';\nimport {\n ComponentContainer,\n Component,\n ComponentType\n} from '@firebase/component';\nimport { ERROR_FACTORY, AppError } from './errors';\n\nexport class FirebaseAppImpl implements FirebaseApp {\n protected readonly _options: FirebaseOptions;\n protected readonly _name: string;\n /**\n * Original config values passed in as a constructor parameter.\n * It is only used to compare with another config object to support idempotent initializeApp().\n *\n * Updating automaticDataCollectionEnabled on the App instance will not change its value in _config.\n */\n private readonly _config: Required;\n private _automaticDataCollectionEnabled: boolean;\n protected _isDeleted = false;\n private readonly _container: ComponentContainer;\n\n constructor(\n options: FirebaseOptions,\n config: Required,\n container: ComponentContainer\n ) {\n this._options = { ...options };\n this._config = { ...config };\n this._name = config.name;\n this._automaticDataCollectionEnabled =\n config.automaticDataCollectionEnabled;\n this._container = container;\n this.container.addComponent(\n new Component('app', () => this, ComponentType.PUBLIC)\n );\n }\n\n get automaticDataCollectionEnabled(): boolean {\n this.checkDestroyed();\n return this._automaticDataCollectionEnabled;\n }\n\n set automaticDataCollectionEnabled(val: boolean) {\n this.checkDestroyed();\n this._automaticDataCollectionEnabled = val;\n }\n\n get name(): string {\n this.checkDestroyed();\n return this._name;\n }\n\n get options(): FirebaseOptions {\n this.checkDestroyed();\n return this._options;\n }\n\n get config(): Required {\n this.checkDestroyed();\n return this._config;\n }\n\n get container(): ComponentContainer {\n return this._container;\n }\n\n get isDeleted(): boolean {\n return this._isDeleted;\n }\n\n set isDeleted(val: boolean) {\n this._isDeleted = val;\n }\n\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n protected checkDestroyed(): void {\n if (this.isDeleted) {\n throw ERROR_FACTORY.create(AppError.APP_DELETED, { appName: this._name });\n }\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseApp,\n FirebaseServerApp,\n FirebaseOptions,\n FirebaseAppSettings,\n FirebaseServerAppSettings\n} from './public-types';\nimport { DEFAULT_ENTRY_NAME, PLATFORM_LOG_STRING } from './constants';\nimport { ERROR_FACTORY, AppError } from './errors';\nimport {\n ComponentContainer,\n Component,\n Name,\n ComponentType\n} from '@firebase/component';\nimport { version } from '../../firebase/package.json';\nimport { FirebaseAppImpl } from './firebaseApp';\nimport { FirebaseServerAppImpl } from './firebaseServerApp';\nimport {\n _apps,\n _components,\n _isFirebaseApp,\n _registerComponent,\n _serverApps\n} from './internal';\nimport { logger } from './logger';\nimport {\n LogLevelString,\n setLogLevel as setLogLevelImpl,\n LogCallback,\n LogOptions,\n setUserLogHandler\n} from '@firebase/logger';\nimport {\n deepEqual,\n getDefaultAppConfig,\n isBrowser,\n isWebWorker\n} from '@firebase/util';\n\nexport { FirebaseError } from '@firebase/util';\n\n/**\n * The current SDK version.\n *\n * @public\n */\nexport const SDK_VERSION = version;\n\n/**\n * Creates and initializes a {@link @firebase/app#FirebaseApp} instance.\n *\n * See\n * {@link\n * https://firebase.google.com/docs/web/setup#add_firebase_to_your_app\n * | Add Firebase to your app} and\n * {@link\n * https://firebase.google.com/docs/web/setup#multiple-projects\n * | Initialize multiple projects} for detailed documentation.\n *\n * @example\n * ```javascript\n *\n * // Initialize default app\n * // Retrieve your own options values by adding a web app on\n * // https://console.firebase.google.com\n * initializeApp({\n * apiKey: \"AIza....\", // Auth / General Use\n * authDomain: \"YOUR_APP.firebaseapp.com\", // Auth with popup/redirect\n * databaseURL: \"https://YOUR_APP.firebaseio.com\", // Realtime Database\n * storageBucket: \"YOUR_APP.appspot.com\", // Storage\n * messagingSenderId: \"123456789\" // Cloud Messaging\n * });\n * ```\n *\n * @example\n * ```javascript\n *\n * // Initialize another app\n * const otherApp = initializeApp({\n * databaseURL: \"https://.firebaseio.com\",\n * storageBucket: \".appspot.com\"\n * }, \"otherApp\");\n * ```\n *\n * @param options - Options to configure the app's services.\n * @param name - Optional name of the app to initialize. If no name\n * is provided, the default is `\"[DEFAULT]\"`.\n *\n * @returns The initialized app.\n *\n * @public\n */\nexport function initializeApp(\n options: FirebaseOptions,\n name?: string\n): FirebaseApp;\n/**\n * Creates and initializes a FirebaseApp instance.\n *\n * @param options - Options to configure the app's services.\n * @param config - FirebaseApp Configuration\n *\n * @public\n */\nexport function initializeApp(\n options: FirebaseOptions,\n config?: FirebaseAppSettings\n): FirebaseApp;\n/**\n * Creates and initializes a FirebaseApp instance.\n *\n * @public\n */\nexport function initializeApp(): FirebaseApp;\nexport function initializeApp(\n _options?: FirebaseOptions,\n rawConfig = {}\n): FirebaseApp {\n let options = _options;\n\n if (typeof rawConfig !== 'object') {\n const name = rawConfig;\n rawConfig = { name };\n }\n\n const config: Required = {\n name: DEFAULT_ENTRY_NAME,\n automaticDataCollectionEnabled: false,\n ...rawConfig\n };\n const name = config.name;\n\n if (typeof name !== 'string' || !name) {\n throw ERROR_FACTORY.create(AppError.BAD_APP_NAME, {\n appName: String(name)\n });\n }\n\n options ||= getDefaultAppConfig();\n\n if (!options) {\n throw ERROR_FACTORY.create(AppError.NO_OPTIONS);\n }\n\n const existingApp = _apps.get(name) as FirebaseAppImpl;\n if (existingApp) {\n // return the existing app if options and config deep equal the ones in the existing app.\n if (\n deepEqual(options, existingApp.options) &&\n deepEqual(config, existingApp.config)\n ) {\n return existingApp;\n } else {\n throw ERROR_FACTORY.create(AppError.DUPLICATE_APP, { appName: name });\n }\n }\n\n const container = new ComponentContainer(name);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n\n const newApp = new FirebaseAppImpl(options, config, container);\n\n _apps.set(name, newApp);\n\n return newApp;\n}\n\n/**\n * Creates and initializes a {@link @firebase/app#FirebaseServerApp} instance.\n *\n * The `FirebaseServerApp` is similar to `FirebaseApp`, but is intended for execution in\n * server side rendering environments only. Initialization will fail if invoked from a\n * browser environment.\n *\n * See\n * {@link\n * https://firebase.google.com/docs/web/setup#add_firebase_to_your_app\n * | Add Firebase to your app} and\n * {@link\n * https://firebase.google.com/docs/web/setup#multiple-projects\n * | Initialize multiple projects} for detailed documentation.\n *\n * @example\n * ```javascript\n *\n * // Initialize an instance of `FirebaseServerApp`.\n * // Retrieve your own options values by adding a web app on\n * // https://console.firebase.google.com\n * initializeServerApp({\n * apiKey: \"AIza....\", // Auth / General Use\n * authDomain: \"YOUR_APP.firebaseapp.com\", // Auth with popup/redirect\n * databaseURL: \"https://YOUR_APP.firebaseio.com\", // Realtime Database\n * storageBucket: \"YOUR_APP.appspot.com\", // Storage\n * messagingSenderId: \"123456789\" // Cloud Messaging\n * },\n * {\n * authIdToken: \"Your Auth ID Token\"\n * });\n * ```\n *\n * @param options - `Firebase.AppOptions` to configure the app's services, or a\n * a `FirebaseApp` instance which contains the `AppOptions` within.\n * @param config - `FirebaseServerApp` configuration.\n *\n * @returns The initialized `FirebaseServerApp`.\n *\n * @public\n */\nexport function initializeServerApp(\n options: FirebaseOptions | FirebaseApp,\n config: FirebaseServerAppSettings\n): FirebaseServerApp;\n\nexport function initializeServerApp(\n _options: FirebaseOptions | FirebaseApp,\n _serverAppConfig: FirebaseServerAppSettings\n): FirebaseServerApp {\n if (isBrowser() && !isWebWorker()) {\n // FirebaseServerApp isn't designed to be run in browsers.\n throw ERROR_FACTORY.create(AppError.INVALID_SERVER_APP_ENVIRONMENT);\n }\n\n if (_serverAppConfig.automaticDataCollectionEnabled === undefined) {\n _serverAppConfig.automaticDataCollectionEnabled = false;\n }\n\n let appOptions: FirebaseOptions;\n if (_isFirebaseApp(_options)) {\n appOptions = _options.options;\n } else {\n appOptions = _options;\n }\n\n // Build an app name based on a hash of the configuration options.\n const nameObj = {\n ..._serverAppConfig,\n ...appOptions\n };\n\n // However, Do not mangle the name based on releaseOnDeref, since it will vary between the\n // construction of FirebaseServerApp instances. For example, if the object is the request headers.\n if (nameObj.releaseOnDeref !== undefined) {\n delete nameObj.releaseOnDeref;\n }\n\n const hashCode = (s: string): number => {\n return [...s].reduce(\n (hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0,\n 0\n );\n };\n\n if (_serverAppConfig.releaseOnDeref !== undefined) {\n if (typeof FinalizationRegistry === 'undefined') {\n throw ERROR_FACTORY.create(\n AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED,\n {}\n );\n }\n }\n\n const nameString = '' + hashCode(JSON.stringify(nameObj));\n const existingApp = _serverApps.get(nameString) as FirebaseServerApp;\n if (existingApp) {\n (existingApp as FirebaseServerAppImpl).incRefCount(\n _serverAppConfig.releaseOnDeref\n );\n return existingApp;\n }\n\n const container = new ComponentContainer(nameString);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n\n const newApp = new FirebaseServerAppImpl(\n appOptions,\n _serverAppConfig,\n nameString,\n container\n );\n\n _serverApps.set(nameString, newApp);\n\n return newApp;\n}\n\n/**\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\n *\n * When called with no arguments, the default app is returned. When an app name\n * is provided, the app corresponding to that name is returned.\n *\n * An exception is thrown if the app being retrieved has not yet been\n * initialized.\n *\n * @example\n * ```javascript\n * // Return the default app\n * const app = getApp();\n * ```\n *\n * @example\n * ```javascript\n * // Return a named app\n * const otherApp = getApp(\"otherApp\");\n * ```\n *\n * @param name - Optional name of the app to return. If no name is\n * provided, the default is `\"[DEFAULT]\"`.\n *\n * @returns The app corresponding to the provided app name.\n * If no app name is provided, the default app is returned.\n *\n * @public\n */\nexport function getApp(name: string = DEFAULT_ENTRY_NAME): FirebaseApp {\n const app = _apps.get(name);\n if (!app && name === DEFAULT_ENTRY_NAME && getDefaultAppConfig()) {\n return initializeApp();\n }\n if (!app) {\n throw ERROR_FACTORY.create(AppError.NO_APP, { appName: name });\n }\n\n return app;\n}\n\n/**\n * A (read-only) array of all initialized apps.\n * @public\n */\nexport function getApps(): FirebaseApp[] {\n return Array.from(_apps.values());\n}\n\n/**\n * Renders this app unusable and frees the resources of all associated\n * services.\n *\n * @example\n * ```javascript\n * deleteApp(app)\n * .then(function() {\n * console.log(\"App deleted successfully\");\n * })\n * .catch(function(error) {\n * console.log(\"Error deleting app:\", error);\n * });\n * ```\n *\n * @public\n */\nexport async function deleteApp(app: FirebaseApp): Promise {\n let cleanupProviders = false;\n const name = app.name;\n if (_apps.has(name)) {\n cleanupProviders = true;\n _apps.delete(name);\n } else if (_serverApps.has(name)) {\n const firebaseServerApp = app as FirebaseServerAppImpl;\n if (firebaseServerApp.decRefCount() <= 0) {\n _serverApps.delete(name);\n cleanupProviders = true;\n }\n }\n\n if (cleanupProviders) {\n await Promise.all(\n (app as FirebaseAppImpl).container\n .getProviders()\n .map(provider => provider.delete())\n );\n (app as FirebaseAppImpl).isDeleted = true;\n }\n}\n\n/**\n * Registers a library's name and version for platform logging purposes.\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\n * @param version - Current version of that library.\n * @param variant - Bundle variant, e.g., node, rn, etc.\n *\n * @public\n */\nexport function registerVersion(\n libraryKeyOrName: string,\n version: string,\n variant?: string\n): void {\n // TODO: We can use this check to whitelist strings when/if we set up\n // a good whitelist system.\n let library = PLATFORM_LOG_STRING[libraryKeyOrName] ?? libraryKeyOrName;\n if (variant) {\n library += `-${variant}`;\n }\n const libraryMismatch = library.match(/\\s|\\//);\n const versionMismatch = version.match(/\\s|\\//);\n if (libraryMismatch || versionMismatch) {\n const warning = [\n `Unable to register library \"${library}\" with version \"${version}\":`\n ];\n if (libraryMismatch) {\n warning.push(\n `library name \"${library}\" contains illegal characters (whitespace or \"/\")`\n );\n }\n if (libraryMismatch && versionMismatch) {\n warning.push('and');\n }\n if (versionMismatch) {\n warning.push(\n `version name \"${version}\" contains illegal characters (whitespace or \"/\")`\n );\n }\n logger.warn(warning.join(' '));\n return;\n }\n _registerComponent(\n new Component(\n `${library}-version` as Name,\n () => ({ library, version }),\n ComponentType.VERSION\n )\n );\n}\n\n/**\n * Sets log handler for all Firebase SDKs.\n * @param logCallback - An optional custom log handler that executes user code whenever\n * the Firebase SDK makes a logging call.\n *\n * @public\n */\nexport function onLog(\n logCallback: LogCallback | null,\n options?: LogOptions\n): void {\n if (logCallback !== null && typeof logCallback !== 'function') {\n throw ERROR_FACTORY.create(AppError.INVALID_LOG_ARGUMENT);\n }\n setUserLogHandler(logCallback, options);\n}\n\n/**\n * Sets log level for all Firebase SDKs.\n *\n * All of the log types above the current log level are captured (i.e. if\n * you set the log level to `info`, errors are logged, but `debug` and\n * `verbose` logs are not).\n *\n * @public\n */\nexport function setLogLevel(logLevel: LogLevelString): void {\n setLogLevelImpl(logLevel);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\nimport { DBSchema, openDB, IDBPDatabase } from 'idb';\nimport { AppError, ERROR_FACTORY } from './errors';\nimport { FirebaseApp } from './public-types';\nimport { HeartbeatsInIndexedDB } from './types';\nimport { logger } from './logger';\n\nconst DB_NAME = 'firebase-heartbeat-database';\nconst DB_VERSION = 1;\nconst STORE_NAME = 'firebase-heartbeat-store';\n\ninterface AppDB extends DBSchema {\n 'firebase-heartbeat-store': {\n key: string;\n value: HeartbeatsInIndexedDB;\n };\n}\n\nlet dbPromise: Promise> | null = null;\nfunction getDbPromise(): Promise> {\n if (!dbPromise) {\n dbPromise = openDB(DB_NAME, DB_VERSION, {\n upgrade: (db, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n try {\n db.createObjectStore(STORE_NAME);\n } catch (e) {\n // Safari/iOS browsers throw occasional exceptions on\n // db.createObjectStore() that may be a bug. Avoid blocking\n // the rest of the app functionality.\n console.warn(e);\n }\n }\n }\n }).catch(e => {\n throw ERROR_FACTORY.create(AppError.IDB_OPEN, {\n originalErrorMessage: e.message\n });\n });\n }\n return dbPromise;\n}\n\nexport async function readHeartbeatsFromIndexedDB(\n app: FirebaseApp\n): Promise {\n try {\n const db = await getDbPromise();\n const tx = db.transaction(STORE_NAME);\n const result = await tx.objectStore(STORE_NAME).get(computeKey(app));\n // We already have the value but tx.done can throw,\n // so we need to await it here to catch errors\n await tx.done;\n return result;\n } catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n } else {\n const idbGetError = ERROR_FACTORY.create(AppError.IDB_GET, {\n originalErrorMessage: (e as Error)?.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\n\nexport async function writeHeartbeatsToIndexedDB(\n app: FirebaseApp,\n heartbeatObject: HeartbeatsInIndexedDB\n): Promise {\n try {\n const db = await getDbPromise();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const objectStore = tx.objectStore(STORE_NAME);\n await objectStore.put(heartbeatObject, computeKey(app));\n await tx.done;\n } catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n } else {\n const idbGetError = ERROR_FACTORY.create(AppError.IDB_WRITE, {\n originalErrorMessage: (e as Error)?.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\n\nfunction computeKey(app: FirebaseApp): string {\n return `${app.name}!${app.options.appId}`;\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentContainer } from '@firebase/component';\nimport {\n base64urlEncodeWithoutPadding,\n isIndexedDBAvailable,\n validateIndexedDBOpenable\n} from '@firebase/util';\nimport {\n readHeartbeatsFromIndexedDB,\n writeHeartbeatsToIndexedDB\n} from './indexeddb';\nimport { FirebaseApp } from './public-types';\nimport {\n HeartbeatsByUserAgent,\n HeartbeatService,\n HeartbeatsInIndexedDB,\n HeartbeatStorage,\n SingleDateHeartbeat\n} from './types';\nimport { logger } from './logger';\n\nconst MAX_HEADER_BYTES = 1024;\n// 30 days\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\n\nexport class HeartbeatServiceImpl implements HeartbeatService {\n /**\n * The persistence layer for heartbeats\n * Leave public for easier testing.\n */\n _storage: HeartbeatStorageImpl;\n\n /**\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\n * the header string.\n * Stores one record per date. This will be consolidated into the standard\n * format of one record per user agent string before being sent as a header.\n * Populated from indexedDB when the controller is instantiated and should\n * be kept in sync with indexedDB.\n * Leave public for easier testing.\n */\n _heartbeatsCache: HeartbeatsInIndexedDB | null = null;\n\n /**\n * the initialization promise for populating heartbeatCache.\n * If getHeartbeatsHeader() is called before the promise resolves\n * (heartbeatsCache == null), it should wait for this promise\n * Leave public for easier testing.\n */\n _heartbeatsCachePromise: Promise;\n constructor(private readonly container: ComponentContainer) {\n const app = this.container.getProvider('app').getImmediate();\n this._storage = new HeartbeatStorageImpl(app);\n this._heartbeatsCachePromise = this._storage.read().then(result => {\n this._heartbeatsCache = result;\n return result;\n });\n }\n\n /**\n * Called to report a heartbeat. The function will generate\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\n * to IndexedDB.\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\n * already logged, subsequent calls to this function in the same day will be ignored.\n */\n async triggerHeartbeat(): Promise {\n try {\n const platformLogger = this.container\n .getProvider('platform-logger')\n .getImmediate();\n\n // This is the \"Firebase user agent\" string from the platform logger\n // service, not the browser user agent.\n const agent = platformLogger.getPlatformInfoString();\n const date = getUTCDateString();\n if (this._heartbeatsCache?.heartbeats == null) {\n this._heartbeatsCache = await this._heartbeatsCachePromise;\n // If we failed to construct a heartbeats cache, then return immediately.\n if (this._heartbeatsCache?.heartbeats == null) {\n return;\n }\n }\n // Do not store a heartbeat if one is already stored for this day\n // or if a header has already been sent today.\n if (\n this._heartbeatsCache.lastSentHeartbeatDate === date ||\n this._heartbeatsCache.heartbeats.some(\n singleDateHeartbeat => singleDateHeartbeat.date === date\n )\n ) {\n return;\n } else {\n // There is no entry for this date. Create one.\n this._heartbeatsCache.heartbeats.push({ date, agent });\n }\n // Remove entries older than 30 days.\n this._heartbeatsCache.heartbeats =\n this._heartbeatsCache.heartbeats.filter(singleDateHeartbeat => {\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\n const now = Date.now();\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\n });\n return this._storage.overwrite(this._heartbeatsCache);\n } catch (e) {\n logger.warn(e);\n }\n }\n\n /**\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\n * It also clears all heartbeats from memory as well as in IndexedDB.\n *\n * NOTE: Consuming product SDKs should not send the header if this method\n * returns an empty string.\n */\n async getHeartbeatsHeader(): Promise {\n try {\n if (this._heartbeatsCache === null) {\n await this._heartbeatsCachePromise;\n }\n // If it's still null or the array is empty, there is no data to send.\n if (\n this._heartbeatsCache?.heartbeats == null ||\n this._heartbeatsCache.heartbeats.length === 0\n ) {\n return '';\n }\n const date = getUTCDateString();\n // Extract as many heartbeats from the cache as will fit under the size limit.\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(\n this._heartbeatsCache.heartbeats\n );\n const headerString = base64urlEncodeWithoutPadding(\n JSON.stringify({ version: 2, heartbeats: heartbeatsToSend })\n );\n // Store last sent date to prevent another being logged/sent for the same day.\n this._heartbeatsCache.lastSentHeartbeatDate = date;\n if (unsentEntries.length > 0) {\n // Store any unsent entries if they exist.\n this._heartbeatsCache.heartbeats = unsentEntries;\n // This seems more likely than emptying the array (below) to lead to some odd state\n // since the cache isn't empty and this will be called again on the next request,\n // and is probably safest if we await it.\n await this._storage.overwrite(this._heartbeatsCache);\n } else {\n this._heartbeatsCache.heartbeats = [];\n // Do not wait for this, to reduce latency.\n void this._storage.overwrite(this._heartbeatsCache);\n }\n return headerString;\n } catch (e) {\n logger.warn(e);\n return '';\n }\n }\n}\n\nfunction getUTCDateString(): string {\n const today = new Date();\n // Returns date format 'YYYY-MM-DD'\n return today.toISOString().substring(0, 10);\n}\n\nexport function extractHeartbeatsForHeader(\n heartbeatsCache: SingleDateHeartbeat[],\n maxSize = MAX_HEADER_BYTES\n): {\n heartbeatsToSend: HeartbeatsByUserAgent[];\n unsentEntries: SingleDateHeartbeat[];\n} {\n // Heartbeats grouped by user agent in the standard format to be sent in\n // the header.\n const heartbeatsToSend: HeartbeatsByUserAgent[] = [];\n // Single date format heartbeats that are not sent.\n let unsentEntries = heartbeatsCache.slice();\n for (const singleDateHeartbeat of heartbeatsCache) {\n // Look for an existing entry with the same user agent.\n const heartbeatEntry = heartbeatsToSend.find(\n hb => hb.agent === singleDateHeartbeat.agent\n );\n if (!heartbeatEntry) {\n // If no entry for this user agent exists, create one.\n heartbeatsToSend.push({\n agent: singleDateHeartbeat.agent,\n dates: [singleDateHeartbeat.date]\n });\n if (countBytes(heartbeatsToSend) > maxSize) {\n // If the header would exceed max size, remove the added heartbeat\n // entry and stop adding to the header.\n heartbeatsToSend.pop();\n break;\n }\n } else {\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\n // If the header would exceed max size, remove the added date\n // and stop adding to the header.\n if (countBytes(heartbeatsToSend) > maxSize) {\n heartbeatEntry.dates.pop();\n break;\n }\n }\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\n // quota and the loop breaks early.)\n unsentEntries = unsentEntries.slice(1);\n }\n return {\n heartbeatsToSend,\n unsentEntries\n };\n}\n\nexport class HeartbeatStorageImpl implements HeartbeatStorage {\n private _canUseIndexedDBPromise: Promise;\n constructor(public app: FirebaseApp) {\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\n }\n async runIndexedDBEnvironmentCheck(): Promise {\n if (!isIndexedDBAvailable()) {\n return false;\n } else {\n return validateIndexedDBOpenable()\n .then(() => true)\n .catch(() => false);\n }\n }\n /**\n * Read all heartbeats.\n */\n async read(): Promise {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return { heartbeats: [] };\n } else {\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\n if (idbHeartbeatObject?.heartbeats) {\n return idbHeartbeatObject;\n } else {\n return { heartbeats: [] };\n }\n }\n }\n // overwrite the storage with the provided heartbeats\n async overwrite(heartbeatsObject: HeartbeatsInIndexedDB): Promise {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n } else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate:\n heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: heartbeatsObject.heartbeats\n });\n }\n }\n // add heartbeats\n async add(heartbeatsObject: HeartbeatsInIndexedDB): Promise {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n } else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate:\n heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: [\n ...existingHeartbeatsObject.heartbeats,\n ...heartbeatsObject.heartbeats\n ]\n });\n }\n }\n}\n\n/**\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\n * in a platform logging header JSON object, stringified, and converted\n * to base 64.\n */\nexport function countBytes(heartbeatsCache: HeartbeatsByUserAgent[]): number {\n // base64 has a restricted set of characters, all of which should be 1 byte.\n return base64urlEncodeWithoutPadding(\n // heartbeatsCache wrapper properties\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })\n ).length;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ComponentType } from '@firebase/component';\nimport { PlatformLoggerServiceImpl } from './platformLoggerService';\nimport { name, version } from '../package.json';\nimport { _registerComponent } from './internal';\nimport { registerVersion } from './api';\nimport { HeartbeatServiceImpl } from './heartbeatService';\n\nexport function registerCoreComponents(variant?: string): void {\n _registerComponent(\n new Component(\n 'platform-logger',\n container => new PlatformLoggerServiceImpl(container),\n ComponentType.PRIVATE\n )\n );\n _registerComponent(\n new Component(\n 'heartbeat',\n container => new HeartbeatServiceImpl(container),\n ComponentType.PRIVATE\n )\n );\n\n // Register `app` package.\n registerVersion(name, version, variant);\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n // Register platform SDK identifier (no version).\n registerVersion('fire-js', '');\n}\n","/**\n * Firebase App\n *\n * @remarks This package coordinates the communication between the different Firebase components\n * @packageDocumentation\n */\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerCoreComponents } from './registerCoreComponents';\n\nexport * from './api';\nexport * from './internal';\nexport * from './public-types';\n\nregisterCoreComponents('__RUNTIME_ENV__');\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { registerVersion } from '@firebase/app';\nimport { name, version } from '../package.json';\n\nregisterVersion(name, version, 'app');\nexport * from '@firebase/app';\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** The semver (www.semver.org) version of the SDK. */\nexport let SDK_VERSION = '';\n\n/**\n * SDK_VERSION should be set before any database instance is created\n * @internal\n */\nexport function setSDKVersion(version: string): void {\n SDK_VERSION = version;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { jsonEval, stringify } from '@firebase/util';\n\n/**\n * Wraps a DOM Storage object and:\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\n *\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\n * and one for localStorage.\n *\n */\nexport class DOMStorageWrapper {\n // Use a prefix to avoid collisions with other stuff saved by the app.\n private prefix_ = 'firebase:';\n\n /**\n * @param domStorage_ - The underlying storage object (e.g. localStorage or sessionStorage)\n */\n constructor(private domStorage_: Storage) {}\n\n /**\n * @param key - The key to save the value under\n * @param value - The value being stored, or null to remove the key.\n */\n set(key: string, value: unknown | null) {\n if (value == null) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n } else {\n this.domStorage_.setItem(this.prefixedName_(key), stringify(value));\n }\n }\n\n /**\n * @returns The value that was stored under this key, or null\n */\n get(key: string): unknown {\n const storedVal = this.domStorage_.getItem(this.prefixedName_(key));\n if (storedVal == null) {\n return null;\n } else {\n return jsonEval(storedVal);\n }\n }\n\n remove(key: string) {\n this.domStorage_.removeItem(this.prefixedName_(key));\n }\n\n isInMemoryStorage: boolean;\n\n prefixedName_(name: string): string {\n return this.prefix_ + name;\n }\n\n toString(): string {\n return this.domStorage_.toString();\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { contains } from '@firebase/util';\n\n/**\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\n * (TODO: create interface for both to implement).\n */\nexport class MemoryStorage {\n private cache_: { [k: string]: unknown } = {};\n\n set(key: string, value: unknown | null) {\n if (value == null) {\n delete this.cache_[key];\n } else {\n this.cache_[key] = value;\n }\n }\n\n get(key: string): unknown {\n if (contains(this.cache_, key)) {\n return this.cache_[key];\n }\n return null;\n }\n\n remove(key: string) {\n delete this.cache_[key];\n }\n\n isInMemoryStorage = true;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DOMStorageWrapper } from './DOMStorageWrapper';\nimport { MemoryStorage } from './MemoryStorage';\n\ndeclare const window: Window;\n\n/**\n * Helper to create a DOMStorageWrapper or else fall back to MemoryStorage.\n * TODO: Once MemoryStorage and DOMStorageWrapper have a shared interface this method annotation should change\n * to reflect this type\n *\n * @param domStorageName - Name of the underlying storage object\n * (e.g. 'localStorage' or 'sessionStorage').\n * @returns Turning off type information until a common interface is defined.\n */\nconst createStoragefor = function (\n domStorageName: string\n): DOMStorageWrapper | MemoryStorage {\n try {\n // NOTE: just accessing \"localStorage\" or \"window['localStorage']\" may throw a security exception,\n // so it must be inside the try/catch.\n if (\n typeof window !== 'undefined' &&\n typeof window[domStorageName] !== 'undefined'\n ) {\n // Need to test cache. Just because it's here doesn't mean it works\n const domStorage = window[domStorageName];\n domStorage.setItem('firebase:sentinel', 'cache');\n domStorage.removeItem('firebase:sentinel');\n return new DOMStorageWrapper(domStorage);\n }\n } catch (e) {}\n\n // Failed to create wrapper. Just return in-memory storage.\n // TODO: log?\n return new MemoryStorage();\n};\n\n/** A storage object that lasts across sessions */\nexport const PersistentStorage = createStoragefor('localStorage');\n\n/** A storage object that only lasts one session */\nexport const SessionStorage = createStoragefor('sessionStorage');\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Logger, LogLevel } from '@firebase/logger';\nimport {\n assert,\n base64,\n Sha1,\n stringToByteArray,\n stringify,\n isNodeSdk\n} from '@firebase/util';\n\nimport { SessionStorage } from '../storage/storage';\nimport { QueryContext } from '../view/EventRegistration';\n\ndeclare const window: Window;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const Windows: any;\n\nconst logClient = new Logger('@firebase/database');\n\n/**\n * Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).\n */\nexport const LUIDGenerator: () => number = (function () {\n let id = 1;\n return function () {\n return id++;\n };\n})();\n\n/**\n * Sha1 hash of the input string\n * @param str - The string to hash\n * @returns {!string} The resulting hash\n */\nexport const sha1 = function (str: string): string {\n const utf8Bytes = stringToByteArray(str);\n const sha1 = new Sha1();\n sha1.update(utf8Bytes);\n const sha1Bytes = sha1.digest();\n return base64.encodeByteArray(sha1Bytes);\n};\n\nconst buildLogMessage_ = function (...varArgs: unknown[]): string {\n let message = '';\n for (let i = 0; i < varArgs.length; i++) {\n const arg = varArgs[i];\n if (\n Array.isArray(arg) ||\n (arg &&\n typeof arg === 'object' &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (arg as any).length === 'number')\n ) {\n message += buildLogMessage_.apply(null, arg);\n } else if (typeof arg === 'object') {\n message += stringify(arg);\n } else {\n message += arg;\n }\n message += ' ';\n }\n\n return message;\n};\n\n/**\n * Use this for all debug messages in Firebase.\n */\nexport let logger: ((a: string) => void) | null = null;\n\n/**\n * Flag to check for log availability on first log message\n */\nlet firstLog_ = true;\n\n/**\n * The implementation of Firebase.enableLogging (defined here to break dependencies)\n * @param logger_ - A flag to turn on logging, or a custom logger\n * @param persistent - Whether or not to persist logging settings across refreshes\n */\nexport const enableLogging = function (\n logger_?: boolean | ((a: string) => void) | null,\n persistent?: boolean\n) {\n assert(\n !persistent || logger_ === true || logger_ === false,\n \"Can't turn on custom loggers persistently.\"\n );\n if (logger_ === true) {\n logClient.logLevel = LogLevel.VERBOSE;\n logger = logClient.log.bind(logClient);\n if (persistent) {\n SessionStorage.set('logging_enabled', true);\n }\n } else if (typeof logger_ === 'function') {\n logger = logger_;\n } else {\n logger = null;\n SessionStorage.remove('logging_enabled');\n }\n};\n\nexport const log = function (...varArgs: unknown[]) {\n if (firstLog_ === true) {\n firstLog_ = false;\n if (logger === null && SessionStorage.get('logging_enabled') === true) {\n enableLogging(true);\n }\n }\n\n if (logger) {\n const message = buildLogMessage_.apply(null, varArgs);\n logger(message);\n }\n};\n\nexport const logWrapper = function (\n prefix: string\n): (...varArgs: unknown[]) => void {\n return function (...varArgs: unknown[]) {\n log(prefix, ...varArgs);\n };\n};\n\nexport const error = function (...varArgs: string[]) {\n const message = 'FIREBASE INTERNAL ERROR: ' + buildLogMessage_(...varArgs);\n logClient.error(message);\n};\n\nexport const fatal = function (...varArgs: string[]) {\n const message = `FIREBASE FATAL ERROR: ${buildLogMessage_(...varArgs)}`;\n logClient.error(message);\n throw new Error(message);\n};\n\nexport const warn = function (...varArgs: unknown[]) {\n const message = 'FIREBASE WARNING: ' + buildLogMessage_(...varArgs);\n logClient.warn(message);\n};\n\n/**\n * Logs a warning if the containing page uses https. Called when a call to new Firebase\n * does not use https.\n */\nexport const warnIfPageIsSecure = function () {\n // Be very careful accessing browser globals. Who knows what may or may not exist.\n if (\n typeof window !== 'undefined' &&\n window.location &&\n window.location.protocol &&\n window.location.protocol.indexOf('https:') !== -1\n ) {\n warn(\n 'Insecure Firebase access from a secure page. ' +\n 'Please use https in calls to new Firebase().'\n );\n }\n};\n\nexport const warnAboutUnsupportedMethod = function (methodName: string) {\n warn(\n methodName +\n ' is unsupported and will likely change soon. ' +\n 'Please do not use.'\n );\n};\n\n/**\n * Returns true if data is NaN, or +/- Infinity.\n */\nexport const isInvalidJSONNumber = function (data: unknown): boolean {\n return (\n typeof data === 'number' &&\n (data !== data || // NaN\n data === Number.POSITIVE_INFINITY ||\n data === Number.NEGATIVE_INFINITY)\n );\n};\n\nexport const executeWhenDOMReady = function (fn: () => void) {\n if (isNodeSdk() || document.readyState === 'complete') {\n fn();\n } else {\n // Modeled after jQuery. Try DOMContentLoaded and onreadystatechange (which\n // fire before onload), but fall back to onload.\n\n let called = false;\n const wrappedFn = function () {\n if (!document.body) {\n setTimeout(wrappedFn, Math.floor(10));\n return;\n }\n\n if (!called) {\n called = true;\n fn();\n }\n };\n\n if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', wrappedFn, false);\n // fallback to onload.\n window.addEventListener('load', wrappedFn, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if ((document as any).attachEvent) {\n // IE.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (document as any).attachEvent('onreadystatechange', () => {\n if (document.readyState === 'complete') {\n wrappedFn();\n }\n });\n // fallback to onload.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).attachEvent('onload', wrappedFn);\n\n // jQuery has an extra hack for IE that we could employ (based on\n // http://javascript.nwbox.com/IEContentLoaded/) But it looks really old.\n // I'm hoping we don't need it.\n }\n }\n};\n\n/**\n * Minimum key name. Invalid for actual data, used as a marker to sort before any valid names\n */\nexport const MIN_NAME = '[MIN_NAME]';\n\n/**\n * Maximum key name. Invalid for actual data, used as a marker to sort above any valid names\n */\nexport const MAX_NAME = '[MAX_NAME]';\n\n/**\n * Compares valid Firebase key names, plus min and max name\n */\nexport const nameCompare = function (a: string, b: string): number {\n if (a === b) {\n return 0;\n } else if (a === MIN_NAME || b === MAX_NAME) {\n return -1;\n } else if (b === MIN_NAME || a === MAX_NAME) {\n return 1;\n } else {\n const aAsInt = tryParseInt(a),\n bAsInt = tryParseInt(b);\n\n if (aAsInt !== null) {\n if (bAsInt !== null) {\n return aAsInt - bAsInt === 0 ? a.length - b.length : aAsInt - bAsInt;\n } else {\n return -1;\n }\n } else if (bAsInt !== null) {\n return 1;\n } else {\n return a < b ? -1 : 1;\n }\n }\n};\n\n/**\n * @returns {!number} comparison result.\n */\nexport const stringCompare = function (a: string, b: string): number {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else {\n return 1;\n }\n};\n\nexport const requireKey = function (\n key: string,\n obj: { [k: string]: unknown }\n): unknown {\n if (obj && key in obj) {\n return obj[key];\n } else {\n throw new Error(\n 'Missing required key (' + key + ') in object: ' + stringify(obj)\n );\n }\n};\n\nexport const ObjectToUniqueKey = function (obj: unknown): string {\n if (typeof obj !== 'object' || obj === null) {\n return stringify(obj);\n }\n\n const keys = [];\n // eslint-disable-next-line guard-for-in\n for (const k in obj) {\n keys.push(k);\n }\n\n // Export as json, but with the keys sorted.\n keys.sort();\n let key = '{';\n for (let i = 0; i < keys.length; i++) {\n if (i !== 0) {\n key += ',';\n }\n key += stringify(keys[i]);\n key += ':';\n key += ObjectToUniqueKey(obj[keys[i]]);\n }\n\n key += '}';\n return key;\n};\n\n/**\n * Splits a string into a number of smaller segments of maximum size\n * @param str - The string\n * @param segsize - The maximum number of chars in the string.\n * @returns The string, split into appropriately-sized chunks\n */\nexport const splitStringBySize = function (\n str: string,\n segsize: number\n): string[] {\n const len = str.length;\n\n if (len <= segsize) {\n return [str];\n }\n\n const dataSegs = [];\n for (let c = 0; c < len; c += segsize) {\n if (c + segsize > len) {\n dataSegs.push(str.substring(c, len));\n } else {\n dataSegs.push(str.substring(c, c + segsize));\n }\n }\n return dataSegs;\n};\n\n/**\n * Apply a function to each (key, value) pair in an object or\n * apply a function to each (index, value) pair in an array\n * @param obj - The object or array to iterate over\n * @param fn - The function to apply\n */\nexport function each(obj: object, fn: (k: string, v: unknown) => void) {\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn(key, obj[key]);\n }\n }\n}\n\n/**\n * Like goog.bind, but doesn't bother to create a closure if opt_context is null/undefined.\n * @param callback - Callback function.\n * @param context - Optional context to bind to.\n *\n */\nexport const bindCallback = function (\n callback: (a: unknown) => void,\n context?: object | null\n): (a: unknown) => void {\n return context ? callback.bind(context) : callback;\n};\n\n/**\n * Borrowed from http://hg.secondlife.com/llsd/src/tip/js/typedarray.js (MIT License)\n * I made one modification at the end and removed the NaN / Infinity\n * handling (since it seemed broken [caused an overflow] and we don't need it). See MJL comments.\n * @param v - A double\n *\n */\nexport const doubleToIEEE754String = function (v: number): string {\n assert(!isInvalidJSONNumber(v), 'Invalid JSON number'); // MJL\n\n const ebits = 11,\n fbits = 52;\n const bias = (1 << (ebits - 1)) - 1;\n let s, e, f, ln, i;\n\n // Compute sign, exponent, fraction\n // Skip NaN / Infinity handling --MJL.\n if (v === 0) {\n e = 0;\n f = 0;\n s = 1 / v === -Infinity ? 1 : 0;\n } else {\n s = v < 0;\n v = Math.abs(v);\n\n if (v >= Math.pow(2, 1 - bias)) {\n // Normalized\n ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);\n e = ln + bias;\n f = Math.round(v * Math.pow(2, fbits - ln) - Math.pow(2, fbits));\n } else {\n // Denormalized\n e = 0;\n f = Math.round(v / Math.pow(2, 1 - bias - fbits));\n }\n }\n\n // Pack sign, exponent, fraction\n const bits = [];\n for (i = fbits; i; i -= 1) {\n bits.push(f % 2 ? 1 : 0);\n f = Math.floor(f / 2);\n }\n for (i = ebits; i; i -= 1) {\n bits.push(e % 2 ? 1 : 0);\n e = Math.floor(e / 2);\n }\n bits.push(s ? 1 : 0);\n bits.reverse();\n const str = bits.join('');\n\n // Return the data as a hex string. --MJL\n let hexByteString = '';\n for (i = 0; i < 64; i += 8) {\n let hexByte = parseInt(str.substr(i, 8), 2).toString(16);\n if (hexByte.length === 1) {\n hexByte = '0' + hexByte;\n }\n hexByteString = hexByteString + hexByte;\n }\n return hexByteString.toLowerCase();\n};\n\n/**\n * Used to detect if we're in a Chrome content script (which executes in an\n * isolated environment where long-polling doesn't work).\n */\nexport const isChromeExtensionContentScript = function (): boolean {\n return !!(\n typeof window === 'object' &&\n window['chrome'] &&\n window['chrome']['extension'] &&\n !/^chrome/.test(window.location.href)\n );\n};\n\n/**\n * Used to detect if we're in a Windows 8 Store app.\n */\nexport const isWindowsStoreApp = function (): boolean {\n // Check for the presence of a couple WinRT globals\n return typeof Windows === 'object' && typeof Windows.UI === 'object';\n};\n\n/**\n * Converts a server error code to a JavaScript Error\n */\nexport function errorForServerCode(code: string, query: QueryContext): Error {\n let reason = 'Unknown Error';\n if (code === 'too_big') {\n reason =\n 'The data requested exceeds the maximum size ' +\n 'that can be accessed with a single request.';\n } else if (code === 'permission_denied') {\n reason = \"Client doesn't have permission to access the desired data.\";\n } else if (code === 'unavailable') {\n reason = 'The service is unavailable';\n }\n\n const error = new Error(\n code + ' at ' + query._path.toString() + ': ' + reason\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (error as any).code = code.toUpperCase();\n return error;\n}\n\n/**\n * Used to test for integer-looking strings\n */\nexport const INTEGER_REGEXP_ = new RegExp('^-?(0*)\\\\d{1,10}$');\n\n/**\n * For use in keys, the minimum possible 32-bit integer.\n */\nexport const INTEGER_32_MIN = -2147483648;\n\n/**\n * For use in keys, the maximum possible 32-bit integer.\n */\nexport const INTEGER_32_MAX = 2147483647;\n\n/**\n * If the string contains a 32-bit integer, return it. Else return null.\n */\nexport const tryParseInt = function (str: string): number | null {\n if (INTEGER_REGEXP_.test(str)) {\n const intVal = Number(str);\n if (intVal >= INTEGER_32_MIN && intVal <= INTEGER_32_MAX) {\n return intVal;\n }\n }\n return null;\n};\n\n/**\n * Helper to run some code but catch any exceptions and re-throw them later.\n * Useful for preventing user callbacks from breaking internal code.\n *\n * Re-throwing the exception from a setTimeout is a little evil, but it's very\n * convenient (we don't have to try to figure out when is a safe point to\n * re-throw it), and the behavior seems reasonable:\n *\n * * If you aren't pausing on exceptions, you get an error in the console with\n * the correct stack trace.\n * * If you're pausing on all exceptions, the debugger will pause on your\n * exception and then again when we rethrow it.\n * * If you're only pausing on uncaught exceptions, the debugger will only pause\n * on us re-throwing it.\n *\n * @param fn - The code to guard.\n */\nexport const exceptionGuard = function (fn: () => void) {\n try {\n fn();\n } catch (e) {\n // Re-throw exception when it's safe.\n setTimeout(() => {\n // It used to be that \"throw e\" would result in a good console error with\n // relevant context, but as of Chrome 39, you just get the firebase.js\n // file/line number where we re-throw it, which is useless. So we log\n // e.stack explicitly.\n const stack = e.stack || '';\n warn('Exception was thrown by user callback.', stack);\n throw e;\n }, Math.floor(0));\n }\n};\n\n/**\n * Helper function to safely call opt_callback with the specified arguments. It:\n * 1. Turns into a no-op if opt_callback is null or undefined.\n * 2. Wraps the call inside exceptionGuard to prevent exceptions from breaking our state.\n *\n * @param callback - Optional onComplete callback.\n * @param varArgs - Arbitrary args to be passed to opt_onComplete\n */\nexport const callUserCallback = function (\n // eslint-disable-next-line @typescript-eslint/ban-types\n callback?: Function | null,\n ...varArgs: unknown[]\n) {\n if (typeof callback === 'function') {\n exceptionGuard(() => {\n callback(...varArgs);\n });\n }\n};\n\n/**\n * @returns {boolean} true if we think we're currently being crawled.\n */\nexport const beingCrawled = function (): boolean {\n const userAgent =\n (typeof window === 'object' &&\n window['navigator'] &&\n window['navigator']['userAgent']) ||\n '';\n\n // For now we whitelist the most popular crawlers. We should refine this to be the set of crawlers we\n // believe to support JavaScript/AJAX rendering.\n // NOTE: Google Webmaster Tools doesn't really belong, but their \"This is how a visitor to your website\n // would have seen the page\" is flaky if we don't treat it as a crawler.\n return (\n userAgent.search(\n /googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i\n ) >= 0\n );\n};\n\n/**\n * Export a property of an object using a getter function.\n */\nexport const exportPropGetter = function (\n object: object,\n name: string,\n fnGet: () => unknown\n) {\n Object.defineProperty(object, name, { get: fnGet });\n};\n\n/**\n * Same as setTimeout() except on Node.JS it will /not/ prevent the process from exiting.\n *\n * It is removed with clearTimeout() as normal.\n *\n * @param fn - Function to run.\n * @param time - Milliseconds to wait before running.\n * @returns The setTimeout() return value.\n */\nexport const setTimeoutNonBlocking = function (\n fn: () => void,\n time: number\n): number | object {\n const timeout: number | object = setTimeout(fn, time);\n // Note: at the time of this comment, unrefTimer is under the unstable set of APIs. Run with --unstable to enable the API.\n if (\n typeof timeout === 'number' &&\n // @ts-ignore Is only defined in Deno environments.\n typeof Deno !== 'undefined' &&\n // @ts-ignore Deno and unrefTimer are only defined in Deno environments.\n Deno['unrefTimer']\n ) {\n // @ts-ignore Deno and unrefTimer are only defined in Deno environments.\n Deno.unrefTimer(timeout);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if (typeof timeout === 'object' && (timeout as any)['unref']) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (timeout as any)['unref']();\n }\n\n return timeout;\n};\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AppCheckInternalComponentName,\n AppCheckTokenListener,\n AppCheckTokenResult,\n FirebaseAppCheckInternal\n} from '@firebase/app-check-interop-types';\nimport { Provider } from '@firebase/component';\n\nimport { warn } from './util/util';\n\n/**\n * Abstraction around AppCheck's token fetching capabilities.\n */\nexport class AppCheckTokenProvider {\n private appCheck?: FirebaseAppCheckInternal;\n constructor(\n private appName_: string,\n private appCheckProvider?: Provider\n ) {\n this.appCheck = appCheckProvider?.getImmediate({ optional: true });\n if (!this.appCheck) {\n appCheckProvider?.get().then(appCheck => (this.appCheck = appCheck));\n }\n }\n\n getToken(forceRefresh?: boolean): Promise {\n if (!this.appCheck) {\n return new Promise((resolve, reject) => {\n // Support delayed initialization of FirebaseAppCheck. This allows our\n // customers to initialize the RTDB SDK before initializing Firebase\n // AppCheck and ensures that all requests are authenticated if a token\n // becomes available before the timeout below expires.\n setTimeout(() => {\n if (this.appCheck) {\n this.getToken(forceRefresh).then(resolve, reject);\n } else {\n resolve(null);\n }\n }, 0);\n });\n }\n return this.appCheck.getToken(forceRefresh);\n }\n\n addTokenChangeListener(listener: AppCheckTokenListener) {\n this.appCheckProvider\n ?.get()\n .then(appCheck => appCheck.addTokenListener(listener));\n }\n\n notifyForInvalidToken(): void {\n warn(\n `Provided AppCheck credentials for the app named \"${this.appName_}\" ` +\n 'are invalid. This usually indicates your app was not initialized correctly.'\n );\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseAuthTokenData } from '@firebase/app-types/private';\nimport {\n FirebaseAuthInternal,\n FirebaseAuthInternalName\n} from '@firebase/auth-interop-types';\nimport { Provider } from '@firebase/component';\n\nimport { log, warn } from './util/util';\n\nexport interface AuthTokenProvider {\n getToken(forceRefresh: boolean): Promise;\n addTokenChangeListener(listener: (token: string | null) => void): void;\n removeTokenChangeListener(listener: (token: string | null) => void): void;\n notifyForInvalidToken(): void;\n}\n\n/**\n * Abstraction around FirebaseApp's token fetching capabilities.\n */\nexport class FirebaseAuthTokenProvider implements AuthTokenProvider {\n private auth_: FirebaseAuthInternal | null = null;\n\n constructor(\n private appName_: string,\n private firebaseOptions_: object,\n private authProvider_: Provider\n ) {\n this.auth_ = authProvider_.getImmediate({ optional: true });\n if (!this.auth_) {\n authProvider_.onInit(auth => (this.auth_ = auth));\n }\n }\n\n getToken(forceRefresh: boolean): Promise {\n if (!this.auth_) {\n return new Promise((resolve, reject) => {\n // Support delayed initialization of FirebaseAuth. This allows our\n // customers to initialize the RTDB SDK before initializing Firebase\n // Auth and ensures that all requests are authenticated if a token\n // becomes available before the timeout below expires.\n setTimeout(() => {\n if (this.auth_) {\n this.getToken(forceRefresh).then(resolve, reject);\n } else {\n resolve(null);\n }\n }, 0);\n });\n }\n\n return this.auth_.getToken(forceRefresh).catch(error => {\n // TODO: Need to figure out all the cases this is raised and whether\n // this makes sense.\n if (error && error.code === 'auth/token-not-initialized') {\n log('Got auth/token-not-initialized error. Treating as null token.');\n return null;\n } else {\n return Promise.reject(error);\n }\n });\n }\n\n addTokenChangeListener(listener: (token: string | null) => void): void {\n // TODO: We might want to wrap the listener and call it with no args to\n // avoid a leaky abstraction, but that makes removing the listener harder.\n if (this.auth_) {\n this.auth_.addAuthTokenListener(listener);\n } else {\n this.authProvider_\n .get()\n .then(auth => auth.addAuthTokenListener(listener));\n }\n }\n\n removeTokenChangeListener(listener: (token: string | null) => void): void {\n this.authProvider_\n .get()\n .then(auth => auth.removeAuthTokenListener(listener));\n }\n\n notifyForInvalidToken(): void {\n let errorMessage =\n 'Provided authentication credentials for the app named \"' +\n this.appName_ +\n '\" are invalid. This usually indicates your app was not ' +\n 'initialized correctly. ';\n if ('credential' in this.firebaseOptions_) {\n errorMessage +=\n 'Make sure the \"credential\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n } else if ('serviceAccount' in this.firebaseOptions_) {\n errorMessage +=\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\n 'project.';\n } else {\n errorMessage +=\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\n 'initializeApp() match the values provided for your app at ' +\n 'https://console.firebase.google.com/.';\n }\n warn(errorMessage);\n }\n}\n\n/* AuthTokenProvider that supplies a constant token. Used by Admin SDK or mockUserToken with emulators. */\nexport class EmulatorTokenProvider implements AuthTokenProvider {\n /** A string that is treated as an admin access token by the RTDB emulator. Used by Admin SDK. */\n static OWNER = 'owner';\n\n constructor(private accessToken: string) {}\n\n getToken(forceRefresh: boolean): Promise {\n return Promise.resolve({\n accessToken: this.accessToken\n });\n }\n\n addTokenChangeListener(listener: (token: string | null) => void): void {\n // Invoke the listener immediately to match the behavior in Firebase Auth\n // (see packages/auth/src/auth.js#L1807)\n listener(this.accessToken);\n }\n\n removeTokenChangeListener(listener: (token: string | null) => void): void {}\n\n notifyForInvalidToken(): void {}\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const PROTOCOL_VERSION = '5';\n\nexport const VERSION_PARAM = 'v';\n\nexport const TRANSPORT_SESSION_PARAM = 's';\n\nexport const REFERER_PARAM = 'r';\n\nexport const FORGE_REF = 'f';\n\n// Matches console.firebase.google.com, firebase-console-*.corp.google.com and\n// firebase.corp.google.com\nexport const FORGE_DOMAIN_RE =\n /(console\\.firebase|firebase-console-\\w+\\.corp|firebase\\.corp)\\.google\\.com/;\n\nexport const LAST_SESSION_PARAM = 'ls';\n\nexport const APPLICATION_ID_PARAM = 'p';\n\nexport const APP_CHECK_TOKEN_PARAM = 'ac';\n\nexport const WEBSOCKET = 'websocket';\n\nexport const LONG_POLLING = 'long_polling';\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { LONG_POLLING, WEBSOCKET } from '../realtime/Constants';\n\nimport { PersistentStorage } from './storage/storage';\nimport { each } from './util/util';\n\n/**\n * A class that holds metadata about a Repo object\n */\nexport class RepoInfo {\n private _host: string;\n private _domain: string;\n internalHost: string;\n\n /**\n * @param host - Hostname portion of the url for the repo\n * @param secure - Whether or not this repo is accessed over ssl\n * @param namespace - The namespace represented by the repo\n * @param webSocketOnly - Whether to prefer websockets over all other transports (used by Nest).\n * @param nodeAdmin - Whether this instance uses Admin SDK credentials\n * @param persistenceKey - Override the default session persistence storage key\n */\n constructor(\n host: string,\n public readonly secure: boolean,\n public readonly namespace: string,\n public readonly webSocketOnly: boolean,\n public readonly nodeAdmin: boolean = false,\n public readonly persistenceKey: string = '',\n public readonly includeNamespaceInQueryParams: boolean = false,\n public readonly isUsingEmulator: boolean = false\n ) {\n this._host = host.toLowerCase();\n this._domain = this._host.substr(this._host.indexOf('.') + 1);\n this.internalHost =\n (PersistentStorage.get('host:' + host) as string) || this._host;\n }\n\n isCacheableHost(): boolean {\n return this.internalHost.substr(0, 2) === 's-';\n }\n\n isCustomHost() {\n return (\n this._domain !== 'firebaseio.com' &&\n this._domain !== 'firebaseio-demo.com'\n );\n }\n\n get host() {\n return this._host;\n }\n\n set host(newHost: string) {\n if (newHost !== this.internalHost) {\n this.internalHost = newHost;\n if (this.isCacheableHost()) {\n PersistentStorage.set('host:' + this._host, this.internalHost);\n }\n }\n }\n\n toString(): string {\n let str = this.toURLString();\n if (this.persistenceKey) {\n str += '<' + this.persistenceKey + '>';\n }\n return str;\n }\n\n toURLString(): string {\n const protocol = this.secure ? 'https://' : 'http://';\n const query = this.includeNamespaceInQueryParams\n ? `?ns=${this.namespace}`\n : '';\n return `${protocol}${this.host}/${query}`;\n }\n}\n\nfunction repoInfoNeedsQueryParam(repoInfo: RepoInfo): boolean {\n return (\n repoInfo.host !== repoInfo.internalHost ||\n repoInfo.isCustomHost() ||\n repoInfo.includeNamespaceInQueryParams\n );\n}\n\n/**\n * Returns the websocket URL for this repo\n * @param repoInfo - RepoInfo object\n * @param type - of connection\n * @param params - list\n * @returns The URL for this repo\n */\nexport function repoInfoConnectionURL(\n repoInfo: RepoInfo,\n type: string,\n params: { [k: string]: string }\n): string {\n assert(typeof type === 'string', 'typeof type must == string');\n assert(typeof params === 'object', 'typeof params must == object');\n\n let connURL: string;\n if (type === WEBSOCKET) {\n connURL =\n (repoInfo.secure ? 'wss://' : 'ws://') + repoInfo.internalHost + '/.ws?';\n } else if (type === LONG_POLLING) {\n connURL =\n (repoInfo.secure ? 'https://' : 'http://') +\n repoInfo.internalHost +\n '/.lp?';\n } else {\n throw new Error('Unknown connection type: ' + type);\n }\n if (repoInfoNeedsQueryParam(repoInfo)) {\n params['ns'] = repoInfo.namespace;\n }\n\n const pairs: string[] = [];\n\n each(params, (key: string, value: string) => {\n pairs.push(key + '=' + value);\n });\n\n return connURL + pairs.join('&');\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { deepCopy, contains } from '@firebase/util';\n\n/**\n * Tracks a collection of stats.\n */\nexport class StatsCollection {\n private counters_: { [k: string]: number } = {};\n\n incrementCounter(name: string, amount: number = 1) {\n if (!contains(this.counters_, name)) {\n this.counters_[name] = 0;\n }\n\n this.counters_[name] += amount;\n }\n\n get() {\n return deepCopy(this.counters_);\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RepoInfo } from '../RepoInfo';\n\nimport { StatsCollection } from './StatsCollection';\n\nconst collections: { [k: string]: StatsCollection } = {};\nconst reporters: { [k: string]: unknown } = {};\n\nexport function statsManagerGetCollection(repoInfo: RepoInfo): StatsCollection {\n const hashString = repoInfo.toString();\n\n if (!collections[hashString]) {\n collections[hashString] = new StatsCollection();\n }\n\n return collections[hashString];\n}\n\nexport function statsManagerGetOrCreateReporter(\n repoInfo: RepoInfo,\n creatorFunction: () => T\n): T {\n const hashString = repoInfo.toString();\n\n if (!reporters[hashString]) {\n reporters[hashString] = creatorFunction();\n }\n\n return reporters[hashString] as T;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { exceptionGuard } from '../../core/util/util';\n\n/**\n * This class ensures the packets from the server arrive in order\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\n */\nexport class PacketReceiver {\n pendingResponses: unknown[] = [];\n currentResponseNum = 0;\n closeAfterResponse = -1;\n onClose: (() => void) | null = null;\n\n /**\n * @param onMessage_\n */\n constructor(private onMessage_: (a: {}) => void) {}\n\n closeAfter(responseNum: number, callback: () => void) {\n this.closeAfterResponse = responseNum;\n this.onClose = callback;\n if (this.closeAfterResponse < this.currentResponseNum) {\n this.onClose();\n this.onClose = null;\n }\n }\n\n /**\n * Each message from the server comes with a response number, and an array of data. The responseNumber\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\n * browsers will respond in the same order as the requests we sent\n */\n handleResponse(requestNum: number, data: unknown[]) {\n this.pendingResponses[requestNum] = data;\n while (this.pendingResponses[this.currentResponseNum]) {\n const toProcess = this.pendingResponses[\n this.currentResponseNum\n ] as unknown[];\n delete this.pendingResponses[this.currentResponseNum];\n for (let i = 0; i < toProcess.length; ++i) {\n if (toProcess[i]) {\n exceptionGuard(() => {\n this.onMessage_(toProcess[i]);\n });\n }\n }\n if (this.currentResponseNum === this.closeAfterResponse) {\n if (this.onClose) {\n this.onClose();\n this.onClose = null;\n }\n break;\n }\n this.currentResponseNum++;\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { base64Encode, isNodeSdk, stringify } from '@firebase/util';\n\nimport { RepoInfo, repoInfoConnectionURL } from '../core/RepoInfo';\nimport { StatsCollection } from '../core/stats/StatsCollection';\nimport { statsManagerGetCollection } from '../core/stats/StatsManager';\nimport {\n executeWhenDOMReady,\n isChromeExtensionContentScript,\n isWindowsStoreApp,\n log,\n logWrapper,\n LUIDGenerator,\n splitStringBySize\n} from '../core/util/util';\n\nimport {\n APP_CHECK_TOKEN_PARAM,\n APPLICATION_ID_PARAM,\n FORGE_DOMAIN_RE,\n FORGE_REF,\n LAST_SESSION_PARAM,\n LONG_POLLING,\n PROTOCOL_VERSION,\n REFERER_PARAM,\n TRANSPORT_SESSION_PARAM,\n VERSION_PARAM\n} from './Constants';\nimport { PacketReceiver } from './polling/PacketReceiver';\nimport { Transport } from './Transport';\n\n// URL query parameters associated with longpolling\nexport const FIREBASE_LONGPOLL_START_PARAM = 'start';\nexport const FIREBASE_LONGPOLL_CLOSE_COMMAND = 'close';\nexport const FIREBASE_LONGPOLL_COMMAND_CB_NAME = 'pLPCommand';\nexport const FIREBASE_LONGPOLL_DATA_CB_NAME = 'pRTLPCB';\nexport const FIREBASE_LONGPOLL_ID_PARAM = 'id';\nexport const FIREBASE_LONGPOLL_PW_PARAM = 'pw';\nexport const FIREBASE_LONGPOLL_SERIAL_PARAM = 'ser';\nexport const FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = 'cb';\nexport const FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = 'seg';\nexport const FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = 'ts';\nexport const FIREBASE_LONGPOLL_DATA_PARAM = 'd';\nexport const FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM = 'disconn';\nexport const FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = 'dframe';\n\n//Data size constants.\n//TODO: Perf: the maximum length actually differs from browser to browser.\n// We should check what browser we're on and set accordingly.\nconst MAX_URL_DATA_SIZE = 1870;\nconst SEG_HEADER_SIZE = 30; //ie: &seg=8299234&ts=982389123&d=\nconst MAX_PAYLOAD_SIZE = MAX_URL_DATA_SIZE - SEG_HEADER_SIZE;\n\n/**\n * Keepalive period\n * send a fresh request at minimum every 25 seconds. Opera has a maximum request\n * length of 30 seconds that we can't exceed.\n */\nconst KEEPALIVE_REQUEST_INTERVAL = 25000;\n\n/**\n * How long to wait before aborting a long-polling connection attempt.\n */\nconst LP_CONNECT_TIMEOUT = 30000;\n\n/**\n * This class manages a single long-polling connection.\n */\nexport class BrowserPollConnection implements Transport {\n bytesSent = 0;\n bytesReceived = 0;\n urlFn: (params: object) => string;\n scriptTagHolder: FirebaseIFrameScriptHolder;\n myDisconnFrame: HTMLIFrameElement;\n curSegmentNum: number;\n myPacketOrderer: PacketReceiver;\n id: string;\n password: string;\n private log_: (...a: unknown[]) => void;\n private stats_: StatsCollection;\n private everConnected_ = false;\n private isClosed_: boolean;\n private connectTimeoutTimer_: number | null;\n private onDisconnect_: ((a?: boolean) => void) | null;\n\n /**\n * @param connId An identifier for this connection, used for logging\n * @param repoInfo The info for the endpoint to send data to.\n * @param applicationId The Firebase App ID for this project.\n * @param appCheckToken The AppCheck token for this client.\n * @param authToken The AuthToken to use for this connection.\n * @param transportSessionId Optional transportSessionid if we are\n * reconnecting for an existing transport session\n * @param lastSessionId Optional lastSessionId if the PersistentConnection has\n * already created a connection previously\n */\n constructor(\n public connId: string,\n public repoInfo: RepoInfo,\n private applicationId?: string,\n private appCheckToken?: string,\n private authToken?: string,\n public transportSessionId?: string,\n public lastSessionId?: string\n ) {\n this.log_ = logWrapper(connId);\n this.stats_ = statsManagerGetCollection(repoInfo);\n this.urlFn = (params: { [k: string]: string }) => {\n // Always add the token if we have one.\n if (this.appCheckToken) {\n params[APP_CHECK_TOKEN_PARAM] = this.appCheckToken;\n }\n return repoInfoConnectionURL(repoInfo, LONG_POLLING, params);\n };\n }\n\n /**\n * @param onMessage - Callback when messages arrive\n * @param onDisconnect - Callback with connection lost.\n */\n open(onMessage: (msg: {}) => void, onDisconnect: (a?: boolean) => void) {\n this.curSegmentNum = 0;\n this.onDisconnect_ = onDisconnect;\n this.myPacketOrderer = new PacketReceiver(onMessage);\n this.isClosed_ = false;\n\n this.connectTimeoutTimer_ = setTimeout(() => {\n this.log_('Timed out trying to connect.');\n // Make sure we clear the host cache\n this.onClosed_();\n this.connectTimeoutTimer_ = null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(LP_CONNECT_TIMEOUT)) as any;\n\n // Ensure we delay the creation of the iframe until the DOM is loaded.\n executeWhenDOMReady(() => {\n if (this.isClosed_) {\n return;\n }\n\n //Set up a callback that gets triggered once a connection is set up.\n this.scriptTagHolder = new FirebaseIFrameScriptHolder(\n (...args) => {\n const [command, arg1, arg2, arg3, arg4] = args;\n this.incrementIncomingBytes_(args);\n if (!this.scriptTagHolder) {\n return; // we closed the connection.\n }\n\n if (this.connectTimeoutTimer_) {\n clearTimeout(this.connectTimeoutTimer_);\n this.connectTimeoutTimer_ = null;\n }\n this.everConnected_ = true;\n if (command === FIREBASE_LONGPOLL_START_PARAM) {\n this.id = arg1 as string;\n this.password = arg2 as string;\n } else if (command === FIREBASE_LONGPOLL_CLOSE_COMMAND) {\n // Don't clear the host cache. We got a response from the server, so we know it's reachable\n if (arg1) {\n // We aren't expecting any more data (other than what the server's already in the process of sending us\n // through our already open polls), so don't send any more.\n this.scriptTagHolder.sendNewPolls = false;\n\n // arg1 in this case is the last response number sent by the server. We should try to receive\n // all of the responses up to this one before closing\n this.myPacketOrderer.closeAfter(arg1 as number, () => {\n this.onClosed_();\n });\n } else {\n this.onClosed_();\n }\n } else {\n throw new Error('Unrecognized command received: ' + command);\n }\n },\n (...args) => {\n const [pN, data] = args;\n this.incrementIncomingBytes_(args);\n this.myPacketOrderer.handleResponse(pN as number, data as unknown[]);\n },\n () => {\n this.onClosed_();\n },\n this.urlFn\n );\n\n //Send the initial request to connect. The serial number is simply to keep the browser from pulling previous results\n //from cache.\n const urlParams: { [k: string]: string | number } = {};\n urlParams[FIREBASE_LONGPOLL_START_PARAM] = 't';\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = Math.floor(\n Math.random() * 100000000\n );\n if (this.scriptTagHolder.uniqueCallbackIdentifier) {\n urlParams[FIREBASE_LONGPOLL_CALLBACK_ID_PARAM] =\n this.scriptTagHolder.uniqueCallbackIdentifier;\n }\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\n if (this.transportSessionId) {\n urlParams[TRANSPORT_SESSION_PARAM] = this.transportSessionId;\n }\n if (this.lastSessionId) {\n urlParams[LAST_SESSION_PARAM] = this.lastSessionId;\n }\n if (this.applicationId) {\n urlParams[APPLICATION_ID_PARAM] = this.applicationId;\n }\n if (this.appCheckToken) {\n urlParams[APP_CHECK_TOKEN_PARAM] = this.appCheckToken;\n }\n if (\n typeof location !== 'undefined' &&\n location.hostname &&\n FORGE_DOMAIN_RE.test(location.hostname)\n ) {\n urlParams[REFERER_PARAM] = FORGE_REF;\n }\n const connectURL = this.urlFn(urlParams);\n this.log_('Connecting via long-poll to ' + connectURL);\n this.scriptTagHolder.addTag(connectURL, () => {\n /* do nothing */\n });\n });\n }\n\n /**\n * Call this when a handshake has completed successfully and we want to consider the connection established\n */\n start() {\n this.scriptTagHolder.startLongPoll(this.id, this.password);\n this.addDisconnectPingFrame(this.id, this.password);\n }\n\n static forceAllow_: boolean;\n\n /**\n * Forces long polling to be considered as a potential transport\n */\n static forceAllow() {\n BrowserPollConnection.forceAllow_ = true;\n }\n\n static forceDisallow_: boolean;\n\n /**\n * Forces longpolling to not be considered as a potential transport\n */\n static forceDisallow() {\n BrowserPollConnection.forceDisallow_ = true;\n }\n\n // Static method, use string literal so it can be accessed in a generic way\n static isAvailable() {\n if (isNodeSdk()) {\n return false;\n } else if (BrowserPollConnection.forceAllow_) {\n return true;\n } else {\n // NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in\n // the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).\n return (\n !BrowserPollConnection.forceDisallow_ &&\n typeof document !== 'undefined' &&\n document.createElement != null &&\n !isChromeExtensionContentScript() &&\n !isWindowsStoreApp()\n );\n }\n }\n\n /**\n * No-op for polling\n */\n markConnectionHealthy() {}\n\n /**\n * Stops polling and cleans up the iframe\n */\n private shutdown_() {\n this.isClosed_ = true;\n\n if (this.scriptTagHolder) {\n this.scriptTagHolder.close();\n this.scriptTagHolder = null;\n }\n\n //remove the disconnect frame, which will trigger an XHR call to the server to tell it we're leaving.\n if (this.myDisconnFrame) {\n document.body.removeChild(this.myDisconnFrame);\n this.myDisconnFrame = null;\n }\n\n if (this.connectTimeoutTimer_) {\n clearTimeout(this.connectTimeoutTimer_);\n this.connectTimeoutTimer_ = null;\n }\n }\n\n /**\n * Triggered when this transport is closed\n */\n private onClosed_() {\n if (!this.isClosed_) {\n this.log_('Longpoll is closing itself');\n this.shutdown_();\n\n if (this.onDisconnect_) {\n this.onDisconnect_(this.everConnected_);\n this.onDisconnect_ = null;\n }\n }\n }\n\n /**\n * External-facing close handler. RealTime has requested we shut down. Kill our connection and tell the server\n * that we've left.\n */\n close() {\n if (!this.isClosed_) {\n this.log_('Longpoll is being closed.');\n this.shutdown_();\n }\n }\n\n /**\n * Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then\n * broken into chunks (since URLs have a small maximum length).\n * @param data - The JSON data to transmit.\n */\n send(data: {}) {\n const dataStr = stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n\n //first, lets get the base64-encoded data\n const base64data = base64Encode(dataStr);\n\n //We can only fit a certain amount in each URL, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n const dataSegs = splitStringBySize(base64data, MAX_PAYLOAD_SIZE);\n\n //Enqueue each segment for transmission. We assign each chunk a sequential ID and a total number\n //of segments so that we can reassemble the packet on the server.\n for (let i = 0; i < dataSegs.length; i++) {\n this.scriptTagHolder.enqueueSegment(\n this.curSegmentNum,\n dataSegs.length,\n dataSegs[i]\n );\n this.curSegmentNum++;\n }\n }\n\n /**\n * This is how we notify the server that we're leaving.\n * We aren't able to send requests with DHTML on a window close event, but we can\n * trigger XHR requests in some browsers (everything but Opera basically).\n */\n addDisconnectPingFrame(id: string, pw: string) {\n if (isNodeSdk()) {\n return;\n }\n this.myDisconnFrame = document.createElement('iframe');\n const urlParams: { [k: string]: string } = {};\n urlParams[FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM] = 't';\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = id;\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = pw;\n this.myDisconnFrame.src = this.urlFn(urlParams);\n this.myDisconnFrame.style.display = 'none';\n\n document.body.appendChild(this.myDisconnFrame);\n }\n\n /**\n * Used to track the bytes received by this client\n */\n private incrementIncomingBytes_(args: unknown) {\n // TODO: This is an annoying perf hit just to track the number of incoming bytes. Maybe it should be opt-in.\n const bytesReceived = stringify(args).length;\n this.bytesReceived += bytesReceived;\n this.stats_.incrementCounter('bytes_received', bytesReceived);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface IFrameElement extends HTMLIFrameElement {\n doc: Document;\n}\n\n/*********************************************************************************************\n * A wrapper around an iframe that is used as a long-polling script holder.\n *********************************************************************************************/\nexport class FirebaseIFrameScriptHolder {\n //We maintain a count of all of the outstanding requests, because if we have too many active at once it can cause\n //problems in some browsers.\n outstandingRequests = new Set();\n\n //A queue of the pending segments waiting for transmission to the server.\n pendingSegs: Array<{ seg: number; ts: number; d: unknown }> = [];\n\n //A serial number. We use this for two things:\n // 1) A way to ensure the browser doesn't cache responses to polls\n // 2) A way to make the server aware when long-polls arrive in a different order than we started them. The\n // server needs to release both polls in this case or it will cause problems in Opera since Opera can only execute\n // JSONP code in the order it was added to the iframe.\n currentSerial = Math.floor(Math.random() * 100000000);\n\n // This gets set to false when we're \"closing down\" the connection (e.g. we're switching transports but there's still\n // incoming data from the server that we're waiting for).\n sendNewPolls = true;\n\n uniqueCallbackIdentifier: number;\n myIFrame: IFrameElement;\n alive: boolean;\n myID: string;\n myPW: string;\n commandCB: (command: string, ...args: unknown[]) => void;\n onMessageCB: (...args: unknown[]) => void;\n\n /**\n * @param commandCB - The callback to be called when control commands are received from the server.\n * @param onMessageCB - The callback to be triggered when responses arrive from the server.\n * @param onDisconnect - The callback to be triggered when this tag holder is closed\n * @param urlFn - A function that provides the URL of the endpoint to send data to.\n */\n constructor(\n commandCB: (command: string, ...args: unknown[]) => void,\n onMessageCB: (...args: unknown[]) => void,\n public onDisconnect: () => void,\n public urlFn: (a: object) => string\n ) {\n if (!isNodeSdk()) {\n //Each script holder registers a couple of uniquely named callbacks with the window. These are called from the\n //iframes where we put the long-polling script tags. We have two callbacks:\n // 1) Command Callback - Triggered for control issues, like starting a connection.\n // 2) Message Callback - Triggered when new data arrives.\n this.uniqueCallbackIdentifier = LUIDGenerator();\n window[\n FIREBASE_LONGPOLL_COMMAND_CB_NAME + this.uniqueCallbackIdentifier\n ] = commandCB;\n window[FIREBASE_LONGPOLL_DATA_CB_NAME + this.uniqueCallbackIdentifier] =\n onMessageCB;\n\n //Create an iframe for us to add script tags to.\n this.myIFrame = FirebaseIFrameScriptHolder.createIFrame_();\n\n // Set the iframe's contents.\n let script = '';\n // if we set a javascript url, it's IE and we need to set the document domain. The javascript url is sufficient\n // for ie9, but ie8 needs to do it again in the document itself.\n if (\n this.myIFrame.src &&\n this.myIFrame.src.substr(0, 'javascript:'.length) === 'javascript:'\n ) {\n const currentDomain = document.domain;\n script = '';\n }\n const iframeContents = '' + script + '';\n try {\n this.myIFrame.doc.open();\n this.myIFrame.doc.write(iframeContents);\n this.myIFrame.doc.close();\n } catch (e) {\n log('frame writing exception');\n if (e.stack) {\n log(e.stack);\n }\n log(e);\n }\n } else {\n this.commandCB = commandCB;\n this.onMessageCB = onMessageCB;\n }\n }\n\n /**\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\n * actually use.\n */\n private static createIFrame_(): IFrameElement {\n const iframe = document.createElement('iframe') as IFrameElement;\n iframe.style.display = 'none';\n\n // This is necessary in order to initialize the document inside the iframe\n if (document.body) {\n document.body.appendChild(iframe);\n try {\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\n const a = iframe.contentWindow.document;\n if (!a) {\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\n log('No IE domain setting required');\n }\n } catch (e) {\n const domain = document.domain;\n iframe.src =\n \"javascript:void((function(){document.open();document.domain='\" +\n domain +\n \"';document.close();})())\";\n }\n } else {\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\n // never gets hit.\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\n }\n\n // Get the document of the iframe in a browser-specific way.\n if (iframe.contentDocument) {\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\n } else if (iframe.contentWindow) {\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } else if ((iframe as any).document) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iframe.doc = (iframe as any).document; //others?\n }\n\n return iframe;\n }\n\n /**\n * Cancel all outstanding queries and remove the frame.\n */\n close() {\n //Mark this iframe as dead, so no new requests are sent.\n this.alive = false;\n\n if (this.myIFrame) {\n //We have to actually remove all of the html inside this iframe before removing it from the\n //window, or IE will continue loading and executing the script tags we've already added, which\n //can lead to some errors being thrown. Setting textContent seems to be the safest way to do this.\n this.myIFrame.doc.body.textContent = '';\n setTimeout(() => {\n if (this.myIFrame !== null) {\n document.body.removeChild(this.myIFrame);\n this.myIFrame = null;\n }\n }, Math.floor(0));\n }\n\n // Protect from being called recursively.\n const onDisconnect = this.onDisconnect;\n if (onDisconnect) {\n this.onDisconnect = null;\n onDisconnect();\n }\n }\n\n /**\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\n * @param id - The ID of this connection\n * @param pw - The password for this connection\n */\n startLongPoll(id: string, pw: string) {\n this.myID = id;\n this.myPW = pw;\n this.alive = true;\n\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\n while (this.newRequest_()) {}\n }\n\n /**\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\n * too many outstanding requests and we are still alive.\n *\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\n * needed.\n */\n private newRequest_() {\n // We keep one outstanding request open all the time to receive data, but if we need to send data\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\n // close the old request.\n if (\n this.alive &&\n this.sendNewPolls &&\n this.outstandingRequests.size < (this.pendingSegs.length > 0 ? 2 : 1)\n ) {\n //construct our url\n this.currentSerial++;\n const urlParams: { [k: string]: string | number } = {};\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\n let theURL = this.urlFn(urlParams);\n //Now add as much data as we can.\n let curDataString = '';\n let i = 0;\n\n while (this.pendingSegs.length > 0) {\n //first, lets see if the next segment will fit.\n const nextSeg = this.pendingSegs[0];\n if (\n (nextSeg.d as unknown[]).length +\n SEG_HEADER_SIZE +\n curDataString.length <=\n MAX_URL_DATA_SIZE\n ) {\n //great, the segment will fit. Lets append it.\n const theSeg = this.pendingSegs.shift();\n curDataString =\n curDataString +\n '&' +\n FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\n i +\n '=' +\n theSeg.seg +\n '&' +\n FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\n i +\n '=' +\n theSeg.ts +\n '&' +\n FIREBASE_LONGPOLL_DATA_PARAM +\n i +\n '=' +\n theSeg.d;\n i++;\n } else {\n break;\n }\n }\n\n theURL = theURL + curDataString;\n this.addLongPollTag_(theURL, this.currentSerial);\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Queue a packet for transmission to the server.\n * @param segnum - A sequential id for this packet segment used for reassembly\n * @param totalsegs - The total number of segments in this packet\n * @param data - The data for this segment.\n */\n enqueueSegment(segnum: number, totalsegs: number, data: unknown) {\n //add this to the queue of segments to send.\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\n\n //send the data immediately if there isn't already data being transmitted, unless\n //startLongPoll hasn't been called yet.\n if (this.alive) {\n this.newRequest_();\n }\n }\n\n /**\n * Add a script tag for a regular long-poll request.\n * @param url - The URL of the script tag.\n * @param serial - The serial number of the request.\n */\n private addLongPollTag_(url: string, serial: number) {\n //remember that we sent this request.\n this.outstandingRequests.add(serial);\n\n const doNewRequest = () => {\n this.outstandingRequests.delete(serial);\n this.newRequest_();\n };\n\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\n const keepaliveTimeout = setTimeout(\n doNewRequest,\n Math.floor(KEEPALIVE_REQUEST_INTERVAL)\n );\n\n const readyStateCB = () => {\n // Request completed. Cancel the keepalive.\n clearTimeout(keepaliveTimeout);\n\n // Trigger a new request so we can continue receiving data.\n doNewRequest();\n };\n\n this.addTag(url, readyStateCB);\n }\n\n /**\n * Add an arbitrary script tag to the iframe.\n * @param url - The URL for the script tag source.\n * @param loadCB - A callback to be triggered once the script has loaded.\n */\n addTag(url: string, loadCB: () => void) {\n if (isNodeSdk()) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this as any).doNodeLongPoll(url, loadCB);\n } else {\n setTimeout(() => {\n try {\n // if we're already closed, don't add this poll\n if (!this.sendNewPolls) {\n return;\n }\n const newScript = this.myIFrame.doc.createElement('script');\n newScript.type = 'text/javascript';\n newScript.async = true;\n newScript.src = url;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newScript.onload = (newScript as any).onreadystatechange =\n function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rstate = (newScript as any).readyState;\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newScript.onload = (newScript as any).onreadystatechange = null;\n if (newScript.parentNode) {\n newScript.parentNode.removeChild(newScript);\n }\n loadCB();\n }\n };\n newScript.onerror = () => {\n log('Long-poll script failed to load: ' + url);\n this.sendNewPolls = false;\n this.close();\n };\n this.myIFrame.doc.body.appendChild(newScript);\n } catch (e) {\n // TODO: we should make this error visible somehow\n }\n }, Math.floor(1));\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, isNodeSdk, jsonEval, stringify } from '@firebase/util';\n\nimport { RepoInfo, repoInfoConnectionURL } from '../core/RepoInfo';\nimport { StatsCollection } from '../core/stats/StatsCollection';\nimport { statsManagerGetCollection } from '../core/stats/StatsManager';\nimport { PersistentStorage } from '../core/storage/storage';\nimport { logWrapper, splitStringBySize } from '../core/util/util';\nimport { SDK_VERSION } from '../core/version';\n\nimport {\n APPLICATION_ID_PARAM,\n APP_CHECK_TOKEN_PARAM,\n FORGE_DOMAIN_RE,\n FORGE_REF,\n LAST_SESSION_PARAM,\n PROTOCOL_VERSION,\n REFERER_PARAM,\n TRANSPORT_SESSION_PARAM,\n VERSION_PARAM,\n WEBSOCKET\n} from './Constants';\nimport { Transport } from './Transport';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const MozWebSocket: any;\n\nconst WEBSOCKET_MAX_FRAME_SIZE = 16384;\nconst WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\n\nlet WebSocketImpl = null;\nif (typeof MozWebSocket !== 'undefined') {\n WebSocketImpl = MozWebSocket;\n} else if (typeof WebSocket !== 'undefined') {\n WebSocketImpl = WebSocket;\n}\n\nexport function setWebSocketImpl(impl) {\n WebSocketImpl = impl;\n}\n\n/**\n * Create a new websocket connection with the given callbacks.\n */\nexport class WebSocketConnection implements Transport {\n keepaliveTimer: number | null = null;\n frames: string[] | null = null;\n totalFrames = 0;\n bytesSent = 0;\n bytesReceived = 0;\n connURL: string;\n onDisconnect: (a?: boolean) => void;\n onMessage: (msg: {}) => void;\n mySock: WebSocket | null;\n private log_: (...a: unknown[]) => void;\n private stats_: StatsCollection;\n private everConnected_: boolean;\n private isClosed_: boolean;\n private nodeAdmin: boolean;\n\n /**\n * @param connId identifier for this transport\n * @param repoInfo The info for the websocket endpoint.\n * @param applicationId The Firebase App ID for this project.\n * @param appCheckToken The App Check Token for this client.\n * @param authToken The Auth Token for this client.\n * @param transportSessionId Optional transportSessionId if this is connecting\n * to an existing transport session\n * @param lastSessionId Optional lastSessionId if there was a previous\n * connection\n */\n constructor(\n public connId: string,\n repoInfo: RepoInfo,\n private applicationId?: string,\n private appCheckToken?: string,\n private authToken?: string,\n transportSessionId?: string,\n lastSessionId?: string\n ) {\n this.log_ = logWrapper(this.connId);\n this.stats_ = statsManagerGetCollection(repoInfo);\n this.connURL = WebSocketConnection.connectionURL_(\n repoInfo,\n transportSessionId,\n lastSessionId,\n appCheckToken,\n applicationId\n );\n this.nodeAdmin = repoInfo.nodeAdmin;\n }\n\n /**\n * @param repoInfo - The info for the websocket endpoint.\n * @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport\n * session\n * @param lastSessionId - Optional lastSessionId if there was a previous connection\n * @returns connection url\n */\n private static connectionURL_(\n repoInfo: RepoInfo,\n transportSessionId?: string,\n lastSessionId?: string,\n appCheckToken?: string,\n applicationId?: string\n ): string {\n const urlParams: { [k: string]: string } = {};\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\n\n if (\n !isNodeSdk() &&\n typeof location !== 'undefined' &&\n location.hostname &&\n FORGE_DOMAIN_RE.test(location.hostname)\n ) {\n urlParams[REFERER_PARAM] = FORGE_REF;\n }\n if (transportSessionId) {\n urlParams[TRANSPORT_SESSION_PARAM] = transportSessionId;\n }\n if (lastSessionId) {\n urlParams[LAST_SESSION_PARAM] = lastSessionId;\n }\n if (appCheckToken) {\n urlParams[APP_CHECK_TOKEN_PARAM] = appCheckToken;\n }\n if (applicationId) {\n urlParams[APPLICATION_ID_PARAM] = applicationId;\n }\n\n return repoInfoConnectionURL(repoInfo, WEBSOCKET, urlParams);\n }\n\n /**\n * @param onMessage - Callback when messages arrive\n * @param onDisconnect - Callback with connection lost.\n */\n open(onMessage: (msg: {}) => void, onDisconnect: (a?: boolean) => void) {\n this.onDisconnect = onDisconnect;\n this.onMessage = onMessage;\n\n this.log_('Websocket connecting to ' + this.connURL);\n\n this.everConnected_ = false;\n // Assume failure until proven otherwise.\n PersistentStorage.set('previous_websocket_failure', true);\n\n try {\n let options: { [k: string]: object };\n if (isNodeSdk()) {\n const device = this.nodeAdmin ? 'AdminNode' : 'Node';\n // UA Format: Firebase////\n options = {\n headers: {\n 'User-Agent': `Firebase/${PROTOCOL_VERSION}/${SDK_VERSION}/${process.platform}/${device}`,\n 'X-Firebase-GMPID': this.applicationId || ''\n }\n };\n\n // If using Node with admin creds, AppCheck-related checks are unnecessary.\n // Note that we send the credentials here even if they aren't admin credentials, which is\n // not a problem.\n // Note that this header is just used to bypass appcheck, and the token should still be sent\n // through the websocket connection once it is established.\n if (this.authToken) {\n options.headers['Authorization'] = `Bearer ${this.authToken}`;\n }\n if (this.appCheckToken) {\n options.headers['X-Firebase-AppCheck'] = this.appCheckToken;\n }\n\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\n const env = process['env'];\n const proxy =\n this.connURL.indexOf('wss://') === 0\n ? env['HTTPS_PROXY'] || env['https_proxy']\n : env['HTTP_PROXY'] || env['http_proxy'];\n\n if (proxy) {\n options['proxy'] = { origin: proxy };\n }\n }\n this.mySock = new WebSocketImpl(this.connURL, [], options);\n } catch (e) {\n this.log_('Error instantiating WebSocket.');\n const error = e.message || e.data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n return;\n }\n\n this.mySock.onopen = () => {\n this.log_('Websocket connected.');\n this.everConnected_ = true;\n };\n\n this.mySock.onclose = () => {\n this.log_('Websocket connection was disconnected.');\n this.mySock = null;\n this.onClosed_();\n };\n\n this.mySock.onmessage = m => {\n this.handleIncomingFrame(m as {});\n };\n\n this.mySock.onerror = e => {\n this.log_('WebSocket error. Closing connection.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const error = (e as any).message || (e as any).data;\n if (error) {\n this.log_(error);\n }\n this.onClosed_();\n };\n }\n\n /**\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\n */\n start() {}\n\n static forceDisallow_: boolean;\n\n static forceDisallow() {\n WebSocketConnection.forceDisallow_ = true;\n }\n\n static isAvailable(): boolean {\n let isOldAndroid = false;\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\n const oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\n const oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\n isOldAndroid = true;\n }\n }\n }\n\n return (\n !isOldAndroid &&\n WebSocketImpl !== null &&\n !WebSocketConnection.forceDisallow_\n );\n }\n\n /**\n * Number of response before we consider the connection \"healthy.\"\n */\n static responsesRequiredToBeHealthy = 2;\n\n /**\n * Time to wait for the connection te become healthy before giving up.\n */\n static healthyTimeout = 30000;\n\n /**\n * Returns true if we previously failed to connect with this transport.\n */\n static previouslyFailed(): boolean {\n // If our persistent storage is actually only in-memory storage,\n // we default to assuming that it previously failed to be safe.\n return (\n PersistentStorage.isInMemoryStorage ||\n PersistentStorage.get('previous_websocket_failure') === true\n );\n }\n\n markConnectionHealthy() {\n PersistentStorage.remove('previous_websocket_failure');\n }\n\n private appendFrame_(data: string) {\n this.frames.push(data);\n if (this.frames.length === this.totalFrames) {\n const fullMess = this.frames.join('');\n this.frames = null;\n const jsonMess = jsonEval(fullMess) as object;\n\n //handle the message\n this.onMessage(jsonMess);\n }\n }\n\n /**\n * @param frameCount - The number of frames we are expecting from the server\n */\n private handleNewFrameCount_(frameCount: number) {\n this.totalFrames = frameCount;\n this.frames = [];\n }\n\n /**\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\n * @returns Any remaining data to be process, or null if there is none\n */\n private extractFrameCount_(data: string): string | null {\n assert(this.frames === null, 'We already have a frame buffer');\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\n if (data.length <= 6) {\n const frameCount = Number(data);\n if (!isNaN(frameCount)) {\n this.handleNewFrameCount_(frameCount);\n return null;\n }\n }\n this.handleNewFrameCount_(1);\n return data;\n }\n\n /**\n * Process a websocket frame that has arrived from the server.\n * @param mess - The frame data\n */\n handleIncomingFrame(mess: { [k: string]: unknown }) {\n if (this.mySock === null) {\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\n }\n const data = mess['data'] as string;\n this.bytesReceived += data.length;\n this.stats_.incrementCounter('bytes_received', data.length);\n\n this.resetKeepAlive();\n\n if (this.frames !== null) {\n // we're buffering\n this.appendFrame_(data);\n } else {\n // try to parse out a frame count, otherwise, assume 1 and process it\n const remainingData = this.extractFrameCount_(data);\n if (remainingData !== null) {\n this.appendFrame_(remainingData);\n }\n }\n }\n\n /**\n * Send a message to the server\n * @param data - The JSON object to transmit\n */\n send(data: {}) {\n this.resetKeepAlive();\n\n const dataStr = stringify(data);\n this.bytesSent += dataStr.length;\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\n\n //We can only fit a certain amount in each websocket frame, so we need to split this request\n //up into multiple pieces if it doesn't fit in one request.\n\n const dataSegs = splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\n\n //Send the length header\n if (dataSegs.length > 1) {\n this.sendString_(String(dataSegs.length));\n }\n\n //Send the actual data in segments.\n for (let i = 0; i < dataSegs.length; i++) {\n this.sendString_(dataSegs[i]);\n }\n }\n\n private shutdown_() {\n this.isClosed_ = true;\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = null;\n }\n\n if (this.mySock) {\n this.mySock.close();\n this.mySock = null;\n }\n }\n\n private onClosed_() {\n if (!this.isClosed_) {\n this.log_('WebSocket is closing itself');\n this.shutdown_();\n\n // since this is an internal close, trigger the close listener\n if (this.onDisconnect) {\n this.onDisconnect(this.everConnected_);\n this.onDisconnect = null;\n }\n }\n }\n\n /**\n * External-facing close handler.\n * Close the websocket and kill the connection.\n */\n close() {\n if (!this.isClosed_) {\n this.log_('WebSocket is being closed');\n this.shutdown_();\n }\n }\n\n /**\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\n * the last activity.\n */\n resetKeepAlive() {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = setInterval(() => {\n //If there has been no websocket activity for a while, send a no-op\n if (this.mySock) {\n this.sendString_('0');\n }\n this.resetKeepAlive();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL)) as any;\n }\n\n /**\n * Send a string over the websocket.\n *\n * @param str - String to send.\n */\n private sendString_(str: string) {\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\n // calls for some unknown reason. We treat these as an error and disconnect.\n // See https://app.asana.com/0/58926111402292/68021340250410\n try {\n this.mySock.send(str);\n } catch (e) {\n this.log_(\n 'Exception thrown from WebSocket.send():',\n e.message || e.data,\n 'Closing connection.'\n );\n setTimeout(this.onClosed_.bind(this), 0);\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RepoInfo } from '../core/RepoInfo';\nimport { warn } from '../core/util/util';\n\nimport { BrowserPollConnection } from './BrowserPollConnection';\nimport { TransportConstructor } from './Transport';\nimport { WebSocketConnection } from './WebSocketConnection';\n\n/**\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\n * lifecycle.\n *\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\n * they are available.\n */\nexport class TransportManager {\n private transports_: TransportConstructor[];\n\n // Keeps track of whether the TransportManager has already chosen a transport to use\n static globalTransportInitialized_ = false;\n\n static get ALL_TRANSPORTS() {\n return [BrowserPollConnection, WebSocketConnection];\n }\n\n /**\n * Returns whether transport has been selected to ensure WebSocketConnection or BrowserPollConnection are not called after\n * TransportManager has already set up transports_\n */\n static get IS_TRANSPORT_INITIALIZED() {\n return this.globalTransportInitialized_;\n }\n\n /**\n * @param repoInfo - Metadata around the namespace we're connecting to\n */\n constructor(repoInfo: RepoInfo) {\n this.initTransports_(repoInfo);\n }\n\n private initTransports_(repoInfo: RepoInfo) {\n const isWebSocketsAvailable: boolean =\n WebSocketConnection && WebSocketConnection['isAvailable']();\n let isSkipPollConnection =\n isWebSocketsAvailable && !WebSocketConnection.previouslyFailed();\n\n if (repoInfo.webSocketOnly) {\n if (!isWebSocketsAvailable) {\n warn(\n \"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\"\n );\n }\n\n isSkipPollConnection = true;\n }\n\n if (isSkipPollConnection) {\n this.transports_ = [WebSocketConnection];\n } else {\n const transports = (this.transports_ = [] as TransportConstructor[]);\n for (const transport of TransportManager.ALL_TRANSPORTS) {\n if (transport && transport['isAvailable']()) {\n transports.push(transport);\n }\n }\n TransportManager.globalTransportInitialized_ = true;\n }\n }\n\n /**\n * @returns The constructor for the initial transport to use\n */\n initialTransport(): TransportConstructor {\n if (this.transports_.length > 0) {\n return this.transports_[0];\n } else {\n throw new Error('No transports available');\n }\n }\n\n /**\n * @returns The constructor for the next transport, or null\n */\n upgradeTransport(): TransportConstructor | null {\n if (this.transports_.length > 1) {\n return this.transports_[1];\n } else {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RepoInfo } from '../core/RepoInfo';\nimport { PersistentStorage } from '../core/storage/storage';\nimport { Indexable } from '../core/util/misc';\nimport {\n error,\n logWrapper,\n requireKey,\n setTimeoutNonBlocking,\n warn\n} from '../core/util/util';\n\nimport { PROTOCOL_VERSION } from './Constants';\nimport { Transport, TransportConstructor } from './Transport';\nimport { TransportManager } from './TransportManager';\n\n// Abort upgrade attempt if it takes longer than 60s.\nconst UPGRADE_TIMEOUT = 60000;\n\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\nconst DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\n\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\n// but we've sent/received enough bytes, we don't cancel the connection.\nconst BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\nconst BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\n\nconst enum RealtimeState {\n CONNECTING,\n CONNECTED,\n DISCONNECTED\n}\n\nconst MESSAGE_TYPE = 't';\nconst MESSAGE_DATA = 'd';\nconst CONTROL_SHUTDOWN = 's';\nconst CONTROL_RESET = 'r';\nconst CONTROL_ERROR = 'e';\nconst CONTROL_PONG = 'o';\nconst SWITCH_ACK = 'a';\nconst END_TRANSMISSION = 'n';\nconst PING = 'p';\n\nconst SERVER_HELLO = 'h';\n\n/**\n * Creates a new real-time connection to the server using whichever method works\n * best in the current browser.\n */\nexport class Connection {\n connectionCount = 0;\n pendingDataMessages: unknown[] = [];\n sessionId: string;\n\n private conn_: Transport;\n private healthyTimeout_: number;\n private isHealthy_: boolean;\n private log_: (...args: unknown[]) => void;\n private primaryResponsesRequired_: number;\n private rx_: Transport;\n private secondaryConn_: Transport;\n private secondaryResponsesRequired_: number;\n private state_ = RealtimeState.CONNECTING;\n private transportManager_: TransportManager;\n private tx_: Transport;\n\n /**\n * @param id - an id for this connection\n * @param repoInfo_ - the info for the endpoint to connect to\n * @param applicationId_ - the Firebase App ID for this project\n * @param appCheckToken_ - The App Check Token for this device.\n * @param authToken_ - The auth token for this session.\n * @param onMessage_ - the callback to be triggered when a server-push message arrives\n * @param onReady_ - the callback to be triggered when this connection is ready to send messages.\n * @param onDisconnect_ - the callback to be triggered when a connection was lost\n * @param onKill_ - the callback to be triggered when this connection has permanently shut down.\n * @param lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\n */\n constructor(\n public id: string,\n private repoInfo_: RepoInfo,\n private applicationId_: string | undefined,\n private appCheckToken_: string | undefined,\n private authToken_: string | undefined,\n private onMessage_: (a: {}) => void,\n private onReady_: (a: number, b: string) => void,\n private onDisconnect_: () => void,\n private onKill_: (a: string) => void,\n public lastSessionId?: string\n ) {\n this.log_ = logWrapper('c:' + this.id + ':');\n this.transportManager_ = new TransportManager(repoInfo_);\n this.log_('Connection created');\n this.start_();\n }\n\n /**\n * Starts a connection attempt\n */\n private start_(): void {\n const conn = this.transportManager_.initialTransport();\n this.conn_ = new conn(\n this.nextTransportId_(),\n this.repoInfo_,\n this.applicationId_,\n this.appCheckToken_,\n this.authToken_,\n null,\n this.lastSessionId\n );\n\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\n\n const onMessageReceived = this.connReceiver_(this.conn_);\n const onConnectionLost = this.disconnReceiver_(this.conn_);\n this.tx_ = this.conn_;\n this.rx_ = this.conn_;\n this.secondaryConn_ = null;\n this.isHealthy_ = false;\n\n /*\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\n * still have the context of your originating frame.\n */\n setTimeout(() => {\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\n this.conn_ && this.conn_.open(onMessageReceived, onConnectionLost);\n }, Math.floor(0));\n\n const healthyTimeoutMS = conn['healthyTimeout'] || 0;\n if (healthyTimeoutMS > 0) {\n this.healthyTimeout_ = setTimeoutNonBlocking(() => {\n this.healthyTimeout_ = null;\n if (!this.isHealthy_) {\n if (\n this.conn_ &&\n this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE\n ) {\n this.log_(\n 'Connection exceeded healthy timeout but has received ' +\n this.conn_.bytesReceived +\n ' bytes. Marking connection healthy.'\n );\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n } else if (\n this.conn_ &&\n this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE\n ) {\n this.log_(\n 'Connection exceeded healthy timeout but has sent ' +\n this.conn_.bytesSent +\n ' bytes. Leaving connection alive.'\n );\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\n // the server.\n } else {\n this.log_('Closing unhealthy connection after timeout.');\n this.close();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(healthyTimeoutMS)) as any;\n }\n }\n\n private nextTransportId_(): string {\n return 'c:' + this.id + ':' + this.connectionCount++;\n }\n\n private disconnReceiver_(conn) {\n return everConnected => {\n if (conn === this.conn_) {\n this.onConnectionLost_(everConnected);\n } else if (conn === this.secondaryConn_) {\n this.log_('Secondary connection lost.');\n this.onSecondaryConnectionLost_();\n } else {\n this.log_('closing an old connection');\n }\n };\n }\n\n private connReceiver_(conn: Transport) {\n return (message: Indexable) => {\n if (this.state_ !== RealtimeState.DISCONNECTED) {\n if (conn === this.rx_) {\n this.onPrimaryMessageReceived_(message);\n } else if (conn === this.secondaryConn_) {\n this.onSecondaryMessageReceived_(message);\n } else {\n this.log_('message on old connection');\n }\n }\n };\n }\n\n /**\n * @param dataMsg - An arbitrary data message to be sent to the server\n */\n sendRequest(dataMsg: object) {\n // wrap in a data message envelope and send it on\n const msg = { t: 'd', d: dataMsg };\n this.sendData_(msg);\n }\n\n tryCleanupConnection() {\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\n this.log_(\n 'cleaning up and promoting a connection: ' + this.secondaryConn_.connId\n );\n this.conn_ = this.secondaryConn_;\n this.secondaryConn_ = null;\n // the server will shutdown the old connection\n }\n }\n\n private onSecondaryControl_(controlData: { [k: string]: unknown }) {\n if (MESSAGE_TYPE in controlData) {\n const cmd = controlData[MESSAGE_TYPE] as string;\n if (cmd === SWITCH_ACK) {\n this.upgradeIfSecondaryHealthy_();\n } else if (cmd === CONTROL_RESET) {\n // Most likely the session wasn't valid. Abandon the switch attempt\n this.log_('Got a reset on secondary, closing it');\n this.secondaryConn_.close();\n // If we were already using this connection for something, than we need to fully close\n if (\n this.tx_ === this.secondaryConn_ ||\n this.rx_ === this.secondaryConn_\n ) {\n this.close();\n }\n } else if (cmd === CONTROL_PONG) {\n this.log_('got pong on secondary.');\n this.secondaryResponsesRequired_--;\n this.upgradeIfSecondaryHealthy_();\n }\n }\n }\n\n private onSecondaryMessageReceived_(parsedData: Indexable) {\n const layer: string = requireKey('t', parsedData) as string;\n const data: unknown = requireKey('d', parsedData);\n if (layer === 'c') {\n this.onSecondaryControl_(data as Indexable);\n } else if (layer === 'd') {\n // got a data message, but we're still second connection. Need to buffer it up\n this.pendingDataMessages.push(data);\n } else {\n throw new Error('Unknown protocol layer: ' + layer);\n }\n }\n\n private upgradeIfSecondaryHealthy_() {\n if (this.secondaryResponsesRequired_ <= 0) {\n this.log_('Secondary connection is healthy.');\n this.isHealthy_ = true;\n this.secondaryConn_.markConnectionHealthy();\n this.proceedWithUpgrade_();\n } else {\n // Send a ping to make sure the connection is healthy.\n this.log_('sending ping on secondary.');\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\n }\n }\n\n private proceedWithUpgrade_() {\n // tell this connection to consider itself open\n this.secondaryConn_.start();\n // send ack\n this.log_('sending client ack on secondary');\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\n\n // send end packet on primary transport, switch to sending on this one\n // can receive on this one, buffer responses until end received on primary transport\n this.log_('Ending transmission on primary');\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\n this.tx_ = this.secondaryConn_;\n\n this.tryCleanupConnection();\n }\n\n private onPrimaryMessageReceived_(parsedData: { [k: string]: unknown }) {\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\n const layer: string = requireKey('t', parsedData) as string;\n const data: unknown = requireKey('d', parsedData);\n if (layer === 'c') {\n this.onControl_(data as { [k: string]: unknown });\n } else if (layer === 'd') {\n this.onDataMessage_(data);\n }\n }\n\n private onDataMessage_(message: unknown) {\n this.onPrimaryResponse_();\n\n // We don't do anything with data messages, just kick them up a level\n this.onMessage_(message);\n }\n\n private onPrimaryResponse_() {\n if (!this.isHealthy_) {\n this.primaryResponsesRequired_--;\n if (this.primaryResponsesRequired_ <= 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n this.conn_.markConnectionHealthy();\n }\n }\n }\n\n private onControl_(controlData: { [k: string]: unknown }) {\n const cmd: string = requireKey(MESSAGE_TYPE, controlData) as string;\n if (MESSAGE_DATA in controlData) {\n const payload = controlData[MESSAGE_DATA];\n if (cmd === SERVER_HELLO) {\n const handshakePayload = {\n ...(payload as {\n ts: number;\n v: string;\n h: string;\n s: string;\n })\n };\n if (this.repoInfo_.isUsingEmulator) {\n // Upon connecting, the emulator will pass the hostname that it's aware of, but we prefer the user's set hostname via `connectDatabaseEmulator` over what the emulator passes.\n handshakePayload.h = this.repoInfo_.host;\n }\n this.onHandshake_(handshakePayload);\n } else if (cmd === END_TRANSMISSION) {\n this.log_('recvd end transmission on primary');\n this.rx_ = this.secondaryConn_;\n for (let i = 0; i < this.pendingDataMessages.length; ++i) {\n this.onDataMessage_(this.pendingDataMessages[i]);\n }\n this.pendingDataMessages = [];\n this.tryCleanupConnection();\n } else if (cmd === CONTROL_SHUTDOWN) {\n // This was previously the 'onKill' callback passed to the lower-level connection\n // payload in this case is the reason for the shutdown. Generally a human-readable error\n this.onConnectionShutdown_(payload as string);\n } else if (cmd === CONTROL_RESET) {\n // payload in this case is the host we should contact\n this.onReset_(payload as string);\n } else if (cmd === CONTROL_ERROR) {\n error('Server Error: ' + payload);\n } else if (cmd === CONTROL_PONG) {\n this.log_('got pong on primary.');\n this.onPrimaryResponse_();\n this.sendPingOnPrimaryIfNecessary_();\n } else {\n error('Unknown control packet command: ' + cmd);\n }\n }\n }\n\n /**\n * @param handshake - The handshake data returned from the server\n */\n private onHandshake_(handshake: {\n ts: number;\n v: string;\n h: string;\n s: string;\n }): void {\n const timestamp = handshake.ts;\n const version = handshake.v;\n const host = handshake.h;\n this.sessionId = handshake.s;\n this.repoInfo_.host = host;\n // if we've already closed the connection, then don't bother trying to progress further\n if (this.state_ === RealtimeState.CONNECTING) {\n this.conn_.start();\n this.onConnectionEstablished_(this.conn_, timestamp);\n if (PROTOCOL_VERSION !== version) {\n warn('Protocol version mismatch detected');\n }\n // TODO: do we want to upgrade? when? maybe a delay?\n this.tryStartUpgrade_();\n }\n }\n\n private tryStartUpgrade_() {\n const conn = this.transportManager_.upgradeTransport();\n if (conn) {\n this.startUpgrade_(conn);\n }\n }\n\n private startUpgrade_(conn: TransportConstructor) {\n this.secondaryConn_ = new conn(\n this.nextTransportId_(),\n this.repoInfo_,\n this.applicationId_,\n this.appCheckToken_,\n this.authToken_,\n this.sessionId\n );\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\n // can consider the transport healthy.\n this.secondaryResponsesRequired_ =\n conn['responsesRequiredToBeHealthy'] || 0;\n\n const onMessage = this.connReceiver_(this.secondaryConn_);\n const onDisconnect = this.disconnReceiver_(this.secondaryConn_);\n this.secondaryConn_.open(onMessage, onDisconnect);\n\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\n setTimeoutNonBlocking(() => {\n if (this.secondaryConn_) {\n this.log_('Timed out trying to upgrade.');\n this.secondaryConn_.close();\n }\n }, Math.floor(UPGRADE_TIMEOUT));\n }\n\n private onReset_(host: string) {\n this.log_('Reset packet received. New host: ' + host);\n this.repoInfo_.host = host;\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\n // We don't currently support resets after the connection has already been established\n if (this.state_ === RealtimeState.CONNECTED) {\n this.close();\n } else {\n // Close whatever connections we have open and start again.\n this.closeConnections_();\n this.start_();\n }\n }\n\n private onConnectionEstablished_(conn: Transport, timestamp: number) {\n this.log_('Realtime connection established.');\n this.conn_ = conn;\n this.state_ = RealtimeState.CONNECTED;\n\n if (this.onReady_) {\n this.onReady_(timestamp, this.sessionId);\n this.onReady_ = null;\n }\n\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\n // send some pings.\n if (this.primaryResponsesRequired_ === 0) {\n this.log_('Primary connection is healthy.');\n this.isHealthy_ = true;\n } else {\n setTimeoutNonBlocking(() => {\n this.sendPingOnPrimaryIfNecessary_();\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\n }\n }\n\n private sendPingOnPrimaryIfNecessary_() {\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\n if (!this.isHealthy_ && this.state_ === RealtimeState.CONNECTED) {\n this.log_('sending ping on primary.');\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\n }\n }\n\n private onSecondaryConnectionLost_() {\n const conn = this.secondaryConn_;\n this.secondaryConn_ = null;\n if (this.tx_ === conn || this.rx_ === conn) {\n // we are relying on this connection already in some capacity. Therefore, a failure is real\n this.close();\n }\n }\n\n /**\n * @param everConnected - Whether or not the connection ever reached a server. Used to determine if\n * we should flush the host cache\n */\n private onConnectionLost_(everConnected: boolean) {\n this.conn_ = null;\n\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\n if (!everConnected && this.state_ === RealtimeState.CONNECTING) {\n this.log_('Realtime connection failed.');\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\n if (this.repoInfo_.isCacheableHost()) {\n PersistentStorage.remove('host:' + this.repoInfo_.host);\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\n this.repoInfo_.internalHost = this.repoInfo_.host;\n }\n } else if (this.state_ === RealtimeState.CONNECTED) {\n this.log_('Realtime connection lost.');\n }\n\n this.close();\n }\n\n private onConnectionShutdown_(reason: string) {\n this.log_('Connection shutdown command received. Shutting down...');\n\n if (this.onKill_) {\n this.onKill_(reason);\n this.onKill_ = null;\n }\n\n // We intentionally don't want to fire onDisconnect (kill is a different case),\n // so clear the callback.\n this.onDisconnect_ = null;\n\n this.close();\n }\n\n private sendData_(data: object) {\n if (this.state_ !== RealtimeState.CONNECTED) {\n throw 'Connection is not connected';\n } else {\n this.tx_.send(data);\n }\n }\n\n /**\n * Cleans up this connection, calling the appropriate callbacks\n */\n close() {\n if (this.state_ !== RealtimeState.DISCONNECTED) {\n this.log_('Closing realtime connection.');\n this.state_ = RealtimeState.DISCONNECTED;\n\n this.closeConnections_();\n\n if (this.onDisconnect_) {\n this.onDisconnect_();\n this.onDisconnect_ = null;\n }\n }\n }\n\n private closeConnections_() {\n this.log_('Shutting down all connections');\n if (this.conn_) {\n this.conn_.close();\n this.conn_ = null;\n }\n\n if (this.secondaryConn_) {\n this.secondaryConn_.close();\n this.secondaryConn_ = null;\n }\n\n if (this.healthyTimeout_) {\n clearTimeout(this.healthyTimeout_);\n this.healthyTimeout_ = null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { QueryContext } from './view/EventRegistration';\n\n/**\n * Interface defining the set of actions that can be performed against the Firebase server\n * (basically corresponds to our wire protocol).\n *\n * @interface\n */\nexport abstract class ServerActions {\n abstract listen(\n query: QueryContext,\n currentHashFn: () => string,\n tag: number | null,\n onComplete: (a: string, b: unknown) => void\n ): void;\n\n /**\n * Remove a listen.\n */\n abstract unlisten(query: QueryContext, tag: number | null): void;\n\n /**\n * Get the server value satisfying this query.\n */\n abstract get(query: QueryContext): Promise;\n\n put(\n pathString: string,\n data: unknown,\n onComplete?: (a: string, b: string) => void,\n hash?: string\n ) {}\n\n merge(\n pathString: string,\n data: unknown,\n onComplete: (a: string, b: string | null) => void,\n hash?: string\n ) {}\n\n /**\n * Refreshes the auth token for the current connection.\n * @param token - The authentication token\n */\n refreshAuthToken(token: string) {}\n\n /**\n * Refreshes the app check token for the current connection.\n * @param token The app check token\n */\n refreshAppCheckToken(token: string) {}\n\n onDisconnectPut(\n pathString: string,\n data: unknown,\n onComplete?: (a: string, b: string) => void\n ) {}\n\n onDisconnectMerge(\n pathString: string,\n data: unknown,\n onComplete?: (a: string, b: string) => void\n ) {}\n\n onDisconnectCancel(\n pathString: string,\n onComplete?: (a: string, b: string) => void\n ) {}\n\n reportStats(stats: { [k: string]: unknown }) {}\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\n/**\n * Base class to be used if you want to emit events. Call the constructor with\n * the set of allowed event names.\n */\nexport abstract class EventEmitter {\n private listeners_: {\n [eventType: string]: Array<{\n callback(...args: unknown[]): void;\n context: unknown;\n }>;\n } = {};\n\n constructor(private allowedEvents_: string[]) {\n assert(\n Array.isArray(allowedEvents_) && allowedEvents_.length > 0,\n 'Requires a non-empty array'\n );\n }\n\n /**\n * To be overridden by derived classes in order to fire an initial event when\n * somebody subscribes for data.\n *\n * @returns {Array.<*>} Array of parameters to trigger initial event with.\n */\n abstract getInitialEvent(eventType: string): unknown[];\n\n /**\n * To be called by derived classes to trigger events.\n */\n protected trigger(eventType: string, ...varArgs: unknown[]) {\n if (Array.isArray(this.listeners_[eventType])) {\n // Clone the list, since callbacks could add/remove listeners.\n const listeners = [...this.listeners_[eventType]];\n\n for (let i = 0; i < listeners.length; i++) {\n listeners[i].callback.apply(listeners[i].context, varArgs);\n }\n }\n }\n\n on(eventType: string, callback: (a: unknown) => void, context: unknown) {\n this.validateEventType_(eventType);\n this.listeners_[eventType] = this.listeners_[eventType] || [];\n this.listeners_[eventType].push({ callback, context });\n\n const eventData = this.getInitialEvent(eventType);\n if (eventData) {\n callback.apply(context, eventData);\n }\n }\n\n off(eventType: string, callback: (a: unknown) => void, context: unknown) {\n this.validateEventType_(eventType);\n const listeners = this.listeners_[eventType] || [];\n for (let i = 0; i < listeners.length; i++) {\n if (\n listeners[i].callback === callback &&\n (!context || context === listeners[i].context)\n ) {\n listeners.splice(i, 1);\n return;\n }\n }\n }\n\n private validateEventType_(eventType: string) {\n assert(\n this.allowedEvents_.find(et => {\n return et === eventType;\n }),\n 'Unknown event: ' + eventType\n );\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, isMobileCordova } from '@firebase/util';\n\nimport { EventEmitter } from './EventEmitter';\n\n/**\n * Monitors online state (as reported by window.online/offline events).\n *\n * The expectation is that this could have many false positives (thinks we are online\n * when we're not), but no false negatives. So we can safely use it to determine when\n * we definitely cannot reach the internet.\n */\nexport class OnlineMonitor extends EventEmitter {\n private online_ = true;\n\n static getInstance() {\n return new OnlineMonitor();\n }\n\n constructor() {\n super(['online']);\n\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\n // It would seem that the 'online' event does not always fire consistently. So we disable it\n // for Cordova.\n if (\n typeof window !== 'undefined' &&\n typeof window.addEventListener !== 'undefined' &&\n !isMobileCordova()\n ) {\n window.addEventListener(\n 'online',\n () => {\n if (!this.online_) {\n this.online_ = true;\n this.trigger('online', true);\n }\n },\n false\n );\n\n window.addEventListener(\n 'offline',\n () => {\n if (this.online_) {\n this.online_ = false;\n this.trigger('online', false);\n }\n },\n false\n );\n }\n }\n\n getInitialEvent(eventType: string): boolean[] {\n assert(eventType === 'online', 'Unknown event type: ' + eventType);\n return [this.online_];\n }\n\n currentlyOnline(): boolean {\n return this.online_;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringLength } from '@firebase/util';\n\nimport { nameCompare } from './util';\n\n/** Maximum key depth. */\nconst MAX_PATH_DEPTH = 32;\n\n/** Maximum number of (UTF8) bytes in a Firebase path. */\nconst MAX_PATH_LENGTH_BYTES = 768;\n\n/**\n * An immutable object representing a parsed path. It's immutable so that you\n * can pass them around to other functions without worrying about them changing\n * it.\n */\n\nexport class Path {\n pieces_: string[];\n pieceNum_: number;\n\n /**\n * @param pathOrString - Path string to parse, or another path, or the raw\n * tokens array\n */\n constructor(pathOrString: string | string[], pieceNum?: number) {\n if (pieceNum === void 0) {\n this.pieces_ = (pathOrString as string).split('/');\n\n // Remove empty pieces.\n let copyTo = 0;\n for (let i = 0; i < this.pieces_.length; i++) {\n if (this.pieces_[i].length > 0) {\n this.pieces_[copyTo] = this.pieces_[i];\n copyTo++;\n }\n }\n this.pieces_.length = copyTo;\n\n this.pieceNum_ = 0;\n } else {\n this.pieces_ = pathOrString as string[];\n this.pieceNum_ = pieceNum;\n }\n }\n\n toString(): string {\n let pathString = '';\n for (let i = this.pieceNum_; i < this.pieces_.length; i++) {\n if (this.pieces_[i] !== '') {\n pathString += '/' + this.pieces_[i];\n }\n }\n\n return pathString || '/';\n }\n}\n\nexport function newEmptyPath(): Path {\n return new Path('');\n}\n\nexport function pathGetFront(path: Path): string | null {\n if (path.pieceNum_ >= path.pieces_.length) {\n return null;\n }\n\n return path.pieces_[path.pieceNum_];\n}\n\n/**\n * @returns The number of segments in this path\n */\nexport function pathGetLength(path: Path): number {\n return path.pieces_.length - path.pieceNum_;\n}\n\nexport function pathPopFront(path: Path): Path {\n let pieceNum = path.pieceNum_;\n if (pieceNum < path.pieces_.length) {\n pieceNum++;\n }\n return new Path(path.pieces_, pieceNum);\n}\n\nexport function pathGetBack(path: Path): string | null {\n if (path.pieceNum_ < path.pieces_.length) {\n return path.pieces_[path.pieces_.length - 1];\n }\n\n return null;\n}\n\nexport function pathToUrlEncodedString(path: Path): string {\n let pathString = '';\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\n if (path.pieces_[i] !== '') {\n pathString += '/' + encodeURIComponent(String(path.pieces_[i]));\n }\n }\n\n return pathString || '/';\n}\n\n/**\n * Shallow copy of the parts of the path.\n *\n */\nexport function pathSlice(path: Path, begin: number = 0): string[] {\n return path.pieces_.slice(path.pieceNum_ + begin);\n}\n\nexport function pathParent(path: Path): Path | null {\n if (path.pieceNum_ >= path.pieces_.length) {\n return null;\n }\n\n const pieces = [];\n for (let i = path.pieceNum_; i < path.pieces_.length - 1; i++) {\n pieces.push(path.pieces_[i]);\n }\n\n return new Path(pieces, 0);\n}\n\nexport function pathChild(path: Path, childPathObj: string | Path): Path {\n const pieces = [];\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\n pieces.push(path.pieces_[i]);\n }\n\n if (childPathObj instanceof Path) {\n for (let i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\n pieces.push(childPathObj.pieces_[i]);\n }\n } else {\n const childPieces = childPathObj.split('/');\n for (let i = 0; i < childPieces.length; i++) {\n if (childPieces[i].length > 0) {\n pieces.push(childPieces[i]);\n }\n }\n }\n\n return new Path(pieces, 0);\n}\n\n/**\n * @returns True if there are no segments in this path\n */\nexport function pathIsEmpty(path: Path): boolean {\n return path.pieceNum_ >= path.pieces_.length;\n}\n\n/**\n * @returns The path from outerPath to innerPath\n */\nexport function newRelativePath(outerPath: Path, innerPath: Path): Path {\n const outer = pathGetFront(outerPath),\n inner = pathGetFront(innerPath);\n if (outer === null) {\n return innerPath;\n } else if (outer === inner) {\n return newRelativePath(pathPopFront(outerPath), pathPopFront(innerPath));\n } else {\n throw new Error(\n 'INTERNAL ERROR: innerPath (' +\n innerPath +\n ') is not within ' +\n 'outerPath (' +\n outerPath +\n ')'\n );\n }\n}\n\n/**\n * @returns -1, 0, 1 if left is less, equal, or greater than the right.\n */\nexport function pathCompare(left: Path, right: Path): number {\n const leftKeys = pathSlice(left, 0);\n const rightKeys = pathSlice(right, 0);\n for (let i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\n const cmp = nameCompare(leftKeys[i], rightKeys[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n if (leftKeys.length === rightKeys.length) {\n return 0;\n }\n return leftKeys.length < rightKeys.length ? -1 : 1;\n}\n\n/**\n * @returns true if paths are the same.\n */\nexport function pathEquals(path: Path, other: Path): boolean {\n if (pathGetLength(path) !== pathGetLength(other)) {\n return false;\n }\n\n for (\n let i = path.pieceNum_, j = other.pieceNum_;\n i <= path.pieces_.length;\n i++, j++\n ) {\n if (path.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * @returns True if this path is a parent of (or the same as) other\n */\nexport function pathContains(path: Path, other: Path): boolean {\n let i = path.pieceNum_;\n let j = other.pieceNum_;\n if (pathGetLength(path) > pathGetLength(other)) {\n return false;\n }\n while (i < path.pieces_.length) {\n if (path.pieces_[i] !== other.pieces_[j]) {\n return false;\n }\n ++i;\n ++j;\n }\n return true;\n}\n\n/**\n * Dynamic (mutable) path used to count path lengths.\n *\n * This class is used to efficiently check paths for valid\n * length (in UTF8 bytes) and depth (used in path validation).\n *\n * Throws Error exception if path is ever invalid.\n *\n * The definition of a path always begins with '/'.\n */\nexport class ValidationPath {\n parts_: string[];\n /** Initialize to number of '/' chars needed in path. */\n byteLength_: number;\n\n /**\n * @param path - Initial Path.\n * @param errorPrefix_ - Prefix for any error messages.\n */\n constructor(path: Path, public errorPrefix_: string) {\n this.parts_ = pathSlice(path, 0);\n /** Initialize to number of '/' chars needed in path. */\n this.byteLength_ = Math.max(1, this.parts_.length);\n\n for (let i = 0; i < this.parts_.length; i++) {\n this.byteLength_ += stringLength(this.parts_[i]);\n }\n validationPathCheckValid(this);\n }\n}\n\nexport function validationPathPush(\n validationPath: ValidationPath,\n child: string\n): void {\n // Count the needed '/'\n if (validationPath.parts_.length > 0) {\n validationPath.byteLength_ += 1;\n }\n validationPath.parts_.push(child);\n validationPath.byteLength_ += stringLength(child);\n validationPathCheckValid(validationPath);\n}\n\nexport function validationPathPop(validationPath: ValidationPath): void {\n const last = validationPath.parts_.pop();\n validationPath.byteLength_ -= stringLength(last);\n // Un-count the previous '/'\n if (validationPath.parts_.length > 0) {\n validationPath.byteLength_ -= 1;\n }\n}\n\nfunction validationPathCheckValid(validationPath: ValidationPath): void {\n if (validationPath.byteLength_ > MAX_PATH_LENGTH_BYTES) {\n throw new Error(\n validationPath.errorPrefix_ +\n 'has a key path longer than ' +\n MAX_PATH_LENGTH_BYTES +\n ' bytes (' +\n validationPath.byteLength_ +\n ').'\n );\n }\n if (validationPath.parts_.length > MAX_PATH_DEPTH) {\n throw new Error(\n validationPath.errorPrefix_ +\n 'path specified exceeds the maximum depth that can be written (' +\n MAX_PATH_DEPTH +\n ') or object contains a cycle ' +\n validationPathToErrorString(validationPath)\n );\n }\n}\n\n/**\n * String for use in error messages - uses '.' notation for path.\n */\nexport function validationPathToErrorString(\n validationPath: ValidationPath\n): string {\n if (validationPath.parts_.length === 0) {\n return '';\n }\n return \"in property '\" + validationPath.parts_.join('.') + \"'\";\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { EventEmitter } from './EventEmitter';\n\ndeclare const document: Document;\n\nexport class VisibilityMonitor extends EventEmitter {\n private visible_: boolean;\n\n static getInstance() {\n return new VisibilityMonitor();\n }\n\n constructor() {\n super(['visible']);\n let hidden: string;\n let visibilityChange: string;\n if (\n typeof document !== 'undefined' &&\n typeof document.addEventListener !== 'undefined'\n ) {\n if (typeof document['hidden'] !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n visibilityChange = 'visibilitychange';\n hidden = 'hidden';\n } else if (typeof document['mozHidden'] !== 'undefined') {\n visibilityChange = 'mozvisibilitychange';\n hidden = 'mozHidden';\n } else if (typeof document['msHidden'] !== 'undefined') {\n visibilityChange = 'msvisibilitychange';\n hidden = 'msHidden';\n } else if (typeof document['webkitHidden'] !== 'undefined') {\n visibilityChange = 'webkitvisibilitychange';\n hidden = 'webkitHidden';\n }\n }\n\n // Initially, we always assume we are visible. This ensures that in browsers\n // without page visibility support or in cases where we are never visible\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\n // reconnects\n this.visible_ = true;\n\n if (visibilityChange) {\n document.addEventListener(\n visibilityChange,\n () => {\n const visible = !document[hidden];\n if (visible !== this.visible_) {\n this.visible_ = visible;\n this.trigger('visible', visible);\n }\n },\n false\n );\n }\n }\n\n getInitialEvent(eventType: string): boolean[] {\n assert(eventType === 'visible', 'Unknown event type: ' + eventType);\n return [this.visible_];\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n contains,\n Deferred,\n isEmpty,\n isMobileCordova,\n isNodeSdk,\n isReactNative,\n isValidFormat,\n safeGet,\n stringify,\n isAdmin\n} from '@firebase/util';\n\nimport { Connection } from '../realtime/Connection';\n\nimport { AppCheckTokenProvider } from './AppCheckTokenProvider';\nimport { AuthTokenProvider } from './AuthTokenProvider';\nimport { RepoInfo } from './RepoInfo';\nimport { ServerActions } from './ServerActions';\nimport { OnlineMonitor } from './util/OnlineMonitor';\nimport { Path } from './util/Path';\nimport { error, log, logWrapper, warn, ObjectToUniqueKey } from './util/util';\nimport { VisibilityMonitor } from './util/VisibilityMonitor';\nimport { SDK_VERSION } from './version';\nimport { QueryContext } from './view/EventRegistration';\n\nconst RECONNECT_MIN_DELAY = 1000;\nconst RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\nconst RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\nconst RECONNECT_DELAY_MULTIPLIER = 1.3;\nconst RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\nconst SERVER_KILL_INTERRUPT_REASON = 'server_kill';\n\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\nconst INVALID_TOKEN_THRESHOLD = 3;\n\ninterface ListenSpec {\n onComplete(s: string, p?: unknown): void;\n\n hashFn(): string;\n\n query: QueryContext;\n tag: number | null;\n}\n\ninterface OnDisconnectRequest {\n pathString: string;\n action: string;\n data: unknown;\n onComplete?: (a: string, b: string) => void;\n}\n\ninterface OutstandingPut {\n action: string;\n request: object;\n queued?: boolean;\n onComplete: (a: string, b?: string) => void;\n}\n\ninterface OutstandingGet {\n request: object;\n onComplete: (response: { [k: string]: unknown }) => void;\n}\n\n/**\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\n *\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\n * in quotes to make sure the closure compiler does not minify them.\n */\nexport class PersistentConnection extends ServerActions {\n // Used for diagnostic logging.\n id = PersistentConnection.nextPersistentConnectionId_++;\n private log_ = logWrapper('p:' + this.id + ':');\n\n private interruptReasons_: { [reason: string]: boolean } = {};\n private readonly listens: Map<\n /* path */ string,\n Map* queryId */ string, ListenSpec>\n > = new Map();\n private outstandingPuts_: OutstandingPut[] = [];\n private outstandingGets_: OutstandingGet[] = [];\n private outstandingPutCount_ = 0;\n private outstandingGetCount_ = 0;\n private onDisconnectRequestQueue_: OnDisconnectRequest[] = [];\n private connected_ = false;\n private reconnectDelay_ = RECONNECT_MIN_DELAY;\n private maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\n private securityDebugCallback_: ((a: object) => void) | null = null;\n lastSessionId: string | null = null;\n\n private establishConnectionTimer_: number | null = null;\n\n private visible_: boolean = false;\n\n // Before we get connected, we keep a queue of pending messages to send.\n private requestCBHash_: { [k: number]: (a: unknown) => void } = {};\n private requestNumber_ = 0;\n\n private realtime_: {\n sendRequest(a: object): void;\n close(): void;\n } | null = null;\n\n private authToken_: string | null = null;\n private appCheckToken_: string | null = null;\n private forceTokenRefresh_ = false;\n private invalidAuthTokenCount_ = 0;\n private invalidAppCheckTokenCount_ = 0;\n\n private firstConnection_ = true;\n private lastConnectionAttemptTime_: number | null = null;\n private lastConnectionEstablishedTime_: number | null = null;\n\n private static nextPersistentConnectionId_ = 0;\n\n /**\n * Counter for number of connections created. Mainly used for tagging in the logs\n */\n private static nextConnectionId_ = 0;\n\n /**\n * @param repoInfo_ - Data about the namespace we are connecting to\n * @param applicationId_ - The Firebase App ID for this project\n * @param onDataUpdate_ - A callback for new data from the server\n */\n constructor(\n private repoInfo_: RepoInfo,\n private applicationId_: string,\n private onDataUpdate_: (\n a: string,\n b: unknown,\n c: boolean,\n d: number | null\n ) => void,\n private onConnectStatus_: (a: boolean) => void,\n private onServerInfoUpdate_: (a: unknown) => void,\n private authTokenProvider_: AuthTokenProvider,\n private appCheckTokenProvider_: AppCheckTokenProvider,\n private authOverride_?: object | null\n ) {\n super();\n\n if (authOverride_ && !isNodeSdk()) {\n throw new Error(\n 'Auth override specified in options, but not supported on non Node.js platforms'\n );\n }\n\n VisibilityMonitor.getInstance().on('visible', this.onVisible_, this);\n\n if (repoInfo_.host.indexOf('fblocal') === -1) {\n OnlineMonitor.getInstance().on('online', this.onOnline_, this);\n }\n }\n\n protected sendRequest(\n action: string,\n body: unknown,\n onResponse?: (a: unknown) => void\n ) {\n const curReqNum = ++this.requestNumber_;\n\n const msg = { r: curReqNum, a: action, b: body };\n this.log_(stringify(msg));\n assert(\n this.connected_,\n \"sendRequest call when we're not connected not allowed.\"\n );\n this.realtime_.sendRequest(msg);\n if (onResponse) {\n this.requestCBHash_[curReqNum] = onResponse;\n }\n }\n\n get(query: QueryContext): Promise {\n this.initConnection_();\n\n const deferred = new Deferred();\n const request = {\n p: query._path.toString(),\n q: query._queryObject\n };\n const outstandingGet = {\n action: 'g',\n request,\n onComplete: (message: { [k: string]: unknown }) => {\n const payload = message['d'] as string;\n if (message['s'] === 'ok') {\n deferred.resolve(payload);\n } else {\n deferred.reject(payload);\n }\n }\n };\n this.outstandingGets_.push(outstandingGet);\n this.outstandingGetCount_++;\n const index = this.outstandingGets_.length - 1;\n\n if (this.connected_) {\n this.sendGet_(index);\n }\n\n return deferred.promise;\n }\n\n listen(\n query: QueryContext,\n currentHashFn: () => string,\n tag: number | null,\n onComplete: (a: string, b: unknown) => void\n ) {\n this.initConnection_();\n\n const queryId = query._queryIdentifier;\n const pathString = query._path.toString();\n this.log_('Listen called for ' + pathString + ' ' + queryId);\n if (!this.listens.has(pathString)) {\n this.listens.set(pathString, new Map());\n }\n assert(\n query._queryParams.isDefault() || !query._queryParams.loadsAllData(),\n 'listen() called for non-default but complete query'\n );\n assert(\n !this.listens.get(pathString)!.has(queryId),\n `listen() called twice for same path/queryId.`\n );\n const listenSpec: ListenSpec = {\n onComplete,\n hashFn: currentHashFn,\n query,\n tag\n };\n this.listens.get(pathString)!.set(queryId, listenSpec);\n\n if (this.connected_) {\n this.sendListen_(listenSpec);\n }\n }\n\n private sendGet_(index: number) {\n const get = this.outstandingGets_[index];\n this.sendRequest('g', get.request, (message: { [k: string]: unknown }) => {\n delete this.outstandingGets_[index];\n this.outstandingGetCount_--;\n if (this.outstandingGetCount_ === 0) {\n this.outstandingGets_ = [];\n }\n if (get.onComplete) {\n get.onComplete(message);\n }\n });\n }\n\n private sendListen_(listenSpec: ListenSpec) {\n const query = listenSpec.query;\n const pathString = query._path.toString();\n const queryId = query._queryIdentifier;\n this.log_('Listen on ' + pathString + ' for ' + queryId);\n const req: { [k: string]: unknown } = { /*path*/ p: pathString };\n\n const action = 'q';\n\n // Only bother to send query if it's non-default.\n if (listenSpec.tag) {\n req['q'] = query._queryObject;\n req['t'] = listenSpec.tag;\n }\n\n req[/*hash*/ 'h'] = listenSpec.hashFn();\n\n this.sendRequest(action, req, (message: { [k: string]: unknown }) => {\n const payload: unknown = message[/*data*/ 'd'];\n const status = message[/*status*/ 's'] as string;\n\n // print warnings in any case...\n PersistentConnection.warnOnListenWarnings_(payload, query);\n\n const currentListenSpec =\n this.listens.get(pathString) &&\n this.listens.get(pathString)!.get(queryId);\n // only trigger actions if the listen hasn't been removed and readded\n if (currentListenSpec === listenSpec) {\n this.log_('listen response', message);\n\n if (status !== 'ok') {\n this.removeListen_(pathString, queryId);\n }\n\n if (listenSpec.onComplete) {\n listenSpec.onComplete(status, payload);\n }\n }\n });\n }\n\n private static warnOnListenWarnings_(payload: unknown, query: QueryContext) {\n if (payload && typeof payload === 'object' && contains(payload, 'w')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const warnings = safeGet(payload as any, 'w');\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\n const indexSpec =\n '\".indexOn\": \"' + query._queryParams.getIndex().toString() + '\"';\n const indexPath = query._path.toString();\n warn(\n `Using an unspecified index. Your data will be downloaded and ` +\n `filtered on the client. Consider adding ${indexSpec} at ` +\n `${indexPath} to your security rules for better performance.`\n );\n }\n }\n }\n\n refreshAuthToken(token: string) {\n this.authToken_ = token;\n this.log_('Auth token refreshed');\n if (this.authToken_) {\n this.tryAuth();\n } else {\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\n //the credential so we dont become authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unauth', {}, () => {});\n }\n }\n\n this.reduceReconnectDelayIfAdminCredential_(token);\n }\n\n private reduceReconnectDelayIfAdminCredential_(credential: string) {\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\n const isFirebaseSecret = credential && credential.length === 40;\n if (isFirebaseSecret || isAdmin(credential)) {\n this.log_(\n 'Admin auth credential detected. Reducing max reconnect time.'\n );\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n }\n }\n\n refreshAppCheckToken(token: string | null) {\n this.appCheckToken_ = token;\n this.log_('App check token refreshed');\n if (this.appCheckToken_) {\n this.tryAppCheck();\n } else {\n //If we're connected we want to let the server know to unauthenticate us.\n //If we're not connected, simply delete the credential so we dont become\n // authenticated next time we connect.\n if (this.connected_) {\n this.sendRequest('unappeck', {}, () => {});\n }\n }\n }\n\n /**\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\n * a auth revoked (the connection is closed).\n */\n tryAuth() {\n if (this.connected_ && this.authToken_) {\n const token = this.authToken_;\n const authMethod = isValidFormat(token) ? 'auth' : 'gauth';\n const requestData: { [k: string]: unknown } = { cred: token };\n if (this.authOverride_ === null) {\n requestData['noauth'] = true;\n } else if (typeof this.authOverride_ === 'object') {\n requestData['authvar'] = this.authOverride_;\n }\n this.sendRequest(\n authMethod,\n requestData,\n (res: { [k: string]: unknown }) => {\n const status = res[/*status*/ 's'] as string;\n const data = (res[/*data*/ 'd'] as string) || 'error';\n\n if (this.authToken_ === token) {\n if (status === 'ok') {\n this.invalidAuthTokenCount_ = 0;\n } else {\n // Triggers reconnect and force refresh for auth token\n this.onAuthRevoked_(status, data);\n }\n }\n }\n );\n }\n }\n\n /**\n * Attempts to authenticate with the given token. If the authentication\n * attempt fails, it's triggered like the token was revoked (the connection is\n * closed).\n */\n tryAppCheck() {\n if (this.connected_ && this.appCheckToken_) {\n this.sendRequest(\n 'appcheck',\n { 'token': this.appCheckToken_ },\n (res: { [k: string]: unknown }) => {\n const status = res[/*status*/ 's'] as string;\n const data = (res[/*data*/ 'd'] as string) || 'error';\n if (status === 'ok') {\n this.invalidAppCheckTokenCount_ = 0;\n } else {\n this.onAppCheckRevoked_(status, data);\n }\n }\n );\n }\n }\n\n /**\n * @inheritDoc\n */\n unlisten(query: QueryContext, tag: number | null) {\n const pathString = query._path.toString();\n const queryId = query._queryIdentifier;\n\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\n\n assert(\n query._queryParams.isDefault() || !query._queryParams.loadsAllData(),\n 'unlisten() called for non-default but complete query'\n );\n const listen = this.removeListen_(pathString, queryId);\n if (listen && this.connected_) {\n this.sendUnlisten_(pathString, queryId, query._queryObject, tag);\n }\n }\n\n private sendUnlisten_(\n pathString: string,\n queryId: string,\n queryObj: object,\n tag: number | null\n ) {\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\n\n const req: { [k: string]: unknown } = { /*path*/ p: pathString };\n const action = 'n';\n // Only bother sending queryId if it's non-default.\n if (tag) {\n req['q'] = queryObj;\n req['t'] = tag;\n }\n\n this.sendRequest(action, req);\n }\n\n onDisconnectPut(\n pathString: string,\n data: unknown,\n onComplete?: (a: string, b: string) => void\n ) {\n this.initConnection_();\n\n if (this.connected_) {\n this.sendOnDisconnect_('o', pathString, data, onComplete);\n } else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'o',\n data,\n onComplete\n });\n }\n }\n\n onDisconnectMerge(\n pathString: string,\n data: unknown,\n onComplete?: (a: string, b: string) => void\n ) {\n this.initConnection_();\n\n if (this.connected_) {\n this.sendOnDisconnect_('om', pathString, data, onComplete);\n } else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'om',\n data,\n onComplete\n });\n }\n }\n\n onDisconnectCancel(\n pathString: string,\n onComplete?: (a: string, b: string) => void\n ) {\n this.initConnection_();\n\n if (this.connected_) {\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\n } else {\n this.onDisconnectRequestQueue_.push({\n pathString,\n action: 'oc',\n data: null,\n onComplete\n });\n }\n }\n\n private sendOnDisconnect_(\n action: string,\n pathString: string,\n data: unknown,\n onComplete: (a: string, b: string) => void\n ) {\n const request = { /*path*/ p: pathString, /*data*/ d: data };\n this.log_('onDisconnect ' + action, request);\n this.sendRequest(action, request, (response: { [k: string]: unknown }) => {\n if (onComplete) {\n setTimeout(() => {\n onComplete(\n response[/*status*/ 's'] as string,\n response[/* data */ 'd'] as string\n );\n }, Math.floor(0));\n }\n });\n }\n\n put(\n pathString: string,\n data: unknown,\n onComplete?: (a: string, b: string) => void,\n hash?: string\n ) {\n this.putInternal('p', pathString, data, onComplete, hash);\n }\n\n merge(\n pathString: string,\n data: unknown,\n onComplete: (a: string, b: string | null) => void,\n hash?: string\n ) {\n this.putInternal('m', pathString, data, onComplete, hash);\n }\n\n putInternal(\n action: string,\n pathString: string,\n data: unknown,\n onComplete: (a: string, b: string | null) => void,\n hash?: string\n ) {\n this.initConnection_();\n\n const request: { [k: string]: unknown } = {\n /*path*/ p: pathString,\n /*data*/ d: data\n };\n\n if (hash !== undefined) {\n request[/*hash*/ 'h'] = hash;\n }\n\n // TODO: Only keep track of the most recent put for a given path?\n this.outstandingPuts_.push({\n action,\n request,\n onComplete\n });\n\n this.outstandingPutCount_++;\n const index = this.outstandingPuts_.length - 1;\n\n if (this.connected_) {\n this.sendPut_(index);\n } else {\n this.log_('Buffering put: ' + pathString);\n }\n }\n\n private sendPut_(index: number) {\n const action = this.outstandingPuts_[index].action;\n const request = this.outstandingPuts_[index].request;\n const onComplete = this.outstandingPuts_[index].onComplete;\n this.outstandingPuts_[index].queued = this.connected_;\n\n this.sendRequest(action, request, (message: { [k: string]: unknown }) => {\n this.log_(action + ' response', message);\n\n delete this.outstandingPuts_[index];\n this.outstandingPutCount_--;\n\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0) {\n this.outstandingPuts_ = [];\n }\n\n if (onComplete) {\n onComplete(\n message[/*status*/ 's'] as string,\n message[/* data */ 'd'] as string\n );\n }\n });\n }\n\n reportStats(stats: { [k: string]: unknown }) {\n // If we're not connected, we just drop the stats.\n if (this.connected_) {\n const request = { /*counters*/ c: stats };\n this.log_('reportStats', request);\n\n this.sendRequest(/*stats*/ 's', request, result => {\n const status = result[/*status*/ 's'];\n if (status !== 'ok') {\n const errorReason = result[/* data */ 'd'];\n this.log_('reportStats', 'Error sending stats: ' + errorReason);\n }\n });\n }\n }\n\n private onDataMessage_(message: { [k: string]: unknown }) {\n if ('r' in message) {\n // this is a response\n this.log_('from server: ' + stringify(message));\n const reqNum = message['r'] as string;\n const onResponse = this.requestCBHash_[reqNum];\n if (onResponse) {\n delete this.requestCBHash_[reqNum];\n onResponse(message[/*body*/ 'b']);\n }\n } else if ('error' in message) {\n throw 'A server-side error has occurred: ' + message['error'];\n } else if ('a' in message) {\n // a and b are action and body, respectively\n this.onDataPush_(message['a'] as string, message['b'] as {});\n }\n }\n\n private onDataPush_(action: string, body: { [k: string]: unknown }) {\n this.log_('handleServerMessage', action, body);\n if (action === 'd') {\n this.onDataUpdate_(\n body[/*path*/ 'p'] as string,\n body[/*data*/ 'd'],\n /*isMerge*/ false,\n body['t'] as number\n );\n } else if (action === 'm') {\n this.onDataUpdate_(\n body[/*path*/ 'p'] as string,\n body[/*data*/ 'd'],\n /*isMerge=*/ true,\n body['t'] as number\n );\n } else if (action === 'c') {\n this.onListenRevoked_(\n body[/*path*/ 'p'] as string,\n body[/*query*/ 'q'] as unknown[]\n );\n } else if (action === 'ac') {\n this.onAuthRevoked_(\n body[/*status code*/ 's'] as string,\n body[/* explanation */ 'd'] as string\n );\n } else if (action === 'apc') {\n this.onAppCheckRevoked_(\n body[/*status code*/ 's'] as string,\n body[/* explanation */ 'd'] as string\n );\n } else if (action === 'sd') {\n this.onSecurityDebugPacket_(body);\n } else {\n error(\n 'Unrecognized action received from server: ' +\n stringify(action) +\n '\\nAre you using the latest client?'\n );\n }\n }\n\n private onReady_(timestamp: number, sessionId: string) {\n this.log_('connection ready');\n this.connected_ = true;\n this.lastConnectionEstablishedTime_ = new Date().getTime();\n this.handleTimestamp_(timestamp);\n this.lastSessionId = sessionId;\n if (this.firstConnection_) {\n this.sendConnectStats_();\n }\n this.restoreState_();\n this.firstConnection_ = false;\n this.onConnectStatus_(true);\n }\n\n private scheduleConnect_(timeout: number) {\n assert(\n !this.realtime_,\n \"Scheduling a connect when we're already connected/ing?\"\n );\n\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n }\n\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\n\n this.establishConnectionTimer_ = setTimeout(() => {\n this.establishConnectionTimer_ = null;\n this.establishConnection_();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }, Math.floor(timeout)) as any;\n }\n\n private initConnection_() {\n if (!this.realtime_ && this.firstConnection_) {\n this.scheduleConnect_(0);\n }\n }\n\n private onVisible_(visible: boolean) {\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\n if (\n visible &&\n !this.visible_ &&\n this.reconnectDelay_ === this.maxReconnectDelay_\n ) {\n this.log_('Window became visible. Reducing delay.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n this.visible_ = visible;\n }\n\n private onOnline_(online: boolean) {\n if (online) {\n this.log_('Browser went online.');\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n } else {\n this.log_('Browser went offline. Killing connection.');\n if (this.realtime_) {\n this.realtime_.close();\n }\n }\n }\n\n private onRealtimeDisconnect_() {\n this.log_('data client disconnected');\n this.connected_ = false;\n this.realtime_ = null;\n\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\n this.cancelSentTransactions_();\n\n // Clear out the pending requests.\n this.requestCBHash_ = {};\n\n if (this.shouldReconnect_()) {\n if (!this.visible_) {\n this.log_(\"Window isn't visible. Delaying reconnect.\");\n this.reconnectDelay_ = this.maxReconnectDelay_;\n this.lastConnectionAttemptTime_ = new Date().getTime();\n } else if (this.lastConnectionEstablishedTime_) {\n // If we've been connected long enough, reset reconnect delay to minimum.\n const timeSinceLastConnectSucceeded =\n new Date().getTime() - this.lastConnectionEstablishedTime_;\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n }\n this.lastConnectionEstablishedTime_ = null;\n }\n\n const timeSinceLastConnectAttempt =\n new Date().getTime() - this.lastConnectionAttemptTime_;\n let reconnectDelay = Math.max(\n 0,\n this.reconnectDelay_ - timeSinceLastConnectAttempt\n );\n reconnectDelay = Math.random() * reconnectDelay;\n\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\n this.scheduleConnect_(reconnectDelay);\n\n // Adjust reconnect delay for next time.\n this.reconnectDelay_ = Math.min(\n this.maxReconnectDelay_,\n this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER\n );\n }\n this.onConnectStatus_(false);\n }\n\n private async establishConnection_() {\n if (this.shouldReconnect_()) {\n this.log_('Making a connection attempt');\n this.lastConnectionAttemptTime_ = new Date().getTime();\n this.lastConnectionEstablishedTime_ = null;\n const onDataMessage = this.onDataMessage_.bind(this);\n const onReady = this.onReady_.bind(this);\n const onDisconnect = this.onRealtimeDisconnect_.bind(this);\n const connId = this.id + ':' + PersistentConnection.nextConnectionId_++;\n const lastSessionId = this.lastSessionId;\n let canceled = false;\n let connection: Connection | null = null;\n const closeFn = function () {\n if (connection) {\n connection.close();\n } else {\n canceled = true;\n onDisconnect();\n }\n };\n const sendRequestFn = function (msg: object) {\n assert(\n connection,\n \"sendRequest call when we're not connected not allowed.\"\n );\n connection.sendRequest(msg);\n };\n\n this.realtime_ = {\n close: closeFn,\n sendRequest: sendRequestFn\n };\n\n const forceRefresh = this.forceTokenRefresh_;\n this.forceTokenRefresh_ = false;\n\n try {\n // First fetch auth and app check token, and establish connection after\n // fetching the token was successful\n const [authToken, appCheckToken] = await Promise.all([\n this.authTokenProvider_.getToken(forceRefresh),\n this.appCheckTokenProvider_.getToken(forceRefresh)\n ]);\n\n if (!canceled) {\n log('getToken() completed. Creating connection.');\n this.authToken_ = authToken && authToken.accessToken;\n this.appCheckToken_ = appCheckToken && appCheckToken.token;\n connection = new Connection(\n connId,\n this.repoInfo_,\n this.applicationId_,\n this.appCheckToken_,\n this.authToken_,\n onDataMessage,\n onReady,\n onDisconnect,\n /* onKill= */ reason => {\n warn(reason + ' (' + this.repoInfo_.toString() + ')');\n this.interrupt(SERVER_KILL_INTERRUPT_REASON);\n },\n lastSessionId\n );\n } else {\n log('getToken() completed but was canceled');\n }\n } catch (error) {\n this.log_('Failed to get token: ' + error);\n if (!canceled) {\n if (this.repoInfo_.nodeAdmin) {\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\n // But getToken() may also just have temporarily failed, so we still want to\n // continue retrying.\n warn(error);\n }\n closeFn();\n }\n }\n }\n }\n\n interrupt(reason: string) {\n log('Interrupting connection for reason: ' + reason);\n this.interruptReasons_[reason] = true;\n if (this.realtime_) {\n this.realtime_.close();\n } else {\n if (this.establishConnectionTimer_) {\n clearTimeout(this.establishConnectionTimer_);\n this.establishConnectionTimer_ = null;\n }\n if (this.connected_) {\n this.onRealtimeDisconnect_();\n }\n }\n }\n\n resume(reason: string) {\n log('Resuming connection for reason: ' + reason);\n delete this.interruptReasons_[reason];\n if (isEmpty(this.interruptReasons_)) {\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\n if (!this.realtime_) {\n this.scheduleConnect_(0);\n }\n }\n }\n\n private handleTimestamp_(timestamp: number) {\n const delta = timestamp - new Date().getTime();\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\n }\n\n private cancelSentTransactions_() {\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\n const put = this.outstandingPuts_[i];\n if (put && /*hash*/ 'h' in put.request && put.queued) {\n if (put.onComplete) {\n put.onComplete('disconnect');\n }\n\n delete this.outstandingPuts_[i];\n this.outstandingPutCount_--;\n }\n }\n\n // Clean up array occasionally.\n if (this.outstandingPutCount_ === 0) {\n this.outstandingPuts_ = [];\n }\n }\n\n private onListenRevoked_(pathString: string, query?: unknown[]) {\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\n let queryId;\n if (!query) {\n queryId = 'default';\n } else {\n queryId = query.map(q => ObjectToUniqueKey(q)).join('$');\n }\n const listen = this.removeListen_(pathString, queryId);\n if (listen && listen.onComplete) {\n listen.onComplete('permission_denied');\n }\n }\n\n private removeListen_(pathString: string, queryId: string): ListenSpec {\n const normalizedPathString = new Path(pathString).toString(); // normalize path.\n let listen;\n if (this.listens.has(normalizedPathString)) {\n const map = this.listens.get(normalizedPathString)!;\n listen = map.get(queryId);\n map.delete(queryId);\n if (map.size === 0) {\n this.listens.delete(normalizedPathString);\n }\n } else {\n // all listens for this path has already been removed\n listen = undefined;\n }\n return listen;\n }\n\n private onAuthRevoked_(statusCode: string, explanation: string) {\n log('Auth token revoked: ' + statusCode + '/' + explanation);\n this.authToken_ = null;\n this.forceTokenRefresh_ = true;\n this.realtime_.close();\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAuthTokenCount_++;\n if (this.invalidAuthTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\n // Set a long reconnect delay because recovery is unlikely\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\n\n // Notify the auth token provider that the token is invalid, which will log\n // a warning\n this.authTokenProvider_.notifyForInvalidToken();\n }\n }\n }\n\n private onAppCheckRevoked_(statusCode: string, explanation: string) {\n log('App check token revoked: ' + statusCode + '/' + explanation);\n this.appCheckToken_ = null;\n this.forceTokenRefresh_ = true;\n // Note: We don't close the connection as the developer may not have\n // enforcement enabled. The backend closes connections with enforcements.\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\n // We'll wait a couple times before logging the warning / increasing the\n // retry period since oauth tokens will report as \"invalid\" if they're\n // just expired. Plus there may be transient issues that resolve themselves.\n this.invalidAppCheckTokenCount_++;\n if (this.invalidAppCheckTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\n this.appCheckTokenProvider_.notifyForInvalidToken();\n }\n }\n }\n\n private onSecurityDebugPacket_(body: { [k: string]: unknown }) {\n if (this.securityDebugCallback_) {\n this.securityDebugCallback_(body);\n } else {\n if ('msg' in body) {\n console.log(\n 'FIREBASE: ' + (body['msg'] as string).replace('\\n', '\\nFIREBASE: ')\n );\n }\n }\n }\n\n private restoreState_() {\n //Re-authenticate ourselves if we have a credential stored.\n this.tryAuth();\n this.tryAppCheck();\n\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\n // make sure to send listens before puts.\n for (const queries of this.listens.values()) {\n for (const listenSpec of queries.values()) {\n this.sendListen_(listenSpec);\n }\n }\n\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\n if (this.outstandingPuts_[i]) {\n this.sendPut_(i);\n }\n }\n\n while (this.onDisconnectRequestQueue_.length) {\n const request = this.onDisconnectRequestQueue_.shift();\n this.sendOnDisconnect_(\n request.action,\n request.pathString,\n request.data,\n request.onComplete\n );\n }\n\n for (let i = 0; i < this.outstandingGets_.length; i++) {\n if (this.outstandingGets_[i]) {\n this.sendGet_(i);\n }\n }\n }\n\n /**\n * Sends client stats for first connection\n */\n private sendConnectStats_() {\n const stats: { [k: string]: number } = {};\n\n let clientName = 'js';\n if (isNodeSdk()) {\n if (this.repoInfo_.nodeAdmin) {\n clientName = 'admin_node';\n } else {\n clientName = 'node';\n }\n }\n\n stats['sdk.' + clientName + '.' + SDK_VERSION.replace(/\\./g, '-')] = 1;\n\n if (isMobileCordova()) {\n stats['framework.cordova'] = 1;\n } else if (isReactNative()) {\n stats['framework.reactnative'] = 1;\n }\n this.reportStats(stats);\n }\n\n private shouldReconnect_(): boolean {\n const online = OnlineMonitor.getInstance().currentlyOnline();\n return isEmpty(this.interruptReasons_) && online;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Path } from '../util/Path';\n\nimport { Index } from './indexes/Index';\n\n/**\n * Node is an interface defining the common functionality for nodes in\n * a DataSnapshot.\n *\n * @interface\n */\nexport interface Node {\n /**\n * Whether this node is a leaf node.\n * @returns Whether this is a leaf node.\n */\n isLeafNode(): boolean;\n\n /**\n * Gets the priority of the node.\n * @returns The priority of the node.\n */\n getPriority(): Node;\n\n /**\n * Returns a duplicate node with the new priority.\n * @param newPriorityNode - New priority to set for the node.\n * @returns Node with new priority.\n */\n updatePriority(newPriorityNode: Node): Node;\n\n /**\n * Returns the specified immediate child, or null if it doesn't exist.\n * @param childName - The name of the child to retrieve.\n * @returns The retrieved child, or an empty node.\n */\n getImmediateChild(childName: string): Node;\n\n /**\n * Returns a child by path, or null if it doesn't exist.\n * @param path - The path of the child to retrieve.\n * @returns The retrieved child or an empty node.\n */\n getChild(path: Path): Node;\n\n /**\n * Returns the name of the child immediately prior to the specified childNode, or null.\n * @param childName - The name of the child to find the predecessor of.\n * @param childNode - The node to find the predecessor of.\n * @param index - The index to use to determine the predecessor\n * @returns The name of the predecessor child, or null if childNode is the first child.\n */\n getPredecessorChildName(\n childName: string,\n childNode: Node,\n index: Index\n ): string | null;\n\n /**\n * Returns a duplicate node, with the specified immediate child updated.\n * Any value in the node will be removed.\n * @param childName - The name of the child to update.\n * @param newChildNode - The new child node\n * @returns The updated node.\n */\n updateImmediateChild(childName: string, newChildNode: Node): Node;\n\n /**\n * Returns a duplicate node, with the specified child updated. Any value will\n * be removed.\n * @param path - The path of the child to update.\n * @param newChildNode - The new child node, which may be an empty node\n * @returns The updated node.\n */\n updateChild(path: Path, newChildNode: Node): Node;\n\n /**\n * True if the immediate child specified exists\n */\n hasChild(childName: string): boolean;\n\n /**\n * @returns True if this node has no value or children.\n */\n isEmpty(): boolean;\n\n /**\n * @returns The number of children of this node.\n */\n numChildren(): number;\n\n /**\n * Calls action for each child.\n * @param action - Action to be called for\n * each child. It's passed the child name and the child node.\n * @returns The first truthy value return by action, or the last falsey one\n */\n forEachChild(index: Index, action: (a: string, b: Node) => void): unknown;\n\n /**\n * @param exportFormat - True for export format (also wire protocol format).\n * @returns Value of this node as JSON.\n */\n val(exportFormat?: boolean): unknown;\n\n /**\n * @returns hash representing the node contents.\n */\n hash(): string;\n\n /**\n * @param other - Another node\n * @returns -1 for less than, 0 for equal, 1 for greater than other\n */\n compareTo(other: Node): number;\n\n /**\n * @returns Whether or not this snapshot equals other\n */\n equals(other: Node): boolean;\n\n /**\n * @returns This node, with the specified index now available\n */\n withIndex(indexDefinition: Index): Node;\n\n isIndexed(indexDefinition: Index): boolean;\n}\n\nexport class NamedNode {\n constructor(public name: string, public node: Node) {}\n\n static Wrap(name: string, node: Node) {\n return new NamedNode(name, node);\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Comparator } from '../../util/SortedMap';\nimport { MIN_NAME } from '../../util/util';\nimport { Node, NamedNode } from '../Node';\n\nexport abstract class Index {\n abstract compare(a: NamedNode, b: NamedNode): number;\n\n abstract isDefinedOn(node: Node): boolean;\n\n /**\n * @returns A standalone comparison function for\n * this index\n */\n getCompare(): Comparator {\n return this.compare.bind(this);\n }\n\n /**\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\n *\n *\n * @returns True if the portion of the snapshot being indexed changed between oldNode and newNode\n */\n indexedValueChanged(oldNode: Node, newNode: Node): boolean {\n const oldWrapped = new NamedNode(MIN_NAME, oldNode);\n const newWrapped = new NamedNode(MIN_NAME, newNode);\n return this.compare(oldWrapped, newWrapped) !== 0;\n }\n\n /**\n * @returns a node wrapper that will sort equal to or less than\n * any other node wrapper, using this index\n */\n minPost(): NamedNode {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (NamedNode as any).MIN;\n }\n\n /**\n * @returns a node wrapper that will sort greater than or equal to\n * any other node wrapper, using this index\n */\n abstract maxPost(): NamedNode;\n\n abstract makePost(indexValue: unknown, name: string): NamedNode;\n\n /**\n * @returns String representation for inclusion in a query spec\n */\n abstract toString(): string;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, assertionError } from '@firebase/util';\n\nimport { nameCompare, MAX_NAME } from '../../util/util';\nimport { ChildrenNode } from '../ChildrenNode';\nimport { Node, NamedNode } from '../Node';\n\nimport { Index } from './Index';\n\nlet __EMPTY_NODE: ChildrenNode;\n\nexport class KeyIndex extends Index {\n static get __EMPTY_NODE() {\n return __EMPTY_NODE;\n }\n\n static set __EMPTY_NODE(val) {\n __EMPTY_NODE = val;\n }\n compare(a: NamedNode, b: NamedNode): number {\n return nameCompare(a.name, b.name);\n }\n isDefinedOn(node: Node): boolean {\n // We could probably return true here (since every node has a key), but it's never called\n // so just leaving unimplemented for now.\n throw assertionError('KeyIndex.isDefinedOn not expected to be called.');\n }\n indexedValueChanged(oldNode: Node, newNode: Node): boolean {\n return false; // The key for a node never changes.\n }\n minPost() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (NamedNode as any).MIN;\n }\n maxPost(): NamedNode {\n // TODO: This should really be created once and cached in a static property, but\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\n return new NamedNode(MAX_NAME, __EMPTY_NODE);\n }\n\n makePost(indexValue: string, name: string): NamedNode {\n assert(\n typeof indexValue === 'string',\n 'KeyIndex indexValue must always be a string.'\n );\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\n return new NamedNode(indexValue, __EMPTY_NODE);\n }\n\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString(): string {\n return '.key';\n }\n}\n\nexport const KEY_INDEX = new KeyIndex();\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Implementation of an immutable SortedMap using a Left-leaning\n * Red-Black Tree, adapted from the implementation in Mugs\n * (http://mads379.github.com/mugs/) by Mads Hartmann Jensen\n * (mads379\\@gmail.com).\n *\n * Original paper on Left-leaning Red-Black Trees:\n * http://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf\n *\n * Invariant 1: No red node has a red child\n * Invariant 2: Every leaf path has the same number of black nodes\n * Invariant 3: Only the left child can be red (left leaning)\n */\n\n// TODO: There are some improvements I'd like to make to improve memory / perf:\n// * Create two prototypes, LLRedNode and LLBlackNode, instead of storing a\n// color property in every node.\n// TODO: It would also be good (and possibly necessary) to create a base\n// interface for LLRBNode and LLRBEmptyNode.\n\nexport type Comparator = (key1: K, key2: K) => number;\n\n/**\n * An iterator over an LLRBNode.\n */\nexport class SortedMapIterator {\n private nodeStack_: Array | LLRBEmptyNode> = [];\n\n /**\n * @param node - Node to iterate.\n * @param isReverse_ - Whether or not to iterate in reverse\n */\n constructor(\n node: LLRBNode | LLRBEmptyNode,\n startKey: K | null,\n comparator: Comparator,\n private isReverse_: boolean,\n private resultGenerator_: ((k: K, v: V) => T) | null = null\n ) {\n let cmp = 1;\n while (!node.isEmpty()) {\n node = node as LLRBNode;\n cmp = startKey ? comparator(node.key, startKey) : 1;\n // flip the comparison if we're going in reverse\n if (isReverse_) {\n cmp *= -1;\n }\n\n if (cmp < 0) {\n // This node is less than our start key. ignore it\n if (this.isReverse_) {\n node = node.left;\n } else {\n node = node.right;\n }\n } else if (cmp === 0) {\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\n this.nodeStack_.push(node);\n break;\n } else {\n // This node is greater than our start key, add it to the stack and move to the next one\n this.nodeStack_.push(node);\n if (this.isReverse_) {\n node = node.right;\n } else {\n node = node.left;\n }\n }\n }\n }\n\n getNext(): T {\n if (this.nodeStack_.length === 0) {\n return null;\n }\n\n let node = this.nodeStack_.pop();\n let result: T;\n if (this.resultGenerator_) {\n result = this.resultGenerator_(node.key, node.value);\n } else {\n result = { key: node.key, value: node.value } as unknown as T;\n }\n\n if (this.isReverse_) {\n node = node.left;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.right;\n }\n } else {\n node = node.right;\n while (!node.isEmpty()) {\n this.nodeStack_.push(node);\n node = node.left;\n }\n }\n\n return result;\n }\n\n hasNext(): boolean {\n return this.nodeStack_.length > 0;\n }\n\n peek(): T {\n if (this.nodeStack_.length === 0) {\n return null;\n }\n\n const node = this.nodeStack_[this.nodeStack_.length - 1];\n if (this.resultGenerator_) {\n return this.resultGenerator_(node.key, node.value);\n } else {\n return { key: node.key, value: node.value } as unknown as T;\n }\n }\n}\n\n/**\n * Represents a node in a Left-leaning Red-Black tree.\n */\nexport class LLRBNode {\n color: boolean;\n left: LLRBNode | LLRBEmptyNode;\n right: LLRBNode | LLRBEmptyNode;\n\n /**\n * @param key - Key associated with this node.\n * @param value - Value associated with this node.\n * @param color - Whether this node is red.\n * @param left - Left child.\n * @param right - Right child.\n */\n constructor(\n public key: K,\n public value: V,\n color: boolean | null,\n left?: LLRBNode | LLRBEmptyNode | null,\n right?: LLRBNode | LLRBEmptyNode | null\n ) {\n this.color = color != null ? color : LLRBNode.RED;\n this.left =\n left != null ? left : (SortedMap.EMPTY_NODE as LLRBEmptyNode);\n this.right =\n right != null ? right : (SortedMap.EMPTY_NODE as LLRBEmptyNode);\n }\n\n static RED = true;\n static BLACK = false;\n\n /**\n * Returns a copy of the current node, optionally replacing pieces of it.\n *\n * @param key - New key for the node, or null.\n * @param value - New value for the node, or null.\n * @param color - New color for the node, or null.\n * @param left - New left child for the node, or null.\n * @param right - New right child for the node, or null.\n * @returns The node copy.\n */\n copy(\n key: K | null,\n value: V | null,\n color: boolean | null,\n left: LLRBNode | LLRBEmptyNode | null,\n right: LLRBNode | LLRBEmptyNode | null\n ): LLRBNode {\n return new LLRBNode(\n key != null ? key : this.key,\n value != null ? value : this.value,\n color != null ? color : this.color,\n left != null ? left : this.left,\n right != null ? right : this.right\n );\n }\n\n /**\n * @returns The total number of nodes in the tree.\n */\n count(): number {\n return this.left.count() + 1 + this.right.count();\n }\n\n /**\n * @returns True if the tree is empty.\n */\n isEmpty(): boolean {\n return false;\n }\n\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n inorderTraversal(action: (k: K, v: V) => unknown): boolean {\n return (\n this.left.inorderTraversal(action) ||\n !!action(this.key, this.value) ||\n this.right.inorderTraversal(action)\n );\n }\n\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n reverseTraversal(action: (k: K, v: V) => void): boolean {\n return (\n this.right.reverseTraversal(action) ||\n action(this.key, this.value) ||\n this.left.reverseTraversal(action)\n );\n }\n\n /**\n * @returns The minimum node in the tree.\n */\n private min_(): LLRBNode {\n if (this.left.isEmpty()) {\n return this;\n } else {\n return (this.left as LLRBNode).min_();\n }\n }\n\n /**\n * @returns The maximum key in the tree.\n */\n minKey(): K {\n return this.min_().key;\n }\n\n /**\n * @returns The maximum key in the tree.\n */\n maxKey(): K {\n if (this.right.isEmpty()) {\n return this.key;\n } else {\n return this.right.maxKey();\n }\n }\n\n /**\n * @param key - Key to insert.\n * @param value - Value to insert.\n * @param comparator - Comparator.\n * @returns New tree, with the key/value added.\n */\n insert(key: K, value: V, comparator: Comparator): LLRBNode {\n let n: LLRBNode = this;\n const cmp = comparator(key, n.key);\n if (cmp < 0) {\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\n } else if (cmp === 0) {\n n = n.copy(null, value, null, null, null);\n } else {\n n = n.copy(\n null,\n null,\n null,\n null,\n n.right.insert(key, value, comparator)\n );\n }\n return n.fixUp_();\n }\n\n /**\n * @returns New tree, with the minimum key removed.\n */\n private removeMin_(): LLRBNode | LLRBEmptyNode {\n if (this.left.isEmpty()) {\n return SortedMap.EMPTY_NODE as LLRBEmptyNode;\n }\n let n: LLRBNode = this;\n if (!n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, (n.left as LLRBNode).removeMin_(), null);\n return n.fixUp_();\n }\n\n /**\n * @param key - The key of the item to remove.\n * @param comparator - Comparator.\n * @returns New tree, with the specified item removed.\n */\n remove(\n key: K,\n comparator: Comparator\n ): LLRBNode | LLRBEmptyNode {\n let n, smallest;\n n = this;\n if (comparator(key, n.key) < 0) {\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\n n = n.moveRedLeft_();\n }\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\n } else {\n if (n.left.isRed_()) {\n n = n.rotateRight_();\n }\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\n n = n.moveRedRight_();\n }\n if (comparator(key, n.key) === 0) {\n if (n.right.isEmpty()) {\n return SortedMap.EMPTY_NODE as LLRBEmptyNode;\n } else {\n smallest = (n.right as LLRBNode).min_();\n n = n.copy(\n smallest.key,\n smallest.value,\n null,\n null,\n (n.right as LLRBNode).removeMin_()\n );\n }\n }\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\n }\n return n.fixUp_();\n }\n\n /**\n * @returns Whether this is a RED node.\n */\n isRed_(): boolean {\n return this.color;\n }\n\n /**\n * @returns New tree after performing any needed rotations.\n */\n private fixUp_(): LLRBNode {\n let n: LLRBNode = this;\n if (n.right.isRed_() && !n.left.isRed_()) {\n n = n.rotateLeft_();\n }\n if (n.left.isRed_() && n.left.left.isRed_()) {\n n = n.rotateRight_();\n }\n if (n.left.isRed_() && n.right.isRed_()) {\n n = n.colorFlip_();\n }\n return n;\n }\n\n /**\n * @returns New tree, after moveRedLeft.\n */\n private moveRedLeft_(): LLRBNode {\n let n = this.colorFlip_();\n if (n.right.left.isRed_()) {\n n = n.copy(\n null,\n null,\n null,\n null,\n (n.right as LLRBNode).rotateRight_()\n );\n n = n.rotateLeft_();\n n = n.colorFlip_();\n }\n return n;\n }\n\n /**\n * @returns New tree, after moveRedRight.\n */\n private moveRedRight_(): LLRBNode {\n let n = this.colorFlip_();\n if (n.left.left.isRed_()) {\n n = n.rotateRight_();\n n = n.colorFlip_();\n }\n return n;\n }\n\n /**\n * @returns New tree, after rotateLeft.\n */\n private rotateLeft_(): LLRBNode {\n const nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, nl, null) as LLRBNode;\n }\n\n /**\n * @returns New tree, after rotateRight.\n */\n private rotateRight_(): LLRBNode {\n const nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, nr) as LLRBNode;\n }\n\n /**\n * @returns Newt ree, after colorFlip.\n */\n private colorFlip_(): LLRBNode {\n const left = this.left.copy(null, null, !this.left.color, null, null);\n const right = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, left, right);\n }\n\n /**\n * For testing.\n *\n * @returns True if all is well.\n */\n private checkMaxDepth_(): boolean {\n const blackDepth = this.check_();\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\n }\n\n check_(): number {\n if (this.isRed_() && this.left.isRed_()) {\n throw new Error(\n 'Red node has red child(' + this.key + ',' + this.value + ')'\n );\n }\n if (this.right.isRed_()) {\n throw new Error(\n 'Right child of (' + this.key + ',' + this.value + ') is red'\n );\n }\n const blackDepth = this.left.check_();\n if (blackDepth !== this.right.check_()) {\n throw new Error('Black depths differ');\n } else {\n return blackDepth + (this.isRed_() ? 0 : 1);\n }\n }\n}\n\n/**\n * Represents an empty node (a leaf node in the Red-Black Tree).\n */\nexport class LLRBEmptyNode {\n key: K;\n value: V;\n left: LLRBNode | LLRBEmptyNode;\n right: LLRBNode | LLRBEmptyNode;\n color: boolean;\n\n /**\n * Returns a copy of the current node.\n *\n * @returns The node copy.\n */\n copy(\n key: K | null,\n value: V | null,\n color: boolean | null,\n left: LLRBNode | LLRBEmptyNode | null,\n right: LLRBNode | LLRBEmptyNode | null\n ): LLRBEmptyNode {\n return this;\n }\n\n /**\n * Returns a copy of the tree, with the specified key/value added.\n *\n * @param key - Key to be added.\n * @param value - Value to be added.\n * @param comparator - Comparator.\n * @returns New tree, with item added.\n */\n insert(key: K, value: V, comparator: Comparator): LLRBNode {\n return new LLRBNode(key, value, null);\n }\n\n /**\n * Returns a copy of the tree, with the specified key removed.\n *\n * @param key - The key to remove.\n * @param comparator - Comparator.\n * @returns New tree, with item removed.\n */\n remove(key: K, comparator: Comparator): LLRBEmptyNode {\n return this;\n }\n\n /**\n * @returns The total number of nodes in the tree.\n */\n count(): number {\n return 0;\n }\n\n /**\n * @returns True if the tree is empty.\n */\n isEmpty(): boolean {\n return true;\n }\n\n /**\n * Traverses the tree in key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n inorderTraversal(action: (k: K, v: V) => unknown): boolean {\n return false;\n }\n\n /**\n * Traverses the tree in reverse key order and calls the specified action function\n * for each node.\n *\n * @param action - Callback function to be called for each\n * node. If it returns true, traversal is aborted.\n * @returns True if traversal was aborted.\n */\n reverseTraversal(action: (k: K, v: V) => void): boolean {\n return false;\n }\n\n minKey(): null {\n return null;\n }\n\n maxKey(): null {\n return null;\n }\n\n check_(): number {\n return 0;\n }\n\n /**\n * @returns Whether this node is red.\n */\n isRed_() {\n return false;\n }\n}\n\n/**\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\n * tree.\n */\nexport class SortedMap {\n /**\n * Always use the same empty node, to reduce memory.\n */\n static EMPTY_NODE = new LLRBEmptyNode();\n\n /**\n * @param comparator_ - Key comparator.\n * @param root_ - Optional root node for the map.\n */\n constructor(\n private comparator_: Comparator,\n private root_:\n | LLRBNode\n | LLRBEmptyNode = SortedMap.EMPTY_NODE as LLRBEmptyNode\n ) {}\n\n /**\n * Returns a copy of the map, with the specified key/value added or replaced.\n * (TODO: We should perhaps rename this method to 'put')\n *\n * @param key - Key to be added.\n * @param value - Value to be added.\n * @returns New map, with item added.\n */\n insert(key: K, value: V): SortedMap {\n return new SortedMap(\n this.comparator_,\n this.root_\n .insert(key, value, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null)\n );\n }\n\n /**\n * Returns a copy of the map, with the specified key removed.\n *\n * @param key - The key to remove.\n * @returns New map, with item removed.\n */\n remove(key: K): SortedMap {\n return new SortedMap(\n this.comparator_,\n this.root_\n .remove(key, this.comparator_)\n .copy(null, null, LLRBNode.BLACK, null, null)\n );\n }\n\n /**\n * Returns the value of the node with the given key, or null.\n *\n * @param key - The key to look up.\n * @returns The value of the node with the given key, or null if the\n * key doesn't exist.\n */\n get(key: K): V | null {\n let cmp;\n let node = this.root_;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n return node.value;\n } else if (cmp < 0) {\n node = node.left;\n } else if (cmp > 0) {\n node = node.right;\n }\n }\n return null;\n }\n\n /**\n * Returns the key of the item *before* the specified key, or null if key is the first item.\n * @param key - The key to find the predecessor of\n * @returns The predecessor key.\n */\n getPredecessorKey(key: K): K | null {\n let cmp,\n node = this.root_,\n rightParent = null;\n while (!node.isEmpty()) {\n cmp = this.comparator_(key, node.key);\n if (cmp === 0) {\n if (!node.left.isEmpty()) {\n node = node.left;\n while (!node.right.isEmpty()) {\n node = node.right;\n }\n return node.key;\n } else if (rightParent) {\n return rightParent.key;\n } else {\n return null; // first item.\n }\n } else if (cmp < 0) {\n node = node.left;\n } else if (cmp > 0) {\n rightParent = node;\n node = node.right;\n }\n }\n\n throw new Error(\n 'Attempted to find predecessor key for a nonexistent key. What gives?'\n );\n }\n\n /**\n * @returns True if the map is empty.\n */\n isEmpty(): boolean {\n return this.root_.isEmpty();\n }\n\n /**\n * @returns The total number of nodes in the map.\n */\n count(): number {\n return this.root_.count();\n }\n\n /**\n * @returns The minimum key in the map.\n */\n minKey(): K | null {\n return this.root_.minKey();\n }\n\n /**\n * @returns The maximum key in the map.\n */\n maxKey(): K | null {\n return this.root_.maxKey();\n }\n\n /**\n * Traverses the map in key order and calls the specified action function\n * for each key/value pair.\n *\n * @param action - Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @returns The first truthy value returned by action, or the last falsey\n * value returned by action\n */\n inorderTraversal(action: (k: K, v: V) => unknown): boolean {\n return this.root_.inorderTraversal(action);\n }\n\n /**\n * Traverses the map in reverse key order and calls the specified action function\n * for each key/value pair.\n *\n * @param action - Callback function to be called\n * for each key/value pair. If action returns true, traversal is aborted.\n * @returns True if the traversal was aborted.\n */\n reverseTraversal(action: (k: K, v: V) => void): boolean {\n return this.root_.reverseTraversal(action);\n }\n\n /**\n * Returns an iterator over the SortedMap.\n * @returns The iterator.\n */\n getIterator(\n resultGenerator?: (k: K, v: V) => T\n ): SortedMapIterator {\n return new SortedMapIterator(\n this.root_,\n null,\n this.comparator_,\n false,\n resultGenerator\n );\n }\n\n getIteratorFrom(\n key: K,\n resultGenerator?: (k: K, v: V) => T\n ): SortedMapIterator {\n return new SortedMapIterator(\n this.root_,\n key,\n this.comparator_,\n false,\n resultGenerator\n );\n }\n\n getReverseIteratorFrom(\n key: K,\n resultGenerator?: (k: K, v: V) => T\n ): SortedMapIterator {\n return new SortedMapIterator(\n this.root_,\n key,\n this.comparator_,\n true,\n resultGenerator\n );\n }\n\n getReverseIterator(\n resultGenerator?: (k: K, v: V) => T\n ): SortedMapIterator {\n return new SortedMapIterator(\n this.root_,\n null,\n this.comparator_,\n true,\n resultGenerator\n );\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { nameCompare } from '../util/util';\n\nimport { NamedNode } from './Node';\n\nexport function NAME_ONLY_COMPARATOR(left: NamedNode, right: NamedNode) {\n return nameCompare(left.name, right.name);\n}\n\nexport function NAME_COMPARATOR(left: string, right: string) {\n return nameCompare(left, right);\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, contains } from '@firebase/util';\n\nimport { Indexable } from '../util/misc';\nimport { doubleToIEEE754String } from '../util/util';\n\nimport { Node } from './Node';\n\nlet MAX_NODE: Node;\n\nexport function setMaxNode(val: Node) {\n MAX_NODE = val;\n}\n\nexport const priorityHashText = function (priority: string | number): string {\n if (typeof priority === 'number') {\n return 'number:' + doubleToIEEE754String(priority);\n } else {\n return 'string:' + priority;\n }\n};\n\n/**\n * Validates that a priority snapshot Node is valid.\n */\nexport const validatePriorityNode = function (priorityNode: Node) {\n if (priorityNode.isLeafNode()) {\n const val = priorityNode.val();\n assert(\n typeof val === 'string' ||\n typeof val === 'number' ||\n (typeof val === 'object' && contains(val as Indexable, '.sv')),\n 'Priority must be a string or number.'\n );\n } else {\n assert(\n priorityNode === MAX_NODE || priorityNode.isEmpty(),\n 'priority of unexpected type.'\n );\n }\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\n assert(\n priorityNode === MAX_NODE || priorityNode.getPriority().isEmpty(),\n \"Priority nodes can't have a priority of their own.\"\n );\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { Indexable } from '../util/misc';\nimport {\n Path,\n pathGetFront,\n pathGetLength,\n pathIsEmpty,\n pathPopFront\n} from '../util/Path';\nimport { doubleToIEEE754String, sha1 } from '../util/util';\n\nimport { ChildrenNodeConstructor } from './ChildrenNode';\nimport { Index } from './indexes/Index';\nimport { Node } from './Node';\nimport { priorityHashText, validatePriorityNode } from './snap';\n\nlet __childrenNodeConstructor: ChildrenNodeConstructor;\n\n/**\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\n * implements Node and stores the value of the node (a string,\n * number, or boolean) accessible via getValue().\n */\nexport class LeafNode implements Node {\n static set __childrenNodeConstructor(val: ChildrenNodeConstructor) {\n __childrenNodeConstructor = val;\n }\n\n static get __childrenNodeConstructor() {\n return __childrenNodeConstructor;\n }\n\n /**\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\n * the same type, the comparison falls back to their value\n */\n static VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\n\n private lazyHash_: string | null = null;\n\n /**\n * @param value_ - The value to store in this leaf node. The object type is\n * possible in the event of a deferred value\n * @param priorityNode_ - The priority of this node.\n */\n constructor(\n private readonly value_: string | number | boolean | Indexable,\n private priorityNode_: Node = LeafNode.__childrenNodeConstructor.EMPTY_NODE\n ) {\n assert(\n this.value_ !== undefined && this.value_ !== null,\n \"LeafNode shouldn't be created with null/undefined value.\"\n );\n\n validatePriorityNode(this.priorityNode_);\n }\n\n /** @inheritDoc */\n isLeafNode(): boolean {\n return true;\n }\n\n /** @inheritDoc */\n getPriority(): Node {\n return this.priorityNode_;\n }\n\n /** @inheritDoc */\n updatePriority(newPriorityNode: Node): Node {\n return new LeafNode(this.value_, newPriorityNode);\n }\n\n /** @inheritDoc */\n getImmediateChild(childName: string): Node {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.priorityNode_;\n } else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n }\n\n /** @inheritDoc */\n getChild(path: Path): Node {\n if (pathIsEmpty(path)) {\n return this;\n } else if (pathGetFront(path) === '.priority') {\n return this.priorityNode_;\n } else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\n }\n }\n hasChild(): boolean {\n return false;\n }\n\n /** @inheritDoc */\n getPredecessorChildName(childName: string, childNode: Node): null {\n return null;\n }\n\n /** @inheritDoc */\n updateImmediateChild(childName: string, newChildNode: Node): Node {\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n } else if (newChildNode.isEmpty() && childName !== '.priority') {\n return this;\n } else {\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(\n childName,\n newChildNode\n ).updatePriority(this.priorityNode_);\n }\n }\n\n /** @inheritDoc */\n updateChild(path: Path, newChildNode: Node): Node {\n const front = pathGetFront(path);\n if (front === null) {\n return newChildNode;\n } else if (newChildNode.isEmpty() && front !== '.priority') {\n return this;\n } else {\n assert(\n front !== '.priority' || pathGetLength(path) === 1,\n '.priority must be the last token in a path'\n );\n\n return this.updateImmediateChild(\n front,\n LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(\n pathPopFront(path),\n newChildNode\n )\n );\n }\n }\n\n /** @inheritDoc */\n isEmpty(): boolean {\n return false;\n }\n\n /** @inheritDoc */\n numChildren(): number {\n return 0;\n }\n\n /** @inheritDoc */\n forEachChild(index: Index, action: (s: string, n: Node) => void): boolean {\n return false;\n }\n val(exportFormat?: boolean): {} {\n if (exportFormat && !this.getPriority().isEmpty()) {\n return {\n '.value': this.getValue(),\n '.priority': this.getPriority().val()\n };\n } else {\n return this.getValue();\n }\n }\n\n /** @inheritDoc */\n hash(): string {\n if (this.lazyHash_ === null) {\n let toHash = '';\n if (!this.priorityNode_.isEmpty()) {\n toHash +=\n 'priority:' +\n priorityHashText(this.priorityNode_.val() as number | string) +\n ':';\n }\n\n const type = typeof this.value_;\n toHash += type + ':';\n if (type === 'number') {\n toHash += doubleToIEEE754String(this.value_ as number);\n } else {\n toHash += this.value_;\n }\n this.lazyHash_ = sha1(toHash);\n }\n return this.lazyHash_;\n }\n\n /**\n * Returns the value of the leaf node.\n * @returns The value of the node.\n */\n getValue(): Indexable | string | number | boolean {\n return this.value_;\n }\n compareTo(other: Node): number {\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\n return 1;\n } else if (other instanceof LeafNode.__childrenNodeConstructor) {\n return -1;\n } else {\n assert(other.isLeafNode(), 'Unknown node type');\n return this.compareToLeafNode_(other as LeafNode);\n }\n }\n\n /**\n * Comparison specifically for two leaf nodes\n */\n private compareToLeafNode_(otherLeaf: LeafNode): number {\n const otherLeafType = typeof otherLeaf.value_;\n const thisLeafType = typeof this.value_;\n const otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\n const thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\n assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\n assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\n if (otherIndex === thisIndex) {\n // Same type, compare values\n if (thisLeafType === 'object') {\n // Deferred value nodes are all equal, but we should also never get to this point...\n return 0;\n } else {\n // Note that this works because true > false, all others are number or string comparisons\n if (this.value_ < otherLeaf.value_) {\n return -1;\n } else if (this.value_ === otherLeaf.value_) {\n return 0;\n } else {\n return 1;\n }\n }\n } else {\n return thisIndex - otherIndex;\n }\n }\n withIndex(): Node {\n return this;\n }\n isIndexed(): boolean {\n return true;\n }\n equals(other: Node): boolean {\n if (other === this) {\n return true;\n } else if (other.isLeafNode()) {\n const otherLeaf = other as LeafNode;\n return (\n this.value_ === otherLeaf.value_ &&\n this.priorityNode_.equals(otherLeaf.priorityNode_)\n );\n } else {\n return false;\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { nameCompare, MAX_NAME } from '../../util/util';\nimport { LeafNode } from '../LeafNode';\nimport { NamedNode, Node } from '../Node';\n\nimport { Index } from './Index';\n\nlet nodeFromJSON: (a: unknown) => Node;\nlet MAX_NODE: Node;\n\nexport function setNodeFromJSON(val: (a: unknown) => Node) {\n nodeFromJSON = val;\n}\n\nexport function setMaxNode(val: Node) {\n MAX_NODE = val;\n}\n\nexport class PriorityIndex extends Index {\n compare(a: NamedNode, b: NamedNode): number {\n const aPriority = a.node.getPriority();\n const bPriority = b.node.getPriority();\n const indexCmp = aPriority.compareTo(bPriority);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n } else {\n return indexCmp;\n }\n }\n isDefinedOn(node: Node): boolean {\n return !node.getPriority().isEmpty();\n }\n indexedValueChanged(oldNode: Node, newNode: Node): boolean {\n return !oldNode.getPriority().equals(newNode.getPriority());\n }\n minPost(): NamedNode {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (NamedNode as any).MIN;\n }\n maxPost(): NamedNode {\n return new NamedNode(MAX_NAME, new LeafNode('[PRIORITY-POST]', MAX_NODE));\n }\n\n makePost(indexValue: unknown, name: string): NamedNode {\n const priorityNode = nodeFromJSON(indexValue);\n return new NamedNode(name, new LeafNode('[PRIORITY-POST]', priorityNode));\n }\n\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString(): string {\n return '.priority';\n }\n}\n\nexport const PRIORITY_INDEX = new PriorityIndex();\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { LLRBNode, SortedMap } from '../util/SortedMap';\n\nimport { NamedNode } from './Node';\n\nconst LOG_2 = Math.log(2);\n\nclass Base12Num {\n count: number;\n private current_: number;\n private bits_: number;\n\n constructor(length: number) {\n const logBase2 = (num: number) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseInt((Math.log(num) / LOG_2) as any, 10);\n const bitMask = (bits: number) => parseInt(Array(bits + 1).join('1'), 2);\n this.count = logBase2(length + 1);\n this.current_ = this.count - 1;\n const mask = bitMask(this.count);\n this.bits_ = (length + 1) & mask;\n }\n\n nextBitIsOne(): boolean {\n //noinspection JSBitwiseOperatorUsage\n const result = !(this.bits_ & (0x1 << this.current_));\n this.current_--;\n return result;\n }\n}\n\n/**\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\n * function\n *\n * Uses the algorithm described in the paper linked here:\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\n *\n * @param childList - Unsorted list of children\n * @param cmp - The comparison method to be used\n * @param keyFn - An optional function to extract K from a node wrapper, if K's\n * type is not NamedNode\n * @param mapSortFn - An optional override for comparator used by the generated sorted map\n */\nexport const buildChildSet = function (\n childList: NamedNode[],\n cmp: (a: NamedNode, b: NamedNode) => number,\n keyFn?: (a: NamedNode) => K,\n mapSortFn?: (a: K, b: K) => number\n): SortedMap {\n childList.sort(cmp);\n\n const buildBalancedTree = function (\n low: number,\n high: number\n ): LLRBNode | null {\n const length = high - low;\n let namedNode: NamedNode;\n let key: K;\n if (length === 0) {\n return null;\n } else if (length === 1) {\n namedNode = childList[low];\n key = keyFn ? keyFn(namedNode) : (namedNode as unknown as K);\n return new LLRBNode(\n key,\n namedNode.node as unknown as V,\n LLRBNode.BLACK,\n null,\n null\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const middle = parseInt((length / 2) as any, 10) + low;\n const left = buildBalancedTree(low, middle);\n const right = buildBalancedTree(middle + 1, high);\n namedNode = childList[middle];\n key = keyFn ? keyFn(namedNode) : (namedNode as unknown as K);\n return new LLRBNode(\n key,\n namedNode.node as unknown as V,\n LLRBNode.BLACK,\n left,\n right\n );\n }\n };\n\n const buildFrom12Array = function (base12: Base12Num): LLRBNode {\n let node: LLRBNode = null;\n let root = null;\n let index = childList.length;\n\n const buildPennant = function (chunkSize: number, color: boolean) {\n const low = index - chunkSize;\n const high = index;\n index -= chunkSize;\n const childTree = buildBalancedTree(low + 1, high);\n const namedNode = childList[low];\n const key: K = keyFn ? keyFn(namedNode) : (namedNode as unknown as K);\n attachPennant(\n new LLRBNode(\n key,\n namedNode.node as unknown as V,\n color,\n null,\n childTree\n )\n );\n };\n\n const attachPennant = function (pennant: LLRBNode) {\n if (node) {\n node.left = pennant;\n node = pennant;\n } else {\n root = pennant;\n node = pennant;\n }\n };\n\n for (let i = 0; i < base12.count; ++i) {\n const isOne = base12.nextBitIsOne();\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\n const chunkSize = Math.pow(2, base12.count - (i + 1));\n if (isOne) {\n buildPennant(chunkSize, LLRBNode.BLACK);\n } else {\n // current == 2\n buildPennant(chunkSize, LLRBNode.BLACK);\n buildPennant(chunkSize, LLRBNode.RED);\n }\n }\n return root;\n };\n\n const base12 = new Base12Num(childList.length);\n const root = buildFrom12Array(base12);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new SortedMap(mapSortFn || (cmp as any), root);\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, contains, map, safeGet } from '@firebase/util';\n\nimport { SortedMap } from '../util/SortedMap';\n\nimport { buildChildSet } from './childSet';\nimport { Index } from './indexes/Index';\nimport { KEY_INDEX } from './indexes/KeyIndex';\nimport { PRIORITY_INDEX } from './indexes/PriorityIndex';\nimport { NamedNode, Node } from './Node';\n\nlet _defaultIndexMap: IndexMap;\n\nconst fallbackObject = {};\n\nexport class IndexMap {\n /**\n * The default IndexMap for nodes without a priority\n */\n static get Default(): IndexMap {\n assert(\n fallbackObject && PRIORITY_INDEX,\n 'ChildrenNode.ts has not been loaded'\n );\n _defaultIndexMap =\n _defaultIndexMap ||\n new IndexMap(\n { '.priority': fallbackObject },\n { '.priority': PRIORITY_INDEX }\n );\n return _defaultIndexMap;\n }\n\n constructor(\n private indexes_: {\n [k: string]: SortedMap | /*FallbackType*/ object;\n },\n private indexSet_: { [k: string]: Index }\n ) {}\n\n get(indexKey: string): SortedMap | null {\n const sortedMap = safeGet(this.indexes_, indexKey);\n if (!sortedMap) {\n throw new Error('No index defined for ' + indexKey);\n }\n\n if (sortedMap instanceof SortedMap) {\n return sortedMap;\n } else {\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\n // regular child map\n return null;\n }\n }\n\n hasIndex(indexDefinition: Index): boolean {\n return contains(this.indexSet_, indexDefinition.toString());\n }\n\n addIndex(\n indexDefinition: Index,\n existingChildren: SortedMap\n ): IndexMap {\n assert(\n indexDefinition !== KEY_INDEX,\n \"KeyIndex always exists and isn't meant to be added to the IndexMap.\"\n );\n const childList = [];\n let sawIndexedValue = false;\n const iter = existingChildren.getIterator(NamedNode.Wrap);\n let next = iter.getNext();\n while (next) {\n sawIndexedValue =\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\n childList.push(next);\n next = iter.getNext();\n }\n let newIndex;\n if (sawIndexedValue) {\n newIndex = buildChildSet(childList, indexDefinition.getCompare());\n } else {\n newIndex = fallbackObject;\n }\n const indexName = indexDefinition.toString();\n const newIndexSet = { ...this.indexSet_ };\n newIndexSet[indexName] = indexDefinition;\n const newIndexes = { ...this.indexes_ };\n newIndexes[indexName] = newIndex;\n return new IndexMap(newIndexes, newIndexSet);\n }\n\n /**\n * Ensure that this node is properly tracked in any indexes that we're maintaining\n */\n addToIndexes(\n namedNode: NamedNode,\n existingChildren: SortedMap\n ): IndexMap {\n const newIndexes = map(\n this.indexes_,\n (indexedChildren: SortedMap, indexName: string) => {\n const index = safeGet(this.indexSet_, indexName);\n assert(index, 'Missing index implementation for ' + indexName);\n if (indexedChildren === fallbackObject) {\n // Check to see if we need to index everything\n if (index.isDefinedOn(namedNode.node)) {\n // We need to build this index\n const childList = [];\n const iter = existingChildren.getIterator(NamedNode.Wrap);\n let next = iter.getNext();\n while (next) {\n if (next.name !== namedNode.name) {\n childList.push(next);\n }\n next = iter.getNext();\n }\n childList.push(namedNode);\n return buildChildSet(childList, index.getCompare());\n } else {\n // No change, this remains a fallback\n return fallbackObject;\n }\n } else {\n const existingSnap = existingChildren.get(namedNode.name);\n let newChildren = indexedChildren;\n if (existingSnap) {\n newChildren = newChildren.remove(\n new NamedNode(namedNode.name, existingSnap)\n );\n }\n return newChildren.insert(namedNode, namedNode.node);\n }\n }\n );\n return new IndexMap(newIndexes, this.indexSet_);\n }\n\n /**\n * Create a new IndexMap instance with the given value removed\n */\n removeFromIndexes(\n namedNode: NamedNode,\n existingChildren: SortedMap\n ): IndexMap {\n const newIndexes = map(\n this.indexes_,\n (indexedChildren: SortedMap) => {\n if (indexedChildren === fallbackObject) {\n // This is the fallback. Just return it, nothing to do in this case\n return indexedChildren;\n } else {\n const existingSnap = existingChildren.get(namedNode.name);\n if (existingSnap) {\n return indexedChildren.remove(\n new NamedNode(namedNode.name, existingSnap)\n );\n } else {\n // No record of this child\n return indexedChildren;\n }\n }\n }\n );\n return new IndexMap(newIndexes, this.indexSet_);\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { Path, pathGetFront, pathGetLength, pathPopFront } from '../util/Path';\nimport { SortedMap, SortedMapIterator } from '../util/SortedMap';\nimport { MAX_NAME, MIN_NAME, sha1 } from '../util/util';\n\nimport { NAME_COMPARATOR } from './comparators';\nimport { Index } from './indexes/Index';\nimport { KEY_INDEX, KeyIndex } from './indexes/KeyIndex';\nimport {\n PRIORITY_INDEX,\n setMaxNode as setPriorityMaxNode\n} from './indexes/PriorityIndex';\nimport { IndexMap } from './IndexMap';\nimport { LeafNode } from './LeafNode';\nimport { NamedNode, Node } from './Node';\nimport { priorityHashText, setMaxNode, validatePriorityNode } from './snap';\n\nexport interface ChildrenNodeConstructor {\n new (\n children_: SortedMap,\n priorityNode_: Node | null,\n indexMap_: IndexMap\n ): ChildrenNode;\n EMPTY_NODE: ChildrenNode;\n}\n\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\n\nlet EMPTY_NODE: ChildrenNode;\n\n/**\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\n * (i.e. nodes with children). It implements Node and stores the\n * list of children in the children property, sorted by child name.\n */\nexport class ChildrenNode implements Node {\n private lazyHash_: string | null = null;\n\n static get EMPTY_NODE(): ChildrenNode {\n return (\n EMPTY_NODE ||\n (EMPTY_NODE = new ChildrenNode(\n new SortedMap(NAME_COMPARATOR),\n null,\n IndexMap.Default\n ))\n );\n }\n\n /**\n * @param children_ - List of children of this node..\n * @param priorityNode_ - The priority of this node (as a snapshot node).\n */\n constructor(\n private readonly children_: SortedMap,\n private readonly priorityNode_: Node | null,\n private indexMap_: IndexMap\n ) {\n /**\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\n * class instead of an empty ChildrenNode.\n */\n if (this.priorityNode_) {\n validatePriorityNode(this.priorityNode_);\n }\n\n if (this.children_.isEmpty()) {\n assert(\n !this.priorityNode_ || this.priorityNode_.isEmpty(),\n 'An empty node cannot have a priority'\n );\n }\n }\n\n /** @inheritDoc */\n isLeafNode(): boolean {\n return false;\n }\n\n /** @inheritDoc */\n getPriority(): Node {\n return this.priorityNode_ || EMPTY_NODE;\n }\n\n /** @inheritDoc */\n updatePriority(newPriorityNode: Node): Node {\n if (this.children_.isEmpty()) {\n // Don't allow priorities on empty nodes\n return this;\n } else {\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\n }\n }\n\n /** @inheritDoc */\n getImmediateChild(childName: string): Node {\n // Hack to treat priority as a regular child\n if (childName === '.priority') {\n return this.getPriority();\n } else {\n const child = this.children_.get(childName);\n return child === null ? EMPTY_NODE : child;\n }\n }\n\n /** @inheritDoc */\n getChild(path: Path): Node {\n const front = pathGetFront(path);\n if (front === null) {\n return this;\n }\n\n return this.getImmediateChild(front).getChild(pathPopFront(path));\n }\n\n /** @inheritDoc */\n hasChild(childName: string): boolean {\n return this.children_.get(childName) !== null;\n }\n\n /** @inheritDoc */\n updateImmediateChild(childName: string, newChildNode: Node): Node {\n assert(newChildNode, 'We should always be passing snapshot nodes');\n if (childName === '.priority') {\n return this.updatePriority(newChildNode);\n } else {\n const namedNode = new NamedNode(childName, newChildNode);\n let newChildren, newIndexMap;\n if (newChildNode.isEmpty()) {\n newChildren = this.children_.remove(childName);\n newIndexMap = this.indexMap_.removeFromIndexes(\n namedNode,\n this.children_\n );\n } else {\n newChildren = this.children_.insert(childName, newChildNode);\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\n }\n\n const newPriority = newChildren.isEmpty()\n ? EMPTY_NODE\n : this.priorityNode_;\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\n }\n }\n\n /** @inheritDoc */\n updateChild(path: Path, newChildNode: Node): Node {\n const front = pathGetFront(path);\n if (front === null) {\n return newChildNode;\n } else {\n assert(\n pathGetFront(path) !== '.priority' || pathGetLength(path) === 1,\n '.priority must be the last token in a path'\n );\n const newImmediateChild = this.getImmediateChild(front).updateChild(\n pathPopFront(path),\n newChildNode\n );\n return this.updateImmediateChild(front, newImmediateChild);\n }\n }\n\n /** @inheritDoc */\n isEmpty(): boolean {\n return this.children_.isEmpty();\n }\n\n /** @inheritDoc */\n numChildren(): number {\n return this.children_.count();\n }\n\n private static INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\n\n /** @inheritDoc */\n val(exportFormat?: boolean): object {\n if (this.isEmpty()) {\n return null;\n }\n\n const obj: { [k: string]: unknown } = {};\n let numKeys = 0,\n maxKey = 0,\n allIntegerKeys = true;\n this.forEachChild(PRIORITY_INDEX, (key: string, childNode: Node) => {\n obj[key] = childNode.val(exportFormat);\n\n numKeys++;\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\n maxKey = Math.max(maxKey, Number(key));\n } else {\n allIntegerKeys = false;\n }\n });\n\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\n // convert to array.\n const array: unknown[] = [];\n // eslint-disable-next-line guard-for-in\n for (const key in obj) {\n array[key as unknown as number] = obj[key];\n }\n\n return array;\n } else {\n if (exportFormat && !this.getPriority().isEmpty()) {\n obj['.priority'] = this.getPriority().val();\n }\n return obj;\n }\n }\n\n /** @inheritDoc */\n hash(): string {\n if (this.lazyHash_ === null) {\n let toHash = '';\n if (!this.getPriority().isEmpty()) {\n toHash +=\n 'priority:' +\n priorityHashText(this.getPriority().val() as string | number) +\n ':';\n }\n\n this.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n const childHash = childNode.hash();\n if (childHash !== '') {\n toHash += ':' + key + ':' + childHash;\n }\n });\n\n this.lazyHash_ = toHash === '' ? '' : sha1(toHash);\n }\n return this.lazyHash_;\n }\n\n /** @inheritDoc */\n getPredecessorChildName(\n childName: string,\n childNode: Node,\n index: Index\n ): string {\n const idx = this.resolveIndex_(index);\n if (idx) {\n const predecessor = idx.getPredecessorKey(\n new NamedNode(childName, childNode)\n );\n return predecessor ? predecessor.name : null;\n } else {\n return this.children_.getPredecessorKey(childName);\n }\n }\n\n getFirstChildName(indexDefinition: Index): string | null {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n const minKey = idx.minKey();\n return minKey && minKey.name;\n } else {\n return this.children_.minKey();\n }\n }\n\n getFirstChild(indexDefinition: Index): NamedNode | null {\n const minKey = this.getFirstChildName(indexDefinition);\n if (minKey) {\n return new NamedNode(minKey, this.children_.get(minKey));\n } else {\n return null;\n }\n }\n\n /**\n * Given an index, return the key name of the largest value we have, according to that index\n */\n getLastChildName(indexDefinition: Index): string | null {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n const maxKey = idx.maxKey();\n return maxKey && maxKey.name;\n } else {\n return this.children_.maxKey();\n }\n }\n\n getLastChild(indexDefinition: Index): NamedNode | null {\n const maxKey = this.getLastChildName(indexDefinition);\n if (maxKey) {\n return new NamedNode(maxKey, this.children_.get(maxKey));\n } else {\n return null;\n }\n }\n forEachChild(\n index: Index,\n action: (key: string, node: Node) => boolean | void\n ): boolean {\n const idx = this.resolveIndex_(index);\n if (idx) {\n return idx.inorderTraversal(wrappedNode => {\n return action(wrappedNode.name, wrappedNode.node);\n });\n } else {\n return this.children_.inorderTraversal(action);\n }\n }\n\n getIterator(\n indexDefinition: Index\n ): SortedMapIterator {\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\n }\n\n getIteratorFrom(\n startPost: NamedNode,\n indexDefinition: Index\n ): SortedMapIterator {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getIteratorFrom(startPost, key => key);\n } else {\n const iterator = this.children_.getIteratorFrom(\n startPost.name,\n NamedNode.Wrap\n );\n let next = iterator.peek();\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n }\n\n getReverseIterator(\n indexDefinition: Index\n ): SortedMapIterator {\n return this.getReverseIteratorFrom(\n indexDefinition.maxPost(),\n indexDefinition\n );\n }\n\n getReverseIteratorFrom(\n endPost: NamedNode,\n indexDefinition: Index\n ): SortedMapIterator {\n const idx = this.resolveIndex_(indexDefinition);\n if (idx) {\n return idx.getReverseIteratorFrom(endPost, key => {\n return key;\n });\n } else {\n const iterator = this.children_.getReverseIteratorFrom(\n endPost.name,\n NamedNode.Wrap\n );\n let next = iterator.peek();\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\n iterator.getNext();\n next = iterator.peek();\n }\n return iterator;\n }\n }\n compareTo(other: ChildrenNode): number {\n if (this.isEmpty()) {\n if (other.isEmpty()) {\n return 0;\n } else {\n return -1;\n }\n } else if (other.isLeafNode() || other.isEmpty()) {\n return 1;\n } else if (other === MAX_NODE) {\n return -1;\n } else {\n // Must be another node with children.\n return 0;\n }\n }\n withIndex(indexDefinition: Index): Node {\n if (\n indexDefinition === KEY_INDEX ||\n this.indexMap_.hasIndex(indexDefinition)\n ) {\n return this;\n } else {\n const newIndexMap = this.indexMap_.addIndex(\n indexDefinition,\n this.children_\n );\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\n }\n }\n isIndexed(index: Index): boolean {\n return index === KEY_INDEX || this.indexMap_.hasIndex(index);\n }\n equals(other: Node): boolean {\n if (other === this) {\n return true;\n } else if (other.isLeafNode()) {\n return false;\n } else {\n const otherChildrenNode = other as ChildrenNode;\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\n return false;\n } else if (\n this.children_.count() === otherChildrenNode.children_.count()\n ) {\n const thisIter = this.getIterator(PRIORITY_INDEX);\n const otherIter = otherChildrenNode.getIterator(PRIORITY_INDEX);\n let thisCurrent = thisIter.getNext();\n let otherCurrent = otherIter.getNext();\n while (thisCurrent && otherCurrent) {\n if (\n thisCurrent.name !== otherCurrent.name ||\n !thisCurrent.node.equals(otherCurrent.node)\n ) {\n return false;\n }\n thisCurrent = thisIter.getNext();\n otherCurrent = otherIter.getNext();\n }\n return thisCurrent === null && otherCurrent === null;\n } else {\n return false;\n }\n }\n }\n\n /**\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\n * instead.\n *\n */\n private resolveIndex_(\n indexDefinition: Index\n ): SortedMap | null {\n if (indexDefinition === KEY_INDEX) {\n return null;\n } else {\n return this.indexMap_.get(indexDefinition.toString());\n }\n }\n}\n\nexport class MaxNode extends ChildrenNode {\n constructor() {\n super(\n new SortedMap(NAME_COMPARATOR),\n ChildrenNode.EMPTY_NODE,\n IndexMap.Default\n );\n }\n\n compareTo(other: Node): number {\n if (other === this) {\n return 0;\n } else {\n return 1;\n }\n }\n\n equals(other: Node): boolean {\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\n return other === this;\n }\n\n getPriority(): MaxNode {\n return this;\n }\n\n getImmediateChild(childName: string): ChildrenNode {\n return ChildrenNode.EMPTY_NODE;\n }\n\n isEmpty(): boolean {\n return false;\n }\n}\n\n/**\n * Marker that will sort higher than any other snapshot.\n */\nexport const MAX_NODE = new MaxNode();\n\n/**\n * Document NamedNode extensions\n */\ndeclare module './Node' {\n interface NamedNode {\n MIN: NamedNode;\n MAX: NamedNode;\n }\n}\n\nObject.defineProperties(NamedNode, {\n MIN: {\n value: new NamedNode(MIN_NAME, ChildrenNode.EMPTY_NODE)\n },\n MAX: {\n value: new NamedNode(MAX_NAME, MAX_NODE)\n }\n});\n\n/**\n * Reference Extensions\n */\nKeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\nLeafNode.__childrenNodeConstructor = ChildrenNode;\nsetMaxNode(MAX_NODE);\nsetPriorityMaxNode(MAX_NODE);\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { contains, assert } from '@firebase/util';\n\nimport { Indexable } from '../util/misc';\nimport { SortedMap } from '../util/SortedMap';\nimport { each } from '../util/util';\n\nimport { ChildrenNode } from './ChildrenNode';\nimport { buildChildSet } from './childSet';\nimport { NAME_COMPARATOR, NAME_ONLY_COMPARATOR } from './comparators';\nimport { PRIORITY_INDEX, setNodeFromJSON } from './indexes/PriorityIndex';\nimport { IndexMap } from './IndexMap';\nimport { LeafNode } from './LeafNode';\nimport { NamedNode, Node } from './Node';\n\nconst USE_HINZE = true;\n\n/**\n * Constructs a snapshot node representing the passed JSON and returns it.\n * @param json - JSON to create a node for.\n * @param priority - Optional priority to use. This will be ignored if the\n * passed JSON contains a .priority property.\n */\nexport function nodeFromJSON(\n json: unknown | null,\n priority: unknown = null\n): Node {\n if (json === null) {\n return ChildrenNode.EMPTY_NODE;\n }\n\n if (typeof json === 'object' && '.priority' in json) {\n priority = json['.priority'];\n }\n\n assert(\n priority === null ||\n typeof priority === 'string' ||\n typeof priority === 'number' ||\n (typeof priority === 'object' && '.sv' in (priority as object)),\n 'Invalid priority type found: ' + typeof priority\n );\n\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\n json = json['.value'];\n }\n\n // Valid leaf nodes include non-objects or server-value wrapper objects\n if (typeof json !== 'object' || '.sv' in json) {\n const jsonLeaf = json as string | number | boolean | Indexable;\n return new LeafNode(jsonLeaf, nodeFromJSON(priority));\n }\n\n if (!(json instanceof Array) && USE_HINZE) {\n const children: NamedNode[] = [];\n let childrenHavePriority = false;\n const hinzeJsonObj = json;\n each(hinzeJsonObj, (key, child) => {\n if (key.substring(0, 1) !== '.') {\n // Ignore metadata nodes\n const childNode = nodeFromJSON(child);\n if (!childNode.isEmpty()) {\n childrenHavePriority =\n childrenHavePriority || !childNode.getPriority().isEmpty();\n children.push(new NamedNode(key, childNode));\n }\n }\n });\n\n if (children.length === 0) {\n return ChildrenNode.EMPTY_NODE;\n }\n\n const childSet = buildChildSet(\n children,\n NAME_ONLY_COMPARATOR,\n namedNode => namedNode.name,\n NAME_COMPARATOR\n ) as SortedMap;\n if (childrenHavePriority) {\n const sortedChildSet = buildChildSet(\n children,\n PRIORITY_INDEX.getCompare()\n );\n return new ChildrenNode(\n childSet,\n nodeFromJSON(priority),\n new IndexMap(\n { '.priority': sortedChildSet },\n { '.priority': PRIORITY_INDEX }\n )\n );\n } else {\n return new ChildrenNode(\n childSet,\n nodeFromJSON(priority),\n IndexMap.Default\n );\n }\n } else {\n let node: Node = ChildrenNode.EMPTY_NODE;\n each(json, (key: string, childData: unknown) => {\n if (contains(json as object, key)) {\n if (key.substring(0, 1) !== '.') {\n // ignore metadata nodes.\n const childNode = nodeFromJSON(childData);\n if (childNode.isLeafNode() || !childNode.isEmpty()) {\n node = node.updateImmediateChild(key, childNode);\n }\n }\n }\n });\n\n return node.updatePriority(nodeFromJSON(priority));\n }\n}\n\nsetNodeFromJSON(nodeFromJSON);\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { Path, pathGetFront, pathIsEmpty, pathSlice } from '../../util/Path';\nimport { MAX_NAME, nameCompare } from '../../util/util';\nimport { ChildrenNode, MAX_NODE } from '../ChildrenNode';\nimport { NamedNode, Node } from '../Node';\nimport { nodeFromJSON } from '../nodeFromJSON';\n\nimport { Index } from './Index';\n\nexport class PathIndex extends Index {\n constructor(private indexPath_: Path) {\n super();\n\n assert(\n !pathIsEmpty(indexPath_) && pathGetFront(indexPath_) !== '.priority',\n \"Can't create PathIndex with empty path or .priority key\"\n );\n }\n\n protected extractChild(snap: Node): Node {\n return snap.getChild(this.indexPath_);\n }\n isDefinedOn(node: Node): boolean {\n return !node.getChild(this.indexPath_).isEmpty();\n }\n compare(a: NamedNode, b: NamedNode): number {\n const aChild = this.extractChild(a.node);\n const bChild = this.extractChild(b.node);\n const indexCmp = aChild.compareTo(bChild);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n } else {\n return indexCmp;\n }\n }\n makePost(indexValue: object, name: string): NamedNode {\n const valueNode = nodeFromJSON(indexValue);\n const node = ChildrenNode.EMPTY_NODE.updateChild(\n this.indexPath_,\n valueNode\n );\n return new NamedNode(name, node);\n }\n maxPost(): NamedNode {\n const node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, MAX_NODE);\n return new NamedNode(MAX_NAME, node);\n }\n toString(): string {\n return pathSlice(this.indexPath_, 0).join('/');\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { nameCompare } from '../../util/util';\nimport { NamedNode, Node } from '../Node';\nimport { nodeFromJSON } from '../nodeFromJSON';\n\nimport { Index } from './Index';\n\nexport class ValueIndex extends Index {\n compare(a: NamedNode, b: NamedNode): number {\n const indexCmp = a.node.compareTo(b.node);\n if (indexCmp === 0) {\n return nameCompare(a.name, b.name);\n } else {\n return indexCmp;\n }\n }\n isDefinedOn(node: Node): boolean {\n return true;\n }\n indexedValueChanged(oldNode: Node, newNode: Node): boolean {\n return !oldNode.equals(newNode);\n }\n minPost(): NamedNode {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (NamedNode as any).MIN;\n }\n maxPost(): NamedNode {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (NamedNode as any).MAX;\n }\n\n makePost(indexValue: object, name: string): NamedNode {\n const valueNode = nodeFromJSON(indexValue);\n return new NamedNode(name, valueNode);\n }\n\n /**\n * @returns String representation for inclusion in a query spec\n */\n toString(): string {\n return '.value';\n }\n}\n\nexport const VALUE_INDEX = new ValueIndex();\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '../snap/Node';\n\nexport const enum ChangeType {\n /** Event type for a child added */\n CHILD_ADDED = 'child_added',\n /** Event type for a child removed */\n CHILD_REMOVED = 'child_removed',\n /** Event type for a child changed */\n CHILD_CHANGED = 'child_changed',\n /** Event type for a child moved */\n CHILD_MOVED = 'child_moved',\n /** Event type for a value change */\n VALUE = 'value'\n}\n\nexport interface Change {\n /** @param type - The event type */\n type: ChangeType;\n /** @param snapshotNode - The data */\n snapshotNode: Node;\n /** @param childName - The name for this child, if it's a child even */\n childName?: string;\n /** @param oldSnap - Used for intermediate processing of child changed events */\n oldSnap?: Node;\n /** * @param prevName - The name for the previous child, if applicable */\n prevName?: string | null;\n}\n\nexport function changeValue(snapshotNode: Node): Change {\n return { type: ChangeType.VALUE, snapshotNode };\n}\n\nexport function changeChildAdded(\n childName: string,\n snapshotNode: Node\n): Change {\n return { type: ChangeType.CHILD_ADDED, snapshotNode, childName };\n}\n\nexport function changeChildRemoved(\n childName: string,\n snapshotNode: Node\n): Change {\n return { type: ChangeType.CHILD_REMOVED, snapshotNode, childName };\n}\n\nexport function changeChildChanged(\n childName: string,\n snapshotNode: Node,\n oldSnap: Node\n): Change {\n return {\n type: ChangeType.CHILD_CHANGED,\n snapshotNode,\n childName,\n oldSnap\n };\n}\n\nexport function changeChildMoved(\n childName: string,\n snapshotNode: Node\n): Change {\n return { type: ChangeType.CHILD_MOVED, snapshotNode, childName };\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { ChildrenNode } from '../../snap/ChildrenNode';\nimport { Index } from '../../snap/indexes/Index';\nimport { PRIORITY_INDEX } from '../../snap/indexes/PriorityIndex';\nimport { Node } from '../../snap/Node';\nimport { Path } from '../../util/Path';\nimport {\n changeChildAdded,\n changeChildChanged,\n changeChildRemoved\n} from '../Change';\nimport { ChildChangeAccumulator } from '../ChildChangeAccumulator';\nimport { CompleteChildSource } from '../CompleteChildSource';\n\nimport { NodeFilter } from './NodeFilter';\n\n/**\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\n */\nexport class IndexedFilter implements NodeFilter {\n constructor(private readonly index_: Index) {}\n\n updateChild(\n snap: Node,\n key: string,\n newChild: Node,\n affectedPath: Path,\n source: CompleteChildSource,\n optChangeAccumulator: ChildChangeAccumulator | null\n ): Node {\n assert(\n snap.isIndexed(this.index_),\n 'A node must be indexed if only a child is updated'\n );\n const oldChild = snap.getImmediateChild(key);\n // Check if anything actually changed.\n if (\n oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))\n ) {\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\n // to avoid treating these cases as \"nothing changed.\"\n if (oldChild.isEmpty() === newChild.isEmpty()) {\n // Nothing changed.\n\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\n return snap;\n }\n }\n\n if (optChangeAccumulator != null) {\n if (newChild.isEmpty()) {\n if (snap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(\n changeChildRemoved(key, oldChild)\n );\n } else {\n assert(\n snap.isLeafNode(),\n 'A child remove without an old child only makes sense on a leaf node'\n );\n }\n } else if (oldChild.isEmpty()) {\n optChangeAccumulator.trackChildChange(changeChildAdded(key, newChild));\n } else {\n optChangeAccumulator.trackChildChange(\n changeChildChanged(key, newChild, oldChild)\n );\n }\n }\n if (snap.isLeafNode() && newChild.isEmpty()) {\n return snap;\n } else {\n // Make sure the node is indexed\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\n }\n }\n updateFullNode(\n oldSnap: Node,\n newSnap: Node,\n optChangeAccumulator: ChildChangeAccumulator | null\n ): Node {\n if (optChangeAccumulator != null) {\n if (!oldSnap.isLeafNode()) {\n oldSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (!newSnap.hasChild(key)) {\n optChangeAccumulator.trackChildChange(\n changeChildRemoved(key, childNode)\n );\n }\n });\n }\n if (!newSnap.isLeafNode()) {\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (oldSnap.hasChild(key)) {\n const oldChild = oldSnap.getImmediateChild(key);\n if (!oldChild.equals(childNode)) {\n optChangeAccumulator.trackChildChange(\n changeChildChanged(key, childNode, oldChild)\n );\n }\n } else {\n optChangeAccumulator.trackChildChange(\n changeChildAdded(key, childNode)\n );\n }\n });\n }\n }\n return newSnap.withIndex(this.index_);\n }\n updatePriority(oldSnap: Node, newPriority: Node): Node {\n if (oldSnap.isEmpty()) {\n return ChildrenNode.EMPTY_NODE;\n } else {\n return oldSnap.updatePriority(newPriority);\n }\n }\n filtersNodes(): boolean {\n return false;\n }\n getIndexedFilter(): IndexedFilter {\n return this;\n }\n getIndex(): Index {\n return this.index_;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NamedNode, Node } from '../../../core/snap/Node';\nimport { ChildrenNode } from '../../snap/ChildrenNode';\nimport { Index } from '../../snap/indexes/Index';\nimport { PRIORITY_INDEX } from '../../snap/indexes/PriorityIndex';\nimport { Path } from '../../util/Path';\nimport { ChildChangeAccumulator } from '../ChildChangeAccumulator';\nimport { CompleteChildSource } from '../CompleteChildSource';\nimport { QueryParams } from '../QueryParams';\n\nimport { IndexedFilter } from './IndexedFilter';\nimport { NodeFilter } from './NodeFilter';\n\n/**\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\n */\nexport class RangedFilter implements NodeFilter {\n private indexedFilter_: IndexedFilter;\n\n private index_: Index;\n\n private startPost_: NamedNode;\n\n private endPost_: NamedNode;\n\n private startIsInclusive_: boolean;\n\n private endIsInclusive_: boolean;\n\n constructor(params: QueryParams) {\n this.indexedFilter_ = new IndexedFilter(params.getIndex());\n this.index_ = params.getIndex();\n this.startPost_ = RangedFilter.getStartPost_(params);\n this.endPost_ = RangedFilter.getEndPost_(params);\n this.startIsInclusive_ = !params.startAfterSet_;\n this.endIsInclusive_ = !params.endBeforeSet_;\n }\n\n getStartPost(): NamedNode {\n return this.startPost_;\n }\n\n getEndPost(): NamedNode {\n return this.endPost_;\n }\n\n matches(node: NamedNode): boolean {\n const isWithinStart = this.startIsInclusive_\n ? this.index_.compare(this.getStartPost(), node) <= 0\n : this.index_.compare(this.getStartPost(), node) < 0;\n const isWithinEnd = this.endIsInclusive_\n ? this.index_.compare(node, this.getEndPost()) <= 0\n : this.index_.compare(node, this.getEndPost()) < 0;\n return isWithinStart && isWithinEnd;\n }\n updateChild(\n snap: Node,\n key: string,\n newChild: Node,\n affectedPath: Path,\n source: CompleteChildSource,\n optChangeAccumulator: ChildChangeAccumulator | null\n ): Node {\n if (!this.matches(new NamedNode(key, newChild))) {\n newChild = ChildrenNode.EMPTY_NODE;\n }\n return this.indexedFilter_.updateChild(\n snap,\n key,\n newChild,\n affectedPath,\n source,\n optChangeAccumulator\n );\n }\n updateFullNode(\n oldSnap: Node,\n newSnap: Node,\n optChangeAccumulator: ChildChangeAccumulator | null\n ): Node {\n if (newSnap.isLeafNode()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n newSnap = ChildrenNode.EMPTY_NODE;\n }\n let filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\n const self = this;\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\n if (!self.matches(new NamedNode(key, childNode))) {\n filtered = filtered.updateImmediateChild(key, ChildrenNode.EMPTY_NODE);\n }\n });\n return this.indexedFilter_.updateFullNode(\n oldSnap,\n filtered,\n optChangeAccumulator\n );\n }\n updatePriority(oldSnap: Node, newPriority: Node): Node {\n // Don't support priorities on queries\n return oldSnap;\n }\n filtersNodes(): boolean {\n return true;\n }\n getIndexedFilter(): IndexedFilter {\n return this.indexedFilter_;\n }\n getIndex(): Index {\n return this.index_;\n }\n\n private static getStartPost_(params: QueryParams): NamedNode {\n if (params.hasStart()) {\n const startName = params.getIndexStartName();\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\n } else {\n return params.getIndex().minPost();\n }\n }\n\n private static getEndPost_(params: QueryParams): NamedNode {\n if (params.hasEnd()) {\n const endName = params.getIndexEndName();\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\n } else {\n return params.getIndex().maxPost();\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { ChildrenNode } from '../../snap/ChildrenNode';\nimport { Index } from '../../snap/indexes/Index';\nimport { NamedNode, Node } from '../../snap/Node';\nimport { Path } from '../../util/Path';\nimport {\n changeChildAdded,\n changeChildChanged,\n changeChildRemoved\n} from '../Change';\nimport { ChildChangeAccumulator } from '../ChildChangeAccumulator';\nimport { CompleteChildSource } from '../CompleteChildSource';\nimport { QueryParams } from '../QueryParams';\n\nimport { IndexedFilter } from './IndexedFilter';\nimport { NodeFilter } from './NodeFilter';\nimport { RangedFilter } from './RangedFilter';\n\n/**\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\n */\nexport class LimitedFilter implements NodeFilter {\n private readonly rangedFilter_: RangedFilter;\n\n private readonly index_: Index;\n\n private readonly limit_: number;\n\n private readonly reverse_: boolean;\n\n private readonly startIsInclusive_: boolean;\n\n private readonly endIsInclusive_: boolean;\n\n constructor(params: QueryParams) {\n this.rangedFilter_ = new RangedFilter(params);\n this.index_ = params.getIndex();\n this.limit_ = params.getLimit();\n this.reverse_ = !params.isViewFromLeft();\n this.startIsInclusive_ = !params.startAfterSet_;\n this.endIsInclusive_ = !params.endBeforeSet_;\n }\n updateChild(\n snap: Node,\n key: string,\n newChild: Node,\n affectedPath: Path,\n source: CompleteChildSource,\n optChangeAccumulator: ChildChangeAccumulator | null\n ): Node {\n if (!this.rangedFilter_.matches(new NamedNode(key, newChild))) {\n newChild = ChildrenNode.EMPTY_NODE;\n }\n if (snap.getImmediateChild(key).equals(newChild)) {\n // No change\n return snap;\n } else if (snap.numChildren() < this.limit_) {\n return this.rangedFilter_\n .getIndexedFilter()\n .updateChild(\n snap,\n key,\n newChild,\n affectedPath,\n source,\n optChangeAccumulator\n );\n } else {\n return this.fullLimitUpdateChild_(\n snap,\n key,\n newChild,\n source,\n optChangeAccumulator\n );\n }\n }\n updateFullNode(\n oldSnap: Node,\n newSnap: Node,\n optChangeAccumulator: ChildChangeAccumulator | null\n ): Node {\n let filtered;\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\n // Make sure we have a children node with the correct index, not a leaf node;\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n } else {\n if (\n this.limit_ * 2 < newSnap.numChildren() &&\n newSnap.isIndexed(this.index_)\n ) {\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\n // anchor to the startPost, endPost, or last element as appropriate\n let iterator;\n if (this.reverse_) {\n iterator = (newSnap as ChildrenNode).getReverseIteratorFrom(\n this.rangedFilter_.getEndPost(),\n this.index_\n );\n } else {\n iterator = (newSnap as ChildrenNode).getIteratorFrom(\n this.rangedFilter_.getStartPost(),\n this.index_\n );\n }\n let count = 0;\n while (iterator.hasNext() && count < this.limit_) {\n const next = iterator.getNext();\n if (!this.withinDirectionalStart(next)) {\n // if we have not reached the start, skip to the next element\n continue;\n } else if (!this.withinDirectionalEnd(next)) {\n // if we have reached the end, stop adding elements\n break;\n } else {\n filtered = filtered.updateImmediateChild(next.name, next.node);\n count++;\n }\n }\n } else {\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\n filtered = newSnap.withIndex(this.index_);\n // Don't support priorities on queries\n filtered = filtered.updatePriority(\n ChildrenNode.EMPTY_NODE\n ) as ChildrenNode;\n\n let iterator;\n if (this.reverse_) {\n iterator = filtered.getReverseIterator(this.index_);\n } else {\n iterator = filtered.getIterator(this.index_);\n }\n\n let count = 0;\n while (iterator.hasNext()) {\n const next = iterator.getNext();\n const inRange =\n count < this.limit_ &&\n this.withinDirectionalStart(next) &&\n this.withinDirectionalEnd(next);\n if (inRange) {\n count++;\n } else {\n filtered = filtered.updateImmediateChild(\n next.name,\n ChildrenNode.EMPTY_NODE\n );\n }\n }\n }\n }\n return this.rangedFilter_\n .getIndexedFilter()\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\n }\n updatePriority(oldSnap: Node, newPriority: Node): Node {\n // Don't support priorities on queries\n return oldSnap;\n }\n filtersNodes(): boolean {\n return true;\n }\n getIndexedFilter(): IndexedFilter {\n return this.rangedFilter_.getIndexedFilter();\n }\n getIndex(): Index {\n return this.index_;\n }\n\n private fullLimitUpdateChild_(\n snap: Node,\n childKey: string,\n childSnap: Node,\n source: CompleteChildSource,\n changeAccumulator: ChildChangeAccumulator | null\n ): Node {\n // TODO: rename all cache stuff etc to general snap terminology\n let cmp;\n if (this.reverse_) {\n const indexCmp = this.index_.getCompare();\n cmp = (a: NamedNode, b: NamedNode) => indexCmp(b, a);\n } else {\n cmp = this.index_.getCompare();\n }\n const oldEventCache = snap as ChildrenNode;\n assert(oldEventCache.numChildren() === this.limit_, '');\n const newChildNamedNode = new NamedNode(childKey, childSnap);\n const windowBoundary = this.reverse_\n ? oldEventCache.getFirstChild(this.index_)\n : (oldEventCache.getLastChild(this.index_) as NamedNode);\n const inRange = this.rangedFilter_.matches(newChildNamedNode);\n if (oldEventCache.hasChild(childKey)) {\n const oldChildSnap = oldEventCache.getImmediateChild(childKey);\n let nextChild = source.getChildAfterChild(\n this.index_,\n windowBoundary,\n this.reverse_\n );\n while (\n nextChild != null &&\n (nextChild.name === childKey || oldEventCache.hasChild(nextChild.name))\n ) {\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\n // the limited filter...\n nextChild = source.getChildAfterChild(\n this.index_,\n nextChild,\n this.reverse_\n );\n }\n const compareNext =\n nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\n const remainsInWindow =\n inRange && !childSnap.isEmpty() && compareNext >= 0;\n if (remainsInWindow) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(\n changeChildChanged(childKey, childSnap, oldChildSnap)\n );\n }\n return oldEventCache.updateImmediateChild(childKey, childSnap);\n } else {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(\n changeChildRemoved(childKey, oldChildSnap)\n );\n }\n const newEventCache = oldEventCache.updateImmediateChild(\n childKey,\n ChildrenNode.EMPTY_NODE\n );\n const nextChildInRange =\n nextChild != null && this.rangedFilter_.matches(nextChild);\n if (nextChildInRange) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(\n changeChildAdded(nextChild.name, nextChild.node)\n );\n }\n return newEventCache.updateImmediateChild(\n nextChild.name,\n nextChild.node\n );\n } else {\n return newEventCache;\n }\n }\n } else if (childSnap.isEmpty()) {\n // we're deleting a node, but it was not in the window, so ignore it\n return snap;\n } else if (inRange) {\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\n if (changeAccumulator != null) {\n changeAccumulator.trackChildChange(\n changeChildRemoved(windowBoundary.name, windowBoundary.node)\n );\n changeAccumulator.trackChildChange(\n changeChildAdded(childKey, childSnap)\n );\n }\n return oldEventCache\n .updateImmediateChild(childKey, childSnap)\n .updateImmediateChild(windowBoundary.name, ChildrenNode.EMPTY_NODE);\n } else {\n return snap;\n }\n } else {\n return snap;\n }\n }\n\n private withinDirectionalStart = (node: NamedNode) =>\n this.reverse_ ? this.withinEndPost(node) : this.withinStartPost(node);\n\n private withinDirectionalEnd = (node: NamedNode) =>\n this.reverse_ ? this.withinStartPost(node) : this.withinEndPost(node);\n\n private withinStartPost = (node: NamedNode) => {\n const compareRes = this.index_.compare(\n this.rangedFilter_.getStartPost(),\n node\n );\n return this.startIsInclusive_ ? compareRes <= 0 : compareRes < 0;\n };\n\n private withinEndPost = (node: NamedNode) => {\n const compareRes = this.index_.compare(\n node,\n this.rangedFilter_.getEndPost()\n );\n return this.endIsInclusive_ ? compareRes <= 0 : compareRes < 0;\n };\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, stringify } from '@firebase/util';\n\nimport { Index } from '../snap/indexes/Index';\nimport { KEY_INDEX } from '../snap/indexes/KeyIndex';\nimport { PathIndex } from '../snap/indexes/PathIndex';\nimport { PRIORITY_INDEX, PriorityIndex } from '../snap/indexes/PriorityIndex';\nimport { VALUE_INDEX } from '../snap/indexes/ValueIndex';\nimport { MAX_NAME, MIN_NAME } from '../util/util';\n\nimport { IndexedFilter } from './filter/IndexedFilter';\nimport { LimitedFilter } from './filter/LimitedFilter';\nimport { NodeFilter } from './filter/NodeFilter';\nimport { RangedFilter } from './filter/RangedFilter';\n\n/**\n * Wire Protocol Constants\n */\nconst enum WIRE_PROTOCOL_CONSTANTS {\n INDEX_START_VALUE = 'sp',\n INDEX_START_NAME = 'sn',\n INDEX_START_IS_INCLUSIVE = 'sin',\n INDEX_END_VALUE = 'ep',\n INDEX_END_NAME = 'en',\n INDEX_END_IS_INCLUSIVE = 'ein',\n LIMIT = 'l',\n VIEW_FROM = 'vf',\n VIEW_FROM_LEFT = 'l',\n VIEW_FROM_RIGHT = 'r',\n INDEX = 'i'\n}\n\n/**\n * REST Query Constants\n */\nconst enum REST_QUERY_CONSTANTS {\n ORDER_BY = 'orderBy',\n PRIORITY_INDEX = '$priority',\n VALUE_INDEX = '$value',\n KEY_INDEX = '$key',\n START_AFTER = 'startAfter',\n START_AT = 'startAt',\n END_AT = 'endAt',\n END_BEFORE = 'endBefore',\n LIMIT_TO_FIRST = 'limitToFirst',\n LIMIT_TO_LAST = 'limitToLast'\n}\n\n/**\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\n * user-facing API level, so it is not done here.\n *\n * @internal\n */\nexport class QueryParams {\n limitSet_ = false;\n startSet_ = false;\n startNameSet_ = false;\n startAfterSet_ = false; // can only be true if startSet_ is true\n endSet_ = false;\n endNameSet_ = false;\n endBeforeSet_ = false; // can only be true if endSet_ is true\n limit_ = 0;\n viewFrom_ = '';\n indexStartValue_: unknown | null = null;\n indexStartName_ = '';\n indexEndValue_: unknown | null = null;\n indexEndName_ = '';\n index_: PriorityIndex = PRIORITY_INDEX;\n\n hasStart(): boolean {\n return this.startSet_;\n }\n\n /**\n * @returns True if it would return from left.\n */\n isViewFromLeft(): boolean {\n if (this.viewFrom_ === '') {\n // limit(), rather than limitToFirst or limitToLast was called.\n // This means that only one of startSet_ and endSet_ is true. Use them\n // to calculate which side of the view to anchor to. If neither is set,\n // anchor to the end.\n return this.startSet_;\n } else {\n return this.viewFrom_ === WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n }\n }\n\n /**\n * Only valid to call if hasStart() returns true\n */\n getIndexStartValue(): unknown {\n assert(this.startSet_, 'Only valid if start has been set');\n return this.indexStartValue_;\n }\n\n /**\n * Only valid to call if hasStart() returns true.\n * Returns the starting key name for the range defined by these query parameters\n */\n getIndexStartName(): string {\n assert(this.startSet_, 'Only valid if start has been set');\n if (this.startNameSet_) {\n return this.indexStartName_;\n } else {\n return MIN_NAME;\n }\n }\n\n hasEnd(): boolean {\n return this.endSet_;\n }\n\n /**\n * Only valid to call if hasEnd() returns true.\n */\n getIndexEndValue(): unknown {\n assert(this.endSet_, 'Only valid if end has been set');\n return this.indexEndValue_;\n }\n\n /**\n * Only valid to call if hasEnd() returns true.\n * Returns the end key name for the range defined by these query parameters\n */\n getIndexEndName(): string {\n assert(this.endSet_, 'Only valid if end has been set');\n if (this.endNameSet_) {\n return this.indexEndName_;\n } else {\n return MAX_NAME;\n }\n }\n\n hasLimit(): boolean {\n return this.limitSet_;\n }\n\n /**\n * @returns True if a limit has been set and it has been explicitly anchored\n */\n hasAnchoredLimit(): boolean {\n return this.limitSet_ && this.viewFrom_ !== '';\n }\n\n /**\n * Only valid to call if hasLimit() returns true\n */\n getLimit(): number {\n assert(this.limitSet_, 'Only valid if limit has been set');\n return this.limit_;\n }\n\n getIndex(): Index {\n return this.index_;\n }\n\n loadsAllData(): boolean {\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\n }\n\n isDefault(): boolean {\n return this.loadsAllData() && this.index_ === PRIORITY_INDEX;\n }\n\n copy(): QueryParams {\n const copy = new QueryParams();\n copy.limitSet_ = this.limitSet_;\n copy.limit_ = this.limit_;\n copy.startSet_ = this.startSet_;\n copy.startAfterSet_ = this.startAfterSet_;\n copy.indexStartValue_ = this.indexStartValue_;\n copy.startNameSet_ = this.startNameSet_;\n copy.indexStartName_ = this.indexStartName_;\n copy.endSet_ = this.endSet_;\n copy.endBeforeSet_ = this.endBeforeSet_;\n copy.indexEndValue_ = this.indexEndValue_;\n copy.endNameSet_ = this.endNameSet_;\n copy.indexEndName_ = this.indexEndName_;\n copy.index_ = this.index_;\n copy.viewFrom_ = this.viewFrom_;\n return copy;\n }\n}\n\nexport function queryParamsGetNodeFilter(queryParams: QueryParams): NodeFilter {\n if (queryParams.loadsAllData()) {\n return new IndexedFilter(queryParams.getIndex());\n } else if (queryParams.hasLimit()) {\n return new LimitedFilter(queryParams);\n } else {\n return new RangedFilter(queryParams);\n }\n}\n\nexport function queryParamsLimit(\n queryParams: QueryParams,\n newLimit: number\n): QueryParams {\n const newParams = queryParams.copy();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = '';\n return newParams;\n}\n\nexport function queryParamsLimitToFirst(\n queryParams: QueryParams,\n newLimit: number\n): QueryParams {\n const newParams = queryParams.copy();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n return newParams;\n}\n\nexport function queryParamsLimitToLast(\n queryParams: QueryParams,\n newLimit: number\n): QueryParams {\n const newParams = queryParams.copy();\n newParams.limitSet_ = true;\n newParams.limit_ = newLimit;\n newParams.viewFrom_ = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n return newParams;\n}\n\nexport function queryParamsStartAt(\n queryParams: QueryParams,\n indexValue: unknown,\n key?: string | null\n): QueryParams {\n const newParams = queryParams.copy();\n newParams.startSet_ = true;\n if (indexValue === undefined) {\n indexValue = null;\n }\n newParams.indexStartValue_ = indexValue;\n if (key != null) {\n newParams.startNameSet_ = true;\n newParams.indexStartName_ = key;\n } else {\n newParams.startNameSet_ = false;\n newParams.indexStartName_ = '';\n }\n return newParams;\n}\n\nexport function queryParamsStartAfter(\n queryParams: QueryParams,\n indexValue: unknown,\n key?: string | null\n): QueryParams {\n let params: QueryParams;\n if (queryParams.index_ === KEY_INDEX || !!key) {\n params = queryParamsStartAt(queryParams, indexValue, key);\n } else {\n params = queryParamsStartAt(queryParams, indexValue, MAX_NAME);\n }\n params.startAfterSet_ = true;\n return params;\n}\n\nexport function queryParamsEndAt(\n queryParams: QueryParams,\n indexValue: unknown,\n key?: string | null\n): QueryParams {\n const newParams = queryParams.copy();\n newParams.endSet_ = true;\n if (indexValue === undefined) {\n indexValue = null;\n }\n newParams.indexEndValue_ = indexValue;\n if (key !== undefined) {\n newParams.endNameSet_ = true;\n newParams.indexEndName_ = key;\n } else {\n newParams.endNameSet_ = false;\n newParams.indexEndName_ = '';\n }\n return newParams;\n}\n\nexport function queryParamsEndBefore(\n queryParams: QueryParams,\n indexValue: unknown,\n key?: string | null\n): QueryParams {\n let params: QueryParams;\n if (queryParams.index_ === KEY_INDEX || !!key) {\n params = queryParamsEndAt(queryParams, indexValue, key);\n } else {\n params = queryParamsEndAt(queryParams, indexValue, MIN_NAME);\n }\n params.endBeforeSet_ = true;\n return params;\n}\n\nexport function queryParamsOrderBy(\n queryParams: QueryParams,\n index: Index\n): QueryParams {\n const newParams = queryParams.copy();\n newParams.index_ = index;\n return newParams;\n}\n\n/**\n * Returns a set of REST query string parameters representing this query.\n *\n * @returns query string parameters\n */\nexport function queryParamsToRestQueryStringParameters(\n queryParams: QueryParams\n): Record {\n const qs: Record = {};\n\n if (queryParams.isDefault()) {\n return qs;\n }\n\n let orderBy;\n if (queryParams.index_ === PRIORITY_INDEX) {\n orderBy = REST_QUERY_CONSTANTS.PRIORITY_INDEX;\n } else if (queryParams.index_ === VALUE_INDEX) {\n orderBy = REST_QUERY_CONSTANTS.VALUE_INDEX;\n } else if (queryParams.index_ === KEY_INDEX) {\n orderBy = REST_QUERY_CONSTANTS.KEY_INDEX;\n } else {\n assert(queryParams.index_ instanceof PathIndex, 'Unrecognized index type!');\n orderBy = queryParams.index_.toString();\n }\n qs[REST_QUERY_CONSTANTS.ORDER_BY] = stringify(orderBy);\n\n if (queryParams.startSet_) {\n const startParam = queryParams.startAfterSet_\n ? REST_QUERY_CONSTANTS.START_AFTER\n : REST_QUERY_CONSTANTS.START_AT;\n qs[startParam] = stringify(queryParams.indexStartValue_);\n if (queryParams.startNameSet_) {\n qs[startParam] += ',' + stringify(queryParams.indexStartName_);\n }\n }\n\n if (queryParams.endSet_) {\n const endParam = queryParams.endBeforeSet_\n ? REST_QUERY_CONSTANTS.END_BEFORE\n : REST_QUERY_CONSTANTS.END_AT;\n qs[endParam] = stringify(queryParams.indexEndValue_);\n if (queryParams.endNameSet_) {\n qs[endParam] += ',' + stringify(queryParams.indexEndName_);\n }\n }\n\n if (queryParams.limitSet_) {\n if (queryParams.isViewFromLeft()) {\n qs[REST_QUERY_CONSTANTS.LIMIT_TO_FIRST] = queryParams.limit_;\n } else {\n qs[REST_QUERY_CONSTANTS.LIMIT_TO_LAST] = queryParams.limit_;\n }\n }\n\n return qs;\n}\n\nexport function queryParamsGetQueryObject(\n queryParams: QueryParams\n): Record {\n const obj: Record = {};\n if (queryParams.startSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] =\n queryParams.indexStartValue_;\n if (queryParams.startNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] =\n queryParams.indexStartName_;\n }\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_IS_INCLUSIVE] =\n !queryParams.startAfterSet_;\n }\n if (queryParams.endSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = queryParams.indexEndValue_;\n if (queryParams.endNameSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = queryParams.indexEndName_;\n }\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_IS_INCLUSIVE] =\n !queryParams.endBeforeSet_;\n }\n if (queryParams.limitSet_) {\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = queryParams.limit_;\n let viewFrom = queryParams.viewFrom_;\n if (viewFrom === '') {\n if (queryParams.isViewFromLeft()) {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\n } else {\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\n }\n }\n obj[WIRE_PROTOCOL_CONSTANTS.VIEW_FROM] = viewFrom;\n }\n // For now, priority index is the default, so we only specify if it's some other index\n if (queryParams.index_ !== PRIORITY_INDEX) {\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = queryParams.index_.toString();\n }\n return obj;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n jsonEval,\n safeGet,\n querystring,\n Deferred\n} from '@firebase/util';\n\nimport { AppCheckTokenProvider } from './AppCheckTokenProvider';\nimport { AuthTokenProvider } from './AuthTokenProvider';\nimport { RepoInfo } from './RepoInfo';\nimport { ServerActions } from './ServerActions';\nimport { logWrapper, warn } from './util/util';\nimport { QueryContext } from './view/EventRegistration';\nimport { queryParamsToRestQueryStringParameters } from './view/QueryParams';\n\n/**\n * An implementation of ServerActions that communicates with the server via REST requests.\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\n * persistent connection (using WebSockets or long-polling)\n */\nexport class ReadonlyRestClient extends ServerActions {\n reportStats(stats: { [k: string]: unknown }): void {\n throw new Error('Method not implemented.');\n }\n\n /** @private {function(...[*])} */\n private log_: (...args: unknown[]) => void = logWrapper('p:rest:');\n\n /**\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\n * that's been removed. :-/\n */\n private listens_: { [k: string]: object } = {};\n\n static getListenId_(query: QueryContext, tag?: number | null): string {\n if (tag !== undefined) {\n return 'tag$' + tag;\n } else {\n assert(\n query._queryParams.isDefault(),\n \"should have a tag if it's not a default query.\"\n );\n return query._path.toString();\n }\n }\n\n /**\n * @param repoInfo_ - Data about the namespace we are connecting to\n * @param onDataUpdate_ - A callback for new data from the server\n */\n constructor(\n private repoInfo_: RepoInfo,\n private onDataUpdate_: (\n a: string,\n b: unknown,\n c: boolean,\n d: number | null\n ) => void,\n private authTokenProvider_: AuthTokenProvider,\n private appCheckTokenProvider_: AppCheckTokenProvider\n ) {\n super();\n }\n\n /** @inheritDoc */\n listen(\n query: QueryContext,\n currentHashFn: () => string,\n tag: number | null,\n onComplete: (a: string, b: unknown) => void\n ) {\n const pathString = query._path.toString();\n this.log_('Listen called for ' + pathString + ' ' + query._queryIdentifier);\n\n // Mark this listener so we can tell if it's removed.\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\n const thisListen = {};\n this.listens_[listenId] = thisListen;\n\n const queryStringParameters = queryParamsToRestQueryStringParameters(\n query._queryParams\n );\n\n this.restRequest_(\n pathString + '.json',\n queryStringParameters,\n (error, result) => {\n let data = result;\n\n if (error === 404) {\n data = null;\n error = null;\n }\n\n if (error === null) {\n this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\n }\n\n if (safeGet(this.listens_, listenId) === thisListen) {\n let status;\n if (!error) {\n status = 'ok';\n } else if (error === 401) {\n status = 'permission_denied';\n } else {\n status = 'rest_error:' + error;\n }\n\n onComplete(status, null);\n }\n }\n );\n }\n\n /** @inheritDoc */\n unlisten(query: QueryContext, tag: number | null) {\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\n delete this.listens_[listenId];\n }\n\n get(query: QueryContext): Promise {\n const queryStringParameters = queryParamsToRestQueryStringParameters(\n query._queryParams\n );\n\n const pathString = query._path.toString();\n\n const deferred = new Deferred();\n\n this.restRequest_(\n pathString + '.json',\n queryStringParameters,\n (error, result) => {\n let data = result;\n\n if (error === 404) {\n data = null;\n error = null;\n }\n\n if (error === null) {\n this.onDataUpdate_(\n pathString,\n data,\n /*isMerge=*/ false,\n /*tag=*/ null\n );\n deferred.resolve(data as string);\n } else {\n deferred.reject(new Error(data as string));\n }\n }\n );\n return deferred.promise;\n }\n\n /** @inheritDoc */\n refreshAuthToken(token: string) {\n // no-op since we just always call getToken.\n }\n\n /**\n * Performs a REST request to the given path, with the provided query string parameters,\n * and any auth credentials we have.\n */\n private restRequest_(\n pathString: string,\n queryStringParameters: { [k: string]: string | number } = {},\n callback: ((a: number | null, b?: unknown) => void) | null\n ) {\n queryStringParameters['format'] = 'export';\n\n return Promise.all([\n this.authTokenProvider_.getToken(/*forceRefresh=*/ false),\n this.appCheckTokenProvider_.getToken(/*forceRefresh=*/ false)\n ]).then(([authToken, appCheckToken]) => {\n if (authToken && authToken.accessToken) {\n queryStringParameters['auth'] = authToken.accessToken;\n }\n if (appCheckToken && appCheckToken.token) {\n queryStringParameters['ac'] = appCheckToken.token;\n }\n\n const url =\n (this.repoInfo_.secure ? 'https://' : 'http://') +\n this.repoInfo_.host +\n pathString +\n '?' +\n 'ns=' +\n this.repoInfo_.namespace +\n querystring(queryStringParameters);\n\n this.log_('Sending REST request for ' + url);\n const xhr = new XMLHttpRequest();\n xhr.onreadystatechange = () => {\n if (callback && xhr.readyState === 4) {\n this.log_(\n 'REST Response for ' + url + ' received. status:',\n xhr.status,\n 'response:',\n xhr.responseText\n );\n let res = null;\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n res = jsonEval(xhr.responseText);\n } catch (e) {\n warn(\n 'Failed to parse JSON response for ' +\n url +\n ': ' +\n xhr.responseText\n );\n }\n callback(null, res);\n } else {\n // 401 and 404 are expected.\n if (xhr.status !== 401 && xhr.status !== 404) {\n warn(\n 'Got unsuccessful REST response for ' +\n url +\n ' Status: ' +\n xhr.status\n );\n }\n callback(xhr.status);\n }\n callback = null;\n }\n };\n\n xhr.open('GET', url, /*asynchronous=*/ true);\n xhr.send();\n });\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\n * params object (e.g. {arg: 'val', arg2: 'val2'})\n * Note: You must prepend it with ? when adding it to a URL.\n */\nexport function querystring(querystringParams: {\n [key: string]: string | number;\n}): string {\n const params = [];\n for (const [key, value] of Object.entries(querystringParams)) {\n if (Array.isArray(value)) {\n value.forEach(arrayVal => {\n params.push(\n encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal)\n );\n });\n } else {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n return params.length ? '&' + params.join('&') : '';\n}\n\n/**\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\n * (e.g. {arg: 'val', arg2: 'val2'})\n */\nexport function querystringDecode(querystring: string): Record {\n const obj: Record = {};\n const tokens = querystring.replace(/^\\?/, '').split('&');\n\n tokens.forEach(token => {\n if (token) {\n const [key, value] = token.split('=');\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n });\n return obj;\n}\n\n/**\n * Extract the query string part of a URL, including the leading question mark (if present).\n */\nexport function extractQuerystring(url: string): string {\n const queryStart = url.indexOf('?');\n if (!queryStart) {\n return '';\n }\n const fragmentStart = url.indexOf('#', queryStart);\n return url.substring(\n queryStart,\n fragmentStart > 0 ? fragmentStart : undefined\n );\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChildrenNode } from './snap/ChildrenNode';\nimport { Node } from './snap/Node';\nimport { Path } from './util/Path';\n\n/**\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\n */\nexport class SnapshotHolder {\n private rootNode_: Node = ChildrenNode.EMPTY_NODE;\n\n getNode(path: Path): Node {\n return this.rootNode_.getChild(path);\n }\n\n updateSnapshot(path: Path, newSnapshotNode: Node) {\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PRIORITY_INDEX } from './snap/indexes/PriorityIndex';\nimport { Node } from './snap/Node';\nimport { Path, pathGetFront, pathIsEmpty, pathPopFront } from './util/Path';\n\n/**\n * Helper class to store a sparse set of snapshots.\n */\nexport interface SparseSnapshotTree {\n value: Node | null;\n readonly children: Map;\n}\n\nexport function newSparseSnapshotTree(): SparseSnapshotTree {\n return {\n value: null,\n children: new Map()\n };\n}\n\n/**\n * Gets the node stored at the given path if one exists.\n * Only seems to be used in tests.\n *\n * @param path - Path to look up snapshot for.\n * @returns The retrieved node, or null.\n */\nexport function sparseSnapshotTreeFind(\n sparseSnapshotTree: SparseSnapshotTree,\n path: Path\n): Node | null {\n if (sparseSnapshotTree.value != null) {\n return sparseSnapshotTree.value.getChild(path);\n } else if (!pathIsEmpty(path) && sparseSnapshotTree.children.size > 0) {\n const childKey = pathGetFront(path);\n path = pathPopFront(path);\n if (sparseSnapshotTree.children.has(childKey)) {\n const childTree = sparseSnapshotTree.children.get(childKey);\n return sparseSnapshotTreeFind(childTree, path);\n } else {\n return null;\n }\n } else {\n return null;\n }\n}\n\n/**\n * Stores the given node at the specified path. If there is already a node\n * at a shallower path, it merges the new data into that snapshot node.\n *\n * @param path - Path to look up snapshot for.\n * @param data - The new data, or null.\n */\nexport function sparseSnapshotTreeRemember(\n sparseSnapshotTree: SparseSnapshotTree,\n path: Path,\n data: Node\n): void {\n if (pathIsEmpty(path)) {\n sparseSnapshotTree.value = data;\n sparseSnapshotTree.children.clear();\n } else if (sparseSnapshotTree.value !== null) {\n sparseSnapshotTree.value = sparseSnapshotTree.value.updateChild(path, data);\n } else {\n const childKey = pathGetFront(path);\n if (!sparseSnapshotTree.children.has(childKey)) {\n sparseSnapshotTree.children.set(childKey, newSparseSnapshotTree());\n }\n\n const child = sparseSnapshotTree.children.get(childKey);\n path = pathPopFront(path);\n sparseSnapshotTreeRemember(child, path, data);\n }\n}\n\n/**\n * Purge the data at path from the cache.\n *\n * @param path - Path to look up snapshot for.\n * @returns True if this node should now be removed.\n */\nexport function sparseSnapshotTreeForget(\n sparseSnapshotTree: SparseSnapshotTree,\n path: Path\n): boolean {\n if (pathIsEmpty(path)) {\n sparseSnapshotTree.value = null;\n sparseSnapshotTree.children.clear();\n return true;\n } else {\n if (sparseSnapshotTree.value !== null) {\n if (sparseSnapshotTree.value.isLeafNode()) {\n // We're trying to forget a node that doesn't exist\n return false;\n } else {\n const value = sparseSnapshotTree.value;\n sparseSnapshotTree.value = null;\n\n value.forEachChild(PRIORITY_INDEX, (key, tree) => {\n sparseSnapshotTreeRemember(sparseSnapshotTree, new Path(key), tree);\n });\n\n return sparseSnapshotTreeForget(sparseSnapshotTree, path);\n }\n } else if (sparseSnapshotTree.children.size > 0) {\n const childKey = pathGetFront(path);\n path = pathPopFront(path);\n if (sparseSnapshotTree.children.has(childKey)) {\n const safeToRemove = sparseSnapshotTreeForget(\n sparseSnapshotTree.children.get(childKey),\n path\n );\n if (safeToRemove) {\n sparseSnapshotTree.children.delete(childKey);\n }\n }\n\n return sparseSnapshotTree.children.size === 0;\n } else {\n return true;\n }\n }\n}\n\n/**\n * Recursively iterates through all of the stored tree and calls the\n * callback on each one.\n *\n * @param prefixPath - Path to look up node for.\n * @param func - The function to invoke for each tree.\n */\nexport function sparseSnapshotTreeForEachTree(\n sparseSnapshotTree: SparseSnapshotTree,\n prefixPath: Path,\n func: (a: Path, b: Node) => unknown\n): void {\n if (sparseSnapshotTree.value !== null) {\n func(prefixPath, sparseSnapshotTree.value);\n } else {\n sparseSnapshotTreeForEachChild(sparseSnapshotTree, (key, tree) => {\n const path = new Path(prefixPath.toString() + '/' + key);\n sparseSnapshotTreeForEachTree(tree, path, func);\n });\n }\n}\n\n/**\n * Iterates through each immediate child and triggers the callback.\n * Only seems to be used in tests.\n *\n * @param func - The function to invoke for each child.\n */\nexport function sparseSnapshotTreeForEachChild(\n sparseSnapshotTree: SparseSnapshotTree,\n func: (a: string, b: SparseSnapshotTree) => void\n): void {\n sparseSnapshotTree.children.forEach((tree, key) => {\n func(key, tree);\n });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { each } from '../util/util';\n\nimport { StatsCollection } from './StatsCollection';\n\n/**\n * Returns the delta from the previous call to get stats.\n *\n * @param collection_ - The collection to \"listen\" to.\n */\nexport class StatsListener {\n private last_: { [k: string]: number } | null = null;\n\n constructor(private collection_: StatsCollection) {}\n\n get(): { [k: string]: number } {\n const newStats = this.collection_.get();\n\n const delta = { ...newStats };\n if (this.last_) {\n each(this.last_, (stat: string, value: number) => {\n delta[stat] = delta[stat] - value;\n });\n }\n this.last_ = newStats;\n\n return delta;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { contains } from '@firebase/util';\n\nimport { ServerActions } from '../ServerActions';\nimport { setTimeoutNonBlocking, each } from '../util/util';\n\nimport { StatsCollection } from './StatsCollection';\nimport { StatsListener } from './StatsListener';\n\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\n// seconds to try to ensure the Firebase connection is established / settled.\nconst FIRST_STATS_MIN_TIME = 10 * 1000;\nconst FIRST_STATS_MAX_TIME = 30 * 1000;\n\n// We'll continue to report stats on average every 5 minutes.\nconst REPORT_STATS_INTERVAL = 5 * 60 * 1000;\n\nexport class StatsReporter {\n private statsListener_: StatsListener;\n statsToReport_: { [k: string]: boolean } = {};\n\n constructor(collection: StatsCollection, private server_: ServerActions) {\n this.statsListener_ = new StatsListener(collection);\n\n const timeout =\n FIRST_STATS_MIN_TIME +\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\n }\n\n private reportStats_() {\n const stats = this.statsListener_.get();\n const reportedStats: typeof stats = {};\n let haveStatsToReport = false;\n\n each(stats, (stat: string, value: number) => {\n if (value > 0 && contains(this.statsToReport_, stat)) {\n reportedStats[stat] = value;\n haveStatsToReport = true;\n }\n });\n\n if (haveStatsToReport) {\n this.server_.reportStats(reportedStats);\n }\n\n // queue our next run.\n setTimeoutNonBlocking(\n this.reportStats_.bind(this),\n Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL)\n );\n }\n}\n\nexport function statsReporterIncludeStat(\n reporter: StatsReporter,\n stat: string\n) {\n reporter.statsToReport_[stat] = true;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Path } from '../util/Path';\n\n/**\n *\n * @enum\n */\nexport enum OperationType {\n OVERWRITE,\n MERGE,\n ACK_USER_WRITE,\n LISTEN_COMPLETE\n}\n\n/**\n * @interface\n */\nexport interface Operation {\n source: OperationSource;\n\n type: OperationType;\n\n path: Path;\n\n operationForChild(childName: string): Operation | null;\n}\n\nexport interface OperationSource {\n fromUser: boolean;\n fromServer: boolean;\n queryId: string | null;\n tagged: boolean;\n}\n\nexport function newOperationSourceUser(): OperationSource {\n return {\n fromUser: true,\n fromServer: false,\n queryId: null,\n tagged: false\n };\n}\n\nexport function newOperationSourceServer(): OperationSource {\n return {\n fromUser: false,\n fromServer: true,\n queryId: null,\n tagged: false\n };\n}\n\nexport function newOperationSourceServerTaggedQuery(\n queryId: string\n): OperationSource {\n return {\n fromUser: false,\n fromServer: true,\n queryId,\n tagged: true\n };\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { ImmutableTree } from '../util/ImmutableTree';\nimport {\n newEmptyPath,\n Path,\n pathGetFront,\n pathIsEmpty,\n pathPopFront\n} from '../util/Path';\n\nimport { newOperationSourceUser, Operation, OperationType } from './Operation';\n\nexport class AckUserWrite implements Operation {\n /** @inheritDoc */\n type = OperationType.ACK_USER_WRITE;\n\n /** @inheritDoc */\n source = newOperationSourceUser();\n\n /**\n * @param affectedTree - A tree containing true for each affected path. Affected paths can't overlap.\n */\n constructor(\n /** @inheritDoc */ public path: Path,\n /** @inheritDoc */ public affectedTree: ImmutableTree,\n /** @inheritDoc */ public revert: boolean\n ) {}\n operationForChild(childName: string): AckUserWrite {\n if (!pathIsEmpty(this.path)) {\n assert(\n pathGetFront(this.path) === childName,\n 'operationForChild called for unrelated child.'\n );\n return new AckUserWrite(\n pathPopFront(this.path),\n this.affectedTree,\n this.revert\n );\n } else if (this.affectedTree.value != null) {\n assert(\n this.affectedTree.children.isEmpty(),\n 'affectedTree should not have overlapping affected paths.'\n );\n // All child locations are affected as well; just return same operation.\n return this;\n } else {\n const childTree = this.affectedTree.subtree(new Path(childName));\n return new AckUserWrite(newEmptyPath(), childTree, this.revert);\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { newEmptyPath, Path, pathIsEmpty, pathPopFront } from '../util/Path';\n\nimport { Operation, OperationSource, OperationType } from './Operation';\n\nexport class ListenComplete implements Operation {\n /** @inheritDoc */\n type = OperationType.LISTEN_COMPLETE;\n\n constructor(public source: OperationSource, public path: Path) {}\n\n operationForChild(childName: string): ListenComplete {\n if (pathIsEmpty(this.path)) {\n return new ListenComplete(this.source, newEmptyPath());\n } else {\n return new ListenComplete(this.source, pathPopFront(this.path));\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '../snap/Node';\nimport { newEmptyPath, Path, pathIsEmpty, pathPopFront } from '../util/Path';\n\nimport { Operation, OperationSource, OperationType } from './Operation';\n\nexport class Overwrite implements Operation {\n /** @inheritDoc */\n type = OperationType.OVERWRITE;\n\n constructor(\n public source: OperationSource,\n public path: Path,\n public snap: Node\n ) {}\n\n operationForChild(childName: string): Overwrite {\n if (pathIsEmpty(this.path)) {\n return new Overwrite(\n this.source,\n newEmptyPath(),\n this.snap.getImmediateChild(childName)\n );\n } else {\n return new Overwrite(this.source, pathPopFront(this.path), this.snap);\n }\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { Node } from '../snap/Node';\nimport { ImmutableTree } from '../util/ImmutableTree';\nimport {\n newEmptyPath,\n Path,\n pathGetFront,\n pathIsEmpty,\n pathPopFront\n} from '../util/Path';\n\nimport { Operation, OperationSource, OperationType } from './Operation';\nimport { Overwrite } from './Overwrite';\n\nexport class Merge implements Operation {\n /** @inheritDoc */\n type = OperationType.MERGE;\n\n constructor(\n /** @inheritDoc */ public source: OperationSource,\n /** @inheritDoc */ public path: Path,\n /** @inheritDoc */ public children: ImmutableTree\n ) {}\n operationForChild(childName: string): Operation {\n if (pathIsEmpty(this.path)) {\n const childTree = this.children.subtree(new Path(childName));\n if (childTree.isEmpty()) {\n // This child is unaffected\n return null;\n } else if (childTree.value) {\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\n return new Overwrite(this.source, newEmptyPath(), childTree.value);\n } else {\n // This is a merge at a deeper level\n return new Merge(this.source, newEmptyPath(), childTree);\n }\n } else {\n assert(\n pathGetFront(this.path) === childName,\n \"Can't get a merge for a child not on the path of the operation\"\n );\n return new Merge(this.source, pathPopFront(this.path), this.children);\n }\n }\n toString(): string {\n return (\n 'Operation(' +\n this.path +\n ': ' +\n this.source.toString() +\n ' merge: ' +\n this.children.toString() +\n ')'\n );\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '../snap/Node';\nimport { Path, pathGetFront, pathIsEmpty } from '../util/Path';\n\n/**\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\n * whether a node potentially had children removed due to a filter.\n */\nexport class CacheNode {\n constructor(\n private node_: Node,\n private fullyInitialized_: boolean,\n private filtered_: boolean\n ) {}\n\n /**\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\n */\n isFullyInitialized(): boolean {\n return this.fullyInitialized_;\n }\n\n /**\n * Returns whether this node is potentially missing children due to a filter applied to the node\n */\n isFiltered(): boolean {\n return this.filtered_;\n }\n\n isCompleteForPath(path: Path): boolean {\n if (pathIsEmpty(path)) {\n return this.isFullyInitialized() && !this.filtered_;\n }\n\n const childKey = pathGetFront(path);\n return this.isCompleteForChild(childKey);\n }\n\n isCompleteForChild(key: string): boolean {\n return (\n (this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key)\n );\n }\n\n getNode(): Node {\n return this.node_;\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertionError } from '@firebase/util';\n\nimport { Index } from '../snap/indexes/Index';\nimport { NamedNode, Node } from '../snap/Node';\n\nimport { Change, ChangeType, changeChildMoved } from './Change';\nimport { Event } from './Event';\nimport { EventRegistration, QueryContext } from './EventRegistration';\n\n/**\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\n * for details.\n *\n */\nexport class EventGenerator {\n index_: Index;\n\n constructor(public query_: QueryContext) {\n this.index_ = this.query_._queryParams.getIndex();\n }\n}\n\n/**\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\n *\n * Notes:\n * - child_moved events will be synthesized at this time for any child_changed events that affect\n * our index.\n * - prevName will be calculated based on the index ordering.\n */\nexport function eventGeneratorGenerateEventsForChanges(\n eventGenerator: EventGenerator,\n changes: Change[],\n eventCache: Node,\n eventRegistrations: EventRegistration[]\n): Event[] {\n const events: Event[] = [];\n const moves: Change[] = [];\n\n changes.forEach(change => {\n if (\n change.type === ChangeType.CHILD_CHANGED &&\n eventGenerator.index_.indexedValueChanged(\n change.oldSnap as Node,\n change.snapshotNode\n )\n ) {\n moves.push(changeChildMoved(change.childName, change.snapshotNode));\n }\n });\n\n eventGeneratorGenerateEventsForType(\n eventGenerator,\n events,\n ChangeType.CHILD_REMOVED,\n changes,\n eventRegistrations,\n eventCache\n );\n eventGeneratorGenerateEventsForType(\n eventGenerator,\n events,\n ChangeType.CHILD_ADDED,\n changes,\n eventRegistrations,\n eventCache\n );\n eventGeneratorGenerateEventsForType(\n eventGenerator,\n events,\n ChangeType.CHILD_MOVED,\n moves,\n eventRegistrations,\n eventCache\n );\n eventGeneratorGenerateEventsForType(\n eventGenerator,\n events,\n ChangeType.CHILD_CHANGED,\n changes,\n eventRegistrations,\n eventCache\n );\n eventGeneratorGenerateEventsForType(\n eventGenerator,\n events,\n ChangeType.VALUE,\n changes,\n eventRegistrations,\n eventCache\n );\n\n return events;\n}\n\n/**\n * Given changes of a single change type, generate the corresponding events.\n */\nfunction eventGeneratorGenerateEventsForType(\n eventGenerator: EventGenerator,\n events: Event[],\n eventType: string,\n changes: Change[],\n registrations: EventRegistration[],\n eventCache: Node\n) {\n const filteredChanges = changes.filter(change => change.type === eventType);\n\n filteredChanges.sort((a, b) =>\n eventGeneratorCompareChanges(eventGenerator, a, b)\n );\n filteredChanges.forEach(change => {\n const materializedChange = eventGeneratorMaterializeSingleChange(\n eventGenerator,\n change,\n eventCache\n );\n registrations.forEach(registration => {\n if (registration.respondsTo(change.type)) {\n events.push(\n registration.createEvent(materializedChange, eventGenerator.query_)\n );\n }\n });\n });\n}\n\nfunction eventGeneratorMaterializeSingleChange(\n eventGenerator: EventGenerator,\n change: Change,\n eventCache: Node\n): Change {\n if (change.type === 'value' || change.type === 'child_removed') {\n return change;\n } else {\n change.prevName = eventCache.getPredecessorChildName(\n change.childName,\n change.snapshotNode,\n eventGenerator.index_\n );\n return change;\n }\n}\n\nfunction eventGeneratorCompareChanges(\n eventGenerator: EventGenerator,\n a: Change,\n b: Change\n) {\n if (a.childName == null || b.childName == null) {\n throw assertionError('Should only compare child_ events.');\n }\n const aWrapped = new NamedNode(a.childName, a.snapshotNode);\n const bWrapped = new NamedNode(b.childName, b.snapshotNode);\n return eventGenerator.index_.compare(aWrapped, bWrapped);\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '../snap/Node';\n\nimport { CacheNode } from './CacheNode';\n\n/**\n * Stores the data we have cached for a view.\n *\n * serverSnap is the cached server data, eventSnap is the cached event data (server data plus any local writes).\n */\nexport interface ViewCache {\n readonly eventCache: CacheNode;\n readonly serverCache: CacheNode;\n}\n\nexport function newViewCache(\n eventCache: CacheNode,\n serverCache: CacheNode\n): ViewCache {\n return { eventCache, serverCache };\n}\n\nexport function viewCacheUpdateEventSnap(\n viewCache: ViewCache,\n eventSnap: Node,\n complete: boolean,\n filtered: boolean\n): ViewCache {\n return newViewCache(\n new CacheNode(eventSnap, complete, filtered),\n viewCache.serverCache\n );\n}\n\nexport function viewCacheUpdateServerSnap(\n viewCache: ViewCache,\n serverSnap: Node,\n complete: boolean,\n filtered: boolean\n): ViewCache {\n return newViewCache(\n viewCache.eventCache,\n new CacheNode(serverSnap, complete, filtered)\n );\n}\n\nexport function viewCacheGetCompleteEventSnap(\n viewCache: ViewCache\n): Node | null {\n return viewCache.eventCache.isFullyInitialized()\n ? viewCache.eventCache.getNode()\n : null;\n}\n\nexport function viewCacheGetCompleteServerSnap(\n viewCache: ViewCache\n): Node | null {\n return viewCache.serverCache.isFullyInitialized()\n ? viewCache.serverCache.getNode()\n : null;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n newEmptyPath,\n Path,\n pathChild,\n pathGetFront,\n pathIsEmpty,\n pathPopFront\n} from './Path';\nimport { SortedMap } from './SortedMap';\nimport { each, stringCompare } from './util';\n\nlet emptyChildrenSingleton: SortedMap>;\n\n/**\n * Singleton empty children collection.\n *\n */\nconst EmptyChildren = (): SortedMap> => {\n if (!emptyChildrenSingleton) {\n emptyChildrenSingleton = new SortedMap>(\n stringCompare\n );\n }\n return emptyChildrenSingleton;\n};\n\n/**\n * A tree with immutable elements.\n */\nexport class ImmutableTree {\n static fromObject(obj: { [k: string]: T }): ImmutableTree {\n let tree: ImmutableTree = new ImmutableTree(null);\n each(obj, (childPath: string, childSnap: T) => {\n tree = tree.set(new Path(childPath), childSnap);\n });\n return tree;\n }\n\n constructor(\n public readonly value: T | null,\n public readonly children: SortedMap<\n string,\n ImmutableTree\n > = EmptyChildren()\n ) {}\n\n /**\n * True if the value is empty and there are no children\n */\n isEmpty(): boolean {\n return this.value === null && this.children.isEmpty();\n }\n\n /**\n * Given a path and predicate, return the first node and the path to that node\n * where the predicate returns true.\n *\n * TODO Do a perf test -- If we're creating a bunch of `{path: value:}`\n * objects on the way back out, it may be better to pass down a pathSoFar obj.\n *\n * @param relativePath - The remainder of the path\n * @param predicate - The predicate to satisfy to return a node\n */\n findRootMostMatchingPathAndValue(\n relativePath: Path,\n predicate: (a: T) => boolean\n ): { path: Path; value: T } | null {\n if (this.value != null && predicate(this.value)) {\n return { path: newEmptyPath(), value: this.value };\n } else {\n if (pathIsEmpty(relativePath)) {\n return null;\n } else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child !== null) {\n const childExistingPathAndValue =\n child.findRootMostMatchingPathAndValue(\n pathPopFront(relativePath),\n predicate\n );\n if (childExistingPathAndValue != null) {\n const fullPath = pathChild(\n new Path(front),\n childExistingPathAndValue.path\n );\n return { path: fullPath, value: childExistingPathAndValue.value };\n } else {\n return null;\n }\n } else {\n return null;\n }\n }\n }\n }\n\n /**\n * Find, if it exists, the shortest subpath of the given path that points a defined\n * value in the tree\n */\n findRootMostValueAndPath(\n relativePath: Path\n ): { path: Path; value: T } | null {\n return this.findRootMostMatchingPathAndValue(relativePath, () => true);\n }\n\n /**\n * @returns The subtree at the given path\n */\n subtree(relativePath: Path): ImmutableTree {\n if (pathIsEmpty(relativePath)) {\n return this;\n } else {\n const front = pathGetFront(relativePath);\n const childTree = this.children.get(front);\n if (childTree !== null) {\n return childTree.subtree(pathPopFront(relativePath));\n } else {\n return new ImmutableTree(null);\n }\n }\n }\n\n /**\n * Sets a value at the specified path.\n *\n * @param relativePath - Path to set value at.\n * @param toSet - Value to set.\n * @returns Resulting tree.\n */\n set(relativePath: Path, toSet: T | null): ImmutableTree {\n if (pathIsEmpty(relativePath)) {\n return new ImmutableTree(toSet, this.children);\n } else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front) || new ImmutableTree(null);\n const newChild = child.set(pathPopFront(relativePath), toSet);\n const newChildren = this.children.insert(front, newChild);\n return new ImmutableTree(this.value, newChildren);\n }\n }\n\n /**\n * Removes the value at the specified path.\n *\n * @param relativePath - Path to value to remove.\n * @returns Resulting tree.\n */\n remove(relativePath: Path): ImmutableTree {\n if (pathIsEmpty(relativePath)) {\n if (this.children.isEmpty()) {\n return new ImmutableTree(null);\n } else {\n return new ImmutableTree(null, this.children);\n }\n } else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child) {\n const newChild = child.remove(pathPopFront(relativePath));\n let newChildren;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n } else {\n newChildren = this.children.insert(front, newChild);\n }\n if (this.value === null && newChildren.isEmpty()) {\n return new ImmutableTree(null);\n } else {\n return new ImmutableTree(this.value, newChildren);\n }\n } else {\n return this;\n }\n }\n }\n\n /**\n * Gets a value from the tree.\n *\n * @param relativePath - Path to get value for.\n * @returns Value at path, or null.\n */\n get(relativePath: Path): T | null {\n if (pathIsEmpty(relativePath)) {\n return this.value;\n } else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front);\n if (child) {\n return child.get(pathPopFront(relativePath));\n } else {\n return null;\n }\n }\n }\n\n /**\n * Replace the subtree at the specified path with the given new tree.\n *\n * @param relativePath - Path to replace subtree for.\n * @param newTree - New tree.\n * @returns Resulting tree.\n */\n setTree(relativePath: Path, newTree: ImmutableTree): ImmutableTree {\n if (pathIsEmpty(relativePath)) {\n return newTree;\n } else {\n const front = pathGetFront(relativePath);\n const child = this.children.get(front) || new ImmutableTree(null);\n const newChild = child.setTree(pathPopFront(relativePath), newTree);\n let newChildren;\n if (newChild.isEmpty()) {\n newChildren = this.children.remove(front);\n } else {\n newChildren = this.children.insert(front, newChild);\n }\n return new ImmutableTree(this.value, newChildren);\n }\n }\n\n /**\n * Performs a depth first fold on this tree. Transforms a tree into a single\n * value, given a function that operates on the path to a node, an optional\n * current value, and a map of child names to folded subtrees\n */\n fold(fn: (path: Path, value: T, children: { [k: string]: V }) => V): V {\n return this.fold_(newEmptyPath(), fn);\n }\n\n /**\n * Recursive helper for public-facing fold() method\n */\n private fold_(\n pathSoFar: Path,\n fn: (path: Path, value: T | null, children: { [k: string]: V }) => V\n ): V {\n const accum: { [k: string]: V } = {};\n this.children.inorderTraversal(\n (childKey: string, childTree: ImmutableTree) => {\n accum[childKey] = childTree.fold_(pathChild(pathSoFar, childKey), fn);\n }\n );\n return fn(pathSoFar, this.value, accum);\n }\n\n /**\n * Find the first matching value on the given path. Return the result of applying f to it.\n */\n findOnPath(path: Path, f: (path: Path, value: T) => V | null): V | null {\n return this.findOnPath_(path, newEmptyPath(), f);\n }\n\n private findOnPath_(\n pathToFollow: Path,\n pathSoFar: Path,\n f: (path: Path, value: T) => V | null\n ): V | null {\n const result = this.value ? f(pathSoFar, this.value) : false;\n if (result) {\n return result;\n } else {\n if (pathIsEmpty(pathToFollow)) {\n return null;\n } else {\n const front = pathGetFront(pathToFollow)!;\n const nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.findOnPath_(\n pathPopFront(pathToFollow),\n pathChild(pathSoFar, front),\n f\n );\n } else {\n return null;\n }\n }\n }\n }\n\n foreachOnPath(\n path: Path,\n f: (path: Path, value: T) => void\n ): ImmutableTree {\n return this.foreachOnPath_(path, newEmptyPath(), f);\n }\n\n private foreachOnPath_(\n pathToFollow: Path,\n currentRelativePath: Path,\n f: (path: Path, value: T) => void\n ): ImmutableTree {\n if (pathIsEmpty(pathToFollow)) {\n return this;\n } else {\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n const front = pathGetFront(pathToFollow);\n const nextChild = this.children.get(front);\n if (nextChild) {\n return nextChild.foreachOnPath_(\n pathPopFront(pathToFollow),\n pathChild(currentRelativePath, front),\n f\n );\n } else {\n return new ImmutableTree(null);\n }\n }\n }\n\n /**\n * Calls the given function for each node in the tree that has a value.\n *\n * @param f - A function to be called with the path from the root of the tree to\n * a node, and the value at that node. Called in depth-first order.\n */\n foreach(f: (path: Path, value: T) => void) {\n this.foreach_(newEmptyPath(), f);\n }\n\n private foreach_(\n currentRelativePath: Path,\n f: (path: Path, value: T) => void\n ) {\n this.children.inorderTraversal((childName, childTree) => {\n childTree.foreach_(pathChild(currentRelativePath, childName), f);\n });\n if (this.value) {\n f(currentRelativePath, this.value);\n }\n }\n\n foreachChild(f: (name: string, value: T) => void) {\n this.children.inorderTraversal(\n (childName: string, childTree: ImmutableTree) => {\n if (childTree.value) {\n f(childName, childTree.value);\n }\n }\n );\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from '@firebase/util';\n\nimport { ChildrenNode } from './snap/ChildrenNode';\nimport { PRIORITY_INDEX } from './snap/indexes/PriorityIndex';\nimport { NamedNode, Node } from './snap/Node';\nimport { ImmutableTree } from './util/ImmutableTree';\nimport {\n newEmptyPath,\n newRelativePath,\n Path,\n pathChild,\n pathIsEmpty\n} from './util/Path';\nimport { each } from './util/util';\n\n/**\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\n * to reflect the write added.\n */\nexport class CompoundWrite {\n constructor(public writeTree_: ImmutableTree