From cdc7c503213eeb0f2ea2f745c62b1f63d1cb9090 Mon Sep 17 00:00:00 2001 From: milaGGL <107142260+milaGGL@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:10:16 -0400 Subject: [PATCH] fix 'window' reference --- .changeset/gentle-rocks-repeat.md | 6 ++++++ packages/firestore/externs.json | 1 + packages/firestore/src/local/simple_db.ts | 9 ++++++--- 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 .changeset/gentle-rocks-repeat.md diff --git a/.changeset/gentle-rocks-repeat.md b/.changeset/gentle-rocks-repeat.md new file mode 100644 index 0000000000..462e36659b --- /dev/null +++ b/.changeset/gentle-rocks-repeat.md @@ -0,0 +1,6 @@ +--- +'@firebase/firestore': patch +'firebase': patch +--- + +Fix 'window is not defined' error when calling `clearIndexedDbPersistence` from a service worker diff --git a/packages/firestore/externs.json b/packages/firestore/externs.json index f7fbbabeb1..03d19ee8e8 100644 --- a/packages/firestore/externs.json +++ b/packages/firestore/externs.json @@ -31,6 +31,7 @@ "packages/util/dist/src/emulator.d.ts", "packages/util/dist/src/environment.d.ts", "packages/util/dist/src/compat.d.ts", + "packages/util/dist/src/global.d.ts", "packages/util/dist/src/obj.d.ts", "packages/firestore/src/protos/firestore_bundle_proto.ts", "packages/firestore/src/protos/firestore_proto_api.ts", diff --git a/packages/firestore/src/local/simple_db.ts b/packages/firestore/src/local/simple_db.ts index 3327f66acb..6d27702e72 100644 --- a/packages/firestore/src/local/simple_db.ts +++ b/packages/firestore/src/local/simple_db.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { getUA, isIndexedDBAvailable } from '@firebase/util'; +import { getGlobal, getUA, isIndexedDBAvailable } from '@firebase/util'; import { debugAssert } from '../util/assert'; import { Code, FirestoreError } from '../util/error'; @@ -24,7 +24,7 @@ import { Deferred } from '../util/promise'; import { PersistencePromise } from './persistence_promise'; -// References to `window` are guarded by SimpleDb.isAvailable() +// References to `indexedDB` are guarded by SimpleDb.isAvailable() and getGlobal() /* eslint-disable no-restricted-globals */ const LOG_TAG = 'SimpleDb'; @@ -164,7 +164,10 @@ export class SimpleDb { /** Deletes the specified database. */ static delete(name: string): Promise { logDebug(LOG_TAG, 'Removing database:', name); - return wrapRequest(window.indexedDB.deleteDatabase(name)).toPromise(); + const globals = getGlobal(); + return wrapRequest( + globals.indexedDB.deleteDatabase(name) + ).toPromise(); } /** Returns true if IndexedDB is available in the current environment. */