@firebase/firestore 3.4.3 → 3.4.4-202202622812

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.
Files changed (49) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/firestore/src/api/database.d.ts +14 -9
  3. package/dist/firestore/src/api/index_configuration.d.ts +117 -0
  4. package/dist/firestore/src/api.d.ts +1 -0
  5. package/dist/firestore/src/core/firestore_client.d.ts +2 -0
  6. package/dist/firestore/src/model/field_index.d.ts +76 -0
  7. package/dist/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
  8. package/dist/index.d.ts +15 -9
  9. package/dist/index.esm2017.js +663 -602
  10. package/dist/index.esm2017.js.map +1 -1
  11. package/dist/index.esm5.js +680 -617
  12. package/dist/index.esm5.js.map +1 -1
  13. package/dist/index.node.cjs.js +100 -13
  14. package/dist/index.node.cjs.js.map +1 -1
  15. package/dist/index.node.mjs +100 -14
  16. package/dist/index.node.mjs.map +1 -1
  17. package/dist/index.rn.js +705 -602
  18. package/dist/index.rn.js.map +1 -1
  19. package/dist/internal.d.ts +120 -9
  20. package/dist/lite/firestore/src/api/database.d.ts +14 -9
  21. package/dist/lite/firestore/src/api/index_configuration.d.ts +117 -0
  22. package/dist/lite/firestore/src/api.d.ts +1 -0
  23. package/dist/lite/firestore/src/core/firestore_client.d.ts +2 -0
  24. package/dist/lite/firestore/src/model/field_index.d.ts +76 -0
  25. package/dist/lite/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
  26. package/dist/lite/index.browser.esm2017.js +2 -2
  27. package/dist/lite/index.browser.esm2017.js.map +1 -1
  28. package/dist/lite/index.browser.esm5.js +2 -2
  29. package/dist/lite/index.browser.esm5.js.map +1 -1
  30. package/dist/lite/index.node.cjs.js +2 -2
  31. package/dist/lite/index.node.mjs +2 -2
  32. package/dist/lite/index.node.mjs.map +1 -1
  33. package/dist/lite/index.rn.esm2017.js +2 -2
  34. package/dist/lite/index.rn.esm2017.js.map +1 -1
  35. package/dist/lite/packages/firestore/src/api/database.d.ts +14 -9
  36. package/dist/lite/packages/firestore/src/api/index_configuration.d.ts +117 -0
  37. package/dist/lite/packages/firestore/src/api.d.ts +1 -0
  38. package/dist/lite/packages/firestore/src/core/firestore_client.d.ts +2 -0
  39. package/dist/lite/packages/firestore/src/model/field_index.d.ts +76 -0
  40. package/dist/lite/packages/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
  41. package/dist/packages/firestore/dist/index.esm2017.d.ts +152 -131
  42. package/dist/packages/firestore/src/api/database.d.ts +14 -9
  43. package/dist/packages/firestore/src/api/index_configuration.d.ts +117 -0
  44. package/dist/packages/firestore/src/api.d.ts +1 -0
  45. package/dist/packages/firestore/src/core/firestore_client.d.ts +2 -0
  46. package/dist/packages/firestore/src/model/field_index.d.ts +76 -0
  47. package/dist/packages/firestore/test/integration/api/index_configuration.test.d.ts +17 -0
  48. package/dist/private.d.ts +24 -9
  49. package/package.json +5 -5
