@firebase/firestore 3.4.13 → 3.4.14-20220804201204

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 (70) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/firestore/src/api/index_configuration.d.ts +2 -8
  3. package/dist/firestore/src/api.d.ts +1 -1
  4. package/dist/firestore/src/local/indexeddb_schema.d.ts +1 -3
  5. package/dist/firestore/src/local/local_store_impl.d.ts +2 -0
  6. package/dist/firestore/src/util/array.d.ts +18 -0
  7. package/dist/firestore/test/unit/local/counting_query_engine.d.ts +11 -0
  8. package/dist/firestore/test/unit/local/local_store_indexeddb.test.d.ts +17 -0
  9. package/dist/firestore/test/unit/specs/index_spec.test.d.ts +17 -0
  10. package/dist/firestore/test/unit/specs/spec_builder.d.ts +5 -0
  11. package/dist/firestore/test/unit/specs/spec_test_runner.d.ts +8 -0
  12. package/dist/firestore/test/unit/util/array.test.d.ts +17 -0
  13. package/dist/index.d.ts +91 -1
  14. package/dist/index.esm2017.js +2525 -2387
  15. package/dist/index.esm2017.js.map +1 -1
  16. package/dist/index.esm5.js +2383 -2282
  17. package/dist/index.esm5.js.map +1 -1
  18. package/dist/index.node.cjs.js +216 -37
  19. package/dist/index.node.cjs.js.map +1 -1
  20. package/dist/index.node.mjs +216 -37
  21. package/dist/index.node.mjs.map +1 -1
  22. package/dist/index.rn.js +2448 -2311
  23. package/dist/index.rn.js.map +1 -1
  24. package/dist/internal.d.ts +5 -13
  25. package/dist/lite/firestore/src/api/index_configuration.d.ts +2 -8
  26. package/dist/lite/firestore/src/api.d.ts +1 -1
  27. package/dist/lite/firestore/src/local/indexeddb_schema.d.ts +1 -3
  28. package/dist/lite/firestore/src/local/local_store_impl.d.ts +2 -0
  29. package/dist/lite/firestore/src/util/array.d.ts +18 -0
  30. package/dist/lite/firestore/test/unit/local/counting_query_engine.d.ts +11 -0
  31. package/dist/lite/firestore/test/unit/local/local_store_indexeddb.test.d.ts +17 -0
  32. package/dist/lite/firestore/test/unit/specs/index_spec.test.d.ts +17 -0
  33. package/dist/lite/firestore/test/unit/specs/spec_builder.d.ts +5 -0
  34. package/dist/lite/firestore/test/unit/specs/spec_test_runner.d.ts +8 -0
  35. package/dist/lite/firestore/test/unit/util/array.test.d.ts +17 -0
  36. package/dist/lite/index.browser.esm2017.js +2 -2
  37. package/dist/lite/index.browser.esm2017.js.map +1 -1
  38. package/dist/lite/index.browser.esm5.js +2 -2
  39. package/dist/lite/index.browser.esm5.js.map +1 -1
  40. package/dist/lite/index.node.cjs.js +2 -2
  41. package/dist/lite/index.node.cjs.js.map +1 -1
  42. package/dist/lite/index.node.mjs +2 -2
  43. package/dist/lite/index.node.mjs.map +1 -1
  44. package/dist/lite/index.rn.esm2017.js +2 -2
  45. package/dist/lite/index.rn.esm2017.js.map +1 -1
  46. package/dist/lite/packages/firestore/src/api/index_configuration.d.ts +2 -8
  47. package/dist/lite/packages/firestore/src/api.d.ts +1 -1
  48. package/dist/lite/packages/firestore/src/local/indexeddb_schema.d.ts +1 -3
  49. package/dist/lite/packages/firestore/src/local/local_store_impl.d.ts +2 -0
  50. package/dist/lite/packages/firestore/src/util/array.d.ts +18 -0
  51. package/dist/lite/packages/firestore/test/unit/local/counting_query_engine.d.ts +11 -0
  52. package/dist/lite/packages/firestore/test/unit/local/local_store_indexeddb.test.d.ts +17 -0
  53. package/dist/lite/packages/firestore/test/unit/specs/index_spec.test.d.ts +17 -0
  54. package/dist/lite/packages/firestore/test/unit/specs/spec_builder.d.ts +5 -0
  55. package/dist/lite/packages/firestore/test/unit/specs/spec_test_runner.d.ts +8 -0
  56. package/dist/lite/packages/firestore/test/unit/util/array.test.d.ts +17 -0
  57. package/dist/packages/firestore/dist/index.esm2017.d.ts +150 -150
  58. package/dist/packages/firestore/src/api/index_configuration.d.ts +2 -8
  59. package/dist/packages/firestore/src/api.d.ts +1 -1
  60. package/dist/packages/firestore/src/local/indexeddb_schema.d.ts +1 -3
  61. package/dist/packages/firestore/src/local/local_store_impl.d.ts +2 -0
  62. package/dist/packages/firestore/src/util/array.d.ts +18 -0
  63. package/dist/packages/firestore/test/unit/local/counting_query_engine.d.ts +11 -0
  64. package/dist/packages/firestore/test/unit/local/local_store_indexeddb.test.d.ts +17 -0
  65. package/dist/packages/firestore/test/unit/specs/index_spec.test.d.ts +17 -0
  66. package/dist/packages/firestore/test/unit/specs/spec_builder.d.ts +5 -0
  67. package/dist/packages/firestore/test/unit/specs/spec_test_runner.d.ts +8 -0
  68. package/dist/packages/firestore/test/unit/util/array.test.d.ts +17 -0
  69. package/dist/private.d.ts +92 -4
  70. package/package.json +5 -4
