diff --git a/packages/firestore/exp/index.ts b/packages/firestore/exp/index.ts index 5ac7079c8ee..d2b220ecc65 100644 --- a/packages/firestore/exp/index.ts +++ b/packages/firestore/exp/index.ts @@ -31,7 +31,9 @@ export { waitForPendingWrites, disableNetwork, enableNetwork, - terminate + terminate, + Settings, + PersistenceSettings } from './src/api/database'; export { @@ -68,9 +70,12 @@ export { QueryConstraintType, DocumentData, UpdateData, - OrderByDirection + OrderByDirection, + WhereFilterOp } from '../lite/src/api/reference'; +export { Unsubscribe } from '../src/api/observer'; + export { runTransaction, Transaction } from './src/api/transaction'; export { @@ -97,7 +102,7 @@ export { serverTimestamp } from '../lite/src/api/field_value'; -export { setLogLevel, LogLevel } from '../src/util/log'; +export { setLogLevel, LogLevelString as LogLevel } from '../src/util/log'; export { Bytes } from '../lite/src/api/bytes'; diff --git a/packages/firestore/exp/register.ts b/packages/firestore/exp/register.ts index 65f5177dc64..3fb5cc3f73c 100644 --- a/packages/firestore/exp/register.ts +++ b/packages/firestore/exp/register.ts @@ -21,6 +21,12 @@ import { Component, ComponentType } from '@firebase/component'; import { FirebaseFirestore } from './src/api/database'; import { version } from '../package.json'; +declare module '@firebase/component' { + interface NameServiceMapping { + 'firestore-exp': FirebaseFirestore; + } +} + export function registerFirestore(): void { _registerComponent( new Component( diff --git a/packages/firestore/exp/src/api/database.ts b/packages/firestore/exp/src/api/database.ts index 548b0958a98..20b534593dd 100644 --- a/packages/firestore/exp/src/api/database.ts +++ b/packages/firestore/exp/src/api/database.ts @@ -16,7 +16,7 @@ */ import { _getProvider, _removeServiceInstance } from '@firebase/app-exp'; -import { _FirebaseService, FirebaseApp } from '@firebase/app-types-exp'; +import { FirebaseApp } from '@firebase/app-types-exp'; import { Provider } from '@firebase/component'; import { FirebaseAuthInternalName } from '@firebase/auth-interop-types'; @@ -52,7 +52,6 @@ import { indexedDbClearPersistence, indexedDbStoragePrefix } from '../../../src/local/indexeddb_persistence'; -import { PersistenceSettings } from '../../../exp-types'; import { cast } from '../../../src/util/input_validation'; /** DOMException error code constants. */ @@ -60,6 +59,10 @@ const DOM_EXCEPTION_INVALID_STATE = 11; const DOM_EXCEPTION_ABORTED = 20; const DOM_EXCEPTION_QUOTA_EXCEEDED = 22; +export interface PersistenceSettings { + forceOwnership?: boolean; +} + export interface Settings extends LiteSettings { cacheSizeBytes?: number; } @@ -69,9 +72,7 @@ export interface Settings extends LiteSettings { * * Do not call this constructor directly. Instead, use {@link getFirestore()}. */ -export class FirebaseFirestore - extends LiteFirestore - implements _FirebaseService { +export class FirebaseFirestore extends LiteFirestore { readonly _queue = new AsyncQueue(); readonly _persistenceKey: string; diff --git a/packages/firestore/exp/src/api/snapshot.ts b/packages/firestore/exp/src/api/snapshot.ts index dccae2f8d8b..db80e1af253 100644 --- a/packages/firestore/exp/src/api/snapshot.ts +++ b/packages/firestore/exp/src/api/snapshot.ts @@ -20,6 +20,7 @@ import { Document } from '../../../src/model/document'; import { AbstractUserDataWriter } from '../../../src/api/user_data_writer'; import { DocumentSnapshot as LiteDocumentSnapshot, + FirestoreDataConverter as LiteFirestoreDataConverter, fieldPathFromArgument } from '../../../lite/src/api/snapshot'; import { FirebaseFirestore } from './database'; @@ -80,7 +81,8 @@ import { newQueryComparator } from '../../../src/core/query'; * } * ``` */ -export interface FirestoreDataConverter { +export interface FirestoreDataConverter + extends LiteFirestoreDataConverter { /** * Called by the Firestore SDK to convert a custom model object of type `T` * into a plain JavaScript object (suitable for writing directly to the diff --git a/packages/firestore/externs.json b/packages/firestore/externs.json index 06e8519f3c6..1a7749da1a1 100644 --- a/packages/firestore/externs.json +++ b/packages/firestore/externs.json @@ -29,7 +29,7 @@ "packages/util/dist/src/crypt.d.ts", "packages/util/dist/src/environment.d.ts", "packages/firestore/src/protos/firestore_bundle_proto.ts", - "packages/firestore/src/protos/firestore_proto_api.d.ts", + "packages/firestore/src/protos/firestore_proto_api.ts", "packages/firestore/src/util/error.ts", "packages/firestore/src/local/indexeddb_schema.ts", "packages/firestore/src/local/shared_client_state_schema.ts" diff --git a/packages/firestore/lite/register.ts b/packages/firestore/lite/register.ts index 4e41fb38831..8eda9253e1d 100644 --- a/packages/firestore/lite/register.ts +++ b/packages/firestore/lite/register.ts @@ -21,6 +21,12 @@ import { Component, ComponentType } from '@firebase/component'; import { FirebaseFirestore } from './src/api/database'; import { version } from '../package.json'; +declare module '@firebase/component' { + interface NameServiceMapping { + 'firestore/lite': FirebaseFirestore; + } +} + export function registerFirestore(): void { _registerComponent( new Component( diff --git a/packages/firestore/src/protos/firestore_proto_api.js b/packages/firestore/src/protos/firestore_proto_api.js deleted file mode 100644 index 21c443f41e5..00000000000 --- a/packages/firestore/src/protos/firestore_proto_api.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * @license - * Copyright 2020 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This file exists to solve an unresolved import error during the build. diff --git a/packages/firestore/src/protos/firestore_proto_api.d.ts b/packages/firestore/src/protos/firestore_proto_api.ts similarity index 99% rename from packages/firestore/src/protos/firestore_proto_api.d.ts rename to packages/firestore/src/protos/firestore_proto_api.ts index 6a62a636024..a95401d1ce8 100644 --- a/packages/firestore/src/protos/firestore_proto_api.d.ts +++ b/packages/firestore/src/protos/firestore_proto_api.ts @@ -696,7 +696,7 @@ export interface ProjectsDatabasesDocumentsWriteNamedParameters { $Xgafv?: ProjectsDatabasesDocumentsApiClient$Xgafv; } export abstract class ProjectsDatabasesDocumentsApiClient { - private constructor(); + private constructor() {} abstract batchGet( database: string, $requestBody: BatchGetDocumentsRequest, @@ -1121,7 +1121,7 @@ export interface ProjectsDatabasesIndexesListNamedParameters { pageToken?: string; } export abstract class ProjectsDatabasesIndexesApiClient { - private constructor(); + private constructor() {} abstract create( parent: string, $requestBody: Index, diff --git a/packages/firestore/src/util/error.ts b/packages/firestore/src/util/error.ts index 5e046b1e2df..f629cfd69b7 100644 --- a/packages/firestore/src/util/error.ts +++ b/packages/firestore/src/util/error.ts @@ -209,8 +209,8 @@ export const Code = { /** An error returned by a Firestore operation. */ export class FirestoreError extends Error { - name = 'FirebaseError'; - stack?: string; + readonly name: string = 'FirebaseError'; + readonly stack?: string; /** @hideconstructor */ constructor(readonly code: FirestoreErrorCode, readonly message: string) { diff --git a/packages/firestore/src/util/log.ts b/packages/firestore/src/util/log.ts index 498ed5e4c50..716674b6d97 100644 --- a/packages/firestore/src/util/log.ts +++ b/packages/firestore/src/util/log.ts @@ -41,7 +41,7 @@ export function getLogLevel(): LogLevel { *
  • `silent` to turn off logging.
  • * */ -export function setLogLevel(logLevel: LogLevelString | LogLevel): void { +export function setLogLevel(logLevel: LogLevelString): void { logClient.setLogLevel(logLevel); } diff --git a/packages/firestore/test/unit/util/async_queue.test.ts b/packages/firestore/test/unit/util/async_queue.test.ts index 64725146e3f..e51fff0b249 100644 --- a/packages/firestore/test/unit/util/async_queue.test.ts +++ b/packages/firestore/test/unit/util/async_queue.test.ts @@ -20,7 +20,11 @@ import * as chaiAsPromised from 'chai-as-promised'; import { expect, use } from 'chai'; import { AsyncQueue, TimerId } from '../../../src/util/async_queue'; import { Code } from '../../../src/util/error'; -import { getLogLevel, LogLevel, setLogLevel } from '../../../src/util/log'; +import { + getLogLevel, + setLogLevel, + LogLevelString +} from '../../../src/util/log'; import { Deferred, Rejecter, Resolver } from '../../../src/util/promise'; import { fail } from '../../../src/util/assert'; import { IndexedDbTransactionError } from '../../../src/local/simple_db'; @@ -83,7 +87,7 @@ describe('AsyncQueue', () => { // Disable logging for this test to avoid the assertion being logged const oldLogLevel = getLogLevel(); - setLogLevel(LogLevel.SILENT); + setLogLevel('silent'); // Schedule a failing operation and make sure it's handled correctly. const op1Promise = queue @@ -134,7 +138,7 @@ describe('AsyncQueue', () => { }).to.throw(/already failed:.*Simulated Error/); // Finally, restore log level. - setLogLevel(oldLogLevel); + setLogLevel((oldLogLevel as unknown) as LogLevelString); }); });