Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions packages/firestore/exp/register.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { name, version } from '../package.json';
import { setSDKVersion } from '../src/core/version';
import { FirebaseFirestore } from '../src/exp/database';
import { Settings } from '../src/exp/settings';
import { PrivateSettings } from '../src/lite/settings';

declare module '@firebase/component' {
interface NameServiceMapping {
Expand All @@ -38,15 +39,14 @@ export function registerFirestore(variant?: string): void {
_registerComponent(
new Component(
'firestore-exp',
(container, { options: settings }: { options?: Settings }) => {
(container, { options: settings }: { options?: PrivateSettings }) => {
const app = container.getProvider('app-exp').getImmediate()!;
const firestoreInstance = new FirebaseFirestore(
app,
container.getProvider('auth-internal')
);
if (settings) {
firestoreInstance._setSettings(settings);
}
settings = { useFetchStreams: true, ...settings };
firestoreInstance._setSettings(settings);
return firestoreInstance;
},
ComponentType.PUBLIC
Expand Down
5 changes: 4 additions & 1 deletion packages/firestore/src/core/database_info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ export class DatabaseInfo {
* when using WebChannel as the network transport.
* @param autoDetectLongPolling - Whether to use the detectBufferingProxy
* option when using WebChannel as the network transport.
* @param useFetchStreams Whether to use the Fetch API instead of
* XMLHTTPRequest
*/
constructor(
readonly databaseId: DatabaseId,
Expand All @@ -38,7 +40,8 @@ export class DatabaseInfo {
readonly host: string,
readonly ssl: boolean,
readonly forceLongPolling: boolean,
readonly autoDetectLongPolling: boolean
readonly autoDetectLongPolling: boolean,
readonly useFetchStreams: boolean
) {}
}

Expand Down
3 changes: 2 additions & 1 deletion packages/firestore/src/lite/components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ export function makeDatabaseInfo(
settings.host,
settings.ssl,
settings.experimentalForceLongPolling,
settings.experimentalAutoDetectLongPolling
settings.experimentalAutoDetectLongPolling,
settings.useFetchStreams
);
}
8 changes: 7 additions & 1 deletion packages/firestore/src/lite/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ export interface PrivateSettings extends Settings {
experimentalForceLongPolling?: boolean;
// Used in firestore@exp
experimentalAutoDetectLongPolling?: boolean;
// Used in firestore@exp
useFetchStreams?: boolean;
}

/**
Expand All @@ -80,6 +82,8 @@ export class FirestoreSettings {

readonly ignoreUndefinedProperties: boolean;

readonly useFetchStreams: boolean;

// Can be a google-auth-library or gapi client.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
credentials?: any;
Expand Down Expand Up @@ -120,6 +124,7 @@ export class FirestoreSettings {

this.experimentalForceLongPolling = !!settings.experimentalForceLongPolling;
this.experimentalAutoDetectLongPolling = !!settings.experimentalAutoDetectLongPolling;
this.useFetchStreams = !!settings.useFetchStreams;

validateIsNotUsedTogether(
'experimentalForceLongPolling',
Expand All @@ -139,7 +144,8 @@ export class FirestoreSettings {
other.experimentalForceLongPolling &&
this.experimentalAutoDetectLongPolling ===
other.experimentalAutoDetectLongPolling &&
this.ignoreUndefinedProperties === other.ignoreUndefinedProperties
this.ignoreUndefinedProperties === other.ignoreUndefinedProperties &&
this.useFetchStreams === other.useFetchStreams
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
WebChannel,
WebChannelError,
WebChannelOptions,
FetchXmlHttpFactory,
XhrIo,
getStatEventTarget,
EventTarget,
Expand Down Expand Up @@ -62,11 +63,13 @@ const XHR_TIMEOUT_SECS = 15;
export class WebChannelConnection extends RestConnection {
private readonly forceLongPolling: boolean;
private readonly autoDetectLongPolling: boolean;
private readonly useFetchStreams: boolean;

constructor(info: DatabaseInfo) {
super(info);
this.forceLongPolling = info.forceLongPolling;
this.autoDetectLongPolling = info.autoDetectLongPolling;
this.useFetchStreams = info.useFetchStreams;
}

protected performRPCRequest<Req, Resp>(
Expand Down Expand Up @@ -194,6 +197,10 @@ export class WebChannelConnection extends RestConnection {
detectBufferingProxy: this.autoDetectLongPolling
};

if (this.useFetchStreams) {
request.xmlHttpFactory = new FetchXmlHttpFactory({});
}

this.modifyHeadersForRequest(request.initMessageHeaders!, token);

// Sending the custom headers we just added to request.initMessageHeaders
Expand Down
3 changes: 3 additions & 0 deletions packages/webchannel-wrapper/externs/overrides.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ goog.net.WebChannel.Options.forceLongPolling;
/** @type {boolean|undefined} */
goog.net.WebChannel.Options.detectBufferingProxy;

/** @type {unknown} */
goog.net.WebChannel.Options.xmlHttpFactory;

goog.labs.net.webChannel.requestStats.Event = {};
goog.labs.net.webChannel.requestStats.Event.STAT_EVENT;

Expand Down
4 changes: 2 additions & 2 deletions packages/webchannel-wrapper/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
},
"license": "Apache-2.0",
"devDependencies": {
"google-closure-compiler": "20201102.0.1",
"google-closure-library": "20201006.0.0",
"google-closure-compiler": "20210505.0.0",
"google-closure-library": "20210406.0.0",
"gulp": "4.0.2",
"gulp-sourcemaps": "3.0.0",
"rollup": "2.35.1",
Expand Down
4 changes: 4 additions & 0 deletions packages/webchannel-wrapper/src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,7 @@ export interface WebChannelTransport {
export function createWebChannelTransport(): WebChannelTransport;

export function getStatEventTarget(): EventTarget;

export class FetchXmlHttpFactory {
constructor(options: {});
}
2 changes: 2 additions & 0 deletions packages/webchannel-wrapper/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ goog.provide('firebase.webchannel.wrapper');

// goog.net.WebChannelTransport
goog.require('goog.net.createWebChannelTransport');
goog.require('goog.net.FetchXmlHttpFactory');
goog.require('goog.labs.net.webChannel.requestStats');
goog.require('goog.labs.net.webChannel.WebChannelBaseTransport');

Expand Down Expand Up @@ -83,5 +84,6 @@ module['exports']['ErrorCode'] = goog.net.ErrorCode;
module['exports']['EventType'] = goog.net.EventType;
module['exports']['Event'] = goog.labs.net.webChannel.requestStats.Event;
module['exports']['Stat'] = goog.labs.net.webChannel.requestStats.Stat;
module['exports']['FetchXmlHttpFactory'] = goog.net.FetchXmlHttpFactory;
module['exports']['WebChannel'] = goog.net.WebChannel;
module['exports']['XhrIo'] = goog.net.XhrIo;
56 changes: 28 additions & 28 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8654,10 +8654,10 @@ google-closure-compiler-java@^20200112.0.0:
resolved "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200112.0.0.tgz#2b99f5e2869a573a1b35558ff3b6e6bc054a116f"
integrity sha512-h/ExDCXAw88nOniQSbbK6et31kOwmaDxl6t52dnETCIzituQtGToPzy21vUel1o8o+FvWUybLoap+dEYBam1pA==

google-closure-compiler-java@^20201102.0.1:
version "20201102.0.1"
resolved "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20201102.0.1.tgz#15fa3e0701ee1a756168fdaf3b53fe61425b1b64"
integrity sha512-pXJIlyqepHhih0HCbShkAZJyViIxdyd4V7MnCUZEXLIIlygw92e2dC+5XiONDQZgRlF93BPmWCy9jr7wYoW1hQ==
google-closure-compiler-java@^20210505.0.0:
version "20210505.0.0"
resolved "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20210505.0.0.tgz#f1acdedbff960ad9c81a6b39d3d02876e33b2141"
integrity sha512-h+DfQAaaCLFmmtasOS8eyh0M4D+JInTJfEP4byV5R1cnMninpGGLHOG3PNgLLzkXkIO/fu4ILEcVzoGmgJEoMA==

google-closure-compiler-js@^20200112.0.0:
version "20200112.0.0"
Expand All @@ -8669,30 +8669,30 @@ google-closure-compiler-linux@^20200112.0.0:
resolved "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200112.0.0.tgz#e6c7943cc0114046dbe9fc685e4d7d4eb536c1dc"
integrity sha512-imTfdYP7BVTzzp3y7MuZP+98nEkbX7LZsZtxalNpl56vd+Ysc9/vOHXS14CdSoThaXIVlzX/lfjOlBRqPow+ew==

google-closure-compiler-linux@^20201102.0.1:
version "20201102.0.1"
resolved "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20201102.0.1.tgz#a66f18142866c5d3186d0d0c0809538d38f7b998"
integrity sha512-aRbyTGnQoFXchcpEFNrP1p/WIvYOgN3hYKI+MOHWkvwVJBY2P8gpb07hAigO8fj+QKD/SFCl+2pXP+JniWOEqw==
google-closure-compiler-linux@^20210505.0.0:
version "20210505.0.0"
resolved "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20210505.0.0.tgz#87ceaa5750d447725b2dd556b01a2e36e5cbf9cd"
integrity sha512-ADN2kFfIR1NiR24kLYb4YkX4MeXDJaT5OfRQEkiuIdZMtd28oEkm80LxCGuC7ftKEixoMm3f9/OG01B4U+xsnA==

google-closure-compiler-osx@^20200112.0.0:
version "20200112.0.0"
resolved "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200112.0.0.tgz#df7a22c0dc32702b47c8ac4521f79bbe439effad"
integrity sha512-E3S1KqZw4+Zov0VXCkjomPrYhyuuV6jH9InBchQ7cZfipFJjhQmSRf39u4Mu0sINW7GXfODZbzBwOXhEIquFQw==

google-closure-compiler-osx@^20201102.0.1:
version "20201102.0.1"
resolved "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20201102.0.1.tgz#5099b29a7db553ded849e06cbbce194ecf9cd231"
integrity sha512-VguqEAOYI6XYZN6JcLMP8fpsoXk1Z9YuntMjv0IDVydkbZaHYOI4zE39FJhMuWiN7gOzSX2b/BBC6GsSh1F3fw==
google-closure-compiler-osx@^20210505.0.0:
version "20210505.0.0"
resolved "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20210505.0.0.tgz#1c31cd460cb6b8357a94add25b3500436c69ce26"
integrity sha512-JTwdh23aD2pwRU4QZjujxp/+rGfhex3utNWEdUDRMNpUGstUK7XPCDG8jNBtUpyuRiXFnpZa90qButqRgotQBA==

google-closure-compiler-windows@^20200112.0.0:
version "20200112.0.0"
resolved "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200112.0.0.tgz#8300d1e651f2c84ed565e729ccf40d6ed7e63771"
integrity sha512-+5+UJFKXH0LGnYEHSVJxWwhtvX/MI6uebkAQkhma0057QsKs8fOToWuHL8/UbJULB4WUPa3DlHy0+Izs5z6lCQ==

google-closure-compiler-windows@^20201102.0.1:
version "20201102.0.1"
resolved "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20201102.0.1.tgz#8b6c5c3f7050a738b71c59f9dd9863fb6cca282a"
integrity sha512-LlynipQi/iP76mjkOu6Rc1mCRuxTAhRvLjq10aGfVjKwpbCAF0Jq2a5k2ygr4xYiINNi2/L2qUw6ObPm9wQCOw==
google-closure-compiler-windows@^20210505.0.0:
version "20210505.0.0"
resolved "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20210505.0.0.tgz#45559acde54d1b85973c9984253c15bfa98b5cfb"
integrity sha512-bKTbg/f4ak72OggEMaH/7oExqOO9dS+TxwGhoovYOt/YaVR/8MDfGdxsOhqoiboiFwYysTPz8bwINjYQK6AwnA==

[email protected]:
version "20200112.0.0"
Expand All @@ -8710,30 +8710,30 @@ [email protected]:
google-closure-compiler-osx "^20200112.0.0"
google-closure-compiler-windows "^20200112.0.0"

google-closure-compiler@20201102.0.1:
version "20201102.0.1"
resolved "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20201102.0.1.tgz#372670b1b047969d12de663698593e31944ad1bf"
integrity sha512-Cz+1jOswH0MwMVPu1rRH1xD4KYuY5XW2ox5aXwqaAxevqmirhr36f8wgKPHuVRSovFejW640r6UFwyrOT6U0CA==
google-closure-compiler@20210505.0.0:
version "20210505.0.0"
resolved "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20210505.0.0.tgz#8a321ac49c9d3f0df30d7e15c2adbb2b11c5dd89"
integrity sha512-moeYaj4S6YTdOOvjv1ZLdUld/2YXw7q1GqUUHJJd+rE/uViyesozg8yKQZWcB3tvurhb+qEvFFet8CYoeaQHng==
dependencies:
chalk "2.x"
google-closure-compiler-java "^20201102.0.1"
google-closure-compiler-java "^20210505.0.0"
minimist "1.x"
vinyl "2.x"
vinyl-sourcemaps-apply "^0.2.0"
optionalDependencies:
google-closure-compiler-linux "^20201102.0.1"
google-closure-compiler-osx "^20201102.0.1"
google-closure-compiler-windows "^20201102.0.1"
google-closure-compiler-linux "^20210505.0.0"
google-closure-compiler-osx "^20210505.0.0"
google-closure-compiler-windows "^20210505.0.0"

[email protected]:
version "20200830.0.0"
resolved "https://registry.npmjs.org/google-closure-library/-/google-closure-library-20200830.0.0.tgz#9f3807e5a4af55ebf2c8a22853d53b8da39a48e8"
integrity sha512-s4ma73K+FTeVywSMjVOxQ435t6kPfSlxEtIflq7Gabp2fxAnc9i8vUpvT8ZP/GH89LwSJReIaBGtrn72rfNC5Q==

google-closure-library@20201006.0.0:
version "20201006.0.0"
resolved "https://registry.npmjs.org/google-closure-library/-/google-closure-library-20201006.0.0.tgz#5b2f325309566a63b97e22e57c71263fa98f22b4"
integrity sha512-jYTKvUBUkTFCO+PJLcqJrh4BNMHlInzPYpijg8lty/HIF1rH+qutHchlFdiSNad8HBVKIlMf3UzXRPXvmujrIg==
google-closure-library@20210406.0.0:
version "20210406.0.0"
resolved "https://registry.npmjs.org/google-closure-library/-/google-closure-library-20210406.0.0.tgz#47d6036c1704661ad47cde2e35f19cc55e33e775"
integrity sha512-1lAC/KC9R2QM6nygniM0pRcGrv5bkCUrIZb2hXFxLtAkA+zRiVeWtRYpFWDHXXJzkavKjsn9upiffL4x/nmmVg==

google-gax@^2.12.0, google-gax@^2.9.2:
version "2.13.0"
Expand Down