UNPKG

118 kBSource Map (JSON)View Raw
1{"version":3,"file":"reactfire.esm.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/firebaseApp.tsx","../src/auth.tsx","../src/database.tsx","../src/SuspenseSubject.ts","../src/useObservable.ts","../src/firestore.tsx","../src/functions.tsx","../src/performance.tsx","../src/remote-config.tsx","../src/storage.tsx","../src/sdk.tsx","../src/index.ts"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import * as React from 'react';\nimport { getApps, initializeApp, registerVersion } from 'firebase/app';\n\nimport type { FirebaseApp, FirebaseOptions } from 'firebase/app';\n\n// INVESTIGATE I don't like magic strings, can we have export this in js-sdk?\nconst DEFAULT_APP_NAME = '[DEFAULT]';\n\nconst FirebaseAppContext = React.createContext<FirebaseApp | undefined>(undefined);\nconst SuspenseEnabledContext = React.createContext<boolean>(false);\n\ninterface FirebaseAppProviderProps {\n firebaseApp?: FirebaseApp;\n firebaseConfig?: FirebaseOptions;\n appName?: string;\n suspense?: boolean;\n}\n\n// @ts-expect-error: \"__REACTFIRE_VERSION__\" is replaced with actual ReactFire version (see babel.config.js)\nexport const version = __REACTFIRE_VERSION__;\n\nconst shallowEq = (a: { [key: string]: any }, b: { [key: string]: any }) => a === b || [...Object.keys(a), ...Object.keys(b)].every((key) => a[key] === b[key]);\n\nexport function FirebaseAppProvider(props: React.PropsWithChildren<FirebaseAppProviderProps>) {\n const { firebaseConfig, appName, suspense } = props;\n\n const firebaseApp: FirebaseApp = React.useMemo(() => {\n if (props.firebaseApp) {\n return props.firebaseApp;\n }\n\n const existingApp = getApps().find((app) => app.name === (appName || DEFAULT_APP_NAME));\n if (existingApp) {\n if (firebaseConfig && shallowEq(existingApp.options, firebaseConfig)) {\n return existingApp;\n } else {\n throw new Error(\n `Does not match the options already provided to the ${appName || 'default'} firebase app instance, give this new instance a different appName.`\n );\n }\n } else {\n if (!firebaseConfig) {\n throw new Error('No firebaseConfig provided');\n }\n\n const reactVersion = React.version || 'unknown';\n registerVersion('react', reactVersion);\n registerVersion('reactfire', version);\n return initializeApp(firebaseConfig, appName);\n }\n }, [props.firebaseApp, firebaseConfig, appName]);\n\n return (\n <FirebaseAppContext.Provider value={firebaseApp}>\n <SuspenseEnabledContext.Provider value={suspense ?? false} {...props} />\n </FirebaseAppContext.Provider>\n );\n}\n\nexport function useIsSuspenseEnabled(): boolean {\n const suspense = React.useContext(SuspenseEnabledContext);\n\n // default to false if not available in context\n return suspense ?? false;\n}\n\nexport function useSuspenseEnabledFromConfigAndContext(suspenseFromConfig?: boolean): boolean {\n let suspenseFromContext = React.useContext(SuspenseEnabledContext);\n\n // prioritize config over context\n if (suspenseFromConfig !== undefined) {\n return suspenseFromConfig;\n }\n\n return suspenseFromContext;\n}\n\nexport function useFirebaseApp() {\n const firebaseApp = React.useContext(FirebaseAppContext);\n if (!firebaseApp) {\n throw new Error('Cannot call useFirebaseApp unless your component is within a FirebaseAppProvider');\n }\n\n return firebaseApp;\n}\n","import * as React from 'react';\nimport { user } from 'rxfire/auth';\nimport { preloadObservable, ReactFireOptions, useAuth, useObservable, ObservableStatus, ReactFireError } from './';\nimport { from, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { useSuspenseEnabledFromConfigAndContext } from './firebaseApp';\n\nimport type { Auth, User, IdTokenResult } from 'firebase/auth';\ntype Claims = IdTokenResult['claims'];\n\nexport async function preloadUser(authResolver: () => Promise<Auth>) {\n const auth = await authResolver();\n const user$ = preloadObservable(user(auth), `auth:user:${auth.name}`);\n return user$.toPromise();\n}\n\n/**\n * Subscribe to Firebase auth state changes, including token refresh\n *\n * @param options\n */\nexport function useUser<T = unknown>(options?: ReactFireOptions<T>): ObservableStatus<User | null> {\n const auth = useAuth();\n\n const observableId = `auth:user:${auth.name}`;\n const observable$ = user(auth);\n\n let currentUser = auth.currentUser;\n\n // Only use options.initialData if auth.currentUser is unavailable\n if (!currentUser && (options?.initialData ?? options?.startWithValue)) {\n currentUser = options.initialData ?? options.startWithValue;\n }\n\n return useObservable(observableId, observable$, { ...options, initialData: currentUser });\n}\n\nexport function useIdTokenResult(user: User, forceRefresh: boolean = false, options?: ReactFireOptions<IdTokenResult>): ObservableStatus<IdTokenResult> {\n if (!user) {\n throw new Error('you must provide a user');\n }\n\n const observableId = `auth:idTokenResult:${user.uid}:forceRefresh=${forceRefresh}`;\n const observable$ = from(user.getIdTokenResult(forceRefresh));\n\n return useObservable(observableId, observable$, options);\n}\n\nexport interface AuthCheckProps {\n fallback: React.ReactNode;\n children: React.ReactNode;\n requiredClaims?: Object;\n}\n\nexport interface ClaimsCheckProps {\n user: User;\n fallback: React.ReactNode;\n children: React.ReactNode;\n requiredClaims: { [key: string]: any };\n}\n\nexport interface ClaimCheckErrors {\n [key: string]: any[];\n}\n\nexport type SigninCheckResult =\n | {\n signedIn: false;\n hasRequiredClaims: false;\n errors: {};\n user: null;\n }\n | {\n signedIn: true;\n hasRequiredClaims: boolean;\n errors: ClaimCheckErrors;\n user: User;\n };\n\nexport interface SignInCheckOptionsBasic extends ReactFireOptions<SigninCheckResult> {\n forceRefresh?: boolean;\n}\n\nexport interface SignInCheckOptionsClaimsObject extends SignInCheckOptionsBasic {\n requiredClaims: Claims;\n}\n\nexport interface ClaimsValidator {\n (claims: Claims): {\n hasRequiredClaims: boolean;\n errors: ClaimCheckErrors | {};\n };\n}\n\nexport interface SignInCheckOptionsClaimsValidator extends SignInCheckOptionsBasic {\n validateCustomClaims: ClaimsValidator;\n}\n\n/**\n * Subscribe to the signed-in status of a user.\n *\n * ```ts\n * const { status, data:signInCheckResult } = useSigninCheck();\n *\n * if (status === 'loading') {\n * return <LoadingSpinner />}\n *\n *\n * if (signInCheckResult.signedIn === true) {\n * return <ProfilePage user={signInCheckResult.user}/>\n * } else {\n * return <SignInForm />\n * }\n * ```\n *\n * Optionally check [custom claims](https://firebase.google.com/docs/auth/admin/custom-claims) of a user as well.\n *\n * ```ts\n * // pass in an object describing the custom claims a user must have\n * const {status, data: signInCheckResult} = useSignInCheck({requiredClaims: {admin: true}});\n *\n * // pass in a custom claims validator function\n * const {status, data: signInCheckResult} = useSignInCheck({validateCustomClaims: (userClaims) => {\n * // custom validation logic...\n * }});\n *\n * // You can optionally force-refresh the token\n * const {status, data: signInCheckResult} = useSignInCheck({forceRefresh: true, requiredClaims: {admin: true}});\n * ```\n */\nexport function useSigninCheck(\n options?: SignInCheckOptionsBasic | SignInCheckOptionsClaimsObject | SignInCheckOptionsClaimsValidator\n): ObservableStatus<SigninCheckResult> {\n // If both `requiredClaims` and `validateCustomClaims` are provided, we won't know which one to use\n if (options?.hasOwnProperty('requiredClaims') && options?.hasOwnProperty('validateCustomClaims')) {\n throw new Error('Cannot have both \"requiredClaims\" and \"validateCustomClaims\". Use one or the other.');\n }\n\n const auth = useAuth();\n\n // ObservableId should change for different options configurations to ensure no cache collisions\n let observableId = `auth:signInCheck:${auth.name}::forceRefresh:${!!options?.forceRefresh}`;\n if (options?.forceRefresh) {\n observableId = `${observableId}:forceRefresh:${options.forceRefresh}`;\n }\n if (options?.hasOwnProperty('requiredClaims')) {\n observableId = `${observableId}:requiredClaims:${JSON.stringify((options as SignInCheckOptionsClaimsObject).requiredClaims)}`;\n } else if (options?.hasOwnProperty('validateCustomClaims')) {\n // TODO(jamesdaniels): Check if stringifying this function breaks in IE11\n observableId = `${observableId}:validateCustomClaims:${JSON.stringify((options as SignInCheckOptionsClaimsValidator).validateCustomClaims)}`;\n }\n\n const observable = user(auth).pipe(\n switchMap((user) => {\n if (!user) {\n const result: SigninCheckResult = { signedIn: false, hasRequiredClaims: false, errors: {}, user: null };\n return of(result);\n } else if (options && (options.hasOwnProperty('requiredClaims') || options.hasOwnProperty('validateCustomClaims'))) {\n return from(user.getIdTokenResult(options?.forceRefresh ?? false)).pipe(\n map((idTokenResult) => {\n let validator: ClaimsValidator;\n\n if (options.hasOwnProperty('requiredClaims')) {\n validator = getClaimsObjectValidator((options as SignInCheckOptionsClaimsObject).requiredClaims);\n } else {\n validator = (options as SignInCheckOptionsClaimsValidator).validateCustomClaims;\n }\n\n const { hasRequiredClaims, errors } = validator(idTokenResult.claims);\n\n const result: SigninCheckResult = { signedIn: true, hasRequiredClaims, errors, user: user };\n return result;\n })\n );\n } else {\n // If no claims are provided to be checked, `hasRequiredClaims` is true\n const result: SigninCheckResult = { signedIn: true, hasRequiredClaims: true, errors: {}, user: user };\n return of(result);\n }\n })\n );\n\n return useObservable(observableId, observable);\n}\n\nfunction getClaimsObjectValidator(requiredClaims: Claims): ClaimsValidator {\n return function claimsObjectValidator(userClaims) {\n const errors: { [key: string]: ReactFireError[] } = {};\n\n Object.keys(requiredClaims).forEach((claim) => {\n if (requiredClaims[claim] !== userClaims[claim]) {\n errors[claim] = [new ReactFireError('auth/missing-claim', `Expected \"${requiredClaims[claim]}\", but user has \"${userClaims[claim]}\" instead`)];\n }\n });\n\n return {\n hasRequiredClaims: Object.keys(errors).length === 0,\n errors,\n };\n };\n}\n\n/**\n * @deprecated Use `useSignInCheck` instead\n *\n * Conditionally render children based on [custom claims](https://firebase.google.com/docs/auth/admin/custom-claims).\n *\n * Meant for Concurrent mode only (`<FirebaseAppProvider suspense=true />`). [More detail](https://github.com/FirebaseExtended/reactfire/issues/325#issuecomment-827654376).\n */\nexport function ClaimsCheck({ user, fallback, children, requiredClaims }: ClaimsCheckProps) {\n const { data } = useIdTokenResult(user, false);\n const { claims } = data;\n const missingClaims: { [key: string]: { expected: string; actual: string | undefined } } = {};\n\n const suspenseMode = useSuspenseEnabledFromConfigAndContext();\n if (!suspenseMode) {\n console.warn(\n 'ClaimsCheck is deprecated and only works when ReactFire is in experimental Suspense Mode. Use useSigninCheck or set suspense={true} in FirebaseAppProvider if you want to use this component.'\n );\n }\n\n if (requiredClaims) {\n Object.keys(requiredClaims).forEach((claim) => {\n if (requiredClaims[claim] !== claims[claim]) {\n missingClaims[claim] = {\n expected: requiredClaims[claim],\n actual: claims[claim]?.toString(),\n };\n }\n });\n }\n\n if (Object.keys(missingClaims).length === 0) {\n return <>{children}</>;\n } else {\n return <>{fallback}</>;\n }\n}\n\n/**\n * @deprecated Use `useSignInCheck` instead\n *\n * Conditionally render children based on signed-in status and [custom claims](https://firebase.google.com/docs/auth/admin/custom-claims).\n *\n * Meant for Concurrent mode only (`<FirebaseAppProvider suspense=true />`). [More detail](https://github.com/FirebaseExtended/reactfire/issues/325#issuecomment-827654376).\n */\nexport function AuthCheck({ fallback, children, requiredClaims }: AuthCheckProps): JSX.Element {\n const { data: user } = useUser<User>();\n\n const suspenseMode = useSuspenseEnabledFromConfigAndContext();\n if (!suspenseMode) {\n console.warn(\n 'AuthCheck is deprecated and only works when ReactFire is in experimental Suspense Mode. Use useSigninCheck or set suspense={true} in FirebaseAppProvider if you want to use this component.'\n );\n }\n\n if (user) {\n return requiredClaims ? (\n <ClaimsCheck user={user} fallback={fallback} requiredClaims={requiredClaims}>\n {children}\n </ClaimsCheck>\n ) : (\n <>{children}</>\n );\n } else {\n return <>{fallback}</>;\n }\n}\n","import { list, object, QueryChange, listVal, objectVal } from 'rxfire/database';\nimport { ReactFireOptions, useObservable, checkIdField, ObservableStatus, ReactFireGlobals } from './';\n\nimport type { Query as DatabaseQuery, DatabaseReference } from 'firebase/database';\n\n// Since we're side-effect free, we need to ensure our observableId cache is global\nconst cachedQueries: Array<DatabaseQuery> = (globalThis as any as ReactFireGlobals)._reactFireDatabaseCachedQueries || [];\n\nif (!(globalThis as any as ReactFireGlobals)._reactFireDatabaseCachedQueries) {\n (globalThis as any as ReactFireGlobals)._reactFireDatabaseCachedQueries = cachedQueries;\n}\n\nfunction getUniqueIdForDatabaseQuery(query: DatabaseQuery) {\n const index = cachedQueries.findIndex((cachedQuery) => cachedQuery.isEqual(query));\n if (index > -1) {\n return index;\n }\n return cachedQueries.push(query) - 1;\n}\n\n/**\n * Subscribe to a Realtime Database object\n *\n * @param ref - Reference to the DB object you want to listen to\n * @param options\n */\nexport function useDatabaseObject<T = unknown>(ref: DatabaseReference, options?: ReactFireOptions<T>): ObservableStatus<QueryChange | T> {\n const observableId = `database:object:${ref.toString()}`;\n const observable$ = object(ref);\n\n return useObservable(observableId, observable$, options);\n}\n\nexport function useDatabaseObjectData<T>(ref: DatabaseReference, options?: ReactFireOptions<T>): ObservableStatus<T> {\n const idField = options ? checkIdField(options) : 'NO_ID_FIELD';\n const observableId = `database:objectVal:${ref.toString()}:idField=${idField}`;\n const observable$ = objectVal<T>(ref, { keyField: idField });\n\n return useObservable(observableId, observable$, options);\n}\n\n/**\n * Subscribe to a Realtime Database list\n *\n * @param ref - Reference to the DB List you want to listen to\n * @param options\n */\nexport function useDatabaseList<T = { [key: string]: unknown }>(\n ref: DatabaseReference | DatabaseQuery,\n options?: ReactFireOptions<T[]>\n): ObservableStatus<QueryChange[] | T[]> {\n const hash = `database:list:${getUniqueIdForDatabaseQuery(ref)}`;\n const observable$ = list(ref);\n\n return useObservable(hash, observable$, options);\n}\n\nexport function useDatabaseListData<T = { [key: string]: unknown }>(\n ref: DatabaseReference | DatabaseQuery,\n options?: ReactFireOptions<T[]>\n): ObservableStatus<T[] | null> {\n const idField = options ? checkIdField(options) : 'NO_ID_FIELD';\n const observableId = `database:listVal:${getUniqueIdForDatabaseQuery(ref)}:idField=${idField}`;\n const observable$ = listVal<T>(ref, { keyField: idField });\n return useObservable(observableId, observable$, options);\n}\n","import { empty, Observable, Subject, Subscriber, Subscription } from 'rxjs';\nimport { catchError, shareReplay, tap } from 'rxjs/operators';\n\nexport class SuspenseSubject<T> extends Subject<T> {\n private _value: T | undefined;\n private _hasValue = false;\n private _timeoutHandler: NodeJS.Timeout;\n private _firstEmission: Promise<void>;\n private _error: any = undefined;\n private _innerObservable: Observable<T>;\n private _warmupSubscription: Subscription;\n\n // @ts-expect-error: TODO: double check to see if this is an RXJS thing or if we should listen to TS\n private _innerSubscriber: Subscription;\n // @ts-expect-error: TODO: double check to see if this is an RXJS thing or if we should listen to TS\n private _resolveFirstEmission: () => void;\n\n constructor(innerObservable: Observable<T>, private _timeoutWindow: number) {\n super();\n this._firstEmission = new Promise<void>((resolve) => (this._resolveFirstEmission = resolve));\n this._innerObservable = innerObservable.pipe(\n tap({\n next: (v) => {\n this._next(v);\n },\n error: (e) => {\n // save the error, so that we can raise on subscription or .value\n // resolve the promise, so suspense tries again\n this._error = e;\n this._resolveFirstEmission();\n },\n }),\n catchError(() => empty()),\n shareReplay(1)\n );\n // warm up the observable\n this._warmupSubscription = this._innerObservable.subscribe();\n\n // set a timeout for resetting the cache, subscriptions will cancel the timeout\n // and reschedule again on unsubscribe\n this._timeoutHandler = setTimeout(this._reset.bind(this), this._timeoutWindow);\n }\n\n get hasValue(): boolean {\n // hasValue returns true if there's an error too\n // so that after we resolve the promise & useObservable is called again\n // we won't throw again\n return this._hasValue || !!this._error;\n }\n\n get value(): T {\n // TODO figure out how to reset the cache here, if I _reset() here before throwing\n // it doesn't seem to work.\n // As it is now, this will burn the cache entry until the timeout fires.\n if (this._error) {\n throw this._error;\n } else if (!this.hasValue) {\n throw Error('Can only get value if SuspenseSubject has a value');\n }\n return this._value as T;\n }\n\n get firstEmission(): Promise<void> {\n return this._firstEmission;\n }\n\n private _next(value: T) {\n this._hasValue = true;\n this._value = value;\n this._resolveFirstEmission();\n }\n\n private _reset() {\n // seems to be undefined in tests?\n if (this._warmupSubscription) {\n this._warmupSubscription.unsubscribe();\n }\n this._hasValue = false;\n this._value = undefined;\n this._error = undefined;\n this._firstEmission = new Promise<void>((resolve) => (this._resolveFirstEmission = resolve));\n }\n\n _subscribe(subscriber: Subscriber<T>): Subscription {\n if (this._timeoutHandler) {\n clearTimeout(this._timeoutHandler);\n }\n this._innerSubscriber = this._innerObservable.subscribe(subscriber);\n return this._innerSubscriber;\n }\n\n get ourError() {\n return this._error;\n }\n}\n","import * as React from 'react';\nimport { Observable } from 'rxjs';\nimport { SuspenseSubject } from './SuspenseSubject';\nimport { useSuspenseEnabledFromConfigAndContext } from './firebaseApp';\nimport { ReactFireGlobals, ReactFireOptions } from './';\n\nconst DEFAULT_TIMEOUT = 30_000;\n\n// Since we're side-effect free, we need to ensure our observable cache is global\nconst preloadedObservables: Map<string, SuspenseSubject<any>> = (globalThis as any as ReactFireGlobals)._reactFirePreloadedObservables || new Map();\n\nif (!(globalThis as any as ReactFireGlobals)._reactFirePreloadedObservables) {\n (globalThis as any as ReactFireGlobals)._reactFirePreloadedObservables = preloadedObservables;\n}\n\n// Starts listening to an Observable.\n// Call this once you know you're going to render a\n// child that will consume the observable\nexport function preloadObservable<T>(source: Observable<T>, id: string) {\n if (preloadedObservables.has(id)) {\n return preloadedObservables.get(id) as SuspenseSubject<T>;\n } else {\n const observable = new SuspenseSubject(source, DEFAULT_TIMEOUT);\n preloadedObservables.set(id, observable);\n return observable;\n }\n}\n\nexport interface ObservableStatus<T> {\n /**\n * The loading status.\n *\n * - `loading`: Waiting for the first value from an observable\n * - `error`: Something went wrong. Check `ObservableStatus.error` for more details\n * - `success`: The hook has emitted at least one value\n *\n * If `initialData` is passed in, this will skip `loading` and go straight to `success`.\n */\n status: 'loading' | 'error' | 'success';\n /**\n * Indicates whether the hook has emitted a value at some point\n *\n * If `initialData` is passed in, this will be `true`.\n */\n hasEmitted: boolean; // has received at least one value\n /**\n * If this is `true`, the hook will be emitting no further items.\n */\n isComplete: boolean;\n /**\n * The most recent value.\n *\n * If `initialData` is passed in, the first value of `data` will be the valuea provided in `initialData` **UNLESS** the underlying observable is ready, in which case it will skip `initialData`.\n */\n data: T;\n /**\n * Any error that may have occurred in the underlying observable\n */\n error: Error | undefined;\n /**\n * Promise that resolves after first emit from observable\n */\n firstValuePromise: Promise<void>;\n}\n\nfunction reducerFactory<T>(observable: SuspenseSubject<T>) {\n return function reducer(state: ObservableStatus<T>, action: 'value' | 'error' | 'complete'): ObservableStatus<T> {\n // always make sure these values are in sync with the observable\n const newState = {\n ...state,\n hasEmitted: state.hasEmitted || observable.hasValue,\n error: observable.ourError,\n firstValuePromise: observable.firstEmission,\n };\n if (observable.hasValue) {\n newState.data = observable.value;\n }\n\n switch (action) {\n case 'value':\n newState.status = 'success';\n return newState;\n case 'error':\n newState.status = 'error';\n return newState;\n case 'complete':\n newState.isComplete = true;\n return newState;\n default:\n throw new Error(`invalid action \"${action}\"`);\n }\n };\n}\n\nexport function useObservable<T = unknown>(observableId: string, source: Observable<T>, config: ReactFireOptions = {}): ObservableStatus<T> {\n // Register the observable with the cache\n if (!observableId) {\n throw new Error('cannot call useObservable without an observableId');\n }\n const observable = preloadObservable(source, observableId);\n\n // Suspend if suspense is enabled and no initial data exists\n const hasInitialData = config.hasOwnProperty('initialData') || config.hasOwnProperty('startWithValue');\n const hasData = observable.hasValue || hasInitialData;\n const suspenseEnabled = useSuspenseEnabledFromConfigAndContext(config.suspense);\n if (suspenseEnabled === true && !hasData) {\n throw observable.firstEmission;\n }\n\n const initialState: ObservableStatus<T> = {\n status: hasData ? 'success' : 'loading',\n hasEmitted: hasData,\n isComplete: false,\n data: observable.hasValue ? observable.value : config?.initialData ?? config?.startWithValue,\n error: observable.ourError,\n firstValuePromise: observable.firstEmission,\n };\n const [status, dispatch] = React.useReducer<React.Reducer<ObservableStatus<T>, 'value' | 'error' | 'complete'>>(reducerFactory<T>(observable), initialState);\n\n React.useEffect(() => {\n const subscription = observable.subscribe({\n next: () => {\n dispatch('value');\n },\n error: (e) => {\n dispatch('error');\n throw e;\n },\n complete: () => {\n dispatch('complete');\n },\n });\n return () => subscription.unsubscribe();\n }, [observable]);\n\n return status;\n}\n","import { collectionData, doc, docData, fromRef } from 'rxfire/firestore';\nimport { ReactFireOptions, useObservable, checkIdField, ReactFireGlobals } from './';\nimport { preloadObservable, ObservableStatus } from './useObservable';\nimport { first } from 'rxjs/operators';\n\nimport { Query as FirestoreQuery, QuerySnapshot, DocumentReference, queryEqual, DocumentData, DocumentSnapshot } from 'firebase/firestore';\n\n// Since we're side-effect free, we need to ensure our observableId cache is global\nconst cachedQueries: Array<FirestoreQuery> = (globalThis as any as ReactFireGlobals)._reactFireFirestoreQueryCache || [];\n\nif (!(globalThis as any as ReactFireGlobals)._reactFireFirestoreQueryCache) {\n (globalThis as any as ReactFireGlobals)._reactFireFirestoreQueryCache = cachedQueries;\n}\n\nfunction getUniqueIdForFirestoreQuery(query: FirestoreQuery) {\n const index = cachedQueries.findIndex((cachedQuery) => queryEqual(cachedQuery, query));\n if (index > -1) {\n return index;\n }\n return cachedQueries.push(query) - 1;\n}\n\n/**\n * Preload a subscription to a Firestore document reference.\n *\n * Use this to warm up `useFirestoreDoc` for a specific document\n */\nexport async function preloadFirestoreDoc(refProvider: () => Promise<DocumentReference>) {\n const ref = await refProvider();\n return preloadObservable(doc(ref), getDocObservableId(ref));\n}\n\nfunction getDocObservableId(ref: DocumentReference) {\n return `firestore:doc:${ref.firestore.app.name}:${ref.path}`;\n}\n\n/**\n * Suscribe to Firestore Document changes\n *\n * You can preload data for this hook by calling `preloadFirestoreDoc`\n */\nexport function useFirestoreDoc<T = DocumentData>(ref: DocumentReference<T>, options?: ReactFireOptions<T>): ObservableStatus<DocumentSnapshot<T>> {\n const observableId = getDocObservableId(ref);\n const observable$ = doc(ref);\n\n return useObservable(observableId, observable$, options);\n}\n\n/**\n * Get a firestore document and don't subscribe to changes\n */\nexport function useFirestoreDocOnce<T = DocumentData>(ref: DocumentReference<T>, options?: ReactFireOptions<T>): ObservableStatus<DocumentSnapshot<T>> {\n const observableId = `firestore:docOnce:${ref.firestore.app.name}:${ref.path}`;\n const observable$ = doc(ref).pipe(first());\n\n return useObservable(observableId, observable$, options);\n}\n\n/**\n * Suscribe to Firestore Document changes and unwrap the document into a plain object\n */\nexport function useFirestoreDocData<T = unknown>(ref: DocumentReference<T>, options?: ReactFireOptions<T>): ObservableStatus<T> {\n const idField = options ? checkIdField(options) : 'NO_ID_FIELD';\n\n const observableId = `firestore:docData:${ref.firestore.app.name}:${ref.path}:idField=${idField}`;\n const observable = docData(ref, { idField });\n\n return useObservable(observableId, observable, options);\n}\n\n/**\n * Get a Firestore document, unwrap the document into a plain object, and don't subscribe to changes\n */\nexport function useFirestoreDocDataOnce<T = unknown>(ref: DocumentReference<T>, options?: ReactFireOptions<T>): ObservableStatus<T> {\n const idField = options ? checkIdField(options) : 'NO_ID_FIELD';\n\n const observableId = `firestore:docDataOnce:${ref.firestore.app.name}:${ref.path}:idField=${idField}`;\n const observable$ = docData(ref, { idField }).pipe(first());\n\n return useObservable(observableId, observable$, options);\n}\n\n/**\n * Subscribe to a Firestore collection\n */\nexport function useFirestoreCollection<T = DocumentData>(query: FirestoreQuery<T>, options?: ReactFireOptions<T[]>): ObservableStatus<QuerySnapshot<T>> {\n const observableId = `firestore:collection:${getUniqueIdForFirestoreQuery(query)}`;\n const observable$ = fromRef(query);\n\n return useObservable(observableId, observable$, options);\n}\n\n/**\n * Subscribe to a Firestore collection and unwrap the snapshot into an array.\n */\nexport function useFirestoreCollectionData<T = DocumentData>(query: FirestoreQuery<T>, options?: ReactFireOptions<T[]>): ObservableStatus<T[]> {\n const idField = options ? checkIdField(options) : 'NO_ID_FIELD';\n const observableId = `firestore:collectionData:${getUniqueIdForFirestoreQuery(query)}:idField=${idField}`;\n const observable$ = collectionData(query, { idField });\n\n return useObservable(observableId, observable$, options);\n}\n","import { httpsCallable as rxHttpsCallable } from 'rxfire/functions';\nimport { ReactFireOptions, useObservable, ObservableStatus } from './';\nimport { useFunctions } from '.';\n\nimport type { HttpsCallableOptions } from 'firebase/functions';\n\n/**\n * Calls a callable function.\n *\n * @param functionName - The name of the function to call\n * @param options\n */\nexport function useCallableFunctionResponse<RequestData, ResponseData>(\n functionName: string,\n options?: ReactFireOptions<ResponseData> & {\n httpsCallableOptions?: HttpsCallableOptions;\n data?: RequestData;\n }\n): ObservableStatus<ResponseData> {\n const functions = useFunctions();\n const observableId = `functions:callableResponse:${functionName}:${JSON.stringify(options?.data)}:${JSON.stringify(options?.httpsCallableOptions)}`;\n const obsFactory = rxHttpsCallable<RequestData, ResponseData>(functions, functionName, options?.httpsCallableOptions);\n const observable$ = obsFactory(options?.data);\n\n return useObservable(observableId, observable$, options);\n}\n","import * as React from 'react';\n\nexport interface SuspensePerfProps {\n children: React.ReactNode;\n traceId: string;\n fallback: React.ReactNode;\n}\n\nexport function SuspenseWithPerf({ children, traceId, fallback }: SuspensePerfProps): JSX.Element {\n // TODO: Should this import firebase/performance?\n\n const entries = performance?.getEntriesByName?.(traceId, 'measure') || [];\n const startMarkName = `_${traceId}Start[${entries.length}]`;\n const endMarkName = `_${traceId}End[${entries.length}]`;\n\n const Fallback = () => {\n React.useLayoutEffect(() => {\n performance?.mark?.(startMarkName);\n\n return () => {\n performance?.mark?.(endMarkName);\n performance?.measure?.(traceId, startMarkName, endMarkName);\n };\n }, []);\n\n return <>{fallback}</>;\n };\n\n return <React.Suspense fallback={<Fallback />}>{children}</React.Suspense>;\n}\n","import { useRemoteConfig } from './';\nimport { useObservable, ObservableStatus } from './useObservable';\nimport { getValue, getString, getBoolean, getNumber, getAll, AllParameters } from 'rxfire/remote-config';\nimport { Observable } from 'rxjs';\n\nimport type { RemoteConfig, Value as RemoteConfigValue } from 'firebase/remote-config';\n\ntype Getter$<T> = (remoteConfig: RemoteConfig, key: string) => Observable<T>;\n\n/**\n * Helper function to construct type safe functions. Since Remote Config has\n * methods that return different types for values, we need to be extra safe\n * to make sure we are not returning improper types by accident.\n * @param key\n * @param getter\n * @param remoteConfig\n */\nfunction useRemoteConfigValue_INTERNAL<T>(key: string, getter: Getter$<T>): ObservableStatus<T> {\n const remoteConfig = useRemoteConfig();\n\n const appName = remoteConfig.app.name;\n const $value = getter(remoteConfig, key);\n\n const observableId = `remoteConfig:${key}:${getter.name}:${appName}`;\n return useObservable<T>(observableId, $value);\n}\n\n/**\n * Accepts a key and optionally a Remote Config instance. Returns a\n * Remote Config Value.\n *\n * @param key The parameter key in Remote Config\n */\nexport function useRemoteConfigValue(key: string): ObservableStatus<RemoteConfigValue> {\n return useRemoteConfigValue_INTERNAL<RemoteConfigValue>(key, getValue);\n}\n\n/**\n * Convience method similar to useRemoteConfigValue. Returns a `string` from a Remote Config parameter.\n * @param key The parameter key in Remote Config\n */\nexport function useRemoteConfigString(key: string): ObservableStatus<string> {\n return useRemoteConfigValue_INTERNAL<string>(key, getString);\n}\n\n/**\n * Convience method similar to useRemoteConfigValue. Returns a `number` from a Remote Config parameter.\n * @param key The parameter key in Remote Config\n */\nexport function useRemoteConfigNumber(key: string): ObservableStatus<number> {\n return useRemoteConfigValue_INTERNAL<number>(key, getNumber);\n}\n\n/**\n * Convience method similar to useRemoteConfigValue. Returns a `boolean` from a Remote Config parameter.\n * @param key The parameter key in Remote Config\n */\nexport function useRemoteConfigBoolean(key: string): ObservableStatus<boolean> {\n return useRemoteConfigValue_INTERNAL<boolean>(key, getBoolean);\n}\n\n/**\n * Convience method similar to useRemoteConfigValue. Returns allRemote Config parameters.\n * @param key The parameter key in Remote Config\n */\nexport function useRemoteConfigAll(key: string): ObservableStatus<AllParameters> {\n return useRemoteConfigValue_INTERNAL<AllParameters>(key, getAll);\n}\n","import * as React from 'react';\nimport { getDownloadURL, fromTask } from 'rxfire/storage';\nimport { ReactFireOptions, useObservable, ObservableStatus, useStorage } from './';\nimport { useSuspenseEnabledFromConfigAndContext } from './firebaseApp';\nimport { ref } from 'firebase/storage';\n\nimport type { UploadTask, UploadTaskSnapshot, StorageReference, FirebaseStorage } from 'firebase/storage';\n\n/**\n * Subscribe to the progress of a storage task\n *\n * @param task - the task you want to listen to\n * @param ref - reference to the blob the task is acting on\n * @param options\n */\nexport function useStorageTask<T = unknown>(task: UploadTask, ref: StorageReference, options?: ReactFireOptions<T>): ObservableStatus<UploadTaskSnapshot | T> {\n const observableId = `storage:task:${ref.toString()}`;\n const observable$ = fromTask(task);\n\n return useObservable(observableId, observable$, options);\n}\n\n/**\n * Subscribe to a storage ref's download URL\n *\n * @param ref - reference to the blob you want to download\n * @param options\n */\nexport function useStorageDownloadURL<T = string>(ref: StorageReference, options?: ReactFireOptions<T>): ObservableStatus<string | T> {\n const observableId = `storage:downloadUrl:${ref.toString()}`;\n const observable$ = getDownloadURL(ref);\n\n return useObservable(observableId, observable$, options);\n}\n\ntype StorageImageProps = {\n storagePath: string;\n storage?: FirebaseStorage;\n suspense?: boolean;\n placeHolder?: JSX.Element;\n};\n\nfunction StorageFromContext(props: StorageImageProps & React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>) {\n const storage = useStorage();\n\n props = { ...props, storage };\n\n return <INTERNALStorageImage {...props} />;\n}\n\nfunction INTERNALStorageImage(props: StorageImageProps & React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>): JSX.Element {\n let { storage, storagePath, suspense, placeHolder, ...imgProps } = props;\n\n const reactfireOptions: ReactFireOptions<string> = {\n suspense: useSuspenseEnabledFromConfigAndContext(suspense),\n };\n\n if (!storage) {\n throw new Error('Storage was not passed to component INTERNALStorageImage. This should not be possible');\n }\n\n const { status, data: imgSrc } = useStorageDownloadURL(ref(storage, storagePath), reactfireOptions);\n\n if (status === 'success') {\n if (!(imgProps.alt || imgProps.alt === '')) {\n console.warn(\n `No alt prop provided for StorageImage with storagePath \"${storagePath}\"`,\n 'img elements must have an alt prop, either with meaningful text, or an empty string for decorative images'\n );\n }\n\n return <img src={imgSrc} alt={imgProps.alt} {...imgProps} />;\n } else {\n return placeHolder ?? <>''</>;\n }\n}\n\nexport function StorageImage(props: StorageImageProps & React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>) {\n let { storage } = props;\n\n if (storage) {\n return <INTERNALStorageImage {...props} />;\n } else {\n return <StorageFromContext {...props} />;\n }\n}\n","import * as React from 'react';\n\nimport type { AppCheck } from 'firebase/app-check';\nimport type { Auth } from 'firebase/auth';\nimport type { Analytics } from 'firebase/analytics';\nimport type { Database } from 'firebase/database';\nimport type { Firestore } from 'firebase/firestore';\nimport type { Functions } from 'firebase/functions';\nimport type { FirebasePerformance } from 'firebase/performance';\nimport type { FirebaseStorage } from 'firebase/storage';\nimport type { RemoteConfig } from 'firebase/remote-config';\nimport { useFirebaseApp } from './firebaseApp';\nimport { FirebaseApp } from 'firebase/app';\nimport { ObservableStatus, useObservable } from './useObservable';\nimport { from } from 'rxjs';\nimport { ReactFireOptions } from '.';\n\nexport const AppCheckSdkContext = React.createContext<AppCheck | undefined>(undefined);\nexport const AuthSdkContext = React.createContext<Auth | undefined>(undefined);\nexport const AnalyticsSdkContext = React.createContext<Analytics | undefined>(undefined);\nexport const DatabaseSdkContext = React.createContext<Database | undefined>(undefined);\nexport const FirestoreSdkContext = React.createContext<Firestore | undefined>(undefined);\nexport const FunctionsSdkContext = React.createContext<Functions | undefined>(undefined);\nexport const StorageSdkContext = React.createContext<FirebaseStorage | undefined>(undefined);\nexport const PerformanceSdkContext = React.createContext<FirebasePerformance | undefined>(undefined);\nexport const RemoteConfigSdkContext = React.createContext<RemoteConfig | undefined>(undefined);\n\ntype FirebaseSdks = Analytics | AppCheck | Auth | Database | Firestore | FirebasePerformance | FirebaseStorage | Functions | RemoteConfig;\n\nfunction getSdkProvider<Sdk extends FirebaseSdks>(SdkContext: React.Context<Sdk | undefined>) {\n return function SdkProvider(props: React.PropsWithChildren<{ sdk: Sdk }>) {\n if (!props.sdk) throw new Error('no sdk provided');\n\n const contextualAppName = useFirebaseApp().name;\n const sdkAppName = props?.sdk?.app?.name;\n if (sdkAppName !== contextualAppName) throw new Error('sdk was initialized with a different firebase app');\n\n return <SdkContext.Provider value={props.sdk} {...props} />;\n };\n}\n\nfunction useSdk<Sdk extends FirebaseSdks>(SdkContext: React.Context<Sdk | undefined>): Sdk {\n const sdk = React.useContext(SdkContext);\n\n if (!sdk) {\n throw new Error('SDK not found. useSdk must be called from within a provider');\n }\n\n return sdk;\n}\n\nfunction useInitSdk<Sdk extends FirebaseSdks>(\n sdkName: string,\n SdkContext: React.Context<Sdk | undefined>,\n sdkInitializer: (firebaseApp: FirebaseApp) => Promise<Sdk>,\n options?: ReactFireOptions\n) {\n const firebaseApp = useFirebaseApp();\n\n // Some initialization functions (like Firestore's `enableIndexedDbPersistence`)\n // can only be called before anything else. So if an sdk is already available in context,\n // it isn't safe to call initialization functions again.\n if (React.useContext(SdkContext)) {\n throw new Error(`Cannot initialize SDK ${sdkName} because it already exists in Context`);\n }\n\n const initializeSdk = React.useMemo(() => sdkInitializer(firebaseApp), [firebaseApp]);\n\n return useObservable<Sdk>(`firebase-sdk:${sdkName}:${firebaseApp.name}`, from(initializeSdk), options);\n}\n\nexport const AppCheckProvider = getSdkProvider<AppCheck>(AppCheckSdkContext);\nexport const AuthProvider = getSdkProvider<Auth>(AuthSdkContext);\nexport const AnalyticsProvider = getSdkProvider<Analytics>(AnalyticsSdkContext);\nexport const DatabaseProvider = getSdkProvider<Database>(DatabaseSdkContext);\nexport const FirestoreProvider = getSdkProvider<Firestore>(FirestoreSdkContext);\nexport const FunctionsProvider = getSdkProvider<Functions>(FunctionsSdkContext);\nexport const PerformanceProvider = getSdkProvider<FirebasePerformance>(PerformanceSdkContext);\nexport const StorageProvider = getSdkProvider<FirebaseStorage>(StorageSdkContext);\nexport const RemoteConfigProvider = getSdkProvider<RemoteConfig>(RemoteConfigSdkContext);\n\nexport const useAppCheck = () => useSdk<AppCheck>(AppCheckSdkContext);\nexport const useAuth = () => useSdk<Auth>(AuthSdkContext);\nexport const useAnalytics = () => useSdk<Analytics>(AnalyticsSdkContext);\nexport const useDatabase = () => useSdk<Database>(DatabaseSdkContext);\nexport const useFirestore = () => useSdk<Firestore>(FirestoreSdkContext);\nexport const useFunctions = () => useSdk<Functions>(FunctionsSdkContext);\nexport const usePerformance = () => useSdk<FirebasePerformance>(PerformanceSdkContext);\nexport const useStorage = () => useSdk<FirebaseStorage>(StorageSdkContext);\nexport const useRemoteConfig = () => useSdk<RemoteConfig>(RemoteConfigSdkContext);\n\ntype InitSdkHook<Sdk extends FirebaseSdks> = (\n initializer: (firebaseApp: FirebaseApp) => Promise<Sdk>,\n options?: ReactFireOptions<Sdk>\n) => ObservableStatus<Sdk>;\n\nexport const useInitAppCheck: InitSdkHook<AppCheck> = (initializer, options) => useInitSdk<AppCheck>('appcheck', AppCheckSdkContext, initializer, options);\nexport const useInitAuth: InitSdkHook<Auth> = (initializer, options) => useInitSdk<Auth>('auth', AuthSdkContext, initializer, options);\nexport const useInitAnalytics: InitSdkHook<Analytics> = (initializer, options) => useInitSdk<Analytics>('analytics', AnalyticsSdkContext, initializer, options);\nexport const useInitDatabase: InitSdkHook<Database> = (initializer, options) => useInitSdk<Database>('database', DatabaseSdkContext, initializer, options);\nexport const useInitFirestore: InitSdkHook<Firestore> = (initializer, options) => useInitSdk<Firestore>('firestore', FirestoreSdkContext, initializer, options);\nexport const useInitFunctions: InitSdkHook<Functions> = (initializer, options) => useInitSdk<Functions>('functions', FunctionsSdkContext, initializer, options);\nexport const useInitPerformance: InitSdkHook<FirebasePerformance> = (initializer, options) =>\n useInitSdk<FirebasePerformance>('performance', PerformanceSdkContext, initializer, options);\nexport const useInitRemoteConfig: InitSdkHook<RemoteConfig> = (initializer, options) =>\n useInitSdk<RemoteConfig>('remoteconfig', RemoteConfigSdkContext, initializer, options);\nexport const useInitStorage: InitSdkHook<FirebaseStorage> = (initializer, options) =>\n useInitSdk<FirebaseStorage>('storage', StorageSdkContext, initializer, options);\n","import { SuspenseSubject } from './SuspenseSubject';\n\nimport type { Query as FirestoreQuery } from 'firebase/firestore';\nimport type { Query as DatabaseQuery } from 'firebase/database';\n\nexport type ReactFireGlobals = {\n _reactFireDatabaseCachedQueries: Array<DatabaseQuery>;\n _reactFireFirestoreQueryCache: Array<FirestoreQuery>;\n _reactFirePreloadedObservables: Map<string, SuspenseSubject<any>>;\n};\n\nexport class ReactFireError extends Error {\n readonly name = 'ReactFireError';\n\n constructor(readonly code: string, message: string, public customData?: Record<string, unknown>) {\n super(message);\n\n // Fix For ES5\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, ReactFireError.prototype);\n }\n}\n\nexport interface ReactFireOptions<T = unknown> {\n idField?: string;\n initialData?: T | any;\n /**\n * @deprecated use initialData instead\n */\n startWithValue?: T | any;\n suspense?: boolean;\n}\n\nexport function checkOptions(options: ReactFireOptions, field: string) {\n // make sure the field passed in is a valid key of ReactFire Options\n if (field === 'idField' || field === 'initialData' || field === 'suspense') {\n return options ? (options[field] as ReactFireOptions['idField'] | ReactFireOptions['initialData'] | ReactFireOptions['suspense']) : undefined;\n }\n\n throw new Error(`Field \"${field}\" is not a valid key in ReactFireOptions`);\n}\n\nexport function checkinitialData(options: ReactFireOptions) {\n return checkOptions(options, 'initialData');\n}\n\nexport function checkIdField(options: ReactFireOptions) {\n return checkOptions(options, 'idField');\n}\n\nexport * from './auth';\nexport * from './database';\nexport * from './firebaseApp';\nexport * from './firestore';\nexport * from './functions';\nexport * from './performance';\nexport * from './remote-config';\nexport * from './storage';\nexport * from './useObservable';\nexport * from './sdk';\n"],"names":["undefined","DEFAULT_APP_NAME","FirebaseAppContext","React","SuspenseEnabledContext","version","shallowEq","a","b","Object","keys","every","key","FirebaseAppProvider","props","firebaseConfig","appName","suspense","firebaseApp","existingApp","getApps","find","app","name","options","Error","reactVersion","registerVersion","initializeApp","Provider","value","useIsSuspenseEnabled","useSuspenseEnabledFromConfigAndContext","suspenseFromConfig","suspenseFromContext","useFirebaseApp","preloadUser","authResolver","auth","user$","preloadObservable","user","toPromise","useUser","useAuth","observableId","observable$","currentUser","initialData","startWithValue","useObservable","useIdTokenResult","forceRefresh","uid","from","getIdTokenResult","useSigninCheck","hasOwnProperty","JSON","stringify","requiredClaims","validateCustomClaims","observable","pipe","switchMap","result","signedIn","hasRequiredClaims","errors","of","map","idTokenResult","validator","getClaimsObjectValidator","claims","claimsObjectValidator","userClaims","forEach","claim","ReactFireError","length","ClaimsCheck","fallback","children","data","missingClaims","suspenseMode","console","warn","expected","actual","toString","AuthCheck","cachedQueries","globalThis","_reactFireDatabaseCachedQueries","getUniqueIdForDatabaseQuery","query","index","findIndex","cachedQuery","isEqual","push","useDatabaseObject","ref","object","useDatabaseObjectData","idField","checkIdField","objectVal","keyField","useDatabaseList","hash","list","useDatabaseListData","listVal","SuspenseSubject","innerObservable","_timeoutWindow","_value","_hasValue","_timeoutHandler","_firstEmission","_error","_innerObservable","_warmupSubscription","_innerSubscriber","_resolveFirstEmission","Promise","resolve","tap","next","v","_next","error","e","catchError","empty","shareReplay","subscribe","setTimeout","_reset","bind","unsubscribe","_subscribe","subscriber","clearTimeout","hasValue","Subject","DEFAULT_TIMEOUT","preloadedObservables","_reactFirePreloadedObservables","Map","source","id","has","get","set","reducerFactory","reducer","state","action","newState","hasEmitted","ourError","firstValuePromise","firstEmission","status","isComplete","config","hasInitialData","hasData","suspenseEnabled","initialState","dispatch","subscription","complete","_reactFireFirestoreQueryCache","getUniqueIdForFirestoreQuery","queryEqual","preloadFirestoreDoc","refProvider","doc","getDocObservableId","firestore","path","useFirestoreDoc","useFirestoreDocOnce","first","useFirestoreDocData","docData","useFirestoreDocDataOnce","useFirestoreCollection","fromRef","useFirestoreCollectionData","collectionData","useCallableFunctionResponse","functionName","functions","useFunctions","httpsCallableOptions","obsFactory","rxHttpsCallable","SuspenseWithPerf","traceId","entries","performance","getEntriesByName","startMarkName","endMarkName","Fallback","mark","measure","useRemoteConfigValue_INTERNAL","getter","remoteConfig","useRemoteConfig","$value","useRemoteConfigValue","getValue","useRemoteConfigString","getString","useRemoteConfigNumber","getNumber","useRemoteConfigBoolean","getBoolean","useRemoteConfigAll","getAll","useStorageTask","task","fromTask","useStorageDownloadURL","getDownloadURL","StorageFromContext","storage","useStorage","INTERNALStorageImage","storagePath","placeHolder","imgProps","reactfireOptions","imgSrc","alt","src","StorageImage","AppCheckSdkContext","AuthSdkContext","AnalyticsSdkContext","DatabaseSdkContext","FirestoreSdkContext","FunctionsSdkContext","StorageSdkContext","PerformanceSdkContext","RemoteConfigSdkContext","getSdkProvider","SdkContext","SdkProvider","sdk","contextualAppName","sdkAppName","useSdk","useInitSdk","sdkName","sdkInitializer","initializeSdk","AppCheckProvider","AuthProvider","AnalyticsProvider","DatabaseProvider","FirestoreProvider","FunctionsProvider","PerformanceProvider","StorageProvider","RemoteConfigProvider","useAppCheck","useAnalytics","useDatabase","useFirestore","usePerformance","useInitAppCheck","initializer","useInitAuth","useInitAnalytics","useInitDatabase","useInitFirestore","useInitFunctions","useInitPerformance","useInitRemoteConfig","useInitStorage","code","message","customData","setPrototypeOf","prototype","checkOptions","field","checkinitialData"],"mappings":"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"}
\No newline at end of file