File tree Expand file tree Collapse file tree 4 files changed +34
-3
lines changed Expand file tree Collapse file tree 4 files changed +34
-3
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @firebase/util ' : patch
3+ ---
4+
5+ fix: browser detection (detect either window or web worker)
Original file line number Diff line number Diff line change 1+ ---
2+ ' @firebase/app ' : patch
3+ ---
4+
5+ fix: server app should initialize in web workers
Original file line number Diff line number Diff line change @@ -48,7 +48,12 @@ import {
4848 LogOptions ,
4949 setUserLogHandler
5050} from '@firebase/logger' ;
51- import { deepEqual , getDefaultAppConfig , isBrowser } from '@firebase/util' ;
51+ import {
52+ deepEqual ,
53+ getDefaultAppConfig ,
54+ isBrowser ,
55+ isWebWorker
56+ } from '@firebase/util' ;
5257
5358export { FirebaseError } from '@firebase/util' ;
5459
@@ -230,7 +235,7 @@ export function initializeServerApp(
230235 _options : FirebaseOptions | FirebaseApp ,
231236 _serverAppConfig : FirebaseServerAppSettings
232237) : FirebaseServerApp {
233- if ( isBrowser ( ) ) {
238+ if ( isBrowser ( ) && ! isWebWorker ( ) ) {
234239 // FirebaseServerApp isn't designed to be run in browsers.
235240 throw ERROR_FACTORY . create ( AppError . INVALID_SERVER_APP_ENVIRONMENT ) ;
236241 }
Original file line number Diff line number Diff line change 1818import { CONSTANTS } from './constants' ;
1919import { getDefaults } from './defaults' ;
2020
21+ /**
22+ * Type placeholder for `WorkerGlobalScope` from `webworker`
23+ */
24+ declare class WorkerGlobalScope { }
25+
2126/**
2227 * Returns navigator.userAgent string or '' if it's not defined.
2328 * @return user agent string
@@ -77,7 +82,18 @@ export function isNode(): boolean {
7782 * Detect Browser Environment
7883 */
7984export function isBrowser ( ) : boolean {
80- return typeof self === 'object' && self . self === self ;
85+ return typeof window !== 'undefined' || isWebWorker ( ) ;
86+ }
87+
88+ /**
89+ * Detect Web Worker context
90+ */
91+ export function isWebWorker ( ) : boolean {
92+ return (
93+ typeof WorkerGlobalScope !== 'undefined' &&
94+ typeof self !== 'undefined' &&
95+ self instanceof WorkerGlobalScope
96+ ) ;
8197}
8298
8399/**
You can’t perform that action at this time.
0 commit comments