@@ -2407,10 +2407,8 @@ export declare function increment(n: number): FieldValue;
2407
2407
 
2408
2408
  /**
2409
2409
  * The SDK definition of a Firestore index.
2410
- *
2411
- * @internal
2412
2410
  */
2413
- declare interface Index {
2411
+ export declare interface Index {
2414
2412
  /** The ID of the collection to index. */
2415
2413
  readonly collectionGroup: string;
2416
2414
  /** A list of fields to index. */
@@ -2423,10 +2421,8 @@ declare interface Index {
2423
2421
  *
2424
2422
  * See {@link https://firebase.google.com/docs/reference/firestore/indexes/#json_format | JSON Format}
2425
2423
  * for a description of the format of the index definition.
2426
- *
2427
- * @internal
2428
2424
  */
2429
- declare interface IndexConfiguration {
2425
+ export declare interface IndexConfiguration {
2430
2426
  /** A list of all Firestore indexes. */
2431
2427
  readonly indexes?: Index[];
2432
2428
  [key: string]: unknown;
@@ -2434,10 +2430,8 @@ declare interface IndexConfiguration {
2434
2430
 
2435
2431
  /**
2436
2432
  * A single field element in an index configuration.
2437
- *
2438
- * @internal
2439
2433
  */
2440
- declare interface IndexField {
2434
+ export declare interface IndexField {
2441
2435
  /** The field path to index. */
2442
2436
  readonly fieldPath: string;
2443
2437
  /**
@@ -4738,14 +4732,13 @@ export declare function setDoc<T>(reference: DocumentReference<T>, data: Partial
4738
4732
  * before setting an index configuration. If IndexedDb is not enabled, any
4739
4733
  * index configuration is ignored.
4740
4734
  *
4741
- * @internal
4742
4735
  * @param firestore - The {@link Firestore} instance to configure indexes for.
4743
4736
  * @param configuration -The index definition.
4744
4737
  * @throws FirestoreError if the JSON format is invalid.
4745
4738
  * @returns A `Promise` that resolves once all indices are successfully
4746
4739
  * configured.
4747
4740
  */
4748
- export declare function _setIndexConfiguration(firestore: Firestore, configuration: IndexConfiguration): Promise<void>;
4741
+ export declare function setIndexConfiguration(firestore: Firestore, configuration: IndexConfiguration): Promise<void>;
4749
4742
 
4750
4743
  /**
4751
4744
  * Configures indexing for local query execution. Any previous index
@@ -4766,14 +4759,13 @@ export declare function _setIndexConfiguration(firestore: Firestore, configurati
4766
4759
  * firestore:indexes`). If the JSON format is invalid, this method throws an
4767
4760
  * error.
4768
4761
  *
4769
- * @internal
4770
4762
  * @param firestore - The {@link Firestore} instance to configure indexes for.
4771
4763
  * @param json -The JSON format exported by the Firebase CLI.
4772
4764
  * @throws FirestoreError if the JSON format is invalid.
4773
4765
  * @returns A `Promise` that resolves once all indices are successfully
4774
4766
  * configured.
4775
4767
  */
4776
- export declare function _setIndexConfiguration(firestore: Firestore, json: string): Promise<void>;
4768
+ export declare function setIndexConfiguration(firestore: Firestore, json: string): Promise<void>;
4777
4769
 
4778
4770
  /**
4779
4771
  * Sets the verbosity of Cloud Firestore logs (debug, error, or silent).
@@ -14,12 +14,11 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
+ import { FieldIndex } from '../model/field_index';
17
18
  import { Firestore } from './database';
18
19
  export { connectFirestoreEmulator, EmulatorMockTokenOptions } from '../lite-api/database';
19
20
  /**
20
21
  * A single field element in an index configuration.
21
- *
22
- * @internal
23
22
  */
24
23
  export interface IndexField {
25
24
  /** The field path to index. */
@@ -42,8 +41,6 @@ export interface IndexField {
42
41
  }
43
42
  /**
44
43
  * The SDK definition of a Firestore index.
45
- *
46
- * @internal
47
44
  */
48
45
  export interface Index {
49
46
  /** The ID of the collection to index. */
@@ -57,8 +54,6 @@ export interface Index {
57
54
  *
58
55
  * See {@link https://firebase.google.com/docs/reference/firestore/indexes/#json_format | JSON Format}
59
56
  * for a description of the format of the index definition.
60
- *
61
- * @internal
62
57
  */
63
58
  export interface IndexConfiguration {
64
59
  /** A list of all Firestore indexes. */
@@ -80,7 +75,6 @@ export interface IndexConfiguration {
80
75
  * before setting an index configuration. If IndexedDb is not enabled, any
81
76
  * index configuration is ignored.
82
77
  *
83
- * @internal
84
78
  * @param firestore - The {@link Firestore} instance to configure indexes for.
85
79
  * @param configuration -The index definition.
86
80
  * @throws FirestoreError if the JSON format is invalid.
@@ -107,7 +101,6 @@ export declare function setIndexConfiguration(firestore: Firestore, configuratio
107
101
  * firestore:indexes`). If the JSON format is invalid, this method throws an
108
102
  * error.
109
103
  *
110
- * @internal
111
104
  * @param firestore - The {@link Firestore} instance to configure indexes for.
112
105
  * @param json -The JSON format exported by the Firebase CLI.
113
106
  * @throws FirestoreError if the JSON format is invalid.
@@ -115,3 +108,4 @@ export declare function setIndexConfiguration(firestore: Firestore, configuratio
115
108
  * configured.
116
109
  */
117
110
  export declare function setIndexConfiguration(firestore: Firestore, json: string): Promise<void>;
111
+ export declare function parseIndexes(jsonOrConfiguration: string | IndexConfiguration): FieldIndex[];
@@ -36,6 +36,7 @@ export { CACHE_SIZE_UNLIMITED } from './api/database';
36
36
  export { FirestoreErrorCode, FirestoreError } from './util/error';
37
37
  export { AbstractUserDataWriter } from './lite-api/user_data_writer';
38
38
  export { Primitive, NestedUpdateFields, ChildUpdateFields, AddPrefixToKeys, UnionToIntersection } from '../src/lite-api/types';
39
+ export { setIndexConfiguration, Index, IndexConfiguration, IndexField } from './api/index_configuration';
39
40
  /**
40
41
  * Internal exports
41
42
  */
@@ -50,4 +51,3 @@ export type { ByteString as _ByteString } from './util/byte_string';
50
51
  export { logWarn as _logWarn } from './util/log';
51
52
  export { EmptyAuthCredentialsProvider as _EmptyAuthCredentialsProvider } from './api/credentials';
52
53
  export { EmptyAppCheckTokenProvider as _EmptyAppCheckTokenProvider } from './api/credentials';
53
- export { setIndexConfiguration as _setIndexConfiguration } from './api/index_configuration';
@@ -20,8 +20,6 @@ import { BundledQuery } from '../protos/firestore_bundle_proto';
20
20
  import { Document as ProtoDocument, DocumentsTarget as ProtoDocumentsTarget, QueryTarget as ProtoQueryTarget, Write as ProtoWrite } from '../protos/firestore_proto_api';
21
21
  import { EncodedResourcePath } from './encoded_resource_path';
22
22
  import { DbTimestampKey } from './indexeddb_sentinels';
23
- export declare const INDEXING_ENABLED = false;
24
- export declare const INDEXING_SCHEMA_VERSION = 15;
25
23
  /**
26
24
  * Schema Version for the Web client:
27
25
  * 1. Initial version including Mutation Queue, Query Cache, and Remote
@@ -46,7 +44,7 @@ export declare const INDEXING_SCHEMA_VERSION = 15;
46
44
  * 14. Add overlays.
47
45
  * 15. Add indexing support.
48
46
  */
49
- export declare const SCHEMA_VERSION: number;
47
+ export declare const SCHEMA_VERSION = 15;
50
48
  /**
51
49
  * Wrapper class to store timestamps (seconds and nanos) in IndexedDb objects.
52
50
  */
@@ -23,6 +23,7 @@ import { BatchId, TargetId } from '../core/types';
23
23
  import { DocumentKeySet, DocumentMap } from '../model/collections';
24
24
  import { Document } from '../model/document';
25
25
  import { DocumentKey } from '../model/document_key';
26
+ import { FieldIndex } from '../model/field_index';
26
27
  import { Mutation } from '../model/mutation';
27
28
  import { MutationBatch, MutationBatchResult } from '../model/mutation_batch';
28
29
  import { BundleMetadata, NamedQuery as ProtoNamedQuery } from '../protos/firestore_bundle_proto';
@@ -192,3 +193,4 @@ export declare function localStoreGetNamedQuery(localStore: LocalStore, queryNam
192
193
  * Saves the given `NamedQuery` to local persistence.
193
194
  */
194
195
  export declare function localStoreSaveNamedQuery(localStore: LocalStore, query: ProtoNamedQuery, documents?: DocumentKeySet): Promise<void>;
196
+ export declare function localStoreConfigureFieldIndexes(localStore: LocalStore, newFieldIndexes: FieldIndex[]): Promise<void>;
@@ -28,3 +28,21 @@ export declare function some<T>(array: T[], predicate: (t: T) => boolean): boole
28
28
  * predicate does not return true for any item, null is returned.
29
29
  */
30
30
  export declare function findIndex<A>(array: A[], predicate: (value: A) => boolean): number | null;
31
+ /**
32
+ * Compares two array for equality using comparator. The method computes the
33
+ * intersection and invokes `onAdd` for every element that is in `after` but not
34
+ * `before`. `onRemove` is invoked for every element in `before` but missing
35
+ * from `after`.
36
+ *
37
+ * The method creates a copy of both `before` and `after` and runs in O(n log
38
+ * n), where n is the size of the two lists.
39
+ *
40
+ * @param before - The elements that exist in the original array.
41
+ * @param after - The elements to diff against the original array.
42
+ * @param comparator - The comparator for the elements in before and after.
43
+ * @param onAdd - A function to invoke for every element that is part of `
44
+ * after` but not `before`.
45
+ * @param onRemove - A function to invoke for every element that is part of
46
+ * `before` but not `after`.
47
+ */
48
+ export declare function diffArrays<T>(before: T[], after: T[], comparator: (l: T, r: T) => number, onAdd: (entry: T) => void, onRemove: (entry: T) => void): void;
@@ -50,9 +50,20 @@ export declare class CountingQueryEngine extends QueryEngine {
50
50
  * and `getEntries()` APIs (since the last call to `resetCounts()`)
51
51
  */
52
52
  documentsReadByKey: number;
53
+ /**
54
+ * The number of documents returned by the OverlayCache's `getOverlays()`
55
+ * API (since the last call to `resetCounts()`)
56
+ */
57
+ overlaysReadByCollection: number;
58
+ /**
59
+ * The number of documents returned by the OverlayCache's `getOverlay()`
60
+ * APIs (since the last call to `resetCounts()`)
61
+ */
62
+ overlaysReadByKey: number;
53
63
  resetCounts(): void;
54
64
  getDocumentsMatchingQuery(transaction: PersistenceTransaction, query: Query, lastLimboFreeSnapshotVersion: SnapshotVersion, remoteKeys: DocumentKeySet): PersistencePromise<DocumentMap>;
55
65
  initialize(localDocuments: LocalDocumentsView, indexManager: IndexManager): void;
56
66
  private wrapRemoteDocumentCache;
57
67
  private wrapMutationQueue;
68
+ private wrapDocumentOverlayCache;
58
69
  }
@@ -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 {};
@@ -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 {};
@@ -14,12 +14,14 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
+ import { IndexConfiguration } from '../../../src/api/index_configuration';
17
18
  import { Query } from '../../../src/core/query';
18
19
  import { Target } from '../../../src/core/target';
19
20
  import { TargetIdGenerator } from '../../../src/core/target_id_generator';
20
21
  import { TargetId } from '../../../src/core/types';
21
22
  import { Document } from '../../../src/model/document';
22
23
  import { DocumentKey } from '../../../src/model/document_key';
24
+ import { FieldIndex } from '../../../src/model/field_index';
23
25
  import { JsonObject } from '../../../src/model/object_value';
24
26
  import { TimerId } from '../../../src/util/async_queue';
25
27
  import { Code } from '../../../src/util/error';
@@ -113,6 +115,7 @@ export declare class SpecBuilder {
113
115
  userAddsSnapshotsInSyncListener(): this;
114
116
  userRemovesSnapshotsInSyncListener(): this;
115
117
  loadBundle(bundleContent: string): this;
118
+ setIndexConfiguration(jsonOrConfiguration: string | IndexConfiguration): this;
116
119
  becomeHidden(): this;
117
120
  becomeVisible(): this;
118
121
  runTimer(timerId: TimerId): this;
@@ -130,6 +133,8 @@ export declare class SpecBuilder {
130
133
  /** Stops failing database operations. */
131
134
  recoverDatabase(): this;
132
135
  expectIsShutdown(): this;
136
+ /** Expects indexes to exist (in any order) */
137
+ expectIndexes(indexes: FieldIndex[]): this;
133
138
  /** Overrides the currently expected set of active targets. */
134
139
  expectActiveTargets(...targets: Array<{
135
140
  query: Query;
@@ -14,8 +14,10 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
+ import { IndexConfiguration } from '../../../src/api/index_configuration';
17
18
  import { Query } from '../../../src/core/query';
18
19
  import { TargetId } from '../../../src/core/types';
20
+ import { FieldIndex } from '../../../src/model/field_index';
19
21
  import { JsonObject } from '../../../src/model/object_value';
20
22
  import { TestSnapshotVersion } from '../../util/helpers';
21
23
  import { ActiveTargetMap } from './spec_builder';
@@ -95,6 +97,10 @@ export interface SpecStep {
95
97
  waitForPendingWrites?: true;
96
98
  /** Fails the listed database actions. */
97
99
  failDatabase?: false | PersistenceAction[];
100
+ /**
101
+ * Set Index Configuration
102
+ */
103
+ setIndexConfiguration?: string | IndexConfiguration;
98
104
  /**
99
105
  * Run a queued timer task (without waiting for the delay to expire). See
100
106
  * TimerId enum definition for possible values).
@@ -306,5 +312,7 @@ export interface StateExpectation {
306
312
  acknowledgedDocs: string[];
307
313
  rejectedDocs: string[];
308
314
  };
315
+ /** Indexes */
316
+ indexes?: FieldIndex[];
309
317
  }
310
318
  export {};
@@ -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 {};
@@ -63,7 +63,7 @@ l.MOCK_USER = new l("mock-user");
63
63
  * See the License for the specific language governing permissions and
64
64
  * limitations under the License.
65
65
  */
66
- let f = "9.9.1";
66
+ let f = "9.9.2-20220804201204";
67
67
 
68
68
  /**
69
69
  * @license
@@ -6485,7 +6485,7 @@ class Gr {
6485
6485
  return e && r._setSettings(e), r;
6486
6486
  }), "PUBLIC")),
6487
6487
  // RUNTIME_ENV and BUILD_TARGET are replaced by real values during the compilation
6488
- registerVersion("firestore-lite", "3.4.13", ""), registerVersion("firestore-lite", "3.4.13", "esm2017");
6488
+ registerVersion("firestore-lite", "3.4.14-20220804201204", ""), registerVersion("firestore-lite", "3.4.14-20220804201204", "esm2017");
6489
6489
 
6490
6490
  export { In as Bytes, pn as CollectionReference, wn as DocumentReference, Zn as DocumentSnapshot, En as FieldPath, An as FieldValue, an as Firestore, L as FirestoreError, Rn as GeoPoint, mn as Query, sr as QueryConstraint, tr as QueryDocumentSnapshot, er as QuerySnapshot, gt as Timestamp, Gr as Transaction, Or as WriteBatch, Dr as addDoc, Sr as arrayRemove, Fr as arrayUnion, yn as collection, _n as collectionGroup, fn as connectFirestoreEmulator, Nr as deleteDoc, $r as deleteField, gn as doc, Tn as documentId, _r as endAt, yr as endBefore, Ar as getDoc, Rr as getDocs, ln as getFirestore, qr as increment, hn as initializeFirestore, lr as limit, fr as limitToLast, ar as orderBy, ir as query, bn as queryEqual, vn as refEqual, Wr as runTransaction, xr as serverTimestamp, Pr as setDoc, w as setLogLevel, nr as snapshotEqual, mr as startAfter, wr as startAt, dn as terminate, Vr as updateDoc, ur as where, Cr as writeBatch };
6491
6491
  //# sourceMappingURL=index.browser.esm2017.js.map