@firebase/firestore 3.4.5-canary.091e8676f → 3.4.5-canary.2b98b28f2
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.esm2017.js +155 -153
- package/dist/index.esm2017.js.map +1 -1
- package/dist/index.esm5.js +187 -186
- package/dist/index.esm5.js.map +1 -1
- package/dist/index.node.cjs.js +8 -3
- package/dist/index.node.cjs.js.map +1 -1
- package/dist/index.node.mjs +8 -3
- package/dist/index.node.mjs.map +1 -1
- package/dist/index.rn.js +155 -153
- package/dist/index.rn.js.map +1 -1
- package/dist/lite/index.browser.esm2017.js +72 -72
- package/dist/lite/index.browser.esm2017.js.map +1 -1
- package/dist/lite/index.browser.esm5.js +8 -8
- package/dist/lite/index.node.cjs.js +2 -2
- package/dist/lite/index.node.mjs +2 -2
- package/dist/lite/index.node.mjs.map +1 -1
- package/dist/lite/index.rn.esm2017.js +83 -83
- package/dist/lite/packages/firestore/dist/lite/index.browser.esm2017.d.ts +18 -18
- package/dist/packages/firestore/dist/index.esm2017.d.ts +6 -6
- package/package.json +9 -9
package/dist/index.esm2017.js
CHANGED
|
@@ -66,7 +66,7 @@ C.MOCK_USER = new C("mock-user");
|
|
|
66
66
|
* See the License for the specific language governing permissions and
|
|
67
67
|
* limitations under the License.
|
|
68
68
|
*/
|
|
69
|
-
let x = "9.6.7-canary.
|
|
69
|
+
let x = "9.6.7-canary.2b98b28f2";
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
72
|
* @license
|
|
@@ -1425,7 +1425,7 @@ function Pt(t) {
|
|
|
1425
1425
|
|
|
1426
1426
|
/**
|
|
1427
1427
|
* Returns the local time at which this timestamp was first set.
|
|
1428
|
-
*/ function
|
|
1428
|
+
*/ function bt(t) {
|
|
1429
1429
|
const e = Et(t.mapValue.fields.__local_write_time__.timestampValue);
|
|
1430
1430
|
return new ut(e.seconds, e.nanos);
|
|
1431
1431
|
}
|
|
@@ -1445,7 +1445,7 @@ function Pt(t) {
|
|
|
1445
1445
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1446
1446
|
* See the License for the specific language governing permissions and
|
|
1447
1447
|
* limitations under the License.
|
|
1448
|
-
*/ class
|
|
1448
|
+
*/ class Vt {
|
|
1449
1449
|
/**
|
|
1450
1450
|
* Constructs a DatabaseInfo using the provided host, databaseId and
|
|
1451
1451
|
* persistenceKey.
|
|
@@ -1636,7 +1636,7 @@ function Ot(t) {
|
|
|
1636
1636
|
return t.booleanValue === e.booleanValue;
|
|
1637
1637
|
|
|
1638
1638
|
case 4 /* ServerTimestampValue */ :
|
|
1639
|
-
return
|
|
1639
|
+
return bt(t).isEqual(bt(e));
|
|
1640
1640
|
|
|
1641
1641
|
case 3 /* TimestampValue */ :
|
|
1642
1642
|
return function(t, e) {
|
|
@@ -1718,7 +1718,7 @@ function Ft(t, e) {
|
|
|
1718
1718
|
return Bt(t.timestampValue, e.timestampValue);
|
|
1719
1719
|
|
|
1720
1720
|
case 4 /* ServerTimestampValue */ :
|
|
1721
|
-
return Bt(
|
|
1721
|
+
return Bt(bt(t), bt(e));
|
|
1722
1722
|
|
|
1723
1723
|
case 5 /* StringValue */ :
|
|
1724
1724
|
return rt(t.stringValue, e.stringValue);
|
|
@@ -2301,7 +2301,7 @@ function le(t, e) {
|
|
|
2301
2301
|
for (let i = 0; i < t.filters.length; i++) if (n = t.filters[i], s = e.filters[i],
|
|
2302
2302
|
n.op !== s.op || !n.field.isEqual(s.field) || !$t(n.value, s.value)) return !1;
|
|
2303
2303
|
var n, s;
|
|
2304
|
-
return t.collectionGroup === e.collectionGroup && (!!t.path.isEqual(e.path) && (!!
|
|
2304
|
+
return t.collectionGroup === e.collectionGroup && (!!t.path.isEqual(e.path) && (!!Ve(t.startAt, e.startAt) && Ve(t.endAt, e.endAt)));
|
|
2305
2305
|
}
|
|
2306
2306
|
|
|
2307
2307
|
function fe(t) {
|
|
@@ -2469,7 +2469,7 @@ function Pe(t, e) {
|
|
|
2469
2469
|
return t.dir === e.dir && t.field.isEqual(e.field);
|
|
2470
2470
|
}
|
|
2471
2471
|
|
|
2472
|
-
function
|
|
2472
|
+
function be(t, e, n) {
|
|
2473
2473
|
let s = 0;
|
|
2474
2474
|
for (let i = 0; i < t.position.length; i++) {
|
|
2475
2475
|
const r = e[i], o = t.position[i];
|
|
@@ -2484,7 +2484,7 @@ function Ve(t, e, n) {
|
|
|
2484
2484
|
/**
|
|
2485
2485
|
* Returns true if a document sorts after a bound using the provided sort
|
|
2486
2486
|
* order.
|
|
2487
|
-
*/ function
|
|
2487
|
+
*/ function Ve(t, e) {
|
|
2488
2488
|
if (null === t) return null === e;
|
|
2489
2489
|
if (null === e) return !1;
|
|
2490
2490
|
if (t.inclusive !== e.inclusive || t.position.length !== e.position.length) return !1;
|
|
@@ -2660,11 +2660,11 @@ function Ue(t) {
|
|
|
2660
2660
|
* order.
|
|
2661
2661
|
*/
|
|
2662
2662
|
function(t, e, n) {
|
|
2663
|
-
const s =
|
|
2663
|
+
const s = be(t, e, n);
|
|
2664
2664
|
return t.inclusive ? s <= 0 : s < 0;
|
|
2665
2665
|
}(t.startAt, $e(t), e)) return !1;
|
|
2666
2666
|
if (t.endAt && !function(t, e, n) {
|
|
2667
|
-
const s =
|
|
2667
|
+
const s = be(t, e, n);
|
|
2668
2668
|
return t.inclusive ? s >= 0 : s > 0;
|
|
2669
2669
|
}(t.endAt, $e(t), e)) return !1;
|
|
2670
2670
|
return !0;
|
|
@@ -3300,7 +3300,7 @@ class Rn extends fn {
|
|
|
3300
3300
|
* Important! The names of these identifiers matter because the string forms
|
|
3301
3301
|
* are used for reverse lookups from the webchannel stream. Do NOT change the
|
|
3302
3302
|
* names of these identifiers or change this into a const enum.
|
|
3303
|
-
*/ var
|
|
3303
|
+
*/ var bn, Vn;
|
|
3304
3304
|
|
|
3305
3305
|
/**
|
|
3306
3306
|
* Determines whether an error code represents a permanent error when received
|
|
@@ -3365,55 +3365,55 @@ function Sn(t) {
|
|
|
3365
3365
|
// to send invalid proto messages) we may get an error with no GRPC code.
|
|
3366
3366
|
return M("GRPC error has no .code"), G.UNKNOWN;
|
|
3367
3367
|
switch (t) {
|
|
3368
|
-
case
|
|
3368
|
+
case bn.OK:
|
|
3369
3369
|
return G.OK;
|
|
3370
3370
|
|
|
3371
|
-
case
|
|
3371
|
+
case bn.CANCELLED:
|
|
3372
3372
|
return G.CANCELLED;
|
|
3373
3373
|
|
|
3374
|
-
case
|
|
3374
|
+
case bn.UNKNOWN:
|
|
3375
3375
|
return G.UNKNOWN;
|
|
3376
3376
|
|
|
3377
|
-
case
|
|
3377
|
+
case bn.DEADLINE_EXCEEDED:
|
|
3378
3378
|
return G.DEADLINE_EXCEEDED;
|
|
3379
3379
|
|
|
3380
|
-
case
|
|
3380
|
+
case bn.RESOURCE_EXHAUSTED:
|
|
3381
3381
|
return G.RESOURCE_EXHAUSTED;
|
|
3382
3382
|
|
|
3383
|
-
case
|
|
3383
|
+
case bn.INTERNAL:
|
|
3384
3384
|
return G.INTERNAL;
|
|
3385
3385
|
|
|
3386
|
-
case
|
|
3386
|
+
case bn.UNAVAILABLE:
|
|
3387
3387
|
return G.UNAVAILABLE;
|
|
3388
3388
|
|
|
3389
|
-
case
|
|
3389
|
+
case bn.UNAUTHENTICATED:
|
|
3390
3390
|
return G.UNAUTHENTICATED;
|
|
3391
3391
|
|
|
3392
|
-
case
|
|
3392
|
+
case bn.INVALID_ARGUMENT:
|
|
3393
3393
|
return G.INVALID_ARGUMENT;
|
|
3394
3394
|
|
|
3395
|
-
case
|
|
3395
|
+
case bn.NOT_FOUND:
|
|
3396
3396
|
return G.NOT_FOUND;
|
|
3397
3397
|
|
|
3398
|
-
case
|
|
3398
|
+
case bn.ALREADY_EXISTS:
|
|
3399
3399
|
return G.ALREADY_EXISTS;
|
|
3400
3400
|
|
|
3401
|
-
case
|
|
3401
|
+
case bn.PERMISSION_DENIED:
|
|
3402
3402
|
return G.PERMISSION_DENIED;
|
|
3403
3403
|
|
|
3404
|
-
case
|
|
3404
|
+
case bn.FAILED_PRECONDITION:
|
|
3405
3405
|
return G.FAILED_PRECONDITION;
|
|
3406
3406
|
|
|
3407
|
-
case
|
|
3407
|
+
case bn.ABORTED:
|
|
3408
3408
|
return G.ABORTED;
|
|
3409
3409
|
|
|
3410
|
-
case
|
|
3410
|
+
case bn.OUT_OF_RANGE:
|
|
3411
3411
|
return G.OUT_OF_RANGE;
|
|
3412
3412
|
|
|
3413
|
-
case
|
|
3413
|
+
case bn.UNIMPLEMENTED:
|
|
3414
3414
|
return G.UNIMPLEMENTED;
|
|
3415
3415
|
|
|
3416
|
-
case
|
|
3416
|
+
case bn.DATA_LOSS:
|
|
3417
3417
|
return G.DATA_LOSS;
|
|
3418
3418
|
|
|
3419
3419
|
default:
|
|
@@ -3428,14 +3428,14 @@ function Sn(t) {
|
|
|
3428
3428
|
* "UNKNOWN", etc.)
|
|
3429
3429
|
* @returns The equivalent Code. Non-matching responses are mapped to
|
|
3430
3430
|
* Code.UNKNOWN.
|
|
3431
|
-
*/ (
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3431
|
+
*/ (Vn = bn || (bn = {}))[Vn.OK = 0] = "OK", Vn[Vn.CANCELLED = 1] = "CANCELLED",
|
|
3432
|
+
Vn[Vn.UNKNOWN = 2] = "UNKNOWN", Vn[Vn.INVALID_ARGUMENT = 3] = "INVALID_ARGUMENT",
|
|
3433
|
+
Vn[Vn.DEADLINE_EXCEEDED = 4] = "DEADLINE_EXCEEDED", Vn[Vn.NOT_FOUND = 5] = "NOT_FOUND",
|
|
3434
|
+
Vn[Vn.ALREADY_EXISTS = 6] = "ALREADY_EXISTS", Vn[Vn.PERMISSION_DENIED = 7] = "PERMISSION_DENIED",
|
|
3435
|
+
Vn[Vn.UNAUTHENTICATED = 16] = "UNAUTHENTICATED", Vn[Vn.RESOURCE_EXHAUSTED = 8] = "RESOURCE_EXHAUSTED",
|
|
3436
|
+
Vn[Vn.FAILED_PRECONDITION = 9] = "FAILED_PRECONDITION", Vn[Vn.ABORTED = 10] = "ABORTED",
|
|
3437
|
+
Vn[Vn.OUT_OF_RANGE = 11] = "OUT_OF_RANGE", Vn[Vn.UNIMPLEMENTED = 12] = "UNIMPLEMENTED",
|
|
3438
|
+
Vn[Vn.INTERNAL = 13] = "INTERNAL", Vn[Vn.UNAVAILABLE = 14] = "UNAVAILABLE", Vn[Vn.DATA_LOSS = 15] = "DATA_LOSS";
|
|
3439
3439
|
|
|
3440
3440
|
/**
|
|
3441
3441
|
* @license
|
|
@@ -4862,7 +4862,7 @@ function As(t, e) {
|
|
|
4862
4862
|
function(t) {
|
|
4863
4863
|
return {
|
|
4864
4864
|
field: Ss(t.field),
|
|
4865
|
-
direction:
|
|
4865
|
+
direction: Vs(t.dir)
|
|
4866
4866
|
};
|
|
4867
4867
|
}(t)));
|
|
4868
4868
|
}(e.orderBy);
|
|
@@ -4897,7 +4897,7 @@ function Rs(t) {
|
|
|
4897
4897
|
t.allDescendants ? i = t.collectionId : e = e.child(t.collectionId);
|
|
4898
4898
|
}
|
|
4899
4899
|
let r = [];
|
|
4900
|
-
n.where && (r =
|
|
4900
|
+
n.where && (r = bs(n.where));
|
|
4901
4901
|
let o = [];
|
|
4902
4902
|
n.orderBy && (o = n.orderBy.map((t => function(t) {
|
|
4903
4903
|
return new Re(Ds(t.field),
|
|
@@ -4957,11 +4957,11 @@ function Ps(t, e) {
|
|
|
4957
4957
|
};
|
|
4958
4958
|
}
|
|
4959
4959
|
|
|
4960
|
-
function
|
|
4961
|
-
return t ? void 0 !== t.unaryFilter ? [ xs(t) ] : void 0 !== t.fieldFilter ? [ Cs(t) ] : void 0 !== t.compositeFilter ? t.compositeFilter.filters.map((t =>
|
|
4960
|
+
function bs(t) {
|
|
4961
|
+
return t ? void 0 !== t.unaryFilter ? [ xs(t) ] : void 0 !== t.fieldFilter ? [ Cs(t) ] : void 0 !== t.compositeFilter ? t.compositeFilter.filters.map((t => bs(t))).reduce(((t, e) => t.concat(e))) : L() : [];
|
|
4962
4962
|
}
|
|
4963
4963
|
|
|
4964
|
-
function
|
|
4964
|
+
function Vs(t) {
|
|
4965
4965
|
return ts[t];
|
|
4966
4966
|
}
|
|
4967
4967
|
|
|
@@ -6078,12 +6078,12 @@ class li {
|
|
|
6078
6078
|
* objectstores.
|
|
6079
6079
|
*/
|
|
6080
6080
|
constructor(t, e, n) {
|
|
6081
|
-
this.name = t, this.version = e, this.
|
|
6081
|
+
this.name = t, this.version = e, this.bt = n;
|
|
6082
6082
|
// NOTE: According to https://bugs.webkit.org/show_bug.cgi?id=197050, the
|
|
6083
6083
|
// bug we're checking for should exist in iOS >= 12.2 and < 13, but for
|
|
6084
6084
|
// whatever reason it's much harder to hit after 12.2 so we only proactively
|
|
6085
6085
|
// log on 12.2.
|
|
6086
|
-
12.2 === fi.
|
|
6086
|
+
12.2 === fi.Vt(getUA()) && M("Firestore persistence suffers from a bug in iOS 12.2 Safari that may cause your app to stop working. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.");
|
|
6087
6087
|
}
|
|
6088
6088
|
/** Deletes the specified database. */ static delete(t) {
|
|
6089
6089
|
return $("SimpleDb", "Removing database:", t), gi(window.indexedDB.deleteDatabase(t)).toPromise();
|
|
@@ -6098,7 +6098,7 @@ class li {
|
|
|
6098
6098
|
// For tracking support of this feature, see here:
|
|
6099
6099
|
// https://developer.microsoft.com/en-us/microsoft-edge/platform/status/indexeddbarraysandmultientrysupport/
|
|
6100
6100
|
// Check the UA string to find out the browser.
|
|
6101
|
-
const t = getUA(), e = fi.
|
|
6101
|
+
const t = getUA(), e = fi.Vt(t), n = 0 < e && e < 10, s = fi.Dt(t), i = 0 < s && s < 4.5;
|
|
6102
6102
|
// IE 10
|
|
6103
6103
|
// ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
|
|
6104
6104
|
// IE 11
|
|
@@ -6121,7 +6121,7 @@ class li {
|
|
|
6121
6121
|
}
|
|
6122
6122
|
// visible for testing
|
|
6123
6123
|
/** Parse User Agent to determine iOS version. Returns -1 if not found. */
|
|
6124
|
-
static
|
|
6124
|
+
static Vt(t) {
|
|
6125
6125
|
const e = t.match(/i(?:phone|pad|pod) os ([\d_]+)/i), n = e ? e[1].split("_").slice(0, 2).join(".") : "-1";
|
|
6126
6126
|
return Number(n);
|
|
6127
6127
|
}
|
|
@@ -6152,7 +6152,7 @@ class li {
|
|
|
6152
6152
|
}, s.onupgradeneeded = t => {
|
|
6153
6153
|
$("SimpleDb", 'Database "' + this.name + '" requires upgrade from version:', t.oldVersion);
|
|
6154
6154
|
const e = t.target.result;
|
|
6155
|
-
this.
|
|
6155
|
+
this.bt.kt(e, s.transaction, t.oldVersion, this.version).next((() => {
|
|
6156
6156
|
$("SimpleDb", "Database upgrade to version " + this.version + " complete");
|
|
6157
6157
|
}));
|
|
6158
6158
|
};
|
|
@@ -6420,7 +6420,7 @@ class li {
|
|
|
6420
6420
|
let yi = !1;
|
|
6421
6421
|
|
|
6422
6422
|
function pi(t) {
|
|
6423
|
-
const e = fi.
|
|
6423
|
+
const e = fi.Vt(getUA());
|
|
6424
6424
|
if (e >= 12.2 && e < 13) {
|
|
6425
6425
|
const e = "An internal error was encountered in the Indexed Database server";
|
|
6426
6426
|
if (t.message.indexOf(e) >= 0) {
|
|
@@ -6686,13 +6686,13 @@ function Ei(t, e) {
|
|
|
6686
6686
|
* See the License for the specific language governing permissions and
|
|
6687
6687
|
* limitations under the License.
|
|
6688
6688
|
*/
|
|
6689
|
-
/** Serializer for values stored in the LocalStore. */ class
|
|
6689
|
+
/** Serializer for values stored in the LocalStore. */ class bi {
|
|
6690
6690
|
constructor(t) {
|
|
6691
6691
|
this.Jt = t;
|
|
6692
6692
|
}
|
|
6693
6693
|
}
|
|
6694
6694
|
|
|
6695
|
-
/** Decodes a remote document from storage locally to a Document. */ function
|
|
6695
|
+
/** Decodes a remote document from storage locally to a Document. */ function Vi(t, e) {
|
|
6696
6696
|
let n;
|
|
6697
6697
|
if (e.document) n = ms(t.Jt, e.document, !!e.hasCommittedMutations); else if (e.noDocument) {
|
|
6698
6698
|
const t = xt.fromSegments(e.noDocument.path), s = xi(e.noDocument.readTime);
|
|
@@ -7183,12 +7183,12 @@ function Qi(t) {
|
|
|
7183
7183
|
* Writes the "infinity" byte sequence that sorts after all other byte
|
|
7184
7184
|
* sequences written in ascending order.
|
|
7185
7185
|
*/ Pe() {
|
|
7186
|
-
this.
|
|
7186
|
+
this.be(255), this.be(255);
|
|
7187
7187
|
}
|
|
7188
7188
|
/**
|
|
7189
7189
|
* Writes the "infinity" byte sequence that sorts before all other byte
|
|
7190
7190
|
* sequences written in descending order.
|
|
7191
|
-
*/
|
|
7191
|
+
*/ Ve() {
|
|
7192
7192
|
this.ve(255), this.ve(255);
|
|
7193
7193
|
}
|
|
7194
7194
|
/**
|
|
@@ -7225,19 +7225,19 @@ function Qi(t) {
|
|
|
7225
7225
|
}
|
|
7226
7226
|
/** Writes a single byte ascending to the buffer. */ _e(t) {
|
|
7227
7227
|
const e = 255 & t;
|
|
7228
|
-
0 === e ? (this.
|
|
7228
|
+
0 === e ? (this.be(0), this.be(255)) : 255 === e ? (this.be(255), this.be(0)) : this.be(e);
|
|
7229
7229
|
}
|
|
7230
7230
|
/** Writes a single byte descending to the buffer. */ ge(t) {
|
|
7231
7231
|
const e = 255 & t;
|
|
7232
7232
|
0 === e ? (this.ve(0), this.ve(255)) : 255 === e ? (this.ve(255), this.ve(0)) : this.ve(t);
|
|
7233
7233
|
}
|
|
7234
7234
|
we() {
|
|
7235
|
-
this.
|
|
7235
|
+
this.be(0), this.be(1);
|
|
7236
7236
|
}
|
|
7237
7237
|
ye() {
|
|
7238
7238
|
this.ve(0), this.ve(1);
|
|
7239
7239
|
}
|
|
7240
|
-
|
|
7240
|
+
be(t) {
|
|
7241
7241
|
this.Ae(1), this.buffer[this.position++] = t;
|
|
7242
7242
|
}
|
|
7243
7243
|
ve(t) {
|
|
@@ -7289,7 +7289,7 @@ class Hi {
|
|
|
7289
7289
|
this.De.Re(t);
|
|
7290
7290
|
}
|
|
7291
7291
|
ee() {
|
|
7292
|
-
this.De.
|
|
7292
|
+
this.De.Ve();
|
|
7293
7293
|
}
|
|
7294
7294
|
}
|
|
7295
7295
|
|
|
@@ -8031,8 +8031,10 @@ class rr {
|
|
|
8031
8031
|
}));
|
|
8032
8032
|
}
|
|
8033
8033
|
getNextCollectionGroupToUpdate(t) {
|
|
8034
|
-
return this.getFieldIndexes(t).next((t => 0 === t.length ? null : (t.sort(((t, e) =>
|
|
8035
|
-
|
|
8034
|
+
return this.getFieldIndexes(t).next((t => 0 === t.length ? null : (t.sort(((t, e) => {
|
|
8035
|
+
const n = t.indexState.sequenceNumber - e.indexState.sequenceNumber;
|
|
8036
|
+
return 0 !== n ? n : rt(t.collectionGroup, e.collectionGroup);
|
|
8037
|
+
})), t[0].collectionGroup)));
|
|
8036
8038
|
}
|
|
8037
8039
|
updateCollectionGroup(t, e, n) {
|
|
8038
8040
|
const s = ur(t), i = ar(t);
|
|
@@ -8859,7 +8861,7 @@ class pr {
|
|
|
8859
8861
|
* Used to calculate the nth sequence number. Keeps a rolling buffer of the
|
|
8860
8862
|
* lowest n values passed to `addElement`, and finally reports the largest of
|
|
8861
8863
|
* them in `maxValue`.
|
|
8862
|
-
*/ class
|
|
8864
|
+
*/ class br {
|
|
8863
8865
|
constructor(t) {
|
|
8864
8866
|
this.Tn = t, this.buffer = new Nn(Pr), this.An = 0;
|
|
8865
8867
|
}
|
|
@@ -8887,23 +8889,23 @@ class pr {
|
|
|
8887
8889
|
/**
|
|
8888
8890
|
* This class is responsible for the scheduling of LRU garbage collection. It handles checking
|
|
8889
8891
|
* whether or not GC is enabled, as well as which delay to use before the next run.
|
|
8890
|
-
*/ class
|
|
8892
|
+
*/ class Vr {
|
|
8891
8893
|
constructor(t, e) {
|
|
8892
|
-
this.garbageCollector = t, this.asyncQueue = e, this.
|
|
8894
|
+
this.garbageCollector = t, this.asyncQueue = e, this.bn = !1, this.Vn = null;
|
|
8893
8895
|
}
|
|
8894
8896
|
start(t) {
|
|
8895
8897
|
-1 !== this.garbageCollector.params.cacheSizeCollectionThreshold && this.vn(t);
|
|
8896
8898
|
}
|
|
8897
8899
|
stop() {
|
|
8898
|
-
this.
|
|
8900
|
+
this.Vn && (this.Vn.cancel(), this.Vn = null);
|
|
8899
8901
|
}
|
|
8900
8902
|
get started() {
|
|
8901
|
-
return null !== this.
|
|
8903
|
+
return null !== this.Vn;
|
|
8902
8904
|
}
|
|
8903
8905
|
vn(t) {
|
|
8904
|
-
const e = this.
|
|
8905
|
-
$("LruGarbageCollector", `Garbage collection scheduled in ${e}ms`), this.
|
|
8906
|
-
this.
|
|
8906
|
+
const e = this.bn ? 3e5 : 6e4;
|
|
8907
|
+
$("LruGarbageCollector", `Garbage collection scheduled in ${e}ms`), this.Vn = this.asyncQueue.enqueueAfterDelay("lru_garbage_collection" /* LruGarbageCollection */ , e, (async () => {
|
|
8908
|
+
this.Vn = null, this.bn = !0;
|
|
8907
8909
|
try {
|
|
8908
8910
|
await t.collectGarbage(this.garbageCollector);
|
|
8909
8911
|
} catch (t) {
|
|
@@ -8923,7 +8925,7 @@ class pr {
|
|
|
8923
8925
|
}
|
|
8924
8926
|
nthSequenceNumber(t, e) {
|
|
8925
8927
|
if (0 === e) return hi.resolve(nt.A);
|
|
8926
|
-
const n = new
|
|
8928
|
+
const n = new br(e);
|
|
8927
8929
|
return this.Sn.forEachTarget(t, (t => n.Pn(t.sequenceNumber))).next((() => this.Sn.Cn(t, (t => n.Pn(t))))).next((() => n.maxValue));
|
|
8928
8930
|
}
|
|
8929
8931
|
removeTargets(t, e, n) {
|
|
@@ -9331,7 +9333,7 @@ function Dr(t, e) {
|
|
|
9331
9333
|
* the document corresponds to the format used for sentinel deletes).
|
|
9332
9334
|
*/ Mn(t, e) {
|
|
9333
9335
|
if (e) {
|
|
9334
|
-
const t =
|
|
9336
|
+
const t = Vi(this.O, e);
|
|
9335
9337
|
// Whether the document is a sentinel removal and should only be used in the
|
|
9336
9338
|
// `getNewDocumentChanges()`
|
|
9337
9339
|
if (!(t.isNoDocument() && t.version.isEqual(at.min()))) return t;
|
|
@@ -9746,7 +9748,7 @@ class Lr {
|
|
|
9746
9748
|
this.ss = Number.NEGATIVE_INFINITY,
|
|
9747
9749
|
/** A listener to notify on primary state changes. */
|
|
9748
9750
|
this.rs = t => Promise.resolve(), !Lr.vt()) throw new j(G.UNIMPLEMENTED, "This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.");
|
|
9749
|
-
this.referenceDelegate = new Sr(this, s), this.os = e + "main", this.O = new
|
|
9751
|
+
this.referenceDelegate = new Sr(this, s), this.os = e + "main", this.O = new bi(c),
|
|
9750
9752
|
this.cs = new fi(this.os, this.schemaVersion, new Mr(this.O)), this.us = new Ir(this.referenceDelegate, this.O),
|
|
9751
9753
|
this.hs = function(t) {
|
|
9752
9754
|
return new xr(t);
|
|
@@ -9847,12 +9849,12 @@ class Lr {
|
|
|
9847
9849
|
* RemoteDocumentChanges and the ClientMetadata store based on the last update
|
|
9848
9850
|
* time of all clients.
|
|
9849
9851
|
*/ async Ps() {
|
|
9850
|
-
if (this.isPrimary && !this.
|
|
9852
|
+
if (this.isPrimary && !this.bs(this.ss, 18e5)) {
|
|
9851
9853
|
this.ss = Date.now();
|
|
9852
9854
|
const t = await this.runTransaction("maybeGarbageCollectMultiClientState", "readwrite-primary", (t => {
|
|
9853
9855
|
const e = Ei(t, Xs.store);
|
|
9854
9856
|
return e.qt().next((t => {
|
|
9855
|
-
const n = this.
|
|
9857
|
+
const n = this.Vs(t, 18e5), s = t.filter((t => -1 === n.indexOf(t)));
|
|
9856
9858
|
// Delete metadata for clients that are no longer considered active.
|
|
9857
9859
|
return hi.forEach(s, (t => e.delete(t.clientId))).next((() => s));
|
|
9858
9860
|
}));
|
|
@@ -9892,7 +9894,7 @@ class Lr {
|
|
|
9892
9894
|
// - every clients network is disabled and no other client's tab is in
|
|
9893
9895
|
// the foreground.
|
|
9894
9896
|
// - the `forceOwningTab` setting was passed in.
|
|
9895
|
-
if (null !== e && this.
|
|
9897
|
+
if (null !== e && this.bs(e.leaseTimestampMs, 5e3) && !this.Ss(e.ownerId)) {
|
|
9896
9898
|
if (this.As(e) && this.networkEnabled) return !0;
|
|
9897
9899
|
if (!this.As(e)) {
|
|
9898
9900
|
if (!e.allowTabSynchronization)
|
|
@@ -9911,7 +9913,7 @@ class Lr {
|
|
|
9911
9913
|
return !1;
|
|
9912
9914
|
}
|
|
9913
9915
|
}
|
|
9914
|
-
return !(!this.networkEnabled || !this.inForeground) || qr(t).qt().next((t => void 0 === this.
|
|
9916
|
+
return !(!this.networkEnabled || !this.inForeground) || qr(t).qt().next((t => void 0 === this.Vs(t, 5e3).find((t => {
|
|
9915
9917
|
if (this.clientId !== t.clientId) {
|
|
9916
9918
|
const e = !this.networkEnabled && t.networkEnabled, n = !this.inForeground && t.inForeground, s = this.networkEnabled === t.networkEnabled;
|
|
9917
9919
|
if (e || n && s) return !0;
|
|
@@ -9939,8 +9941,8 @@ class Lr {
|
|
|
9939
9941
|
/**
|
|
9940
9942
|
* Returns clients that are not zombied and have an updateTime within the
|
|
9941
9943
|
* provided threshold.
|
|
9942
|
-
*/
|
|
9943
|
-
return t.filter((t => this.
|
|
9944
|
+
*/ Vs(t, e) {
|
|
9945
|
+
return t.filter((t => this.bs(t.updateTimeMs, e) && !this.Ss(t.clientId)));
|
|
9944
9946
|
}
|
|
9945
9947
|
/**
|
|
9946
9948
|
* Returns the IDs of the clients that are currently active. If multi-tab
|
|
@@ -9949,7 +9951,7 @@ class Lr {
|
|
|
9949
9951
|
*
|
|
9950
9952
|
* PORTING NOTE: This is only used for Web multi-tab.
|
|
9951
9953
|
*/ ks() {
|
|
9952
|
-
return this.runTransaction("getActiveClients", "readonly", (t => qr(t).qt().next((t => this.
|
|
9954
|
+
return this.runTransaction("getActiveClients", "readonly", (t => qr(t).qt().next((t => this.Vs(t, 18e5).map((t => t.clientId))))));
|
|
9953
9955
|
}
|
|
9954
9956
|
get started() {
|
|
9955
9957
|
return this.Zn;
|
|
@@ -9996,7 +9998,7 @@ class Lr {
|
|
|
9996
9998
|
// be turned off.
|
|
9997
9999
|
Os(t) {
|
|
9998
10000
|
return Ur(t).get(Ls.key).next((t => {
|
|
9999
|
-
if (null !== t && this.
|
|
10001
|
+
if (null !== t && this.bs(t.leaseTimestampMs, 5e3) && !this.Ss(t.ownerId) && !this.As(t) && !(this.Yn || this.allowTabSynchronization && t.allowTabSynchronization)) throw new j(G.FAILED_PRECONDITION, Br);
|
|
10000
10002
|
}));
|
|
10001
10003
|
}
|
|
10002
10004
|
/**
|
|
@@ -10014,7 +10016,7 @@ class Lr {
|
|
|
10014
10016
|
return e.get(Ls.key).next((t => this.As(t) ? ($("IndexedDbPersistence", "Releasing primary lease."),
|
|
10015
10017
|
e.delete(Ls.key)) : hi.resolve()));
|
|
10016
10018
|
}
|
|
10017
|
-
/** Verifies that `updateTimeMs` is within `maxAgeMs`. */
|
|
10019
|
+
/** Verifies that `updateTimeMs` is within `maxAgeMs`. */ bs(t, e) {
|
|
10018
10020
|
const n = Date.now();
|
|
10019
10021
|
return !(t < n - e) && (!(t > n) || (M(`Detected an update time that is in the future: ${t} > ${n}`),
|
|
10020
10022
|
!1));
|
|
@@ -10790,7 +10792,7 @@ function oo(t) {
|
|
|
10790
10792
|
}, ((t, e) => {
|
|
10791
10793
|
// Unlike `getEntry()` and others, `getNewDocumentChanges()` parses
|
|
10792
10794
|
// the documents directly since we want to keep sentinel deletes.
|
|
10793
|
-
const n =
|
|
10795
|
+
const n = Vi(s.O, e);
|
|
10794
10796
|
i = i.insert(n.key, n), r = e.readTime;
|
|
10795
10797
|
})).next((() => ({
|
|
10796
10798
|
$s: i,
|
|
@@ -11093,13 +11095,13 @@ async function ao(t, e, n = qn()) {
|
|
|
11093
11095
|
|
|
11094
11096
|
class _o {
|
|
11095
11097
|
constructor(t, e) {
|
|
11096
|
-
this.key = t, this.
|
|
11098
|
+
this.key = t, this.bi = e;
|
|
11097
11099
|
}
|
|
11098
11100
|
/** Compare by key then by ID */ static gi(t, e) {
|
|
11099
|
-
return xt.comparator(t.key, e.key) || rt(t.
|
|
11101
|
+
return xt.comparator(t.key, e.key) || rt(t.bi, e.bi);
|
|
11100
11102
|
}
|
|
11101
11103
|
/** Compare by ID then by key */ static pi(t, e) {
|
|
11102
|
-
return rt(t.
|
|
11104
|
+
return rt(t.bi, e.bi) || xt.comparator(t.key, e.key);
|
|
11103
11105
|
}
|
|
11104
11106
|
}
|
|
11105
11107
|
|
|
@@ -11127,7 +11129,7 @@ class _o {
|
|
|
11127
11129
|
*/
|
|
11128
11130
|
this.Ms = [],
|
|
11129
11131
|
/** Next value to use when assigning sequential IDs to each mutation batch. */
|
|
11130
|
-
this.
|
|
11132
|
+
this.Vi = 1,
|
|
11131
11133
|
/** An ordered mapping between documents and the mutations batch IDs. */
|
|
11132
11134
|
this.vi = new Nn(_o.gi);
|
|
11133
11135
|
}
|
|
@@ -11135,8 +11137,8 @@ class _o {
|
|
|
11135
11137
|
return hi.resolve(0 === this.Ms.length);
|
|
11136
11138
|
}
|
|
11137
11139
|
addMutationBatch(t, e, n, s) {
|
|
11138
|
-
const i = this.
|
|
11139
|
-
this.
|
|
11140
|
+
const i = this.Vi;
|
|
11141
|
+
this.Vi++, this.Ms.length > 0 && this.Ms[this.Ms.length - 1];
|
|
11140
11142
|
const r = new Ti(i, e, n, s);
|
|
11141
11143
|
this.Ms.push(r);
|
|
11142
11144
|
// Track references by document key and index collection parents.
|
|
@@ -11153,7 +11155,7 @@ class _o {
|
|
|
11153
11155
|
return hi.resolve(this.Ms.length > i ? this.Ms[i] : null);
|
|
11154
11156
|
}
|
|
11155
11157
|
getHighestUnacknowledgedBatchId() {
|
|
11156
|
-
return hi.resolve(0 === this.Ms.length ? -1 : this.
|
|
11158
|
+
return hi.resolve(0 === this.Ms.length ? -1 : this.Vi - 1);
|
|
11157
11159
|
}
|
|
11158
11160
|
getAllMutationBatches(t) {
|
|
11159
11161
|
return hi.resolve(this.Ms.slice());
|
|
@@ -11161,7 +11163,7 @@ class _o {
|
|
|
11161
11163
|
getAllMutationBatchesAffectingDocumentKey(t, e) {
|
|
11162
11164
|
const n = new _o(e, 0), s = new _o(e, Number.POSITIVE_INFINITY), i = [];
|
|
11163
11165
|
return this.vi.forEachInRange([ n, s ], (t => {
|
|
11164
|
-
const e = this.Si(t.
|
|
11166
|
+
const e = this.Si(t.bi);
|
|
11165
11167
|
i.push(e);
|
|
11166
11168
|
})), hi.resolve(i);
|
|
11167
11169
|
}
|
|
@@ -11170,7 +11172,7 @@ class _o {
|
|
|
11170
11172
|
return e.forEach((t => {
|
|
11171
11173
|
const e = new _o(t, 0), s = new _o(t, Number.POSITIVE_INFINITY);
|
|
11172
11174
|
this.vi.forEachInRange([ e, s ], (t => {
|
|
11173
|
-
n = n.add(t.
|
|
11175
|
+
n = n.add(t.bi);
|
|
11174
11176
|
}));
|
|
11175
11177
|
})), hi.resolve(this.Ci(n));
|
|
11176
11178
|
}
|
|
@@ -11196,7 +11198,7 @@ class _o {
|
|
|
11196
11198
|
// the document /rooms/abc/messages/xyx.
|
|
11197
11199
|
// TODO(mcg): we'll need a different scanner when we implement
|
|
11198
11200
|
// ancestor queries.
|
|
11199
|
-
e.length === s && (o = o.add(t.
|
|
11201
|
+
e.length === s && (o = o.add(t.bi)), !0);
|
|
11200
11202
|
}), r), hi.resolve(this.Ci(o));
|
|
11201
11203
|
}
|
|
11202
11204
|
Ci(t) {
|
|
@@ -11521,7 +11523,7 @@ class po {
|
|
|
11521
11523
|
this.referenceDelegate = t(this), this.us = new yo(this);
|
|
11522
11524
|
this.indexManager = new nr, this.hs = function(t) {
|
|
11523
11525
|
return new mo(t);
|
|
11524
|
-
}((t => this.referenceDelegate.Li(t))), this.O = new
|
|
11526
|
+
}((t => this.referenceDelegate.Li(t))), this.O = new bi(e), this.ls = new ho(this.O);
|
|
11525
11527
|
}
|
|
11526
11528
|
start() {
|
|
11527
11529
|
return Promise.resolve();
|
|
@@ -11721,7 +11723,7 @@ class Po {
|
|
|
11721
11723
|
* target is 'not-current', 'current' or 'rejected'.
|
|
11722
11724
|
*/
|
|
11723
11725
|
// Visible for testing
|
|
11724
|
-
class
|
|
11726
|
+
class bo {
|
|
11725
11727
|
constructor(t, e, n) {
|
|
11726
11728
|
this.targetId = t, this.state = e, this.error = n;
|
|
11727
11729
|
}
|
|
@@ -11732,7 +11734,7 @@ class Vo {
|
|
|
11732
11734
|
const n = JSON.parse(e);
|
|
11733
11735
|
let s, i = "object" == typeof n && -1 !== [ "not-current", "current", "rejected" ].indexOf(n.state) && (void 0 === n.error || "object" == typeof n.error);
|
|
11734
11736
|
return i && n.error && (i = "string" == typeof n.error.message && "string" == typeof n.error.code,
|
|
11735
|
-
i && (s = new j(n.error.code, n.error.message))), i ? new
|
|
11737
|
+
i && (s = new j(n.error.code, n.error.message))), i ? new bo(t, n.state, s) : (M("SharedClientState", `Failed to parse target state for ID '${t}': ${e}`),
|
|
11736
11738
|
null);
|
|
11737
11739
|
}
|
|
11738
11740
|
Ji() {
|
|
@@ -11750,7 +11752,7 @@ class Vo {
|
|
|
11750
11752
|
/**
|
|
11751
11753
|
* This class represents the immutable ClientState for a client read from
|
|
11752
11754
|
* WebStorage, containing the list of active query targets.
|
|
11753
|
-
*/ class
|
|
11755
|
+
*/ class Vo {
|
|
11754
11756
|
constructor(t, e) {
|
|
11755
11757
|
this.clientId = t, this.activeTargetIds = e;
|
|
11756
11758
|
}
|
|
@@ -11762,7 +11764,7 @@ class Vo {
|
|
|
11762
11764
|
let s = "object" == typeof n && n.activeTargetIds instanceof Array, i = Gn();
|
|
11763
11765
|
for (let t = 0; s && t < n.activeTargetIds.length; ++t) s = Ct(n.activeTargetIds[t]),
|
|
11764
11766
|
i = i.add(n.activeTargetIds[t]);
|
|
11765
|
-
return s ? new
|
|
11767
|
+
return s ? new Vo(t, i) : (M("SharedClientState", `Failed to parse client data for instance '${t}': ${e}`),
|
|
11766
11768
|
null);
|
|
11767
11769
|
}
|
|
11768
11770
|
}
|
|
@@ -11892,7 +11894,7 @@ class So {
|
|
|
11892
11894
|
if (e === this.Zi) continue;
|
|
11893
11895
|
const t = this.getItem(To(this.persistenceKey, e));
|
|
11894
11896
|
if (t) {
|
|
11895
|
-
const n =
|
|
11897
|
+
const n = Vo.Hi(e, t);
|
|
11896
11898
|
n && (this.nr = this.nr.insert(n.clientId, n));
|
|
11897
11899
|
}
|
|
11898
11900
|
}
|
|
@@ -11939,7 +11941,7 @@ class So {
|
|
|
11939
11941
|
if (this.isActiveQueryTarget(t)) {
|
|
11940
11942
|
const n = this.storage.getItem(Ro(this.persistenceKey, t));
|
|
11941
11943
|
if (n) {
|
|
11942
|
-
const s =
|
|
11944
|
+
const s = bo.Hi(t, n);
|
|
11943
11945
|
s && (e = s.state);
|
|
11944
11946
|
}
|
|
11945
11947
|
}
|
|
@@ -12003,8 +12005,8 @@ class So {
|
|
|
12003
12005
|
}
|
|
12004
12006
|
} else if (this.ur.test(e.key)) {
|
|
12005
12007
|
if (null !== e.newValue) {
|
|
12006
|
-
const t = this.
|
|
12007
|
-
if (t) return this.
|
|
12008
|
+
const t = this.br(e.key, e.newValue);
|
|
12009
|
+
if (t) return this.Vr(t);
|
|
12008
12010
|
}
|
|
12009
12011
|
} else if (this.ar.test(e.key)) {
|
|
12010
12012
|
if (null !== e.newValue) {
|
|
@@ -12060,7 +12062,7 @@ class So {
|
|
|
12060
12062
|
this.storage.setItem(this.hr, JSON.stringify(e));
|
|
12061
12063
|
}
|
|
12062
12064
|
Ir(t, e, n) {
|
|
12063
|
-
const s = Ro(this.persistenceKey, t), i = new
|
|
12065
|
+
const s = Ro(this.persistenceKey, t), i = new bo(t, e, n);
|
|
12064
12066
|
this.setItem(s, i.Ji());
|
|
12065
12067
|
}
|
|
12066
12068
|
Tr() {
|
|
@@ -12078,12 +12080,12 @@ class So {
|
|
|
12078
12080
|
* be parsed.
|
|
12079
12081
|
*/ Pr(t, e) {
|
|
12080
12082
|
const n = this.Ar(t);
|
|
12081
|
-
return
|
|
12083
|
+
return Vo.Hi(n, e);
|
|
12082
12084
|
}
|
|
12083
12085
|
/**
|
|
12084
12086
|
* Parses a mutation batch state in WebStorage. Returns 'null' if the value
|
|
12085
12087
|
* could not be parsed.
|
|
12086
|
-
*/
|
|
12088
|
+
*/ br(t, e) {
|
|
12087
12089
|
const n = this.ur.exec(t), s = Number(n[1]), i = void 0 !== n[2] ? n[2] : null;
|
|
12088
12090
|
return Po.Hi(new C(i), s, e);
|
|
12089
12091
|
}
|
|
@@ -12092,7 +12094,7 @@ class So {
|
|
|
12092
12094
|
* could not be parsed.
|
|
12093
12095
|
*/ vr(t, e) {
|
|
12094
12096
|
const n = this.ar.exec(t), s = Number(n[1]);
|
|
12095
|
-
return
|
|
12097
|
+
return bo.Hi(s, e);
|
|
12096
12098
|
}
|
|
12097
12099
|
/**
|
|
12098
12100
|
* Parses an online state from WebStorage. Returns 'null' if the value
|
|
@@ -12100,7 +12102,7 @@ class So {
|
|
|
12100
12102
|
*/ _r(t) {
|
|
12101
12103
|
return vo.Hi(t);
|
|
12102
12104
|
}
|
|
12103
|
-
async
|
|
12105
|
+
async Vr(t) {
|
|
12104
12106
|
if (t.user.uid === this.currentUser.uid) return this.syncEngine.Cr(t.batchId, t.state, t.error);
|
|
12105
12107
|
$("SharedClientState", `Ignoring mutation for non-active user ${t.user.uid}`);
|
|
12106
12108
|
}
|
|
@@ -12545,7 +12547,7 @@ class {
|
|
|
12545
12547
|
function(t) {
|
|
12546
12548
|
// lookup by string
|
|
12547
12549
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12548
|
-
const e =
|
|
12550
|
+
const e = bn[t];
|
|
12549
12551
|
if (void 0 !== e) return Sn(e);
|
|
12550
12552
|
}(t), n = i.message;
|
|
12551
12553
|
void 0 === e && (e = G.INTERNAL, n = "Unknown error status: " + t + " with message " + i.message),
|
|
@@ -12773,7 +12775,7 @@ class Uo {
|
|
|
12773
12775
|
* getCloseGuardedDispatcher() to invalidate callbacks that happen after
|
|
12774
12776
|
* close.
|
|
12775
12777
|
*/
|
|
12776
|
-
this.Ro = 0, this.Po = null, this.
|
|
12778
|
+
this.Ro = 0, this.Po = null, this.bo = null, this.stream = null, this.Vo = new Lo(t, e);
|
|
12777
12779
|
}
|
|
12778
12780
|
/**
|
|
12779
12781
|
* Returns true if start() has been called and no error has occurred. True
|
|
@@ -12815,7 +12817,7 @@ class Uo {
|
|
|
12815
12817
|
* Each error will call the onClose() listener. That function can decide to
|
|
12816
12818
|
* inhibit backoff if required.
|
|
12817
12819
|
*/ Co() {
|
|
12818
|
-
this.state = 0 /* Initial */ , this.
|
|
12820
|
+
this.state = 0 /* Initial */ , this.Vo.reset();
|
|
12819
12821
|
}
|
|
12820
12822
|
/**
|
|
12821
12823
|
* Marks this stream as idle. If no further actions are performed on the
|
|
@@ -12844,7 +12846,7 @@ class Uo {
|
|
|
12844
12846
|
this.Po && (this.Po.cancel(), this.Po = null);
|
|
12845
12847
|
}
|
|
12846
12848
|
/** Cancels the health check delayed operation. */ $o() {
|
|
12847
|
-
this.
|
|
12849
|
+
this.bo && (this.bo.cancel(), this.bo = null);
|
|
12848
12850
|
}
|
|
12849
12851
|
/**
|
|
12850
12852
|
* Closes the stream and cleans up as necessary:
|
|
@@ -12860,15 +12862,15 @@ class Uo {
|
|
|
12860
12862
|
* @param error - the error the connection was closed with.
|
|
12861
12863
|
*/ async close(t, e) {
|
|
12862
12864
|
// Cancel any outstanding timers (they're guaranteed not to execute).
|
|
12863
|
-
this.Oo(), this.$o(), this.
|
|
12865
|
+
this.Oo(), this.$o(), this.Vo.cancel(),
|
|
12864
12866
|
// Invalidates any stream-related callbacks (e.g. from auth or the
|
|
12865
12867
|
// underlying stream), guaranteeing they won't execute.
|
|
12866
12868
|
this.Ro++, 4 /* Error */ !== t ?
|
|
12867
12869
|
// If this is an intentional close ensure we don't delay our next connection attempt.
|
|
12868
|
-
this.
|
|
12870
|
+
this.Vo.reset() : e && e.code === G.RESOURCE_EXHAUSTED ? (
|
|
12869
12871
|
// Log the error. (Probably either 'quota exceeded' or 'max queue length reached'.)
|
|
12870
12872
|
M(e.toString()), M("Using maximum backoff delay to prevent overloading the backend."),
|
|
12871
|
-
this.
|
|
12873
|
+
this.Vo.mo()) : e && e.code === G.UNAUTHENTICATED && 3 /* Healthy */ !== this.state && (
|
|
12872
12874
|
// "unauthenticated" error means the token was rejected. This should rarely
|
|
12873
12875
|
// happen since both Auth and AppCheck ensure a sufficient TTL when we
|
|
12874
12876
|
// request a token. If a user manually resets their system clock this can
|
|
@@ -12912,7 +12914,7 @@ class Uo {
|
|
|
12912
12914
|
Bo(t, e) {
|
|
12913
12915
|
const n = this.Fo(this.Ro);
|
|
12914
12916
|
this.stream = this.Uo(t, e), this.stream.Qr((() => {
|
|
12915
|
-
n((() => (this.state = 2 /* Open */ , this.
|
|
12917
|
+
n((() => (this.state = 2 /* Open */ , this.bo = this.Hn.enqueueAfterDelay(this.To, 1e4, (() => (this.So() && (this.state = 3 /* Healthy */),
|
|
12916
12918
|
Promise.resolve()))), this.listener.Qr())));
|
|
12917
12919
|
})), this.stream.zr((t => {
|
|
12918
12920
|
n((() => this.Lo(t)));
|
|
@@ -12921,7 +12923,7 @@ class Uo {
|
|
|
12921
12923
|
}));
|
|
12922
12924
|
}
|
|
12923
12925
|
Do() {
|
|
12924
|
-
this.state = 5 /* Backoff */ , this.
|
|
12926
|
+
this.state = 5 /* Backoff */ , this.Vo.yo((async () => {
|
|
12925
12927
|
this.state = 0 /* Initial */ , this.start();
|
|
12926
12928
|
}));
|
|
12927
12929
|
}
|
|
@@ -12962,7 +12964,7 @@ class Uo {
|
|
|
12962
12964
|
}
|
|
12963
12965
|
onMessage(t) {
|
|
12964
12966
|
// A successful response means the stream is healthy
|
|
12965
|
-
this.
|
|
12967
|
+
this.Vo.reset();
|
|
12966
12968
|
const e = ys(this.O, t), n = function(t) {
|
|
12967
12969
|
// We have only reached a consistent snapshot for the entire stream if there
|
|
12968
12970
|
// is a read_time set and it applies to all targets (i.e. the list of
|
|
@@ -13049,7 +13051,7 @@ class Uo {
|
|
|
13049
13051
|
// A successful first write response means the stream is healthy,
|
|
13050
13052
|
// Note, that we could consider a successful handshake healthy, however,
|
|
13051
13053
|
// the write itself might be causing an error we want to back off from.
|
|
13052
|
-
this.
|
|
13054
|
+
this.Vo.reset();
|
|
13053
13055
|
const e = Es(t.writeResults, t.commitTime), n = os(t.commitTime);
|
|
13054
13056
|
return this.listener.zo(n, e);
|
|
13055
13057
|
}
|
|
@@ -13946,13 +13948,13 @@ class Pc {
|
|
|
13946
13948
|
/**
|
|
13947
13949
|
* Holds the listeners and the last received ViewSnapshot for a query being
|
|
13948
13950
|
* tracked by EventManager.
|
|
13949
|
-
*/ class
|
|
13951
|
+
*/ class bc {
|
|
13950
13952
|
constructor() {
|
|
13951
13953
|
this.yc = void 0, this.listeners = [];
|
|
13952
13954
|
}
|
|
13953
13955
|
}
|
|
13954
13956
|
|
|
13955
|
-
class
|
|
13957
|
+
class Vc {
|
|
13956
13958
|
constructor() {
|
|
13957
13959
|
this.queries = new er((t => Le(t)), Be), this.onlineState = "Unknown" /* Unknown */ ,
|
|
13958
13960
|
this.Ic = new Set;
|
|
@@ -13962,7 +13964,7 @@ class bc {
|
|
|
13962
13964
|
async function vc(t, e) {
|
|
13963
13965
|
const n = K(t), s = e.query;
|
|
13964
13966
|
let i = !1, r = n.queries.get(s);
|
|
13965
|
-
if (r || (i = !0, r = new
|
|
13967
|
+
if (r || (i = !0, r = new bc), i) try {
|
|
13966
13968
|
r.yc = await n.onListen(s);
|
|
13967
13969
|
} catch (t) {
|
|
13968
13970
|
const n = Tc(t, `Initialization of query '${Ue(e.query)}' failed`);
|
|
@@ -14042,7 +14044,7 @@ function xc(t) {
|
|
|
14042
14044
|
/* excludesMetadataChanges= */ !0);
|
|
14043
14045
|
}
|
|
14044
14046
|
let e = !1;
|
|
14045
|
-
return this.Rc ? this.
|
|
14047
|
+
return this.Rc ? this.bc(t) && (this.Ac.next(t), e = !0) : this.Vc(t, this.onlineState) && (this.vc(t),
|
|
14046
14048
|
e = !0), this.Pc = t, e;
|
|
14047
14049
|
}
|
|
14048
14050
|
onError(t) {
|
|
@@ -14051,10 +14053,10 @@ function xc(t) {
|
|
|
14051
14053
|
/** Returns whether a snapshot was raised. */ Ec(t) {
|
|
14052
14054
|
this.onlineState = t;
|
|
14053
14055
|
let e = !1;
|
|
14054
|
-
return this.Pc && !this.Rc && this.
|
|
14056
|
+
return this.Pc && !this.Rc && this.Vc(this.Pc, t) && (this.vc(this.Pc), e = !0),
|
|
14055
14057
|
e;
|
|
14056
14058
|
}
|
|
14057
|
-
|
|
14059
|
+
Vc(t, e) {
|
|
14058
14060
|
// Always raise the first event when we're synced
|
|
14059
14061
|
if (!t.fromCache) return !0;
|
|
14060
14062
|
// NOTE: We consider OnlineState.Unknown as online (it should become Offline
|
|
@@ -14065,7 +14067,7 @@ function xc(t) {
|
|
|
14065
14067
|
return (!this.options.Sc || !n) && (!t.docs.isEmpty() || "Offline" /* Offline */ === e);
|
|
14066
14068
|
// Raise data from cache if we have any documents or we are offline
|
|
14067
14069
|
}
|
|
14068
|
-
|
|
14070
|
+
bc(t) {
|
|
14069
14071
|
// We don't need to handle includeDocumentMetadataChanges here because
|
|
14070
14072
|
// the Metadata only changes have already been stripped out if needed.
|
|
14071
14073
|
// At this point the only changes we will see are the ones we should
|
|
@@ -15336,7 +15338,7 @@ class Tu {
|
|
|
15336
15338
|
}
|
|
15337
15339
|
fu(t) {
|
|
15338
15340
|
const e = this.persistence.referenceDelegate.garbageCollector;
|
|
15339
|
-
return new
|
|
15341
|
+
return new Vr(e, t.asyncQueue);
|
|
15340
15342
|
}
|
|
15341
15343
|
lu(t) {
|
|
15342
15344
|
const e = Kr(t.databaseInfo.databaseId, t.databaseInfo.persistenceKey), n = void 0 !== this.cacheSizeBytes ? lr.withCacheSize(this.cacheSizeBytes) : lr.DEFAULT;
|
|
@@ -15395,7 +15397,7 @@ class Tu {
|
|
|
15395
15397
|
await yc(this.remoteStore, this.syncEngine.isPrimaryClient));
|
|
15396
15398
|
}
|
|
15397
15399
|
createEventManager(t) {
|
|
15398
|
-
return new
|
|
15400
|
+
return new Vc;
|
|
15399
15401
|
}
|
|
15400
15402
|
createDatastore(t) {
|
|
15401
15403
|
const e = Bo(t.databaseInfo.databaseId), n = (s = t.databaseInfo, new $o(s));
|
|
@@ -15456,7 +15458,7 @@ class Tu {
|
|
|
15456
15458
|
* @param bytesPerRead - How many bytes each `read()` from the returned reader
|
|
15457
15459
|
* will read.
|
|
15458
15460
|
*/
|
|
15459
|
-
function
|
|
15461
|
+
function bu(t, e = 10240) {
|
|
15460
15462
|
let n = 0;
|
|
15461
15463
|
// The TypeScript definition for ReadableStreamReader changed. We use
|
|
15462
15464
|
// `any` here to allow this code to compile with different versions.
|
|
@@ -15522,7 +15524,7 @@ function Vu(t, e = 10240) {
|
|
|
15522
15524
|
* asynchronously. To allow immediate silencing, a mute call is added which
|
|
15523
15525
|
* causes events scheduled to no longer be raised.
|
|
15524
15526
|
*/
|
|
15525
|
-
class
|
|
15527
|
+
class Vu {
|
|
15526
15528
|
constructor(t) {
|
|
15527
15529
|
this.observer = t,
|
|
15528
15530
|
/**
|
|
@@ -15829,14 +15831,14 @@ class Su {
|
|
|
15829
15831
|
class Du {
|
|
15830
15832
|
constructor(t, e, n, s) {
|
|
15831
15833
|
this.asyncQueue = t, this.datastore = e, this.updateFunction = n, this.deferred = s,
|
|
15832
|
-
this.Pu = 5, this.
|
|
15834
|
+
this.Pu = 5, this.Vo = new Lo(this.asyncQueue, "transaction_retry" /* TransactionRetry */);
|
|
15833
15835
|
}
|
|
15834
15836
|
/** Runs the transaction and sets the result on deferred. */ run() {
|
|
15835
|
-
this.Pu -= 1, this.
|
|
15837
|
+
this.Pu -= 1, this.bu();
|
|
15836
15838
|
}
|
|
15837
|
-
|
|
15838
|
-
this.
|
|
15839
|
-
const t = new Su(this.datastore), e = this.
|
|
15839
|
+
bu() {
|
|
15840
|
+
this.Vo.yo((async () => {
|
|
15841
|
+
const t = new Su(this.datastore), e = this.Vu(t);
|
|
15840
15842
|
e && e.then((e => {
|
|
15841
15843
|
this.asyncQueue.enqueueAndForget((() => t.commit().then((() => {
|
|
15842
15844
|
this.deferred.resolve(e);
|
|
@@ -15848,7 +15850,7 @@ class Du {
|
|
|
15848
15850
|
}));
|
|
15849
15851
|
}));
|
|
15850
15852
|
}
|
|
15851
|
-
|
|
15853
|
+
Vu(t) {
|
|
15852
15854
|
try {
|
|
15853
15855
|
const e = this.updateFunction(t);
|
|
15854
15856
|
return !St(e) && e.catch && e.then ? e : (this.deferred.reject(Error("Transaction callback must return a Promise")),
|
|
@@ -15859,7 +15861,7 @@ class Du {
|
|
|
15859
15861
|
}
|
|
15860
15862
|
}
|
|
15861
15863
|
vu(t) {
|
|
15862
|
-
this.Pu > 0 && this.Su(t) ? (this.Pu -= 1, this.asyncQueue.enqueueAndForget((() => (this.
|
|
15864
|
+
this.Pu > 0 && this.Su(t) ? (this.Pu -= 1, this.asyncQueue.enqueueAndForget((() => (this.bu(),
|
|
15863
15865
|
Promise.resolve())))) : this.deferred.reject(t);
|
|
15864
15866
|
}
|
|
15865
15867
|
Su(t) {
|
|
@@ -16060,7 +16062,7 @@ async function Lu(t) {
|
|
|
16060
16062
|
function Gu(t, e, n = {}) {
|
|
16061
16063
|
const s = new Q;
|
|
16062
16064
|
return t.asyncQueue.enqueueAndForget((async () => function(t, e, n, s, i) {
|
|
16063
|
-
const r = new
|
|
16065
|
+
const r = new Vu({
|
|
16064
16066
|
next: r => {
|
|
16065
16067
|
// Remove query first before passing event to user to avoid
|
|
16066
16068
|
// user actions affecting the now stale query.
|
|
@@ -16107,7 +16109,7 @@ function ju(t, e) {
|
|
|
16107
16109
|
function Qu(t, e, n = {}) {
|
|
16108
16110
|
const s = new Q;
|
|
16109
16111
|
return t.asyncQueue.enqueueAndForget((async () => function(t, e, n, s, i) {
|
|
16110
|
-
const r = new
|
|
16112
|
+
const r = new Vu({
|
|
16111
16113
|
next: n => {
|
|
16112
16114
|
// Remove query first before passing event to user to avoid
|
|
16113
16115
|
// user actions affecting the now stale query.
|
|
@@ -16123,7 +16125,7 @@ function Qu(t, e, n = {}) {
|
|
|
16123
16125
|
}
|
|
16124
16126
|
|
|
16125
16127
|
function Wu(t, e) {
|
|
16126
|
-
const n = new
|
|
16128
|
+
const n = new Vu(e);
|
|
16127
16129
|
return t.asyncQueue.enqueueAndForget((async () => function(t, e) {
|
|
16128
16130
|
K(t).Ic.add(e),
|
|
16129
16131
|
// Immediately fire an initial event, indicating all existing listeners
|
|
@@ -16167,8 +16169,8 @@ function Hu(t, e, n, s) {
|
|
|
16167
16169
|
return function(t, e) {
|
|
16168
16170
|
return new vu(t, e);
|
|
16169
16171
|
}(function(t, e) {
|
|
16170
|
-
if (t instanceof Uint8Array) return
|
|
16171
|
-
if (t instanceof ArrayBuffer) return
|
|
16172
|
+
if (t instanceof Uint8Array) return bu(t, e);
|
|
16173
|
+
if (t instanceof ArrayBuffer) return bu(new Uint8Array(t), e);
|
|
16172
16174
|
if (t instanceof ReadableStream) return t.getReader();
|
|
16173
16175
|
throw new Error("Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream");
|
|
16174
16176
|
}(n), e);
|
|
@@ -16700,13 +16702,13 @@ function da(t, e, ...n) {
|
|
|
16700
16702
|
// List of TimerIds to fast-forward delays for.
|
|
16701
16703
|
this.Mu = [],
|
|
16702
16704
|
// Backoff timer used to schedule retries for retryable operations
|
|
16703
|
-
this.
|
|
16705
|
+
this.Vo = new Lo(this, "async_queue_retry" /* AsyncQueueRetry */),
|
|
16704
16706
|
// Visibility handler that triggers an immediate retry of all retryable
|
|
16705
16707
|
// operations. Meant to speed up recovery when we regain file system access
|
|
16706
16708
|
// after page comes into foreground.
|
|
16707
16709
|
this.Fu = () => {
|
|
16708
16710
|
const t = Fo();
|
|
16709
|
-
t && $("AsyncQueue", "Visibility state changed to " + t.visibilityState), this.
|
|
16711
|
+
t && $("AsyncQueue", "Visibility state changed to " + t.visibilityState), this.Vo.Io();
|
|
16710
16712
|
};
|
|
16711
16713
|
const t = Fo();
|
|
16712
16714
|
t && "function" == typeof t.addEventListener && t.addEventListener("visibilitychange", this.Fu);
|
|
@@ -16753,7 +16755,7 @@ function da(t, e, ...n) {
|
|
|
16753
16755
|
*/ async Uu() {
|
|
16754
16756
|
if (0 !== this.Cu.length) {
|
|
16755
16757
|
try {
|
|
16756
|
-
await this.Cu[0](), this.Cu.shift(), this.
|
|
16758
|
+
await this.Cu[0](), this.Cu.shift(), this.Vo.reset();
|
|
16757
16759
|
} catch (t) {
|
|
16758
16760
|
if (!wi(t)) throw t;
|
|
16759
16761
|
// Failure will be handled by AsyncQueue
|
|
@@ -16770,7 +16772,7 @@ function da(t, e, ...n) {
|
|
|
16770
16772
|
// Since `backoffAndRun()` cancels an existing backoff and schedules a
|
|
16771
16773
|
// new backoff on every call, there is only ever a single additional
|
|
16772
16774
|
// operation in the queue.
|
|
16773
|
-
this.
|
|
16775
|
+
this.Vo.yo((() => this.Uu()));
|
|
16774
16776
|
}
|
|
16775
16777
|
}
|
|
16776
16778
|
Lu(t) {
|
|
@@ -17055,7 +17057,7 @@ class Ia extends oa {
|
|
|
17055
17057
|
function Ra(t) {
|
|
17056
17058
|
var e;
|
|
17057
17059
|
const n = t._freezeSettings(), s = function(t, e, n, s) {
|
|
17058
|
-
return new
|
|
17060
|
+
return new Vt(t, e, n, s.host, s.ssl, s.experimentalForceLongPolling, s.experimentalAutoDetectLongPolling, s.useFetchStreams);
|
|
17059
17061
|
}(t._databaseId, (null === (e = t._app) || void 0 === e ? void 0 : e.options.appId) || "", t._persistenceKey, n);
|
|
17060
17062
|
t._firestoreClient = new Cu(t._authCredentials, t._appCheckCredentials, t._queue, s);
|
|
17061
17063
|
}
|
|
@@ -17085,7 +17087,7 @@ function Ra(t) {
|
|
|
17085
17087
|
*/ function Pa(t, e) {
|
|
17086
17088
|
Oa(t = sa(t, Ia));
|
|
17087
17089
|
const n = Aa(t), s = t._freezeSettings(), i = new Pu;
|
|
17088
|
-
return
|
|
17090
|
+
return Va(n, i, new Au(i, s.cacheSizeBytes, null == e ? void 0 : e.forceOwnership));
|
|
17089
17091
|
}
|
|
17090
17092
|
|
|
17091
17093
|
/**
|
|
@@ -17109,10 +17111,10 @@ function Ra(t) {
|
|
|
17109
17111
|
* @param firestore - The {@link Firestore} instance to enable persistence for.
|
|
17110
17112
|
* @returns A `Promise` that represents successfully enabling persistent
|
|
17111
17113
|
* storage.
|
|
17112
|
-
*/ function
|
|
17114
|
+
*/ function ba(t) {
|
|
17113
17115
|
Oa(t = sa(t, Ia));
|
|
17114
17116
|
const e = Aa(t), n = t._freezeSettings(), s = new Pu;
|
|
17115
|
-
return
|
|
17117
|
+
return Va(e, s, new Ru(s, n.cacheSizeBytes));
|
|
17116
17118
|
}
|
|
17117
17119
|
|
|
17118
17120
|
/**
|
|
@@ -17120,7 +17122,7 @@ function Ra(t) {
|
|
|
17120
17122
|
* If the operation fails with a recoverable error (see
|
|
17121
17123
|
* `canRecoverFromIndexedDbError()` below), the returned Promise is rejected
|
|
17122
17124
|
* but the client remains usable.
|
|
17123
|
-
*/ function
|
|
17125
|
+
*/ function Va(t, e, n) {
|
|
17124
17126
|
const s = new Q;
|
|
17125
17127
|
return t.asyncQueue.enqueue((async () => {
|
|
17126
17128
|
try {
|
|
@@ -18529,12 +18531,12 @@ class Ph extends Ah {
|
|
|
18529
18531
|
* "<=", "!=").
|
|
18530
18532
|
* @param value - The value for comparison
|
|
18531
18533
|
* @returns The created {@link Query}.
|
|
18532
|
-
*/ function
|
|
18534
|
+
*/ function bh(t, e, n) {
|
|
18533
18535
|
const s = e, i = wh("where", t);
|
|
18534
18536
|
return new Ph(i, s, n);
|
|
18535
18537
|
}
|
|
18536
18538
|
|
|
18537
|
-
class
|
|
18539
|
+
class Vh extends Ah {
|
|
18538
18540
|
constructor(t, e) {
|
|
18539
18541
|
super(), this.ca = t, this.ha = e, this.type = "orderBy";
|
|
18540
18542
|
}
|
|
@@ -18580,7 +18582,7 @@ class bh extends Ah {
|
|
|
18580
18582
|
* @returns The created {@link Query}.
|
|
18581
18583
|
*/ function vh(t, e = "asc") {
|
|
18582
18584
|
const n = e, s = wh("orderBy", t);
|
|
18583
|
-
return new
|
|
18585
|
+
return new Vh(s, n);
|
|
18584
18586
|
}
|
|
18585
18587
|
|
|
18586
18588
|
class Sh extends Ah {
|
|
@@ -18816,7 +18818,7 @@ function Uh(t, e, n) {
|
|
|
18816
18818
|
return null == n ? null : this.convertValue(n, e);
|
|
18817
18819
|
|
|
18818
18820
|
case "estimate":
|
|
18819
|
-
return this.convertTimestamp(
|
|
18821
|
+
return this.convertTimestamp(bt(t));
|
|
18820
18822
|
|
|
18821
18823
|
default:
|
|
18822
18824
|
return null;
|
|
@@ -19174,7 +19176,7 @@ function il(t, ...e) {
|
|
|
19174
19176
|
}, Th(t._query);
|
|
19175
19177
|
}
|
|
19176
19178
|
return function(t, e, n, s) {
|
|
19177
|
-
const i = new
|
|
19179
|
+
const i = new Vu(s), r = new Nc(e, i, n);
|
|
19178
19180
|
return t.asyncQueue.enqueueAndForget((async () => vc(await Lu(t), r))), () => {
|
|
19179
19181
|
i.mu(), t.asyncQueue.enqueueAndForget((async () => Sc(await Lu(t), r)));
|
|
19180
19182
|
};
|
|
@@ -19478,10 +19480,10 @@ function gl(t, e) {
|
|
|
19478
19480
|
return n = Object.assign({
|
|
19479
19481
|
useFetchStreams: e
|
|
19480
19482
|
}, n), i._setSettings(n), i;
|
|
19481
|
-
}), "PUBLIC")), registerVersion(D, "3.4.5-canary.
|
|
19483
|
+
}), "PUBLIC")), registerVersion(D, "3.4.5-canary.2b98b28f2", t),
|
|
19482
19484
|
// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
|
|
19483
|
-
registerVersion(D, "3.4.5-canary.
|
|
19485
|
+
registerVersion(D, "3.4.5-canary.2b98b28f2", "esm2017");
|
|
19484
19486
|
}();
|
|
19485
19487
|
|
|
19486
|
-
export { qh as AbstractUserDataWriter, Fa as Bytes, pa as CACHE_SIZE_UNLIMITED, ha as CollectionReference, ua as DocumentReference, gh as DocumentSnapshot, $a as FieldPath, Ba as FieldValue, Ia as Firestore, j as FirestoreError, La as GeoPoint, ya as LoadBundleTask, aa as Query, Ah as QueryConstraint, yh as QueryDocumentSnapshot, ph as QuerySnapshot, mh as SnapshotMetadata, ut as Timestamp, ul as Transaction, jh as WriteBatch, vt as _DatabaseId, xt as _DocumentKey, et as _EmptyAppCheckTokenProvider, z as _EmptyAuthCredentialsProvider, mt as _FieldPath, sa as _cast, q as _debugAssert, yt as _isBase64Available, F as _logWarn, ml as _setIndexConfiguration, Zu as _validateIsNotUsedTogether, sl as addDoc, dl as arrayRemove, fl as arrayUnion, va as clearIndexedDbPersistence, la as collection, fa as collectionGroup, ca as connectFirestoreEmulator, nl as deleteDoc, hl as deleteField, Ca as disableNetwork, da as doc, Ma as documentId, Pa as enableIndexedDbPersistence,
|
|
19488
|
+
export { qh as AbstractUserDataWriter, Fa as Bytes, pa as CACHE_SIZE_UNLIMITED, ha as CollectionReference, ua as DocumentReference, gh as DocumentSnapshot, $a as FieldPath, Ba as FieldValue, Ia as Firestore, j as FirestoreError, La as GeoPoint, ya as LoadBundleTask, aa as Query, Ah as QueryConstraint, yh as QueryDocumentSnapshot, ph as QuerySnapshot, mh as SnapshotMetadata, ut as Timestamp, ul as Transaction, jh as WriteBatch, vt as _DatabaseId, xt as _DocumentKey, et as _EmptyAppCheckTokenProvider, z as _EmptyAuthCredentialsProvider, mt as _FieldPath, sa as _cast, q as _debugAssert, yt as _isBase64Available, F as _logWarn, ml as _setIndexConfiguration, Zu as _validateIsNotUsedTogether, sl as addDoc, dl as arrayRemove, fl as arrayUnion, va as clearIndexedDbPersistence, la as collection, fa as collectionGroup, ca as connectFirestoreEmulator, nl as deleteDoc, hl as deleteField, Ca as disableNetwork, da as doc, Ma as documentId, Pa as enableIndexedDbPersistence, ba as enableMultiTabIndexedDbPersistence, Da as enableNetwork, Mh as endAt, $h as endBefore, Aa as ensureFirestoreConfigured, ol as executeWrite, Wh as getDoc, Hh as getDocFromCache, Jh as getDocFromServer, Yh as getDocs, Xh as getDocsFromCache, Zh as getDocsFromServer, Ta as getFirestore, _l as increment, Ea as initializeFirestore, Dh as limit, Ch as limitToLast, Na as loadBundle, ka as namedQuery, il as onSnapshot, rl as onSnapshotsInSync, vh as orderBy, Rh as query, wa as queryEqual, _a as refEqual, al as runTransaction, ll as serverTimestamp, tl as setDoc, O as setLogLevel, Eh as snapshotEqual, kh as startAfter, Nh as startAt, xa as terminate, el as updateDoc, Sa as waitForPendingWrites, bh as where, wl as writeBatch };
|
|
19487
19489
|
//# sourceMappingURL=index.esm2017.js.map
|