reactfire 4.0.0-exp.b6c8eeb → 4.0.0-exp.f654109
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.
- package/README.md +5 -3
- package/dist/SuspenseSubject.d.ts +1 -1
- package/dist/functions.d.ts +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/reactfire.cjs.development.js +122 -177
- package/dist/reactfire.cjs.development.js.map +1 -1
- package/dist/reactfire.cjs.production.min.js +1 -1
- package/dist/reactfire.cjs.production.min.js.map +1 -1
- package/dist/reactfire.esm.js +105 -176
- package/dist/reactfire.esm.js.map +1 -1
- package/dist/{remote-config/index.d.ts → remote-config.d.ts} +2 -7
- package/dist/sdk.d.ts +22 -1
- package/package.json +7 -5
- package/src/SuspenseSubject.ts +6 -4
- package/src/firebaseApp.tsx +1 -1
- package/src/functions.tsx +26 -0
- package/src/index.ts +1 -0
- package/src/{remote-config/index.tsx → remote-config.tsx} +4 -16
- package/src/sdk.tsx +22 -28
- package/src/storage.tsx +2 -24
- package/src/useObservable.ts +48 -28
- package/dist/remote-config/getValue.d.ts +0 -10
- package/src/remote-config/getValue.tsx +0 -58
package/README.md
CHANGED
|
@@ -91,12 +91,14 @@ This repository is maintained by Googlers but is not a supported Firebase produc
|
|
|
91
91
|
|
|
92
92
|
### Extra Experimental [concurrent mode](https://reactjs.org/docs/concurrent-mode-suspense.html) features
|
|
93
93
|
|
|
94
|
+
These features are marked as *extra experimental* because they use experimental React features that [will not be stable until sometime after React 18 is released](https://github.com/reactwg/react-18/discussions/47#:~:text=Likely%20after%20React%2018.0%3A%20Suspense%20for%20Data%20Fetching).
|
|
95
|
+
|
|
94
96
|
- **Loading states handled by `<Suspense>`** - ReactFire's hooks throw promises
|
|
95
|
-
that Suspense can catch.
|
|
96
|
-
[handle
|
|
97
|
+
that Suspense can catch. Let React
|
|
98
|
+
[handle loading states for you](https://reactjs.org/docs/concurrent-mode-suspense.html).
|
|
97
99
|
- **Automatically instrument your `Suspense` load times** - Need to automatically instrument your `Suspense` load times with [RUM](https://firebase.google.com/docs/perf-mon)? Use `<SuspenseWithPerf />`.
|
|
98
100
|
|
|
99
|
-
Enable concurrent mode features by setting the `suspense` prop in `FirebaseAppProvider`:
|
|
101
|
+
Enable concurrent mode features by following the [concurrent mode setup guide](https://reactjs.org/docs/concurrent-mode-adoption.html#installation) and then setting the `suspense` prop in `FirebaseAppProvider`:
|
|
100
102
|
|
|
101
103
|
```jsx
|
|
102
104
|
<FirebaseAppProvider firebaseConfig={firebaseConfig} suspense={true}>
|
|
@@ -12,7 +12,7 @@ export declare class SuspenseSubject<T> extends Subject<T> {
|
|
|
12
12
|
private _resolveFirstEmission;
|
|
13
13
|
constructor(innerObservable: Observable<T>, _timeoutWindow: number);
|
|
14
14
|
get hasValue(): boolean;
|
|
15
|
-
get value(): T
|
|
15
|
+
get value(): T;
|
|
16
16
|
get firstEmission(): Promise<void>;
|
|
17
17
|
private _next;
|
|
18
18
|
private _reset;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactFireOptions, ObservableStatus } from './';
|
|
2
|
+
import type { HttpsCallableOptions } from 'firebase/functions';
|
|
3
|
+
/**
|
|
4
|
+
* Calls a callable function.
|
|
5
|
+
*
|
|
6
|
+
* @param functionName - The name of the function to call
|
|
7
|
+
* @param options
|
|
8
|
+
*/
|
|
9
|
+
export declare function useCallableFunctionResponse<RequestData, ResponseData>(functionName: string, options?: ReactFireOptions<ResponseData> & {
|
|
10
|
+
httpsCallableOptions?: HttpsCallableOptions;
|
|
11
|
+
data?: RequestData;
|
|
12
|
+
}): ObservableStatus<ResponseData>;
|
package/dist/index.d.ts
CHANGED
|
@@ -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
|
|
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-
|
|
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.
|
|
966
|
+
var version = "4.0.0-exp.f654109";
|
|
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) {
|
|
@@ -1350,8 +1351,8 @@ function useDatabaseListData(ref, options) {
|
|
|
1350
1351
|
var SuspenseSubject = /*#__PURE__*/function (_Subject) {
|
|
1351
1352
|
_inheritsLoose(SuspenseSubject, _Subject);
|
|
1352
1353
|
|
|
1353
|
-
// @ts-
|
|
1354
|
-
// @ts-
|
|
1354
|
+
// @ts-expect-error: TODO: double check to see if this is an RXJS thing or if we should listen to TS
|
|
1355
|
+
// @ts-expect-error: TODO: double check to see if this is an RXJS thing or if we should listen to TS
|
|
1355
1356
|
function SuspenseSubject(innerObservable, _timeoutWindow) {
|
|
1356
1357
|
var _this;
|
|
1357
1358
|
|
|
@@ -1442,6 +1443,8 @@ var SuspenseSubject = /*#__PURE__*/function (_Subject) {
|
|
|
1442
1443
|
// As it is now, this will burn the cache entry until the timeout fires.
|
|
1443
1444
|
if (this._error) {
|
|
1444
1445
|
throw this._error;
|
|
1446
|
+
} else if (!this.hasValue) {
|
|
1447
|
+
throw Error('Can only get value if SuspenseSubject has a value');
|
|
1445
1448
|
}
|
|
1446
1449
|
|
|
1447
1450
|
return this._value;
|
|
@@ -1481,6 +1484,39 @@ function preloadObservable(source, id) {
|
|
|
1481
1484
|
return observable;
|
|
1482
1485
|
}
|
|
1483
1486
|
}
|
|
1487
|
+
|
|
1488
|
+
function reducerFactory(observable) {
|
|
1489
|
+
return function reducer(state, action) {
|
|
1490
|
+
// always make sure these values are in sync with the observable
|
|
1491
|
+
var newState = _extends({}, state, {
|
|
1492
|
+
hasEmitted: state.hasEmitted || observable.hasValue,
|
|
1493
|
+
error: observable.ourError,
|
|
1494
|
+
firstValuePromise: observable.firstEmission
|
|
1495
|
+
});
|
|
1496
|
+
|
|
1497
|
+
if (observable.hasValue) {
|
|
1498
|
+
newState.data = observable.value;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
switch (action) {
|
|
1502
|
+
case 'value':
|
|
1503
|
+
newState.status = 'success';
|
|
1504
|
+
return newState;
|
|
1505
|
+
|
|
1506
|
+
case 'error':
|
|
1507
|
+
newState.status = 'error';
|
|
1508
|
+
return newState;
|
|
1509
|
+
|
|
1510
|
+
case 'complete':
|
|
1511
|
+
newState.isComplete = true;
|
|
1512
|
+
return newState;
|
|
1513
|
+
|
|
1514
|
+
default:
|
|
1515
|
+
throw new Error("invalid action \"" + action + "\"");
|
|
1516
|
+
}
|
|
1517
|
+
};
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1484
1520
|
function useObservable(observableId, source, config) {
|
|
1485
1521
|
var _config$initialData, _config, _config2;
|
|
1486
1522
|
|
|
@@ -1488,71 +1524,52 @@ function useObservable(observableId, source, config) {
|
|
|
1488
1524
|
config = {};
|
|
1489
1525
|
}
|
|
1490
1526
|
|
|
1527
|
+
// Register the observable with the cache
|
|
1491
1528
|
if (!observableId) {
|
|
1492
1529
|
throw new Error('cannot call useObservable without an observableId');
|
|
1493
1530
|
}
|
|
1494
1531
|
|
|
1495
|
-
var observable = preloadObservable(source, observableId);
|
|
1532
|
+
var observable = preloadObservable(source, observableId); // Suspend if suspense is enabled and no initial data exists
|
|
1533
|
+
|
|
1496
1534
|
var hasInitialData = config.hasOwnProperty('initialData') || config.hasOwnProperty('startWithValue');
|
|
1535
|
+
var hasData = observable.hasValue || hasInitialData;
|
|
1497
1536
|
var suspenseEnabled = useSuspenseEnabledFromConfigAndContext(config.suspense);
|
|
1498
1537
|
|
|
1499
|
-
if (suspenseEnabled === true && !
|
|
1538
|
+
if (suspenseEnabled === true && !hasData) {
|
|
1500
1539
|
throw observable.firstEmission;
|
|
1501
1540
|
}
|
|
1502
1541
|
|
|
1503
|
-
var
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
var _React$useState2 = React.useState(false),
|
|
1512
|
-
isComplete = _React$useState2[0],
|
|
1513
|
-
setIsComplete = _React$useState2[1];
|
|
1542
|
+
var initialState = {
|
|
1543
|
+
status: hasData ? 'success' : 'loading',
|
|
1544
|
+
hasEmitted: hasData,
|
|
1545
|
+
isComplete: false,
|
|
1546
|
+
data: observable.hasValue ? observable.value : (_config$initialData = (_config = config) == null ? void 0 : _config.initialData) != null ? _config$initialData : (_config2 = config) == null ? void 0 : _config2.startWithValue,
|
|
1547
|
+
error: observable.ourError,
|
|
1548
|
+
firstValuePromise: observable.firstEmission
|
|
1549
|
+
};
|
|
1514
1550
|
|
|
1515
|
-
var _React$
|
|
1516
|
-
|
|
1517
|
-
|
|
1551
|
+
var _React$useReducer = React.useReducer(reducerFactory(observable), initialState),
|
|
1552
|
+
status = _React$useReducer[0],
|
|
1553
|
+
dispatch = _React$useReducer[1];
|
|
1518
1554
|
|
|
1519
1555
|
React.useEffect(function () {
|
|
1520
1556
|
var subscription = observable.subscribe({
|
|
1521
|
-
next: function next(
|
|
1522
|
-
|
|
1523
|
-
return v;
|
|
1524
|
-
});
|
|
1557
|
+
next: function next() {
|
|
1558
|
+
dispatch('value');
|
|
1525
1559
|
},
|
|
1526
1560
|
error: function error(e) {
|
|
1527
|
-
|
|
1561
|
+
dispatch('error');
|
|
1528
1562
|
throw e;
|
|
1529
1563
|
},
|
|
1530
1564
|
complete: function complete() {
|
|
1531
|
-
|
|
1565
|
+
dispatch('complete');
|
|
1532
1566
|
}
|
|
1533
1567
|
});
|
|
1534
1568
|
return function () {
|
|
1535
1569
|
return subscription.unsubscribe();
|
|
1536
1570
|
};
|
|
1537
1571
|
}, [observable]);
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
if (hasError) {
|
|
1541
|
-
status = 'error';
|
|
1542
|
-
} else if (observable.hasValue || hasInitialData) {
|
|
1543
|
-
status = 'success';
|
|
1544
|
-
} else {
|
|
1545
|
-
status = 'loading';
|
|
1546
|
-
}
|
|
1547
|
-
|
|
1548
|
-
return {
|
|
1549
|
-
status: status,
|
|
1550
|
-
hasEmitted: observable.hasValue || hasInitialData,
|
|
1551
|
-
isComplete: isComplete,
|
|
1552
|
-
data: latest,
|
|
1553
|
-
error: observable.ourError,
|
|
1554
|
-
firstValuePromise: observable.firstEmission
|
|
1555
|
-
};
|
|
1572
|
+
return status;
|
|
1556
1573
|
}
|
|
1557
1574
|
|
|
1558
1575
|
var cachedQueries$1 = globalThis._reactFireFirestoreQueryCache || [];
|
|
@@ -1677,6 +1694,21 @@ function useFirestoreCollectionData(query, options) {
|
|
|
1677
1694
|
return useObservable(observableId, observable$, options);
|
|
1678
1695
|
}
|
|
1679
1696
|
|
|
1697
|
+
/**
|
|
1698
|
+
* Calls a callable function.
|
|
1699
|
+
*
|
|
1700
|
+
* @param functionName - The name of the function to call
|
|
1701
|
+
* @param options
|
|
1702
|
+
*/
|
|
1703
|
+
|
|
1704
|
+
function useCallableFunctionResponse(functionName, options) {
|
|
1705
|
+
var functions$1 = useFunctions();
|
|
1706
|
+
var observableId = "functions:callableResponse:" + functionName + ":" + JSON.stringify(options == null ? void 0 : options.data) + ":" + JSON.stringify(options == null ? void 0 : options.httpsCallableOptions);
|
|
1707
|
+
var obsFactory = functions.httpsCallable(functions$1, functionName, options == null ? void 0 : options.httpsCallableOptions);
|
|
1708
|
+
var observable$ = obsFactory(options == null ? void 0 : options.data);
|
|
1709
|
+
return useObservable(observableId, observable$, options);
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1680
1712
|
function SuspenseWithPerf(_ref) {
|
|
1681
1713
|
var _performance;
|
|
1682
1714
|
|
|
@@ -1708,76 +1740,6 @@ function SuspenseWithPerf(_ref) {
|
|
|
1708
1740
|
}, children);
|
|
1709
1741
|
}
|
|
1710
1742
|
|
|
1711
|
-
function parameter$(_ref) {
|
|
1712
|
-
var remoteConfig$1 = _ref.remoteConfig,
|
|
1713
|
-
key = _ref.key,
|
|
1714
|
-
getter = _ref.getter;
|
|
1715
|
-
return new rxjs.Observable(function (subscriber) {
|
|
1716
|
-
remoteConfig.ensureInitialized(remoteConfig$1).then(function () {
|
|
1717
|
-
// 'this' for the getter loses context in the next()
|
|
1718
|
-
// call, so it needs to be bound.
|
|
1719
|
-
subscriber.next(getter.bind(remoteConfig$1)(key));
|
|
1720
|
-
});
|
|
1721
|
-
});
|
|
1722
|
-
}
|
|
1723
|
-
|
|
1724
|
-
function getValue(remoteConfig$1, key) {
|
|
1725
|
-
var getter = function getter() {
|
|
1726
|
-
return remoteConfig.getValue(remoteConfig$1, key);
|
|
1727
|
-
};
|
|
1728
|
-
|
|
1729
|
-
return parameter$({
|
|
1730
|
-
remoteConfig: remoteConfig$1,
|
|
1731
|
-
key: key,
|
|
1732
|
-
getter: getter
|
|
1733
|
-
});
|
|
1734
|
-
}
|
|
1735
|
-
function getString(remoteConfig$1, key) {
|
|
1736
|
-
var getter = function getter() {
|
|
1737
|
-
return remoteConfig.getString(remoteConfig$1, key);
|
|
1738
|
-
};
|
|
1739
|
-
|
|
1740
|
-
return parameter$({
|
|
1741
|
-
remoteConfig: remoteConfig$1,
|
|
1742
|
-
key: key,
|
|
1743
|
-
getter: getter
|
|
1744
|
-
});
|
|
1745
|
-
}
|
|
1746
|
-
function getNumber(remoteConfig$1, key) {
|
|
1747
|
-
var getter = function getter() {
|
|
1748
|
-
return remoteConfig.getNumber(remoteConfig$1, key);
|
|
1749
|
-
};
|
|
1750
|
-
|
|
1751
|
-
return parameter$({
|
|
1752
|
-
remoteConfig: remoteConfig$1,
|
|
1753
|
-
key: key,
|
|
1754
|
-
getter: getter
|
|
1755
|
-
});
|
|
1756
|
-
}
|
|
1757
|
-
function getBoolean(remoteConfig$1, key) {
|
|
1758
|
-
var getter = function getter() {
|
|
1759
|
-
return remoteConfig.getBoolean(remoteConfig$1, key);
|
|
1760
|
-
};
|
|
1761
|
-
|
|
1762
|
-
return parameter$({
|
|
1763
|
-
remoteConfig: remoteConfig$1,
|
|
1764
|
-
key: key,
|
|
1765
|
-
getter: getter
|
|
1766
|
-
});
|
|
1767
|
-
}
|
|
1768
|
-
function getAll(remoteConfig$1) {
|
|
1769
|
-
var getter = function getter() {
|
|
1770
|
-
return remoteConfig.getAll(remoteConfig$1);
|
|
1771
|
-
}; // No key is needed for getAll()
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
return parameter$({
|
|
1775
|
-
remoteConfig: remoteConfig$1,
|
|
1776
|
-
key: '',
|
|
1777
|
-
getter: getter
|
|
1778
|
-
});
|
|
1779
|
-
}
|
|
1780
|
-
|
|
1781
1743
|
/**
|
|
1782
1744
|
* Helper function to construct type safe functions. Since Remote Config has
|
|
1783
1745
|
* methods that return different types for values, we need to be extra safe
|
|
@@ -1788,12 +1750,8 @@ function getAll(remoteConfig$1) {
|
|
|
1788
1750
|
*/
|
|
1789
1751
|
|
|
1790
1752
|
function useRemoteConfigValue_INTERNAL(key, getter) {
|
|
1791
|
-
var
|
|
1792
|
-
|
|
1793
|
-
var remoteConfig = useRemoteConfig(); // INVESTIGATE need to use a public API to get at the app name, one doesn't appear to exist...
|
|
1794
|
-
// we might need to iterate over the Firebase apps and check for remoteConfig equality? this works for now
|
|
1795
|
-
|
|
1796
|
-
var appName = (_remoteConfig$_storag = remoteConfig._storage) == null ? void 0 : _remoteConfig$_storag.appName;
|
|
1753
|
+
var remoteConfig = useRemoteConfig();
|
|
1754
|
+
var appName = remoteConfig.app.name;
|
|
1797
1755
|
var $value = getter(remoteConfig, key);
|
|
1798
1756
|
var observableId = "remoteConfig:" + key + ":" + getter.name + ":" + appName;
|
|
1799
1757
|
return useObservable(observableId, $value);
|
|
@@ -1803,75 +1761,46 @@ function useRemoteConfigValue_INTERNAL(key, getter) {
|
|
|
1803
1761
|
* Remote Config Value.
|
|
1804
1762
|
*
|
|
1805
1763
|
* @param key The parameter key in Remote Config
|
|
1806
|
-
* @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
|
|
1807
1764
|
*/
|
|
1808
1765
|
|
|
1809
1766
|
|
|
1810
1767
|
function useRemoteConfigValue(key) {
|
|
1811
|
-
return useRemoteConfigValue_INTERNAL(key, getValue);
|
|
1768
|
+
return useRemoteConfigValue_INTERNAL(key, remoteConfig.getValue);
|
|
1812
1769
|
}
|
|
1813
1770
|
/**
|
|
1814
1771
|
* Convience method similar to useRemoteConfigValue. Returns a `string` from a Remote Config parameter.
|
|
1815
1772
|
* @param key The parameter key in Remote Config
|
|
1816
|
-
* @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
|
|
1817
1773
|
*/
|
|
1818
1774
|
|
|
1819
1775
|
function useRemoteConfigString(key) {
|
|
1820
|
-
return useRemoteConfigValue_INTERNAL(key, getString);
|
|
1776
|
+
return useRemoteConfigValue_INTERNAL(key, remoteConfig.getString);
|
|
1821
1777
|
}
|
|
1822
1778
|
/**
|
|
1823
1779
|
* Convience method similar to useRemoteConfigValue. Returns a `number` from a Remote Config parameter.
|
|
1824
1780
|
* @param key The parameter key in Remote Config
|
|
1825
|
-
* @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
|
|
1826
1781
|
*/
|
|
1827
1782
|
|
|
1828
1783
|
function useRemoteConfigNumber(key) {
|
|
1829
|
-
return useRemoteConfigValue_INTERNAL(key, getNumber);
|
|
1784
|
+
return useRemoteConfigValue_INTERNAL(key, remoteConfig.getNumber);
|
|
1830
1785
|
}
|
|
1831
1786
|
/**
|
|
1832
1787
|
* Convience method similar to useRemoteConfigValue. Returns a `boolean` from a Remote Config parameter.
|
|
1833
1788
|
* @param key The parameter key in Remote Config
|
|
1834
|
-
* @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
|
|
1835
1789
|
*/
|
|
1836
1790
|
|
|
1837
1791
|
function useRemoteConfigBoolean(key) {
|
|
1838
|
-
return useRemoteConfigValue_INTERNAL(key, getBoolean);
|
|
1792
|
+
return useRemoteConfigValue_INTERNAL(key, remoteConfig.getBoolean);
|
|
1839
1793
|
}
|
|
1840
1794
|
/**
|
|
1841
1795
|
* Convience method similar to useRemoteConfigValue. Returns allRemote Config parameters.
|
|
1842
1796
|
* @param key The parameter key in Remote Config
|
|
1843
|
-
* @param remoteConfig Optional instance. If not provided ReactFire will either grab the default instance or lazy load.
|
|
1844
1797
|
*/
|
|
1845
1798
|
|
|
1846
1799
|
function useRemoteConfigAll(key) {
|
|
1847
|
-
return useRemoteConfigValue_INTERNAL(key, getAll);
|
|
1800
|
+
return useRemoteConfigValue_INTERNAL(key, remoteConfig.getAll);
|
|
1848
1801
|
}
|
|
1849
1802
|
|
|
1850
1803
|
var _excluded = ["storage", "storagePath", "suspense", "placeHolder"];
|
|
1851
|
-
/**
|
|
1852
|
-
* modified version of rxFire's _fromTask
|
|
1853
|
-
*
|
|
1854
|
-
* @param task
|
|
1855
|
-
*/
|
|
1856
|
-
|
|
1857
|
-
function _fromTask(task) {
|
|
1858
|
-
return new rxjs.Observable(function (subscriber) {
|
|
1859
|
-
var progress = function progress(snap) {
|
|
1860
|
-
return subscriber.next(snap);
|
|
1861
|
-
};
|
|
1862
|
-
|
|
1863
|
-
var error = function error(e) {
|
|
1864
|
-
return subscriber.error(e);
|
|
1865
|
-
};
|
|
1866
|
-
|
|
1867
|
-
var complete = function complete() {
|
|
1868
|
-
return subscriber.complete();
|
|
1869
|
-
};
|
|
1870
|
-
|
|
1871
|
-
task.on('state_changed', progress, error, complete); // I REMOVED THE UNSUBSCRIBE RETURN BECAUSE IT CANCELS THE UPLOAD
|
|
1872
|
-
// https://github.com/firebase/firebase-js-sdk/issues/1659
|
|
1873
|
-
});
|
|
1874
|
-
}
|
|
1875
1804
|
/**
|
|
1876
1805
|
* Subscribe to the progress of a storage task
|
|
1877
1806
|
*
|
|
@@ -1880,12 +1809,9 @@ function _fromTask(task) {
|
|
|
1880
1809
|
* @param options
|
|
1881
1810
|
*/
|
|
1882
1811
|
|
|
1883
|
-
|
|
1884
1812
|
function useStorageTask(task, ref, options) {
|
|
1885
1813
|
var observableId = "storage:task:" + ref.toString();
|
|
1886
|
-
|
|
1887
|
-
var observable$ = _fromTask(task);
|
|
1888
|
-
|
|
1814
|
+
var observable$ = storage.fromTask(task);
|
|
1889
1815
|
return useObservable(observableId, observable$, options);
|
|
1890
1816
|
}
|
|
1891
1817
|
/**
|
|
@@ -1952,35 +1878,24 @@ function StorageImage(props) {
|
|
|
1952
1878
|
}
|
|
1953
1879
|
}
|
|
1954
1880
|
|
|
1881
|
+
var AppCheckSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1955
1882
|
var AuthSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1956
1883
|
var AnalyticsSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1957
1884
|
var DatabaseSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1958
1885
|
var FirestoreSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1886
|
+
var FunctionsSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1959
1887
|
var StorageSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1960
1888
|
var PerformanceSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1961
1889
|
var RemoteConfigSdkContext = /*#__PURE__*/React.createContext(undefined);
|
|
1962
1890
|
|
|
1963
1891
|
function getSdkProvider(SdkContext) {
|
|
1964
1892
|
return function SdkProvider(props) {
|
|
1965
|
-
var
|
|
1966
|
-
var sdkAppName; // @ts-ignore Auth doesn't have field 'app'
|
|
1967
|
-
|
|
1968
|
-
if (props.sdk.app) {
|
|
1969
|
-
// @ts-ignore Auth doesn't have field 'app'
|
|
1970
|
-
sdkAppName = props.sdk.app.name; // @ts-ignore only Auth has field 'name'
|
|
1971
|
-
} else if (props.sdk.name) {
|
|
1972
|
-
// @ts-ignore only Auth has field 'name'
|
|
1973
|
-
sdkAppName = props.sdk.name;
|
|
1974
|
-
}
|
|
1975
|
-
|
|
1976
|
-
if (sdkAppName !== contextualAppName) {
|
|
1977
|
-
throw new Error('sdk was initialized with a different firebase app');
|
|
1978
|
-
}
|
|
1979
|
-
|
|
1980
|
-
if (!props.sdk) {
|
|
1981
|
-
throw new Error('no sdk provided');
|
|
1982
|
-
}
|
|
1893
|
+
var _props$sdk, _props$sdk$app;
|
|
1983
1894
|
|
|
1895
|
+
if (!props.sdk) throw new Error('no sdk provided');
|
|
1896
|
+
var contextualAppName = useFirebaseApp().name;
|
|
1897
|
+
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;
|
|
1898
|
+
if (sdkAppName !== contextualAppName) throw new Error('sdk was initialized with a different firebase app');
|
|
1984
1899
|
return React.createElement(SdkContext.Provider, _extends({
|
|
1985
1900
|
value: props.sdk
|
|
1986
1901
|
}, props));
|
|
@@ -2012,13 +1927,18 @@ function useInitSdk(sdkName, SdkContext, sdkInitializer, options) {
|
|
|
2012
1927
|
return useObservable("firebase-sdk:" + sdkName + ":" + firebaseApp.name, rxjs.from(initializeSdk), options);
|
|
2013
1928
|
}
|
|
2014
1929
|
|
|
1930
|
+
var AppCheckProvider = /*#__PURE__*/getSdkProvider(AppCheckSdkContext);
|
|
2015
1931
|
var AuthProvider = /*#__PURE__*/getSdkProvider(AuthSdkContext);
|
|
2016
1932
|
var AnalyticsProvider = /*#__PURE__*/getSdkProvider(AnalyticsSdkContext);
|
|
2017
1933
|
var DatabaseProvider = /*#__PURE__*/getSdkProvider(DatabaseSdkContext);
|
|
2018
1934
|
var FirestoreProvider = /*#__PURE__*/getSdkProvider(FirestoreSdkContext);
|
|
1935
|
+
var FunctionsProvider = /*#__PURE__*/getSdkProvider(FunctionsSdkContext);
|
|
2019
1936
|
var PerformanceProvider = /*#__PURE__*/getSdkProvider(PerformanceSdkContext);
|
|
2020
1937
|
var StorageProvider = /*#__PURE__*/getSdkProvider(StorageSdkContext);
|
|
2021
1938
|
var RemoteConfigProvider = /*#__PURE__*/getSdkProvider(RemoteConfigSdkContext);
|
|
1939
|
+
var useAppCheck = function useAppCheck() {
|
|
1940
|
+
return useSdk(AppCheckSdkContext);
|
|
1941
|
+
};
|
|
2022
1942
|
var useAuth = function useAuth() {
|
|
2023
1943
|
return useSdk(AuthSdkContext);
|
|
2024
1944
|
};
|
|
@@ -2031,6 +1951,9 @@ var useDatabase = function useDatabase() {
|
|
|
2031
1951
|
var useFirestore = function useFirestore() {
|
|
2032
1952
|
return useSdk(FirestoreSdkContext);
|
|
2033
1953
|
};
|
|
1954
|
+
var useFunctions = function useFunctions() {
|
|
1955
|
+
return useSdk(FunctionsSdkContext);
|
|
1956
|
+
};
|
|
2034
1957
|
var usePerformance = function usePerformance() {
|
|
2035
1958
|
return useSdk(PerformanceSdkContext);
|
|
2036
1959
|
};
|
|
@@ -2040,6 +1963,9 @@ var useStorage = function useStorage() {
|
|
|
2040
1963
|
var useRemoteConfig = function useRemoteConfig() {
|
|
2041
1964
|
return useSdk(RemoteConfigSdkContext);
|
|
2042
1965
|
};
|
|
1966
|
+
var useInitAppCheck = function useInitAppCheck(initializer, options) {
|
|
1967
|
+
return useInitSdk('appcheck', AppCheckSdkContext, initializer, options);
|
|
1968
|
+
};
|
|
2043
1969
|
var useInitAuth = function useInitAuth(initializer, options) {
|
|
2044
1970
|
return useInitSdk('auth', AuthSdkContext, initializer, options);
|
|
2045
1971
|
};
|
|
@@ -2052,6 +1978,9 @@ var useInitDatabase = function useInitDatabase(initializer, options) {
|
|
|
2052
1978
|
var useInitFirestore = function useInitFirestore(initializer, options) {
|
|
2053
1979
|
return useInitSdk('firestore', FirestoreSdkContext, initializer, options);
|
|
2054
1980
|
};
|
|
1981
|
+
var useInitFunctions = function useInitFunctions(initializer, options) {
|
|
1982
|
+
return useInitSdk('functions', FunctionsSdkContext, initializer, options);
|
|
1983
|
+
};
|
|
2055
1984
|
var useInitPerformance = function useInitPerformance(initializer, options) {
|
|
2056
1985
|
return useInitSdk('performance', PerformanceSdkContext, initializer, options);
|
|
2057
1986
|
};
|
|
@@ -2098,17 +2027,28 @@ function checkIdField(options) {
|
|
|
2098
2027
|
}
|
|
2099
2028
|
|
|
2100
2029
|
exports.AnalyticsProvider = AnalyticsProvider;
|
|
2030
|
+
exports.AnalyticsSdkContext = AnalyticsSdkContext;
|
|
2031
|
+
exports.AppCheckProvider = AppCheckProvider;
|
|
2032
|
+
exports.AppCheckSdkContext = AppCheckSdkContext;
|
|
2101
2033
|
exports.AuthCheck = AuthCheck;
|
|
2102
2034
|
exports.AuthProvider = AuthProvider;
|
|
2035
|
+
exports.AuthSdkContext = AuthSdkContext;
|
|
2103
2036
|
exports.ClaimsCheck = ClaimsCheck;
|
|
2104
2037
|
exports.DatabaseProvider = DatabaseProvider;
|
|
2038
|
+
exports.DatabaseSdkContext = DatabaseSdkContext;
|
|
2105
2039
|
exports.FirebaseAppProvider = FirebaseAppProvider;
|
|
2106
2040
|
exports.FirestoreProvider = FirestoreProvider;
|
|
2041
|
+
exports.FirestoreSdkContext = FirestoreSdkContext;
|
|
2042
|
+
exports.FunctionsProvider = FunctionsProvider;
|
|
2043
|
+
exports.FunctionsSdkContext = FunctionsSdkContext;
|
|
2107
2044
|
exports.PerformanceProvider = PerformanceProvider;
|
|
2045
|
+
exports.PerformanceSdkContext = PerformanceSdkContext;
|
|
2108
2046
|
exports.ReactFireError = ReactFireError;
|
|
2109
2047
|
exports.RemoteConfigProvider = RemoteConfigProvider;
|
|
2048
|
+
exports.RemoteConfigSdkContext = RemoteConfigSdkContext;
|
|
2110
2049
|
exports.StorageImage = StorageImage;
|
|
2111
2050
|
exports.StorageProvider = StorageProvider;
|
|
2051
|
+
exports.StorageSdkContext = StorageSdkContext;
|
|
2112
2052
|
exports.SuspenseWithPerf = SuspenseWithPerf;
|
|
2113
2053
|
exports.checkIdField = checkIdField;
|
|
2114
2054
|
exports.checkOptions = checkOptions;
|
|
@@ -2117,7 +2057,9 @@ exports.preloadFirestoreDoc = preloadFirestoreDoc;
|
|
|
2117
2057
|
exports.preloadObservable = preloadObservable;
|
|
2118
2058
|
exports.preloadUser = preloadUser;
|
|
2119
2059
|
exports.useAnalytics = useAnalytics;
|
|
2060
|
+
exports.useAppCheck = useAppCheck;
|
|
2120
2061
|
exports.useAuth = useAuth;
|
|
2062
|
+
exports.useCallableFunctionResponse = useCallableFunctionResponse;
|
|
2121
2063
|
exports.useDatabase = useDatabase;
|
|
2122
2064
|
exports.useDatabaseList = useDatabaseList;
|
|
2123
2065
|
exports.useDatabaseListData = useDatabaseListData;
|
|
@@ -2131,11 +2073,14 @@ exports.useFirestoreDoc = useFirestoreDoc;
|
|
|
2131
2073
|
exports.useFirestoreDocData = useFirestoreDocData;
|
|
2132
2074
|
exports.useFirestoreDocDataOnce = useFirestoreDocDataOnce;
|
|
2133
2075
|
exports.useFirestoreDocOnce = useFirestoreDocOnce;
|
|
2076
|
+
exports.useFunctions = useFunctions;
|
|
2134
2077
|
exports.useIdTokenResult = useIdTokenResult;
|
|
2135
2078
|
exports.useInitAnalytics = useInitAnalytics;
|
|
2079
|
+
exports.useInitAppCheck = useInitAppCheck;
|
|
2136
2080
|
exports.useInitAuth = useInitAuth;
|
|
2137
2081
|
exports.useInitDatabase = useInitDatabase;
|
|
2138
2082
|
exports.useInitFirestore = useInitFirestore;
|
|
2083
|
+
exports.useInitFunctions = useInitFunctions;
|
|
2139
2084
|
exports.useInitPerformance = useInitPerformance;
|
|
2140
2085
|
exports.useInitRemoteConfig = useInitRemoteConfig;
|
|
2141
2086
|
exports.useInitStorage = useInitStorage;
|