@@ -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 for.
213
- * @param bundleData - An object representing the bundle to be loaded. Valid objects are
214
- * `ArrayBuffer`, `ReadableStream<Uint8Array>` or `string`.
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
- * A `LoadBundleTask` object, which notifies callers with progress updates, and completion
218
- * or error events. It can be used as a `Promise<LoadBundleTaskProgress>`.
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 name.
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 in local
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.
@@ -0,0 +1,76 @@
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 { FieldPath } from './path';
18
+ /**
19
+ * An index definition for field indexes in Firestore.
20
+ *
21
+ * Every index is associated with a collection. The definition contains a list
22
+ * of fields and their index kind (which can be `ASCENDING`, `DESCENDING` or
23
+ * `CONTAINS` for ArrayContains/ArrayContainsAny queries).
24
+ *
25
+ * Unlike the backend, the SDK does not differentiate between collection or
26
+ * collection group-scoped indices. Every index can be used for both single
27
+ * collection and collection group queries.
28
+ */
29
+ export declare class FieldIndex {
30
+ /**
31
+ * The index ID. Returns -1 if the index ID is not available (e.g. the index
32
+ * has not yet been persisted).
33
+ */
34
+ readonly indexId: number;
35
+ /** The collection ID this index applies to. */
36
+ readonly collectionGroup: string;
37
+ /** The field segments for this index. */
38
+ readonly segments: Segment[];
39
+ /** An ID for an index that has not yet been added to persistence. */
40
+ static UNKNOWN_ID: -1;
41
+ constructor(
42
+ /**
43
+ * The index ID. Returns -1 if the index ID is not available (e.g. the index
44
+ * has not yet been persisted).
45
+ */
46
+ indexId: number,
47
+ /** The collection ID this index applies to. */
48
+ collectionGroup: string,
49
+ /** The field segments for this index. */
50
+ segments: Segment[]);
51
+ }
52
+ /** The type of the index, e.g. for which type of query it can be used. */
53
+ export declare const enum Kind {
54
+ /**
55
+ * Ordered index. Can be used for <, <=, ==, >=, >, !=, IN and NOT IN queries.
56
+ */
57
+ ASCENDING = 0,
58
+ /**
59
+ * Ordered index. Can be used for <, <=, ==, >=, >, !=, IN and NOT IN queries.
60
+ */
61
+ DESCENDING = 1,
62
+ /** Contains index. Can be used for ArrayContains and ArrayContainsAny. */
63
+ CONTAINS = 2
64
+ }
65
+ /** An index component consisting of field path and index type. */
66
+ export declare class Segment {
67
+ /** The field path of the component. */
68
+ readonly fieldPath: FieldPath;
69
+ /** The fields sorting order. */
70
+ readonly kind: Kind;
71
+ constructor(
72
+ /** The field path of the component. */
73
+ fieldPath: FieldPath,
74
+ /** The fields sorting order. */
75
+ kind: Kind);
76
+ }
@@ -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 {};
package/dist/private.d.ts CHANGED
@@ -1352,6 +1352,7 @@ declare class FirestoreClient {
1352
1352
  private user;
1353
1353
  private readonly clientId;
1354
1354
  private authCredentialListener;
1355
+ private appCheckCredentialListener;
1355
1356
  offlineComponents?: OfflineComponentProvider;
1356
1357
  onlineComponents?: OnlineComponentProvider;
1357
1358
  constructor(authCredentials: CredentialsProvider<User>, appCheckCredentials: CredentialsProvider<string>,
@@ -1366,6 +1367,7 @@ declare class FirestoreClient {
1366
1367
  asyncQueue: AsyncQueue, databaseInfo: DatabaseInfo);
1367
1368
  getConfiguration(): Promise<ComponentConfiguration>;
1368
1369
  setCredentialChangeListener(listener: (user: User) => Promise<void>): void;
1370
+ setAppCheckTokenChangeListener(listener: (appCheckToken: string, user: User) => Promise<void>): void;
1369
1371
  /**
1370
1372
  * Checks that the client has not been terminated. Ensures that other methods on
1371
1373
  * this class cannot be called after the client is terminated.
@@ -2139,6 +2141,12 @@ export declare function getFirestore(app?: FirebaseApp): Firestore;
2139
2141
  */
2140
2142
  export declare function increment(n: number): FieldValue;
2141
2143
 
2144
+ /* Excluded from this release type: Index */
2145
+
2146
+ /* Excluded from this release type: IndexConfiguration */
2147
+
2148
+ /* Excluded from this release type: IndexField */
2149
+
2142
2150
  declare type IndexFieldMode = 'MODE_UNSPECIFIED' | 'ASCENDING' | 'DESCENDING';
2143
2151
 
2144
2152
  /**
@@ -2267,13 +2275,13 @@ declare class LLRBNode<K, V> {
2267
2275
  /**
2268
2276
  * Loads a Firestore bundle into the local cache.
2269
2277
  *
2270
- * @param firestore - The {@link Firestore} instance to load bundles for for.
2271
- * @param bundleData - An object representing the bundle to be loaded. Valid objects are
2272
- * `ArrayBuffer`, `ReadableStream<Uint8Array>` or `string`.
2278
+ * @param firestore - The {@link Firestore} instance to load bundles for.
2279
+ * @param bundleData - An object representing the bundle to be loaded. Valid
2280
+ * objects are `ArrayBuffer`, `ReadableStream<Uint8Array>` or `string`.
2273
2281
  *
2274
- * @returns
2275
- * A `LoadBundleTask` object, which notifies callers with progress updates, and completion
2276
- * or error events. It can be used as a `Promise<LoadBundleTaskProgress>`.
2282
+ * @returns A `LoadBundleTask` object, which notifies callers with progress
2283
+ * updates, and completion or error events. It can be used as a
2284
+ * `Promise<LoadBundleTaskProgress>`.
2277
2285
  */
2278
2286
  export declare function loadBundle(firestore: Firestore, bundleData: ReadableStream<Uint8Array> | ArrayBuffer | string): LoadBundleTask;
2279
2287
 
@@ -2748,11 +2756,16 @@ declare interface NamedQuery {
2748
2756
  }
2749
2757
 
2750
2758
  /**
2751
- * Reads a Firestore {@link Query} from local cache, identified by the given name.
2759
+ * Reads a Firestore {@link Query} from local cache, identified by the given
2760
+ * name.
2752
2761
  *
2753
2762
  * The named queries are packaged into bundles on the server side (along
2754
- * with resulting documents), and loaded to local cache using `loadBundle`. Once in local
2755
- * cache, use this method to extract a {@link Query} by name.
2763
+ * with resulting documents), and loaded to local cache using `loadBundle`. Once
2764
+ * in local cache, use this method to extract a {@link Query} by name.
2765
+ *
2766
+ * @param firestore - The {@link Firestore} instance to read the query from.
2767
+ * @param name - The name of the query.
2768
+ * @returns A `Promise` that is resolved with the Query or `null`.
2756
2769
  */
2757
2770
  export declare function namedQuery(firestore: Firestore, name: string): Promise<Query | null>;
2758
2771
 
@@ -4031,6 +4044,8 @@ export declare function setDoc<T>(reference: DocumentReference<T>, data: WithFie
4031
4044
  */
4032
4045
  export declare function setDoc<T>(reference: DocumentReference<T>, data: PartialWithFieldValue<T>, options: SetOptions): Promise<void>;
4033
4046
 
4047
+ /* Excluded from this release type: _setIndexConfiguration */
4048
+
4034
4049
  /**
4035
4050
  * Sets the verbosity of Cloud Firestore logs (debug, error, or silent).
4036
4051
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firebase/firestore",
3
- "version": "3.4.3",
3
+ "version": "3.4.4-202202622812",
4
4
  "engines": {
5
5
  "node": ">=10.10.0"
6
6
  },
@@ -83,16 +83,16 @@
83
83
  "@firebase/webchannel-wrapper": "0.6.1",
84
84
  "@grpc/grpc-js": "^1.3.2",
85
85
  "@grpc/proto-loader": "^0.6.0",
86
- "node-fetch": "2.6.5",
86
+ "node-fetch": "2.6.7",
87
87
  "tslib": "^2.1.0"
88
88
  },
89
89
  "peerDependencies": {
90
90
  "@firebase/app": "0.x"
91
91
  },
92
92
  "devDependencies": {
93
- "@firebase/app": "0.7.13",
94
- "@firebase/app-compat": "0.1.14",
95
- "@firebase/auth": "0.19.5",
93
+ "@firebase/app": "0.7.14",
94
+ "@firebase/app-compat": "0.1.15",
95
+ "@firebase/auth": "0.19.7-202202622812",
96
96
  "@rollup/plugin-alias": "3.1.5",
97
97
  "@rollup/plugin-json": "4.1.0",
98
98
  "@types/eslint": "7.28.0",