Skip to content

Commit 0f88e5b

Browse files
Fix build
1 parent 2ac31a1 commit 0f88e5b

27 files changed

+452
-635
lines changed

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

+43-15
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,20 @@ import {
3737
} from '../../../src/core/component_provider';
3838
import {
3939
FirebaseFirestore as LiteFirestore,
40+
FirestoreDatabase,
41+
makeDatabaseInfo,
4042
Settings as LiteSettings
4143
} from '../../../lite/src/api/database';
4244
import { Code, FirestoreError } from '../../../src/util/error';
4345
import { Deferred } from '../../../src/util/promise';
4446
import { LRU_MINIMUM_CACHE_SIZE_BYTES } from '../../../src/local/lru_garbage_collector';
45-
import {
46-
CACHE_SIZE_UNLIMITED,
47-
configureFirestore,
48-
ensureFirestoreConfigured,
49-
FirestoreCompat
50-
} from '../../../src/api/database';
47+
import { CACHE_SIZE_UNLIMITED } from '../../../src/api/database';
5148
import {
5249
indexedDbClearPersistence,
5350
indexedDbStoragePrefix
5451
} from '../../../src/local/indexeddb_persistence';
5552
import { PersistenceSettings } from '../../../exp-types';
53+
import { debugAssert } from '../../../src/util/assert';
5654

