Skip to content

Commit 556a007

Browse files
committed
Support loading string for real.
1 parent f7ff495 commit 556a007

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

packages/firestore-types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export class FirebaseFirestore {
8686
terminate(): Promise<void>;
8787

8888
loadBundle(
89-
bundleData: ArrayBuffer | ReadableStream | string
89+
bundleData: ArrayBuffer | ReadableStream<ArrayBuffer> | string
9090
): LoadBundleTask;
9191

9292
INTERNAL: { delete: () => Promise<void> };

packages/firestore/src/api/database.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ export class Firestore implements firestore.FirebaseFirestore, FirebaseService {
477477
}
478478

479479
loadBundle(
480-
bundleData: ArrayBuffer | ReadableStream /*| string */
480+
bundleData: ArrayBuffer | ReadableStream<ArrayBuffer> | string
481481
): firestore.LoadBundleTask {
482482
this.ensureClientConfigured();
483483
return this._firestoreClient!.loadBundle(bundleData);

packages/firestore/src/core/firestore_client.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,11 +526,17 @@ export class FirestoreClient {
526526
}
527527

528528
loadBundle(
529-
data: ReadableStream<Uint8Array | ArrayBuffer> | ArrayBuffer | Uint8Array
529+
data: ReadableStream<ArrayBuffer> | ArrayBuffer | string
530530
): LoadBundleTask {
531531
this.verifyNotTerminated();
532532

533-
const reader = new BundleReader(data);
533+
let content: ReadableStream<ArrayBuffer> | ArrayBuffer;
534+
if (typeof data === 'string') {
535+
content = new TextEncoder().encode(data);
536+
} else {
537+
content = data;
538+
}
539+
const reader = new BundleReader(content);
534540
const task = new LoadBundleTaskImpl();
535541
this.asyncQueue.enqueueAndForget(() => {
536542
return this.syncEngine.loadBundle(reader, task);

packages/firestore/test/integration/api/bundle.test.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,7 @@ apiDescribe('Bundles', (persistence: boolean) => {
8787
fulfillProgress: firestore.LoadBundleTaskProgress;
8888
await db
8989
.loadBundle(
90-
encoder.encode(
91-
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
92-
)
90+
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
9391
)
9492
.onProgress(
9593
progress => {
@@ -134,9 +132,7 @@ apiDescribe('Bundles', (persistence: boolean) => {
134132
let fulfillProgress: firestore.LoadBundleTaskProgress;
135133
await db
136134
.loadBundle(
137-
encoder.encode(
138-
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
139-
)
135+
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
140136
)
141137
.then(progress => {
142138
fulfillProgress = progress;
@@ -162,9 +158,7 @@ apiDescribe('Bundles', (persistence: boolean) => {
162158
const builder = bundleWithTestDocs(db);
163159

164160
await db.loadBundle(
165-
encoder.encode(
166-
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
167-
)
161+
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
168162
);
169163

170164
let completeProgress: firestore.LoadBundleTaskProgress;
@@ -210,6 +204,7 @@ apiDescribe('Bundles', (persistence: boolean) => {
210204

211205
const builder = bundleWithTestDocs(db);
212206
const progress = await db.loadBundle(
207+
// Testing passing non-string bundles.
213208
encoder.encode(
214209
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
215210
)
@@ -236,9 +231,7 @@ apiDescribe('Bundles', (persistence: boolean) => {
236231
// eslint-disable-next-line @typescript-eslint/no-floating-promises
237232
expect(
238233
otherDb.loadBundle(
239-
encoder.encode(
240-
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
241-
)
234+
builder.build('test-bundle', { seconds: 1001, nanos: 9999 })
242235
)
243236
).to.be.rejectedWith('Tried to deserialize key from different project');
244237
});

0 commit comments

Comments
 (0)