reactfire 4.0.0-exp.cb3fede → 4.0.0-exp.eb1428b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,8 @@ var app = require('firebase/app');
10
10
  var database = require('rxfire/database');
11
11
  var firestore = require('rxfire/firestore');
12
12
  var firestore$1 = require('firebase/firestore');
13
- var remoteConfig = require('firebase/remote-config');
13
+ var functions = require('rxfire/functions');
14
+ var remoteConfig = require('rxfire/remote-config');
14
15
  var storage = require('rxfire/storage');
15
16
  var storage$1 = require('firebase/storage');
16
17
 
@@ -960,9 +961,9 @@ try {
960
961
 
961
962
  var DEFAULT_APP_NAME = '[DEFAULT]';
962
963
  var FirebaseAppContext = /*#__PURE__*/React.createContext(undefined);
963
- var SuspenseEnabledContext = /*#__PURE__*/React.createContext(false); // @ts-ignore: "__REACTFIRE_VERSION__" is replaced with actual ReactFire version (see babel.config.js)
964
+ var SuspenseEnabledContext = /*#__PURE__*/React.createContext(false); // @ts-expect-error: "__REACTFIRE_VERSION__" is replaced with actual ReactFire version (see babel.config.js)
964
965
 
965
- var version = "4.0.0-exp.cb3fede";
966
+ var version = "4.0.0-exp.eb1428b";
966
967
 
967
968
  var shallowEq = function shallowEq(a, b) {
968
969
  return a === b || [].concat(Object.keys(a), Object.keys(b)).every(function (key) {
@@ -1065,22 +1066,21 @@ function _preloadUser() {
1065
1066
  }
1066
1067
 
1067
1068
  function useUser(options) {
1068
- var _options$initialData;
1069
+ var _options2;
1069
1070
 
1070
1071
  var auth$1 = useAuth();
1071
1072
  var observableId = "auth:user:" + auth$1.name;
1072
1073
  var observable$ = auth.user(auth$1);
1073
- var currentUser = auth$1.currentUser; // Only use options.initialData if auth.currentUser is unavailable
1074
1074
 
1075
- if (!currentUser && ((_options$initialData = options == null ? void 0 : options.initialData) != null ? _options$initialData : options == null ? void 0 : options.startWithValue)) {
1076
- var _options$initialData2;
1075
+ var _options = (_options2 = _extends({}, options)) != null ? _options2 : {}; // only set/override initialData if auth has finished loading
1077
1076
 
1078
- currentUser = (_options$initialData2 = options.initialData) != null ? _options$initialData2 : options.startWithValue;
1077
+
1078
+ if (auth$1.currentUser !== undefined) {
1079
+ _options.initialData = auth$1.currentUser;
1080
+ _options.startWithValue = auth$1.currentUser;
1079
1081
  }
1080
1082
 
1081
- return useObservable(observableId, observable$, _extends({}, options, {
1082
- initialData: currentUser
1083
- }));
1083
+ return useObservable(observableId, observable$, _options);
1084
1084
  }
1085
1085
  function useIdTokenResult(user, forceRefresh, options) {
1086
1086
  if (forceRefresh === void 0) {
@@ -1317,33 +1317,13 @@ function useDatabaseObject(ref, options) {
1317
1317
  var observableId = "database:object:" + ref.toString();
1318
1318
  var observable$ = database.object(ref);
1319
1319
  return useObservable(observableId, observable$, options);
1320
- } // ============================================================================
1321
- // TODO: switch to rxfire's objectVal once this PR is merged:
1322
- // https://github.com/firebase/firebase-js-sdk/pull/2352
1323
-
1324
- function objectVal(query, keyField) {
1325
- return database.object(query).pipe(operators.map(function (change) {
1326
- return changeToData(change, keyField);
1327
- }));
1328
1320
  }
1329
-
1330
- function changeToData(change, keyField) {
1331
- var _ref;
1332
-
1333
- var val = change.snapshot.val(); // don't worry about setting IDs if the value is a primitive type
1334
-
1335
- if (typeof val !== 'object') {
1336
- return val;
1337
- }
1338
-
1339
- return _extends({}, change.snapshot.val(), keyField ? (_ref = {}, _ref[keyField] = change.snapshot.key, _ref) : null);
1340
- } // ============================================================================
1341
-
1342
-
1343
1321
  function useDatabaseObjectData(ref, options) {
1344
1322
  var idField = options ? checkIdField(options) : 'NO_ID_FIELD';
1345
1323
  var observableId = "database:objectVal:" + ref.toString() + ":idField=" + idField;
1346
- var observable$ = objectVal(ref, idField);
1324
+ var observable$ = database.objectVal(ref, {
1325
+ keyField: idField
1326
+ });
1347
1327
  return useObservable(observableId, observable$, options);
1348
1328
  }
1349
1329
  /**
@@ -1361,15 +1341,17 @@ function useDatabaseList(ref, options) {
1361
1341
  function useDatabaseListData(ref, options) {
1362
1342
  var idField = options ? checkIdField(options) : 'NO_ID_FIELD';
1363
1343
  var observableId = "database:listVal:" + getUniqueIdForDatabaseQuery(ref) + ":idField=" + idField;
1364
- var observable$ = database.listVal(ref, idField);
1344
+ var observable$ = database.listVal(ref, {
1345
+ keyField: idField
1346
+ });
1365
1347
  return useObservable(observableId, observable$, options);
1366
1348
  }
1367
1349
 
1368
1350
  var SuspenseSubject = /*#__PURE__*/function (_Subject) {
1369
1351
  _inheritsLoose(SuspenseSubject, _Subject);
1370
1352
 
1371
- // @ts-ignore: TODO: double check to see if this is an RXJS thing or if we should listen to TS
1372
- // @ts-ignore: TODO: double check to see if this is an RXJS thing or if we should listen to TS
1353
+ // @ts-expect-error: TODO: double check to see if this is an RXJS thing or if we should listen to TS
1354
+ // @ts-expect-error: TODO: double check to see if this is an RXJS thing or if we should listen to TS
1373
1355
  function SuspenseSubject(innerObservable, _timeoutWindow) {
1374
1356
  var _this;
1375
1357
 
@@ -1460,6 +1442,8 @@ var SuspenseSubject = /*#__PURE__*/function (_Subject) {
1460
1442
  // As it is now, this will burn the cache entry until the timeout fires.
1461
1443
  if (this._error) {
1462
1444
  throw this._error;
1445
+ } else if (!this.hasValue) {
1446
+ throw Error('Can only get value if SuspenseSubject has a value');
1463
1447
  }
1464
1448
 
1465
1449
  return this._value;
@@ -1499,6 +1483,39 @@ function preloadObservable(source, id) {
1499
1483
  return observable;
1500
1484
  }
1501
1485
  }
1486
+
1487
+ function reducerFactory(observable) {
1488
+ return function reducer(state, action) {
1489
+ // always make sure these values are in sync with the observable
1490
+ var newState = _extends({}, state, {
1491
+ hasEmitted: state.hasEmitted || observable.hasValue,
1492
+ error: observable.ourError,
1493
+ firstValuePromise: observable.firstEmission
1494
+ });
1495
+
1496
+ if (observable.hasValue) {
1497
+ newState.data = observable.value;
1498
+ }
1499
+
1500
+ switch (action) {
1501
+ case 'value':
1502
+ newState.status = 'success';
1503
+ return newState;
1504
+
1505
+ case 'error':
1506
+ newState.status = 'error';
1507
+ return newState;
1508
+
1509
+ case 'complete':
1510
+ newState.isComplete = true;
1511
+ return newState;
1512
+
1513
+ default:
1514
+ throw new Error("invalid action \"" + action + "\"");
1515
+ }
1516
+ };
1517
+ }
1518
+
1502
1519
  function useObservable(observableId, source, config) {
1503
1520
  var _config$initialData, _config, _config2;
1504
1521
 
@@ -1506,71 +1523,52 @@ function useObservable(observableId, source, config) {
1506
1523
  config = {};
1507
1524
  }
1508
1525
 
1526
+ // Register the observable with the cache
1509
1527
  if (!observableId) {
1510
1528
  throw new Error('cannot call useObservable without an observableId');
1511
1529
  }
1512
1530
 
1513
- var observable = preloadObservable(source, observableId);
1531
+ var observable = preloadObservable(source, observableId); // Suspend if suspense is enabled and no initial data exists
1532
+
1514
1533
  var hasInitialData = config.hasOwnProperty('initialData') || config.hasOwnProperty('startWithValue');
1534
+ var hasData = observable.hasValue || hasInitialData;
1515
1535
  var suspenseEnabled = useSuspenseEnabledFromConfigAndContext(config.suspense);
1516
1536
 
1517
- if (suspenseEnabled === true && !observable.hasValue && ((_config$initialData = !((_config = config) != null && _config.initialData)) != null ? _config$initialData : !((_config2 = config) != null && _config2.startWithValue))) {
1537
+ if (suspenseEnabled === true && !hasData) {
1518
1538
  throw observable.firstEmission;
1519
1539
  }
1520
1540
 
1521
- var _React$useState = React.useState(function () {
1522
- var _config$initialData2;
1523
-
1524
- return observable.hasValue ? observable.value : (_config$initialData2 = config.initialData) != null ? _config$initialData2 : config.startWithValue;
1525
- }),
1526
- latest = _React$useState[0],
1527
- setValue = _React$useState[1];
1528
-
1529
- var _React$useState2 = React.useState(false),
1530
- isComplete = _React$useState2[0],
1531
- setIsComplete = _React$useState2[1];
1541
+ var initialState = {
1542
+ status: hasData ? 'success' : 'loading',
1543
+ hasEmitted: hasData,
1544
+ isComplete: false,
1545
+ data: observable.hasValue ? observable.value : (_config$initialData = (_config = config) == null ? void 0 : _config.initialData) != null ? _config$initialData : (_config2 = config) == null ? void 0 : _config2.startWithValue,
1546
+ error: observable.ourError,
1547
+ firstValuePromise: observable.firstEmission
1548
+ };
1532
1549
 
1533
- var _React$useState3 = React.useState(false),
1534
- hasError = _React$useState3[0],
1535
- setHasError = _React$useState3[1];
1550
+ var _React$useReducer = React.useReducer(reducerFactory(observable), initialState),
1551
+ status = _React$useReducer[0],
1552
+ dispatch = _React$useReducer[1];
1536
1553
 
1537
1554
  React.useEffect(function () {
1538
1555
  var subscription = observable.subscribe({
1539
- next: function next(v) {
1540
- setValue(function () {
1541
- return v;
1542
- });
1556
+ next: function next() {
1557
+ dispatch('value');
1543
1558
  },
1544
1559
  error: function error(e) {
1545
- setHasError(true);
1560
+ dispatch('error');
1546
1561
  throw e;
1547
1562
  },
1548
1563
  complete: function complete() {
1549
- setIsComplete(true);
1564
+ dispatch('complete');
1550
1565
  }
1551
1566
  });
1552
1567
  return function () {
1553
1568
  return subscription.unsubscribe();
1554
1569
  };
1555
1570
  }, [observable]);
1556
- var status;
1557
-
1558
- if (hasError) {
1559
- status = 'error';
1560
- } else if (observable.hasValue || hasInitialData) {
1561
- status = 'success';
1562
- } else {
1563
- status = 'loading';
1564
- }
1565
-
1566
- return {
1567
- status: status,
1568
- hasEmitted: observable.hasValue || hasInitialData,
1569
- isComplete: isComplete,
1570
- data: latest,
1571
- error: observable.ourError,
1572
- firstValuePromise: observable.firstEmission
1573
- };
1571
+ return status;
1574
1572
  }
1575
1573
 
1576
1574
  var cachedQueries$1 = globalThis._reactFireFirestoreQueryCache || [];
@@ -1656,7 +1654,9 @@ function useFirestoreDocOnce(ref, options) {
1656
1654
  function useFirestoreDocData(ref, options) {
1657
1655
  var idField = options ? checkIdField(options) : 'NO_ID_FIELD';
1658
1656
  var observableId = "firestore:docData:" + ref.firestore.app.name + ":" + ref.path + ":idField=" + idField;
1659
- var observable = firestore.docData(ref, idField);
1657
+ var observable = firestore.docData(ref, {
1658
+ idField: idField
1659
+ });
1660
1660
  return useObservable(observableId, observable, options);
1661
1661
  }
1662
1662
  /**
@@ -1666,7 +1666,9 @@ function useFirestoreDocData(ref, options) {
1666
1666
  function useFirestoreDocDataOnce(ref, options) {
1667
1667
  var idField = options ? checkIdField(options) : 'NO_ID_FIELD';
1668
1668
  var observableId = "firestore:docDataOnce:" + ref.firestore.app.name + ":" + ref.path + ":idField=" + idField;
1669
- var observable$ = firestore.docData(ref, idField).pipe(operators.first());
1669
+ var observable$ = firestore.docData(ref, {
1670
+ idField: idField
1671
+ }).pipe(operators.first());
1670
1672
  return useObservable(observableId, observable$, options);
1671
1673
  }
1672
1674
  /**
@@ -1685,7 +1687,24 @@ function useFirestoreCollection(query, options) {
1685
1687
  function useFirestoreCollectionData(query, options) {
1686
1688
  var idField = options ? checkIdField(options) : 'NO_ID_FIELD';
1687
1689
  var observableId = "firestore:collectionData:" + getUniqueIdForFirestoreQuery(query) + ":idField=" + idField;
1688
- var observable$ = firestore.collectionData(query, idField);
1690
+ var observable$ = firestore.collectionData(query, {
1691
+ idField: idField
1692
+ });
1693
+ return useObservable(observableId, observable$, options);
1694
+ }
1695
+
1696
+ /**
1697
+ * Calls a callable function.
1698
+ *
1699
+ * @param functionName - The name of the function to call
1700
+ * @param options
1701
+ */
1702
+
1703
+ function useCallableFunctionResponse(functionName, options) {
1704
+ var functions$1 = useFunctions();
1705
+ var observableId = "functions:callableResponse:" + functionName + ":" + JSON.stringify(options == null ? void 0 : options.data) + ":" + JSON.stringify(options == null ? void 0 : options.httpsCallableOptions);
1706
+ var obsFactory = functions.httpsCallable(functions$1, functionName, options == null ? void 0 : options.httpsCallableOptions);
1707
+ var observable$ = obsFactory(options == null ? void 0 : options.data);
1689
1708
  return useObservable(observableId, observable$, options);
1690
1709
  }
1691
1710
 
@@ -1720,76 +1739,6 @@ function SuspenseWithPerf(_ref) {
1720
1739
  }, children);
1721
1740
  }
1722
1741
 
1723
- function parameter$(_ref) {
1724
- var remoteConfig$1 = _ref.remoteConfig,
1725
- key = _ref.key,
1726
- getter = _ref.getter;
1727
- return new rxjs.Observable(function (subscriber) {
1728
- remoteConfig.ensureInitialized(remoteConfig$1).then(function () {
1729
- // 'this' for the getter loses context in the next()
1730
- // call, so it needs to be bound.
1731
- subscriber.next(getter.bind(remoteConfig$1)(key));
1732
- });
1733
- });
1734
- }
1735
-
1736
- function getValue(remoteConfig$1, key) {
1737
- var getter = function getter() {
1738
- return remoteConfig.getValue(remoteConfig$1, key);
1739
- };
1740
-
1741
- return parameter$({
1742
- remoteConfig: remoteConfig$1,
1743
- key: key,
1744
- getter: getter
1745
- });
1746
- }
1747
- function getString(remoteConfig$1, key) {
1748
- var getter = function getter() {
1749
- return remoteConfig.getString(remoteConfig$1, key);
1750
- };
1751
-
1752
- return parameter$({
1753
- remoteConfig: remoteConfig$1,
1754
- key: key,
1755
- getter: getter
1756
- });
1757
- }
1758
- function getNumber(remoteConfig$1, key) {
1759
- var getter = function getter() {
1760
- return remoteConfig.getNumber(remoteConfig$1, key);
1761
- };
1762
-
1763
- return parameter$({
1764
- remoteConfig: remoteConfig$1,
1765
- key: key,
1766
- getter: getter
1767
- });
1768
- }
1769
- function getBoolean(remoteConfig$1, key) {
1770
- var getter = function getter() {
1771
- return remoteConfig.getBoolean(remoteConfig$1, key);
1772
- };
1773
-
1774
- return parameter$({
1775
- remoteConfig: remoteConfig$1,
1776
- key: key,
1777
- getter: getter
1778
- });
1779
- }
1780
- function getAll(remoteConfig$1) {
1781
- var getter = function getter() {
1782
- return remoteConfig.getAll(remoteConfig$1);
1783
- }; // No key is needed for getAll()
1784
-
1785
-
1786
- return parameter$({
1787
- remoteConfig: remoteConfig$1,
1788
- key: '',
1789
- getter: getter
1790
- });
1791
- }
1792
-
1793
1742
  /**
1794
1743
  * Helper function to construct type safe functions. Since Remote Config has
1795
1744
  * methods that return different types for values, we need to be extra safe
@@ -1800,12 +1749,8 @@ function getAll(remoteConfig$1) {
1800
1749
  */
1801
1750
 
1802
1751
  function useRemoteConfigValue_INTERNAL(key, getter) {
1803
- var _remoteConfig$_storag;
1804
-
1805
- var remoteConfig = useRemoteConfig(); // INVESTIGATE need to use a public API to get at the app name, one doesn't appear to exist...
1806
- // we might need to iterate over the Firebase apps and check for remoteConfig equality? this works for now
1807
-
1808
- var appName = (_remoteConfig$_storag = remoteConfig._storage) == null ? void 0 : _remoteConfig$_storag.appName;
1752
+ var remoteConfig = useRemoteConfig();
1753
+ var appName = remoteConfig.app.name;
1809
1754
  var $value = getter(remoteConfig, key);
1810
1755
  var observableId = "remoteConfig:" + key + ":" + getter.name + ":" + appName;
1811
1756
  return useObservable(observableId, $value);
@@ -1815,75 +1760,46 @@ function useRemoteConfigValue_INTERNAL(key, getter) {
1815
1760
  * Remote Config Value.
1816
1761
  *
1817
1762
  * @param key The parameter key in Remote Config
1818
- * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
1819
1763
  */
1820
1764
 
1821
1765
 
1822
1766
  function useRemoteConfigValue(key) {
1823
- return useRemoteConfigValue_INTERNAL(key, getValue);
1767
+ return useRemoteConfigValue_INTERNAL(key, remoteConfig.getValue);
1824
1768
  }
1825
1769
  /**
1826
1770
  * Convience method similar to useRemoteConfigValue. Returns a `string` from a Remote Config parameter.
1827
1771
  * @param key The parameter key in Remote Config
1828
- * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
1829
1772
  */
1830
1773
 
1831
1774
  function useRemoteConfigString(key) {
1832
- return useRemoteConfigValue_INTERNAL(key, getString);
1775
+ return useRemoteConfigValue_INTERNAL(key, remoteConfig.getString);
1833
1776
  }
1834
1777
  /**
1835
1778
  * Convience method similar to useRemoteConfigValue. Returns a `number` from a Remote Config parameter.
1836
1779
  * @param key The parameter key in Remote Config
1837
- * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
1838
1780
  */
1839
1781
 
1840
1782
  function useRemoteConfigNumber(key) {
1841
- return useRemoteConfigValue_INTERNAL(key, getNumber);
1783
+ return useRemoteConfigValue_INTERNAL(key, remoteConfig.getNumber);
1842
1784
  }
1843
1785
  /**
1844
1786
  * Convience method similar to useRemoteConfigValue. Returns a `boolean` from a Remote Config parameter.
1845
1787
  * @param key The parameter key in Remote Config
1846
- * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
1847
1788
  */
1848
1789
 
1849
1790
  function useRemoteConfigBoolean(key) {
1850
- return useRemoteConfigValue_INTERNAL(key, getBoolean);
1791
+ return useRemoteConfigValue_INTERNAL(key, remoteConfig.getBoolean);
1851
1792
  }
1852
1793
  /**
1853
1794
  * Convience method similar to useRemoteConfigValue. Returns allRemote Config parameters.
1854
1795
  * @param key The parameter key in Remote Config
1855
- * @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
1856
1796
  */
1857
1797
 
1858
1798
  function useRemoteConfigAll(key) {
1859
- return useRemoteConfigValue_INTERNAL(key, getAll);
1799
+ return useRemoteConfigValue_INTERNAL(key, remoteConfig.getAll);
1860
1800
  }
1861
1801
 
1862
1802
  var _excluded = ["storage", "storagePath", "suspense", "placeHolder"];
1863
- /**
1864
- * modified version of rxFire's _fromTask
1865
- *
1866
- * @param task
1867
- */
1868
-
1869
- function _fromTask(task) {
1870
- return new rxjs.Observable(function (subscriber) {
1871
- var progress = function progress(snap) {
1872
- return subscriber.next(snap);
1873
- };
1874
-
1875
- var error = function error(e) {
1876
- return subscriber.error(e);
1877
- };
1878
-
1879
- var complete = function complete() {
1880
- return subscriber.complete();
1881
- };
1882
-
1883
- task.on('state_changed', progress, error, complete); // I REMOVED THE UNSUBSCRIBE RETURN BECAUSE IT CANCELS THE UPLOAD
1884
- // https://github.com/firebase/firebase-js-sdk/issues/1659
1885
- });
1886
- }
1887
1803
  /**
1888
1804
  * Subscribe to the progress of a storage task
1889
1805
  *
@@ -1892,12 +1808,9 @@ function _fromTask(task) {
1892
1808
  * @param options
1893
1809
  */
1894
1810
 
1895
-
1896
1811
  function useStorageTask(task, ref, options) {
1897
1812
  var observableId = "storage:task:" + ref.toString();
1898
-
1899
- var observable$ = _fromTask(task);
1900
-
1813
+ var observable$ = storage.fromTask(task);
1901
1814
  return useObservable(observableId, observable$, options);
1902
1815
  }
1903
1816
  /**
@@ -1964,34 +1877,24 @@ function StorageImage(props) {
1964
1877
  }
1965
1878
  }
1966
1879
 
1880
+ var AppCheckSdkContext = /*#__PURE__*/React.createContext(undefined);
1967
1881
  var AuthSdkContext = /*#__PURE__*/React.createContext(undefined);
1882
+ var AnalyticsSdkContext = /*#__PURE__*/React.createContext(undefined);
1968
1883
  var DatabaseSdkContext = /*#__PURE__*/React.createContext(undefined);
1969
1884
  var FirestoreSdkContext = /*#__PURE__*/React.createContext(undefined);
1885
+ var FunctionsSdkContext = /*#__PURE__*/React.createContext(undefined);
1970
1886
  var StorageSdkContext = /*#__PURE__*/React.createContext(undefined);
1971
1887
  var PerformanceSdkContext = /*#__PURE__*/React.createContext(undefined);
1972
1888
  var RemoteConfigSdkContext = /*#__PURE__*/React.createContext(undefined);
1973
1889
 
1974
1890
  function getSdkProvider(SdkContext) {
1975
1891
  return function SdkProvider(props) {
1976
- var contextualAppName = useFirebaseApp().name;
1977
- var sdkAppName; // @ts-ignore Auth doesn't have field 'app'
1978
-
1979
- if (props.sdk.app) {
1980
- // @ts-ignore Auth doesn't have field 'app'
1981
- sdkAppName = props.sdk.app.name; // @ts-ignore only Auth has field 'name'
1982
- } else if (props.sdk.name) {
1983
- // @ts-ignore only Auth has field 'name'
1984
- sdkAppName = props.sdk.name;
1985
- }
1986
-
1987
- if (sdkAppName !== contextualAppName) {
1988
- throw new Error('sdk was initialized with a different firebase app');
1989
- }
1990
-
1991
- if (!props.sdk) {
1992
- throw new Error('no sdk provided');
1993
- }
1892
+ var _props$sdk, _props$sdk$app;
1994
1893
 
1894
+ if (!props.sdk) throw new Error('no sdk provided');
1895
+ var contextualAppName = useFirebaseApp().name;
1896
+ var sdkAppName = props == null ? void 0 : (_props$sdk = props.sdk) == null ? void 0 : (_props$sdk$app = _props$sdk.app) == null ? void 0 : _props$sdk$app.name;
1897
+ if (sdkAppName !== contextualAppName) throw new Error('sdk was initialized with a different firebase app');
1995
1898
  return React.createElement(SdkContext.Provider, _extends({
1996
1899
  value: props.sdk
1997
1900
  }, props));
@@ -2023,21 +1926,33 @@ function useInitSdk(sdkName, SdkContext, sdkInitializer, options) {
2023
1926
  return useObservable("firebase-sdk:" + sdkName + ":" + firebaseApp.name, rxjs.from(initializeSdk), options);
2024
1927
  }
2025
1928
 
1929
+ var AppCheckProvider = /*#__PURE__*/getSdkProvider(AppCheckSdkContext);
2026
1930
  var AuthProvider = /*#__PURE__*/getSdkProvider(AuthSdkContext);
1931
+ var AnalyticsProvider = /*#__PURE__*/getSdkProvider(AnalyticsSdkContext);
2027
1932
  var DatabaseProvider = /*#__PURE__*/getSdkProvider(DatabaseSdkContext);
2028
1933
  var FirestoreProvider = /*#__PURE__*/getSdkProvider(FirestoreSdkContext);
1934
+ var FunctionsProvider = /*#__PURE__*/getSdkProvider(FunctionsSdkContext);
2029
1935
  var PerformanceProvider = /*#__PURE__*/getSdkProvider(PerformanceSdkContext);
2030
1936
  var StorageProvider = /*#__PURE__*/getSdkProvider(StorageSdkContext);
2031
1937
  var RemoteConfigProvider = /*#__PURE__*/getSdkProvider(RemoteConfigSdkContext);
1938
+ var useAppCheck = function useAppCheck() {
1939
+ return useSdk(AppCheckSdkContext);
1940
+ };
2032
1941
  var useAuth = function useAuth() {
2033
1942
  return useSdk(AuthSdkContext);
2034
1943
  };
1944
+ var useAnalytics = function useAnalytics() {
1945
+ return useSdk(AnalyticsSdkContext);
1946
+ };
2035
1947
  var useDatabase = function useDatabase() {
2036
1948
  return useSdk(DatabaseSdkContext);
2037
1949
  };
2038
1950
  var useFirestore = function useFirestore() {
2039
1951
  return useSdk(FirestoreSdkContext);
2040
1952
  };
1953
+ var useFunctions = function useFunctions() {
1954
+ return useSdk(FunctionsSdkContext);
1955
+ };
2041
1956
  var usePerformance = function usePerformance() {
2042
1957
  return useSdk(PerformanceSdkContext);
2043
1958
  };
@@ -2047,15 +1962,24 @@ var useStorage = function useStorage() {
2047
1962
  var useRemoteConfig = function useRemoteConfig() {
2048
1963
  return useSdk(RemoteConfigSdkContext);
2049
1964
  };
1965
+ var useInitAppCheck = function useInitAppCheck(initializer, options) {
1966
+ return useInitSdk('appcheck', AppCheckSdkContext, initializer, options);
1967
+ };
2050
1968
  var useInitAuth = function useInitAuth(initializer, options) {
2051
1969
  return useInitSdk('auth', AuthSdkContext, initializer, options);
2052
1970
  };
1971
+ var useInitAnalytics = function useInitAnalytics(initializer, options) {
1972
+ return useInitSdk('analytics', AnalyticsSdkContext, initializer, options);
1973
+ };
2053
1974
  var useInitDatabase = function useInitDatabase(initializer, options) {
2054
1975
  return useInitSdk('database', DatabaseSdkContext, initializer, options);
2055
1976
  };
2056
1977
  var useInitFirestore = function useInitFirestore(initializer, options) {
2057
1978
  return useInitSdk('firestore', FirestoreSdkContext, initializer, options);
2058
1979
  };
1980
+ var useInitFunctions = function useInitFunctions(initializer, options) {
1981
+ return useInitSdk('functions', FunctionsSdkContext, initializer, options);
1982
+ };
2059
1983
  var useInitPerformance = function useInitPerformance(initializer, options) {
2060
1984
  return useInitSdk('performance', PerformanceSdkContext, initializer, options);
2061
1985
  };
@@ -2101,17 +2025,29 @@ function checkIdField(options) {
2101
2025
  return checkOptions(options, 'idField');
2102
2026
  }
2103
2027
 
2028
+ exports.AnalyticsProvider = AnalyticsProvider;
2029
+ exports.AnalyticsSdkContext = AnalyticsSdkContext;
2030
+ exports.AppCheckProvider = AppCheckProvider;
2031
+ exports.AppCheckSdkContext = AppCheckSdkContext;
2104
2032
  exports.AuthCheck = AuthCheck;
2105
2033
  exports.AuthProvider = AuthProvider;
2034
+ exports.AuthSdkContext = AuthSdkContext;
2106
2035
  exports.ClaimsCheck = ClaimsCheck;
2107
2036
  exports.DatabaseProvider = DatabaseProvider;
2037
+ exports.DatabaseSdkContext = DatabaseSdkContext;
2108
2038
  exports.FirebaseAppProvider = FirebaseAppProvider;
2109
2039
  exports.FirestoreProvider = FirestoreProvider;
2040
+ exports.FirestoreSdkContext = FirestoreSdkContext;
2041
+ exports.FunctionsProvider = FunctionsProvider;
2042
+ exports.FunctionsSdkContext = FunctionsSdkContext;
2110
2043
  exports.PerformanceProvider = PerformanceProvider;
2044
+ exports.PerformanceSdkContext = PerformanceSdkContext;
2111
2045
  exports.ReactFireError = ReactFireError;
2112
2046
  exports.RemoteConfigProvider = RemoteConfigProvider;
2047
+ exports.RemoteConfigSdkContext = RemoteConfigSdkContext;
2113
2048
  exports.StorageImage = StorageImage;
2114
2049
  exports.StorageProvider = StorageProvider;
2050
+ exports.StorageSdkContext = StorageSdkContext;
2115
2051
  exports.SuspenseWithPerf = SuspenseWithPerf;
2116
2052
  exports.checkIdField = checkIdField;
2117
2053
  exports.checkOptions = checkOptions;
@@ -2119,7 +2055,10 @@ exports.checkinitialData = checkinitialData;
2119
2055
  exports.preloadFirestoreDoc = preloadFirestoreDoc;
2120
2056
  exports.preloadObservable = preloadObservable;
2121
2057
  exports.preloadUser = preloadUser;
2058
+ exports.useAnalytics = useAnalytics;
2059
+ exports.useAppCheck = useAppCheck;
2122
2060
  exports.useAuth = useAuth;
2061
+ exports.useCallableFunctionResponse = useCallableFunctionResponse;
2123
2062
  exports.useDatabase = useDatabase;
2124
2063
  exports.useDatabaseList = useDatabaseList;
2125
2064
  exports.useDatabaseListData = useDatabaseListData;
@@ -2133,10 +2072,14 @@ exports.useFirestoreDoc = useFirestoreDoc;
2133
2072
  exports.useFirestoreDocData = useFirestoreDocData;
2134
2073
  exports.useFirestoreDocDataOnce = useFirestoreDocDataOnce;
2135
2074
  exports.useFirestoreDocOnce = useFirestoreDocOnce;
2075
+ exports.useFunctions = useFunctions;
2136
2076
  exports.useIdTokenResult = useIdTokenResult;
2077
+ exports.useInitAnalytics = useInitAnalytics;
2078
+ exports.useInitAppCheck = useInitAppCheck;
2137
2079
  exports.useInitAuth = useInitAuth;
2138
2080
  exports.useInitDatabase = useInitDatabase;
2139
2081
  exports.useInitFirestore = useInitFirestore;
2082
+ exports.useInitFunctions = useInitFunctions;
2140
2083
  exports.useInitPerformance = useInitPerformance;
2141
2084
  exports.useInitRemoteConfig = useInitRemoteConfig;
2142
2085
  exports.useInitStorage = useInitStorage;