5755
/** DOMException error code constants. */
5856
const DOM_EXCEPTION_INVALID_STATE = 11;
@@ -70,18 +68,18 @@ export interface Settings extends LiteSettings {
7068
*/
7169
export class FirebaseFirestore
7270
extends LiteFirestore
73-
implements _FirebaseService, FirestoreCompat {
71+
implements _FirebaseService {
7472
readonly _queue = new AsyncQueue();
7573
readonly _persistenceKey: string;
7674

7775
_firestoreClient: FirestoreClient | undefined;
7876

7977
constructor(
80-
app: FirebaseApp,
78+
app: FirestoreDatabase | FirebaseApp,
8179
authProvider: Provider<FirebaseAuthInternalName>
8280
) {
8381
super(app, authProvider);
84-
this._persistenceKey = app.name;
82+
this._persistenceKey = 'name' in app ? app.name : '[DEFAULT]';
8583
}
8684

8785
_terminate(): Promise<void> {
@@ -94,6 +92,36 @@ export class FirebaseFirestore
9492
}
9593
}
9694

95+
export function ensureFirestoreConfigured(
96+
firestore: FirebaseFirestore
97+
): FirestoreClient {
98+
if (!firestore._firestoreClient) {
99+
configureFirestore(firestore);
100+
}
101+
firestore._firestoreClient!.verifyNotTerminated();
102+
return firestore._firestoreClient as FirestoreClient;
103+
}
104+
105+
export function configureFirestore(firestore: FirebaseFirestore): void {
106+
const settings = firestore._freezeSettings();
107+
debugAssert(!!settings.host, 'FirestoreSettings.host is not set');
108+
debugAssert(
109+
!firestore._firestoreClient,
110+
'configureFirestore() called multiple times'
111+
);
112+
113+
const databaseInfo = makeDatabaseInfo(
114+
firestore._databaseId,
115+
firestore._persistenceKey,
116+
settings
117+
);
118+
firestore._firestoreClient = new FirestoreClient(
119+
firestore._credentials,
120+
firestore._queue,
121+
databaseInfo
122+
);
123+
}
124+
97125
/**
98126
* Initializes a new instance of Cloud Firestore with the provided settings.
99127
* Can only be called before any other function, including
@@ -165,13 +193,13 @@ export function getFirestore(app: FirebaseApp): FirebaseFirestore {
165193
* @return A promise that represents successfully enabling persistent storage.
166194
*/
167195
export function enableIndexedDbPersistence(
168-
firestore: FirestoreCompat,
196+
firestore: FirebaseFirestore,
169197
persistenceSettings?: PersistenceSettings
170198
): Promise<void> {
171199
verifyNotInitialized(firestore);
172200

173201
const client = ensureFirestoreConfigured(firestore);
174-
const settings = firestore._getSettings();
202+
const settings = firestore._freezeSettings();
175203

176204
const onlineComponentProvider = new OnlineComponentProvider();
177205
const offlineComponentProvider = new IndexedDbOfflineComponentProvider(
@@ -209,12 +237,12 @@ export function enableIndexedDbPersistence(
209237
* storage.
210238
*/
211239
export function enableMultiTabIndexedDbPersistence(
212-
firestore: FirestoreCompat
240+
firestore: FirebaseFirestore
213241
): Promise<void> {
214242
verifyNotInitialized(firestore);
215243

216244
const client = ensureFirestoreConfigured(firestore);
217-
const settings = firestore._getSettings();
245+
const settings = firestore._freezeSettings();
218246

219247
const onlineComponentProvider = new OnlineComponentProvider();
220248
const offlineComponentProvider = new MultiTabOfflineComponentProvider(
@@ -322,7 +350,7 @@ function canFallbackFromIndexedDbError(
322350
* cleared. Otherwise, the promise is rejected with an error.
323351
*/
324352
export function clearIndexedDbPersistence(
325-
firestore: FirestoreCompat
353+
firestore: FirebaseFirestore
326354
): Promise<void> {
327355
if (firestore._initialized && !firestore._terminated) {
328356
throw new FirestoreError(
@@ -420,7 +448,7 @@ export function terminate(firestore: FirebaseFirestore): Promise<void> {
420448
return firestore._delete();
421449
}
422450

423-
function verifyNotInitialized(firestore: FirestoreCompat): void {
451+
function verifyNotInitialized(firestore: FirebaseFirestore): void {
424452
if (firestore._initialized || firestore._terminated) {
425453
throw new FirestoreError(
426454
Code.FAILED_PRECONDITION,

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { FirebaseFirestore } from './database';
18+
import { ensureFirestoreConfigured, FirebaseFirestore } from './database';
1919
import {
2020
_DocumentKeyReference,
2121
ParsedUpdateData,
@@ -28,7 +28,6 @@ import { cast } from '../../../src/util/input_validation';
2828
import { DocumentSnapshot, QuerySnapshot } from './snapshot';
2929
import {
3030
applyFirestoreDataConverter,
31-
ensureFirestoreConfigured,
3231
SnapshotMetadata,
3332
validateHasExplicitOrderByForLimitToLast
3433
} from '../../../src/api/database';

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

+2-5
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,9 @@ import { Transaction as LiteTransaction } from '../../../lite/src/api/transactio
1919
import { DocumentSnapshot } from './snapshot';
2020
import { TransactionRunner } from '../../../src/core/transaction_runner';
2121
import { AsyncQueue } from '../../../src/util/async_queue';
22-
import { FirebaseFirestore } from './database';
22+
import { ensureFirestoreConfigured, FirebaseFirestore } from './database';
2323
import { Deferred } from '../../../src/util/promise';
24-
import {
25-
ensureFirestoreConfigured,
26-
SnapshotMetadata
27-
} from '../../../src/api/database';
24+
import { SnapshotMetadata } from '../../../src/api/database';
2825
import { Transaction as InternalTransaction } from '../../../src/core/transaction';
2926
import { validateReference } from '../../../lite/src/api/write_batch';
3027
import { getDatastore } from '../../../lite/src/api/components';

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@
1616
*/
1717

1818
import { WriteBatch } from '../../../lite/src/api/write_batch';
19-
import { FirebaseFirestore } from './database';
19+
import { ensureFirestoreConfigured, FirebaseFirestore } from './database';
2020
import { executeWrite } from './reference';
21-
import { ensureFirestoreConfigured } from '../../../src/api/database';
2221

2322
/**
2423
* Creates a write batch, used for performing multiple writes as a single

packages/firestore/exp/test/bootstrap.ts

+3-5
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { registerFirestore } from '../register';
19-
registerFirestore();
2018
/**
2119
* This will include all of the test files and compile them as needed
2220
*
@@ -26,10 +24,10 @@ registerFirestore();
2624

2725
// 'context()' definition requires additional dependency on webpack-env package.
2826
// eslint-disable-next-line @typescript-eslint/no-explicit-any
29-
const testsContext = (require as any).context(
27+
const integrationTestContext = (require as any).context(
3028
'../../test/integration/api',
3129
true,
3230
/^.*\.test\.ts$/
3331
);
34-
const browserTests = testsContext.keys();
35-
browserTests.forEach(testsContext);
32+
const integrationTests = integrationTestContext.keys();
33+
integrationTests.forEach(integrationTestContext);

0 commit comments

Comments
 (0)