Skip to content

Commit 7dbf54f

Browse files
authored
Merge b80c880 into 6f06d84
2 parents 6f06d84 + b80c880 commit 7dbf54f

File tree

76 files changed

+4609
-256
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+4609
-256
lines changed

.changeset/lemon-steaks-draw.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
3+
---

packages-exp/auth-exp/index.webworker.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ registerAuth(ClientPlatform.WORKER);
3737
export function getAuth(app = getApp()): Auth {
3838
// Unlike the other environments, we need to explicitly check if indexedDb is
3939
// available. That means doing the whole rigamarole
40-
const auth = _getProvider(app, _ComponentName.AUTH).getImmediate() as AuthImpl;
40+
const auth = _getProvider(
41+
app,
42+
_ComponentName.AUTH
43+
).getImmediate() as AuthImpl;
4144

4245
// This promise is intended to float; auth initialization happens in the
4346
// background, meanwhile the auth object may be used by the app.

packages/database/src/api/Database.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,14 +157,17 @@ export class Database implements FirebaseService {
157157
validateUrl(apiName, 1, parsedURL);
158158

159159
const repoInfo = parsedURL.repoInfo;
160-
if (!repoInfo.isCustomHost() && repoInfo.host !== this.repo_.repoInfo_.host) {
160+
if (
161+
!repoInfo.isCustomHost() &&
162+
repoInfo.host !== this.repo_.repoInfo_.host
163+
) {
161164
fatal(
162165
apiName +
163166
': Host name does not match the current database: ' +
164167
'(found ' +
165168
repoInfo.host +
166169
' but expected ' +
167-
this.repo_.repoInfo_.host+
170+
this.repo_.repoInfo_.host +
168171
')'
169172
);
170173
}

packages/firebase/index.d.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8279,12 +8279,45 @@ declare namespace firebase.firestore {
82798279
*/
82808280
terminate(): Promise<void>;
82818281

8282+
loadBundle(
8283+
bundleData: ArrayBuffer | ReadableStream<ArrayBuffer> | string
8284+
): LoadBundleTask;
8285+
8286+
namedQuery(name: string): Promise<Query<DocumentData> | null>;
8287+
82828288
/**
82838289
* @hidden
82848290
*/
82858291
INTERNAL: { delete: () => Promise<void> };
82868292
}
82878293

8294+
export interface LoadBundleTask {
8295+
onProgress(
8296+
next?: (progress: LoadBundleTaskProgress) => any,
8297+
error?: (error: Error) => any,
8298+
complete?: () => void
8299+
): void;
8300+
8301+
then<T, R>(
8302+
onFulfilled?: (a: LoadBundleTaskProgress) => T | PromiseLike<T>,
8303+
onRejected?: (a: Error) => R | PromiseLike<R>
8304+
): Promise<T | R>;
8305+
8306+
catch<R>(
8307+
onRejected: (a: Error) => R | PromiseLike<R>
8308+
): Promise<R | LoadBundleTaskProgress>;
8309+
}
8310+
8311+
export interface LoadBundleTaskProgress {
8312+
documentsLoaded: number;
8313+
totalDocuments: number;
8314+
bytesLoaded: number;
8315+
totalBytes: number;
8316+
taskState: TaskState;
8317+
}
8318+
8319+
export type TaskState = 'Error' | 'Running' | 'Success';
8320+
82888321
/**
82898322
* An immutable object representing a geo point in Firestore. The geo point
82908323
* is represented as latitude/longitude pair.

packages/firestore-types/index.d.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,42 @@ export class FirebaseFirestore {
9696

9797
terminate(): Promise<void>;
9898

99+
loadBundle(
100+
bundleData: ArrayBuffer | ReadableStream<ArrayBuffer> | string
101+
): LoadBundleTask;
102+
103+
namedQuery(name: string): Promise<Query<DocumentData> | null>;
104+
99105
INTERNAL: { delete: () => Promise<void> };
100106
}
101107

108+
export interface LoadBundleTask {
109+
onProgress(
110+
next?: (progress: LoadBundleTaskProgress) => any,
111+
error?: (error: Error) => any,
112+
complete?: () => void
113+
): void;
114+
115+
then<T, R>(
116+
onFulfilled?: (a: LoadBundleTaskProgress) => T | PromiseLike<T>,
117+
onRejected?: (a: Error) => R | PromiseLike<R>
118+
): Promise<T | R>;
119+
120+
catch<R>(
121+
onRejected: (a: Error) => R | PromiseLike<R>
122+
): Promise<R | LoadBundleTaskProgress>;
123+
}
124+
125+
export interface LoadBundleTaskProgress {
126+
documentsLoaded: number;
127+
totalDocuments: number;
128+
bytesLoaded: number;
129+
totalBytes: number;
130+
taskState: TaskState;
131+
}
132+
133+
export type TaskState = 'Error' | 'Running' | 'Success';
134+
102135
export class GeoPoint {
103136
constructor(latitude: number, longitude: number);
104137

packages/firestore/exp-types/index.d.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,43 @@ export function snapshotEqual<T>(
516516
right: DocumentSnapshot<T> | QuerySnapshot<T>
517517
): boolean;
518518

519+
export interface LoadBundleTask {
520+
onProgress(
521+
next?: (progress: LoadBundleTaskProgress) => any,
522+
error?: (error: Error) => any,
523+
complete?: () => void
524+
): void;
525+
526+
then<T, R>(
527+
onFulfilled?: (a: LoadBundleTaskProgress) => T | PromiseLike<T>,
528+
onRejected?: (a: Error) => R | PromiseLike<R>
529+
): Promise<T | R>;
530+
531+
catch<R>(
532+
onRejected: (a: Error) => R | PromiseLike<R>
533+
): Promise<R | LoadBundleTaskProgress>;
534+
}
535+
536+
export interface LoadBundleTaskProgress {
537+
documentsLoaded: number;
538+
totalDocuments: number;
539+
bytesLoaded: number;
540+
totalBytes: number;
541+
taskState: TaskState;
542+
}
543+
544+
export type TaskState = 'Error' | 'Running' | 'Success';
545+
546+
export function loadBundle(
547+
firestore: FirebaseFirestore,
548+
bundleData: ArrayBuffer | ReadableStream<Uint8Array> | string
549+
): LoadBundleTask;
550+
551+
export function namedQuery(
552+
firestore: FirebaseFirestore,
553+
name: string
554+
): Promise<Query<DocumentData> | null>;
555+
519556
export type FirestoreErrorCode =
520557
| 'cancelled'
521558
| 'unknown'

packages/firestore/exp/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ export {
3131
waitForPendingWrites,
3232
disableNetwork,
3333
enableNetwork,
34-
terminate,
35-
Settings
34+
namedQuery,
35+
loadBundle,
36+
terminate
3637
} from './src/api/database';
3738

3839
export {

packages/firestore/exp/src/api/database.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import {
2424
FirestoreClient,
2525
firestoreClientDisableNetwork,
2626
firestoreClientEnableNetwork,
27+
firestoreClientGetNamedQuery,
28+
firestoreClientLoadBundle,
2729
firestoreClientWaitForPendingWrites,
2830
setOfflineComponentProvider,
2931
setOnlineComponentProvider
@@ -53,6 +55,8 @@ import {
5355
indexedDbStoragePrefix
5456
} from '../../../src/local/indexeddb_persistence';
5557
import { PersistenceSettings } from '../../../exp-types';
58+
import { Query } from '../../../lite/src/api/reference';
59+
import { LoadBundleTask } from '../../../src/api/bundle';
5660

5761
/** DOMException error code constants. */
5862
const DOM_EXCEPTION_INVALID_STATE = 11;
@@ -430,3 +434,29 @@ function verifyNotInitialized(firestore: FirestoreCompat): void {
430434
);
431435
}
432436
}
437+
438+
export function loadBundle(
439+
firestore: FirebaseFirestore,
440+
bundleData: ArrayBuffer | ReadableStream<Uint8Array> | string
441+
): LoadBundleTask {
442+
const client = ensureFirestoreConfigured(firestore);
443+
const resultTask = new LoadBundleTask();
444+
445+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
446+
firestoreClientLoadBundle(client, bundleData, resultTask);
447+
return resultTask;
448+
}
449+
450+
export function namedQuery(
451+
firestore: FirebaseFirestore,
452+
name: string
453+
): Promise<Query | null> {
454+
const client = ensureFirestoreConfigured(firestore);
455+
return firestoreClientGetNamedQuery(client, name).then(namedQuery => {
456+
if (!namedQuery) {
457+
return null;
458+
}
459+
460+
return new Query(firestore, null, namedQuery.query);
461+
});
462+
}

packages/firestore/exp/test/shim.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ import {
4141
getDocsFromCache,
4242
getDocsFromServer,
4343
initializeFirestore,
44+
loadBundle,
45+
namedQuery,
4446
onSnapshot,
4547
onSnapshotsInSync,
4648
query,
@@ -70,6 +72,7 @@ import {
7072
validateSetOptions
7173
} from '../../src/util/input_validation';
7274
import { Compat } from '../../src/compat/compat';
75+
import { LoadBundleTask } from '../../exp-types';
7376

7477
export { GeoPoint, Timestamp } from '../index';
7578
export { FieldValue } from '../../src/compat/field_value';
@@ -169,6 +172,17 @@ export class FirebaseFirestore
169172
return terminate(this._delegate);
170173
}
171174

175+
loadBundle(
176+
bundleData: ArrayBuffer | ReadableStream<Uint8Array> | string
177+
): LoadBundleTask {
178+
return loadBundle(this._delegate, bundleData)!;
179+
}
180+
181+
async namedQuery(name: string): Promise<Query | null> {
182+
const query = await namedQuery(this._delegate, name);
183+
return !!query ? new Query<legacy.DocumentData>(this, query) : null;
184+
}
185+
172186
INTERNAL = {
173187
delete: () => terminate(this._delegate)
174188
};

packages/firestore/externs.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"packages/webchannel-wrapper/src/index.d.ts",
2929
"packages/util/dist/src/crypt.d.ts",
3030
"packages/util/dist/src/environment.d.ts",
31+
"packages/firestore/src/protos/firestore_bundle_proto.ts",
3132
"packages/firestore/src/protos/firestore_proto_api.d.ts",
3233
"packages/firestore/src/util/error.ts",
3334
"packages/firestore/src/local/indexeddb_schema.ts",

packages/firestore/rollup.shared.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ const manglePrivatePropertiesOptions = {
129129
},
130130
mangle: {
131131
properties: {
132-
regex: /^__PRIVATE_/
132+
regex: /^__PRIVATE_/,
133+
reserved: ['do']
133134
}
134135
}
135136
};

0 commit comments

Comments
 (0)