@firebase/firestore 3.4.3 → 3.4.4-canary.aaeab08ac
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/CHANGELOG.md +10 -0
- package/dist/firestore/src/api/database.d.ts +14 -9
- package/dist/firestore/src/api/index_configuration.d.ts +117 -0
- package/dist/firestore/src/api.d.ts +1 -0
- package/dist/firestore/src/core/firestore_client.d.ts +2 -0
- package/dist/firestore/src/local/local_serializer.d.ts +1 -1
- package/dist/firestore/src/local/remote_document_change_buffer.d.ts +3 -12
- package/dist/firestore/src/model/document.d.ts +7 -0
- package/dist/firestore/src/model/document_key.d.ts +1 -0
- package/dist/firestore/src/model/field_index.d.ts +152 -0
- package/dist/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
- package/dist/firestore/test/unit/local/test_remote_document_cache.d.ts +1 -1
- package/dist/firestore/test/unit/model/field_index.test.d.ts +17 -0
- package/dist/firestore/test/util/helpers.d.ts +6 -0
- package/dist/index.d.ts +15 -9
- package/dist/index.esm2017.js +1204 -1052
- package/dist/index.esm2017.js.map +1 -1
- package/dist/index.esm5.js +1862 -1720
- package/dist/index.esm5.js.map +1 -1
- package/dist/index.node.cjs.js +308 -75
- package/dist/index.node.cjs.js.map +1 -1
- package/dist/index.node.mjs +308 -76
- package/dist/index.node.mjs.map +1 -1
- package/dist/index.rn.js +1204 -1052
- package/dist/index.rn.js.map +1 -1
- package/dist/internal.d.ts +131 -21
- package/dist/lite/firestore/src/api/database.d.ts +14 -9
- package/dist/lite/firestore/src/api/index_configuration.d.ts +117 -0
- package/dist/lite/firestore/src/api.d.ts +1 -0
- package/dist/lite/firestore/src/core/firestore_client.d.ts +2 -0
- package/dist/lite/firestore/src/local/local_serializer.d.ts +1 -1
- package/dist/lite/firestore/src/local/remote_document_change_buffer.d.ts +3 -12
- package/dist/lite/firestore/src/model/document.d.ts +7 -0
- package/dist/lite/firestore/src/model/document_key.d.ts +1 -0
- package/dist/lite/firestore/src/model/field_index.d.ts +152 -0
- package/dist/lite/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
- package/dist/lite/firestore/test/unit/local/test_remote_document_cache.d.ts +1 -1
- package/dist/lite/firestore/test/unit/model/field_index.test.d.ts +17 -0
- package/dist/lite/firestore/test/util/helpers.d.ts +6 -0
- package/dist/lite/index.browser.esm2017.js +76 -69
- package/dist/lite/index.browser.esm2017.js.map +1 -1
- package/dist/lite/index.browser.esm5.js +52 -47
- package/dist/lite/index.browser.esm5.js.map +1 -1
- package/dist/lite/index.node.cjs.js +16 -8
- package/dist/lite/index.node.cjs.js.map +1 -1
- package/dist/lite/index.node.mjs +16 -8
- package/dist/lite/index.node.mjs.map +1 -1
- package/dist/lite/index.rn.esm2017.js +95 -88
- package/dist/lite/index.rn.esm2017.js.map +1 -1
- package/dist/lite/internal.d.ts +8 -0
- package/dist/lite/packages/firestore/dist/lite/index.browser.esm2017.d.ts +19 -19
- package/dist/lite/packages/firestore/src/api/database.d.ts +14 -9
- package/dist/lite/packages/firestore/src/api/index_configuration.d.ts +117 -0
- package/dist/lite/packages/firestore/src/api.d.ts +1 -0
- package/dist/lite/packages/firestore/src/core/firestore_client.d.ts +2 -0
- package/dist/lite/packages/firestore/src/local/local_serializer.d.ts +1 -1
- package/dist/lite/packages/firestore/src/local/remote_document_change_buffer.d.ts +3 -12
- package/dist/lite/packages/firestore/src/model/document.d.ts +7 -0
- package/dist/lite/packages/firestore/src/model/document_key.d.ts +1 -0
- package/dist/lite/packages/firestore/src/model/field_index.d.ts +152 -0
- package/dist/lite/packages/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
- package/dist/lite/packages/firestore/test/unit/local/test_remote_document_cache.d.ts +1 -1
- package/dist/lite/packages/firestore/test/unit/model/field_index.test.d.ts +17 -0
- package/dist/lite/packages/firestore/test/util/helpers.d.ts +6 -0
- package/dist/lite/private.d.ts +7 -0
- package/dist/packages/firestore/dist/index.esm2017.d.ts +34 -12
- package/dist/packages/firestore/src/api/database.d.ts +14 -9
- package/dist/packages/firestore/src/api/index_configuration.d.ts +117 -0
- package/dist/packages/firestore/src/api.d.ts +1 -0
- package/dist/packages/firestore/src/core/firestore_client.d.ts +2 -0
- package/dist/packages/firestore/src/local/local_serializer.d.ts +1 -1
- package/dist/packages/firestore/src/local/remote_document_change_buffer.d.ts +3 -12
- package/dist/packages/firestore/src/model/document.d.ts +7 -0
- package/dist/packages/firestore/src/model/document_key.d.ts +1 -0
- package/dist/packages/firestore/src/model/field_index.d.ts +152 -0
- package/dist/packages/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
- package/dist/packages/firestore/test/unit/local/test_remote_document_cache.d.ts +1 -1
- package/dist/packages/firestore/test/unit/model/field_index.test.d.ts +17 -0
- package/dist/packages/firestore/test/util/helpers.d.ts +6 -0
- package/dist/private.d.ts +34 -21
- package/package.json +10 -10
package/dist/lite/private.d.ts
CHANGED
|
@@ -545,6 +545,11 @@ declare interface Document_2 {
|
|
|
545
545
|
* document was guaranteed to not exist.
|
|
546
546
|
*/
|
|
547
547
|
readonly version: SnapshotVersion;
|
|
548
|
+
/**
|
|
549
|
+
* The timestamp at which this document was read from the remote server. Uses
|
|
550
|
+
* `SnapshotVersion.min()` for documents created by the user.
|
|
551
|
+
*/
|
|
552
|
+
readonly readTime: SnapshotVersion;
|
|
548
553
|
/** The underlying data of this document or an empty value if no data exists. */
|
|
549
554
|
readonly data: ObjectValue;
|
|
550
555
|
/** Returns whether local mutations were applied via the mutation queue. */
|
|
@@ -1507,6 +1512,7 @@ declare class MutableDocument implements Document_2 {
|
|
|
1507
1512
|
readonly key: DocumentKey;
|
|
1508
1513
|
private documentType;
|
|
1509
1514
|
version: SnapshotVersion;
|
|
1515
|
+
readTime: SnapshotVersion;
|
|
1510
1516
|
data: ObjectValue;
|
|
1511
1517
|
private documentState;
|
|
1512
1518
|
private constructor();
|
|
@@ -1546,6 +1552,7 @@ declare class MutableDocument implements Document_2 {
|
|
|
1546
1552
|
convertToUnknownDocument(version: SnapshotVersion): MutableDocument;
|
|
1547
1553
|
setHasCommittedMutations(): MutableDocument;
|
|
1548
1554
|
setHasLocalMutations(): MutableDocument;
|
|
1555
|
+
setReadTime(readTime: SnapshotVersion): MutableDocument;
|
|
1549
1556
|
get hasLocalMutations(): boolean;
|
|
1550
1557
|
get hasCommittedMutations(): boolean;
|
|
1551
1558
|
get hasPendingWrites(): boolean;
|
|
@@ -695,6 +695,7 @@ declare class wa {
|
|
|
695
695
|
*/ declare class Dt {
|
|
696
696
|
static fromPath(t: any): Dt;
|
|
697
697
|
static fromName(t: any): Dt;
|
|
698
|
+
static empty(): Dt;
|
|
698
699
|
static comparator(t: any, e: any): 0 | 1 | -1;
|
|
699
700
|
static isDocumentKey(t: any): boolean;
|
|
700
701
|
/**
|
|
@@ -789,6 +790,22 @@ declare function yt(): boolean;
|
|
|
789
790
|
/**
|
|
790
791
|
* @internal
|
|
791
792
|
*/ declare function F(t: any, ...e: any[]): void;
|
|
793
|
+
/**
|
|
794
|
+
* @license
|
|
795
|
+
* Copyright 2021 Google LLC
|
|
796
|
+
*
|
|
797
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
798
|
+
* you may not use this file except in compliance with the License.
|
|
799
|
+
* You may obtain a copy of the License at
|
|
800
|
+
*
|
|
801
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
802
|
+
*
|
|
803
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
804
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
805
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
806
|
+
* See the License for the specific language governing permissions and
|
|
807
|
+
* limitations under the License.
|
|
808
|
+
*/ declare function Fh(t: any, e: any): Promise<void>;
|
|
792
809
|
/**
|
|
793
810
|
* Validates that two boolean options are not set at the same time.
|
|
794
811
|
* @internal
|
|
@@ -1085,20 +1102,25 @@ declare function lh(t: any): Promise<$u>;
|
|
|
1085
1102
|
/**
|
|
1086
1103
|
* Loads a Firestore bundle into the local cache.
|
|
1087
1104
|
*
|
|
1088
|
-
* @param firestore - The {@link Firestore} instance to load bundles for
|
|
1089
|
-
* @param bundleData - An object representing the bundle to be loaded. Valid
|
|
1090
|
-
*
|
|
1105
|
+
* @param firestore - The {@link Firestore} instance to load bundles for.
|
|
1106
|
+
* @param bundleData - An object representing the bundle to be loaded. Valid
|
|
1107
|
+
* objects are `ArrayBuffer`, `ReadableStream<Uint8Array>` or `string`.
|
|
1091
1108
|
*
|
|
1092
|
-
* @returns
|
|
1093
|
-
*
|
|
1094
|
-
*
|
|
1109
|
+
* @returns A `LoadBundleTask` object, which notifies callers with progress
|
|
1110
|
+
* updates, and completion or error events. It can be used as a
|
|
1111
|
+
* `Promise<LoadBundleTaskProgress>`.
|
|
1095
1112
|
*/ declare function Ya(t: any, e: any): Oa;
|
|
1096
1113
|
/**
|
|
1097
|
-
* Reads a Firestore {@link Query} from local cache, identified by the given
|
|
1114
|
+
* Reads a Firestore {@link Query} from local cache, identified by the given
|
|
1115
|
+
* name.
|
|
1098
1116
|
*
|
|
1099
1117
|
* The named queries are packaged into bundles on the server side (along
|
|
1100
|
-
* with resulting documents), and loaded to local cache using `loadBundle`. Once
|
|
1101
|
-
* cache, use this method to extract a {@link Query} by name.
|
|
1118
|
+
* with resulting documents), and loaded to local cache using `loadBundle`. Once
|
|
1119
|
+
* in local cache, use this method to extract a {@link Query} by name.
|
|
1120
|
+
*
|
|
1121
|
+
* @param firestore - The {@link Firestore} instance to read the query from.
|
|
1122
|
+
* @param name - The name of the query.
|
|
1123
|
+
* @returns A `Promise` that is resolved with the Query or `null`.
|
|
1102
1124
|
*/ declare function Xa(t: any, e: any): any;
|
|
1103
1125
|
declare function Ih(t: any, ...e: any[]): () => void;
|
|
1104
1126
|
declare function Ah(t: any, e: any): () => void;
|
|
@@ -1399,7 +1421,7 @@ declare function ph(t: any, e: any, n: any, ...s: any[]): Promise<any>;
|
|
|
1399
1421
|
Ic: boolean;
|
|
1400
1422
|
Ac: boolean;
|
|
1401
1423
|
Rc: any[];
|
|
1402
|
-
ur:
|
|
1424
|
+
ur: eo;
|
|
1403
1425
|
bc: () => void;
|
|
1404
1426
|
get isShuttingDown(): boolean;
|
|
1405
1427
|
/**
|
|
@@ -1622,7 +1644,7 @@ declare class Aa {
|
|
|
1622
1644
|
* base delay. This prevents clients from accidentally synchronizing their
|
|
1623
1645
|
* delays causing spikes of load to the backend.
|
|
1624
1646
|
*/
|
|
1625
|
-
declare class
|
|
1647
|
+
declare class eo {
|
|
1626
1648
|
constructor(t: any, e: any, n?: number, s?: number, i?: number);
|
|
1627
1649
|
Me: any;
|
|
1628
1650
|
timerId: any;
|
|
@@ -1780,4 +1802,4 @@ declare class Mo {
|
|
|
1780
1802
|
field: any;
|
|
1781
1803
|
transform: any;
|
|
1782
1804
|
}
|
|
1783
|
-
export { oh as AbstractUserDataWriter, nu as Bytes, Ma as CACHE_SIZE_UNLIMITED, Va as CollectionReference, Pa as DocumentReference, $u as DocumentSnapshot, tu as FieldPath, su as FieldValue, Fa as Firestore, Q as FirestoreError, iu as GeoPoint, Oa as LoadBundleTask, va as Query, Uu as QueryConstraint, Ou as QueryDocumentSnapshot, Mu as QuerySnapshot, xu as SnapshotMetadata, at as Timestamp, Ph as Transaction, uh as WriteBatch, wa as _DatabaseId, Dt as _DocumentKey, et as _EmptyAppCheckTokenProvider, z as _EmptyAuthCredentialsProvider, mt as _FieldPath, Ea as _cast, q as _debugAssert, yt as _isBase64Available, F as _logWarn, ga as _validateIsNotUsedTogether, Eh as addDoc, Ch as arrayRemove, Dh as arrayUnion, Wa as clearIndexedDbPersistence, Sa as collection, Da as collectionGroup, ba as connectFirestoreEmulator, Th as deleteDoc, Vh as deleteField, Ha as disableNetwork, Ca as doc, eu as documentId, Ka as enableIndexedDbPersistence, ja as enableMultiTabIndexedDbPersistence, za as enableNetwork, eh as endAt, th as endBefore, Ua as ensureFirestoreConfigured, Rh as executeWrite, lh as getDoc, dh as getDocFromCache, wh as getDocFromServer, _h as getDocs, mh as getDocsFromCache, gh as getDocsFromServer, Ba as getFirestore, Nh as increment, La as initializeFirestore, zu as limit, Hu as limitToLast, Ya as loadBundle, Xa as namedQuery, Ih as onSnapshot, Ah as onSnapshotsInSync, Wu as orderBy, qu as query, ka as queryEqual, Na as refEqual, vh as runTransaction, Sh as serverTimestamp, yh as setDoc, $ as setLogLevel, Lu as snapshotEqual, Xu as startAfter, Yu as startAt, Ja as terminate, ph as updateDoc, Ga as waitForPendingWrites, ju as where, kh as writeBatch };
|
|
1805
|
+
export { oh as AbstractUserDataWriter, nu as Bytes, Ma as CACHE_SIZE_UNLIMITED, Va as CollectionReference, Pa as DocumentReference, $u as DocumentSnapshot, tu as FieldPath, su as FieldValue, Fa as Firestore, Q as FirestoreError, iu as GeoPoint, Oa as LoadBundleTask, va as Query, Uu as QueryConstraint, Ou as QueryDocumentSnapshot, Mu as QuerySnapshot, xu as SnapshotMetadata, at as Timestamp, Ph as Transaction, uh as WriteBatch, wa as _DatabaseId, Dt as _DocumentKey, et as _EmptyAppCheckTokenProvider, z as _EmptyAuthCredentialsProvider, mt as _FieldPath, Ea as _cast, q as _debugAssert, yt as _isBase64Available, F as _logWarn, Fh as _setIndexConfiguration, ga as _validateIsNotUsedTogether, Eh as addDoc, Ch as arrayRemove, Dh as arrayUnion, Wa as clearIndexedDbPersistence, Sa as collection, Da as collectionGroup, ba as connectFirestoreEmulator, Th as deleteDoc, Vh as deleteField, Ha as disableNetwork, Ca as doc, eu as documentId, Ka as enableIndexedDbPersistence, ja as enableMultiTabIndexedDbPersistence, za as enableNetwork, eh as endAt, th as endBefore, Ua as ensureFirestoreConfigured, Rh as executeWrite, lh as getDoc, dh as getDocFromCache, wh as getDocFromServer, _h as getDocs, mh as getDocsFromCache, gh as getDocsFromServer, Ba as getFirestore, Nh as increment, La as initializeFirestore, zu as limit, Hu as limitToLast, Ya as loadBundle, Xa as namedQuery, Ih as onSnapshot, Ah as onSnapshotsInSync, Wu as orderBy, qu as query, ka as queryEqual, Na as refEqual, vh as runTransaction, Sh as serverTimestamp, yh as setDoc, $ as setLogLevel, Lu as snapshotEqual, Xu as startAfter, Yu as startAt, Ja as terminate, ph as updateDoc, Ga as waitForPendingWrites, ju as where, kh as writeBatch };
|
|
@@ -209,20 +209,25 @@ export declare function terminate(firestore: Firestore): Promise<void>;
|
|
|
209
209
|
/**
|
|
210
210
|
* Loads a Firestore bundle into the local cache.
|
|
211
211
|
*
|
|
212
|
-
* @param firestore - The {@link Firestore} instance to load bundles for
|
|
213
|
-
* @param bundleData - An object representing the bundle to be loaded. Valid
|
|
214
|
-
*
|
|
212
|
+
* @param firestore - The {@link Firestore} instance to load bundles for.
|
|
213
|
+
* @param bundleData - An object representing the bundle to be loaded. Valid
|
|
214
|
+
* objects are `ArrayBuffer`, `ReadableStream<Uint8Array>` or `string`.
|
|
215
215
|
*
|
|
216
|
-
* @returns
|
|
217
|
-
*
|
|
218
|
-
*
|
|
216
|
+
* @returns A `LoadBundleTask` object, which notifies callers with progress
|
|
217
|
+
* updates, and completion or error events. It can be used as a
|
|
218
|
+
* `Promise<LoadBundleTaskProgress>`.
|
|
219
219
|
*/
|
|
220
220
|
export declare function loadBundle(firestore: Firestore, bundleData: ReadableStream<Uint8Array> | ArrayBuffer | string): LoadBundleTask;
|
|
221
221
|
/**
|
|
222
|
-
* Reads a Firestore {@link Query} from local cache, identified by the given
|
|
222
|
+
* Reads a Firestore {@link Query} from local cache, identified by the given
|
|
223
|
+
* name.
|
|
223
224
|
*
|
|
224
225
|
* The named queries are packaged into bundles on the server side (along
|
|
225
|
-
* with resulting documents), and loaded to local cache using `loadBundle`. Once
|
|
226
|
-
* cache, use this method to extract a {@link Query} by name.
|
|
226
|
+
* with resulting documents), and loaded to local cache using `loadBundle`. Once
|
|
227
|
+
* in local cache, use this method to extract a {@link Query} by name.
|
|
228
|
+
*
|
|
229
|
+
* @param firestore - The {@link Firestore} instance to read the query from.
|
|
230
|
+
* @param name - The name of the query.
|
|
231
|
+
* @returns A `Promise` that is resolved with the Query or `null`.
|
|
227
232
|
*/
|
|
228
233
|
export declare function namedQuery(firestore: Firestore, name: string): Promise<Query | null>;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2021 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { Firestore } from './database';
|
|
18
|
+
export { connectFirestoreEmulator, EmulatorMockTokenOptions } from '../lite-api/database';
|
|
19
|
+
/**
|
|
20
|
+
* A single field element in an index configuration.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export interface IndexField {
|
|
25
|
+
/** The field path to index. */
|
|
26
|
+
readonly fieldPath: string;
|
|
27
|
+
/**
|
|
28
|
+
* What type of array index to create. Set to `CONTAINS` for `array-contains`
|
|
29
|
+
* and `array-contains-any` indexes.
|
|
30
|
+
*
|
|
31
|
+
* Only one of `arrayConfig` or `order` should be set;
|
|
32
|
+
*/
|
|
33
|
+
readonly arrayConfig?: 'CONTAINS';
|
|
34
|
+
/**
|
|
35
|
+
* What type of array index to create. Set to `ASCENDING` or 'DESCENDING` for
|
|
36
|
+
* `==`, `!=`, `<=`, `<=`, `in` and `not-in` filters.
|
|
37
|
+
*
|
|
38
|
+
* Only one of `arrayConfig` or `order` should be set.
|
|
39
|
+
*/
|
|
40
|
+
readonly order?: 'ASCENDING' | 'DESCENDING';
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The SDK definition of a Firestore index.
|
|
45
|
+
*
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
export interface Index {
|
|
49
|
+
/** The ID of the collection to index. */
|
|
50
|
+
readonly collectionGroup: string;
|
|
51
|
+
/** A list of fields to index. */
|
|
52
|
+
readonly fields?: IndexField[];
|
|
53
|
+
[key: string]: unknown;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A list of Firestore indexes to speed up local query execution.
|
|
57
|
+
*
|
|
58
|
+
* See {@link https://firebase.google.com/docs/reference/firestore/indexes/#json_format | JSON Format}
|
|
59
|
+
* for a description of the format of the index definition.
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
export interface IndexConfiguration {
|
|
64
|
+
/** A list of all Firestore indexes. */
|
|
65
|
+
readonly indexes?: Index[];
|
|
66
|
+
[key: string]: unknown;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Configures indexing for local query execution. Any previous index
|
|
70
|
+
* configuration is overridden. The `Promise` resolves once the index
|
|
71
|
+
* configuration has been persisted.
|
|
72
|
+
*
|
|
73
|
+
* The index entries themselves are created asynchronously. You can continue to
|
|
74
|
+
* use queries that require indexing even if the indices are not yet available.
|
|
75
|
+
* Query execution will automatically start using the index once the index
|
|
76
|
+
* entries have been written.
|
|
77
|
+
*
|
|
78
|
+
* Indexes are only supported with IndexedDb persistence. Invoke either
|
|
79
|
+
* `enableIndexedDbPersistence()` or `enableMultiTabIndexedDbPersistence()`
|
|
80
|
+
* before setting an index configuration. If IndexedDb is not enabled, any
|
|
81
|
+
* index configuration is ignored.
|
|
82
|
+
*
|
|
83
|
+
* @internal
|
|
84
|
+
* @param firestore - The {@link Firestore} instance to configure indexes for.
|
|
85
|
+
* @param configuration -The index definition.
|
|
86
|
+
* @throws FirestoreError if the JSON format is invalid.
|
|
87
|
+
* @returns A `Promise` that resolves once all indices are successfully
|
|
88
|
+
* configured.
|
|
89
|
+
*/
|
|
90
|
+
export declare function setIndexConfiguration(firestore: Firestore, configuration: IndexConfiguration): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Configures indexing for local query execution. Any previous index
|
|
93
|
+
* configuration is overridden. The `Promise` resolves once the index
|
|
94
|
+
* configuration has been persisted.
|
|
95
|
+
*
|
|
96
|
+
* The index entries themselves are created asynchronously. You can continue to
|
|
97
|
+
* use queries that require indexing even if the indices are not yet available.
|
|
98
|
+
* Query execution will automatically start using the index once the index
|
|
99
|
+
* entries have been written.
|
|
100
|
+
*
|
|
101
|
+
* Indexes are only supported with IndexedDb persistence. Invoke either
|
|
102
|
+
* `enableIndexedDbPersistence()` or `enableMultiTabIndexedDbPersistence()`
|
|
103
|
+
* before setting an index configuration. If IndexedDb is not enabled, any
|
|
104
|
+
* index configuration is ignored.
|
|
105
|
+
*
|
|
106
|
+
* The method accepts the JSON format exported by the Firebase CLI (`firebase
|
|
107
|
+
* firestore:indexes`). If the JSON format is invalid, this method throws an
|
|
108
|
+
* error.
|
|
109
|
+
*
|
|
110
|
+
* @internal
|
|
111
|
+
* @param firestore - The {@link Firestore} instance to configure indexes for.
|
|
112
|
+
* @param json -The JSON format exported by the Firebase CLI.
|
|
113
|
+
* @throws FirestoreError if the JSON format is invalid.
|
|
114
|
+
* @returns A `Promise` that resolves once all indices are successfully
|
|
115
|
+
* configured.
|
|
116
|
+
*/
|
|
117
|
+
export declare function setIndexConfiguration(firestore: Firestore, json: string): Promise<void>;
|
|
@@ -49,3 +49,4 @@ export type { ByteString as _ByteString } from './util/byte_string';
|
|
|
49
49
|
export { logWarn as _logWarn } from './util/log';
|
|
50
50
|
export { EmptyAuthCredentialsProvider as _EmptyAuthCredentialsProvider } from './api/credentials';
|
|
51
51
|
export { EmptyAppCheckTokenProvider as _EmptyAppCheckTokenProvider } from './api/credentials';
|
|
52
|
+
export { setIndexConfiguration as _setIndexConfiguration } from './api/index_configuration';
|
|
@@ -53,6 +53,7 @@ export declare class FirestoreClient {
|
|
|
53
53
|
private user;
|
|
54
54
|
private readonly clientId;
|
|
55
55
|
private authCredentialListener;
|
|
56
|
+
private appCheckCredentialListener;
|
|
56
57
|
offlineComponents?: OfflineComponentProvider;
|
|
57
58
|
onlineComponents?: OnlineComponentProvider;
|
|
58
59
|
constructor(authCredentials: CredentialsProvider<User>, appCheckCredentials: CredentialsProvider<string>,
|
|
@@ -67,6 +68,7 @@ export declare class FirestoreClient {
|
|
|
67
68
|
asyncQueue: AsyncQueue, databaseInfo: DatabaseInfo);
|
|
68
69
|
getConfiguration(): Promise<ComponentConfiguration>;
|
|
69
70
|
setCredentialChangeListener(listener: (user: User) => Promise<void>): void;
|
|
71
|
+
setAppCheckTokenChangeListener(listener: (appCheckToken: string, user: User) => Promise<void>): void;
|
|
70
72
|
/**
|
|
71
73
|
* Checks that the client has not been terminated. Ensures that other methods on
|
|
72
74
|
* this class cannot be called after the client is terminated.
|
|
@@ -31,7 +31,7 @@ export declare class LocalSerializer {
|
|
|
31
31
|
/** Decodes a remote document from storage locally to a Document. */
|
|
32
32
|
export declare function fromDbRemoteDocument(localSerializer: LocalSerializer, remoteDoc: DbRemoteDocument): MutableDocument;
|
|
33
33
|
/** Encodes a document for storage locally. */
|
|
34
|
-
export declare function toDbRemoteDocument(localSerializer: LocalSerializer, document: MutableDocument
|
|
34
|
+
export declare function toDbRemoteDocument(localSerializer: LocalSerializer, document: MutableDocument): DbRemoteDocument;
|
|
35
35
|
export declare function toDbTimestampKey(snapshotVersion: SnapshotVersion): DbTimestampKey;
|
|
36
36
|
export declare function fromDbTimestampKey(dbTimestampKey: DbTimestampKey): SnapshotVersion;
|
|
37
37
|
/** Encodes a batch of mutations into a DbMutationBatch for local storage. */
|
|
@@ -21,13 +21,6 @@ import { DocumentKey } from '../model/document_key';
|
|
|
21
21
|
import { ObjectMap } from '../util/obj_map';
|
|
22
22
|
import { PersistencePromise } from './persistence_promise';
|
|
23
23
|
import { PersistenceTransaction } from './persistence_transaction';
|
|
24
|
-
/**
|
|
25
|
-
* Represents a document change to be applied to remote document cache.
|
|
26
|
-
*/
|
|
27
|
-
interface RemoteDocumentChange {
|
|
28
|
-
readonly document: MutableDocument;
|
|
29
|
-
readonly readTime: SnapshotVersion | null;
|
|
30
|
-
}
|
|
31
24
|
/**
|
|
32
25
|
* An in-memory buffer of entries to be written to a RemoteDocumentCache.
|
|
33
26
|
* It can be used to batch up a set of changes to be written to the cache, but
|
|
@@ -43,26 +36,25 @@ interface RemoteDocumentChange {
|
|
|
43
36
|
* porting this class as part of that implementation work.
|
|
44
37
|
*/
|
|
45
38
|
export declare abstract class RemoteDocumentChangeBuffer {
|
|
46
|
-
protected changes: ObjectMap<DocumentKey,
|
|
39
|
+
protected changes: ObjectMap<DocumentKey, MutableDocument>;
|
|
47
40
|
private changesApplied;
|
|
48
41
|
protected abstract getFromCache(transaction: PersistenceTransaction, documentKey: DocumentKey): PersistencePromise<MutableDocument>;
|
|
49
42
|
protected abstract getAllFromCache(transaction: PersistenceTransaction, documentKeys: DocumentKeySet): PersistencePromise<MutableDocumentMap>;
|
|
50
43
|
protected abstract applyChanges(transaction: PersistenceTransaction): PersistencePromise<void>;
|
|
51
|
-
protected getReadTime(key: DocumentKey): SnapshotVersion;
|
|
52
44
|
/**
|
|
53
45
|
* Buffers a `RemoteDocumentCache.addEntry()` call.
|
|
54
46
|
*
|
|
55
47
|
* You can only modify documents that have already been retrieved via
|
|
56
48
|
* `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).
|
|
57
49
|
*/
|
|
58
|
-
addEntry(document: MutableDocument
|
|
50
|
+
addEntry(document: MutableDocument): void;
|
|
59
51
|
/**
|
|
60
52
|
* Buffers a `RemoteDocumentCache.removeEntry()` call.
|
|
61
53
|
*
|
|
62
54
|
* You can only remove documents that have already been retrieved via
|
|
63
55
|
* `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).
|
|
64
56
|
*/
|
|
65
|
-
removeEntry(key: DocumentKey, readTime
|
|
57
|
+
removeEntry(key: DocumentKey, readTime: SnapshotVersion): void;
|
|
66
58
|
/**
|
|
67
59
|
* Looks up an entry in the cache. The buffered changes will first be checked,
|
|
68
60
|
* and if no buffered change applies, this will forward to
|
|
@@ -94,4 +86,3 @@ export declare abstract class RemoteDocumentChangeBuffer {
|
|
|
94
86
|
/** Helper to assert this.changes is not null */
|
|
95
87
|
protected assertNotApplied(): void;
|
|
96
88
|
}
|
|
97
|
-
export {};
|
|
@@ -30,6 +30,11 @@ export interface Document {
|
|
|
30
30
|
* document was guaranteed to not exist.
|
|
31
31
|
*/
|
|
32
32
|
readonly version: SnapshotVersion;
|
|
33
|
+
/**
|
|
34
|
+
* The timestamp at which this document was read from the remote server. Uses
|
|
35
|
+
* `SnapshotVersion.min()` for documents created by the user.
|
|
36
|
+
*/
|
|
37
|
+
readonly readTime: SnapshotVersion;
|
|
33
38
|
/** The underlying data of this document or an empty value if no data exists. */
|
|
34
39
|
readonly data: ObjectValue;
|
|
35
40
|
/** Returns whether local mutations were applied via the mutation queue. */
|
|
@@ -79,6 +84,7 @@ export declare class MutableDocument implements Document {
|
|
|
79
84
|
readonly key: DocumentKey;
|
|
80
85
|
private documentType;
|
|
81
86
|
version: SnapshotVersion;
|
|
87
|
+
readTime: SnapshotVersion;
|
|
82
88
|
data: ObjectValue;
|
|
83
89
|
private documentState;
|
|
84
90
|
private constructor();
|
|
@@ -118,6 +124,7 @@ export declare class MutableDocument implements Document {
|
|
|
118
124
|
convertToUnknownDocument(version: SnapshotVersion): MutableDocument;
|
|
119
125
|
setHasCommittedMutations(): MutableDocument;
|
|
120
126
|
setHasLocalMutations(): MutableDocument;
|
|
127
|
+
setReadTime(readTime: SnapshotVersion): MutableDocument;
|
|
121
128
|
get hasLocalMutations(): boolean;
|
|
122
129
|
get hasCommittedMutations(): boolean;
|
|
123
130
|
get hasPendingWrites(): boolean;
|
|
@@ -23,6 +23,7 @@ export declare class DocumentKey {
|
|
|
23
23
|
constructor(path: ResourcePath);
|
|
24
24
|
static fromPath(path: string): DocumentKey;
|
|
25
25
|
static fromName(name: string): DocumentKey;
|
|
26
|
+
static empty(): DocumentKey;
|
|
26
27
|
/** Returns true if the document is in the specified collectionId. */
|
|
27
28
|
hasCollectionId(collectionId: string): boolean;
|
|
28
29
|
isEqual(other: DocumentKey | null): boolean;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2021 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { SnapshotVersion } from '../core/snapshot_version';
|
|
18
|
+
import { Document } from './document';
|
|
19
|
+
import { DocumentKey } from './document_key';
|
|
20
|
+
import { FieldPath } from './path';
|
|
21
|
+
/**
|
|
22
|
+
* The initial sequence number for each index. Gets updated during index
|
|
23
|
+
* backfill.
|
|
24
|
+
*/
|
|
25
|
+
export declare const INITIAL_SEQUENCE_NUMBER = 0;
|
|
26
|
+
/**
|
|
27
|
+
* An index definition for field indexes in Firestore.
|
|
28
|
+
*
|
|
29
|
+
* Every index is associated with a collection. The definition contains a list
|
|
30
|
+
* of fields and their index kind (which can be `ASCENDING`, `DESCENDING` or
|
|
31
|
+
* `CONTAINS` for ArrayContains/ArrayContainsAny queries).
|
|
32
|
+
*
|
|
33
|
+
* Unlike the backend, the SDK does not differentiate between collection or
|
|
34
|
+
* collection group-scoped indices. Every index can be used for both single
|
|
35
|
+
* collection and collection group queries.
|
|
36
|
+
*/
|
|
37
|
+
export declare class FieldIndex {
|
|
38
|
+
/**
|
|
39
|
+
* The index ID. Returns -1 if the index ID is not available (e.g. the index
|
|
40
|
+
* has not yet been persisted).
|
|
41
|
+
*/
|
|
42
|
+
readonly indexId: number;
|
|
43
|
+
/** The collection ID this index applies to. */
|
|
44
|
+
readonly collectionGroup: string;
|
|
45
|
+
/** The field segments for this index. */
|
|
46
|
+
readonly segments: IndexSegment[];
|
|
47
|
+
/** Shows how up-to-date the index is for the current user. */
|
|
48
|
+
readonly indexState: IndexState;
|
|
49
|
+
/** An ID for an index that has not yet been added to persistence. */
|
|
50
|
+
static UNKNOWN_ID: number;
|
|
51
|
+
constructor(
|
|
52
|
+
/**
|
|
53
|
+
* The index ID. Returns -1 if the index ID is not available (e.g. the index
|
|
54
|
+
* has not yet been persisted).
|
|
55
|
+
*/
|
|
56
|
+
indexId: number,
|
|
57
|
+
/** The collection ID this index applies to. */
|
|
58
|
+
collectionGroup: string,
|
|
59
|
+
/** The field segments for this index. */
|
|
60
|
+
segments: IndexSegment[],
|
|
61
|
+
/** Shows how up-to-date the index is for the current user. */
|
|
62
|
+
indexState: IndexState);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Compares indexes by collection group and segments. Ignores update time and
|
|
66
|
+
* index ID.
|
|
67
|
+
*/
|
|
68
|
+
export declare function fieldIndexSemanticComparator(left: FieldIndex, right: FieldIndex): number;
|
|
69
|
+
/** The type of the index, e.g. for which type of query it can be used. */
|
|
70
|
+
export declare const enum IndexKind {
|
|
71
|
+
/**
|
|
72
|
+
* Ordered index. Can be used for <, <=, ==, >=, >, !=, IN and NOT IN queries.
|
|
73
|
+
*/
|
|
74
|
+
ASCENDING = 0,
|
|
75
|
+
/**
|
|
76
|
+
* Ordered index. Can be used for <, <=, ==, >=, >, !=, IN and NOT IN queries.
|
|
77
|
+
*/
|
|
78
|
+
DESCENDING = 1,
|
|
79
|
+
/** Contains index. Can be used for ArrayContains and ArrayContainsAny. */
|
|
80
|
+
CONTAINS = 2
|
|
81
|
+
}
|
|
82
|
+
/** An index component consisting of field path and index type. */
|
|
83
|
+
export declare class IndexSegment {
|
|
84
|
+
/** The field path of the component. */
|
|
85
|
+
readonly fieldPath: FieldPath;
|
|
86
|
+
/** The fields sorting order. */
|
|
87
|
+
readonly kind: IndexKind;
|
|
88
|
+
constructor(
|
|
89
|
+
/** The field path of the component. */
|
|
90
|
+
fieldPath: FieldPath,
|
|
91
|
+
/** The fields sorting order. */
|
|
92
|
+
kind: IndexKind);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Stores the "high water mark" that indicates how updated the Index is for the
|
|
96
|
+
* current user.
|
|
97
|
+
*/
|
|
98
|
+
export declare class IndexState {
|
|
99
|
+
/**
|
|
100
|
+
* Indicates when the index was last updated (relative to other indexes).
|
|
101
|
+
*/
|
|
102
|
+
readonly sequenceNumber: number;
|
|
103
|
+
/** The the latest indexed read time, document and batch id. */
|
|
104
|
+
readonly offset: IndexOffset;
|
|
105
|
+
constructor(
|
|
106
|
+
/**
|
|
107
|
+
* Indicates when the index was last updated (relative to other indexes).
|
|
108
|
+
*/
|
|
109
|
+
sequenceNumber: number,
|
|
110
|
+
/** The the latest indexed read time, document and batch id. */
|
|
111
|
+
offset: IndexOffset);
|
|
112
|
+
/** The state of an index that has not yet been backfilled. */
|
|
113
|
+
static empty(): IndexState;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Creates an offset that matches all documents with a read time higher than
|
|
117
|
+
* `readTime`.
|
|
118
|
+
*/
|
|
119
|
+
export declare function newIndexOffsetSuccessorFromReadTime(readTime: SnapshotVersion, largestBatchId: number): IndexOffset;
|
|
120
|
+
/** Creates a new offset based on the provided document. */
|
|
121
|
+
export declare function newIndexOffsetFromDocument(document: Document): IndexOffset;
|
|
122
|
+
/**
|
|
123
|
+
* Stores the latest read time, document and batch ID that were processed for an
|
|
124
|
+
* index.
|
|
125
|
+
*/
|
|
126
|
+
export declare class IndexOffset {
|
|
127
|
+
/**
|
|
128
|
+
* The latest read time version that has been indexed by Firestore for this
|
|
129
|
+
* field index.
|
|
130
|
+
*/
|
|
131
|
+
readonly readTime: SnapshotVersion;
|
|
132
|
+
/**
|
|
133
|
+
* The key of the last document that was indexed for this query. Use
|
|
134
|
+
* `DocumentKey.empty()` if no document has been indexed.
|
|
135
|
+
*/
|
|
136
|
+
readonly documentKey: DocumentKey;
|
|
137
|
+
readonly largestBatchId: number;
|
|
138
|
+
constructor(
|
|
139
|
+
/**
|
|
140
|
+
* The latest read time version that has been indexed by Firestore for this
|
|
141
|
+
* field index.
|
|
142
|
+
*/
|
|
143
|
+
readTime: SnapshotVersion,
|
|
144
|
+
/**
|
|
145
|
+
* The key of the last document that was indexed for this query. Use
|
|
146
|
+
* `DocumentKey.empty()` if no document has been indexed.
|
|
147
|
+
*/
|
|
148
|
+
documentKey: DocumentKey, largestBatchId: number);
|
|
149
|
+
/** The state of an index that has not yet been backfilled. */
|
|
150
|
+
static min(): IndexOffset;
|
|
151
|
+
}
|
|
152
|
+
export declare function indexOffsetComparator(left: IndexOffset, right: IndexOffset): number;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2021 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
@@ -33,7 +33,7 @@ export declare class TestRemoteDocumentCache {
|
|
|
33
33
|
* Reads all of the documents first so we can safely add them and keep the size calculation in
|
|
34
34
|
* sync.
|
|
35
35
|
*/
|
|
36
|
-
addEntries(documents: MutableDocument[]
|
|
36
|
+
addEntries(documents: MutableDocument[]): Promise<void>;
|
|
37
37
|
/**
|
|
38
38
|
* Adds a single document using the document's version as its read time.
|
|
39
39
|
* Reads the document first to track the document size internally.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
@@ -30,6 +30,7 @@ import { Document, MutableDocument } from '../../src/model/document';
|
|
|
30
30
|
import { DocumentComparator } from '../../src/model/document_comparator';
|
|
31
31
|
import { DocumentKey } from '../../src/model/document_key';
|
|
32
32
|
import { DocumentSet } from '../../src/model/document_set';
|
|
33
|
+
import { FieldIndex, IndexKind, IndexOffset } from '../../src/model/field_index';
|
|
33
34
|
import { FieldMask } from '../../src/model/field_mask';
|
|
34
35
|
import { DeleteMutation, MutationResult, PatchMutation, Precondition, SetMutation } from '../../src/model/mutation';
|
|
35
36
|
import { JsonObject, ObjectValue } from '../../src/model/object_value';
|
|
@@ -58,6 +59,11 @@ export declare function key(path: string): DocumentKey;
|
|
|
58
59
|
export declare function keys(...documents: Array<Document | string>): DocumentKeySet;
|
|
59
60
|
export declare function path(path: string, offset?: number): ResourcePath;
|
|
60
61
|
export declare function field(path: string): FieldPath;
|
|
62
|
+
export declare function fieldIndex(collectionGroup: string, options?: {
|
|
63
|
+
id?: number;
|
|
64
|
+
fields?: Array<[field: string, kind: IndexKind]>;
|
|
65
|
+
offset?: IndexOffset;
|
|
66
|
+
}): FieldIndex;
|
|
61
67
|
export declare function mask(...paths: string[]): FieldMask;
|
|
62
68
|
export declare function blob(...bytes: number[]): Bytes;
|
|
63
69
|
export declare function filter(path: string, op: string, value: unknown): FieldFilter;
|