Skip to content

Commit

Permalink
Make COUNT queries available to the Firestore Console (#6643)
Browse files Browse the repository at this point in the history
  • Loading branch information
dconeybe authored Oct 7, 2022
1 parent 9799efe commit 397317b
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 1 deletion.
8 changes: 8 additions & 0 deletions .changeset/metal-goats-unite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@firebase/firestore': minor
'@firebase/firestore-compat': minor
'@firebase/webchannel-wrapper': minor
'firebase': minor
---

Set withCredentials=true when making requests via non-streaming RPCs, like is done for streaming RPCs.
14 changes: 13 additions & 1 deletion packages/firestore-compat/src/index.console.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,11 @@ import {
Firestore as FirestoreExp,
FirestoreError,
_EmptyAuthCredentialsProvider,
_EmptyAppCheckTokenProvider
_EmptyAppCheckTokenProvider,
Query as ExpQuery,
getCountFromServer
} from '@firebase/firestore';
import { Compat } from '@firebase/util';

import {
Firestore as FirestoreCompat,
Expand Down Expand Up @@ -98,6 +101,15 @@ export class Firestore extends FirestoreCompat {
new MemoryPersistenceProvider()
);
}

INTERNAL = {
delete: () => this.terminate(),
count: (query: Compat<ExpQuery<unknown>>) => {
return getCountFromServer(query._delegate).then(response => {
return response.data().count;
});
}
};
}

function databaseIdFromFirestoreDatabase(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ export class WebChannelConnection extends RestConnection {
): Promise<Resp> {
return new Promise((resolve: Resolver<Resp>, reject: Rejecter) => {
const xhr = new XhrIo();
xhr.setWithCredentials(true);
xhr.listenOnce(EventType.COMPLETE, () => {
try {
switch (xhr.getLastErrorCode()) {
Expand Down
2 changes: 2 additions & 0 deletions packages/webchannel-wrapper/src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ export class XhrIo {
getResponseJson(): WebChannelError | object;

listenOnce(type: string, cb: (param: unknown) => void): void;

setWithCredentials(withCredentials: boolean): void;
}

export interface WebChannelOptions {
Expand Down
2 changes: 2 additions & 0 deletions packages/webchannel-wrapper/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ goog.net.XhrIo.prototype['getResponseJson'] =
goog.net.XhrIo.prototype['getResponseText'] =
goog.net.XhrIo.prototype.getResponseText;
goog.net.XhrIo.prototype['send'] = goog.net.XhrIo.prototype.send;
goog.net.XhrIo.prototype['setWithCredentials'] =
goog.net.XhrIo.prototype.setWithCredentials;

module['exports']['createWebChannelTransport'] =
goog.net.createWebChannelTransport;
Expand Down

0 comments on commit 397317b

Please sign in to comment.