@firebase/firestore 3.5.0-canary.5b696dece → 3.5.0-canary.e35db6f95

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 (75) hide show
  1. package/dist/firestore/src/api/aggregate.d.ts +29 -0
  2. package/dist/firestore/src/core/firestore_client.d.ts +5 -0
  3. package/dist/firestore/src/lite-api/aggregate.d.ts +92 -0
  4. package/dist/firestore/src/platform/node/grpc_connection.d.ts +1 -0
  5. package/dist/firestore/src/protos/firestore_proto_api.d.ts +28 -0
  6. package/dist/firestore/src/remote/connection.d.ts +7 -0
  7. package/dist/firestore/src/remote/datastore.d.ts +2 -0
  8. package/dist/firestore/src/remote/rest_connection.d.ts +1 -0
  9. package/dist/firestore/src/remote/serializer.d.ts +2 -1
  10. package/dist/firestore/test/integration/api_internal/aggregation.test.d.ts +17 -0
  11. package/dist/firestore/test/integration/util/helpers.d.ts +1 -0
  12. package/dist/firestore/test/unit/specs/spec_test_components.d.ts +1 -0
  13. package/dist/index.esm2017.js +3273 -3267
  14. package/dist/index.esm2017.js.map +1 -1
  15. package/dist/index.esm5.js +3791 -3797
  16. package/dist/index.esm5.js.map +1 -1
  17. package/dist/index.node.cjs.js +3622 -3477
  18. package/dist/index.node.cjs.js.map +1 -1
  19. package/dist/index.node.mjs +3622 -3477
  20. package/dist/index.node.mjs.map +1 -1
  21. package/dist/index.rn.js +3273 -3267
  22. package/dist/index.rn.js.map +1 -1
  23. package/dist/internal.d.ts +26 -0
  24. package/dist/lite/firestore/src/api/aggregate.d.ts +29 -0
  25. package/dist/lite/firestore/src/core/firestore_client.d.ts +5 -0
  26. package/dist/lite/firestore/src/lite-api/aggregate.d.ts +92 -0
  27. package/dist/lite/firestore/src/platform/node/grpc_connection.d.ts +1 -0
  28. package/dist/lite/firestore/src/protos/firestore_proto_api.d.ts +28 -0
  29. package/dist/lite/firestore/src/remote/connection.d.ts +7 -0
  30. package/dist/lite/firestore/src/remote/datastore.d.ts +2 -0
  31. package/dist/lite/firestore/src/remote/rest_connection.d.ts +1 -0
  32. package/dist/lite/firestore/src/remote/serializer.d.ts +2 -1
  33. package/dist/lite/firestore/test/integration/api_internal/aggregation.test.d.ts +17 -0
  34. package/dist/lite/firestore/test/integration/util/helpers.d.ts +1 -0
  35. package/dist/lite/firestore/test/unit/specs/spec_test_components.d.ts +1 -0
  36. package/dist/lite/index.browser.esm2017.js +285 -279
  37. package/dist/lite/index.browser.esm2017.js.map +1 -1
  38. package/dist/lite/index.browser.esm5.js +359 -350
  39. package/dist/lite/index.browser.esm5.js.map +1 -1
  40. package/dist/lite/index.node.cjs.js +8 -2
  41. package/dist/lite/index.node.cjs.js.map +1 -1
  42. package/dist/lite/index.node.mjs +8 -2
  43. package/dist/lite/index.node.mjs.map +1 -1
  44. package/dist/lite/index.rn.esm2017.js +293 -287
  45. package/dist/lite/index.rn.esm2017.js.map +1 -1
  46. package/dist/lite/internal.d.ts +26 -0
  47. package/dist/lite/packages/firestore/dist/lite/index.browser.esm2017.d.ts +25 -25
  48. package/dist/lite/packages/firestore/src/api/aggregate.d.ts +29 -0
  49. package/dist/lite/packages/firestore/src/core/firestore_client.d.ts +5 -0
  50. package/dist/lite/packages/firestore/src/lite-api/aggregate.d.ts +92 -0
  51. package/dist/lite/packages/firestore/src/platform/node/grpc_connection.d.ts +1 -0
  52. package/dist/lite/packages/firestore/src/protos/firestore_proto_api.d.ts +28 -0
  53. package/dist/lite/packages/firestore/src/remote/connection.d.ts +7 -0
  54. package/dist/lite/packages/firestore/src/remote/datastore.d.ts +2 -0
  55. package/dist/lite/packages/firestore/src/remote/rest_connection.d.ts +1 -0
  56. package/dist/lite/packages/firestore/src/remote/serializer.d.ts +2 -1
  57. package/dist/lite/packages/firestore/test/integration/api_internal/aggregation.test.d.ts +17 -0
  58. package/dist/lite/packages/firestore/test/integration/util/helpers.d.ts +1 -0
  59. package/dist/lite/packages/firestore/test/unit/specs/spec_test_components.d.ts +1 -0
  60. package/dist/lite/private.d.ts +26 -0
  61. package/dist/packages/firestore/dist/index.esm2017.d.ts +166 -193
  62. package/dist/packages/firestore/src/api/aggregate.d.ts +29 -0
  63. package/dist/packages/firestore/src/core/firestore_client.d.ts +5 -0
  64. package/dist/packages/firestore/src/lite-api/aggregate.d.ts +92 -0
  65. package/dist/packages/firestore/src/platform/node/grpc_connection.d.ts +1 -0
  66. package/dist/packages/firestore/src/protos/firestore_proto_api.d.ts +28 -0
  67. package/dist/packages/firestore/src/remote/connection.d.ts +7 -0
  68. package/dist/packages/firestore/src/remote/datastore.d.ts +2 -0
  69. package/dist/packages/firestore/src/remote/rest_connection.d.ts +1 -0
  70. package/dist/packages/firestore/src/remote/serializer.d.ts +2 -1
  71. package/dist/packages/firestore/test/integration/api_internal/aggregation.test.d.ts +17 -0
  72. package/dist/packages/firestore/test/integration/util/helpers.d.ts +1 -0
  73. package/dist/packages/firestore/test/unit/specs/spec_test_components.d.ts +1 -0
  74. package/dist/private.d.ts +26 -0
  75. package/package.json +9 -9
