{"version":3,"sources":["webpack:///./node_modules/@firebase/firestore/dist/index.esm2017.js"],"names":["b","V","t","this","uid","isAuthenticated","UNAUTHENTICATED","GOOGLE_CREDENTIALS","FIRST_PARTY","MOCK_USER","S","D","C","logLevel","N","DEBUG","_len","arguments","length","e","Array","_key","n","map","$","debug","k","ERROR","_len2","_key2","error","M","WARN","_len3","_key3","warn","JSON","stringify","O","undefined","Error","F","L","q","OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS","U","super","code","message","toString","name","K","promise","Promise","resolve","reject","G","user","type","headers","Map","set","Q","enqueueRetryable","j","token","changeListener","z","currentUser","i","forceRefresh","auth","s","o","u","r","async","addAuthTokenListener","onInit","setTimeout","getImmediate","optional","getToken","then","accessToken","removeAuthTokenListener","getUid","W","h","l","m","g","p","H","J","value","Y","I","appCheck","T","addTokenListener","removeTokenListener","Z","self","crypto","msCrypto","Uint8Array","getRandomValues","Math","floor","random","tt","charAt","et","nt","every","it","seconds","nanoseconds","fromMillis","Date","now","getTime","toMillis","String","padStart","rt","timestamp","_compareTo","isEqual","ot","segments","offset","len","comparator","slice","limit","forEach","push","construct","get","min","ut","toArray","join","canonicalString","_len4","_key4","indexOf","split","filter","ct","at","test","replace","isValidIdentifier","ht","path","fromString","popFirst","emptyPath","popLast","lastSegment","lt","indexId","collectionGroup","fields","indexState","UNKNOWN_ID","yt","toTimestamp","fromTimestamp","It","empty","pt","readTime","key","documentKey","largestBatchId","max","Tt","compareTo","Et","At","onCommittedListeners","vt","Rt","nextCallback","catchCallback","result","isDone","callbackAttached","next","wrapFailure","wrapSuccess","wrapUserFunction","call","waitFor","c","Dt","Ot","previousValue","sequenceNumberHandler","writeSequenceNumber","Ft","Bt","Lt","Number","isInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","ae","le","fe","me","Object","prototype","hasOwnProperty","ge","ye","pe","root","Te","EMPTY","insert","copy","BLACK","remove","isEmpty","left","right","size","minKey","maxKey","inorderTraversal","reverseTraversal","Ie","isReverse","nodeStack","pop","color","RED","fixUp","isRed","moveRedLeft","removeMin","rotateRight","moveRedRight","rotateLeft","colorFlip","check","pow","Ee","data","getIteratorFrom","hasNext","getNext","getIterator","Ae","has","add","iter","Re","sort","isPrefixOf","Pe","Ve","binaryString","atob","DOMException","fromCharCode","Symbol","iterator","charCodeAt","done","btoa","EMPTY_BYTE_STRING","Se","RegExp","De","exec","substr","nanos","Ce","xe","fromBase64String","fromUint8Array","Ne","mapValue","__type__","stringValue","ke","__previous_value__","Me","__local_write_time__","timestampValue","$e","databaseId","appId","persistenceKey","host","ssl","forceLongPolling","autoDetectLongPolling","longPollingOptions","useFetchStreams","Oe","projectId","database","Fe","Le","en","qe","booleanValue","bytesValue","referenceValue","geoPointValue","latitude","longitude","integerValue","doubleValue","isNaN","arrayValue","values","Ue","find","Ke","Ge","keys","Qe","je","toBase64","fromName","He","Je","Ye","Xe","Ze","tn","assign","un","getFieldsMap","isImmediateParentOf","applyChanges","field","cn","child","an","documentType","version","createTime","documentState","hasLocalMutations","hasCommittedMutations","clone","hn","position","inclusive","ln","isKeyField","dir","fn","dn","wn","_n","mn","op","createKeyFieldInFilter","Pn","Dn","Cn","xn","Nn","bn","Vn","matchesComparison","isInequality","gn","filters","yn","matches","reduce","concat","getFlattenedFilters","ft","In","Tn","An","Rn","getFilters","Sn","some","nullValue","kn","orderBy","startAt","endAt","dt","Mn","$n","En","On","Fn","isDocumentKey","Un","explicitOrderBy","limitType","wt","_t","Kn","Gn","Qn","jn","zn","getFirstInequalityField","Wn","Hn","keyField","Jn","Xn","Zn","ts","es","ns","isFoundDocument","hasCollectionId","ss","is","rs","os","mapKeyFn","equalsFn","inner","innerSize","splice","us","cs","as","hs","_len5","_key5","ls","overlayedDocument","fs","ws","ds","_s","ms","gs","_len6","_key6","ys","ps","Is","useProto3Json","Ts","Es","As","_","vs","bs","Vs","Ss","Ds","Cs","Ps","Ns","gt","serializer","Rs","xs","elements","ks","Os","transformResults","Fs","updateTime","exists","Bs","Ls","qs","isNoDocument","Ys","none","js","delete","zs","Us","Hs","fieldTransforms","setAll","convertToFoundDocument","setHasCommittedMutations","precondition","convertToUnknownDocument","Ws","convertToNoDocument","Ks","Js","setHasLocalMutations","unionWith","fieldMask","Gs","transform","Qs","$s","Xs","Zs","batchId","localWriteTime","baseMutations","mutations","mutationResults","applyToLocalView","mutatedFields","isValidDocument","ti","batch","commitVersion","docVersions","ei","mutation","si","count","unchangedNames","ii","ri","oi","ui","ci","onExistenceFilterMismatchCallbacks","ai","hi","TextEncoder","li","fi","encode","update","digest","di","DataView","buffer","getUint32","wi","bitmap","padding","hashCount","_i","fromNumber","multiply","compare","getBits","modulo","toNumber","ceil","mi","snapshotVersion","targetChanges","targetMismatches","documentUpdates","resolvedLimboDocuments","gi","createSynthesizedTargetChangeForCurrentChange","resumeToken","current","addedDocuments","modifiedDocuments","removedDocuments","yi","Pt","removedTargetIds","bt","pi","targetId","Vt","Ii","state","targetIds","cause","Ti","St","vi","Ct","xt","Nt","approximateByteSize","Ei","Gt","Qt","jt","zt","Ai","Wt","Jt","Yt","forEachTarget","Zt","te","$t","Ut","kt","removeTarget","Kt","ee","se","target","newNoDocument","ie","re","instance","notifyOnExistenceFilterMismatch","a","localCacheCount","existenceFilterCount","bloomFilter","applied","bitmapLength","bits","toUint8Array","oe","getRemoteKeysForTarget","ue","Mt","forEachWhile","purpose","setReadTime","he","qt","Ri","asc","desc","Pi","in","bi","and","or","Vi","Si","Di","toISOString","Ci","xi","Ni","ki","Mi","ur","$i","Oi","qi","Fi","Bi","Li","Ui","ji","updateMask","verify","updateTransforms","fieldPath","setToServerValue","appendMissingElements","removeAllFromArray","increment","isNone","currentDocument","Hi","documents","Ji","structuredQuery","parent","from","collectionId","allDescendants","rr","unaryFilter","sr","fieldFilter","er","compositeFilter","nr","create","where","direction","tr","before","Yi","Zi","ir","NaN","fromServerFormat","fieldPaths","cr","sequenceNumber","lastLimboFreeSnapshotVersion","expectedCount","ar","yr","br","ve","be","zr","rn","Wr","getEntries","index","so","cacheSizeCollectionThreshold","percentileToCollect","maximumSequenceNumbersToCollect","DEFAULT_COLLECTION_PERCENTILE","DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT","DEFAULT","DISABLED","lo","vo","changes","changesApplied","assertNotApplied","newInvalidDocument","getFromCache","getAllFromCache","No","ko","remoteDocumentCache","mutationQueue","documentOverlayCache","indexManager","getOverlay","getEntry","getLocalViewOfDocuments","populateOverlays","computeViews","getOverlays","getFieldMask","recalculateAndSaveOverlays","getAllMutationBatchesAffectingDocumentKeys","getReverseIterator","saveOverlays","getDocumentsMatchingDocumentQuery","getDocumentsMatchingCollectionGroupQuery","getDocumentsMatchingCollectionQuery","getAllFromCollectionGroup","getOverlaysForCollectionGroup","getDocument","getCollectionParents","getOverlaysForCollection","getDocumentsMatchingQuery","getKey","Mo","id","query","bundledQuery","$o","overlays","we","getCollectionGroup","Oo","Fo","addReference","removeReference","forEachInRange","firstAfterOrEqual","Bo","referenceDelegate","addToCollectionParentIndex","POSITIVE_INFINITY","shift","markPotentiallyOrphaned","Lo","docs","document","mutableCopy","qo","addEntry","removeEntry","Uo","persistence","lastRemoteSnapshotVersion","highestTargetId","targetCount","Ms","removeMatchingKeysForTargetId","containsKey","Ko","toKey","Go","toPromise","raiseOnCommittedEvent","currentSequenceNumber","Qo","getTargetCache","getMatchingKeysForTargetId","removeTargetData","Set","getRemoteDocumentCache","newChangeBuffer","fromPath","apply","tu","fromCache","docChanges","doc","eu","Ki","Gi","Qi","getIndexType","getDocumentsMatchingTarget","getDocuments","getMinOffset","zi","Wi","last","first","hasPendingWrites","nu","Xi","getBundleCache","getDocumentOverlayCache","getIndexManager","getMutationQueue","localDocuments","setIndexManager","initialize","runTransaction","collect","su","iu","getAllMutationBatches","removedBatchIds","addedBatchIds","ou","getLastRemoteSnapshotVersion","cu","au","getNextMutationBatchAfterBatchId","hu","getTargetData","allocateTargetId","addTargetData","lu","fu","_u","Ru","activeTargetIds","updateTimeMs","bu","Hr","Jr","onlineStateHandler","lr","dr","Vu","Su","Xr","Zr","eo","no","io","window","removeEventListener","addEventListener","Du","Cu","round","xu","BatchGetDocuments","Commit","RunQuery","RunAggregationQuery","Nu","ro","oo","co","ho","ku","Mu","databaseInfo","mo","yo","To","Eo","Ao","Io","setWithCredentials","listenOnce","COMPLETE","getLastErrorCode","NO_ERROR","getResponseJson","TIMEOUT","HTTP_ERROR","getStatus","getResponseText","isArray","status","toLowerCase","send","httpSessionIdParam","initMessageHeaders","messageUrlParams","sendRawJson","supportsCrossDomainXhr","internalChannelParams","forwardChannelRequestTimeoutMs","detectBufferingProxy","timeoutSeconds","longPollingTimeout","xmlHttpFactory","encodeInitMessageHeaders","createWebChannel","f","d","open","close","w","listen","EventType","OPEN","CLOSE","wo","MESSAGE","_o","STAT_EVENT","stat","PROXY","NOPROXY","fo","Ou","Fu","Bu","timerId","Po","bo","Vo","So","Do","Co","reset","cancel","enqueueAfterDelay","skipDelay","Lu","connection","authCredentialsProvider","appCheckCredentialsProvider","listener","stream","zo","Ho","Jo","xo","invalidateToken","Yo","ao","Xo","all","_ref9","Zo","uo","onMessage","start","enqueueAndForget","qu","Ro","targetChange","targetChangeType","documentChange","newFoundDocument","documentDelete","documentRemove","addTarget","labels","Wo","Uu","ru","lastStreamToken","uu","streamToken","writeResults","commitTime","writes","Ku","authCredentials","appCheckCredentials","_ref10","catch","_ref11","Qu","asyncQueue","wu","mu","yu","pu","Tu","ju","localStore","datastore","remoteSyncer","Eu","Au","vu","Pu","Yr","ec","Wu","zu","Hu","tc","Zu","pc","Yu","Ju","Xu","jo","withExpectedCount","gu","nc","sc","ic","Iu","rc","rejectListen","oc","Ht","ne","Xt","ce","withResumeToken","applyRemoteEvent","uc","cc","Ic","ac","hc","lc","fc","dc","wc","_c","applySuccessfulWrite","mc","rejectFailedWrite","gc","verifyOperationInProgress","handleCredentialChange","yc","bind","stop","Tc","targetTimeMs","removalCallback","deferred","timerHandle","handleDelayElapsed","clearTimeout","Ec","Ac","keyedMap","sortedSet","vc","Rc","oldDocs","mutatedKeys","syncStateChanged","excludesMetadataChanges","hasCachedResults","emptySet","Pc","listeners","bc","queries","onlineState","Vc","onListen","onError","$u","xc","Sc","onUnlisten","Dc","Cc","Nc","options","includeMetadataChanges","fromInitialDocuments","Fc","Bc","Lc","track","snapshot","qc","view","Uc","Kc","remoteStore","eventManager","sharedClientState","maxConcurrentLimboResolutions","Gc","pa","addLocalQueryTarget","Qc","isPrimaryClient","_ref12","ia","jc","removeLocalQueryTarget","isActiveQueryTarget","clearQueryState","na","Wc","trackRemovals","removeMatchingKeys","addMatchingKeys","withSequenceNumber","withLastLimboFreeSnapshotVersion","toMicroseconds","updateTargetData","updateLimboDocument","setTargetsMetadata","ua","Hc","setOnlineState","Jc","updateQueryState","oa","Yc","applyToRemoteDocument","removeMutationBatch","performConsistencyCheck","removeOverlaysForBatchId","recalculateAndSaveOverlaysForDocumentKeys","ea","ta","updateMutationState","Xc","lookupMutationBatch","sa","ra","ca","clear","handleUserChange","aa","Ia","Ea","synchronizeTabs","createSharedClientState","createPersistence","createLocalStore","gcScheduler","createGarbageCollectionScheduler","indexBackfillerScheduler","createIndexBackfillerScheduler","initialUser","shutdown","Pa","createDatastore","createRemoteStore","createEventManager","syncEngine","createSyncEngine","Va","observer","muted","xa","clientId","A","authCredentialListener","appCheckCredentialListener","isShuttingDown","enterRestrictedMode","enqueueAndForgetEvenWhileRestricted","_onlineComponents","terminate","_offlineComponents","Na","getConfiguration","setCredentialChangeListener","setDatabaseDeletedListener","ka","$a","setAppCheckTokenChangeListener","Ma","_uninitializedComponentsProvider","_offline","Oa","_online","qa","Ka","za","source","Ha","th","eh","nh","ih","rh","oh","substring","constructor","uh","_delegate","ah","credentials","ignoreUndefinedProperties","cache","localCache","cacheSizeBytes","sh","experimentalForceLongPolling","experimentalAutoDetectLongPolling","experimentalLongPollingOptions","hh","_authCredentials","_appCheckCredentials","_databaseId","_app","_persistenceKey","_settings","_settingsFrozen","_terminateTask","sessionIndex","iamToken","authTokenFactory","client","_terminate","app","settings","fh","converter","firestore","wh","dh","_query","_path","_h","_len7","_key7","gh","_len8","_key8","Ih","zc","visibilityState","enqueue","Zc","stack","includes","createAndSchedule","Th","vh","_queue","_firestoreClient","Vh","Ph","identifier","_initialized","_getSettings","_setSettings","mockUserToken","sub","user_id","lh","bh","verifyNotTerminated","_freezeSettings","_offlineComponentProvider","_onlineComponentProvider","_offlineKind","kind","Uh","_byteString","Kh","_len9","_key9","_internalPath","Qh","_methodName","jh","isFinite","_lat","_long","zh","Wh","Hh","Jh","Yh","la","fa","gl","methodName","ma","ga","_a","Xh","Zh","tl","ya","merge","mergeFields","dl","ll","wl","contains","yl","covers","el","ul","ml","da","hl","cl","fl","_toFieldTransform","wa","fromDate","ha","getPrototypeOf","_l","search","pl","_firestore","_userDataWriter","_document","_converter","Il","fromFirestore","convertValue","Tl","El","Wl","convertTimestamp","convertServerTimestamp","convertBytes","convertReference","convertGeoPoint","convertArray","convertObject","convertObjectMap","Hl","toFirestore","nf","sf","_firestoreImpl","metadata","rf","serverTimestamps","of","_snapshot","_cachedChanges","_cachedChangesIncludeMetadataChanges","oldIndex","newIndex","uf","af","Af","hf","convertDocumentKey","df","gf","_len17","_key17","Ef","toMutation","yf","pf","If","_len18","_key18","complete","getOverlayedDocuments","addMutationBatch","applyToLocalDocumentSet","addPendingMutation","_ref13","instanceIdentifier","getProvider","setMultipleInstances"],"mappings":"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","file":"7112840a-17fba0e4fba9ae3b74cc.js","sourcesContent":["import { _registerComponent, registerVersion, _getProvider, getApp, _removeServiceInstance, SDK_VERSION } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { FirebaseError, createMockUserToken, getModularInstance, deepEqual, getDefaultEmulatorHostnameAndPort, getUA, isIndexedDBAvailable, isSafari } from '@firebase/util';\nimport { Integer, XhrIo, EventType, ErrorCode, createWebChannelTransport, getStatEventTarget, FetchXmlHttpFactory, WebChannel, Event, Stat, Md5 } from '@firebase/webchannel-wrapper';\nconst b = \"@firebase/firestore\";\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 * Simple wrapper around a nullable UID. Mostly exists to make code more\n * readable.\n */\nclass V {\n constructor(t) {\n this.uid = t;\n }\n isAuthenticated() {\n return null != this.uid;\n }\n /**\n * Returns a key representing this user, suitable for inclusion in a\n * dictionary.\n */\n toKey() {\n return this.isAuthenticated() ? \"uid:\" + this.uid : \"anonymous-user\";\n }\n isEqual(t) {\n return t.uid === this.uid;\n }\n}\n\n/** A user with a null UID. */\nV.UNAUTHENTICATED = new V(null),\n// TODO(mikelehen): Look into getting a proper uid-equivalent for\n// non-FirebaseAuth providers.\nV.GOOGLE_CREDENTIALS = new V(\"google-credentials-uid\"), V.FIRST_PARTY = new V(\"first-party-uid\"), V.MOCK_USER = new V(\"mock-user\");\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 */\nlet S = \"9.23.0\";\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 */\nconst D = new Logger(\"@firebase/firestore\");\n\n// Helper methods are needed because variables can't be exported as read/write\nfunction C() {\n return D.logLevel;\n}\n\n/**\n * Sets the verbosity of Cloud Firestore logs (debug, error, or silent).\n *\n * @param logLevel - The verbosity you set for activity and error logging. Can\n * be any of the following values:\n *\n *
`silent` to turn off logging.
Each element in the return value is one term of the resulting DNF. For instance: For the\n * input: (A || B) && C, the DNF form is: (A && C) || (B && C), and the return value is a list\n * with two elements: a composite filter that performs (A && C), and a composite filter that\n * performs (B && C).\n *\n * @param filter the composite filter to calculate DNF transform for.\n * @return the terms in the DNF transform.\n */\nfunction Br(t) {\n if (0 === t.getFilters().length) return [];\n const e = Kr(Fr(t));\n return F(Ur(e)), Lr(e) || qr(e) ? [e] : e.getFilters();\n}\n\n/** Returns true if the given filter is a single field filter. e.g. (a == 10). */\nfunction Lr(t) {\n return t instanceof mn;\n}\n\n/**\n * Returns true if the given filter is the conjunction of one or more field filters. e.g. (a == 10\n * && b == 20)\n */\nfunction qr(t) {\n return t instanceof gn && In(t);\n}\n\n/**\n * Returns whether or not the given filter is in disjunctive normal form (DNF).\n *\n *
In boolean logic, a disjunctive normal form (DNF) is a canonical normal form of a logical\n * formula consisting of a disjunction of conjunctions; it can also be described as an OR of ANDs.\n *\n *
For more info, visit: https://en.wikipedia.org/wiki/Disjunctive_normal_form\n */\nfunction Ur(t) {\n return Lr(t) || qr(t) ||\n /**\n * Returns true if the given filter is the disjunction of one or more \"flat conjunctions\" and\n * field filters. e.g. (a == 10) || (b==20 && c==30)\n */\n function (t) {\n if (t instanceof gn && pn(t)) {\n for (const e of t.getFilters()) if (!Lr(e) && !qr(e)) return !1;\n return !0;\n }\n return !1;\n }(t);\n}\nfunction Kr(t) {\n if (F(t instanceof mn || t instanceof gn), t instanceof mn) return t;\n if (1 === t.filters.length) return Kr(t.filters[0]);\n // Compute DNF for each of the subfilters first\n const e = t.filters.map(t => Kr(t));\n let n = gn.create(e, t.op);\n return n = jr(n), Ur(n) ? n : (F(n instanceof gn), F(yn(n)), F(n.filters.length > 1), n.filters.reduce((t, e) => Gr(t, e)));\n}\nfunction Gr(t, e) {\n let n;\n return F(t instanceof mn || t instanceof gn), F(e instanceof mn || e instanceof gn),\n // FieldFilter FieldFilter\n n = t instanceof mn ? e instanceof mn ? function (t, e) {\n // Conjunction distribution for two field filters is the conjunction of them.\n return gn.create([t, e], \"and\" /* CompositeOperator.AND */);\n }(t, e) : Qr(t, e) : e instanceof mn ? Qr(e, t) : function (t, e) {\n // There are four cases:\n // (A & B) & (C & D) --> (A & B & C & D)\n // (A & B) & (C | D) --> (A & B & C) | (A & B & D)\n // (A | B) & (C & D) --> (C & D & A) | (C & D & B)\n // (A | B) & (C | D) --> (A & C) | (A & D) | (B & C) | (B & D)\n // Case 1 is a merge.\n if (F(t.filters.length > 0 && e.filters.length > 0), yn(t) && yn(e)) return vn(t, e.getFilters());\n // Case 2,3,4 all have at least one side (lhs or rhs) that is a disjunction. In all three cases\n // we should take each element of the disjunction and distribute it over the other side, and\n // return the disjunction of the distribution results.\n const n = pn(t) ? t : e,\n s = pn(t) ? e : t,\n i = n.filters.map(t => Gr(t, s));\n return gn.create(i, \"or\" /* CompositeOperator.OR */);\n }(t, e), jr(n);\n}\nfunction Qr(t, e) {\n // There are two cases:\n // A & (B & C) --> (A & B & C)\n // A & (B | C) --> (A & B) | (A & C)\n if (yn(e))\n // Case 1\n return vn(e, t.getFilters());\n {\n // Case 2\n const n = e.filters.map(e => Gr(t, e));\n return gn.create(n, \"or\" /* CompositeOperator.OR */);\n }\n}\n\n/**\n * Applies the associativity property to the given filter and returns the resulting filter.\n *\n *
For more info, visit: https://en.wikipedia.org/wiki/Associative_property#Propositional_logic\n */\nfunction jr(t) {\n if (F(t instanceof mn || t instanceof gn), t instanceof mn) return t;\n const e = t.getFilters();\n // If the composite filter only contains 1 filter, apply associativity to it.\n if (1 === e.length) return jr(e[0]);\n // Associativity applied to a flat composite filter results is itself.\n if (Tn(t)) return t;\n // First apply associativity to all subfilters. This will in turn recursively apply\n // associativity to all nested composite filters and field filters.\n const n = e.map(t => jr(t)),\n s = [];\n // For composite subfilters that perform the same kind of logical operation as `compositeFilter`\n // take out their filters and add them to `compositeFilter`. For example:\n // compositeFilter = (A | (B | C | D))\n // compositeSubfilter = (B | C | D)\n // Result: (A | B | C | D)\n // Note that the `compositeSubfilter` has been eliminated, and its filters (B, C, D) have been\n // added to the top-level \"compositeFilter\".\n return n.forEach(e => {\n e instanceof mn ? s.push(e) : e instanceof gn && (e.op === t.op ?\n // compositeFilter: (A | (B | C))\n // compositeSubfilter: (B | C)\n // Result: (A | B | C)\n s.push(...e.filters) :\n // compositeFilter: (A | (B & C))\n // compositeSubfilter: (B & C)\n // Result: (A | (B & C))\n s.push(e));\n }), 1 === s.length ? s[0] : gn.create(s, t.op);\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/**\n * An in-memory implementation of IndexManager.\n */\nclass zr {\n constructor() {\n this.rn = new Wr();\n }\n addToCollectionParentIndex(t, e) {\n return this.rn.add(e), Rt.resolve();\n }\n getCollectionParents(t, e) {\n return Rt.resolve(this.rn.getEntries(e));\n }\n addFieldIndex(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n deleteFieldIndex(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n getDocumentsMatchingTarget(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve(null);\n }\n getIndexType(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve(0 /* IndexType.NONE */);\n }\n getFieldIndexes(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve([]);\n }\n getNextCollectionGroupToUpdate(t) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve(null);\n }\n getMinOffset(t, e) {\n return Rt.resolve(It.min());\n }\n getMinOffsetFromCollectionGroup(t, e) {\n return Rt.resolve(It.min());\n }\n updateCollectionGroup(t, e, n) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n updateIndexEntries(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n}\n\n/**\n * Internal implementation of the collection-parent index exposed by MemoryIndexManager.\n * Also used for in-memory caching by IndexedDbIndexManager and initial index population\n * in indexeddb_schema.ts\n */\nclass Wr {\n constructor() {\n this.index = {};\n }\n // Returns false if the entry already existed.\n add(t) {\n const e = t.lastSegment(),\n n = t.popLast(),\n s = this.index[e] || new Ee(ut.comparator),\n i = !s.has(n);\n return this.index[e] = s.add(n), i;\n }\n has(t) {\n const e = t.lastSegment(),\n n = t.popLast(),\n s = this.index[e];\n return s && s.has(n);\n }\n getEntries(t) {\n return (this.index[t] || new Ee(ut.comparator)).toArray();\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 */\nconst Hr = new Uint8Array(0);\n\n/**\n * A persisted implementation of IndexManager.\n *\n * PORTING NOTE: Unlike iOS and Android, the Web SDK does not memoize index\n * data as it supports multi-tab access.\n */\nclass Jr {\n constructor(t, e) {\n this.user = t, this.databaseId = e,\n /**\n * An in-memory copy of the index entries we've already written since the SDK\n * launched. Used to avoid re-writing the same entry repeatedly.\n *\n * This is *NOT* a complete cache of what's in persistence and so can never be\n * used to satisfy reads.\n */\n this.on = new Wr(),\n /**\n * Maps from a target to its equivalent list of sub-targets. Each sub-target\n * contains only one term from the target's disjunctive normal form (DNF).\n */\n this.un = new os(t => $n(t), (t, e) => On(t, e)), this.uid = t.uid || \"\";\n }\n /**\n * Adds a new entry to the collection parent index.\n *\n * Repeated calls for the same collectionPath should be avoided within a\n * transaction as IndexedDbIndexManager only caches writes once a transaction\n * has been committed.\n */\n addToCollectionParentIndex(t, e) {\n if (!this.on.has(e)) {\n const n = e.lastSegment(),\n s = e.popLast();\n t.addOnCommittedListener(() => {\n // Add the collection to the in memory cache only if the transaction was\n // successfully committed.\n this.on.add(e);\n });\n const i = {\n collectionId: n,\n parent: qt(s)\n };\n return Yr(t).put(i);\n }\n return Rt.resolve();\n }\n getCollectionParents(t, e) {\n const n = [],\n s = IDBKeyRange.bound([e, \"\"], [st(e), \"\"], /*lowerOpen=*/!1, /*upperOpen=*/!0);\n return Yr(t).j(s).next(t => {\n for (const s of t) {\n // This collectionId guard shouldn't be necessary (and isn't as long\n // as we're running in a real browser), but there's a bug in\n // indexeddbshim that breaks our range in our tests running in node:\n // https://github.com/axemclion/IndexedDBShim/issues/334\n if (s.collectionId !== e) break;\n n.push(Gt(s.parent));\n }\n return n;\n });\n }\n addFieldIndex(t, e) {\n // TODO(indexing): Verify that the auto-incrementing index ID works in\n // Safari & Firefox.\n const n = Zr(t),\n s = function (t) {\n return {\n indexId: t.indexId,\n collectionGroup: t.collectionGroup,\n fields: t.fields.map(t => [t.fieldPath.canonicalString(), t.kind])\n };\n }(e);\n delete s.indexId;\n // `indexId` is auto-populated by IndexedDb\n const i = n.add(s);\n if (e.indexState) {\n const n = to(t);\n return i.next(t => {\n n.put(Tr(t, this.user, e.indexState.sequenceNumber, e.indexState.offset));\n });\n }\n return i.next();\n }\n deleteFieldIndex(t, e) {\n const n = Zr(t),\n s = to(t),\n i = Xr(t);\n return n.delete(e.indexId).next(() => s.delete(IDBKeyRange.bound([e.indexId], [e.indexId + 1], /*lowerOpen=*/!1, /*upperOpen=*/!0))).next(() => i.delete(IDBKeyRange.bound([e.indexId], [e.indexId + 1], /*lowerOpen=*/!1, /*upperOpen=*/!0)));\n }\n getDocumentsMatchingTarget(t, e) {\n const n = Xr(t);\n let s = !0;\n const i = new Map();\n return Rt.forEach(this.cn(e), e => this.an(t, e).next(t => {\n s && (s = !!t), i.set(e, t);\n })).next(() => {\n if (s) {\n let t = gs();\n const s = [];\n return Rt.forEach(i, (i, r) => {\n var o;\n N(\"IndexedDbIndexManager\", `Using index ${(o = i, `id=${o.indexId}|cg=${o.collectionGroup}|f=${o.fields.map(t => `${t.fieldPath}:${t.kind}`).join(\",\")}`)} to execute ${$n(e)}`);\n const u = function (t, e) {\n const n = ft(e);\n if (void 0 === n) return null;\n for (const e of Bn(t, n.fieldPath)) switch (e.op) {\n case \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */:\n return e.value.arrayValue.values || [];\n case \"array-contains\" /* Operator.ARRAY_CONTAINS */:\n return [e.value];\n // Remaining filters are not array filters.\n }\n return null;\n }\n /**\n * Returns the list of values that are used in != or NOT_IN filters. Returns\n * `null` if there are no such filters.\n */(r, i),\n c = function (t, e) {\n const n = new Map();\n for (const s of dt(e)) for (const e of Bn(t, s.fieldPath)) switch (e.op) {\n case \"==\" /* Operator.EQUAL */:\n case \"in\" /* Operator.IN */:\n // Encode equality prefix, which is encoded in the index value before\n // the inequality (e.g. `a == 'a' && b != 'b'` is encoded to\n // `value != 'ab'`).\n n.set(s.fieldPath.canonicalString(), e.value);\n break;\n case \"not-in\" /* Operator.NOT_IN */:\n case \"!=\" /* Operator.NOT_EQUAL */:\n // NotIn/NotEqual is always a suffix. There cannot be any remaining\n // segments and hence we can return early here.\n return n.set(s.fieldPath.canonicalString(), e.value), Array.from(n.values());\n // Remaining filters cannot be used as notIn bounds.\n }\n return null;\n }\n /**\n * Returns a lower bound of field values that can be used as a starting point to\n * scan the index defined by `fieldIndex`. Returns `MIN_VALUE` if no lower bound\n * exists.\n */(r, i),\n a = function (t, e) {\n const n = [];\n let s = !0;\n // For each segment, retrieve a lower bound if there is a suitable filter or\n // startAt.\n for (const i of dt(e)) {\n const e = 0 /* IndexKind.ASCENDING */ === i.kind ? Ln(t, i.fieldPath, t.startAt) : qn(t, i.fieldPath, t.startAt);\n n.push(e.value), s && (s = e.inclusive);\n }\n return new hn(n, s);\n }\n /**\n * Returns an upper bound of field values that can be used as an ending point\n * when scanning the index defined by `fieldIndex`. Returns `MAX_VALUE` if no\n * upper bound exists.\n */(r, i),\n h = function (t, e) {\n const n = [];\n let s = !0;\n // For each segment, retrieve an upper bound if there is a suitable filter or\n // endAt.\n for (const i of dt(e)) {\n const e = 0 /* IndexKind.ASCENDING */ === i.kind ? qn(t, i.fieldPath, t.endAt) : Ln(t, i.fieldPath, t.endAt);\n n.push(e.value), s && (s = e.inclusive);\n }\n return new hn(n, s);\n }(r, i),\n l = this.hn(i, r, a),\n f = this.hn(i, r, h),\n d = this.ln(i, r, c),\n w = this.fn(i.indexId, u, l, a.inclusive, f, h.inclusive, d);\n return Rt.forEach(w, i => n.H(i, e.limit).next(e => {\n e.forEach(e => {\n const n = ht.fromSegments(e.documentKey);\n t.has(n) || (t = t.add(n), s.push(n));\n });\n }));\n }).next(() => s);\n }\n return Rt.resolve(null);\n });\n }\n cn(t) {\n let e = this.un.get(t);\n if (e) return e;\n if (0 === t.filters.length) e = [t];else {\n e = Br(gn.create(t.filters, \"and\" /* CompositeOperator.AND */)).map(e => Mn(t.path, t.collectionGroup, t.orderBy, e.getFilters(), t.limit, t.startAt, t.endAt));\n }\n return this.un.set(t, e), e;\n }\n /**\n * Constructs a key range query on `DbIndexEntryStore` that unions all\n * bounds.\n */\n fn(t, e, n, s, i, r, o) {\n // The number of total index scans we union together. This is similar to a\n // distributed normal form, but adapted for array values. We create a single\n // index range per value in an ARRAY_CONTAINS or ARRAY_CONTAINS_ANY filter\n // combined with the values from the query bounds.\n const u = (null != e ? e.length : 1) * Math.max(n.length, i.length),\n c = u / (null != e ? e.length : 1),\n a = [];\n for (let h = 0; h < u; ++h) {\n const u = e ? this.dn(e[h / c]) : Hr,\n l = this.wn(t, u, n[h % c], s),\n f = this._n(t, u, i[h % c], r),\n d = o.map(e => this.wn(t, u, e, /* inclusive= */!0));\n a.push(...this.createRange(l, f, d));\n }\n return a;\n }\n /** Generates the lower bound for `arrayValue` and `directionalValue`. */\n wn(t, e, n, s) {\n const i = new kr(t, ht.empty(), e, n);\n return s ? i : i.Je();\n }\n /** Generates the upper bound for `arrayValue` and `directionalValue`. */\n _n(t, e, n, s) {\n const i = new kr(t, ht.empty(), e, n);\n return s ? i.Je() : i;\n }\n an(t, e) {\n const n = new Or(e),\n s = null != e.collectionGroup ? e.collectionGroup : e.path.lastSegment();\n return this.getFieldIndexes(t, s).next(t => {\n // Return the index with the most number of segments.\n let e = null;\n for (const s of t) {\n n.tn(s) && (!e || s.fields.length > e.fields.length) && (e = s);\n }\n return e;\n });\n }\n getIndexType(t, e) {\n let n = 2 /* IndexType.FULL */;\n const s = this.cn(e);\n return Rt.forEach(s, e => this.an(t, e).next(t => {\n t ? 0 /* IndexType.NONE */ !== n && t.fields.length < function (t) {\n let e = new Ee(at.comparator),\n n = !1;\n for (const s of t.filters) for (const t of s.getFlattenedFilters())\n // __name__ is not an explicit segment of any index, so we don't need to\n // count it.\n t.field.isKeyField() || (\n // ARRAY_CONTAINS or ARRAY_CONTAINS_ANY filters must be counted separately.\n // For instance, it is possible to have an index for \"a ARRAY a ASC\". Even\n // though these are on the same field, they should be counted as two\n // separate segments in an index.\n \"array-contains\" /* Operator.ARRAY_CONTAINS */ === t.op || \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ === t.op ? n = !0 : e = e.add(t.field));\n for (const n of t.orderBy)\n // __name__ is not an explicit segment of any index, so we don't need to\n // count it.\n n.field.isKeyField() || (e = e.add(n.field));\n return e.size + (n ? 1 : 0);\n }(e) && (n = 1 /* IndexType.PARTIAL */) : n = 0 /* IndexType.NONE */;\n })).next(() =>\n // OR queries have more than one sub-target (one sub-target per DNF term). We currently consider\n // OR queries that have a `limit` to have a partial index. For such queries we perform sorting\n // and apply the limit in memory as a post-processing step.\n function (t) {\n return null !== t.limit;\n }(e) && s.length > 1 && 2 /* IndexType.FULL */ === n ? 1 /* IndexType.PARTIAL */ : n);\n }\n /**\n * Returns the byte encoded form of the directional values in the field index.\n * Returns `null` if the document does not have all fields specified in the\n * index.\n */\n mn(t, e) {\n const n = new Nr();\n for (const s of dt(t)) {\n const t = e.data.field(s.fieldPath);\n if (null == t) return null;\n const i = n.He(s.kind);\n br.Ve._e(t, i);\n }\n return n.Qe();\n }\n /** Encodes a single value to the ascending index format. */\n dn(t) {\n const e = new Nr();\n return br.Ve._e(t, e.He(0 /* IndexKind.ASCENDING */)), e.Qe();\n }\n /**\n * Returns an encoded form of the document key that sorts based on the key\n * ordering of the field index.\n */\n gn(t, e) {\n const n = new Nr();\n return br.Ve._e(We(this.databaseId, e), n.He(function (t) {\n const e = dt(t);\n return 0 === e.length ? 0 /* IndexKind.ASCENDING */ : e[e.length - 1].kind;\n }(t))), n.Qe();\n }\n /**\n * Encodes the given field values according to the specification in `target`.\n * For IN queries, a list of possible values is returned.\n */\n ln(t, e, n) {\n if (null === n) return [];\n let s = [];\n s.push(new Nr());\n let i = 0;\n for (const r of dt(t)) {\n const t = n[i++];\n for (const n of s) if (this.yn(e, r.fieldPath) && Je(t)) s = this.pn(s, r, t);else {\n const e = n.He(r.kind);\n br.Ve._e(t, e);\n }\n }\n return this.In(s);\n }\n /**\n * Encodes the given bounds according to the specification in `target`. For IN\n * queries, a list of possible values is returned.\n */\n hn(t, e, n) {\n return this.ln(t, e, n.position);\n }\n /** Returns the byte representation for the provided encoders. */\n In(t) {\n const e = [];\n for (let n = 0; n < t.length; ++n) e[n] = t[n].Qe();\n return e;\n }\n /**\n * Creates a separate encoder for each element of an array.\n *\n * The method appends each value to all existing encoders (e.g. filter(\"a\",\n * \"==\", \"a1\").filter(\"b\", \"in\", [\"b1\", \"b2\"]) becomes [\"a1,b1\", \"a1,b2\"]). A\n * list of new encoders is returned.\n */\n pn(t, e, n) {\n const s = [...t],\n i = [];\n for (const t of n.arrayValue.values || []) for (const n of s) {\n const s = new Nr();\n s.seed(n.Qe()), br.Ve._e(t, s.He(e.kind)), i.push(s);\n }\n return i;\n }\n yn(t, e) {\n return !!t.filters.find(t => t instanceof mn && t.field.isEqual(e) && (\"in\" /* Operator.IN */ === t.op || \"not-in\" /* Operator.NOT_IN */ === t.op));\n }\n getFieldIndexes(t, e) {\n const n = Zr(t),\n s = to(t);\n return (e ? n.j(\"collectionGroupIndex\", IDBKeyRange.bound(e, e)) : n.j()).next(t => {\n const e = [];\n return Rt.forEach(t, t => s.get([t.indexId, this.uid]).next(n => {\n e.push(function (t, e) {\n const n = e ? new gt(e.sequenceNumber, new It(wr(e.readTime), new ht(Gt(e.documentKey)), e.largestBatchId)) : gt.empty(),\n s = t.fields.map(_ref => {\n let [t, e] = _ref;\n return new _t(at.fromServerFormat(t), e);\n });\n return new lt(t.indexId, t.collectionGroup, s, n);\n }(t, n));\n })).next(() => e);\n });\n }\n getNextCollectionGroupToUpdate(t) {\n return this.getFieldIndexes(t).next(t => 0 === t.length ? null : (t.sort((t, e) => {\n const n = t.indexState.sequenceNumber - e.indexState.sequenceNumber;\n return 0 !== n ? n : et(t.collectionGroup, e.collectionGroup);\n }), t[0].collectionGroup));\n }\n updateCollectionGroup(t, e, n) {\n const s = Zr(t),\n i = to(t);\n return this.Tn(t).next(t => s.j(\"collectionGroupIndex\", IDBKeyRange.bound(e, e)).next(e => Rt.forEach(e, e => i.put(Tr(e.indexId, this.user, t, n)))));\n }\n updateIndexEntries(t, e) {\n // Porting Note: `getFieldIndexes()` on Web does not cache index lookups as\n // it could be used across different IndexedDB transactions. As any cached\n // data might be invalidated by other multi-tab clients, we can only trust\n // data within a single IndexedDB transaction. We therefore add a cache\n // here.\n const n = new Map();\n return Rt.forEach(e, (e, s) => {\n const i = n.get(e.collectionGroup);\n return (i ? Rt.resolve(i) : this.getFieldIndexes(t, e.collectionGroup)).next(i => (n.set(e.collectionGroup, i), Rt.forEach(i, n => this.En(t, e, n).next(e => {\n const i = this.An(s, n);\n return e.isEqual(i) ? Rt.resolve() : this.vn(t, s, n, e, i);\n }))));\n });\n }\n Rn(t, e, n, s) {\n return Xr(t).put({\n indexId: s.indexId,\n uid: this.uid,\n arrayValue: s.arrayValue,\n directionalValue: s.directionalValue,\n orderedDocumentKey: this.gn(n, e.key),\n documentKey: e.key.path.toArray()\n });\n }\n Pn(t, e, n, s) {\n return Xr(t).delete([s.indexId, this.uid, s.arrayValue, s.directionalValue, this.gn(n, e.key), e.key.path.toArray()]);\n }\n En(t, e, n) {\n const s = Xr(t);\n let i = new Ee(Mr);\n return s.X({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only([n.indexId, this.uid, this.gn(n, e)])\n }, (t, s) => {\n i = i.add(new kr(n.indexId, e, s.arrayValue, s.directionalValue));\n }).next(() => i);\n }\n /** Creates the index entries for the given document. */\n An(t, e) {\n let n = new Ee(Mr);\n const s = this.mn(e, t);\n if (null == s) return n;\n const i = ft(e);\n if (null != i) {\n const r = t.data.field(i.fieldPath);\n if (Je(r)) for (const i of r.arrayValue.values || []) n = n.add(new kr(e.indexId, t.key, this.dn(i), s));\n } else n = n.add(new kr(e.indexId, t.key, Hr, s));\n return n;\n }\n /**\n * Updates the index entries for the provided document by deleting entries\n * that are no longer referenced in `newEntries` and adding all newly added\n * entries.\n */\n vn(t, e, n, s, i) {\n N(\"IndexedDbIndexManager\", \"Updating index entries for document '%s'\", e.key);\n const r = [];\n return function (t, e, n, s, i) {\n const r = t.getIterator(),\n o = e.getIterator();\n let u = ve(r),\n c = ve(o);\n // Walk through the two sets at the same time, using the ordering defined by\n // `comparator`.\n for (; u || c;) {\n let t = !1,\n e = !1;\n if (u && c) {\n const s = n(u, c);\n s < 0 ?\n // The element was removed if the next element in our ordered\n // walkthrough is only in `before`.\n e = !0 : s > 0 && (\n // The element was added if the next element in our ordered walkthrough\n // is only in `after`.\n t = !0);\n } else null != u ? e = !0 : t = !0;\n t ? (s(c), c = ve(o)) : e ? (i(u), u = ve(r)) : (u = ve(r), c = ve(o));\n }\n }(s, i, Mr, /* onAdd= */s => {\n r.push(this.Rn(t, e, n, s));\n }, /* onRemove= */s => {\n r.push(this.Pn(t, e, n, s));\n }), Rt.waitFor(r);\n }\n Tn(t) {\n let e = 1;\n return to(t).X({\n index: \"sequenceNumberIndex\",\n reverse: !0,\n range: IDBKeyRange.upperBound([this.uid, Number.MAX_SAFE_INTEGER])\n }, (t, n, s) => {\n s.done(), e = n.sequenceNumber + 1;\n }).next(() => e);\n }\n /**\n * Returns a new set of IDB ranges that splits the existing range and excludes\n * any values that match the `notInValue` from these ranges. As an example,\n * '[foo > 2 && foo != 3]` becomes `[foo > 2 && < 3, foo > 3]`.\n */\n createRange(t, e, n) {\n // The notIn values need to be sorted and unique so that we can return a\n // sorted set of non-overlapping ranges.\n n = n.sort((t, e) => Mr(t, e)).filter((t, e, n) => !e || 0 !== Mr(t, n[e - 1]));\n const s = [];\n s.push(t);\n for (const i of n) {\n const n = Mr(i, t),\n r = Mr(i, e);\n if (0 === n)\n // `notInValue` is the lower bound. We therefore need to raise the bound\n // to the next value.\n s[0] = t.Je();else if (n > 0 && r < 0)\n // `notInValue` is in the middle of the range\n s.push(i), s.push(i.Je());else if (r > 0)\n // `notInValue` (and all following values) are out of the range\n break;\n }\n s.push(e);\n const i = [];\n for (let t = 0; t < s.length; t += 2) {\n // If we encounter two bounds that will create an unmatchable key range,\n // then we return an empty set of key ranges.\n if (this.bn(s[t], s[t + 1])) return [];\n const e = [s[t].indexId, this.uid, s[t].arrayValue, s[t].directionalValue, Hr, []],\n n = [s[t + 1].indexId, this.uid, s[t + 1].arrayValue, s[t + 1].directionalValue, Hr, []];\n i.push(IDBKeyRange.bound(e, n));\n }\n return i;\n }\n bn(t, e) {\n // If lower bound is greater than the upper bound, then the key\n // range can never be matched.\n return Mr(t, e) > 0;\n }\n getMinOffsetFromCollectionGroup(t, e) {\n return this.getFieldIndexes(t, e).next(eo);\n }\n getMinOffset(t, e) {\n return Rt.mapArray(this.cn(e), e => this.an(t, e).next(t => t || O())).next(eo);\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the collectionParents\n * document store.\n */\nfunction Yr(t) {\n return _e(t, \"collectionParents\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the index entry object store.\n */\nfunction Xr(t) {\n return _e(t, \"indexEntries\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the index configuration object store.\n */\nfunction Zr(t) {\n return _e(t, \"indexConfiguration\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the index state object store.\n */\nfunction to(t) {\n return _e(t, \"indexState\");\n}\nfunction eo(t) {\n F(0 !== t.length);\n let e = t[0].indexState.offset,\n n = e.largestBatchId;\n for (let s = 1; s < t.length; s++) {\n const i = t[s].indexState.offset;\n Tt(i, e) < 0 && (e = i), n < i.largestBatchId && (n = i.largestBatchId);\n }\n return new It(e.readTime, e.documentKey, n);\n}\n\n/**\n * @license\n * Copyright 2018 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 */\nconst no = {\n didRun: !1,\n sequenceNumbersCollected: 0,\n targetsRemoved: 0,\n documentsRemoved: 0\n};\nclass so {\n constructor(\n // When we attempt to collect, we will only do so if the cache size is greater than this\n // threshold. Passing `COLLECTION_DISABLED` here will cause collection to always be skipped.\n t,\n // The percentage of sequence numbers that we will attempt to collect\n e,\n // A cap on the total number of sequence numbers that will be collected. This prevents\n // us from collecting a huge number of sequence numbers if the cache has grown very large.\n n) {\n this.cacheSizeCollectionThreshold = t, this.percentileToCollect = e, this.maximumSequenceNumbersToCollect = n;\n }\n static withCacheSize(t) {\n return new so(t, so.DEFAULT_COLLECTION_PERCENTILE, so.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT);\n }\n}\n\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 */\n/**\n * Delete a mutation batch and the associated document mutations.\n * @returns A PersistencePromise of the document mutations that were removed.\n */\nfunction io(t, e, n) {\n const s = t.store(\"mutations\"),\n i = t.store(\"documentMutations\"),\n r = [],\n o = IDBKeyRange.only(n.batchId);\n let u = 0;\n const c = s.X({\n range: o\n }, (t, e, n) => (u++, n.delete()));\n r.push(c.next(() => {\n F(1 === u);\n }));\n const a = [];\n for (const t of n.mutations) {\n const s = zt(e, t.key.path, n.batchId);\n r.push(i.delete(s)), a.push(t.key);\n }\n return Rt.waitFor(r).next(() => a);\n}\n\n/**\n * Returns an approximate size for the given document.\n */\nfunction ro(t) {\n if (!t) return 0;\n let e;\n if (t.document) e = t.document;else if (t.unknownDocument) e = t.unknownDocument;else {\n if (!t.noDocument) throw O();\n e = t.noDocument;\n }\n return JSON.stringify(e).length;\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/** A mutation queue for a specific user, backed by IndexedDB. */\nso.DEFAULT_COLLECTION_PERCENTILE = 10, so.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT = 1e3, so.DEFAULT = new so(41943040, so.DEFAULT_COLLECTION_PERCENTILE, so.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT), so.DISABLED = new so(-1, 0, 0);\nclass oo {\n constructor(\n /**\n * The normalized userId (e.g. null UID => \"\" userId) used to store /\n * retrieve mutations.\n */\n t, e, n, s) {\n this.userId = t, this.serializer = e, this.indexManager = n, this.referenceDelegate = s,\n /**\n * Caches the document keys for pending mutation batches. If the mutation\n * has been removed from IndexedDb, the cached value may continue to\n * be used to retrieve the batch's document keys. To remove a cached value\n * locally, `removeCachedMutationKeys()` should be invoked either directly\n * or through `removeMutationBatches()`.\n *\n * With multi-tab, when the primary client acknowledges or rejects a mutation,\n * this cache is used by secondary clients to invalidate the local\n * view of the documents that were previously affected by the mutation.\n */\n // PORTING NOTE: Multi-tab only.\n this.Vn = {};\n }\n /**\n * Creates a new mutation queue for the given user.\n * @param user - The user for which to create a mutation queue.\n * @param serializer - The serializer to use when persisting to IndexedDb.\n */\n static de(t, e, n, s) {\n // TODO(mcg): Figure out what constraints there are on userIDs\n // In particular, are there any reserved characters? are empty ids allowed?\n // For the moment store these together in the same mutations table assuming\n // that empty userIDs aren't allowed.\n F(\"\" !== t.uid);\n const i = t.isAuthenticated() ? t.uid : \"\";\n return new oo(i, e, n, s);\n }\n checkEmpty(t) {\n let e = !0;\n const n = IDBKeyRange.bound([this.userId, Number.NEGATIVE_INFINITY], [this.userId, Number.POSITIVE_INFINITY]);\n return co(t).X({\n index: \"userMutationsIndex\",\n range: n\n }, (t, n, s) => {\n e = !1, s.done();\n }).next(() => e);\n }\n addMutationBatch(t, e, n, s) {\n const i = ao(t),\n r = co(t);\n // The IndexedDb implementation in Chrome (and Firefox) does not handle\n // compound indices that include auto-generated keys correctly. To ensure\n // that the index entry is added correctly in all browsers, we perform two\n // writes: The first write is used to retrieve the next auto-generated Batch\n // ID, and the second write populates the index and stores the actual\n // mutation batch.\n // See: https://bugs.chromium.org/p/chromium/issues/detail?id=701972\n // We write an empty object to obtain key\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return r.add({}).next(o => {\n F(\"number\" == typeof o);\n const u = new Zs(o, e, n, s),\n c = function (t, e, n) {\n const s = n.baseMutations.map(e => ji(t.fe, e)),\n i = n.mutations.map(e => ji(t.fe, e));\n return {\n userId: e,\n batchId: n.batchId,\n localWriteTimeMs: n.localWriteTime.toMillis(),\n baseMutations: s,\n mutations: i\n };\n }(this.serializer, this.userId, u),\n a = [];\n let h = new Ee((t, e) => et(t.canonicalString(), e.canonicalString()));\n for (const t of s) {\n const e = zt(this.userId, t.key.path, o);\n h = h.add(t.key.path.popLast()), a.push(r.put(c)), a.push(i.put(e, Wt));\n }\n return h.forEach(e => {\n a.push(this.indexManager.addToCollectionParentIndex(t, e));\n }), t.addOnCommittedListener(() => {\n this.Vn[o] = u.keys();\n }), Rt.waitFor(a).next(() => u);\n });\n }\n lookupMutationBatch(t, e) {\n return co(t).get(e).next(t => t ? (F(t.userId === this.userId), _r(this.serializer, t)) : null);\n }\n /**\n * Returns the document keys for the mutation batch with the given batchId.\n * For primary clients, this method returns `null` after\n * `removeMutationBatches()` has been called. Secondary clients return a\n * cached result until `removeCachedMutationKeys()` is invoked.\n */\n // PORTING NOTE: Multi-tab only.\n Sn(t, e) {\n return this.Vn[e] ? Rt.resolve(this.Vn[e]) : this.lookupMutationBatch(t, e).next(t => {\n if (t) {\n const n = t.keys();\n return this.Vn[e] = n, n;\n }\n return null;\n });\n }\n getNextMutationBatchAfterBatchId(t, e) {\n const n = e + 1,\n s = IDBKeyRange.lowerBound([this.userId, n]);\n let i = null;\n return co(t).X({\n index: \"userMutationsIndex\",\n range: s\n }, (t, e, s) => {\n e.userId === this.userId && (F(e.batchId >= n), i = _r(this.serializer, e)), s.done();\n }).next(() => i);\n }\n getHighestUnacknowledgedBatchId(t) {\n const e = IDBKeyRange.upperBound([this.userId, Number.POSITIVE_INFINITY]);\n let n = -1;\n return co(t).X({\n index: \"userMutationsIndex\",\n range: e,\n reverse: !0\n }, (t, e, s) => {\n n = e.batchId, s.done();\n }).next(() => n);\n }\n getAllMutationBatches(t) {\n const e = IDBKeyRange.bound([this.userId, -1], [this.userId, Number.POSITIVE_INFINITY]);\n return co(t).j(\"userMutationsIndex\", e).next(t => t.map(t => _r(this.serializer, t)));\n }\n getAllMutationBatchesAffectingDocumentKey(t, e) {\n // Scan the document-mutation index starting with a prefix starting with\n // the given documentKey.\n const n = jt(this.userId, e.path),\n s = IDBKeyRange.lowerBound(n),\n i = [];\n return ao(t).X({\n range: s\n }, (n, s, r) => {\n const [o, u, c] = n,\n a = Gt(u);\n // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n if (o === this.userId && e.path.isEqual(a))\n // Look up the mutation batch in the store.\n return co(t).get(c).next(t => {\n if (!t) throw O();\n F(t.userId === this.userId), i.push(_r(this.serializer, t));\n });\n r.done();\n }).next(() => i);\n }\n getAllMutationBatchesAffectingDocumentKeys(t, e) {\n let n = new Ee(et);\n const s = [];\n return e.forEach(e => {\n const i = jt(this.userId, e.path),\n r = IDBKeyRange.lowerBound(i),\n o = ao(t).X({\n range: r\n }, (t, s, i) => {\n const [r, o, u] = t,\n c = Gt(o);\n // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n r === this.userId && e.path.isEqual(c) ? n = n.add(u) : i.done();\n });\n s.push(o);\n }), Rt.waitFor(s).next(() => this.Dn(t, n));\n }\n getAllMutationBatchesAffectingQuery(t, e) {\n const n = e.path,\n s = n.length + 1,\n i = jt(this.userId, n),\n r = IDBKeyRange.lowerBound(i);\n // Collect up unique batchIDs encountered during a scan of the index. Use a\n // SortedSet to accumulate batch IDs so they can be traversed in order in a\n // scan of the main table.\n let o = new Ee(et);\n return ao(t).X({\n range: r\n }, (t, e, i) => {\n const [r, u, c] = t,\n a = Gt(u);\n r === this.userId && n.isPrefixOf(a) ?\n // Rows with document keys more than one segment longer than the\n // query path can't be matches. For example, a query on 'rooms'\n // can't match the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n a.length === s && (o = o.add(c)) : i.done();\n }).next(() => this.Dn(t, o));\n }\n Dn(t, e) {\n const n = [],\n s = [];\n // TODO(rockwood): Implement this using iterate.\n return e.forEach(e => {\n s.push(co(t).get(e).next(t => {\n if (null === t) throw O();\n F(t.userId === this.userId), n.push(_r(this.serializer, t));\n }));\n }), Rt.waitFor(s).next(() => n);\n }\n removeMutationBatch(t, e) {\n return io(t.ht, this.userId, e).next(n => (t.addOnCommittedListener(() => {\n this.Cn(e.batchId);\n }), Rt.forEach(n, e => this.referenceDelegate.markPotentiallyOrphaned(t, e))));\n }\n /**\n * Clears the cached keys for a mutation batch. This method should be\n * called by secondary clients after they process mutation updates.\n *\n * Note that this method does not have to be called from primary clients as\n * the corresponding cache entries are cleared when an acknowledged or\n * rejected batch is removed from the mutation queue.\n */\n // PORTING NOTE: Multi-tab only\n Cn(t) {\n delete this.Vn[t];\n }\n performConsistencyCheck(t) {\n return this.checkEmpty(t).next(e => {\n if (!e) return Rt.resolve();\n // Verify that there are no entries in the documentMutations index if\n // the queue is empty.\n const n = IDBKeyRange.lowerBound([this.userId]);\n const s = [];\n return ao(t).X({\n range: n\n }, (t, e, n) => {\n if (t[0] === this.userId) {\n const e = Gt(t[1]);\n s.push(e);\n } else n.done();\n }).next(() => {\n F(0 === s.length);\n });\n });\n }\n containsKey(t, e) {\n return uo(t, this.userId, e);\n }\n // PORTING NOTE: Multi-tab only (state is held in memory in other clients).\n /** Returns the mutation queue's metadata from IndexedDb. */\n xn(t) {\n return ho(t).get(this.userId).next(t => t || {\n userId: this.userId,\n lastAcknowledgedBatchId: -1,\n lastStreamToken: \"\"\n });\n }\n}\n\n/**\n * @returns true if the mutation queue for the given user contains a pending\n * mutation for the given key.\n */\nfunction uo(t, e, n) {\n const s = jt(e, n.path),\n i = s[1],\n r = IDBKeyRange.lowerBound(s);\n let o = !1;\n return ao(t).X({\n range: r,\n Y: !0\n }, (t, n, s) => {\n const [r, u, /*batchID*/c] = t;\n r === e && u === i && (o = !0), s.done();\n }).next(() => o);\n}\n\n/** Returns true if any mutation queue contains the given document. */\n/**\n * Helper to get a typed SimpleDbStore for the mutations object store.\n */\nfunction co(t) {\n return _e(t, \"mutations\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */\nfunction ao(t) {\n return _e(t, \"documentMutations\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */\nfunction ho(t) {\n return _e(t, \"mutationQueues\");\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/** Offset to ensure non-overlapping target ids. */\n/**\n * Generates monotonically increasing target IDs for sending targets to the\n * watch stream.\n *\n * The client constructs two generators, one for the target cache, and one for\n * for the sync engine (to generate limbo documents targets). These\n * generators produce non-overlapping IDs (by using even and odd IDs\n * respectively).\n *\n * By separating the target ID space, the query cache can generate target IDs\n * that persist across client restarts, while sync engine can independently\n * generate in-memory target IDs that are transient and can be reused after a\n * restart.\n */\nclass lo {\n constructor(t) {\n this.Nn = t;\n }\n next() {\n return this.Nn += 2, this.Nn;\n }\n static kn() {\n // The target cache generator must return '2' in its first call to `next()`\n // as there is no differentiation in the protocol layer between an unset\n // number and the number '0'. If we were to sent a target with target ID\n // '0', the backend would consider it unset and replace it with its own ID.\n return new lo(0);\n }\n static Mn() {\n // Sync engine assigns target IDs for limbo document detection.\n return new lo(-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 */\nclass fo {\n constructor(t, e) {\n this.referenceDelegate = t, this.serializer = e;\n }\n // PORTING NOTE: We don't cache global metadata for the target cache, since\n // some of it (in particular `highestTargetId`) can be modified by secondary\n // tabs. We could perhaps be more granular (and e.g. still cache\n // `lastRemoteSnapshotVersion` in memory) but for simplicity we currently go\n // to IndexedDb whenever we need to read metadata. We can revisit if it turns\n // out to have a meaningful performance impact.\n allocateTargetId(t) {\n return this.$n(t).next(e => {\n const n = new lo(e.highestTargetId);\n return e.highestTargetId = n.next(), this.On(t, e).next(() => e.highestTargetId);\n });\n }\n getLastRemoteSnapshotVersion(t) {\n return this.$n(t).next(t => rt.fromTimestamp(new it(t.lastRemoteSnapshotVersion.seconds, t.lastRemoteSnapshotVersion.nanoseconds)));\n }\n getHighestSequenceNumber(t) {\n return this.$n(t).next(t => t.highestListenSequenceNumber);\n }\n setTargetsMetadata(t, e, n) {\n return this.$n(t).next(s => (s.highestListenSequenceNumber = e, n && (s.lastRemoteSnapshotVersion = n.toTimestamp()), e > s.highestListenSequenceNumber && (s.highestListenSequenceNumber = e), this.On(t, s)));\n }\n addTargetData(t, e) {\n return this.Fn(t, e).next(() => this.$n(t).next(n => (n.targetCount += 1, this.Bn(e, n), this.On(t, n))));\n }\n updateTargetData(t, e) {\n return this.Fn(t, e);\n }\n removeTargetData(t, e) {\n return this.removeMatchingKeysForTargetId(t, e.targetId).next(() => wo(t).delete(e.targetId)).next(() => this.$n(t)).next(e => (F(e.targetCount > 0), e.targetCount -= 1, this.On(t, e)));\n }\n /**\n * Drops any targets with sequence number less than or equal to the upper bound, excepting those\n * present in `activeTargetIds`. Document associations for the removed targets are also removed.\n * Returns the number of targets removed.\n */\n removeTargets(t, e, n) {\n let s = 0;\n const i = [];\n return wo(t).X((r, o) => {\n const u = mr(o);\n u.sequenceNumber <= e && null === n.get(u.targetId) && (s++, i.push(this.removeTargetData(t, u)));\n }).next(() => Rt.waitFor(i)).next(() => s);\n }\n /**\n * Call provided function with each `TargetData` that we have cached.\n */\n forEachTarget(t, e) {\n return wo(t).X((t, n) => {\n const s = mr(n);\n e(s);\n });\n }\n $n(t) {\n return _o(t).get(\"targetGlobalKey\").next(t => (F(null !== t), t));\n }\n On(t, e) {\n return _o(t).put(\"targetGlobalKey\", e);\n }\n Fn(t, e) {\n return wo(t).put(gr(this.serializer, e));\n }\n /**\n * In-place updates the provided metadata to account for values in the given\n * TargetData. Saving is done separately. Returns true if there were any\n * changes to the metadata.\n */\n Bn(t, e) {\n let n = !1;\n return t.targetId > e.highestTargetId && (e.highestTargetId = t.targetId, n = !0), t.sequenceNumber > e.highestListenSequenceNumber && (e.highestListenSequenceNumber = t.sequenceNumber, n = !0), n;\n }\n getTargetCount(t) {\n return this.$n(t).next(t => t.targetCount);\n }\n getTargetData(t, e) {\n // Iterating by the canonicalId may yield more than one result because\n // canonicalId values are not required to be unique per target. This query\n // depends on the queryTargets index to be efficient.\n const n = $n(e),\n s = IDBKeyRange.bound([n, Number.NEGATIVE_INFINITY], [n, Number.POSITIVE_INFINITY]);\n let i = null;\n return wo(t).X({\n range: s,\n index: \"queryTargetsIndex\"\n }, (t, n, s) => {\n const r = mr(n);\n // After finding a potential match, check that the target is\n // actually equal to the requested target.\n On(e, r.target) && (i = r, s.done());\n }).next(() => i);\n }\n addMatchingKeys(t, e, n) {\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n const s = [],\n i = mo(t);\n return e.forEach(e => {\n const r = qt(e.path);\n s.push(i.put({\n targetId: n,\n path: r\n })), s.push(this.referenceDelegate.addReference(t, n, e));\n }), Rt.waitFor(s);\n }\n removeMatchingKeys(t, e, n) {\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n const s = mo(t);\n return Rt.forEach(e, e => {\n const i = qt(e.path);\n return Rt.waitFor([s.delete([n, i]), this.referenceDelegate.removeReference(t, n, e)]);\n });\n }\n removeMatchingKeysForTargetId(t, e) {\n const n = mo(t),\n s = IDBKeyRange.bound([e], [e + 1], /*lowerOpen=*/!1, /*upperOpen=*/!0);\n return n.delete(s);\n }\n getMatchingKeysForTargetId(t, e) {\n const n = IDBKeyRange.bound([e], [e + 1], /*lowerOpen=*/!1, /*upperOpen=*/!0),\n s = mo(t);\n let i = gs();\n return s.X({\n range: n,\n Y: !0\n }, (t, e, n) => {\n const s = Gt(t[1]),\n r = new ht(s);\n i = i.add(r);\n }).next(() => i);\n }\n containsKey(t, e) {\n const n = qt(e.path),\n s = IDBKeyRange.bound([n], [st(n)], /*lowerOpen=*/!1, /*upperOpen=*/!0);\n let i = 0;\n return mo(t).X({\n index: \"documentTargetsIndex\",\n Y: !0,\n range: s\n }, (_ref2, n, s) => {\n let [t, e] = _ref2;\n // Having a sentinel row for a document does not count as containing that document;\n // For the target cache, containing the document means the document is part of some\n // target.\n 0 !== t && (i++, s.done());\n }).next(() => i > 0);\n }\n /**\n * Looks up a TargetData entry by target ID.\n *\n * @param targetId - The target ID of the TargetData entry to look up.\n * @returns The cached TargetData entry, or null if the cache has no entry for\n * the target.\n */\n // PORTING NOTE: Multi-tab only.\n le(t, e) {\n return wo(t).get(e).next(t => t ? mr(t) : null);\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the queries object store.\n */\nfunction wo(t) {\n return _e(t, \"targets\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the target globals object store.\n */\nfunction _o(t) {\n return _e(t, \"targetGlobal\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the document target object store.\n */\nfunction mo(t) {\n return _e(t, \"targetDocuments\");\n}\n\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 */\nfunction go(_ref3, _ref4) {\n let [t, e] = _ref3;\n let [n, s] = _ref4;\n const i = et(t, n);\n return 0 === i ? et(e, s) : i;\n}\n\n/**\n * Used to calculate the nth sequence number. Keeps a rolling buffer of the\n * lowest n values passed to `addElement`, and finally reports the largest of\n * them in `maxValue`.\n */\nclass yo {\n constructor(t) {\n this.Ln = t, this.buffer = new Ee(go), this.qn = 0;\n }\n Un() {\n return ++this.qn;\n }\n Kn(t) {\n const e = [t, this.Un()];\n if (this.buffer.size < this.Ln) this.buffer = this.buffer.add(e);else {\n const t = this.buffer.last();\n go(e, t) < 0 && (this.buffer = this.buffer.delete(t).add(e));\n }\n }\n get maxValue() {\n // Guaranteed to be non-empty. If we decide we are not collecting any\n // sequence numbers, nthSequenceNumber below short-circuits. If we have\n // decided that we are collecting n sequence numbers, it's because n is some\n // percentage of the existing sequence numbers. That means we should never\n // be in a situation where we are collecting sequence numbers but don't\n // actually have any.\n return this.buffer.last()[0];\n }\n}\n\n/**\n * This class is responsible for the scheduling of LRU garbage collection. It handles checking\n * whether or not GC is enabled, as well as which delay to use before the next run.\n */\nclass po {\n constructor(t, e, n) {\n this.garbageCollector = t, this.asyncQueue = e, this.localStore = n, this.Gn = null;\n }\n start() {\n -1 !== this.garbageCollector.params.cacheSizeCollectionThreshold && this.Qn(6e4);\n }\n stop() {\n this.Gn && (this.Gn.cancel(), this.Gn = null);\n }\n get started() {\n return null !== this.Gn;\n }\n Qn(t) {\n N(\"LruGarbageCollector\", `Garbage collection scheduled in ${t}ms`), this.Gn = this.asyncQueue.enqueueAfterDelay(\"lru_garbage_collection\" /* TimerId.LruGarbageCollection */, t, async () => {\n this.Gn = null;\n try {\n await this.localStore.collectGarbage(this.garbageCollector);\n } catch (t) {\n Dt(t) ? N(\"LruGarbageCollector\", \"Ignoring IndexedDB error during garbage collection: \", t) : await vt(t);\n }\n await this.Qn(3e5);\n });\n }\n}\n\n/**\n * Implements the steps for LRU garbage collection.\n */\nclass Io {\n constructor(t, e) {\n this.jn = t, this.params = e;\n }\n calculateTargetCount(t, e) {\n return this.jn.zn(t).next(t => Math.floor(e / 100 * t));\n }\n nthSequenceNumber(t, e) {\n if (0 === e) return Rt.resolve(Ot.ct);\n const n = new yo(e);\n return this.jn.forEachTarget(t, t => n.Kn(t.sequenceNumber)).next(() => this.jn.Wn(t, t => n.Kn(t))).next(() => n.maxValue);\n }\n removeTargets(t, e, n) {\n return this.jn.removeTargets(t, e, n);\n }\n removeOrphanedDocuments(t, e) {\n return this.jn.removeOrphanedDocuments(t, e);\n }\n collect(t, e) {\n return -1 === this.params.cacheSizeCollectionThreshold ? (N(\"LruGarbageCollector\", \"Garbage collection skipped; disabled\"), Rt.resolve(no)) : this.getCacheSize(t).next(n => n < this.params.cacheSizeCollectionThreshold ? (N(\"LruGarbageCollector\", `Garbage collection skipped; Cache size ${n} is lower than threshold ${this.params.cacheSizeCollectionThreshold}`), no) : this.Hn(t, e));\n }\n getCacheSize(t) {\n return this.jn.getCacheSize(t);\n }\n Hn(t, e) {\n let n, s, i, r, o, c, a;\n const h = Date.now();\n return this.calculateTargetCount(t, this.params.percentileToCollect).next(e => (\n // Cap at the configured max\n e > this.params.maximumSequenceNumbersToCollect ? (N(\"LruGarbageCollector\", `Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${e}`), s = this.params.maximumSequenceNumbersToCollect) : s = e, r = Date.now(), this.nthSequenceNumber(t, s))).next(s => (n = s, o = Date.now(), this.removeTargets(t, n, e))).next(e => (i = e, c = Date.now(), this.removeOrphanedDocuments(t, n))).next(t => {\n if (a = Date.now(), C() <= LogLevel.DEBUG) {\n N(\"LruGarbageCollector\", `LRU Garbage Collection\\n\\tCounted targets in ${r - h}ms\\n\\tDetermined least recently used ${s} in ` + (o - r) + \"ms\\n\" + `\\tRemoved ${i} targets in ` + (c - o) + \"ms\\n\" + `\\tRemoved ${t} documents in ` + (a - c) + \"ms\\n\" + `Total Duration: ${a - h}ms`);\n }\n return Rt.resolve({\n didRun: !0,\n sequenceNumbersCollected: s,\n targetsRemoved: i,\n documentsRemoved: t\n });\n });\n }\n}\nfunction To(t, e) {\n return new Io(t, e);\n}\n\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 */\n/** Provides LRU functionality for IndexedDB persistence. */\nclass Eo {\n constructor(t, e) {\n this.db = t, this.garbageCollector = To(this, e);\n }\n zn(t) {\n const e = this.Jn(t);\n return this.db.getTargetCache().getTargetCount(t).next(t => e.next(e => t + e));\n }\n Jn(t) {\n let e = 0;\n return this.Wn(t, t => {\n e++;\n }).next(() => e);\n }\n forEachTarget(t, e) {\n return this.db.getTargetCache().forEachTarget(t, e);\n }\n Wn(t, e) {\n return this.Yn(t, (t, n) => e(n));\n }\n addReference(t, e, n) {\n return Ao(t, n);\n }\n removeReference(t, e, n) {\n return Ao(t, n);\n }\n removeTargets(t, e, n) {\n return this.db.getTargetCache().removeTargets(t, e, n);\n }\n markPotentiallyOrphaned(t, e) {\n return Ao(t, e);\n }\n /**\n * Returns true if anything would prevent this document from being garbage\n * collected, given that the document in question is not present in any\n * targets and has a sequence number less than or equal to the upper bound for\n * the collection run.\n */\n Xn(t, e) {\n return function (t, e) {\n let n = !1;\n return ho(t).Z(s => uo(t, s, e).next(t => (t && (n = !0), Rt.resolve(!t)))).next(() => n);\n }(t, e);\n }\n removeOrphanedDocuments(t, e) {\n const n = this.db.getRemoteDocumentCache().newChangeBuffer(),\n s = [];\n let i = 0;\n return this.Yn(t, (r, o) => {\n if (o <= e) {\n const e = this.Xn(t, r).next(e => {\n if (!e)\n // Our size accounting requires us to read all documents before\n // removing them.\n return i++, n.getEntry(t, r).next(() => (n.removeEntry(r, rt.min()), mo(t).delete([0, qt(r.path)])));\n });\n s.push(e);\n }\n }).next(() => Rt.waitFor(s)).next(() => n.apply(t)).next(() => i);\n }\n removeTarget(t, e) {\n const n = e.withSequenceNumber(t.currentSequenceNumber);\n return this.db.getTargetCache().updateTargetData(t, n);\n }\n updateLimboDocument(t, e) {\n return Ao(t, e);\n }\n /**\n * Call provided function for each document in the cache that is 'orphaned'. Orphaned\n * means not a part of any target, so the only entry in the target-document index for\n * that document will be the sentinel row (targetId 0), which will also have the sequence\n * number for the last time the document was accessed.\n */\n Yn(t, e) {\n const n = mo(t);\n let s,\n i = Ot.ct;\n return n.X({\n index: \"documentTargetsIndex\"\n }, (_ref5, _ref6) => {\n let [t, n] = _ref5;\n let {\n path: r,\n sequenceNumber: o\n } = _ref6;\n 0 === t ? (\n // if nextToReport is valid, report it, this is a new key so the\n // last one must not be a member of any targets.\n i !== Ot.ct && e(new ht(Gt(s)), i),\n // set nextToReport to be this sequence number. It's the next one we\n // might report, if we don't find any targets for this document.\n // Note that the sequence number must be defined when the targetId\n // is 0.\n i = o, s = r) :\n // set nextToReport to be invalid, we know we don't need to report\n // this one since we found a target for it.\n i = Ot.ct;\n }).next(() => {\n // Since we report sequence numbers after getting to the next key, we\n // need to check if the last key we iterated over was an orphaned\n // document and report it.\n i !== Ot.ct && e(new ht(Gt(s)), i);\n });\n }\n getCacheSize(t) {\n return this.db.getRemoteDocumentCache().getSize(t);\n }\n}\nfunction Ao(t, e) {\n return mo(t).put(\n /**\n * @returns A value suitable for writing a sentinel row in the target-document\n * store.\n */\n function (t, e) {\n return {\n targetId: 0,\n path: qt(t.path),\n sequenceNumber: e\n };\n }(e, t.currentSequenceNumber));\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 * An in-memory buffer of entries to be written to a RemoteDocumentCache.\n * It can be used to batch up a set of changes to be written to the cache, but\n * additionally supports reading entries back with the `getEntry()` method,\n * falling back to the underlying RemoteDocumentCache if no entry is\n * buffered.\n *\n * Entries added to the cache *must* be read first. This is to facilitate\n * calculating the size delta of the pending changes.\n *\n * PORTING NOTE: This class was implemented then removed from other platforms.\n * If byte-counting ends up being needed on the other platforms, consider\n * porting this class as part of that implementation work.\n */\nclass vo {\n constructor() {\n // A mapping of document key to the new cache entry that should be written.\n this.changes = new os(t => t.toString(), (t, e) => t.isEqual(e)), this.changesApplied = !1;\n }\n /**\n * Buffers a `RemoteDocumentCache.addEntry()` call.\n *\n * You can only modify documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */\n addEntry(t) {\n this.assertNotApplied(), this.changes.set(t.key, t);\n }\n /**\n * Buffers a `RemoteDocumentCache.removeEntry()` call.\n *\n * You can only remove documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */\n removeEntry(t, e) {\n this.assertNotApplied(), this.changes.set(t, an.newInvalidDocument(t).setReadTime(e));\n }\n /**\n * Looks up an entry in the cache. The buffered changes will first be checked,\n * and if no buffered change applies, this will forward to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document or an invalid document if we have nothing\n * cached.\n */\n getEntry(t, e) {\n this.assertNotApplied();\n const n = this.changes.get(e);\n return void 0 !== n ? Rt.resolve(n) : this.getFromCache(t, e);\n }\n /**\n * Looks up several entries in the cache, forwarding to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKeys - The keys of the entries to look up.\n * @returns A map of cached documents, indexed by key. If an entry cannot be\n * found, the corresponding key will be mapped to an invalid document.\n */\n getEntries(t, e) {\n return this.getAllFromCache(t, e);\n }\n /**\n * Applies buffered changes to the underlying RemoteDocumentCache, using\n * the provided transaction.\n */\n apply(t) {\n return this.assertNotApplied(), this.changesApplied = !0, this.applyChanges(t);\n }\n /** Helper to assert this.changes is not null */\n assertNotApplied() {}\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 * The RemoteDocumentCache for IndexedDb. To construct, invoke\n * `newIndexedDbRemoteDocumentCache()`.\n */\nclass Ro {\n constructor(t) {\n this.serializer = t;\n }\n setIndexManager(t) {\n this.indexManager = t;\n }\n /**\n * Adds the supplied entries to the cache.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */\n addEntry(t, e, n) {\n return So(t).put(n);\n }\n /**\n * Removes a document from the cache.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */\n removeEntry(t, e, n) {\n return So(t).delete(\n /**\n * Returns a key that can be used for document lookups via the primary key of\n * the DbRemoteDocument object store.\n */\n function (t, e) {\n const n = t.path.toArray();\n return [/* prefix path */n.slice(0, n.length - 2), /* collection id */n[n.length - 2], fr(e), /* document id */n[n.length - 1]];\n }\n /**\n * Returns a key that can be used for document lookups on the\n * `DbRemoteDocumentDocumentCollectionGroupIndex` index.\n */(e, n));\n }\n /**\n * Updates the current cache size.\n *\n * Callers to `addEntry()` and `removeEntry()` *must* call this afterwards to update the\n * cache's metadata.\n */\n updateMetadata(t, e) {\n return this.getMetadata(t).next(n => (n.byteSize += e, this.Zn(t, n)));\n }\n getEntry(t, e) {\n let n = an.newInvalidDocument(e);\n return So(t).X({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only(Do(e))\n }, (t, s) => {\n n = this.ts(e, s);\n }).next(() => n);\n }\n /**\n * Looks up an entry in the cache.\n *\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document entry and its size.\n */\n es(t, e) {\n let n = {\n size: 0,\n document: an.newInvalidDocument(e)\n };\n return So(t).X({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only(Do(e))\n }, (t, s) => {\n n = {\n document: this.ts(e, s),\n size: ro(s)\n };\n }).next(() => n);\n }\n getEntries(t, e) {\n let n = cs();\n return this.ns(t, e, (t, e) => {\n const s = this.ts(t, e);\n n = n.insert(t, s);\n }).next(() => n);\n }\n /**\n * Looks up several entries in the cache.\n *\n * @param documentKeys - The set of keys entries to look up.\n * @returns A map of documents indexed by key and a map of sizes indexed by\n * key (zero if the document does not exist).\n */\n ss(t, e) {\n let n = cs(),\n s = new pe(ht.comparator);\n return this.ns(t, e, (t, e) => {\n const i = this.ts(t, e);\n n = n.insert(t, i), s = s.insert(t, ro(e));\n }).next(() => ({\n documents: n,\n rs: s\n }));\n }\n ns(t, e, n) {\n if (e.isEmpty()) return Rt.resolve();\n let s = new Ee(xo);\n e.forEach(t => s = s.add(t));\n const i = IDBKeyRange.bound(Do(s.first()), Do(s.last())),\n r = s.getIterator();\n let o = r.getNext();\n return So(t).X({\n index: \"documentKeyIndex\",\n range: i\n }, (t, e, s) => {\n const i = ht.fromSegments([...e.prefixPath, e.collectionGroup, e.documentId]);\n // Go through keys not found in cache.\n for (; o && xo(o, i) < 0;) n(o, null), o = r.getNext();\n o && o.isEqual(i) && (\n // Key found in cache.\n n(o, e), o = r.hasNext() ? r.getNext() : null),\n // Skip to the next key (if there is one).\n o ? s.G(Do(o)) : s.done();\n }).next(() => {\n // The rest of the keys are not in the cache. One case where `iterate`\n // above won't go through them is when the cache is empty.\n for (; o;) n(o, null), o = r.hasNext() ? r.getNext() : null;\n });\n }\n getDocumentsMatchingQuery(t, e, n, s) {\n const i = e.path,\n r = [i.popLast().toArray(), i.lastSegment(), fr(n.readTime), n.documentKey.path.isEmpty() ? \"\" : n.documentKey.path.lastSegment()],\n o = [i.popLast().toArray(), i.lastSegment(), [Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER], \"\"];\n return So(t).j(IDBKeyRange.bound(r, o, !0)).next(t => {\n let n = cs();\n for (const i of t) {\n const t = this.ts(ht.fromSegments(i.prefixPath.concat(i.collectionGroup, i.documentId)), i);\n t.isFoundDocument() && (ns(e, t) || s.has(t.key)) && (\n // Either the document matches the given query, or it is mutated.\n n = n.insert(t.key, t));\n }\n return n;\n });\n }\n getAllFromCollectionGroup(t, e, n, s) {\n let i = cs();\n const r = Co(e, n),\n o = Co(e, It.max());\n return So(t).X({\n index: \"collectionGroupIndex\",\n range: IDBKeyRange.bound(r, o, !0)\n }, (t, e, n) => {\n const r = this.ts(ht.fromSegments(e.prefixPath.concat(e.collectionGroup, e.documentId)), e);\n i = i.insert(r.key, r), i.size === s && n.done();\n }).next(() => i);\n }\n newChangeBuffer(t) {\n return new bo(this, !!t && t.trackRemovals);\n }\n getSize(t) {\n return this.getMetadata(t).next(t => t.byteSize);\n }\n getMetadata(t) {\n return Vo(t).get(\"remoteDocumentGlobalKey\").next(t => (F(!!t), t));\n }\n Zn(t, e) {\n return Vo(t).put(\"remoteDocumentGlobalKey\", e);\n }\n /**\n * Decodes `dbRemoteDoc` and returns the document (or an invalid document if\n * the document corresponds to the format used for sentinel deletes).\n */\n ts(t, e) {\n if (e) {\n const t = hr(this.serializer, e);\n // Whether the document is a sentinel removal and should only be used in the\n // `getNewDocumentChanges()`\n if (!(t.isNoDocument() && t.version.isEqual(rt.min()))) return t;\n }\n return an.newInvalidDocument(t);\n }\n}\n\n/** Creates a new IndexedDbRemoteDocumentCache. */\nfunction Po(t) {\n return new Ro(t);\n}\n\n/**\n * Handles the details of adding and updating documents in the IndexedDbRemoteDocumentCache.\n *\n * Unlike the MemoryRemoteDocumentChangeBuffer, the IndexedDb implementation computes the size\n * delta for all submitted changes. This avoids having to re-read all documents from IndexedDb\n * when we apply the changes.\n */\nclass bo extends vo {\n /**\n * @param documentCache - The IndexedDbRemoteDocumentCache to apply the changes to.\n * @param trackRemovals - Whether to create sentinel deletes that can be tracked by\n * `getNewDocumentChanges()`.\n */\n constructor(t, e) {\n super(), this.os = t, this.trackRemovals = e,\n // A map of document sizes and read times prior to applying the changes in\n // this buffer.\n this.us = new os(t => t.toString(), (t, e) => t.isEqual(e));\n }\n applyChanges(t) {\n const e = [];\n let n = 0,\n s = new Ee((t, e) => et(t.canonicalString(), e.canonicalString()));\n return this.changes.forEach((i, r) => {\n const o = this.us.get(i);\n if (e.push(this.os.removeEntry(t, i, o.readTime)), r.isValidDocument()) {\n const u = lr(this.os.serializer, r);\n s = s.add(i.path.popLast());\n const c = ro(u);\n n += c - o.size, e.push(this.os.addEntry(t, i, u));\n } else if (n -= o.size, this.trackRemovals) {\n // In order to track removals, we store a \"sentinel delete\" in the\n // RemoteDocumentCache. This entry is represented by a NoDocument\n // with a version of 0 and ignored by `maybeDecodeDocument()` but\n // preserved in `getNewDocumentChanges()`.\n const n = lr(this.os.serializer, r.convertToNoDocument(rt.min()));\n e.push(this.os.addEntry(t, i, n));\n }\n }), s.forEach(n => {\n e.push(this.os.indexManager.addToCollectionParentIndex(t, n));\n }), e.push(this.os.updateMetadata(t, n)), Rt.waitFor(e);\n }\n getFromCache(t, e) {\n // Record the size of everything we load from the cache so we can compute a delta later.\n return this.os.es(t, e).next(t => (this.us.set(e, {\n size: t.size,\n readTime: t.document.readTime\n }), t.document));\n }\n getAllFromCache(t, e) {\n // Record the size of everything we load from the cache so we can compute\n // a delta later.\n return this.os.ss(t, e).next(_ref7 => {\n let {\n documents: t,\n rs: e\n } = _ref7;\n return (\n // Note: `getAllFromCache` returns two maps instead of a single map from\n // keys to `DocumentSizeEntry`s. This is to allow returning the\n // `MutableDocumentMap` directly, without a conversion.\n e.forEach((e, n) => {\n this.us.set(e, {\n size: n,\n readTime: t.get(e).readTime\n });\n }), t\n );\n });\n }\n}\nfunction Vo(t) {\n return _e(t, \"remoteDocumentGlobal\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the remoteDocuments object store.\n */\nfunction So(t) {\n return _e(t, \"remoteDocumentsV14\");\n}\n\n/**\n * Returns a key that can be used for document lookups on the\n * `DbRemoteDocumentDocumentKeyIndex` index.\n */\nfunction Do(t) {\n const e = t.path.toArray();\n return [/* prefix path */e.slice(0, e.length - 2), /* collection id */e[e.length - 2], /* document id */e[e.length - 1]];\n}\nfunction Co(t, e) {\n const n = e.documentKey.path.toArray();\n return [/* collection id */t, fr(e.readTime), /* prefix path */n.slice(0, n.length - 2), /* document id */n.length > 0 ? n[n.length - 1] : \"\"];\n}\n\n/**\n * Comparator that compares document keys according to the primary key sorting\n * used by the `DbRemoteDocumentDocument` store (by prefix path, collection id\n * and then document ID).\n *\n * Visible for testing.\n */\nfunction xo(t, e) {\n const n = t.path.toArray(),\n s = e.path.toArray();\n // The ordering is based on https://chromium.googlesource.com/chromium/blink/+/fe5c21fef94dae71c1c3344775b8d8a7f7e6d9ec/Source/modules/indexeddb/IDBKey.cpp#74\n let i = 0;\n for (let t = 0; t < n.length - 2 && t < s.length - 2; ++t) if (i = et(n[t], s[t]), i) return i;\n return i = et(n.length, s.length), i || (i = et(n[n.length - 2], s[s.length - 2]), i || et(n[n.length - 1], s[s.length - 1]));\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 * Schema Version for the Web client:\n * 1. Initial version including Mutation Queue, Query Cache, and Remote\n * Document Cache\n * 2. Used to ensure a targetGlobal object exists and add targetCount to it. No\n * longer required because migration 3 unconditionally clears it.\n * 3. Dropped and re-created Query Cache to deal with cache corruption related\n * to limbo resolution. Addresses\n * https://github.com/firebase/firebase-ios-sdk/issues/1548\n * 4. Multi-Tab Support.\n * 5. Removal of held write acks.\n * 6. Create document global for tracking document cache size.\n * 7. Ensure every cached document has a sentinel row with a sequence number.\n * 8. Add collection-parent index for Collection Group queries.\n * 9. Change RemoteDocumentChanges store to be keyed by readTime rather than\n * an auto-incrementing ID. This is required for Index-Free queries.\n * 10. Rewrite the canonical IDs to the explicit Protobuf-based format.\n * 11. Add bundles and named_queries for bundle support.\n * 12. Add document overlays.\n * 13. Rewrite the keys of the remote document cache to allow for efficient\n * document lookup via `getAll()`.\n * 14. Add overlays.\n * 15. Add indexing support.\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/**\n * Represents a local view (overlay) of a document, and the fields that are\n * locally mutated.\n */\nclass No {\n constructor(t,\n /**\n * The fields that are locally mutated by patch mutations.\n *\n * If the overlayed\tdocument is from set or delete mutations, this is `null`.\n * If there is no overlay (mutation) for the document, this is an empty `FieldMask`.\n */\n e) {\n this.overlayedDocument = t, this.mutatedFields = e;\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 * A readonly view of the local state of all documents we're tracking (i.e. we\n * have a cached version in remoteDocumentCache or local mutations for the\n * document). The view is computed by applying the mutations in the\n * MutationQueue to the RemoteDocumentCache.\n */\nclass ko {\n constructor(t, e, n, s) {\n this.remoteDocumentCache = t, this.mutationQueue = e, this.documentOverlayCache = n, this.indexManager = s;\n }\n /**\n * Get the local view of the document identified by `key`.\n *\n * @returns Local view of the document or null if we don't have any cached\n * state for it.\n */\n getDocument(t, e) {\n let n = null;\n return this.documentOverlayCache.getOverlay(t, e).next(s => (n = s, this.remoteDocumentCache.getEntry(t, e))).next(t => (null !== n && Ks(n.mutation, t, Re.empty(), it.now()), t));\n }\n /**\n * Gets the local view of the documents identified by `keys`.\n *\n * If we don't have cached state for a document in `keys`, a NoDocument will\n * be stored for that key in the resulting set.\n */\n getDocuments(t, e) {\n return this.remoteDocumentCache.getEntries(t, e).next(e => this.getLocalViewOfDocuments(t, e, gs()).next(() => e));\n }\n /**\n * Similar to `getDocuments`, but creates the local view from the given\n * `baseDocs` without retrieving documents from the local store.\n *\n * @param transaction - The transaction this operation is scoped to.\n * @param docs - The documents to apply local mutations to get the local views.\n * @param existenceStateChanged - The set of document keys whose existence state\n * is changed. This is useful to determine if some documents overlay needs\n * to be recalculated.\n */\n getLocalViewOfDocuments(t, e) {\n let n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : gs();\n const s = fs();\n return this.populateOverlays(t, s, e).next(() => this.computeViews(t, e, s, n).next(t => {\n let e = hs();\n return t.forEach((t, n) => {\n e = e.insert(t, n.overlayedDocument);\n }), e;\n }));\n }\n /**\n * Gets the overlayed documents for the given document map, which will include\n * the local view of those documents and a `FieldMask` indicating which fields\n * are mutated locally, `null` if overlay is a Set or Delete mutation.\n */\n getOverlayedDocuments(t, e) {\n const n = fs();\n return this.populateOverlays(t, n, e).next(() => this.computeViews(t, e, n, gs()));\n }\n /**\n * Fetches the overlays for {@code docs} and adds them to provided overlay map\n * if the map does not already contain an entry for the given document key.\n */\n populateOverlays(t, e, n) {\n const s = [];\n return n.forEach(t => {\n e.has(t) || s.push(t);\n }), this.documentOverlayCache.getOverlays(t, s).next(t => {\n t.forEach((t, n) => {\n e.set(t, n);\n });\n });\n }\n /**\n * Computes the local view for the given documents.\n *\n * @param docs - The documents to compute views for. It also has the base\n * version of the documents.\n * @param overlays - The overlays that need to be applied to the given base\n * version of the documents.\n * @param existenceStateChanged - A set of documents whose existence states\n * might have changed. This is used to determine if we need to re-calculate\n * overlays from mutation queues.\n * @return A map represents the local documents view.\n */\n computeViews(t, e, n, s) {\n let i = cs();\n const r = ws(),\n o = ws();\n return e.forEach((t, e) => {\n const o = n.get(e.key);\n // Recalculate an overlay if the document's existence state changed due to\n // a remote event *and* the overlay is a PatchMutation. This is because\n // document existence state can change if some patch mutation's\n // preconditions are met.\n // NOTE: we recalculate when `overlay` is undefined as well, because there\n // might be a patch mutation whose precondition does not match before the\n // change (hence overlay is undefined), but would now match.\n s.has(e.key) && (void 0 === o || o.mutation instanceof zs) ? i = i.insert(e.key, e) : void 0 !== o ? (r.set(e.key, o.mutation.getFieldMask()), Ks(o.mutation, e, o.mutation.getFieldMask(), it.now())) :\n // no overlay exists\n // Using EMPTY to indicate there is no overlay for the document.\n r.set(e.key, Re.empty());\n }), this.recalculateAndSaveOverlays(t, i).next(t => (t.forEach((t, e) => r.set(t, e)), e.forEach((t, e) => {\n var n;\n return o.set(t, new No(e, null !== (n = r.get(t)) && void 0 !== n ? n : null));\n }), o));\n }\n recalculateAndSaveOverlays(t, e) {\n const n = ws();\n // A reverse lookup map from batch id to the documents within that batch.\n let s = new pe((t, e) => t - e),\n i = gs();\n return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(t, e).next(t => {\n for (const i of t) i.keys().forEach(t => {\n const r = e.get(t);\n if (null === r) return;\n let o = n.get(t) || Re.empty();\n o = i.applyToLocalView(r, o), n.set(t, o);\n const u = (s.get(i.batchId) || gs()).add(t);\n s = s.insert(i.batchId, u);\n });\n }).next(() => {\n const r = [],\n o = s.getReverseIterator();\n // Iterate in descending order of batch IDs, and skip documents that are\n // already saved.\n for (; o.hasNext();) {\n const s = o.getNext(),\n u = s.key,\n c = s.value,\n a = ds();\n c.forEach(t => {\n if (!i.has(t)) {\n const s = qs(e.get(t), n.get(t));\n null !== s && a.set(t, s), i = i.add(t);\n }\n }), r.push(this.documentOverlayCache.saveOverlays(t, u, a));\n }\n return Rt.waitFor(r);\n }).next(() => n);\n }\n /**\n * Recalculates overlays by reading the documents from remote document cache\n * first, and saves them after they are calculated.\n */\n recalculateAndSaveOverlaysForDocumentKeys(t, e) {\n return this.remoteDocumentCache.getEntries(t, e).next(e => this.recalculateAndSaveOverlays(t, e));\n }\n /**\n * Performs a query against the local view of all documents.\n *\n * @param transaction - The persistence transaction.\n * @param query - The query to match documents against.\n * @param offset - Read time and key to start scanning by (exclusive).\n */\n getDocumentsMatchingQuery(t, e, n) {\n /**\n * Returns whether the query matches a single document by path (rather than a\n * collection).\n */\n return function (t) {\n return ht.isDocumentKey(t.path) && null === t.collectionGroup && 0 === t.filters.length;\n }(e) ? this.getDocumentsMatchingDocumentQuery(t, e.path) : Wn(e) ? this.getDocumentsMatchingCollectionGroupQuery(t, e, n) : this.getDocumentsMatchingCollectionQuery(t, e, n);\n }\n /**\n * Given a collection group, returns the next documents that follow the provided offset, along\n * with an updated batch ID.\n *\n *
The documents returned by this method are ordered by remote version from the provided\n * offset. If there are no more remote documents after the provided offset, documents with\n * mutations in order of batch id from the offset are returned. Since all documents in a batch are\n * returned together, the total number of documents returned can exceed {@code count}.\n *\n * @param transaction\n * @param collectionGroup The collection group for the documents.\n * @param offset The offset to index into.\n * @param count The number of documents to return\n * @return A LocalWriteResult with the documents that follow the provided offset and the last processed batch id.\n */\n getNextDocuments(t, e, n, s) {\n return this.remoteDocumentCache.getAllFromCollectionGroup(t, e, n, s).next(i => {\n const r = s - i.size > 0 ? this.documentOverlayCache.getOverlaysForCollectionGroup(t, e, n.largestBatchId, s - i.size) : Rt.resolve(fs());\n // The callsite will use the largest batch ID together with the latest read time to create\n // a new index offset. Since we only process batch IDs if all remote documents have been read,\n // no overlay will increase the overall read time. This is why we only need to special case\n // the batch id.\n let o = -1,\n u = i;\n return r.next(e => Rt.forEach(e, (e, n) => (o < n.largestBatchId && (o = n.largestBatchId), i.get(e) ? Rt.resolve() : this.remoteDocumentCache.getEntry(t, e).next(t => {\n u = u.insert(e, t);\n }))).next(() => this.populateOverlays(t, e, i)).next(() => this.computeViews(t, u, e, gs())).next(t => ({\n batchId: o,\n changes: ls(t)\n })));\n });\n }\n getDocumentsMatchingDocumentQuery(t, e) {\n // Just do a simple document lookup.\n return this.getDocument(t, new ht(e)).next(t => {\n let e = hs();\n return t.isFoundDocument() && (e = e.insert(t.key, t)), e;\n });\n }\n getDocumentsMatchingCollectionGroupQuery(t, e, n) {\n const s = e.collectionGroup;\n let i = hs();\n return this.indexManager.getCollectionParents(t, s).next(r => Rt.forEach(r, r => {\n const o = function (t, e) {\n return new Un(e, /*collectionGroup=*/null, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, t.startAt, t.endAt);\n }(e, r.child(s));\n return this.getDocumentsMatchingCollectionQuery(t, o, n).next(t => {\n t.forEach((t, e) => {\n i = i.insert(t, e);\n });\n });\n }).next(() => i));\n }\n getDocumentsMatchingCollectionQuery(t, e, n) {\n // Query the remote documents and overlay mutations.\n let s;\n return this.documentOverlayCache.getOverlaysForCollection(t, e.path, n.largestBatchId).next(i => (s = i, this.remoteDocumentCache.getDocumentsMatchingQuery(t, e, n, s))).next(t => {\n // As documents might match the query because of their overlay we need to\n // include documents for all overlays in the initial document set.\n s.forEach((e, n) => {\n const s = n.getKey();\n null === t.get(s) && (t = t.insert(s, an.newInvalidDocument(s)));\n });\n // Apply the overlays and match against the query.\n let n = hs();\n return t.forEach((t, i) => {\n const r = s.get(t);\n void 0 !== r && Ks(r.mutation, i, Re.empty(), it.now()),\n // Finally, insert the documents that still match the query\n ns(e, i) && (n = n.insert(t, i));\n }), n;\n });\n }\n}\n\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 */\nclass Mo {\n constructor(t) {\n this.serializer = t, this.cs = new Map(), this.hs = new Map();\n }\n getBundleMetadata(t, e) {\n return Rt.resolve(this.cs.get(e));\n }\n saveBundleMetadata(t, e) {\n /** Decodes a BundleMetadata proto into a BundleMetadata object. */\n var n;\n return this.cs.set(e.id, {\n id: (n = e).id,\n version: n.version,\n createTime: Ni(n.createTime)\n }), Rt.resolve();\n }\n getNamedQuery(t, e) {\n return Rt.resolve(this.hs.get(e));\n }\n saveNamedQuery(t, e) {\n return this.hs.set(e.name, function (t) {\n return {\n name: t.name,\n query: yr(t.bundledQuery),\n readTime: Ni(t.readTime)\n };\n }(e)), Rt.resolve();\n }\n}\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/**\n * An in-memory implementation of DocumentOverlayCache.\n */\nclass $o {\n constructor() {\n // A map sorted by DocumentKey, whose value is a pair of the largest batch id\n // for the overlay and the overlay itself.\n this.overlays = new pe(ht.comparator), this.ls = new Map();\n }\n getOverlay(t, e) {\n return Rt.resolve(this.overlays.get(e));\n }\n getOverlays(t, e) {\n const n = fs();\n return Rt.forEach(e, e => this.getOverlay(t, e).next(t => {\n null !== t && n.set(e, t);\n })).next(() => n);\n }\n saveOverlays(t, e, n) {\n return n.forEach((n, s) => {\n this.we(t, e, s);\n }), Rt.resolve();\n }\n removeOverlaysForBatchId(t, e, n) {\n const s = this.ls.get(n);\n return void 0 !== s && (s.forEach(t => this.overlays = this.overlays.remove(t)), this.ls.delete(n)), Rt.resolve();\n }\n getOverlaysForCollection(t, e, n) {\n const s = fs(),\n i = e.length + 1,\n r = new ht(e.child(\"\")),\n o = this.overlays.getIteratorFrom(r);\n for (; o.hasNext();) {\n const t = o.getNext().value,\n r = t.getKey();\n if (!e.isPrefixOf(r.path)) break;\n // Documents from sub-collections\n r.path.length === i && t.largestBatchId > n && s.set(t.getKey(), t);\n }\n return Rt.resolve(s);\n }\n getOverlaysForCollectionGroup(t, e, n, s) {\n let i = new pe((t, e) => t - e);\n const r = this.overlays.getIterator();\n for (; r.hasNext();) {\n const t = r.getNext().value;\n if (t.getKey().getCollectionGroup() === e && t.largestBatchId > n) {\n let e = i.get(t.largestBatchId);\n null === e && (e = fs(), i = i.insert(t.largestBatchId, e)), e.set(t.getKey(), t);\n }\n }\n const o = fs(),\n u = i.getIterator();\n for (; u.hasNext();) {\n if (u.getNext().value.forEach((t, e) => o.set(t, e)), o.size() >= s) break;\n }\n return Rt.resolve(o);\n }\n we(t, e, n) {\n // Remove the association of the overlay to its batch id.\n const s = this.overlays.get(n.key);\n if (null !== s) {\n const t = this.ls.get(s.largestBatchId).delete(n.key);\n this.ls.set(s.largestBatchId, t);\n }\n this.overlays = this.overlays.insert(n.key, new ei(e, n));\n // Create the association of this overlay to the given largestBatchId.\n let i = this.ls.get(e);\n void 0 === i && (i = gs(), this.ls.set(e, i)), this.ls.set(e, i.add(n.key));\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 * A collection of references to a document from some kind of numbered entity\n * (either a target ID or batch ID). As references are added to or removed from\n * the set corresponding events are emitted to a registered garbage collector.\n *\n * Each reference is represented by a DocumentReference object. Each of them\n * contains enough information to uniquely identify the reference. They are all\n * stored primarily in a set sorted by key. A document is considered garbage if\n * there's no references in that set (this can be efficiently checked thanks to\n * sorting by key).\n *\n * ReferenceSet also keeps a secondary set that contains references sorted by\n * IDs. This one is used to efficiently implement removal of all references by\n * some target ID.\n */\nclass Oo {\n constructor() {\n // A set of outstanding references to a document sorted by key.\n this.fs = new Ee(Fo.ds),\n // A set of outstanding references to a document sorted by target id.\n this.ws = new Ee(Fo._s);\n }\n /** Returns true if the reference set contains no references. */\n isEmpty() {\n return this.fs.isEmpty();\n }\n /** Adds a reference to the given document key for the given ID. */\n addReference(t, e) {\n const n = new Fo(t, e);\n this.fs = this.fs.add(n), this.ws = this.ws.add(n);\n }\n /** Add references to the given document keys for the given ID. */\n gs(t, e) {\n t.forEach(t => this.addReference(t, e));\n }\n /**\n * Removes a reference to the given document key for the given\n * ID.\n */\n removeReference(t, e) {\n this.ys(new Fo(t, e));\n }\n ps(t, e) {\n t.forEach(t => this.removeReference(t, e));\n }\n /**\n * Clears all references with a given ID. Calls removeRef() for each key\n * removed.\n */\n Is(t) {\n const e = new ht(new ut([])),\n n = new Fo(e, t),\n s = new Fo(e, t + 1),\n i = [];\n return this.ws.forEachInRange([n, s], t => {\n this.ys(t), i.push(t.key);\n }), i;\n }\n Ts() {\n this.fs.forEach(t => this.ys(t));\n }\n ys(t) {\n this.fs = this.fs.delete(t), this.ws = this.ws.delete(t);\n }\n Es(t) {\n const e = new ht(new ut([])),\n n = new Fo(e, t),\n s = new Fo(e, t + 1);\n let i = gs();\n return this.ws.forEachInRange([n, s], t => {\n i = i.add(t.key);\n }), i;\n }\n containsKey(t) {\n const e = new Fo(t, 0),\n n = this.fs.firstAfterOrEqual(e);\n return null !== n && t.isEqual(n.key);\n }\n}\nclass Fo {\n constructor(t, e) {\n this.key = t, this.As = e;\n }\n /** Compare by key then by ID */\n static ds(t, e) {\n return ht.comparator(t.key, e.key) || et(t.As, e.As);\n }\n /** Compare by ID then by key */\n static _s(t, e) {\n return et(t.As, e.As) || ht.comparator(t.key, e.key);\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 */\nclass Bo {\n constructor(t, e) {\n this.indexManager = t, this.referenceDelegate = e,\n /**\n * The set of all mutations that have been sent but not yet been applied to\n * the backend.\n */\n this.mutationQueue = [], /** Next value to use when assigning sequential IDs to each mutation batch. */\n this.vs = 1, /** An ordered mapping between documents and the mutations batch IDs. */\n this.Rs = new Ee(Fo.ds);\n }\n checkEmpty(t) {\n return Rt.resolve(0 === this.mutationQueue.length);\n }\n addMutationBatch(t, e, n, s) {\n const i = this.vs;\n this.vs++, this.mutationQueue.length > 0 && this.mutationQueue[this.mutationQueue.length - 1];\n const r = new Zs(i, e, n, s);\n this.mutationQueue.push(r);\n // Track references by document key and index collection parents.\n for (const e of s) this.Rs = this.Rs.add(new Fo(e.key, i)), this.indexManager.addToCollectionParentIndex(t, e.key.path.popLast());\n return Rt.resolve(r);\n }\n lookupMutationBatch(t, e) {\n return Rt.resolve(this.Ps(e));\n }\n getNextMutationBatchAfterBatchId(t, e) {\n const n = e + 1,\n s = this.bs(n),\n i = s < 0 ? 0 : s;\n // The requested batchId may still be out of range so normalize it to the\n // start of the queue.\n return Rt.resolve(this.mutationQueue.length > i ? this.mutationQueue[i] : null);\n }\n getHighestUnacknowledgedBatchId() {\n return Rt.resolve(0 === this.mutationQueue.length ? -1 : this.vs - 1);\n }\n getAllMutationBatches(t) {\n return Rt.resolve(this.mutationQueue.slice());\n }\n getAllMutationBatchesAffectingDocumentKey(t, e) {\n const n = new Fo(e, 0),\n s = new Fo(e, Number.POSITIVE_INFINITY),\n i = [];\n return this.Rs.forEachInRange([n, s], t => {\n const e = this.Ps(t.As);\n i.push(e);\n }), Rt.resolve(i);\n }\n getAllMutationBatchesAffectingDocumentKeys(t, e) {\n let n = new Ee(et);\n return e.forEach(t => {\n const e = new Fo(t, 0),\n s = new Fo(t, Number.POSITIVE_INFINITY);\n this.Rs.forEachInRange([e, s], t => {\n n = n.add(t.As);\n });\n }), Rt.resolve(this.Vs(n));\n }\n getAllMutationBatchesAffectingQuery(t, e) {\n // Use the query path as a prefix for testing if a document matches the\n // query.\n const n = e.path,\n s = n.length + 1;\n // Construct a document reference for actually scanning the index. Unlike\n // the prefix the document key in this reference must have an even number of\n // segments. The empty segment can be used a suffix of the query path\n // because it precedes all other segments in an ordered traversal.\n let i = n;\n ht.isDocumentKey(i) || (i = i.child(\"\"));\n const r = new Fo(new ht(i), 0);\n // Find unique batchIDs referenced by all documents potentially matching the\n // query.\n let o = new Ee(et);\n return this.Rs.forEachWhile(t => {\n const e = t.key.path;\n return !!n.isPrefixOf(e) && (\n // Rows with document keys more than one segment longer than the query\n // path can't be matches. For example, a query on 'rooms' can't match\n // the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n e.length === s && (o = o.add(t.As)), !0);\n }, r), Rt.resolve(this.Vs(o));\n }\n Vs(t) {\n // Construct an array of matching batches, sorted by batchID to ensure that\n // multiple mutations affecting the same document key are applied in order.\n const e = [];\n return t.forEach(t => {\n const n = this.Ps(t);\n null !== n && e.push(n);\n }), e;\n }\n removeMutationBatch(t, e) {\n F(0 === this.Ss(e.batchId, \"removed\")), this.mutationQueue.shift();\n let n = this.Rs;\n return Rt.forEach(e.mutations, s => {\n const i = new Fo(s.key, e.batchId);\n return n = n.delete(i), this.referenceDelegate.markPotentiallyOrphaned(t, s.key);\n }).next(() => {\n this.Rs = n;\n });\n }\n Cn(t) {\n // No-op since the memory mutation queue does not maintain a separate cache.\n }\n containsKey(t, e) {\n const n = new Fo(e, 0),\n s = this.Rs.firstAfterOrEqual(n);\n return Rt.resolve(e.isEqual(s && s.key));\n }\n performConsistencyCheck(t) {\n return this.mutationQueue.length, Rt.resolve();\n }\n /**\n * Finds the index of the given batchId in the mutation queue and asserts that\n * the resulting index is within the bounds of the queue.\n *\n * @param batchId - The batchId to search for\n * @param action - A description of what the caller is doing, phrased in passive\n * form (e.g. \"acknowledged\" in a routine that acknowledges batches).\n */\n Ss(t, e) {\n return this.bs(t);\n }\n /**\n * Finds the index of the given batchId in the mutation queue. This operation\n * is O(1).\n *\n * @returns The computed index of the batch with the given batchId, based on\n * the state of the queue. Note this index can be negative if the requested\n * batchId has already been remvoed from the queue or past the end of the\n * queue if the batchId is larger than the last added batch.\n */\n bs(t) {\n if (0 === this.mutationQueue.length)\n // As an index this is past the end of the queue\n return 0;\n // Examine the front of the queue to figure out the difference between the\n // batchId and indexes in the array. Note that since the queue is ordered\n // by batchId, if the first batch has a larger batchId then the requested\n // batchId doesn't exist in the queue.\n return t - this.mutationQueue[0].batchId;\n }\n /**\n * A version of lookupMutationBatch that doesn't return a promise, this makes\n * other functions that uses this code easier to read and more efficent.\n */\n Ps(t) {\n const e = this.bs(t);\n if (e < 0 || e >= this.mutationQueue.length) return null;\n return this.mutationQueue[e];\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 * The memory-only RemoteDocumentCache for IndexedDb. To construct, invoke\n * `newMemoryRemoteDocumentCache()`.\n */\nclass Lo {\n /**\n * @param sizer - Used to assess the size of a document. For eager GC, this is\n * expected to just return 0 to avoid unnecessarily doing the work of\n * calculating the size.\n */\n constructor(t) {\n this.Ds = t, /** Underlying cache of documents and their read times. */\n this.docs = new pe(ht.comparator), /** Size of all cached documents. */\n this.size = 0;\n }\n setIndexManager(t) {\n this.indexManager = t;\n }\n /**\n * Adds the supplied entry to the cache and updates the cache size as appropriate.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */\n addEntry(t, e) {\n const n = e.key,\n s = this.docs.get(n),\n i = s ? s.size : 0,\n r = this.Ds(e);\n return this.docs = this.docs.insert(n, {\n document: e.mutableCopy(),\n size: r\n }), this.size += r - i, this.indexManager.addToCollectionParentIndex(t, n.path.popLast());\n }\n /**\n * Removes the specified entry from the cache and updates the cache size as appropriate.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */\n removeEntry(t) {\n const e = this.docs.get(t);\n e && (this.docs = this.docs.remove(t), this.size -= e.size);\n }\n getEntry(t, e) {\n const n = this.docs.get(e);\n return Rt.resolve(n ? n.document.mutableCopy() : an.newInvalidDocument(e));\n }\n getEntries(t, e) {\n let n = cs();\n return e.forEach(t => {\n const e = this.docs.get(t);\n n = n.insert(t, e ? e.document.mutableCopy() : an.newInvalidDocument(t));\n }), Rt.resolve(n);\n }\n getDocumentsMatchingQuery(t, e, n, s) {\n let i = cs();\n // Documents are ordered by key, so we can use a prefix scan to narrow down\n // the documents we need to match the query against.\n const r = e.path,\n o = new ht(r.child(\"\")),\n u = this.docs.getIteratorFrom(o);\n for (; u.hasNext();) {\n const {\n key: t,\n value: {\n document: o\n }\n } = u.getNext();\n if (!r.isPrefixOf(t.path)) break;\n t.path.length > r.length + 1 || Tt(pt(o), n) <= 0 || (s.has(o.key) || ns(e, o)) && (i = i.insert(o.key, o.mutableCopy()));\n }\n return Rt.resolve(i);\n }\n getAllFromCollectionGroup(t, e, n, s) {\n // This method should only be called from the IndexBackfiller if persistence\n // is enabled.\n O();\n }\n Cs(t, e) {\n return Rt.forEach(this.docs, t => e(t));\n }\n newChangeBuffer(t) {\n // `trackRemovals` is ignores since the MemoryRemoteDocumentCache keeps\n // a separate changelog and does not need special handling for removals.\n return new qo(this);\n }\n getSize(t) {\n return Rt.resolve(this.size);\n }\n}\n\n/**\n * Creates a new memory-only RemoteDocumentCache.\n *\n * @param sizer - Used to assess the size of a document. For eager GC, this is\n * expected to just return 0 to avoid unnecessarily doing the work of\n * calculating the size.\n */\n/**\n * Handles the details of adding and updating documents in the MemoryRemoteDocumentCache.\n */\nclass qo extends vo {\n constructor(t) {\n super(), this.os = t;\n }\n applyChanges(t) {\n const e = [];\n return this.changes.forEach((n, s) => {\n s.isValidDocument() ? e.push(this.os.addEntry(t, s)) : this.os.removeEntry(n);\n }), Rt.waitFor(e);\n }\n getFromCache(t, e) {\n return this.os.getEntry(t, e);\n }\n getAllFromCache(t, e) {\n return this.os.getEntries(t, e);\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 */\nclass Uo {\n constructor(t) {\n this.persistence = t,\n /**\n * Maps a target to the data about that target\n */\n this.xs = new os(t => $n(t), On), /** The last received snapshot version. */\n this.lastRemoteSnapshotVersion = rt.min(), /** The highest numbered target ID encountered. */\n this.highestTargetId = 0, /** The highest sequence number encountered. */\n this.Ns = 0,\n /**\n * A ordered bidirectional mapping between documents and the remote target\n * IDs.\n */\n this.ks = new Oo(), this.targetCount = 0, this.Ms = lo.kn();\n }\n forEachTarget(t, e) {\n return this.xs.forEach((t, n) => e(n)), Rt.resolve();\n }\n getLastRemoteSnapshotVersion(t) {\n return Rt.resolve(this.lastRemoteSnapshotVersion);\n }\n getHighestSequenceNumber(t) {\n return Rt.resolve(this.Ns);\n }\n allocateTargetId(t) {\n return this.highestTargetId = this.Ms.next(), Rt.resolve(this.highestTargetId);\n }\n setTargetsMetadata(t, e, n) {\n return n && (this.lastRemoteSnapshotVersion = n), e > this.Ns && (this.Ns = e), Rt.resolve();\n }\n Fn(t) {\n this.xs.set(t.target, t);\n const e = t.targetId;\n e > this.highestTargetId && (this.Ms = new lo(e), this.highestTargetId = e), t.sequenceNumber > this.Ns && (this.Ns = t.sequenceNumber);\n }\n addTargetData(t, e) {\n return this.Fn(e), this.targetCount += 1, Rt.resolve();\n }\n updateTargetData(t, e) {\n return this.Fn(e), Rt.resolve();\n }\n removeTargetData(t, e) {\n return this.xs.delete(e.target), this.ks.Is(e.targetId), this.targetCount -= 1, Rt.resolve();\n }\n removeTargets(t, e, n) {\n let s = 0;\n const i = [];\n return this.xs.forEach((r, o) => {\n o.sequenceNumber <= e && null === n.get(o.targetId) && (this.xs.delete(r), i.push(this.removeMatchingKeysForTargetId(t, o.targetId)), s++);\n }), Rt.waitFor(i).next(() => s);\n }\n getTargetCount(t) {\n return Rt.resolve(this.targetCount);\n }\n getTargetData(t, e) {\n const n = this.xs.get(e) || null;\n return Rt.resolve(n);\n }\n addMatchingKeys(t, e, n) {\n return this.ks.gs(e, n), Rt.resolve();\n }\n removeMatchingKeys(t, e, n) {\n this.ks.ps(e, n);\n const s = this.persistence.referenceDelegate,\n i = [];\n return s && e.forEach(e => {\n i.push(s.markPotentiallyOrphaned(t, e));\n }), Rt.waitFor(i);\n }\n removeMatchingKeysForTargetId(t, e) {\n return this.ks.Is(e), Rt.resolve();\n }\n getMatchingKeysForTargetId(t, e) {\n const n = this.ks.Es(e);\n return Rt.resolve(n);\n }\n containsKey(t, e) {\n return Rt.resolve(this.ks.containsKey(e));\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 * A memory-backed instance of Persistence. Data is stored only in RAM and\n * not persisted across sessions.\n */\nclass Ko {\n /**\n * The constructor accepts a factory for creating a reference delegate. This\n * allows both the delegate and this instance to have strong references to\n * each other without having nullable fields that would then need to be\n * checked or asserted on every access.\n */\n constructor(t, e) {\n this.$s = {}, this.overlays = {}, this.Os = new Ot(0), this.Fs = !1, this.Fs = !0, this.referenceDelegate = t(this), this.Bs = new Uo(this);\n this.indexManager = new zr(), this.remoteDocumentCache = function (t) {\n return new Lo(t);\n }(t => this.referenceDelegate.Ls(t)), this.serializer = new ar(e), this.qs = new Mo(this.serializer);\n }\n start() {\n return Promise.resolve();\n }\n shutdown() {\n // No durable state to ensure is closed on shutdown.\n return this.Fs = !1, Promise.resolve();\n }\n get started() {\n return this.Fs;\n }\n setDatabaseDeletedListener() {\n // No op.\n }\n setNetworkEnabled() {\n // No op.\n }\n getIndexManager(t) {\n // We do not currently support indices for memory persistence, so we can\n // return the same shared instance of the memory index manager.\n return this.indexManager;\n }\n getDocumentOverlayCache(t) {\n let e = this.overlays[t.toKey()];\n return e || (e = new $o(), this.overlays[t.toKey()] = e), e;\n }\n getMutationQueue(t, e) {\n let n = this.$s[t.toKey()];\n return n || (n = new Bo(e, this.referenceDelegate), this.$s[t.toKey()] = n), n;\n }\n getTargetCache() {\n return this.Bs;\n }\n getRemoteDocumentCache() {\n return this.remoteDocumentCache;\n }\n getBundleCache() {\n return this.qs;\n }\n runTransaction(t, e, n) {\n N(\"MemoryPersistence\", \"Starting transaction:\", t);\n const s = new Go(this.Os.next());\n return this.referenceDelegate.Us(), n(s).next(t => this.referenceDelegate.Ks(s).next(() => t)).toPromise().then(t => (s.raiseOnCommittedEvent(), t));\n }\n Gs(t, e) {\n return Rt.or(Object.values(this.$s).map(n => () => n.containsKey(t, e)));\n }\n}\n\n/**\n * Memory persistence is not actually transactional, but future implementations\n * may have transaction-scoped state.\n */\nclass Go extends At {\n constructor(t) {\n super(), this.currentSequenceNumber = t;\n }\n}\nclass Qo {\n constructor(t) {\n this.persistence = t, /** Tracks all documents that are active in Query views. */\n this.Qs = new Oo(), /** The list of documents that are potentially GCed after each transaction. */\n this.js = null;\n }\n static zs(t) {\n return new Qo(t);\n }\n get Ws() {\n if (this.js) return this.js;\n throw O();\n }\n addReference(t, e, n) {\n return this.Qs.addReference(n, e), this.Ws.delete(n.toString()), Rt.resolve();\n }\n removeReference(t, e, n) {\n return this.Qs.removeReference(n, e), this.Ws.add(n.toString()), Rt.resolve();\n }\n markPotentiallyOrphaned(t, e) {\n return this.Ws.add(e.toString()), Rt.resolve();\n }\n removeTarget(t, e) {\n this.Qs.Is(e.targetId).forEach(t => this.Ws.add(t.toString()));\n const n = this.persistence.getTargetCache();\n return n.getMatchingKeysForTargetId(t, e.targetId).next(t => {\n t.forEach(t => this.Ws.add(t.toString()));\n }).next(() => n.removeTargetData(t, e));\n }\n Us() {\n this.js = new Set();\n }\n Ks(t) {\n // Remove newly orphaned documents.\n const e = this.persistence.getRemoteDocumentCache().newChangeBuffer();\n return Rt.forEach(this.Ws, n => {\n const s = ht.fromPath(n);\n return this.Hs(t, s).next(t => {\n t || e.removeEntry(s, rt.min());\n });\n }).next(() => (this.js = null, e.apply(t)));\n }\n updateLimboDocument(t, e) {\n return this.Hs(t, e).next(t => {\n t ? this.Ws.delete(e.toString()) : this.Ws.add(e.toString());\n });\n }\n Ls(t) {\n // For eager GC, we don't care about the document size, there are no size thresholds.\n return 0;\n }\n Hs(t, e) {\n return Rt.or([() => Rt.resolve(this.Qs.containsKey(e)), () => this.persistence.getTargetCache().containsKey(t, e), () => this.persistence.Gs(t, e)]);\n }\n}\nclass jo {\n constructor(t, e) {\n this.persistence = t, this.Js = new os(t => qt(t.path), (t, e) => t.isEqual(e)), this.garbageCollector = To(this, e);\n }\n static zs(t, e) {\n return new jo(t, e);\n }\n // No-ops, present so memory persistence doesn't have to care which delegate\n // it has.\n Us() {}\n Ks(t) {\n return Rt.resolve();\n }\n forEachTarget(t, e) {\n return this.persistence.getTargetCache().forEachTarget(t, e);\n }\n zn(t) {\n const e = this.Jn(t);\n return this.persistence.getTargetCache().getTargetCount(t).next(t => e.next(e => t + e));\n }\n Jn(t) {\n let e = 0;\n return this.Wn(t, t => {\n e++;\n }).next(() => e);\n }\n Wn(t, e) {\n return Rt.forEach(this.Js, (n, s) => this.Xn(t, n, s).next(t => t ? Rt.resolve() : e(s)));\n }\n removeTargets(t, e, n) {\n return this.persistence.getTargetCache().removeTargets(t, e, n);\n }\n removeOrphanedDocuments(t, e) {\n let n = 0;\n const s = this.persistence.getRemoteDocumentCache(),\n i = s.newChangeBuffer();\n return s.Cs(t, s => this.Xn(t, s, e).next(t => {\n t || (n++, i.removeEntry(s, rt.min()));\n })).next(() => i.apply(t)).next(() => n);\n }\n markPotentiallyOrphaned(t, e) {\n return this.Js.set(e, t.currentSequenceNumber), Rt.resolve();\n }\n removeTarget(t, e) {\n const n = e.withSequenceNumber(t.currentSequenceNumber);\n return this.persistence.getTargetCache().updateTargetData(t, n);\n }\n addReference(t, e, n) {\n return this.Js.set(n, t.currentSequenceNumber), Rt.resolve();\n }\n removeReference(t, e, n) {\n return this.Js.set(n, t.currentSequenceNumber), Rt.resolve();\n }\n updateLimboDocument(t, e) {\n return this.Js.set(e, t.currentSequenceNumber), Rt.resolve();\n }\n Ls(t) {\n let e = t.key.toString().length;\n return t.isFoundDocument() && (e += ze(t.data.value)), e;\n }\n Xn(t, e, n) {\n return Rt.or([() => this.persistence.Gs(t, e), () => this.persistence.getTargetCache().containsKey(t, e), () => {\n const t = this.Js.get(e);\n return Rt.resolve(void 0 !== t && t > n);\n }]);\n }\n getCacheSize(t) {\n return this.persistence.getRemoteDocumentCache().getSize(t);\n }\n}\n\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 */\n/** Performs database creation and schema upgrades. */\nclass zo {\n constructor(t) {\n this.serializer = t;\n }\n /**\n * Performs database creation and schema upgrades.\n *\n * Note that in production, this method is only ever used to upgrade the schema\n * to SCHEMA_VERSION. Different values of toVersion are only used for testing\n * and local feature development.\n */\n O(t, e, n, s) {\n const i = new Pt(\"createOrUpgrade\", e);\n n < 1 && s >= 1 && (function (t) {\n t.createObjectStore(\"owner\");\n }(t), function (t) {\n t.createObjectStore(\"mutationQueues\", {\n keyPath: \"userId\"\n });\n t.createObjectStore(\"mutations\", {\n keyPath: \"batchId\",\n autoIncrement: !0\n }).createIndex(\"userMutationsIndex\", Qt, {\n unique: !0\n }), t.createObjectStore(\"documentMutations\");\n }\n /**\n * Upgrade function to migrate the 'mutations' store from V1 to V3. Loads\n * and rewrites all data.\n */(t), Wo(t), function (t) {\n t.createObjectStore(\"remoteDocuments\");\n }(t));\n // Migration 2 to populate the targetGlobal object no longer needed since\n // migration 3 unconditionally clears it.\n let r = Rt.resolve();\n return n < 3 && s >= 3 && (\n // Brand new clients don't need to drop and recreate--only clients that\n // potentially have corrupt data.\n 0 !== n && (!function (t) {\n t.deleteObjectStore(\"targetDocuments\"), t.deleteObjectStore(\"targets\"), t.deleteObjectStore(\"targetGlobal\");\n }(t), Wo(t)), r = r.next(() =>\n /**\n * Creates the target global singleton row.\n *\n * @param txn - The version upgrade transaction for indexeddb\n */\n function (t) {\n const e = t.store(\"targetGlobal\"),\n n = {\n highestTargetId: 0,\n highestListenSequenceNumber: 0,\n lastRemoteSnapshotVersion: rt.min().toTimestamp(),\n targetCount: 0\n };\n return e.put(\"targetGlobalKey\", n);\n }(i))), n < 4 && s >= 4 && (0 !== n && (\n // Schema version 3 uses auto-generated keys to generate globally unique\n // mutation batch IDs (this was previously ensured internally by the\n // client). To migrate to the new schema, we have to read all mutations\n // and write them back out. We preserve the existing batch IDs to guarantee\n // consistency with other object stores. Any further mutation batch IDs will\n // be auto-generated.\n r = r.next(() => function (t, e) {\n return e.store(\"mutations\").j().next(n => {\n t.deleteObjectStore(\"mutations\");\n t.createObjectStore(\"mutations\", {\n keyPath: \"batchId\",\n autoIncrement: !0\n }).createIndex(\"userMutationsIndex\", Qt, {\n unique: !0\n });\n const s = e.store(\"mutations\"),\n i = n.map(t => s.put(t));\n return Rt.waitFor(i);\n });\n }(t, i))), r = r.next(() => {\n !function (t) {\n t.createObjectStore(\"clientMetadata\", {\n keyPath: \"clientId\"\n });\n }(t);\n })), n < 5 && s >= 5 && (r = r.next(() => this.Ys(i))), n < 6 && s >= 6 && (r = r.next(() => (function (t) {\n t.createObjectStore(\"remoteDocumentGlobal\");\n }(t), this.Xs(i)))), n < 7 && s >= 7 && (r = r.next(() => this.Zs(i))), n < 8 && s >= 8 && (r = r.next(() => this.ti(t, i))), n < 9 && s >= 9 && (r = r.next(() => {\n // Multi-Tab used to manage its own changelog, but this has been moved\n // to the DbRemoteDocument object store itself. Since the previous change\n // log only contained transient data, we can drop its object store.\n !function (t) {\n t.objectStoreNames.contains(\"remoteDocumentChanges\") && t.deleteObjectStore(\"remoteDocumentChanges\");\n }(t);\n // Note: Schema version 9 used to create a read time index for the\n // RemoteDocumentCache. This is now done with schema version 13.\n })), n < 10 && s >= 10 && (r = r.next(() => this.ei(i))), n < 11 && s >= 11 && (r = r.next(() => {\n !function (t) {\n t.createObjectStore(\"bundles\", {\n keyPath: \"bundleId\"\n });\n }(t), function (t) {\n t.createObjectStore(\"namedQueries\", {\n keyPath: \"name\"\n });\n }(t);\n })), n < 12 && s >= 12 && (r = r.next(() => {\n !function (t) {\n const e = t.createObjectStore(\"documentOverlays\", {\n keyPath: oe\n });\n e.createIndex(\"collectionPathOverlayIndex\", ue, {\n unique: !1\n }), e.createIndex(\"collectionGroupOverlayIndex\", ce, {\n unique: !1\n });\n }(t);\n })), n < 13 && s >= 13 && (r = r.next(() => function (t) {\n const e = t.createObjectStore(\"remoteDocumentsV14\", {\n keyPath: Ht\n });\n e.createIndex(\"documentKeyIndex\", Jt), e.createIndex(\"collectionGroupIndex\", Yt);\n }(t)).next(() => this.ni(t, i)).next(() => t.deleteObjectStore(\"remoteDocuments\"))), n < 14 && s >= 14 && (r = r.next(() => this.si(t, i))), n < 15 && s >= 15 && (r = r.next(() => function (t) {\n t.createObjectStore(\"indexConfiguration\", {\n keyPath: \"indexId\",\n autoIncrement: !0\n }).createIndex(\"collectionGroupIndex\", \"collectionGroup\", {\n unique: !1\n });\n t.createObjectStore(\"indexState\", {\n keyPath: ne\n }).createIndex(\"sequenceNumberIndex\", se, {\n unique: !1\n });\n t.createObjectStore(\"indexEntries\", {\n keyPath: ie\n }).createIndex(\"documentKeyIndex\", re, {\n unique: !1\n });\n }(t))), r;\n }\n Xs(t) {\n let e = 0;\n return t.store(\"remoteDocuments\").X((t, n) => {\n e += ro(n);\n }).next(() => {\n const n = {\n byteSize: e\n };\n return t.store(\"remoteDocumentGlobal\").put(\"remoteDocumentGlobalKey\", n);\n });\n }\n Ys(t) {\n const e = t.store(\"mutationQueues\"),\n n = t.store(\"mutations\");\n return e.j().next(e => Rt.forEach(e, e => {\n const s = IDBKeyRange.bound([e.userId, -1], [e.userId, e.lastAcknowledgedBatchId]);\n return n.j(\"userMutationsIndex\", s).next(n => Rt.forEach(n, n => {\n F(n.userId === e.userId);\n const s = _r(this.serializer, n);\n return io(t, e.userId, s).next(() => {});\n }));\n }));\n }\n /**\n * Ensures that every document in the remote document cache has a corresponding sentinel row\n * with a sequence number. Missing rows are given the most recently used sequence number.\n */\n Zs(t) {\n const e = t.store(\"targetDocuments\"),\n n = t.store(\"remoteDocuments\");\n return t.store(\"targetGlobal\").get(\"targetGlobalKey\").next(t => {\n const s = [];\n return n.X((n, i) => {\n const r = new ut(n),\n o = function (t) {\n return [0, qt(t)];\n }(r);\n s.push(e.get(o).next(n => n ? Rt.resolve() : (n => e.put({\n targetId: 0,\n path: qt(n),\n sequenceNumber: t.highestListenSequenceNumber\n }))(r)));\n }).next(() => Rt.waitFor(s));\n });\n }\n ti(t, e) {\n // Create the index.\n t.createObjectStore(\"collectionParents\", {\n keyPath: ee\n });\n const n = e.store(\"collectionParents\"),\n s = new Wr(),\n i = t => {\n if (s.add(t)) {\n const e = t.lastSegment(),\n s = t.popLast();\n return n.put({\n collectionId: e,\n parent: qt(s)\n });\n }\n };\n // Helper to add an index entry iff we haven't already written it.\n // Index existing remote documents.\n return e.store(\"remoteDocuments\").X({\n Y: !0\n }, (t, e) => {\n const n = new ut(t);\n return i(n.popLast());\n }).next(() => e.store(\"documentMutations\").X({\n Y: !0\n }, (_ref8, s) => {\n let [t, e, n] = _ref8;\n const r = Gt(e);\n return i(r.popLast());\n }));\n }\n ei(t) {\n const e = t.store(\"targets\");\n return e.X((t, n) => {\n const s = mr(n),\n i = gr(this.serializer, s);\n return e.put(i);\n });\n }\n ni(t, e) {\n const n = e.store(\"remoteDocuments\"),\n s = [];\n return n.X((t, n) => {\n const i = e.store(\"remoteDocumentsV14\"),\n r = (o = n, o.document ? new ht(ut.fromString(o.document.name).popFirst(5)) : o.noDocument ? ht.fromSegments(o.noDocument.path) : o.unknownDocument ? ht.fromSegments(o.unknownDocument.path) : O()).path.toArray();\n var o;\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 const u = {\n prefixPath: r.slice(0, r.length - 2),\n collectionGroup: r[r.length - 2],\n documentId: r[r.length - 1],\n readTime: n.readTime || [0, 0],\n unknownDocument: n.unknownDocument,\n noDocument: n.noDocument,\n document: n.document,\n hasCommittedMutations: !!n.hasCommittedMutations\n };\n s.push(i.put(u));\n }).next(() => Rt.waitFor(s));\n }\n si(t, e) {\n const n = e.store(\"mutations\"),\n s = Po(this.serializer),\n i = new Ko(Qo.zs, this.serializer.fe);\n return n.j().next(t => {\n const n = new Map();\n return t.forEach(t => {\n var e;\n let s = null !== (e = n.get(t.userId)) && void 0 !== e ? e : gs();\n _r(this.serializer, t).keys().forEach(t => s = s.add(t)), n.set(t.userId, s);\n }), Rt.forEach(n, (t, n) => {\n const r = new V(n),\n o = Rr.de(this.serializer, r),\n u = i.getIndexManager(r),\n c = oo.de(r, this.serializer, u, i.referenceDelegate);\n return new ko(s, c, o, u).recalculateAndSaveOverlaysForDocumentKeys(new we(e, Ot.ct), t).next();\n });\n });\n }\n}\nfunction Wo(t) {\n t.createObjectStore(\"targetDocuments\", {\n keyPath: Zt\n }).createIndex(\"documentTargetsIndex\", te, {\n unique: !0\n });\n // NOTE: This is unique only because the TargetId is the suffix.\n t.createObjectStore(\"targets\", {\n keyPath: \"targetId\"\n }).createIndex(\"queryTargetsIndex\", Xt, {\n unique: !0\n }), t.createObjectStore(\"targetGlobal\");\n}\nconst Ho = \"Failed to obtain exclusive access to the persistence layer. To allow shared access, multi-tab synchronization has to be enabled in all tabs. If you are using `experimentalForceOwningTab:true`, make sure that only one tab has persistence enabled at any given time.\";\n\n/**\n * Oldest acceptable age in milliseconds for client metadata before the client\n * is considered inactive and its associated data is garbage collected.\n */\n/**\n * An IndexedDB-backed instance of Persistence. Data is stored persistently\n * across sessions.\n *\n * On Web only, the Firestore SDKs support shared access to its persistence\n * layer. This allows multiple browser tabs to read and write to IndexedDb and\n * to synchronize state even without network connectivity. Shared access is\n * currently optional and not enabled unless all clients invoke\n * `enablePersistence()` with `{synchronizeTabs:true}`.\n *\n * In multi-tab mode, if multiple clients are active at the same time, the SDK\n * will designate one client as the “primary client”. An effort is made to pick\n * a visible, network-connected and active client, and this client is\n * responsible for letting other clients know about its presence. The primary\n * client writes a unique client-generated identifier (the client ID) to\n * IndexedDb’s “owner” store every 4 seconds. If the primary client fails to\n * update this entry, another client can acquire the lease and take over as\n * primary.\n *\n * Some persistence operations in the SDK are designated as primary-client only\n * operations. This includes the acknowledgment of mutations and all updates of\n * remote documents. The effects of these operations are written to persistence\n * and then broadcast to other tabs via LocalStorage (see\n * `WebStorageSharedClientState`), which then refresh their state from\n * persistence.\n *\n * Similarly, the primary client listens to notifications sent by secondary\n * clients to discover persistence changes written by secondary clients, such as\n * the addition of new mutations and query targets.\n *\n * If multi-tab is not enabled and another tab already obtained the primary\n * lease, IndexedDbPersistence enters a failed state and all subsequent\n * operations will automatically fail.\n *\n * Additionally, there is an optimization so that when a tab is closed, the\n * primary lease is released immediately (this is especially important to make\n * sure that a refreshed tab is able to immediately re-acquire the primary\n * lease). Unfortunately, IndexedDB cannot be reliably used in window.unload\n * since it is an asynchronous API. So in addition to attempting to give up the\n * lease, the leaseholder writes its client ID to a \"zombiedClient\" entry in\n * LocalStorage which acts as an indicator that another tab should go ahead and\n * take the primary lease immediately regardless of the current lease timestamp.\n *\n * TODO(b/114226234): Remove `synchronizeTabs` section when multi-tab is no\n * longer optional.\n */\nclass Jo {\n constructor(\n /**\n * Whether to synchronize the in-memory state of multiple tabs and share\n * access to local persistence.\n */\n t, e, n, s, i, r, o, u, c,\n /**\n * If set to true, forcefully obtains database access. Existing tabs will\n * no longer be able to access IndexedDB.\n */\n a) {\n let h = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : 15;\n if (this.allowTabSynchronization = t, this.persistenceKey = e, this.clientId = n, this.ii = i, this.window = r, this.document = o, this.ri = c, this.oi = a, this.ui = h, this.Os = null, this.Fs = !1, this.isPrimary = !1, this.networkEnabled = !0, /** Our window.unload handler, if registered. */\n this.ci = null, this.inForeground = !1, /** Our 'visibilitychange' listener if registered. */\n this.ai = null, /** The client metadata refresh task. */\n this.hi = null, /** The last time we garbage collected the client metadata object store. */\n this.li = Number.NEGATIVE_INFINITY, /** A listener to notify on primary state changes. */\n this.fi = t => Promise.resolve(), !Jo.D()) throw new U(q.UNIMPLEMENTED, \"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.\");\n this.referenceDelegate = new Eo(this, s), this.di = e + \"main\", this.serializer = new ar(u), this.wi = new bt(this.di, this.ui, new zo(this.serializer)), this.Bs = new fo(this.referenceDelegate, this.serializer), this.remoteDocumentCache = Po(this.serializer), this.qs = new Er(), this.window && this.window.localStorage ? this._i = this.window.localStorage : (this._i = null, !1 === a && k(\"IndexedDbPersistence\", \"LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page.\"));\n }\n /**\n * Attempt to start IndexedDb persistence.\n *\n * @returns Whether persistence was enabled.\n */\n start() {\n // NOTE: This is expected to fail sometimes (in the case of another tab\n // already having the persistence lock), so it's the first thing we should\n // do.\n return this.mi().then(() => {\n if (!this.isPrimary && !this.allowTabSynchronization)\n // Fail `start()` if `synchronizeTabs` is disabled and we cannot\n // obtain the primary lease.\n throw new U(q.FAILED_PRECONDITION, Ho);\n return this.gi(), this.yi(), this.pi(), this.runTransaction(\"getHighestListenSequenceNumber\", \"readonly\", t => this.Bs.getHighestSequenceNumber(t));\n }).then(t => {\n this.Os = new Ot(t, this.ri);\n }).then(() => {\n this.Fs = !0;\n }).catch(t => (this.wi && this.wi.close(), Promise.reject(t)));\n }\n /**\n * Registers a listener that gets called when the primary state of the\n * instance changes. Upon registering, this listener is invoked immediately\n * with the current primary state.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n Ii(t) {\n return this.fi = async e => {\n if (this.started) return t(e);\n }, t(this.isPrimary);\n }\n /**\n * Registers a listener that gets called when the database receives a\n * version change event indicating that it has deleted.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n setDatabaseDeletedListener(t) {\n this.wi.B(async e => {\n // Check if an attempt is made to delete IndexedDB.\n null === e.newVersion && (await t());\n });\n }\n /**\n * Adjusts the current network state in the client's metadata, potentially\n * affecting the primary lease.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n setNetworkEnabled(t) {\n this.networkEnabled !== t && (this.networkEnabled = t,\n // Schedule a primary lease refresh for immediate execution. The eventual\n // lease update will be propagated via `primaryStateListener`.\n this.ii.enqueueAndForget(async () => {\n this.started && (await this.mi());\n }));\n }\n /**\n * Updates the client metadata in IndexedDb and attempts to either obtain or\n * extend the primary lease for the local client. Asynchronously notifies the\n * primary state listener if the client either newly obtained or released its\n * primary lease.\n */\n mi() {\n return this.runTransaction(\"updateClientMetadataAndTryBecomePrimary\", \"readwrite\", t => Xo(t).put({\n clientId: this.clientId,\n updateTimeMs: Date.now(),\n networkEnabled: this.networkEnabled,\n inForeground: this.inForeground\n }).next(() => {\n if (this.isPrimary) return this.Ti(t).next(t => {\n t || (this.isPrimary = !1, this.ii.enqueueRetryable(() => this.fi(!1)));\n });\n }).next(() => this.Ei(t)).next(e => this.isPrimary && !e ? this.Ai(t).next(() => !1) : !!e && this.vi(t).next(() => !0))).catch(t => {\n if (Dt(t))\n // Proceed with the existing state. Any subsequent access to\n // IndexedDB will verify the lease.\n return N(\"IndexedDbPersistence\", \"Failed to extend owner lease: \", t), this.isPrimary;\n if (!this.allowTabSynchronization) throw t;\n return N(\"IndexedDbPersistence\", \"Releasing owner lease after error during lease refresh\", t), /* isPrimary= */!1;\n }).then(t => {\n this.isPrimary !== t && this.ii.enqueueRetryable(() => this.fi(t)), this.isPrimary = t;\n });\n }\n Ti(t) {\n return Yo(t).get(\"owner\").next(t => Rt.resolve(this.Ri(t)));\n }\n Pi(t) {\n return Xo(t).delete(this.clientId);\n }\n /**\n * If the garbage collection threshold has passed, prunes the\n * RemoteDocumentChanges and the ClientMetadata store based on the last update\n * time of all clients.\n */\n async bi() {\n if (this.isPrimary && !this.Vi(this.li, 18e5)) {\n this.li = Date.now();\n const t = await this.runTransaction(\"maybeGarbageCollectMultiClientState\", \"readwrite-primary\", t => {\n const e = _e(t, \"clientMetadata\");\n return e.j().next(t => {\n const n = this.Si(t, 18e5),\n s = t.filter(t => -1 === n.indexOf(t));\n // Delete metadata for clients that are no longer considered active.\n return Rt.forEach(s, t => e.delete(t.clientId)).next(() => s);\n });\n }).catch(() => []);\n // Delete potential leftover entries that may continue to mark the\n // inactive clients as zombied in LocalStorage.\n // Ideally we'd delete the IndexedDb and LocalStorage zombie entries for\n // the client atomically, but we can't. So we opt to delete the IndexedDb\n // entries first to avoid potentially reviving a zombied client.\n if (this._i) for (const e of t) this._i.removeItem(this.Di(e.clientId));\n }\n }\n /**\n * Schedules a recurring timer to update the client metadata and to either\n * extend or acquire the primary lease if the client is eligible.\n */\n pi() {\n this.hi = this.ii.enqueueAfterDelay(\"client_metadata_refresh\" /* TimerId.ClientMetadataRefresh */, 4e3, () => this.mi().then(() => this.bi()).then(() => this.pi()));\n }\n /** Checks whether `client` is the local client. */\n Ri(t) {\n return !!t && t.ownerId === this.clientId;\n }\n /**\n * Evaluate the state of all active clients and determine whether the local\n * client is or can act as the holder of the primary lease. Returns whether\n * the client is eligible for the lease, but does not actually acquire it.\n * May return 'false' even if there is no active leaseholder and another\n * (foreground) client should become leaseholder instead.\n */\n Ei(t) {\n if (this.oi) return Rt.resolve(!0);\n return Yo(t).get(\"owner\").next(e => {\n // A client is eligible for the primary lease if:\n // - its network is enabled and the client's tab is in the foreground.\n // - its network is enabled and no other client's tab is in the\n // foreground.\n // - every clients network is disabled and the client's tab is in the\n // foreground.\n // - every clients network is disabled and no other client's tab is in\n // the foreground.\n // - the `forceOwningTab` setting was passed in.\n if (null !== e && this.Vi(e.leaseTimestampMs, 5e3) && !this.Ci(e.ownerId)) {\n if (this.Ri(e) && this.networkEnabled) return !0;\n if (!this.Ri(e)) {\n if (!e.allowTabSynchronization)\n // Fail the `canActAsPrimary` check if the current leaseholder has\n // not opted into multi-tab synchronization. If this happens at\n // client startup, we reject the Promise returned by\n // `enablePersistence()` and the user can continue to use Firestore\n // with in-memory persistence.\n // If this fails during a lease refresh, we will instead block the\n // AsyncQueue from executing further operations. Note that this is\n // acceptable since mixing & matching different `synchronizeTabs`\n // settings is not supported.\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can\n // no longer be turned off.\n throw new U(q.FAILED_PRECONDITION, Ho);\n return !1;\n }\n }\n return !(!this.networkEnabled || !this.inForeground) || Xo(t).j().next(t => void 0 === this.Si(t, 5e3).find(t => {\n if (this.clientId !== t.clientId) {\n const e = !this.networkEnabled && t.networkEnabled,\n n = !this.inForeground && t.inForeground,\n s = this.networkEnabled === t.networkEnabled;\n if (e || n && s) return !0;\n }\n return !1;\n }));\n }).next(t => (this.isPrimary !== t && N(\"IndexedDbPersistence\", `Client ${t ? \"is\" : \"is not\"} eligible for a primary lease.`), t));\n }\n async shutdown() {\n // The shutdown() operations are idempotent and can be called even when\n // start() aborted (e.g. because it couldn't acquire the persistence lease).\n this.Fs = !1, this.xi(), this.hi && (this.hi.cancel(), this.hi = null), this.Ni(), this.ki(),\n // Use `SimpleDb.runTransaction` directly to avoid failing if another tab\n // has obtained the primary lease.\n await this.wi.runTransaction(\"shutdown\", \"readwrite\", [\"owner\", \"clientMetadata\"], t => {\n const e = new we(t, Ot.ct);\n return this.Ai(e).next(() => this.Pi(e));\n }), this.wi.close(),\n // Remove the entry marking the client as zombied from LocalStorage since\n // we successfully deleted its metadata from IndexedDb.\n this.Mi();\n }\n /**\n * Returns clients that are not zombied and have an updateTime within the\n * provided threshold.\n */\n Si(t, e) {\n return t.filter(t => this.Vi(t.updateTimeMs, e) && !this.Ci(t.clientId));\n }\n /**\n * Returns the IDs of the clients that are currently active. If multi-tab\n * is not supported, returns an array that only contains the local client's\n * ID.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */\n $i() {\n return this.runTransaction(\"getActiveClients\", \"readonly\", t => Xo(t).j().next(t => this.Si(t, 18e5).map(t => t.clientId)));\n }\n get started() {\n return this.Fs;\n }\n getMutationQueue(t, e) {\n return oo.de(t, this.serializer, e, this.referenceDelegate);\n }\n getTargetCache() {\n return this.Bs;\n }\n getRemoteDocumentCache() {\n return this.remoteDocumentCache;\n }\n getIndexManager(t) {\n return new Jr(t, this.serializer.fe.databaseId);\n }\n getDocumentOverlayCache(t) {\n return Rr.de(this.serializer, t);\n }\n getBundleCache() {\n return this.qs;\n }\n runTransaction(t, e, n) {\n N(\"IndexedDbPersistence\", \"Starting transaction:\", t);\n const s = \"readonly\" === e ? \"readonly\" : \"readwrite\",\n i = 15 === (r = this.ui) ? de : 14 === r ? fe : 13 === r ? le : 12 === r ? he : 11 === r ? ae : void O();\n /** Returns the object stores for the provided schema. */\n var r;\n let o;\n // Do all transactions as readwrite against all object stores, since we\n // are the only reader/writer.\n return this.wi.runTransaction(t, s, i, s => (o = new we(s, this.Os ? this.Os.next() : Ot.ct), \"readwrite-primary\" === e ? this.Ti(o).next(t => !!t || this.Ei(o)).next(e => {\n if (!e) throw k(`Failed to obtain primary lease for action '${t}'.`), this.isPrimary = !1, this.ii.enqueueRetryable(() => this.fi(!1)), new U(q.FAILED_PRECONDITION, Et);\n return n(o);\n }).next(t => this.vi(o).next(() => t)) : this.Oi(o).next(() => n(o)))).then(t => (o.raiseOnCommittedEvent(), t));\n }\n /**\n * Verifies that the current tab is the primary leaseholder or alternatively\n * that the leaseholder has opted into multi-tab synchronization.\n */\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can no longer\n // be turned off.\n Oi(t) {\n return Yo(t).get(\"owner\").next(t => {\n if (null !== t && this.Vi(t.leaseTimestampMs, 5e3) && !this.Ci(t.ownerId) && !this.Ri(t) && !(this.oi || this.allowTabSynchronization && t.allowTabSynchronization)) throw new U(q.FAILED_PRECONDITION, Ho);\n });\n }\n /**\n * Obtains or extends the new primary lease for the local client. This\n * method does not verify that the client is eligible for this lease.\n */\n vi(t) {\n const e = {\n ownerId: this.clientId,\n allowTabSynchronization: this.allowTabSynchronization,\n leaseTimestampMs: Date.now()\n };\n return Yo(t).put(\"owner\", e);\n }\n static D() {\n return bt.D();\n }\n /** Checks the primary lease and removes it if we are the current primary. */\n Ai(t) {\n const e = Yo(t);\n return e.get(\"owner\").next(t => this.Ri(t) ? (N(\"IndexedDbPersistence\", \"Releasing primary lease.\"), e.delete(\"owner\")) : Rt.resolve());\n }\n /** Verifies that `updateTimeMs` is within `maxAgeMs`. */\n Vi(t, e) {\n const n = Date.now();\n return !(t < n - e) && (!(t > n) || (k(`Detected an update time that is in the future: ${t} > ${n}`), !1));\n }\n gi() {\n null !== this.document && \"function\" == typeof this.document.addEventListener && (this.ai = () => {\n this.ii.enqueueAndForget(() => (this.inForeground = \"visible\" === this.document.visibilityState, this.mi()));\n }, this.document.addEventListener(\"visibilitychange\", this.ai), this.inForeground = \"visible\" === this.document.visibilityState);\n }\n Ni() {\n this.ai && (this.document.removeEventListener(\"visibilitychange\", this.ai), this.ai = null);\n }\n /**\n * Attaches a window.unload handler that will synchronously write our\n * clientId to a \"zombie client id\" location in LocalStorage. This can be used\n * by tabs trying to acquire the primary lease to determine that the lease\n * is no longer valid even if the timestamp is recent. This is particularly\n * important for the refresh case (so the tab correctly re-acquires the\n * primary lease). LocalStorage is used for this rather than IndexedDb because\n * it is a synchronous API and so can be used reliably from an unload\n * handler.\n */\n yi() {\n var t;\n \"function\" == typeof (null === (t = this.window) || void 0 === t ? void 0 : t.addEventListener) && (this.ci = () => {\n // Note: In theory, this should be scheduled on the AsyncQueue since it\n // accesses internal state. We execute this code directly during shutdown\n // to make sure it gets a chance to run.\n this.xi();\n const t = /(?:Version|Mobile)\\/1[456]/;\n isSafari() && (navigator.appVersion.match(t) || navigator.userAgent.match(t)) &&\n // On Safari 14, 15, and 16, we do not run any cleanup actions as it might\n // trigger a bug that prevents Safari from re-opening IndexedDB during\n // the next page load.\n // See https://bugs.webkit.org/show_bug.cgi?id=226547\n this.ii.enterRestrictedMode( /* purgeExistingTasks= */!0), this.ii.enqueueAndForget(() => this.shutdown());\n }, this.window.addEventListener(\"pagehide\", this.ci));\n }\n ki() {\n this.ci && (this.window.removeEventListener(\"pagehide\", this.ci), this.ci = null);\n }\n /**\n * Returns whether a client is \"zombied\" based on its LocalStorage entry.\n * Clients become zombied when their tab closes without running all of the\n * cleanup logic in `shutdown()`.\n */\n Ci(t) {\n var e;\n try {\n const n = null !== (null === (e = this._i) || void 0 === e ? void 0 : e.getItem(this.Di(t)));\n return N(\"IndexedDbPersistence\", `Client '${t}' ${n ? \"is\" : \"is not\"} zombied in LocalStorage`), n;\n } catch (t) {\n // Gracefully handle if LocalStorage isn't working.\n return k(\"IndexedDbPersistence\", \"Failed to get zombied client id.\", t), !1;\n }\n }\n /**\n * Record client as zombied (a client that had its tab closed). Zombied\n * clients are ignored during primary tab selection.\n */\n xi() {\n if (this._i) try {\n this._i.setItem(this.Di(this.clientId), String(Date.now()));\n } catch (t) {\n // Gracefully handle if LocalStorage isn't available / working.\n k(\"Failed to set zombie client id.\", t);\n }\n }\n /** Removes the zombied client entry if it exists. */\n Mi() {\n if (this._i) try {\n this._i.removeItem(this.Di(this.clientId));\n } catch (t) {\n // Ignore\n }\n }\n Di(t) {\n return `firestore_zombie_${this.persistenceKey}_${t}`;\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the primary client object store.\n */\nfunction Yo(t) {\n return _e(t, \"owner\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the client metadata object store.\n */\nfunction Xo(t) {\n return _e(t, \"clientMetadata\");\n}\n\n/**\n * Generates a string used as a prefix when storing data in IndexedDB and\n * LocalStorage.\n */\nfunction Zo(t, e) {\n // Use two different prefix formats:\n // * firestore / persistenceKey / projectID . databaseID / ...\n // * firestore / persistenceKey / projectID / ...\n // projectIDs are DNS-compatible names and cannot contain dots\n // so there's no danger of collisions.\n let n = t.projectId;\n return t.isDefaultDatabase || (n += \".\" + t.database), \"firestore/\" + e + \"/\" + 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 * A set of changes to what documents are currently in view and out of view for\n * a given query. These changes are sent to the LocalStore by the View (via\n * the SyncEngine) and are used to pin / unpin documents as appropriate.\n */\nclass tu {\n constructor(t, e, n, s) {\n this.targetId = t, this.fromCache = e, this.Fi = n, this.Bi = s;\n }\n static Li(t, e) {\n let n = gs(),\n s = gs();\n for (const t of e.docChanges) switch (t.type) {\n case 0 /* ChangeType.Added */:\n n = n.add(t.doc.key);\n break;\n case 1 /* ChangeType.Removed */:\n s = s.add(t.doc.key);\n // do nothing\n }\n return new tu(t, e.fromCache, n, s);\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/**\n * The Firestore query engine.\n *\n * Firestore queries can be executed in three modes. The Query Engine determines\n * what mode to use based on what data is persisted. The mode only determines\n * the runtime complexity of the query - the result set is equivalent across all\n * implementations.\n *\n * The Query engine will use indexed-based execution if a user has configured\n * any index that can be used to execute query (via `setIndexConfiguration()`).\n * Otherwise, the engine will try to optimize the query by re-using a previously\n * persisted query result. If that is not possible, the query will be executed\n * via a full collection scan.\n *\n * Index-based execution is the default when available. The query engine\n * supports partial indexed execution and merges the result from the index\n * lookup with documents that have not yet been indexed. The index evaluation\n * matches the backend's format and as such, the SDK can use indexing for all\n * queries that the backend supports.\n *\n * If no index exists, the query engine tries to take advantage of the target\n * document mapping in the TargetCache. These mappings exists for all queries\n * that have been synced with the backend at least once and allow the query\n * engine to only read documents that previously matched a query plus any\n * documents that were edited after the query was last listened to.\n *\n * There are some cases when this optimization is not guaranteed to produce\n * the same results as full collection scans. In these cases, query\n * processing falls back to full scans. These cases are:\n *\n * - Limit queries where a document that matched the query previously no longer\n * matches the query.\n *\n * - Limit queries where a document edit may cause the document to sort below\n * another document that is in the local cache.\n *\n * - Queries that have never been CURRENT or free of limbo documents.\n */\nclass eu {\n constructor() {\n this.qi = !1;\n }\n /** Sets the document view to query against. */\n initialize(t, e) {\n this.Ui = t, this.indexManager = e, this.qi = !0;\n }\n /** Returns all local documents matching the specified query. */\n getDocumentsMatchingQuery(t, e, n, s) {\n return this.Ki(t, e).next(i => i || this.Gi(t, e, s, n)).next(n => n || this.Qi(t, e));\n }\n /**\n * Performs an indexed query that evaluates the query based on a collection's\n * persisted index values. Returns `null` if an index is not available.\n */\n Ki(t, e) {\n if (Qn(e))\n // Queries that match all documents don't benefit from using\n // key-based lookups. It is more efficient to scan all documents in a\n // collection, rather than to perform individual lookups.\n return Rt.resolve(null);\n let n = Jn(e);\n return this.indexManager.getIndexType(t, n).next(s => 0 /* IndexType.NONE */ === s ? null : (null !== e.limit && 1 /* IndexType.PARTIAL */ === s && (\n // We cannot apply a limit for targets that are served using a partial\n // index. If a partial index will be used to serve the target, the\n // query may return a superset of documents that match the target\n // (e.g. if the index doesn't include all the target's filters), or\n // may return the correct set of documents in the wrong order (e.g. if\n // the index doesn't include a segment for one of the orderBys).\n // Therefore, a limit should not be applied in such cases.\n e = Xn(e, null, \"F\" /* LimitType.First */), n = Jn(e)), this.indexManager.getDocumentsMatchingTarget(t, n).next(s => {\n const i = gs(...s);\n return this.Ui.getDocuments(t, i).next(s => this.indexManager.getMinOffset(t, n).next(n => {\n const r = this.ji(e, s);\n return this.zi(e, r, i, n.readTime) ? this.Ki(t, Xn(e, null, \"F\" /* LimitType.First */)) : this.Wi(t, r, e, n);\n }));\n })));\n }\n /**\n * Performs a query based on the target's persisted query mapping. Returns\n * `null` if the mapping is not available or cannot be used.\n */\n Gi(t, e, n, s) {\n return Qn(e) || s.isEqual(rt.min()) ? this.Qi(t, e) : this.Ui.getDocuments(t, n).next(i => {\n const r = this.ji(e, i);\n return this.zi(e, r, n, s) ? this.Qi(t, e) : (C() <= LogLevel.DEBUG && N(\"QueryEngine\", \"Re-using previous result from %s to execute query: %s\", s.toString(), es(e)), this.Wi(t, r, e, yt(s, -1)));\n });\n // Queries that have never seen a snapshot without limbo free documents\n // should also be run as a full collection scan.\n }\n /** Applies the query filter and sorting to the provided documents. */\n ji(t, e) {\n // Sort the documents and re-apply the query filter since previously\n // matching documents do not necessarily still match the query.\n let n = new Ee(is(t));\n return e.forEach((e, s) => {\n ns(t, s) && (n = n.add(s));\n }), n;\n }\n /**\n * Determines if a limit query needs to be refilled from cache, making it\n * ineligible for index-free execution.\n *\n * @param query - The query.\n * @param sortedPreviousResults - The documents that matched the query when it\n * was last synchronized, sorted by the query's comparator.\n * @param remoteKeys - The document keys that matched the query at the last\n * snapshot.\n * @param limboFreeSnapshotVersion - The version of the snapshot when the\n * query was last synchronized.\n */\n zi(t, e, n, s) {\n if (null === t.limit)\n // Queries without limits do not need to be refilled.\n return !1;\n if (n.size !== e.size)\n // The query needs to be refilled if a previously matching document no\n // longer matches.\n return !0;\n // Limit queries are not eligible for index-free query execution if there is\n // a potential that an older document from cache now sorts before a document\n // that was previously part of the limit. This, however, can only happen if\n // the document at the edge of the limit goes out of limit.\n // If a document that is not the limit boundary sorts differently,\n // the boundary of the limit itself did not change and documents from cache\n // will continue to be \"rejected\" by this boundary. Therefore, we can ignore\n // any modifications that don't affect the last document.\n const i = \"F\" /* LimitType.First */ === t.limitType ? e.last() : e.first();\n return !!i && (i.hasPendingWrites || i.version.compareTo(s) > 0);\n }\n Qi(t, e) {\n return C() <= LogLevel.DEBUG && N(\"QueryEngine\", \"Using full collection scan to execute query:\", es(e)), this.Ui.getDocumentsMatchingQuery(t, e, It.min());\n }\n /**\n * Combines the results from an indexed execution with the remaining documents\n * that have not yet been indexed.\n */\n Wi(t, e, n, s) {\n // Retrieve all results for documents that were updated since the offset.\n return this.Ui.getDocumentsMatchingQuery(t, n, s).next(t => (\n // Merge with existing results\n e.forEach(e => {\n t = t.insert(e.key, e);\n }), t));\n }\n}\n\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 */\n/**\n * Implements `LocalStore` interface.\n *\n * Note: some field defined in this class might have public access level, but\n * the class is not exported so they are only accessible from this module.\n * This is useful to implement optional features (like bundles) in free\n * functions, such that they are tree-shakeable.\n */\nclass nu {\n constructor( /** Manages our in-memory or durable persistence. */\n t, e, n, s) {\n this.persistence = t, this.Hi = e, this.serializer = s,\n /**\n * Maps a targetID to data about its target.\n *\n * PORTING NOTE: We are using an immutable data structure on Web to make re-runs\n * of `applyRemoteEvent()` idempotent.\n */\n this.Ji = new pe(et), /** Maps a target to its targetID. */\n // TODO(wuandy): Evaluate if TargetId can be part of Target.\n this.Yi = new os(t => $n(t), On),\n /**\n * A per collection group index of the last read time processed by\n * `getNewDocumentChanges()`.\n *\n * PORTING NOTE: This is only used for multi-tab synchronization.\n */\n this.Xi = new Map(), this.Zi = t.getRemoteDocumentCache(), this.Bs = t.getTargetCache(), this.qs = t.getBundleCache(), this.tr(n);\n }\n tr(t) {\n // TODO(indexing): Add spec tests that test these components change after a\n // user change\n this.documentOverlayCache = this.persistence.getDocumentOverlayCache(t), this.indexManager = this.persistence.getIndexManager(t), this.mutationQueue = this.persistence.getMutationQueue(t, this.indexManager), this.localDocuments = new ko(this.Zi, this.mutationQueue, this.documentOverlayCache, this.indexManager), this.Zi.setIndexManager(this.indexManager), this.Hi.initialize(this.localDocuments, this.indexManager);\n }\n collectGarbage(t) {\n return this.persistence.runTransaction(\"Collect garbage\", \"readwrite-primary\", e => t.collect(e, this.Ji));\n }\n}\nfunction su( /** Manages our in-memory or durable persistence. */\nt, e, n, s) {\n return new nu(t, e, n, s);\n}\n\n/**\n * Tells the LocalStore that the currently authenticated user has changed.\n *\n * In response the local store switches the mutation queue to the new user and\n * returns any resulting document changes.\n */\n// PORTING NOTE: Android and iOS only return the documents affected by the\n// change.\nasync function iu(t, e) {\n const n = L(t);\n return await n.persistence.runTransaction(\"Handle user change\", \"readonly\", t => {\n // Swap out the mutation queue, grabbing the pending mutation batches\n // before and after.\n let s;\n return n.mutationQueue.getAllMutationBatches(t).next(i => (s = i, n.tr(e), n.mutationQueue.getAllMutationBatches(t))).next(e => {\n const i = [],\n r = [];\n // Union the old/new changed keys.\n let o = gs();\n for (const t of s) {\n i.push(t.batchId);\n for (const e of t.mutations) o = o.add(e.key);\n }\n for (const t of e) {\n r.push(t.batchId);\n for (const e of t.mutations) o = o.add(e.key);\n }\n // Return the set of all (potentially) changed documents and the list\n // of mutation batch IDs that were affected by change.\n return n.localDocuments.getDocuments(t, o).next(t => ({\n er: t,\n removedBatchIds: i,\n addedBatchIds: r\n }));\n });\n });\n}\n\n/* Accepts locally generated Mutations and commit them to storage. */\n/**\n * Acknowledges the given batch.\n *\n * On the happy path when a batch is acknowledged, the local store will\n *\n * + remove the batch from the mutation queue;\n * + apply the changes to the remote document cache;\n * + recalculate the latency compensated view implied by those changes (there\n * may be mutations in the queue that affect the documents but haven't been\n * acknowledged yet); and\n * + give the changed documents back the sync engine\n *\n * @returns The resulting (modified) documents.\n */\nfunction ru(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Acknowledge batch\", \"readwrite-primary\", t => {\n const s = e.batch.keys(),\n i = n.Zi.newChangeBuffer({\n trackRemovals: !0\n });\n return function (t, e, n, s) {\n const i = n.batch,\n r = i.keys();\n let o = Rt.resolve();\n return r.forEach(t => {\n o = o.next(() => s.getEntry(e, t)).next(e => {\n const r = n.docVersions.get(t);\n F(null !== r), e.version.compareTo(r) < 0 && (i.applyToRemoteDocument(e, n), e.isValidDocument() && (\n // We use the commitVersion as the readTime rather than the\n // document's updateTime since the updateTime is not advanced\n // for updates that do not modify the underlying document.\n e.setReadTime(n.commitVersion), s.addEntry(e)));\n });\n }), o.next(() => t.mutationQueue.removeMutationBatch(e, i));\n }\n /** Returns the local view of the documents affected by a mutation batch. */\n // PORTING NOTE: Multi-Tab only.\n (n, t, e, i).next(() => i.apply(t)).next(() => n.mutationQueue.performConsistencyCheck(t)).next(() => n.documentOverlayCache.removeOverlaysForBatchId(t, s, e.batch.batchId)).next(() => n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(t, function (t) {\n let e = gs();\n for (let n = 0; n < t.mutationResults.length; ++n) {\n t.mutationResults[n].transformResults.length > 0 && (e = e.add(t.batch.mutations[n].key));\n }\n return e;\n }\n /**\n * Removes mutations from the MutationQueue for the specified batch;\n * LocalDocuments will be recalculated.\n *\n * @returns The resulting modified documents.\n */(e))).next(() => n.localDocuments.getDocuments(t, s));\n });\n}\n\n/**\n * Returns the last consistent snapshot processed (used by the RemoteStore to\n * determine whether to buffer incoming snapshots from the backend).\n */\nfunction ou(t) {\n const e = L(t);\n return e.persistence.runTransaction(\"Get last remote snapshot version\", \"readonly\", t => e.Bs.getLastRemoteSnapshotVersion(t));\n}\n\n/**\n * Updates the \"ground-state\" (remote) documents. We assume that the remote\n * event reflects any write batches that have been acknowledged or rejected\n * (i.e. we do not re-apply local mutations to updates from this event).\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */\nfunction uu(t, e) {\n const n = L(t),\n s = e.snapshotVersion;\n let i = n.Ji;\n return n.persistence.runTransaction(\"Apply remote event\", \"readwrite-primary\", t => {\n const r = n.Zi.newChangeBuffer({\n trackRemovals: !0\n });\n // Reset newTargetDataByTargetMap in case this transaction gets re-run.\n i = n.Ji;\n const o = [];\n e.targetChanges.forEach((r, u) => {\n const c = i.get(u);\n if (!c) return;\n // Only update the remote keys if the target is still active. This\n // ensures that we can persist the updated target data along with\n // the updated assignment.\n o.push(n.Bs.removeMatchingKeys(t, r.removedDocuments, u).next(() => n.Bs.addMatchingKeys(t, r.addedDocuments, u)));\n let a = c.withSequenceNumber(t.currentSequenceNumber);\n null !== e.targetMismatches.get(u) ? a = a.withResumeToken(Ve.EMPTY_BYTE_STRING, rt.min()).withLastLimboFreeSnapshotVersion(rt.min()) : r.resumeToken.approximateByteSize() > 0 && (a = a.withResumeToken(r.resumeToken, s)), i = i.insert(u, a),\n // Update the target data if there are target changes (or if\n // sufficient time has passed since the last update).\n /**\n * Returns true if the newTargetData should be persisted during an update of\n * an active target. TargetData should always be persisted when a target is\n * being released and should not call this function.\n *\n * While the target is active, TargetData updates can be omitted when nothing\n * about the target has changed except metadata like the resume token or\n * snapshot version. Occasionally it's worth the extra write to prevent these\n * values from getting too stale after a crash, but this doesn't have to be\n * too frequent.\n */\n function (t, e, n) {\n // Always persist target data if we don't already have a resume token.\n if (0 === t.resumeToken.approximateByteSize()) return !0;\n // Don't allow resume token changes to be buffered indefinitely. This\n // allows us to be reasonably up-to-date after a crash and avoids needing\n // to loop over all active queries on shutdown. Especially in the browser\n // we may not get time to do anything interesting while the current tab is\n // closing.\n if (e.snapshotVersion.toMicroseconds() - t.snapshotVersion.toMicroseconds() >= 3e8) return !0;\n // Otherwise if the only thing that has changed about a target is its resume\n // token it's not worth persisting. Note that the RemoteStore keeps an\n // in-memory view of the currently active targets which includes the current\n // resume token, so stream failure or user changes will still use an\n // up-to-date resume token regardless of what we do here.\n return n.addedDocuments.size + n.modifiedDocuments.size + n.removedDocuments.size > 0;\n }\n /**\n * Notifies local store of the changed views to locally pin documents.\n */(c, a, r) && o.push(n.Bs.updateTargetData(t, a));\n });\n let u = cs(),\n c = gs();\n // HACK: The only reason we allow a null snapshot version is so that we\n // can synthesize remote events when we get permission denied errors while\n // trying to resolve the state of a locally cached document that is in\n // limbo.\n if (e.documentUpdates.forEach(s => {\n e.resolvedLimboDocuments.has(s) && o.push(n.persistence.referenceDelegate.updateLimboDocument(t, s));\n }),\n // Each loop iteration only affects its \"own\" doc, so it's safe to get all\n // the remote documents in advance in a single call.\n o.push(cu(t, r, e.documentUpdates).next(t => {\n u = t.nr, c = t.sr;\n })), !s.isEqual(rt.min())) {\n const e = n.Bs.getLastRemoteSnapshotVersion(t).next(e => n.Bs.setTargetsMetadata(t, t.currentSequenceNumber, s));\n o.push(e);\n }\n return Rt.waitFor(o).next(() => r.apply(t)).next(() => n.localDocuments.getLocalViewOfDocuments(t, u, c)).next(() => u);\n }).then(t => (n.Ji = i, t));\n}\n\n/**\n * Populates document change buffer with documents from backend or a bundle.\n * Returns the document changes resulting from applying those documents, and\n * also a set of documents whose existence state are changed as a result.\n *\n * @param txn - Transaction to use to read existing documents from storage.\n * @param documentBuffer - Document buffer to collect the resulted changes to be\n * applied to storage.\n * @param documents - Documents to be applied.\n */\nfunction cu(t, e, n) {\n let s = gs(),\n i = gs();\n return n.forEach(t => s = s.add(t)), e.getEntries(t, s).next(t => {\n let s = cs();\n return n.forEach((n, r) => {\n const o = t.get(n);\n // Check if see if there is a existence state change for this document.\n r.isFoundDocument() !== o.isFoundDocument() && (i = i.add(n)),\n // Note: The order of the steps below is important, since we want\n // to ensure that rejected limbo resolutions (which fabricate\n // NoDocuments with SnapshotVersion.min()) never add documents to\n // cache.\n r.isNoDocument() && r.version.isEqual(rt.min()) ? (\n // NoDocuments with SnapshotVersion.min() are used in manufactured\n // events. We remove these documents from cache since we lost\n // access.\n e.removeEntry(n, r.readTime), s = s.insert(n, r)) : !o.isValidDocument() || r.version.compareTo(o.version) > 0 || 0 === r.version.compareTo(o.version) && o.hasPendingWrites ? (e.addEntry(r), s = s.insert(n, r)) : N(\"LocalStore\", \"Ignoring outdated watch update for \", n, \". Current version:\", o.version, \" Watch version:\", r.version);\n }), {\n nr: s,\n sr: i\n };\n });\n}\n\n/**\n * Gets the mutation batch after the passed in batchId in the mutation queue\n * or null if empty.\n * @param afterBatchId - If provided, the batch to search after.\n * @returns The next mutation or null if there wasn't one.\n */\nfunction au(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Get next mutation batch\", \"readonly\", t => (void 0 === e && (e = -1), n.mutationQueue.getNextMutationBatchAfterBatchId(t, e)));\n}\n\n/**\n * Reads the current value of a Document with a given key or null if not\n * found - used for testing.\n */\n/**\n * Assigns the given target an internal ID so that its results can be pinned so\n * they don't get GC'd. A target must be allocated in the local store before\n * the store can be used to manage its view.\n *\n * Allocating an already allocated `Target` will return the existing `TargetData`\n * for that `Target`.\n */\nfunction hu(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Allocate target\", \"readwrite\", t => {\n let s;\n return n.Bs.getTargetData(t, e).next(i => i ? (\n // This target has been listened to previously, so reuse the\n // previous targetID.\n // TODO(mcg): freshen last accessed date?\n s = i, Rt.resolve(s)) : n.Bs.allocateTargetId(t).next(i => (s = new cr(e, i, \"TargetPurposeListen\" /* TargetPurpose.Listen */, t.currentSequenceNumber), n.Bs.addTargetData(t, s).next(() => s))));\n }).then(t => {\n // If Multi-Tab is enabled, the existing target data may be newer than\n // the in-memory data\n const s = n.Ji.get(t.targetId);\n return (null === s || t.snapshotVersion.compareTo(s.snapshotVersion) > 0) && (n.Ji = n.Ji.insert(t.targetId, t), n.Yi.set(e, t.targetId)), t;\n });\n}\n\n/**\n * Returns the TargetData as seen by the LocalStore, including updates that may\n * have not yet been persisted to the TargetCache.\n */\n// Visible for testing.\n/**\n * Unpins all the documents associated with the given target. If\n * `keepPersistedTargetData` is set to false and Eager GC enabled, the method\n * directly removes the associated target data from the target cache.\n *\n * Releasing a non-existing `Target` is a no-op.\n */\n// PORTING NOTE: `keepPersistedTargetData` is multi-tab only.\nasync function lu(t, e, n) {\n const s = L(t),\n i = s.Ji.get(e),\n r = n ? \"readwrite\" : \"readwrite-primary\";\n try {\n n || (await s.persistence.runTransaction(\"Release target\", r, t => s.persistence.referenceDelegate.removeTarget(t, i)));\n } catch (t) {\n if (!Dt(t)) throw t;\n // All `releaseTarget` does is record the final metadata state for the\n // target, but we've been recording this periodically during target\n // activity. If we lose this write this could cause a very slight\n // difference in the order of target deletion during GC, but we\n // don't define exact LRU semantics so this is acceptable.\n N(\"LocalStore\", `Failed to update sequence numbers for target ${e}: ${t}`);\n }\n s.Ji = s.Ji.remove(e), s.Yi.delete(i.target);\n}\n\n/**\n * Runs the specified query against the local store and returns the results,\n * potentially taking advantage of query data from previous executions (such\n * as the set of remote keys).\n *\n * @param usePreviousResults - Whether results from previous executions can\n * be used to optimize this query execution.\n */\nfunction fu(t, e, n) {\n const s = L(t);\n let i = rt.min(),\n r = gs();\n return s.persistence.runTransaction(\"Execute query\", \"readonly\", t => function (t, e, n) {\n const s = L(t),\n i = s.Yi.get(n);\n return void 0 !== i ? Rt.resolve(s.Ji.get(i)) : s.Bs.getTargetData(e, n);\n }(s, t, Jn(e)).next(e => {\n if (e) return i = e.lastLimboFreeSnapshotVersion, s.Bs.getMatchingKeysForTargetId(t, e.targetId).next(t => {\n r = t;\n });\n }).next(() => s.Hi.getDocumentsMatchingQuery(t, e, n ? i : rt.min(), n ? r : gs())).next(t => (_u(s, ss(e), t), {\n documents: t,\n ir: r\n })));\n}\n\n// PORTING NOTE: Multi-Tab only.\nfunction du(t, e) {\n const n = L(t),\n s = L(n.Bs),\n i = n.Ji.get(e);\n return i ? Promise.resolve(i.target) : n.persistence.runTransaction(\"Get target data\", \"readonly\", t => s.le(t, e).next(t => t ? t.target : null));\n}\n\n/**\n * Returns the set of documents that have been updated since the last call.\n * If this is the first call, returns the set of changes since client\n * initialization. Further invocations will return document that have changed\n * since the prior call.\n */\n// PORTING NOTE: Multi-Tab only.\nfunction wu(t, e) {\n const n = L(t),\n s = n.Xi.get(e) || rt.min();\n // Get the current maximum read time for the collection. This should always\n // exist, but to reduce the chance for regressions we default to\n // SnapshotVersion.Min()\n // TODO(indexing): Consider removing the default value.\n return n.persistence.runTransaction(\"Get new document changes\", \"readonly\", t => n.Zi.getAllFromCollectionGroup(t, e, yt(s, -1), /* limit= */Number.MAX_SAFE_INTEGER)).then(t => (_u(n, e, t), t));\n}\n\n/** Sets the collection group's maximum read time from the given documents. */\n// PORTING NOTE: Multi-Tab only.\nfunction _u(t, e, n) {\n let s = t.Xi.get(e) || rt.min();\n n.forEach((t, e) => {\n e.readTime.compareTo(s) > 0 && (s = e.readTime);\n }), t.Xi.set(e, s);\n}\n\n/**\n * Creates a new target using the given bundle name, which will be used to\n * hold the keys of all documents from the bundle in query-document mappings.\n * This ensures that the loaded documents do not get garbage collected\n * right away.\n */\n/**\n * Applies the documents from a bundle to the \"ground-state\" (remote)\n * documents.\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */\nasync function mu(t, e, n, s) {\n const i = L(t);\n let r = gs(),\n o = cs();\n for (const t of n) {\n const n = e.rr(t.metadata.name);\n t.document && (r = r.add(n));\n const s = e.ur(t);\n s.setReadTime(e.cr(t.metadata.readTime)), o = o.insert(n, s);\n }\n const u = i.Zi.newChangeBuffer({\n trackRemovals: !0\n }),\n c = await hu(i, function (t) {\n // It is OK that the path used for the query is not valid, because this will\n // not be read and queried.\n return Jn(Gn(ut.fromString(`__bundle__/docs/${t}`)));\n }(s));\n // Allocates a target to hold all document keys from the bundle, such that\n // they will not get garbage collected right away.\n return i.persistence.runTransaction(\"Apply bundle documents\", \"readwrite\", t => cu(t, u, o).next(e => (u.apply(t), e)).next(e => i.Bs.removeMatchingKeysForTargetId(t, c.targetId).next(() => i.Bs.addMatchingKeys(t, r, c.targetId)).next(() => i.localDocuments.getLocalViewOfDocuments(t, e.nr, e.sr)).next(() => e.nr)));\n}\n\n/**\n * Returns a promise of a boolean to indicate if the given bundle has already\n * been loaded and the create time is newer than the current loading bundle.\n */\n/**\n * Saves the given `NamedQuery` to local persistence.\n */\nasync function gu(t, e) {\n let n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : gs();\n // Allocate a target for the named query such that it can be resumed\n // from associated read time if users use it to listen.\n // NOTE: this also means if no corresponding target exists, the new target\n // will remain active and will not get collected, unless users happen to\n // unlisten the query somehow.\n const s = await hu(t, Jn(yr(e.bundledQuery))),\n i = L(t);\n return i.persistence.runTransaction(\"Save named query\", \"readwrite\", t => {\n const r = Ni(e.readTime);\n // Simply save the query itself if it is older than what the SDK already\n // has.\n if (s.snapshotVersion.compareTo(r) >= 0) return i.qs.saveNamedQuery(t, e);\n // Update existing target data because the query from the bundle is newer.\n const o = s.withResumeToken(Ve.EMPTY_BYTE_STRING, r);\n return i.Ji = i.Ji.insert(o.targetId, o), i.Bs.updateTargetData(t, o).next(() => i.Bs.removeMatchingKeysForTargetId(t, s.targetId)).next(() => i.Bs.addMatchingKeys(t, n, s.targetId)).next(() => i.qs.saveNamedQuery(t, e));\n });\n}\n\n/** Assembles the key for a client state in WebStorage */\nfunction yu(t, e) {\n return `firestore_clients_${t}_${e}`;\n}\n\n// The format of the WebStorage key that stores the mutation state is:\n// firestore_mutations_