@firebase/firestore 4.7.4-canary.1f1ba3fee → 4.7.4-canary.4db3d3e7b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +159 -159
- package/dist/index.esm2017.js +159 -159
- package/dist/index.node.cjs.js +2 -2
- package/dist/index.node.mjs +2 -2
- package/dist/index.rn.js +89 -89
- package/dist/lite/index.browser.esm2017.js +2 -2
- package/dist/lite/index.cjs.js +2 -2
- package/dist/lite/index.node.cjs.js +2 -2
- package/dist/lite/index.node.mjs +2 -2
- package/dist/lite/index.rn.esm2017.js +2 -2
- package/package.json +9 -9
package/dist/index.esm2017.js
CHANGED
|
@@ -67,7 +67,7 @@ User.MOCK_USER = new User("mock-user");
|
|
|
67
67
|
* See the License for the specific language governing permissions and
|
|
68
68
|
* limitations under the License.
|
|
69
69
|
*/
|
|
70
|
-
let
|
|
70
|
+
let b = "11.0.1-canary.4db3d3e7b";
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
73
|
* @license
|
|
@@ -85,11 +85,11 @@ let S = "11.0.1-canary.1f1ba3fee";
|
|
|
85
85
|
* See the License for the specific language governing permissions and
|
|
86
86
|
* limitations under the License.
|
|
87
87
|
*/
|
|
88
|
-
const
|
|
88
|
+
const S = new Logger("@firebase/firestore");
|
|
89
89
|
|
|
90
90
|
// Helper methods are needed because variables can't be exported as read/write
|
|
91
91
|
function __PRIVATE_getLogLevel() {
|
|
92
|
-
return
|
|
92
|
+
return S.logLevel;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
/**
|
|
@@ -105,29 +105,29 @@ function __PRIVATE_getLogLevel() {
|
|
|
105
105
|
* <li><code>`silent` to turn off logging.</li>
|
|
106
106
|
* </ul>
|
|
107
107
|
*/ function setLogLevel(e) {
|
|
108
|
-
|
|
108
|
+
S.setLogLevel(e);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
function __PRIVATE_logDebug(e, ...t) {
|
|
112
|
-
if (
|
|
112
|
+
if (S.logLevel <= LogLevel.DEBUG) {
|
|
113
113
|
const n = t.map(__PRIVATE_argToString);
|
|
114
|
-
|
|
114
|
+
S.debug(`Firestore (${b}): ${e}`, ...n);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
function __PRIVATE_logError(e, ...t) {
|
|
119
|
-
if (
|
|
119
|
+
if (S.logLevel <= LogLevel.ERROR) {
|
|
120
120
|
const n = t.map(__PRIVATE_argToString);
|
|
121
|
-
|
|
121
|
+
S.error(`Firestore (${b}): ${e}`, ...n);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
126
|
* @internal
|
|
127
127
|
*/ function __PRIVATE_logWarn(e, ...t) {
|
|
128
|
-
if (
|
|
128
|
+
if (S.logLevel <= LogLevel.WARN) {
|
|
129
129
|
const n = t.map(__PRIVATE_argToString);
|
|
130
|
-
|
|
130
|
+
S.warn(`Firestore (${b}): ${e}`, ...n);
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
|
|
@@ -188,7 +188,7 @@ function __PRIVATE_logError(e, ...t) {
|
|
|
188
188
|
*/ function fail(e = "Unexpected state") {
|
|
189
189
|
// Log the failure in addition to throw an exception, just in case the
|
|
190
190
|
// exception is swallowed.
|
|
191
|
-
const t = `FIRESTORE (${
|
|
191
|
+
const t = `FIRESTORE (${b}) INTERNAL ASSERTION FAILED: ` + e;
|
|
192
192
|
// NOTE: We don't use FirestoreError here because these are internal failures
|
|
193
193
|
// that cannot be handled by the user. (Also it would create a circular
|
|
194
194
|
// dependency between the error and assert modules which doesn't work.)
|
|
@@ -5893,7 +5893,7 @@ class BloomFilter {
|
|
|
5893
5893
|
}
|
|
5894
5894
|
// Calculate the ith hash value based on the hashed 64bit integers,
|
|
5895
5895
|
// and calculate its corresponding bit index in the bitmap to be checked.
|
|
5896
|
-
|
|
5896
|
+
de(e, t, n) {
|
|
5897
5897
|
// Calculate hashed value h(i) = h1 + (i * h2).
|
|
5898
5898
|
let r = e.add(t.multiply(Integer.fromNumber(n)));
|
|
5899
5899
|
// Wrap if hash value overflow 64bit.
|
|
@@ -5901,7 +5901,7 @@ class BloomFilter {
|
|
|
5901
5901
|
r.modulo(this.Te).toNumber();
|
|
5902
5902
|
}
|
|
5903
5903
|
// Return whether the bit on the given index in the bitmap is set to 1.
|
|
5904
|
-
|
|
5904
|
+
Ee(e) {
|
|
5905
5905
|
return 0 != (this.bitmap[Math.floor(e / 8)] & 1 << e % 8);
|
|
5906
5906
|
}
|
|
5907
5907
|
mightContain(e) {
|
|
@@ -5909,8 +5909,8 @@ class BloomFilter {
|
|
|
5909
5909
|
if (0 === this.Ie) return !1;
|
|
5910
5910
|
const t = __PRIVATE_getMd5HashValue(e), [n, r] = __PRIVATE_get64BitUints(t);
|
|
5911
5911
|
for (let e = 0; e < this.hashCount; e++) {
|
|
5912
|
-
const t = this.
|
|
5913
|
-
if (!this.
|
|
5912
|
+
const t = this.de(n, r, e);
|
|
5913
|
+
if (!this.Ee(t)) return !1;
|
|
5914
5914
|
}
|
|
5915
5915
|
return !0;
|
|
5916
5916
|
}
|
|
@@ -5922,7 +5922,7 @@ class BloomFilter {
|
|
|
5922
5922
|
if (0 === this.Ie) return;
|
|
5923
5923
|
const t = __PRIVATE_getMd5HashValue(e), [n, r] = __PRIVATE_get64BitUints(t);
|
|
5924
5924
|
for (let e = 0; e < this.hashCount; e++) {
|
|
5925
|
-
const t = this.
|
|
5925
|
+
const t = this.de(n, r, e);
|
|
5926
5926
|
this.Ae(t);
|
|
5927
5927
|
}
|
|
5928
5928
|
}
|
|
@@ -6147,10 +6147,10 @@ class __PRIVATE_WatchTargetChange {
|
|
|
6147
6147
|
/** The last resume token sent to us for this target. */ get resumeToken() {
|
|
6148
6148
|
return this.pe;
|
|
6149
6149
|
}
|
|
6150
|
-
/** Whether this target has pending target adds or target removes. */ get
|
|
6150
|
+
/** Whether this target has pending target adds or target removes. */ get be() {
|
|
6151
6151
|
return 0 !== this.fe;
|
|
6152
6152
|
}
|
|
6153
|
-
/** Whether we have modified any state that should trigger a snapshot. */ get
|
|
6153
|
+
/** Whether we have modified any state that should trigger a snapshot. */ get Se() {
|
|
6154
6154
|
return this.we;
|
|
6155
6155
|
}
|
|
6156
6156
|
/**
|
|
@@ -6243,7 +6243,7 @@ class __PRIVATE_WatchChangeAggregator {
|
|
|
6243
6243
|
case 1 /* WatchTargetChangeState.Added */ :
|
|
6244
6244
|
// We need to decrement the number of pending acks needed from watch
|
|
6245
6245
|
// for this targetId.
|
|
6246
|
-
n.Oe(), n.
|
|
6246
|
+
n.Oe(), n.be ||
|
|
6247
6247
|
// We have a freshly added target, so we need to reset any state
|
|
6248
6248
|
// that we had previously. This can happen e.g. when remove and add
|
|
6249
6249
|
// back a target for existence filter mismatches.
|
|
@@ -6255,7 +6255,7 @@ class __PRIVATE_WatchChangeAggregator {
|
|
|
6255
6255
|
// remove any target changes.
|
|
6256
6256
|
// We need to decrement the number of pending acks needed from watch
|
|
6257
6257
|
// for this targetId.
|
|
6258
|
-
n.Oe(), n.
|
|
6258
|
+
n.Oe(), n.be || this.removeTarget(t);
|
|
6259
6259
|
break;
|
|
6260
6260
|
|
|
6261
6261
|
case 3 /* WatchTargetChangeState.Current */ :
|
|
@@ -6416,7 +6416,7 @@ class __PRIVATE_WatchChangeAggregator {
|
|
|
6416
6416
|
const t = new DocumentKey(i.target.path);
|
|
6417
6417
|
null !== this.ke.get(t) || this.it(r, t) || this.Ue(r, t, MutableDocument.newNoDocument(t, e));
|
|
6418
6418
|
}
|
|
6419
|
-
n.
|
|
6419
|
+
n.Se && (t.set(r, n.ve()), n.Ce());
|
|
6420
6420
|
}
|
|
6421
6421
|
}));
|
|
6422
6422
|
let n = __PRIVATE_documentKeySet();
|
|
@@ -6503,7 +6503,7 @@ class __PRIVATE_WatchChangeAggregator {
|
|
|
6503
6503
|
* is still interested in that has no outstanding target change requests).
|
|
6504
6504
|
*/ Je(e) {
|
|
6505
6505
|
const t = this.Be.get(e);
|
|
6506
|
-
return t && t.
|
|
6506
|
+
return t && t.be ? null : this.Le.ot(e);
|
|
6507
6507
|
}
|
|
6508
6508
|
/**
|
|
6509
6509
|
* Resets the state of a Watch target to its initial state (e.g. sets
|
|
@@ -6537,7 +6537,7 @@ const Te = (() => {
|
|
|
6537
6537
|
desc: "DESCENDING"
|
|
6538
6538
|
};
|
|
6539
6539
|
return e;
|
|
6540
|
-
})(),
|
|
6540
|
+
})(), de = (() => {
|
|
6541
6541
|
const e = {
|
|
6542
6542
|
"<": "LESS_THAN",
|
|
6543
6543
|
"<=": "LESS_THAN_OR_EQUAL",
|
|
@@ -6551,7 +6551,7 @@ const Te = (() => {
|
|
|
6551
6551
|
"array-contains-any": "ARRAY_CONTAINS_ANY"
|
|
6552
6552
|
};
|
|
6553
6553
|
return e;
|
|
6554
|
-
})(),
|
|
6554
|
+
})(), Ee = (() => {
|
|
6555
6555
|
const e = {
|
|
6556
6556
|
and: "AND",
|
|
6557
6557
|
or: "OR"
|
|
@@ -7127,11 +7127,11 @@ function __PRIVATE_toDirection(e) {
|
|
|
7127
7127
|
}
|
|
7128
7128
|
|
|
7129
7129
|
function __PRIVATE_toOperatorName(e) {
|
|
7130
|
-
return
|
|
7130
|
+
return de[e];
|
|
7131
7131
|
}
|
|
7132
7132
|
|
|
7133
7133
|
function __PRIVATE_toCompositeOperatorName(e) {
|
|
7134
|
-
return
|
|
7134
|
+
return Ee[e];
|
|
7135
7135
|
}
|
|
7136
7136
|
|
|
7137
7137
|
function __PRIVATE_toFieldPathReference(e) {
|
|
@@ -7712,59 +7712,59 @@ class __PRIVATE_FirestoreIndexValueWriter {
|
|
|
7712
7712
|
this.Tt(e, t),
|
|
7713
7713
|
// Write separator to split index values
|
|
7714
7714
|
// (see go/firestore-storage-format#encodings).
|
|
7715
|
-
t.
|
|
7715
|
+
t.dt();
|
|
7716
7716
|
}
|
|
7717
7717
|
Tt(e, t) {
|
|
7718
|
-
if ("nullValue" in e) this.
|
|
7719
|
-
t.At(e.booleanValue ? 1 : 0); else if ("integerValue" in e) this.
|
|
7718
|
+
if ("nullValue" in e) this.Et(t, 5); else if ("booleanValue" in e) this.Et(t, 10),
|
|
7719
|
+
t.At(e.booleanValue ? 1 : 0); else if ("integerValue" in e) this.Et(t, 15), t.At(__PRIVATE_normalizeNumber(e.integerValue)); else if ("doubleValue" in e) {
|
|
7720
7720
|
const n = __PRIVATE_normalizeNumber(e.doubleValue);
|
|
7721
|
-
isNaN(n) ? this.
|
|
7721
|
+
isNaN(n) ? this.Et(t, 13) : (this.Et(t, 15), __PRIVATE_isNegativeZero(n) ?
|
|
7722
7722
|
// -0.0, 0 and 0.0 are all considered the same
|
|
7723
7723
|
t.At(0) : t.At(n));
|
|
7724
7724
|
} else if ("timestampValue" in e) {
|
|
7725
7725
|
let n = e.timestampValue;
|
|
7726
|
-
this.
|
|
7726
|
+
this.Et(t, 20), "string" == typeof n && (n = __PRIVATE_normalizeTimestamp(n)), t.Rt(`${n.seconds || ""}`),
|
|
7727
7727
|
t.At(n.nanos || 0);
|
|
7728
|
-
} else if ("stringValue" in e) this.Vt(e.stringValue, t), this.ft(t); else if ("bytesValue" in e) this.
|
|
7728
|
+
} else if ("stringValue" in e) this.Vt(e.stringValue, t), this.ft(t); else if ("bytesValue" in e) this.Et(t, 30),
|
|
7729
7729
|
t.gt(__PRIVATE_normalizeByteString(e.bytesValue)), this.ft(t); else if ("referenceValue" in e) this.yt(e.referenceValue, t); else if ("geoPointValue" in e) {
|
|
7730
7730
|
const n = e.geoPointValue;
|
|
7731
|
-
this.
|
|
7732
|
-
} else "mapValue" in e ? __PRIVATE_isMaxValue(e) ? this.
|
|
7733
|
-
this.ft(t)) : "arrayValue" in e ? (this.
|
|
7731
|
+
this.Et(t, 45), t.At(n.latitude || 0), t.At(n.longitude || 0);
|
|
7732
|
+
} else "mapValue" in e ? __PRIVATE_isMaxValue(e) ? this.Et(t, Number.MAX_SAFE_INTEGER) : __PRIVATE_isVectorValue(e) ? this.wt(e.mapValue, t) : (this.bt(e.mapValue, t),
|
|
7733
|
+
this.ft(t)) : "arrayValue" in e ? (this.St(e.arrayValue, t), this.ft(t)) : fail();
|
|
7734
7734
|
}
|
|
7735
7735
|
Vt(e, t) {
|
|
7736
|
-
this.
|
|
7736
|
+
this.Et(t, 25), this.Dt(e, t);
|
|
7737
7737
|
}
|
|
7738
7738
|
Dt(e, t) {
|
|
7739
7739
|
t.Rt(e);
|
|
7740
7740
|
}
|
|
7741
|
-
|
|
7741
|
+
bt(e, t) {
|
|
7742
7742
|
const n = e.fields || {};
|
|
7743
|
-
this.
|
|
7743
|
+
this.Et(t, 55);
|
|
7744
7744
|
for (const e of Object.keys(n)) this.Vt(e, t), this.Tt(n[e], t);
|
|
7745
7745
|
}
|
|
7746
7746
|
wt(e, t) {
|
|
7747
7747
|
var n, r;
|
|
7748
7748
|
const i = e.fields || {};
|
|
7749
|
-
this.
|
|
7749
|
+
this.Et(t, 53);
|
|
7750
7750
|
// Vectors sort first by length
|
|
7751
7751
|
const s = "value", o = (null === (r = null === (n = i[s].arrayValue) || void 0 === n ? void 0 : n.values) || void 0 === r ? void 0 : r.length) || 0;
|
|
7752
|
-
this.
|
|
7752
|
+
this.Et(t, 15), t.At(__PRIVATE_normalizeNumber(o)),
|
|
7753
7753
|
// Vectors then sort by position value
|
|
7754
7754
|
this.Vt(s, t), this.Tt(i[s], t);
|
|
7755
7755
|
}
|
|
7756
|
-
|
|
7756
|
+
St(e, t) {
|
|
7757
7757
|
const n = e.values || [];
|
|
7758
|
-
this.
|
|
7758
|
+
this.Et(t, 50);
|
|
7759
7759
|
for (const e of n) this.Tt(e, t);
|
|
7760
7760
|
}
|
|
7761
7761
|
yt(e, t) {
|
|
7762
|
-
this.
|
|
7762
|
+
this.Et(t, 37);
|
|
7763
7763
|
DocumentKey.fromName(e).path.forEach((e => {
|
|
7764
|
-
this.
|
|
7764
|
+
this.Et(t, 60), this.Dt(e, t);
|
|
7765
7765
|
}));
|
|
7766
7766
|
}
|
|
7767
|
-
|
|
7767
|
+
Et(e, t) {
|
|
7768
7768
|
e.At(t);
|
|
7769
7769
|
}
|
|
7770
7770
|
ft(e) {
|
|
@@ -7964,7 +7964,7 @@ class __PRIVATE_AscendingIndexByteEncoder {
|
|
|
7964
7964
|
At(e) {
|
|
7965
7965
|
this.jt.kt(e);
|
|
7966
7966
|
}
|
|
7967
|
-
|
|
7967
|
+
dt() {
|
|
7968
7968
|
this.jt.$t();
|
|
7969
7969
|
}
|
|
7970
7970
|
}
|
|
@@ -7982,7 +7982,7 @@ class __PRIVATE_DescendingIndexByteEncoder {
|
|
|
7982
7982
|
At(e) {
|
|
7983
7983
|
this.jt.Kt(e);
|
|
7984
7984
|
}
|
|
7985
|
-
|
|
7985
|
+
dt() {
|
|
7986
7986
|
this.jt.Wt();
|
|
7987
7987
|
}
|
|
7988
7988
|
}
|
|
@@ -8680,7 +8680,7 @@ class __PRIVATE_IndexedDbIndexManager {
|
|
|
8680
8680
|
n.push(t.value), r && (r = t.inclusive);
|
|
8681
8681
|
}
|
|
8682
8682
|
return new Bound(n, r);
|
|
8683
|
-
}(s, i), c = this.In(i, s, a), l = this.In(i, s, u), h = this.Tn(i, s, _), P = this.
|
|
8683
|
+
}(s, i), c = this.In(i, s, a), l = this.In(i, s, u), h = this.Tn(i, s, _), P = this.dn(i.indexId, o, c, a.inclusive, l, u.inclusive, h);
|
|
8684
8684
|
return PersistencePromise.forEach(P, (i => n.G(i, t.limit).next((t => {
|
|
8685
8685
|
t.forEach((t => {
|
|
8686
8686
|
const n = DocumentKey.fromSegments(t.documentKey);
|
|
@@ -8703,14 +8703,14 @@ class __PRIVATE_IndexedDbIndexManager {
|
|
|
8703
8703
|
/**
|
|
8704
8704
|
* Constructs a key range query on `DbIndexEntryStore` that unions all
|
|
8705
8705
|
* bounds.
|
|
8706
|
-
*/
|
|
8706
|
+
*/ dn(e, t, n, r, i, s, o) {
|
|
8707
8707
|
// The number of total index scans we union together. This is similar to a
|
|
8708
8708
|
// distributed normal form, but adapted for array values. We create a single
|
|
8709
8709
|
// index range per value in an ARRAY_CONTAINS or ARRAY_CONTAINS_ANY filter
|
|
8710
8710
|
// combined with the values from the query bounds.
|
|
8711
8711
|
const _ = (null != t ? t.length : 1) * Math.max(n.length, i.length), a = _ / (null != t ? t.length : 1), u = [];
|
|
8712
8712
|
for (let c = 0; c < _; ++c) {
|
|
8713
|
-
const _ = t ? this.
|
|
8713
|
+
const _ = t ? this.En(t[c / a]) : Ae, l = this.An(e, _, n[c % a], r), h = this.Rn(e, _, i[c % a], s), P = o.map((t => this.An(e, _, t,
|
|
8714
8714
|
/* inclusive= */ !0)));
|
|
8715
8715
|
u.push(...this.createRange(l, h, P));
|
|
8716
8716
|
}
|
|
@@ -8778,7 +8778,7 @@ class __PRIVATE_IndexedDbIndexManager {
|
|
|
8778
8778
|
}
|
|
8779
8779
|
return n.zt();
|
|
8780
8780
|
}
|
|
8781
|
-
/** Encodes a single value to the ascending index format. */
|
|
8781
|
+
/** Encodes a single value to the ascending index format. */ En(e) {
|
|
8782
8782
|
const t = new __PRIVATE_IndexByteEncoder;
|
|
8783
8783
|
return __PRIVATE_FirestoreIndexValueWriter.vt.It(e, t.Yt(0 /* IndexKind.ASCENDING */)),
|
|
8784
8784
|
t.zt();
|
|
@@ -8871,8 +8871,8 @@ class __PRIVATE_IndexedDbIndexManager {
|
|
|
8871
8871
|
const i = n.get(t.collectionGroup);
|
|
8872
8872
|
return (i ? PersistencePromise.resolve(i) : this.getFieldIndexes(e, t.collectionGroup)).next((i => (n.set(t.collectionGroup, i),
|
|
8873
8873
|
PersistencePromise.forEach(i, (n => this.wn(e, t, n).next((t => {
|
|
8874
|
-
const i = this.
|
|
8875
|
-
return t.isEqual(i) ? PersistencePromise.resolve() : this.
|
|
8874
|
+
const i = this.bn(r, n);
|
|
8875
|
+
return t.isEqual(i) ? PersistencePromise.resolve() : this.Sn(e, r, n, t, i);
|
|
8876
8876
|
})))))));
|
|
8877
8877
|
}));
|
|
8878
8878
|
}
|
|
@@ -8899,14 +8899,14 @@ class __PRIVATE_IndexedDbIndexManager {
|
|
|
8899
8899
|
i = i.add(new __PRIVATE_IndexEntry(n.indexId, t, r.arrayValue, r.directionalValue));
|
|
8900
8900
|
})).next((() => i));
|
|
8901
8901
|
}
|
|
8902
|
-
/** Creates the index entries for the given document. */
|
|
8902
|
+
/** Creates the index entries for the given document. */ bn(e, t) {
|
|
8903
8903
|
let n = new SortedSet(__PRIVATE_indexEntryComparator);
|
|
8904
8904
|
const r = this.Vn(t, e);
|
|
8905
8905
|
if (null == r) return n;
|
|
8906
8906
|
const i = __PRIVATE_fieldIndexGetArraySegment(t);
|
|
8907
8907
|
if (null != i) {
|
|
8908
8908
|
const s = e.data.field(i.fieldPath);
|
|
8909
|
-
if (isArray(s)) for (const i of s.arrayValue.values || []) n = n.add(new __PRIVATE_IndexEntry(t.indexId, e.key, this.
|
|
8909
|
+
if (isArray(s)) for (const i of s.arrayValue.values || []) n = n.add(new __PRIVATE_IndexEntry(t.indexId, e.key, this.En(i), r));
|
|
8910
8910
|
} else n = n.add(new __PRIVATE_IndexEntry(t.indexId, e.key, Ae, r));
|
|
8911
8911
|
return n;
|
|
8912
8912
|
}
|
|
@@ -8914,7 +8914,7 @@ class __PRIVATE_IndexedDbIndexManager {
|
|
|
8914
8914
|
* Updates the index entries for the provided document by deleting entries
|
|
8915
8915
|
* that are no longer referenced in `newEntries` and adding all newly added
|
|
8916
8916
|
* entries.
|
|
8917
|
-
*/
|
|
8917
|
+
*/ Sn(e, t, n, r, i) {
|
|
8918
8918
|
__PRIVATE_logDebug("IndexedDbIndexManager", "Updating index entries for document '%s'", t.key);
|
|
8919
8919
|
const s = [];
|
|
8920
8920
|
return function __PRIVATE_diffSortedSets(e, t, n, r, i) {
|
|
@@ -10852,16 +10852,16 @@ class OverlayedDocument {
|
|
|
10852
10852
|
*/ class __PRIVATE_ReferenceSet {
|
|
10853
10853
|
constructor() {
|
|
10854
10854
|
// A set of outstanding references to a document sorted by key.
|
|
10855
|
-
this.Tr = new SortedSet(__PRIVATE_DocReference.
|
|
10855
|
+
this.Tr = new SortedSet(__PRIVATE_DocReference.dr),
|
|
10856
10856
|
// A set of outstanding references to a document sorted by target id.
|
|
10857
|
-
this.
|
|
10857
|
+
this.Er = new SortedSet(__PRIVATE_DocReference.Ar);
|
|
10858
10858
|
}
|
|
10859
10859
|
/** Returns true if the reference set contains no references. */ isEmpty() {
|
|
10860
10860
|
return this.Tr.isEmpty();
|
|
10861
10861
|
}
|
|
10862
10862
|
/** Adds a reference to the given document key for the given ID. */ addReference(e, t) {
|
|
10863
10863
|
const n = new __PRIVATE_DocReference(e, t);
|
|
10864
|
-
this.Tr = this.Tr.add(n), this.
|
|
10864
|
+
this.Tr = this.Tr.add(n), this.Er = this.Er.add(n);
|
|
10865
10865
|
}
|
|
10866
10866
|
/** Add references to the given document keys for the given ID. */ Rr(e, t) {
|
|
10867
10867
|
e.forEach((e => this.addReference(e, t)));
|
|
@@ -10880,7 +10880,7 @@ class OverlayedDocument {
|
|
|
10880
10880
|
* removed.
|
|
10881
10881
|
*/ gr(e) {
|
|
10882
10882
|
const t = new DocumentKey(new ResourcePath([])), n = new __PRIVATE_DocReference(t, e), r = new __PRIVATE_DocReference(t, e + 1), i = [];
|
|
10883
|
-
return this.
|
|
10883
|
+
return this.Er.forEachInRange([ n, r ], (e => {
|
|
10884
10884
|
this.Vr(e), i.push(e.key);
|
|
10885
10885
|
})), i;
|
|
10886
10886
|
}
|
|
@@ -10888,12 +10888,12 @@ class OverlayedDocument {
|
|
|
10888
10888
|
this.Tr.forEach((e => this.Vr(e)));
|
|
10889
10889
|
}
|
|
10890
10890
|
Vr(e) {
|
|
10891
|
-
this.Tr = this.Tr.delete(e), this.
|
|
10891
|
+
this.Tr = this.Tr.delete(e), this.Er = this.Er.delete(e);
|
|
10892
10892
|
}
|
|
10893
10893
|
yr(e) {
|
|
10894
10894
|
const t = new DocumentKey(new ResourcePath([])), n = new __PRIVATE_DocReference(t, e), r = new __PRIVATE_DocReference(t, e + 1);
|
|
10895
10895
|
let i = __PRIVATE_documentKeySet();
|
|
10896
|
-
return this.
|
|
10896
|
+
return this.Er.forEachInRange([ n, r ], (e => {
|
|
10897
10897
|
i = i.add(e.key);
|
|
10898
10898
|
})), i;
|
|
10899
10899
|
}
|
|
@@ -10907,7 +10907,7 @@ class __PRIVATE_DocReference {
|
|
|
10907
10907
|
constructor(e, t) {
|
|
10908
10908
|
this.key = e, this.wr = t;
|
|
10909
10909
|
}
|
|
10910
|
-
/** Compare by key then by ID */ static
|
|
10910
|
+
/** Compare by key then by ID */ static dr(e, t) {
|
|
10911
10911
|
return DocumentKey.comparator(e.key, t.key) || __PRIVATE_primitiveComparator(e.wr, t.wr);
|
|
10912
10912
|
}
|
|
10913
10913
|
/** Compare by ID then by key */ static Ar(e, t) {
|
|
@@ -10939,20 +10939,20 @@ class __PRIVATE_DocReference {
|
|
|
10939
10939
|
*/
|
|
10940
10940
|
this.mutationQueue = [],
|
|
10941
10941
|
/** Next value to use when assigning sequential IDs to each mutation batch. */
|
|
10942
|
-
this.
|
|
10942
|
+
this.br = 1,
|
|
10943
10943
|
/** An ordered mapping between documents and the mutations batch IDs. */
|
|
10944
|
-
this.
|
|
10944
|
+
this.Sr = new SortedSet(__PRIVATE_DocReference.dr);
|
|
10945
10945
|
}
|
|
10946
10946
|
checkEmpty(e) {
|
|
10947
10947
|
return PersistencePromise.resolve(0 === this.mutationQueue.length);
|
|
10948
10948
|
}
|
|
10949
10949
|
addMutationBatch(e, t, n, r) {
|
|
10950
|
-
const i = this.
|
|
10951
|
-
this.
|
|
10950
|
+
const i = this.br;
|
|
10951
|
+
this.br++, this.mutationQueue.length > 0 && this.mutationQueue[this.mutationQueue.length - 1];
|
|
10952
10952
|
const s = new MutationBatch(i, t, n, r);
|
|
10953
10953
|
this.mutationQueue.push(s);
|
|
10954
10954
|
// Track references by document key and index collection parents.
|
|
10955
|
-
for (const t of r) this.
|
|
10955
|
+
for (const t of r) this.Sr = this.Sr.add(new __PRIVATE_DocReference(t.key, i)),
|
|
10956
10956
|
this.indexManager.addToCollectionParentIndex(e, t.key.path.popLast());
|
|
10957
10957
|
return PersistencePromise.resolve(s);
|
|
10958
10958
|
}
|
|
@@ -10966,14 +10966,14 @@ class __PRIVATE_DocReference {
|
|
|
10966
10966
|
return PersistencePromise.resolve(this.mutationQueue.length > i ? this.mutationQueue[i] : null);
|
|
10967
10967
|
}
|
|
10968
10968
|
getHighestUnacknowledgedBatchId() {
|
|
10969
|
-
return PersistencePromise.resolve(0 === this.mutationQueue.length ? -1 : this.
|
|
10969
|
+
return PersistencePromise.resolve(0 === this.mutationQueue.length ? -1 : this.br - 1);
|
|
10970
10970
|
}
|
|
10971
10971
|
getAllMutationBatches(e) {
|
|
10972
10972
|
return PersistencePromise.resolve(this.mutationQueue.slice());
|
|
10973
10973
|
}
|
|
10974
10974
|
getAllMutationBatchesAffectingDocumentKey(e, t) {
|
|
10975
10975
|
const n = new __PRIVATE_DocReference(t, 0), r = new __PRIVATE_DocReference(t, Number.POSITIVE_INFINITY), i = [];
|
|
10976
|
-
return this.
|
|
10976
|
+
return this.Sr.forEachInRange([ n, r ], (e => {
|
|
10977
10977
|
const t = this.Dr(e.wr);
|
|
10978
10978
|
i.push(t);
|
|
10979
10979
|
})), PersistencePromise.resolve(i);
|
|
@@ -10982,7 +10982,7 @@ class __PRIVATE_DocReference {
|
|
|
10982
10982
|
let n = new SortedSet(__PRIVATE_primitiveComparator);
|
|
10983
10983
|
return t.forEach((e => {
|
|
10984
10984
|
const t = new __PRIVATE_DocReference(e, 0), r = new __PRIVATE_DocReference(e, Number.POSITIVE_INFINITY);
|
|
10985
|
-
this.
|
|
10985
|
+
this.Sr.forEachInRange([ t, r ], (e => {
|
|
10986
10986
|
n = n.add(e.wr);
|
|
10987
10987
|
}));
|
|
10988
10988
|
})), PersistencePromise.resolve(this.Cr(n));
|
|
@@ -11001,7 +11001,7 @@ class __PRIVATE_DocReference {
|
|
|
11001
11001
|
// Find unique batchIDs referenced by all documents potentially matching the
|
|
11002
11002
|
// query.
|
|
11003
11003
|
let o = new SortedSet(__PRIVATE_primitiveComparator);
|
|
11004
|
-
return this.
|
|
11004
|
+
return this.Sr.forEachWhile((e => {
|
|
11005
11005
|
const t = e.key.path;
|
|
11006
11006
|
return !!n.isPrefixOf(t) && (
|
|
11007
11007
|
// Rows with document keys more than one segment longer than the query
|
|
@@ -11023,19 +11023,19 @@ class __PRIVATE_DocReference {
|
|
|
11023
11023
|
}
|
|
11024
11024
|
removeMutationBatch(e, t) {
|
|
11025
11025
|
__PRIVATE_hardAssert(0 === this.Fr(t.batchId, "removed")), this.mutationQueue.shift();
|
|
11026
|
-
let n = this.
|
|
11026
|
+
let n = this.Sr;
|
|
11027
11027
|
return PersistencePromise.forEach(t.mutations, (r => {
|
|
11028
11028
|
const i = new __PRIVATE_DocReference(r.key, t.batchId);
|
|
11029
11029
|
return n = n.delete(i), this.referenceDelegate.markPotentiallyOrphaned(e, r.key);
|
|
11030
11030
|
})).next((() => {
|
|
11031
|
-
this.
|
|
11031
|
+
this.Sr = n;
|
|
11032
11032
|
}));
|
|
11033
11033
|
}
|
|
11034
11034
|
On(e) {
|
|
11035
11035
|
// No-op since the memory mutation queue does not maintain a separate cache.
|
|
11036
11036
|
}
|
|
11037
11037
|
containsKey(e, t) {
|
|
11038
|
-
const n = new __PRIVATE_DocReference(t, 0), r = this.
|
|
11038
|
+
const n = new __PRIVATE_DocReference(t, 0), r = this.Sr.firstAfterOrEqual(n);
|
|
11039
11039
|
return PersistencePromise.resolve(t.isEqual(r && r.key));
|
|
11040
11040
|
}
|
|
11041
11041
|
performConsistencyCheck(e) {
|
|
@@ -11917,9 +11917,9 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
11917
11917
|
/** The client metadata refresh task. */
|
|
11918
11918
|
this.Ti = null,
|
|
11919
11919
|
/** The last time we garbage collected the client metadata object store. */
|
|
11920
|
-
this.
|
|
11920
|
+
this.di = Number.NEGATIVE_INFINITY,
|
|
11921
11921
|
/** A listener to notify on primary state changes. */
|
|
11922
|
-
this.
|
|
11922
|
+
this.Ei = e => Promise.resolve(), !__PRIVATE_IndexedDbPersistence.D()) throw new FirestoreError(D.UNIMPLEMENTED, "This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");
|
|
11923
11923
|
this.referenceDelegate = new __PRIVATE_IndexedDbLruDelegateImpl(this, r), this.Ai = t + "main",
|
|
11924
11924
|
this.serializer = new __PRIVATE_LocalSerializer(_), this.Ri = new __PRIVATE_SimpleDb(this.Ai, this.hi, new __PRIVATE_SchemaConverter(this.serializer)),
|
|
11925
11925
|
this.$r = new __PRIVATE_IndexedDbGlobalsCache, this.Ur = new __PRIVATE_IndexedDbTargetCache(this.referenceDelegate, this.serializer),
|
|
@@ -11954,7 +11954,7 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
11954
11954
|
*
|
|
11955
11955
|
* PORTING NOTE: This is only used for Web multi-tab.
|
|
11956
11956
|
*/ yi(e) {
|
|
11957
|
-
return this.
|
|
11957
|
+
return this.Ei = async t => {
|
|
11958
11958
|
if (this.started) return e(t);
|
|
11959
11959
|
}, e(this.isPrimary);
|
|
11960
11960
|
}
|
|
@@ -11995,9 +11995,9 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
11995
11995
|
inForeground: this.inForeground
|
|
11996
11996
|
}).next((() => {
|
|
11997
11997
|
if (this.isPrimary) return this.wi(e).next((e => {
|
|
11998
|
-
e || (this.isPrimary = !1, this.ui.enqueueRetryable((() => this.
|
|
11998
|
+
e || (this.isPrimary = !1, this.ui.enqueueRetryable((() => this.Ei(!1))));
|
|
11999
11999
|
}));
|
|
12000
|
-
})).next((() => this.
|
|
12000
|
+
})).next((() => this.bi(e))).next((t => this.isPrimary && !t ? this.Si(e).next((() => !1)) : !!t && this.Di(e).next((() => !0)))))).catch((e => {
|
|
12001
12001
|
if (__PRIVATE_isIndexedDbTransactionError(e))
|
|
12002
12002
|
// Proceed with the existing state. Any subsequent access to
|
|
12003
12003
|
// IndexedDB will verify the lease.
|
|
@@ -12007,7 +12007,7 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
12007
12007
|
return __PRIVATE_logDebug("IndexedDbPersistence", "Releasing owner lease after error during lease refresh", e),
|
|
12008
12008
|
/* isPrimary= */ !1;
|
|
12009
12009
|
})).then((e => {
|
|
12010
|
-
this.isPrimary !== e && this.ui.enqueueRetryable((() => this.
|
|
12010
|
+
this.isPrimary !== e && this.ui.enqueueRetryable((() => this.Ei(e))), this.isPrimary = e;
|
|
12011
12011
|
}));
|
|
12012
12012
|
}
|
|
12013
12013
|
wi(e) {
|
|
@@ -12021,8 +12021,8 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
12021
12021
|
* RemoteDocumentChanges and the ClientMetadata store based on the last update
|
|
12022
12022
|
* time of all clients.
|
|
12023
12023
|
*/ async Fi() {
|
|
12024
|
-
if (this.isPrimary && !this.Mi(this.
|
|
12025
|
-
this.
|
|
12024
|
+
if (this.isPrimary && !this.Mi(this.di, 18e5)) {
|
|
12025
|
+
this.di = Date.now();
|
|
12026
12026
|
const e = await this.runTransaction("maybeGarbageCollectMultiClientState", "readwrite-primary", (e => {
|
|
12027
12027
|
const t = __PRIVATE_getStore(e, "clientMetadata");
|
|
12028
12028
|
return t.U().next((e => {
|
|
@@ -12054,7 +12054,7 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
12054
12054
|
* the client is eligible for the lease, but does not actually acquire it.
|
|
12055
12055
|
* May return 'false' even if there is no active leaseholder and another
|
|
12056
12056
|
* (foreground) client should become leaseholder instead.
|
|
12057
|
-
*/
|
|
12057
|
+
*/ bi(e) {
|
|
12058
12058
|
if (this.li) return PersistencePromise.resolve(!0);
|
|
12059
12059
|
return __PRIVATE_primaryClientStore(e).get("owner").next((t => {
|
|
12060
12060
|
// A client is eligible for the primary lease if:
|
|
@@ -12104,7 +12104,7 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
12104
12104
|
// has obtained the primary lease.
|
|
12105
12105
|
await this.Ri.runTransaction("shutdown", "readwrite", [ "owner", "clientMetadata" ], (e => {
|
|
12106
12106
|
const t = new __PRIVATE_IndexedDbTransaction(e, __PRIVATE_ListenSequence.oe);
|
|
12107
|
-
return this.
|
|
12107
|
+
return this.Si(t).next((() => this.Ci(t)));
|
|
12108
12108
|
})), this.Ri.close(),
|
|
12109
12109
|
// Remove the entry marking the client as zombied from LocalStorage since
|
|
12110
12110
|
// we successfully deleted its metadata from IndexedDb.
|
|
@@ -12160,9 +12160,9 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
12160
12160
|
// Do all transactions as readwrite against all object stores, since we
|
|
12161
12161
|
// are the only reader/writer.
|
|
12162
12162
|
return this.Ri.runTransaction(e, r, i, (r => (s = new __PRIVATE_IndexedDbTransaction(r, this.Qr ? this.Qr.next() : __PRIVATE_ListenSequence.oe),
|
|
12163
|
-
"readwrite-primary" === t ? this.wi(s).next((e => !!e || this.
|
|
12163
|
+
"readwrite-primary" === t ? this.wi(s).next((e => !!e || this.bi(s))).next((t => {
|
|
12164
12164
|
if (!t) throw __PRIVATE_logError(`Failed to obtain primary lease for action '${e}'.`),
|
|
12165
|
-
this.isPrimary = !1, this.ui.enqueueRetryable((() => this.
|
|
12165
|
+
this.isPrimary = !1, this.ui.enqueueRetryable((() => this.Ei(!1))), new FirestoreError(D.FAILED_PRECONDITION, C);
|
|
12166
12166
|
return n(s);
|
|
12167
12167
|
})).next((e => this.Di(s).next((() => e)))) : this.Ki(s).next((() => n(s)))))).then((e => (s.raiseOnCommittedEvent(),
|
|
12168
12168
|
e)));
|
|
@@ -12192,7 +12192,7 @@ class __PRIVATE_IndexedDbPersistence {
|
|
|
12192
12192
|
static D() {
|
|
12193
12193
|
return __PRIVATE_SimpleDb.D();
|
|
12194
12194
|
}
|
|
12195
|
-
/** Checks the primary lease and removes it if we are the current primary. */
|
|
12195
|
+
/** Checks the primary lease and removes it if we are the current primary. */ Si(e) {
|
|
12196
12196
|
const t = __PRIVATE_primaryClientStore(e);
|
|
12197
12197
|
return t.get("owner").next((e => this.vi(e) ? (__PRIVATE_logDebug("IndexedDbPersistence", "Releasing primary lease."),
|
|
12198
12198
|
t.delete("owner")) : PersistencePromise.resolve()));
|
|
@@ -13004,9 +13004,9 @@ async function __PRIVATE_localStoreApplyBundledDocuments(e, t, n, r) {
|
|
|
13004
13004
|
const i = __PRIVATE_debugCast(e);
|
|
13005
13005
|
let s = __PRIVATE_documentKeySet(), o = __PRIVATE_mutableDocumentMap();
|
|
13006
13006
|
for (const e of n) {
|
|
13007
|
-
const n = t.
|
|
13007
|
+
const n = t.ds(e.metadata.name);
|
|
13008
13008
|
e.document && (s = s.add(n));
|
|
13009
|
-
const r = t.
|
|
13009
|
+
const r = t.Es(e);
|
|
13010
13010
|
r.setReadTime(t.As(e.metadata.readTime)), o = o.insert(n, r);
|
|
13011
13011
|
}
|
|
13012
13012
|
const _ = i.cs.newChangeBuffer({
|
|
@@ -13216,12 +13216,12 @@ class __PRIVATE_LocalClientState {
|
|
|
13216
13216
|
constructor(e, t, n, r, i) {
|
|
13217
13217
|
this.window = e, this.ui = t, this.persistenceKey = n, this.ps = r, this.syncEngine = null,
|
|
13218
13218
|
this.onlineStateHandler = null, this.sequenceNumberHandler = null, this.ys = this.ws.bind(this),
|
|
13219
|
-
this.
|
|
13219
|
+
this.bs = new SortedMap(__PRIVATE_primitiveComparator), this.started = !1,
|
|
13220
13220
|
/**
|
|
13221
13221
|
* Captures WebStorage events that occur before `start()` is called. These
|
|
13222
13222
|
* events are replayed once `WebStorageSharedClientState` is started.
|
|
13223
13223
|
*/
|
|
13224
|
-
this.
|
|
13224
|
+
this.Ss = [];
|
|
13225
13225
|
// Escape the special characters mentioned here:
|
|
13226
13226
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
|
|
13227
13227
|
const s = n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
@@ -13246,7 +13246,7 @@ class __PRIVATE_LocalClientState {
|
|
|
13246
13246
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13247
13247
|
* See the License for the specific language governing permissions and
|
|
13248
13248
|
* limitations under the License.
|
|
13249
|
-
*/ (this.persistenceKey), this.
|
|
13249
|
+
*/ (this.persistenceKey), this.bs = this.bs.insert(this.ps, new __PRIVATE_LocalClientState),
|
|
13250
13250
|
this.Cs = new RegExp(`^firestore_clients_${s}_([^_]*)$`), this.Fs = new RegExp(`^firestore_mutations_${s}_(\\d+)(?:_(.*))?$`),
|
|
13251
13251
|
this.Ms = new RegExp(`^firestore_targets_${s}_(\\d+)$`), this.xs =
|
|
13252
13252
|
/** Assembles the key for the online state of the primary tab. */
|
|
@@ -13284,7 +13284,7 @@ class __PRIVATE_LocalClientState {
|
|
|
13284
13284
|
const e = this.getItem(createWebStorageClientStateKey(this.persistenceKey, t));
|
|
13285
13285
|
if (e) {
|
|
13286
13286
|
const n = __PRIVATE_RemoteClientState.Rs(t, e);
|
|
13287
|
-
n && (this.
|
|
13287
|
+
n && (this.bs = this.bs.insert(n.clientId, n));
|
|
13288
13288
|
}
|
|
13289
13289
|
}
|
|
13290
13290
|
this.Ns();
|
|
@@ -13295,8 +13295,8 @@ class __PRIVATE_LocalClientState {
|
|
|
13295
13295
|
const e = this.Ls(t);
|
|
13296
13296
|
e && this.Bs(e);
|
|
13297
13297
|
}
|
|
13298
|
-
for (const e of this.
|
|
13299
|
-
this.
|
|
13298
|
+
for (const e of this.Ss) this.ws(e);
|
|
13299
|
+
this.Ss = [],
|
|
13300
13300
|
// Register a window unload hook to remove the client metadata entry from
|
|
13301
13301
|
// WebStorage even if `shutdown()` was not called.
|
|
13302
13302
|
this.window.addEventListener("pagehide", (() => this.shutdown())), this.started = !0;
|
|
@@ -13305,11 +13305,11 @@ class __PRIVATE_LocalClientState {
|
|
|
13305
13305
|
this.setItem(this.vs, JSON.stringify(e));
|
|
13306
13306
|
}
|
|
13307
13307
|
getAllActiveQueryTargets() {
|
|
13308
|
-
return this.ks(this.
|
|
13308
|
+
return this.ks(this.bs);
|
|
13309
13309
|
}
|
|
13310
13310
|
isActiveQueryTarget(e) {
|
|
13311
13311
|
let t = !1;
|
|
13312
|
-
return this.
|
|
13312
|
+
return this.bs.forEach(((n, r) => {
|
|
13313
13313
|
r.activeTargetIds.has(e) && (t = !0);
|
|
13314
13314
|
})), t;
|
|
13315
13315
|
}
|
|
@@ -13430,12 +13430,12 @@ class __PRIVATE_LocalClientState {
|
|
|
13430
13430
|
const e = this.Xs(t.newValue);
|
|
13431
13431
|
await Promise.all(e.map((e => this.syncEngine.eo(e))));
|
|
13432
13432
|
}
|
|
13433
|
-
} else this.
|
|
13433
|
+
} else this.Ss.push(t);
|
|
13434
13434
|
}));
|
|
13435
13435
|
}
|
|
13436
13436
|
}
|
|
13437
13437
|
get Ks() {
|
|
13438
|
-
return this.
|
|
13438
|
+
return this.bs.get(this.ps);
|
|
13439
13439
|
}
|
|
13440
13440
|
Ns() {
|
|
13441
13441
|
this.setItem(this.Ds, this.Ks.Vs());
|
|
@@ -13508,13 +13508,13 @@ class __PRIVATE_LocalClientState {
|
|
|
13508
13508
|
return this.syncEngine.ro(e.targetId, e.state, e.error);
|
|
13509
13509
|
}
|
|
13510
13510
|
zs(e, t) {
|
|
13511
|
-
const n = t ? this.
|
|
13511
|
+
const n = t ? this.bs.insert(e, t) : this.bs.remove(e), r = this.ks(this.bs), i = this.ks(n), s = [], o = [];
|
|
13512
13512
|
return i.forEach((e => {
|
|
13513
13513
|
r.has(e) || s.push(e);
|
|
13514
13514
|
})), r.forEach((e => {
|
|
13515
13515
|
i.has(e) || o.push(e);
|
|
13516
13516
|
})), this.syncEngine.io(s, o).then((() => {
|
|
13517
|
-
this.
|
|
13517
|
+
this.bs = n;
|
|
13518
13518
|
}));
|
|
13519
13519
|
}
|
|
13520
13520
|
Bs(e) {
|
|
@@ -13523,7 +13523,7 @@ class __PRIVATE_LocalClientState {
|
|
|
13523
13523
|
// IndexedDb. If a client does not update their IndexedDb client state
|
|
13524
13524
|
// within 5 seconds, it is considered inactive and we don't emit an online
|
|
13525
13525
|
// state event.
|
|
13526
|
-
this.
|
|
13526
|
+
this.bs.get(e.clientId) && this.onlineStateHandler(e.onlineState);
|
|
13527
13527
|
}
|
|
13528
13528
|
ks(e) {
|
|
13529
13529
|
let t = __PRIVATE_targetIdSet();
|
|
@@ -13780,10 +13780,10 @@ class __PRIVATE_StreamBridge {
|
|
|
13780
13780
|
wo() {
|
|
13781
13781
|
this.Vo();
|
|
13782
13782
|
}
|
|
13783
|
-
|
|
13783
|
+
bo(e) {
|
|
13784
13784
|
this.fo(e);
|
|
13785
13785
|
}
|
|
13786
|
-
|
|
13786
|
+
So(e) {
|
|
13787
13787
|
this.po(e);
|
|
13788
13788
|
}
|
|
13789
13789
|
}
|
|
@@ -13847,7 +13847,7 @@ class __PRIVATE_RestConnection {
|
|
|
13847
13847
|
// SDK_VERSION is updated to different value at runtime depending on the entry point,
|
|
13848
13848
|
// so we need to get its value when we need it in a function.
|
|
13849
13849
|
function __PRIVATE_getGoogApiClientValue() {
|
|
13850
|
-
return "gl-js/ fire/" +
|
|
13850
|
+
return "gl-js/ fire/" + b;
|
|
13851
13851
|
}(),
|
|
13852
13852
|
// Content-Type: text/plain will avoid preflight requests which might
|
|
13853
13853
|
// mess with CORS and redirects by proxies. If we add custom headers
|
|
@@ -13997,10 +13997,10 @@ class __PRIVATE_RestConnection {
|
|
|
13997
13997
|
h || (__PRIVATE_logDebug(ge, `RPC '${e}' stream ${r} transport opened.`), P.yo());
|
|
13998
13998
|
})), __PRIVATE_unguardedEventListen(c, WebChannel.EventType.CLOSE, (() => {
|
|
13999
13999
|
h || (h = !0, __PRIVATE_logDebug(ge, `RPC '${e}' stream ${r} transport closed`),
|
|
14000
|
-
P.
|
|
14000
|
+
P.bo());
|
|
14001
14001
|
})), __PRIVATE_unguardedEventListen(c, WebChannel.EventType.ERROR, (t => {
|
|
14002
14002
|
h || (h = !0, __PRIVATE_logWarn(ge, `RPC '${e}' stream ${r} transport errored:`, t),
|
|
14003
|
-
P.
|
|
14003
|
+
P.bo(new FirestoreError(D.UNAVAILABLE, "The operation could not be completed")));
|
|
14004
14004
|
})), __PRIVATE_unguardedEventListen(c, WebChannel.EventType.MESSAGE, (t => {
|
|
14005
14005
|
var n;
|
|
14006
14006
|
if (!h) {
|
|
@@ -14031,8 +14031,8 @@ class __PRIVATE_RestConnection {
|
|
|
14031
14031
|
}(t), i = o.message;
|
|
14032
14032
|
void 0 === n && (n = D.INTERNAL, i = "Unknown error status: " + t + " with message " + o.message),
|
|
14033
14033
|
// Mark closed so no further events are propagated
|
|
14034
|
-
h = !0, P.
|
|
14035
|
-
} else __PRIVATE_logDebug(ge, `RPC '${e}' stream ${r} received:`, i), P.
|
|
14034
|
+
h = !0, P.bo(new FirestoreError(n, i)), c.close();
|
|
14035
|
+
} else __PRIVATE_logDebug(ge, `RPC '${e}' stream ${r} received:`, i), P.So(i);
|
|
14036
14036
|
}
|
|
14037
14037
|
})), __PRIVATE_unguardedEventListen(o, Event.STAT_EVENT, (t => {
|
|
14038
14038
|
t.stat === Stat.PROXY ? __PRIVATE_logDebug(ge, `RPC '${e}' stream ${r} detected buffering proxy`) : t.stat === Stat.NOPROXY && __PRIVATE_logDebug(ge, `RPC '${e}' stream ${r} detected no buffering proxy`);
|
|
@@ -14417,7 +14417,7 @@ class __PRIVATE_PersistentStream {
|
|
|
14417
14417
|
})), this.stream.mo((e => {
|
|
14418
14418
|
n((() => this.I_(e)));
|
|
14419
14419
|
})), this.stream.onMessage((e => {
|
|
14420
|
-
n((() => 1 == ++this.e_ ? this.
|
|
14420
|
+
n((() => 1 == ++this.e_ ? this.d_(e) : this.onNext(e)));
|
|
14421
14421
|
}));
|
|
14422
14422
|
}
|
|
14423
14423
|
i_() {
|
|
@@ -14461,7 +14461,7 @@ class __PRIVATE_PersistentStream {
|
|
|
14461
14461
|
T_(e, t) {
|
|
14462
14462
|
return this.connection.Bo("Listen", e, t);
|
|
14463
14463
|
}
|
|
14464
|
-
|
|
14464
|
+
d_(e) {
|
|
14465
14465
|
return this.onNext(e);
|
|
14466
14466
|
}
|
|
14467
14467
|
onNext(e) {
|
|
@@ -14475,7 +14475,7 @@ class __PRIVATE_PersistentStream {
|
|
|
14475
14475
|
const t = e.targetChange;
|
|
14476
14476
|
return t.targetIds && t.targetIds.length ? SnapshotVersion.min() : t.readTime ? __PRIVATE_fromVersion(t.readTime) : SnapshotVersion.min();
|
|
14477
14477
|
}(e);
|
|
14478
|
-
return this.listener.
|
|
14478
|
+
return this.listener.E_(t, n);
|
|
14479
14479
|
}
|
|
14480
14480
|
/**
|
|
14481
14481
|
* Registers interest in the results of the given target. If the target
|
|
@@ -14555,7 +14555,7 @@ class __PRIVATE_PersistentStream {
|
|
|
14555
14555
|
T_(e, t) {
|
|
14556
14556
|
return this.connection.Bo("Write", e, t);
|
|
14557
14557
|
}
|
|
14558
|
-
|
|
14558
|
+
d_(e) {
|
|
14559
14559
|
// Always capture the last stream token.
|
|
14560
14560
|
return __PRIVATE_hardAssert(!!e.streamToken), this.lastStreamToken = e.streamToken,
|
|
14561
14561
|
// The first response is always the handshake response
|
|
@@ -14663,13 +14663,13 @@ class __PRIVATE_OnlineStateTracker {
|
|
|
14663
14663
|
* maximum defined by MAX_WATCH_STREAM_FAILURES, we'll set the OnlineState to
|
|
14664
14664
|
* Offline.
|
|
14665
14665
|
*/
|
|
14666
|
-
this.
|
|
14666
|
+
this.b_ = 0,
|
|
14667
14667
|
/**
|
|
14668
14668
|
* A timer that elapses after ONLINE_STATE_TIMEOUT_MS, at which point we
|
|
14669
14669
|
* transition from OnlineState.Unknown to OnlineState.Offline without waiting
|
|
14670
14670
|
* for the stream to actually fail (MAX_WATCH_STREAM_FAILURES times).
|
|
14671
14671
|
*/
|
|
14672
|
-
this.
|
|
14672
|
+
this.S_ = null,
|
|
14673
14673
|
/**
|
|
14674
14674
|
* Whether the client should log a warning message if it fails to connect to
|
|
14675
14675
|
* the backend (initially true, cleared after a successful stream, or if we've
|
|
@@ -14684,7 +14684,7 @@ class __PRIVATE_OnlineStateTracker {
|
|
|
14684
14684
|
* If this is the first attempt, it sets the OnlineState to Unknown and starts
|
|
14685
14685
|
* the onlineStateTimer.
|
|
14686
14686
|
*/ v_() {
|
|
14687
|
-
0 === this.
|
|
14687
|
+
0 === this.b_ && (this.C_("Unknown" /* OnlineState.Unknown */), this.S_ = this.asyncQueue.enqueueAfterDelay("online_state_timeout" /* TimerId.OnlineStateTimeout */ , 1e4, (() => (this.S_ = null,
|
|
14688
14688
|
this.F_("Backend didn't respond within 10 seconds."), this.C_("Offline" /* OnlineState.Offline */),
|
|
14689
14689
|
Promise.resolve()))));
|
|
14690
14690
|
}
|
|
@@ -14694,8 +14694,8 @@ class __PRIVATE_OnlineStateTracker {
|
|
|
14694
14694
|
* allow multiple failures (based on MAX_WATCH_STREAM_FAILURES) before we
|
|
14695
14695
|
* actually transition to the 'Offline' state.
|
|
14696
14696
|
*/ M_(e) {
|
|
14697
|
-
"Online" /* OnlineState.Online */ === this.state ? this.C_("Unknown" /* OnlineState.Unknown */) : (this.
|
|
14698
|
-
this.
|
|
14697
|
+
"Online" /* OnlineState.Online */ === this.state ? this.C_("Unknown" /* OnlineState.Unknown */) : (this.b_++,
|
|
14698
|
+
this.b_ >= 1 && (this.x_(), this.F_(`Connection failed 1 times. Most recent error: ${e.toString()}`),
|
|
14699
14699
|
this.C_("Offline" /* OnlineState.Offline */)));
|
|
14700
14700
|
}
|
|
14701
14701
|
/**
|
|
@@ -14705,7 +14705,7 @@ class __PRIVATE_OnlineStateTracker {
|
|
|
14705
14705
|
* Offline heuristics, so must not be used in place of
|
|
14706
14706
|
* handleWatchStreamStart() and handleWatchStreamFailure().
|
|
14707
14707
|
*/ set(e) {
|
|
14708
|
-
this.x_(), this.
|
|
14708
|
+
this.x_(), this.b_ = 0, "Online" /* OnlineState.Online */ === e && (
|
|
14709
14709
|
// We've connected to watch at least once. Don't warn the developer
|
|
14710
14710
|
// about being offline going forward.
|
|
14711
14711
|
this.D_ = !1), this.C_(e);
|
|
@@ -14718,7 +14718,7 @@ class __PRIVATE_OnlineStateTracker {
|
|
|
14718
14718
|
this.D_ ? (__PRIVATE_logError(t), this.D_ = !1) : __PRIVATE_logDebug("OnlineStateTracker", t);
|
|
14719
14719
|
}
|
|
14720
14720
|
x_() {
|
|
14721
|
-
null !== this.
|
|
14721
|
+
null !== this.S_ && (this.S_.cancel(), this.S_ = null);
|
|
14722
14722
|
}
|
|
14723
14723
|
}
|
|
14724
14724
|
|
|
@@ -15150,7 +15150,7 @@ async function __PRIVATE_remoteStoreHandleCredentialChange(e, t) {
|
|
|
15150
15150
|
Eo: __PRIVATE_onWatchStreamConnected.bind(null, e),
|
|
15151
15151
|
Ro: __PRIVATE_onWatchStreamOpen.bind(null, e),
|
|
15152
15152
|
mo: __PRIVATE_onWatchStreamClose.bind(null, e),
|
|
15153
|
-
|
|
15153
|
+
E_: __PRIVATE_onWatchStreamChange.bind(null, e)
|
|
15154
15154
|
}), e.B_.push((async t => {
|
|
15155
15155
|
t ? (e.K_.s_(), __PRIVATE_shouldStartWatchStream(e) ? __PRIVATE_startWatchStream(e) : e.q_.set("Unknown" /* OnlineState.Unknown */)) : (await e.K_.stop(),
|
|
15156
15156
|
__PRIVATE_cleanUpWatchStreamState(e));
|
|
@@ -15738,13 +15738,13 @@ class __PRIVATE_QueryListener {
|
|
|
15738
15738
|
constructor(e) {
|
|
15739
15739
|
this.serializer = e;
|
|
15740
15740
|
}
|
|
15741
|
-
|
|
15741
|
+
ds(e) {
|
|
15742
15742
|
return fromName(this.serializer, e);
|
|
15743
15743
|
}
|
|
15744
15744
|
/**
|
|
15745
15745
|
* Converts a BundleDocument to a MutableDocument.
|
|
15746
|
-
*/
|
|
15747
|
-
return e.metadata.exists ? __PRIVATE_fromDocument(this.serializer, e.document, !1) : MutableDocument.newNoDocument(this.
|
|
15746
|
+
*/ Es(e) {
|
|
15747
|
+
return e.metadata.exists ? __PRIVATE_fromDocument(this.serializer, e.document, !1) : MutableDocument.newNoDocument(this.ds(e.metadata.name), this.As(e.metadata.readTime));
|
|
15748
15748
|
}
|
|
15749
15749
|
As(e) {
|
|
15750
15750
|
return __PRIVATE_fromVersion(e);
|
|
@@ -15786,7 +15786,7 @@ class __PRIVATE_QueryListener {
|
|
|
15786
15786
|
ha(e) {
|
|
15787
15787
|
const t = new Map, n = new __PRIVATE_BundleConverterImpl(this.serializer);
|
|
15788
15788
|
for (const r of e) if (r.metadata.queries) {
|
|
15789
|
-
const e = n.
|
|
15789
|
+
const e = n.ds(r.metadata.name);
|
|
15790
15790
|
for (const n of r.metadata.queries) {
|
|
15791
15791
|
const r = (t.get(n) || __PRIVATE_documentKeySet()).add(e);
|
|
15792
15792
|
t.set(n, r);
|
|
@@ -15860,7 +15860,7 @@ class __PRIVATE_RemovedLimboDocument {
|
|
|
15860
15860
|
constructor(e,
|
|
15861
15861
|
/** Documents included in the remote target */
|
|
15862
15862
|
t) {
|
|
15863
|
-
this.query = e, this.Ta = t, this.
|
|
15863
|
+
this.query = e, this.Ta = t, this.da = null, this.hasCachedResults = !1,
|
|
15864
15864
|
/**
|
|
15865
15865
|
* A flag whether the view is current with the backend. A view is considered
|
|
15866
15866
|
* current after it has seen the current flag from the backend and did not
|
|
@@ -15869,7 +15869,7 @@ class __PRIVATE_RemovedLimboDocument {
|
|
|
15869
15869
|
*/
|
|
15870
15870
|
this.current = !1,
|
|
15871
15871
|
/** Documents in the view but not in the remote target */
|
|
15872
|
-
this.
|
|
15872
|
+
this.Ea = __PRIVATE_documentKeySet(),
|
|
15873
15873
|
/** Document Keys that have local changes */
|
|
15874
15874
|
this.mutatedKeys = __PRIVATE_documentKeySet(), this.Aa = __PRIVATE_newQueryComparator(e),
|
|
15875
15875
|
this.Ra = new DocumentSet(this.Aa);
|
|
@@ -16014,10 +16014,10 @@ class __PRIVATE_RemovedLimboDocument {
|
|
|
16014
16014
|
* See the License for the specific language governing permissions and
|
|
16015
16015
|
* limitations under the License.
|
|
16016
16016
|
*/ (e.type, t.type) || this.Aa(e.doc, t.doc))), this.pa(n), r = null != r && r;
|
|
16017
|
-
const o = t && !r ? this.ya() : [], _ = 0 === this.
|
|
16017
|
+
const o = t && !r ? this.ya() : [], _ = 0 === this.Ea.size && this.current && !r ? 1 /* SyncState.Synced */ : 0 /* SyncState.Local */ , a = _ !== this.da;
|
|
16018
16018
|
// We are at synced state if there is no limbo docs are waiting to be resolved, view is current
|
|
16019
16019
|
// with the backend, and the query is not pending to reset due to existence filter mismatch.
|
|
16020
|
-
if (this.
|
|
16020
|
+
if (this.da = _, 0 !== s.length || a) {
|
|
16021
16021
|
return {
|
|
16022
16022
|
snapshot: new ViewSnapshot(this.query, e.Ra, i, s, e.mutatedKeys, 0 /* SyncState.Local */ === _, a,
|
|
16023
16023
|
/* excludesMetadataChanges= */ !1, !!n && n.resumeToken.approximateByteSize() > 0),
|
|
@@ -16050,7 +16050,7 @@ class __PRIVATE_RemovedLimboDocument {
|
|
|
16050
16050
|
}
|
|
16051
16051
|
/**
|
|
16052
16052
|
* Returns whether the doc for the given key should be in limbo.
|
|
16053
|
-
*/
|
|
16053
|
+
*/ ba(e) {
|
|
16054
16054
|
// If the remote end says it's part of this query, it's not in limbo.
|
|
16055
16055
|
return !this.Ta.has(e) && (
|
|
16056
16056
|
// The local store doesn't think it's a result, so it shouldn't be in limbo.
|
|
@@ -16068,15 +16068,15 @@ class __PRIVATE_RemovedLimboDocument {
|
|
|
16068
16068
|
if (!this.current) return [];
|
|
16069
16069
|
// TODO(klimt): Do this incrementally so that it's not quadratic when
|
|
16070
16070
|
// updating many documents.
|
|
16071
|
-
const e = this.
|
|
16072
|
-
this.
|
|
16073
|
-
this.
|
|
16071
|
+
const e = this.Ea;
|
|
16072
|
+
this.Ea = __PRIVATE_documentKeySet(), this.Ra.forEach((e => {
|
|
16073
|
+
this.ba(e.key) && (this.Ea = this.Ea.add(e.key));
|
|
16074
16074
|
}));
|
|
16075
16075
|
// Diff the new limbo docs with the old limbo docs.
|
|
16076
16076
|
const t = [];
|
|
16077
16077
|
return e.forEach((e => {
|
|
16078
|
-
this.
|
|
16079
|
-
})), this.
|
|
16078
|
+
this.Ea.has(e) || t.push(new __PRIVATE_RemovedLimboDocument(e));
|
|
16079
|
+
})), this.Ea.forEach((n => {
|
|
16080
16080
|
e.has(n) || t.push(new __PRIVATE_AddedLimboDocument(n));
|
|
16081
16081
|
})), t;
|
|
16082
16082
|
}
|
|
@@ -16100,8 +16100,8 @@ class __PRIVATE_RemovedLimboDocument {
|
|
|
16100
16100
|
* @returns The ViewChange that resulted from this synchronization.
|
|
16101
16101
|
*/
|
|
16102
16102
|
// PORTING NOTE: Multi-tab only.
|
|
16103
|
-
|
|
16104
|
-
this.Ta = e.Ts, this.
|
|
16103
|
+
Sa(e) {
|
|
16104
|
+
this.Ta = e.Ts, this.Ea = __PRIVATE_documentKeySet();
|
|
16105
16105
|
const t = this.ma(e.documents);
|
|
16106
16106
|
return this.applyChanges(t, /* limboResolutionEnabled= */ !0);
|
|
16107
16107
|
}
|
|
@@ -16112,7 +16112,7 @@ class __PRIVATE_RemovedLimboDocument {
|
|
|
16112
16112
|
*/
|
|
16113
16113
|
// PORTING NOTE: Multi-tab only.
|
|
16114
16114
|
Da() {
|
|
16115
|
-
return ViewSnapshot.fromInitialDocuments(this.query, this.Ra, this.mutatedKeys, 0 /* SyncState.Local */ === this.
|
|
16115
|
+
return ViewSnapshot.fromInitialDocuments(this.query, this.Ra, this.mutatedKeys, 0 /* SyncState.Local */ === this.da, this.hasCachedResults);
|
|
16116
16116
|
}
|
|
16117
16117
|
}
|
|
16118
16118
|
|
|
@@ -16413,7 +16413,7 @@ async function __PRIVATE_allocateTargetAndMaybeListen(e, t, n, r) {
|
|
|
16413
16413
|
// Run global snapshot listeners if a consistent snapshot has been emitted.
|
|
16414
16414
|
e.Z_(t) && (r = !0);
|
|
16415
16415
|
})), r && __PRIVATE_raiseSnapshotsInSyncEvent(n);
|
|
16416
|
-
}(r.eventManager, t), e.length && r.Ca.
|
|
16416
|
+
}(r.eventManager, t), e.length && r.Ca.E_(e), r.onlineState = t, r.isPrimaryClient && r.sharedClientState.setOnlineState(t);
|
|
16417
16417
|
}
|
|
16418
16418
|
}
|
|
16419
16419
|
|
|
@@ -16617,7 +16617,7 @@ async function __PRIVATE_syncEngineEmitNewSnapsAndNotifyLocalStore(e, t, n) {
|
|
|
16617
16617
|
s.push(t);
|
|
16618
16618
|
}
|
|
16619
16619
|
})));
|
|
16620
|
-
})), await Promise.all(o), r.Ca.
|
|
16620
|
+
})), await Promise.all(o), r.Ca.E_(i), await async function __PRIVATE_localStoreNotifyLocalViewChanges(e, t) {
|
|
16621
16621
|
const n = __PRIVATE_debugCast(e);
|
|
16622
16622
|
try {
|
|
16623
16623
|
await n.persistence.runTransaction("notifyLocalViewChanges", "readwrite", (e => PersistencePromise.forEach(t, (t => PersistencePromise.forEach(t.$i, (r => n.persistence.referenceDelegate.addReference(e, t.targetId, r))).next((() => PersistencePromise.forEach(t.Ui, (r => n.persistence.referenceDelegate.removeReference(e, t.targetId, r)))))))));
|
|
@@ -16679,7 +16679,7 @@ function __PRIVATE_syncEngineGetRemoteKeysForTarget(e, t) {
|
|
|
16679
16679
|
* from persistence.
|
|
16680
16680
|
*/ async function __PRIVATE_synchronizeViewAndComputeSnapshot(e, t) {
|
|
16681
16681
|
const n = __PRIVATE_debugCast(e), r = await __PRIVATE_localStoreExecuteQuery(n.localStore, t.query,
|
|
16682
|
-
/* usePreviousResults= */ !0), i = t.view.
|
|
16682
|
+
/* usePreviousResults= */ !0), i = t.view.Sa(r);
|
|
16683
16683
|
return n.isPrimaryClient && __PRIVATE_updateTrackedLimbos(n, t.targetId, i.wa),
|
|
16684
16684
|
i;
|
|
16685
16685
|
}
|
|
@@ -16795,7 +16795,7 @@ async function __PRIVATE_synchronizeQueryViewsAndRaiseSnapshots(e, t, n) {
|
|
|
16795
16795
|
}
|
|
16796
16796
|
i.push(t);
|
|
16797
16797
|
}
|
|
16798
|
-
return r.Ca.
|
|
16798
|
+
return r.Ca.E_(s), i;
|
|
16799
16799
|
}
|
|
16800
16800
|
|
|
16801
16801
|
/**
|
|
@@ -16878,7 +16878,7 @@ function __PRIVATE_ensureWatchCallbacks(e) {
|
|
|
16878
16878
|
return t.remoteStore.remoteSyncer.applyRemoteEvent = __PRIVATE_syncEngineApplyRemoteEvent.bind(null, t),
|
|
16879
16879
|
t.remoteStore.remoteSyncer.getRemoteKeysForTarget = __PRIVATE_syncEngineGetRemoteKeysForTarget.bind(null, t),
|
|
16880
16880
|
t.remoteStore.remoteSyncer.rejectListen = __PRIVATE_syncEngineRejectListen.bind(null, t),
|
|
16881
|
-
t.Ca.
|
|
16881
|
+
t.Ca.E_ = __PRIVATE_eventManagerOnWatchChange.bind(null, t.eventManager), t.Ca.$a = __PRIVATE_eventManagerOnWatchError.bind(null, t.eventManager),
|
|
16882
16882
|
t;
|
|
16883
16883
|
}
|
|
16884
16884
|
|
|
@@ -18583,10 +18583,10 @@ function doc(e, t, ...n) {
|
|
|
18583
18583
|
// automatically removed after they are run or canceled.
|
|
18584
18584
|
this.Tu = [],
|
|
18585
18585
|
// visible for testing
|
|
18586
|
-
this.
|
|
18586
|
+
this.du = null,
|
|
18587
18587
|
// Flag set while there's an outstanding AsyncQueue operation, used for
|
|
18588
18588
|
// assertion sanity-checks.
|
|
18589
|
-
this.
|
|
18589
|
+
this.Eu = !1,
|
|
18590
18590
|
// Enabled during shutdown on Safari to prevent future access to IndexedDB.
|
|
18591
18591
|
this.Au = !1,
|
|
18592
18592
|
// List of TimerIds to fast-forward delays for.
|
|
@@ -18667,8 +18667,8 @@ function doc(e, t, ...n) {
|
|
|
18667
18667
|
}
|
|
18668
18668
|
}
|
|
18669
18669
|
gu(e) {
|
|
18670
|
-
const t = this.mu.then((() => (this.
|
|
18671
|
-
this.
|
|
18670
|
+
const t = this.mu.then((() => (this.Eu = !0, e().catch((e => {
|
|
18671
|
+
this.du = e, this.Eu = !1;
|
|
18672
18672
|
const t =
|
|
18673
18673
|
/**
|
|
18674
18674
|
* Chrome includes Error.message in Error.stack. Other browsers do not.
|
|
@@ -18700,7 +18700,7 @@ function doc(e, t, ...n) {
|
|
|
18700
18700
|
// all further attempts to chain (via .then) will just short-circuit
|
|
18701
18701
|
// and return the rejected Promise.
|
|
18702
18702
|
throw __PRIVATE_logError("INTERNAL UNHANDLED ERROR: ", t), e;
|
|
18703
|
-
})).then((e => (this.
|
|
18703
|
+
})).then((e => (this.Eu = !1, e))))));
|
|
18704
18704
|
return this.mu = t, t;
|
|
18705
18705
|
}
|
|
18706
18706
|
enqueueAfterDelay(e, t, n) {
|
|
@@ -18711,7 +18711,7 @@ function doc(e, t, ...n) {
|
|
|
18711
18711
|
return this.Tu.push(r), r;
|
|
18712
18712
|
}
|
|
18713
18713
|
fu() {
|
|
18714
|
-
this.
|
|
18714
|
+
this.du && fail();
|
|
18715
18715
|
}
|
|
18716
18716
|
verifyOperationInProgress() {}
|
|
18717
18717
|
/**
|
|
@@ -18730,7 +18730,7 @@ function doc(e, t, ...n) {
|
|
|
18730
18730
|
/**
|
|
18731
18731
|
* For Tests: Determine if a delayed operation with a particular TimerId
|
|
18732
18732
|
* exists.
|
|
18733
|
-
*/
|
|
18733
|
+
*/ bu(e) {
|
|
18734
18734
|
for (const t of this.Tu) if (t.timerId === e) return !0;
|
|
18735
18735
|
return !1;
|
|
18736
18736
|
}
|
|
@@ -18740,7 +18740,7 @@ function doc(e, t, ...n) {
|
|
|
18740
18740
|
* @param lastTimerId - Delayed operations up to and including this TimerId
|
|
18741
18741
|
* will be drained. Pass TimerId.All to run all delayed operations.
|
|
18742
18742
|
* @returns a Promise that resolves once all operations have been run.
|
|
18743
|
-
*/
|
|
18743
|
+
*/ Su(e) {
|
|
18744
18744
|
// Note that draining may generate more delayed ops, so we do that first.
|
|
18745
18745
|
return this.wu().then((() => {
|
|
18746
18746
|
// Run ops in the same order they'd run if they ran naturally.
|
|
@@ -18886,7 +18886,7 @@ class LoadBundleTask {
|
|
|
18886
18886
|
* Constant used to indicate the LRU garbage collection should be disabled.
|
|
18887
18887
|
* Set this value as the `cacheSizeBytes` on the settings passed to the
|
|
18888
18888
|
* {@link Firestore} instance.
|
|
18889
|
-
*/ const
|
|
18889
|
+
*/ const be = -1;
|
|
18890
18890
|
|
|
18891
18891
|
/**
|
|
18892
18892
|
* The Cloud Firestore service interface.
|
|
@@ -19546,7 +19546,7 @@ class AggregateField {
|
|
|
19546
19546
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19547
19547
|
* See the License for the specific language governing permissions and
|
|
19548
19548
|
* limitations under the License.
|
|
19549
|
-
*/ const
|
|
19549
|
+
*/ const Se = /^__.*__$/;
|
|
19550
19550
|
|
|
19551
19551
|
/** The result of parsing document data (e.g. for a setData call). */ class ParsedSetData {
|
|
19552
19552
|
constructor(e, t, n) {
|
|
@@ -19657,7 +19657,7 @@ function __PRIVATE_isWrite(e) {
|
|
|
19657
19657
|
}
|
|
19658
19658
|
Ou(e) {
|
|
19659
19659
|
if (0 === e.length) throw this.Bu("Document fields must not be empty");
|
|
19660
|
-
if (__PRIVATE_isWrite(this.Cu) &&
|
|
19660
|
+
if (__PRIVATE_isWrite(this.Cu) && Se.test(e)) throw this.Bu('Document fields cannot begin and end with "__"');
|
|
19661
19661
|
}
|
|
19662
19662
|
}
|
|
19663
19663
|
|
|
@@ -22212,7 +22212,7 @@ let Fe = null;
|
|
|
22212
22212
|
* @packageDocumentation
|
|
22213
22213
|
*/ !function __PRIVATE_registerFirestore(e, t = !0) {
|
|
22214
22214
|
!function __PRIVATE_setSDKVersion(e) {
|
|
22215
|
-
|
|
22215
|
+
b = e;
|
|
22216
22216
|
}(SDK_VERSION), _registerComponent(new Component("firestore", ((e, {instanceIdentifier: n, options: r}) => {
|
|
22217
22217
|
const i = e.getProvider("app").getImmediate(), s = new Firestore(new __PRIVATE_FirebaseAuthCredentialsProvider(e.getProvider("auth-internal")), new __PRIVATE_FirebaseAppCheckTokenProvider(e.getProvider("app-check-internal")), function __PRIVATE_databaseIdFromApp(e, t) {
|
|
22218
22218
|
if (!Object.prototype.hasOwnProperty.apply(e.options, [ "projectId" ])) throw new FirestoreError(D.INVALID_ARGUMENT, '"projectId" not provided in firebase.initializeApp.');
|
|
@@ -22221,10 +22221,10 @@ let Fe = null;
|
|
|
22221
22221
|
return r = Object.assign({
|
|
22222
22222
|
useFetchStreams: t
|
|
22223
22223
|
}, r), s._setSettings(r), s;
|
|
22224
|
-
}), "PUBLIC").setMultipleInstances(!0)), registerVersion(w, "4.7.4-canary.
|
|
22224
|
+
}), "PUBLIC").setMultipleInstances(!0)), registerVersion(w, "4.7.4-canary.4db3d3e7b", e),
|
|
22225
22225
|
// BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation
|
|
22226
|
-
registerVersion(w, "4.7.4-canary.
|
|
22226
|
+
registerVersion(w, "4.7.4-canary.4db3d3e7b", "esm2017");
|
|
22227
22227
|
}();
|
|
22228
22228
|
|
|
22229
|
-
export { AbstractUserDataWriter, AggregateField, AggregateQuerySnapshot, Bytes,
|
|
22229
|
+
export { AbstractUserDataWriter, AggregateField, AggregateQuerySnapshot, Bytes, be as CACHE_SIZE_UNLIMITED, CollectionReference, DocumentReference, DocumentSnapshot, FieldPath, FieldValue, Firestore, FirestoreError, GeoPoint, LoadBundleTask, PersistentCacheIndexManager, Query, QueryCompositeFilterConstraint, QueryConstraint, QueryDocumentSnapshot, QueryEndAtConstraint, QueryFieldFilterConstraint, QueryLimitConstraint, QueryOrderByConstraint, QuerySnapshot, QueryStartAtConstraint, SnapshotMetadata, Timestamp, Transaction, VectorValue, WriteBatch, __PRIVATE_AutoId as _AutoId, ByteString as _ByteString, DatabaseId as _DatabaseId, DocumentKey as _DocumentKey, __PRIVATE_EmptyAppCheckTokenProvider as _EmptyAppCheckTokenProvider, __PRIVATE_EmptyAuthCredentialsProvider as _EmptyAuthCredentialsProvider, FieldPath$1 as _FieldPath, TestingHooks as _TestingHooks, __PRIVATE_cast as _cast, __PRIVATE_debugAssert as _debugAssert, _internalAggregationQueryToProtoRunAggregationQueryRequest, _internalQueryToProtoQueryTarget, __PRIVATE_isBase64Available as _isBase64Available, __PRIVATE_logWarn as _logWarn, __PRIVATE_validateIsNotUsedTogether as _validateIsNotUsedTogether, addDoc, aggregateFieldEqual, aggregateQuerySnapshotEqual, and, arrayRemove, arrayUnion, average, clearIndexedDbPersistence, collection, collectionGroup, connectFirestoreEmulator, count, deleteAllPersistentCacheIndexes, deleteDoc, deleteField, disableNetwork, disablePersistentCacheIndexAutoCreation, doc, documentId, enableIndexedDbPersistence, enableMultiTabIndexedDbPersistence, enableNetwork, enablePersistentCacheIndexAutoCreation, endAt, endBefore, ensureFirestoreConfigured, executeWrite, getAggregateFromServer, getCountFromServer, getDoc, getDocFromCache, getDocFromServer, getDocs, getDocsFromCache, getDocsFromServer, getFirestore, getPersistentCacheIndexManager, increment, initializeFirestore, limit, limitToLast, loadBundle, memoryEagerGarbageCollector, memoryLocalCache, memoryLruGarbageCollector, namedQuery, onSnapshot, onSnapshotsInSync, or, orderBy, persistentLocalCache, persistentMultipleTabManager, persistentSingleTabManager, query, queryEqual, refEqual, runTransaction, serverTimestamp, setDoc, setIndexConfiguration, setLogLevel, snapshotEqual, startAfter, startAt, sum, terminate, updateDoc, vector, waitForPendingWrites, where, writeBatch };
|
|
22230
22230
|
//# sourceMappingURL=index.esm2017.js.map
|