@@ -0,0 +1,29 @@
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
+ import { Query } from '../api';
18
+ import { AggregateField, AggregateQuerySnapshot } from '../lite-api/aggregate';
19
+ /**
20
+ * Executes the query and returns the results as a `AggregateQuerySnapshot` from the
21
+ * server. Returns an error if the network is not available.
22
+ *
23
+ * @param query - The `Query` to execute.
24
+ *
25
+ * @returns A `Promise` that will be resolved with the results of the query.
26
+ */
27
+ export declare function getCountFromServer(query: Query<unknown>): Promise<AggregateQuerySnapshot<{
28
+ count: AggregateField<number>;
29
+ }>>;
@@ -18,6 +18,8 @@ import { GetOptions } from '@firebase/firestore-types';
18
18
  import { LoadBundleTask } from '../api/bundle';
19
19
  import { CredentialsProvider } from '../api/credentials';
20
20
  import { User } from '../auth/user';
21
+ import { AggregateField, AggregateQuerySnapshot } from '../lite-api/aggregate';
22
+ import { Query as LiteQuery } from '../lite-api/reference';
21
23
  import { LocalStore } from '../local/local_store';
22
24
  import { Document } from '../model/document';
23
25
  import { DocumentKey } from '../model/document_key';
@@ -115,5 +117,8 @@ export declare function firestoreClientAddSnapshotsInSyncListener(client: Firest
115
117
  * performed before any writes. Transactions must be performed while online.
116
118
  */
117
119
  export declare function firestoreClientTransaction<T>(client: FirestoreClient, updateFunction: (transaction: Transaction) => Promise<T>, options: TransactionOptions): Promise<T>;
120
+ export declare function firestoreClientRunCountQuery(client: FirestoreClient, query: LiteQuery<unknown>): Promise<AggregateQuerySnapshot<{
121
+ count: AggregateField<number>;
122
+ }>>;
118
123
  export declare function firestoreClientLoadBundle(client: FirestoreClient, databaseId: DatabaseId, data: ReadableStream<Uint8Array> | ArrayBuffer | string, resultTask: LoadBundleTask): void;
119
124
  export declare function firestoreClientGetNamedQuery(client: FirestoreClient, queryName: string): Promise<NamedQuery | undefined>;
@@ -0,0 +1,92 @@
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
+ import { Query } from './reference';
18
+ /**
19
+ * An `AggregateField`that captures input type T.
20
+ */
21
+ export declare class AggregateField<T> {
22
+ type: string;
23
+ }
24
+ /**
25
+ * Creates and returns an aggregation field that counts the documents in the result set.
26
+ * @returns An `AggregateField` object with number input type.
27
+ */
28
+ export declare function count(): AggregateField<number>;
29
+ /**
30
+ * The union of all `AggregateField` types that are returned from the factory
31
+ * functions.
32
+ */
33
+ export declare type AggregateFieldType = ReturnType<typeof count>;
34
+ /**
35
+ * A type whose values are all `AggregateField` objects.
36
+ * This is used as an argument to the "getter" functions, and the snapshot will
37
+ * map the same names to the corresponding values.
38
+ */
39
+ export interface AggregateSpec {
40
+ [field: string]: AggregateFieldType;
41
+ }
42
+ /**
43
+ * A type whose keys are taken from an `AggregateSpec` type, and whose values
44
+ * are the result of the aggregation performed by the corresponding
45
+ * `AggregateField` from the input `AggregateSpec`.
46
+ */
47
+ export declare type AggregateSpecData<T extends AggregateSpec> = {
48
+ [P in keyof T]: T[P] extends AggregateField<infer U> ? U : never;
49
+ };
50
+ /**
51
+ * An `AggregateQuerySnapshot` contains the results of running an aggregate query.
52
+ */
53
+ export declare class AggregateQuerySnapshot<T extends AggregateSpec> {
54
+ readonly query: Query<unknown>;
55
+ private readonly _data;
56
+ readonly type = "AggregateQuerySnapshot";
57
+ /** @hideconstructor */
58
+ constructor(query: Query<unknown>, _data: AggregateSpecData<T>);
59
+ /**
60
+ * The results of the requested aggregations. The keys of the returned object
61
+ * will be the same as those of the `AggregateSpec` object specified to the
62
+ * aggregation method, and the values will be the corresponding aggregation
63
+ * result.
64
+ *
65
+ * @returns The aggregation statistics result of running a query.
66
+ */
67
+ data(): AggregateSpecData<T>;
68
+ }
69
+ /**
70
+ * Counts the number of documents in the result set of the given query, ignoring
71
+ * any locally-cached data and any locally-pending writes and simply surfacing
72
+ * whatever the server returns. If the server cannot be reached then the
73
+ * returned promise will be rejected.
74
+ *
75
+ * @param query - The `Query` to execute.
76
+ *
77
+ * @returns An `AggregateQuerySnapshot` that contains the number of documents.
78
+ */
79
+ export declare function getCount(query: Query<unknown>): Promise<AggregateQuerySnapshot<{
80
+ count: AggregateField<number>;
81
+ }>>;
82
+ /**
83
+ * Compares two `AggregateQuerySnapshot` instances for equality.
84
+ * Two `AggregateQuerySnapshot` instances are considered "equal" if they have
85
+ * the same underlying query, and the same data.
86
+ *
87
+ * @param left - The `AggregateQuerySnapshot` to compare.
88
+ * @param right - The `AggregateQuerySnapshot` to compare.
89
+ *
90
+ * @returns true if the AggregateQuerySnapshots are equal.
91
+ */
92
+ export declare function aggregateQuerySnapshotEqual<T extends AggregateSpec>(left: AggregateQuerySnapshot<T>, right: AggregateQuerySnapshot<T>): boolean;
@@ -26,6 +26,7 @@ export declare class GrpcConnection implements Connection {
26
26
  private readonly databasePath;
27
27
  private readonly firestore;
28
28
  private cachedStub;
29
+ get shouldResourcePathBeIncludedInRequest(): boolean;
29
30
  constructor(protos: grpc.GrpcObject, databaseInfo: DatabaseInfo);
30
31
  private ensureActiveStub;
31
32
  invokeRPC<Req, Resp>(rpcName: string, path: string, request: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp>;
@@ -295,6 +295,32 @@ export declare namespace firestoreV1ApiClientInterfaces {
295
295
  readTime?: string;
296
296
  skippedResults?: number;
297
297
  }
298
+ interface RunAggregationQueryRequest {
299
+ parent?: string;
300
+ structuredAggregationQuery?: StructuredAggregationQuery;
301
+ transaction?: string;
302
+ newTransaction?: TransactionOptions;
303
+ readTime?: string;
304
+ }
305
+ interface RunAggregationQueryResponse {
306
+ result?: AggregationResult;
307
+ transaction?: string;
308
+ readTime?: string;
309
+ }
310
+ interface AggregationResult {
311
+ aggregateFields?: ApiClientObjectMap<Value>;
312
+ }
313
+ interface StructuredAggregationQuery {
314
+ structuredQuery?: StructuredQuery;
315
+ aggregations?: Aggregation[];
316
+ }
317
+ interface Aggregation {
318
+ count?: Count;
319
+ alias?: string;
320
+ }
321
+ interface Count {
322
+ upTo?: number;
323
+ }
298
324
  interface Status {
299
325
  code?: number;
300
326
  message?: string;
@@ -417,6 +443,8 @@ export declare type ReadWrite = firestoreV1ApiClientInterfaces.ReadWrite;
417
443
  export declare type RollbackRequest = firestoreV1ApiClientInterfaces.RollbackRequest;
418
444
  export declare type RunQueryRequest = firestoreV1ApiClientInterfaces.RunQueryRequest;
419
445
  export declare type RunQueryResponse = firestoreV1ApiClientInterfaces.RunQueryResponse;
446
+ export declare type RunAggregationQueryRequest = firestoreV1ApiClientInterfaces.RunAggregationQueryRequest;
447
+ export declare type RunAggregationQueryResponse = firestoreV1ApiClientInterfaces.RunAggregationQueryResponse;
420
448
  export declare type Status = firestoreV1ApiClientInterfaces.Status;
421
449
  export declare type StructuredQuery = firestoreV1ApiClientInterfaces.StructuredQuery;
422
450
  export declare type Target = firestoreV1ApiClientInterfaces.Target;
@@ -62,6 +62,13 @@ export interface Connection {
62
62
  * @param token - the Token to use for the RPC.
63
63
  */
64
64
  openStream<Req, Resp>(rpcName: string, authToken: Token | null, appCheckToken: Token | null): Stream<Req, Resp>;
65
+ /**
66
+ * Returns whether or not the implementation requires that the "path" of the resource
67
+ * (a document or a collection) be present in the request message. If true, then the
68
+ * request message must include the path. If false, then the request message must NOT
69
+ * include the path.
70
+ */
71
+ readonly shouldResourcePathBeIncludedInRequest: boolean;
65
72
  }
66
73
  /**
67
74
  * A bidirectional stream that can be used to send an receive messages.
@@ -20,6 +20,7 @@ import { Query } from '../core/query';
20
20
  import { Document } from '../model/document';
21
21
  import { DocumentKey } from '../model/document_key';
22
22
  import { Mutation } from '../model/mutation';
23
+ import { Value as ProtoValue } from '../protos/firestore_proto_api';
23
24
  import { AsyncQueue } from '../util/async_queue';
24
25
  import { Connection } from './connection';
25
26
  import { PersistentListenStream, PersistentWriteStream, WatchStreamListener, WriteStreamListener } from './persistent_stream';
@@ -36,5 +37,6 @@ export declare function newDatastore(authCredentials: CredentialsProvider<User>,
36
37
  export declare function invokeCommitRpc(datastore: Datastore, mutations: Mutation[]): Promise<void>;
37
38
  export declare function invokeBatchGetDocumentsRpc(datastore: Datastore, keys: DocumentKey[]): Promise<Document[]>;
38
39
  export declare function invokeRunQueryRpc(datastore: Datastore, query: Query): Promise<Document[]>;
40
+ export declare function invokeRunAggregationQueryRpc(datastore: Datastore, query: Query): Promise<ProtoValue[]>;
39
41
  export declare function newPersistentWriteStream(datastore: Datastore, queue: AsyncQueue, listener: WriteStreamListener): PersistentWriteStream;
40
42
  export declare function newPersistentWatchStream(datastore: Datastore, queue: AsyncQueue, listener: WatchStreamListener): PersistentListenStream;
@@ -27,6 +27,7 @@ export declare abstract class RestConnection implements Connection {
27
27
  protected readonly databaseId: DatabaseId;
28
28
  protected readonly baseUrl: string;
29
29
  private readonly databaseRoot;
30
+ get shouldResourcePathBeIncludedInRequest(): boolean;
30
31
  constructor(databaseInfo: DatabaseInfo);
31
32
  invokeRPC<Req, Resp>(rpcName: string, path: string, req: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp>;
32
33
  invokeStreamingRPC<Req, Resp>(rpcName: string, path: string, request: Req, authToken: Token | null, appCheckToken: Token | null, expectedResponseCount?: number): Promise<Resp[]>;
@@ -26,7 +26,7 @@ import { FieldMask } from '../model/field_mask';
26
26
  import { Mutation, MutationResult } from '../model/mutation';
27
27
  import { ObjectValue } from '../model/object_value';
28
28
  import { FieldPath, ResourcePath } from '../model/path';
29
- import { ApiClientObjectMap as ProtoApiClientObjectMap, BatchGetDocumentsResponse as ProtoBatchGetDocumentsResponse, Document as ProtoDocument, DocumentMask as ProtoDocumentMask, DocumentsTarget as ProtoDocumentsTarget, FieldFilterOp as ProtoFieldFilterOp, FieldReference as ProtoFieldReference, Filter as ProtoFilter, ListenResponse as ProtoListenResponse, Order as ProtoOrder, OrderDirection as ProtoOrderDirection, QueryTarget as ProtoQueryTarget, Target as ProtoTarget, Timestamp as ProtoTimestamp, Write as ProtoWrite, WriteResult as ProtoWriteResult } from '../protos/firestore_proto_api';
29
+ import { ApiClientObjectMap as ProtoApiClientObjectMap, BatchGetDocumentsResponse as ProtoBatchGetDocumentsResponse, Document as ProtoDocument, DocumentMask as ProtoDocumentMask, DocumentsTarget as ProtoDocumentsTarget, FieldFilterOp as ProtoFieldFilterOp, FieldReference as ProtoFieldReference, Filter as ProtoFilter, ListenResponse as ProtoListenResponse, Order as ProtoOrder, OrderDirection as ProtoOrderDirection, QueryTarget as ProtoQueryTarget, RunAggregationQueryRequest as ProtoRunAggregationQueryRequest, Target as ProtoTarget, Timestamp as ProtoTimestamp, Write as ProtoWrite, WriteResult as ProtoWriteResult } from '../protos/firestore_proto_api';
30
30
  import { ByteString } from '../util/byte_string';
31
31
  import { Serializer } from './number_serializer';
32
32
  import { WatchChange } from './watch_change';
@@ -82,6 +82,7 @@ export declare function fromWriteResults(protos: ProtoWriteResult[] | undefined,
82
82
  export declare function toDocumentsTarget(serializer: JsonProtoSerializer, target: Target): ProtoDocumentsTarget;
83
83
  export declare function fromDocumentsTarget(documentsTarget: ProtoDocumentsTarget): Target;
84
84
  export declare function toQueryTarget(serializer: JsonProtoSerializer, target: Target): ProtoQueryTarget;
85
+ export declare function toRunAggregationQueryRequest(serializer: JsonProtoSerializer, target: Target): ProtoRunAggregationQueryRequest;
85
86
  export declare function convertQueryTargetToQuery(target: ProtoQueryTarget): Query;
86
87
  export declare function fromQueryTarget(target: ProtoQueryTarget): Target;
87
88
  export declare function toListenRequestLabels(serializer: JsonProtoSerializer, targetData: TargetData): ProtoApiClientObjectMap<string> | null;
@@ -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 {};
@@ -44,6 +44,7 @@ export declare function withTestDocAndInitialData(persistence: boolean, initialD
44
44
  export declare function withTestCollection(persistence: boolean, docs: {
45
45
  [key: string]: DocumentData;
46
46
  }, fn: (collection: CollectionReference, db: Firestore) => Promise<void>): Promise<void>;
47
+ export declare function withEmptyTestCollection(persistence: boolean, fn: (collection: CollectionReference, db: Firestore) => Promise<void>): Promise<void>;
47
48
  export declare function withTestCollectionSettings(persistence: boolean, settings: PrivateSettings, docs: {
48
49
  [key: string]: DocumentData;
49
50
  }, fn: (collection: CollectionReference, db: Firestore) => Promise<void>): Promise<void>;
@@ -96,6 +96,7 @@ export declare class MockConnection implements Connection {
96
96
  writeStreamRequestCount: number;
97
97
  nextWriteStreamToken: number;
98
98
  constructor(queue: AsyncQueue);
99
+ shouldResourcePathBeIncludedInRequest: boolean;
99
100
  /**
100
101
  * Tracks the currently active watch targets as detected by the mock watch
101
102
  * stream, as a mapping from target ID to query Target.