@apollo/client 3.8.0-alpha.12 → 3.8.0-alpha.13
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/apollo-client.cjs +145 -119
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/core/ObservableQuery.d.ts.map +1 -1
- package/core/ObservableQuery.js.map +1 -1
- package/core/core.cjs +1 -1
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +1 -1
- package/invariantErrorCodes.js +29 -34
- package/link/http/parseAndCheckHttpResponse.js.map +1 -1
- package/link/persisted-queries/index.d.ts.map +1 -1
- package/link/persisted-queries/index.js +12 -13
- package/link/persisted-queries/index.js.map +1 -1
- package/link/persisted-queries/persisted-queries.cjs +12 -13
- package/link/persisted-queries/persisted-queries.cjs.map +1 -1
- package/link/persisted-queries/persisted-queries.cjs.native.js +12 -13
- package/link/utils/throwServerError.d.ts +1 -1
- package/link/utils/throwServerError.d.ts.map +1 -1
- package/link/utils/throwServerError.js.map +1 -1
- package/package.json +18 -17
- package/react/cache/QuerySubscription.d.ts +11 -4
- package/react/cache/QuerySubscription.d.ts.map +1 -1
- package/react/cache/QuerySubscription.js +52 -34
- package/react/cache/QuerySubscription.js.map +1 -1
- package/react/context/ApolloConsumer.js +1 -1
- package/react/context/ApolloProvider.js +1 -1
- package/react/context/context.cjs +2 -2
- package/react/context/context.cjs.map +1 -1
- package/react/context/context.cjs.native.js +2 -2
- package/react/hoc/hoc-utils.js +1 -1
- package/react/hoc/hoc.cjs +2 -2
- package/react/hoc/hoc.cjs.map +1 -1
- package/react/hoc/hoc.cjs.native.js +2 -2
- package/react/hoc/withApollo.js +1 -1
- package/react/hooks/hooks.cjs +58 -63
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +58 -63
- package/react/hooks/useApolloClient.js +1 -1
- package/react/hooks/useFragment.d.ts +2 -1
- package/react/hooks/useFragment.d.ts.map +1 -1
- package/react/hooks/useFragment.js.map +1 -1
- package/react/hooks/useSubscription.d.ts.map +1 -1
- package/react/hooks/useSubscription.js +25 -13
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/hooks/useSuspenseCache.js +1 -1
- package/react/hooks/useSuspenseQuery.d.ts +15 -3
- package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
- package/react/hooks/useSuspenseQuery.js +34 -52
- package/react/hooks/useSuspenseQuery.js.map +1 -1
- package/react/parser/index.js +5 -5
- package/react/parser/parser.cjs +5 -5
- package/react/parser/parser.cjs.map +1 -1
- package/react/parser/parser.cjs.native.js +5 -5
- package/react/react.cjs +52 -33
- package/react/react.cjs.map +1 -1
- package/react/react.cjs.native.js +52 -33
- package/react/types/types.d.ts +1 -3
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/core.cjs +1 -1
- package/testing/core/core.cjs.map +1 -1
- package/testing/core/core.cjs.native.js +1 -1
- package/testing/core/mocking/mockLink.js +1 -1
- package/utilities/graphql/directives.js +4 -4
- package/utilities/graphql/fragments.js +3 -3
- package/utilities/graphql/getFromAST.js +8 -8
- package/utilities/graphql/storeUtils.js +1 -1
- package/utilities/index.d.ts +2 -1
- package/utilities/index.d.ts.map +1 -1
- package/utilities/index.js +1 -1
- package/utilities/index.js.map +1 -1
- package/utilities/promises/decoration.d.ts +2 -0
- package/utilities/promises/decoration.d.ts.map +1 -1
- package/utilities/promises/decoration.js +12 -0
- package/utilities/promises/decoration.js.map +1 -1
- package/utilities/types/DeepOmit.d.ts +4 -3
- package/utilities/types/DeepOmit.d.ts.map +1 -1
- package/utilities/types/DeepOmit.js.map +1 -1
- package/utilities/types/DeepPartial.d.ts +12 -0
- package/utilities/types/DeepPartial.d.ts.map +1 -0
- package/utilities/types/DeepPartial.js +2 -0
- package/utilities/types/DeepPartial.js.map +1 -0
- package/utilities/types/Primitive.d.ts +2 -0
- package/utilities/types/Primitive.d.ts.map +1 -0
- package/utilities/types/Primitive.js +2 -0
- package/utilities/types/Primitive.js.map +1 -0
- package/utilities/utilities.cjs +30 -16
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +30 -16
- package/version.js +1 -1
|
@@ -35,7 +35,7 @@ function useApolloClient(override) {
|
|
|
35
35
|
var client = override || context$1.client;
|
|
36
36
|
globals.__DEV__ ? globals.invariant(!!client, 'Could not find "client" in the context or passed in as an option. ' +
|
|
37
37
|
'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +
|
|
38
|
-
'instance in via options.') : globals.invariant(!!client,
|
|
38
|
+
'instance in via options.') : globals.invariant(!!client, 32);
|
|
39
39
|
return client;
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -612,9 +612,13 @@ function useSubscription(subscription, options) {
|
|
|
612
612
|
if (!observable) {
|
|
613
613
|
return;
|
|
614
614
|
}
|
|
615
|
+
var subscriptionStopped = false;
|
|
615
616
|
var subscription = observable.subscribe({
|
|
616
617
|
next: function (fetchResult) {
|
|
617
618
|
var _a, _b;
|
|
619
|
+
if (subscriptionStopped) {
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
618
622
|
var result = {
|
|
619
623
|
loading: false,
|
|
620
624
|
data: fetchResult.data,
|
|
@@ -637,26 +641,33 @@ function useSubscription(subscription, options) {
|
|
|
637
641
|
},
|
|
638
642
|
error: function (error) {
|
|
639
643
|
var _a, _b;
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
644
|
+
if (!subscriptionStopped) {
|
|
645
|
+
setResult({
|
|
646
|
+
loading: false,
|
|
647
|
+
data: void 0,
|
|
648
|
+
error: error,
|
|
649
|
+
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
650
|
+
});
|
|
651
|
+
(_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
|
|
652
|
+
}
|
|
647
653
|
},
|
|
648
654
|
complete: function () {
|
|
649
655
|
var _a, _b;
|
|
650
|
-
if (
|
|
651
|
-
ref.current.options.onComplete
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
ref.current.options.onSubscriptionComplete
|
|
656
|
+
if (!subscriptionStopped) {
|
|
657
|
+
if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onComplete) {
|
|
658
|
+
ref.current.options.onComplete();
|
|
659
|
+
}
|
|
660
|
+
else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionComplete) {
|
|
661
|
+
ref.current.options.onSubscriptionComplete();
|
|
662
|
+
}
|
|
655
663
|
}
|
|
656
664
|
},
|
|
657
665
|
});
|
|
658
666
|
return function () {
|
|
659
|
-
|
|
667
|
+
subscriptionStopped = true;
|
|
668
|
+
setTimeout(function () {
|
|
669
|
+
subscription.unsubscribe();
|
|
670
|
+
});
|
|
660
671
|
};
|
|
661
672
|
}, [observable]);
|
|
662
673
|
return result;
|
|
@@ -748,46 +759,40 @@ function useSuspenseCache(override) {
|
|
|
748
759
|
var suspenseCache = override || context$1.suspenseCache;
|
|
749
760
|
globals.__DEV__ ? globals.invariant(suspenseCache, 'Could not find a "suspenseCache" in the context or passed in as an option. ' +
|
|
750
761
|
'Wrap the root component in an <ApolloProvider> and provide a suspenseCache, ' +
|
|
751
|
-
'or pass a SuspenseCache instance in via options.') : globals.invariant(suspenseCache,
|
|
762
|
+
'or pass a SuspenseCache instance in via options.') : globals.invariant(suspenseCache, 33);
|
|
752
763
|
return suspenseCache;
|
|
753
764
|
}
|
|
754
765
|
|
|
755
766
|
function useSuspenseQuery_experimental(query, options) {
|
|
756
767
|
if (options === void 0) { options = Object.create(null); }
|
|
757
|
-
var didPreviouslySuspend = React.useRef(false);
|
|
758
768
|
var client = useApolloClient(options.client);
|
|
759
769
|
var suspenseCache = useSuspenseCache(options.suspenseCache);
|
|
760
770
|
var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
|
|
761
|
-
var
|
|
762
|
-
var
|
|
763
|
-
var
|
|
771
|
+
var variables = watchQueryOptions.variables;
|
|
772
|
+
var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
|
|
773
|
+
var _b = usePromiseVersion(), version = _b[0], setVersion = _b[1];
|
|
764
774
|
var cacheKey = [client, query, cache.canonicalStringify(variables)].concat(queryKey);
|
|
765
775
|
var subscription = suspenseCache.getSubscription(cacheKey, function () {
|
|
766
776
|
return client.watchQuery(watchQueryOptions);
|
|
767
777
|
});
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
__use(subscription.promise);
|
|
787
|
-
}
|
|
788
|
-
didPreviouslySuspend.current = true;
|
|
789
|
-
var fetchMore = React.useCallback(function (options) { return subscription.fetchMore(options); }, [subscription]);
|
|
790
|
-
var refetch = React.useCallback(function (variables) { return subscription.refetch(variables); }, [subscription]);
|
|
778
|
+
useTrackedSubscriptions(subscription);
|
|
779
|
+
React.useEffect(function () {
|
|
780
|
+
return subscription.listen(function () {
|
|
781
|
+
setVersion('main');
|
|
782
|
+
});
|
|
783
|
+
}, [subscription]);
|
|
784
|
+
var promise = subscription.promises[version] || subscription.promises.main;
|
|
785
|
+
var result = __use(promise);
|
|
786
|
+
var fetchMore = React.useCallback(function (options) {
|
|
787
|
+
var promise = subscription.fetchMore(options);
|
|
788
|
+
setVersion('network');
|
|
789
|
+
return promise;
|
|
790
|
+
}, [subscription]);
|
|
791
|
+
var refetch = React.useCallback(function (variables) {
|
|
792
|
+
var promise = subscription.refetch(variables);
|
|
793
|
+
setVersion('network');
|
|
794
|
+
return promise;
|
|
795
|
+
}, [subscription]);
|
|
791
796
|
var subscribeToMore = React.useCallback(function (options) { return subscription.observable.subscribeToMore(options); }, [subscription]);
|
|
792
797
|
return React.useMemo(function () {
|
|
793
798
|
return {
|
|
@@ -815,7 +820,7 @@ function validateFetchPolicy(fetchPolicy) {
|
|
|
815
820
|
'no-cache',
|
|
816
821
|
'cache-and-network',
|
|
817
822
|
];
|
|
818
|
-
globals.__DEV__ ? globals.invariant(supportedFetchPolicies.includes(fetchPolicy), "The fetch policy `".concat(fetchPolicy, "` is not supported with suspense.")) : globals.invariant(supportedFetchPolicies.includes(fetchPolicy),
|
|
823
|
+
globals.__DEV__ ? globals.invariant(supportedFetchPolicies.includes(fetchPolicy), "The fetch policy `".concat(fetchPolicy, "` is not supported with suspense.")) : globals.invariant(supportedFetchPolicies.includes(fetchPolicy), 34);
|
|
819
824
|
}
|
|
820
825
|
function validatePartialDataReturn(fetchPolicy, returnPartialData) {
|
|
821
826
|
if (fetchPolicy === 'no-cache' && returnPartialData) {
|
|
@@ -830,35 +835,25 @@ function toApolloError(result) {
|
|
|
830
835
|
function useTrackedSubscriptions(subscription) {
|
|
831
836
|
var trackedSubscriptions = React.useRef(new Set());
|
|
832
837
|
trackedSubscriptions.current.add(subscription);
|
|
833
|
-
|
|
838
|
+
useStrictModeSafeCleanupEffect(function () {
|
|
834
839
|
trackedSubscriptions.current.forEach(function (sub) { return sub.dispose(); });
|
|
835
|
-
};
|
|
840
|
+
});
|
|
841
|
+
}
|
|
842
|
+
function usePromiseVersion() {
|
|
843
|
+
var _a = React.useState({
|
|
844
|
+
version: 'main',
|
|
845
|
+
}), version = _a[0].version, setState = _a[1];
|
|
846
|
+
var setVersion = React.useCallback(function (version) { return setState({ version: version }); }, []);
|
|
847
|
+
return [version, setVersion];
|
|
836
848
|
}
|
|
837
849
|
function useWatchQueryOptions(_a) {
|
|
838
850
|
var query = _a.query, options = _a.options;
|
|
839
|
-
var watchQueryOptions = useDeepMemo(function () { return (tslib.__assign(tslib.__assign({}, options), { query: query, notifyOnNetworkStatusChange:
|
|
851
|
+
var watchQueryOptions = useDeepMemo(function () { return (tslib.__assign(tslib.__assign({}, options), { query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 })); }, [options, query]);
|
|
840
852
|
if (globals.__DEV__) {
|
|
841
853
|
validateOptions(watchQueryOptions);
|
|
842
854
|
}
|
|
843
855
|
return watchQueryOptions;
|
|
844
856
|
}
|
|
845
|
-
function shouldUseCachedResult(result, _a) {
|
|
846
|
-
var returnPartialData = _a.returnPartialData, fetchPolicy = _a.fetchPolicy;
|
|
847
|
-
if (result.networkStatus === core.NetworkStatus.refetch ||
|
|
848
|
-
result.networkStatus === core.NetworkStatus.fetchMore ||
|
|
849
|
-
result.networkStatus === core.NetworkStatus.error) {
|
|
850
|
-
return false;
|
|
851
|
-
}
|
|
852
|
-
switch (fetchPolicy) {
|
|
853
|
-
case void 0:
|
|
854
|
-
case 'cache-first':
|
|
855
|
-
case 'cache-and-network': {
|
|
856
|
-
return Boolean(result.data && (!result.partial || returnPartialData));
|
|
857
|
-
}
|
|
858
|
-
default:
|
|
859
|
-
return false;
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
857
|
|
|
863
858
|
exports.useApolloClient = useApolloClient;
|
|
864
859
|
exports.useFragment_experimental = useFragment_experimental;
|
|
@@ -6,7 +6,7 @@ export function useApolloClient(override) {
|
|
|
6
6
|
var client = override || context.client;
|
|
7
7
|
__DEV__ ? invariant(!!client, 'Could not find "client" in the context or passed in as an option. ' +
|
|
8
8
|
'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +
|
|
9
|
-
'instance in via options.') : invariant(!!client,
|
|
9
|
+
'instance in via options.') : invariant(!!client, 32);
|
|
10
10
|
return client;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=useApolloClient.js.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Cache, Reference, StoreObject, MissingTree } from "../../cache";
|
|
2
2
|
import { OperationVariables } from "../../core";
|
|
3
3
|
import { NoInfer } from "../types/types";
|
|
4
|
-
export interface UseFragmentOptions<TData, TVars> extends Omit<Cache.DiffOptions<NoInfer<TData>, NoInfer<TVars>>, "id" | "query" | "optimistic" | "previousResult">, Omit<Cache.ReadFragmentOptions<TData, TVars>, "id" | "variables"> {
|
|
4
|
+
export interface UseFragmentOptions<TData, TVars> extends Omit<Cache.DiffOptions<NoInfer<TData>, NoInfer<TVars>>, "id" | "query" | "optimistic" | "previousResult" | "returnPartialData">, Omit<Cache.ReadFragmentOptions<TData, TVars>, "id" | "variables" | "returnPartialData"> {
|
|
5
5
|
from: StoreObject | Reference | string;
|
|
6
6
|
optimistic?: boolean;
|
|
7
|
+
returnPartialData?: boolean;
|
|
7
8
|
}
|
|
8
9
|
export interface UseFragmentResult<TData> {
|
|
9
10
|
data: TData | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFragment.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useFragment.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAChD,SAAQ,IAAI,CACV,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAC/C,IAAI,GACJ,OAAO,GACP,YAAY,GACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"useFragment.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useFragment.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACZ,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAChD,SAAQ,IAAI,CACV,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAC/C,IAAI,GACJ,OAAO,GACP,YAAY,GACZ,gBAAgB,GAChB,mBAAmB,CACtB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,IAAI,GACJ,WAAW,GACX,mBAAmB,CACtB;IACC,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IAEvC,UAAU,CAAC,EAAE,OAAO,CAAC;IAQrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAgBD,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,GAAG,GAAG,EACX,KAAK,GAAG,kBAAkB,EAE1B,OAAO,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,GACxC,iBAAiB,CAAC,KAAK,CAAC,CA8C1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFragment.js","sourceRoot":"","sources":["../../../src/react/hooks/useFragment.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAQjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"useFragment.js","sourceRoot":"","sources":["../../../src/react/hooks/useFragment.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAQjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAkD9D,MAAM,UAAU,wBAAwB,CAItC,OAAyC;IAEjC,IAAA,KAAK,GAAK,eAAe,EAAE,MAAtB,CAAuB;IAGlC,IAAA,QAAQ,GAKN,OAAO,SALD,EACR,YAAY,GAIV,OAAO,aAJG,EACZ,IAAI,GAGF,OAAO,KAHL,EACJ,KAEE,OAAO,WAFQ,EAAjB,UAAU,mBAAG,IAAI,KAAA,EACd,IAAI,UACL,OAAO,EANL,kDAML,CADQ,CACG;IAEZ,IAAM,WAAW,yBACZ,IAAI,KACP,EAAE,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC1D,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EACtD,UAAU,YAAA,GACX,CAAC;IAEF,IAAM,SAAS,GAAG,MAAM,EAA4B,CAAC;IACrD,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAQ,WAAW,CAAC,CAAC;IAGhD,IAAM,WAAW,GAAG;QAClB,IAAM,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,SAAS,CAAC,OAAO;YACtB,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC,OAAO;YACnB,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,OAAO,oBAAoB,CACzB,UAAC,WAAW;QACV,OAAO,KAAK,CAAC,KAAK,uBACb,WAAW,KACd,SAAS,EAAE,IAAI,EACf,QAAQ,YAAC,IAAI;gBACX,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;oBAC5B,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;oBACtD,WAAW,EAAE,CAAC;iBACf;YACH,CAAC,IACD,CAAC;IACL,CAAC,EACD,WAAW,EACX,WAAW,CACZ,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,IAA6B;IAE7B,IAAM,MAAM,GAA6B;QACvC,IAAI,EAAE,IAAI,CAAC,MAAM;QACjB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;KAC1B,CAAC;IAEF,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,MAAM,CAAC,OAAO,GAAG,cAAc,CAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,OAAO,EAAb,CAAa,CAAC,CACzC,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { useRef } from \"react\";\nimport { equal } from \"@wry/equality\";\n\nimport { mergeDeepArray } from \"../../utilities\";\nimport {\n Cache,\n Reference,\n StoreObject,\n MissingTree,\n} from \"../../cache\";\n\nimport { useApolloClient } from \"./useApolloClient\";\nimport { useSyncExternalStore } from \"./useSyncExternalStore\";\nimport { OperationVariables } from \"../../core\";\nimport { NoInfer } from \"../types/types\";\n\nexport interface UseFragmentOptions<TData, TVars>\nextends Omit<\n Cache.DiffOptions<NoInfer<TData>, NoInfer<TVars>>,\n | \"id\"\n | \"query\"\n | \"optimistic\"\n | \"previousResult\"\n | \"returnPartialData\"\n>, Omit<Cache.ReadFragmentOptions<TData, TVars>,\n | \"id\"\n | \"variables\"\n | \"returnPartialData\"\n> {\n from: StoreObject | Reference | string;\n // Override this field to make it optional (default: true).\n optimistic?: boolean;\n\n /**\n * Whether to return incomplete data rather than null.\n * Defaults to `true`.\n * @deprecated This option will be removed in Apollo Client 3.8.\n * Please check `result.missing` instead.\n */\n returnPartialData?: boolean;\n}\n\n// Since the above definition of UseFragmentOptions can be hard to parse without\n// help from TypeScript/VSCode, here are the intended fields and their types.\n// Uncomment this code to check that it's consistent with the definition above.\n//\n// export interface UseFragmentOptions<TData, TVars> {\n// from: string | StoreObject | Reference;\n// fragment: DocumentNode | TypedDocumentNode<TData, TVars>;\n// fragmentName?: string;\n// optimistic?: boolean;\n// variables?: TVars;\n// returnPartialData?: boolean;\n// canonizeResults?: boolean;\n// }\n\nexport interface UseFragmentResult<TData> {\n data: TData | undefined;\n complete: boolean;\n missing?: MissingTree;\n}\n\nexport function useFragment_experimental<\n TData = any,\n TVars = OperationVariables\n>(\n options: UseFragmentOptions<TData, TVars>,\n): UseFragmentResult<TData> {\n const { cache } = useApolloClient();\n\n const {\n fragment,\n fragmentName,\n from,\n optimistic = true,\n ...rest\n } = options;\n\n const diffOptions: Cache.DiffOptions<TData, TVars> = {\n ...rest,\n id: typeof from === \"string\" ? from : cache.identify(from),\n query: cache[\"getFragmentDoc\"](fragment, fragmentName),\n optimistic,\n };\n\n const resultRef = useRef<UseFragmentResult<TData>>();\n let latestDiff = cache.diff<TData>(diffOptions);\n\n // Used for both getSnapshot and getServerSnapshot\n const getSnapshot = () => {\n const latestDiffToResult = diffToResult(latestDiff);\n return resultRef.current &&\n equal(resultRef.current.data, latestDiffToResult.data)\n ? resultRef.current\n : (resultRef.current = latestDiffToResult);\n };\n\n return useSyncExternalStore(\n (forceUpdate) => {\n return cache.watch({\n ...diffOptions,\n immediate: true,\n callback(diff) {\n if (!equal(diff, latestDiff)) {\n resultRef.current = diffToResult((latestDiff = diff));\n forceUpdate();\n }\n },\n });\n },\n getSnapshot,\n getSnapshot\n );\n}\n\nfunction diffToResult<TData>(\n diff: Cache.DiffResult<TData>,\n): UseFragmentResult<TData> {\n const result: UseFragmentResult<TData> = {\n data: diff.result,\n complete: !!diff.complete,\n };\n\n if (diff.missing) {\n result.missing = mergeDeepArray(\n diff.missing.map(error => error.missing),\n );\n }\n\n return result;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubscription.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useSubscription.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAItE,OAAO,EACL,OAAO,EACP,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,eAAe,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,SAAS,kBAAkB,GAAG,kBAAkB,EACrG,YAAY,EAAE,YAAY,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,EACjE,OAAO,CAAC,EAAE,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useSubscription.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useSubscription.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAItE,OAAO,EACL,OAAO,EACP,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,eAAe,CAAC,KAAK,GAAG,GAAG,EAAE,UAAU,SAAS,kBAAkB,GAAG,kBAAkB,EACrG,YAAY,EAAE,YAAY,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,EACjE,OAAO,CAAC,EAAE,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,yCAqKvE"}
|
|
@@ -89,9 +89,13 @@ export function useSubscription(subscription, options) {
|
|
|
89
89
|
if (!observable) {
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
92
|
+
var subscriptionStopped = false;
|
|
92
93
|
var subscription = observable.subscribe({
|
|
93
94
|
next: function (fetchResult) {
|
|
94
95
|
var _a, _b;
|
|
96
|
+
if (subscriptionStopped) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
95
99
|
var result = {
|
|
96
100
|
loading: false,
|
|
97
101
|
data: fetchResult.data,
|
|
@@ -114,26 +118,34 @@ export function useSubscription(subscription, options) {
|
|
|
114
118
|
},
|
|
115
119
|
error: function (error) {
|
|
116
120
|
var _a, _b;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
if (!subscriptionStopped) {
|
|
122
|
+
setResult({
|
|
123
|
+
loading: false,
|
|
124
|
+
data: void 0,
|
|
125
|
+
error: error,
|
|
126
|
+
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
127
|
+
});
|
|
128
|
+
(_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
|
|
129
|
+
}
|
|
130
|
+
;
|
|
124
131
|
},
|
|
125
132
|
complete: function () {
|
|
126
133
|
var _a, _b;
|
|
127
|
-
if (
|
|
128
|
-
ref.current.options.onComplete
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
ref.current.options.onSubscriptionComplete
|
|
134
|
+
if (!subscriptionStopped) {
|
|
135
|
+
if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onComplete) {
|
|
136
|
+
ref.current.options.onComplete();
|
|
137
|
+
}
|
|
138
|
+
else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionComplete) {
|
|
139
|
+
ref.current.options.onSubscriptionComplete();
|
|
140
|
+
}
|
|
132
141
|
}
|
|
133
142
|
},
|
|
134
143
|
});
|
|
135
144
|
return function () {
|
|
136
|
-
|
|
145
|
+
subscriptionStopped = true;
|
|
146
|
+
setTimeout(function () {
|
|
147
|
+
subscription.unsubscribe();
|
|
148
|
+
});
|
|
137
149
|
};
|
|
138
150
|
}, [observable]);
|
|
139
151
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSubscription.js","sourceRoot":"","sources":["../../../src/react/hooks/useSubscription.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../utilities/globals';\nimport { useState, useRef, useEffect } from 'react';\nimport { DocumentNode } from 'graphql';\nimport { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { equal } from '@wry/equality';\n\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport {\n NoInfer,\n SubscriptionHookOptions,\n SubscriptionResult\n} from '../types/types';\nimport { OperationVariables } from '../../core';\nimport { useApolloClient } from './useApolloClient';\n\nexport function useSubscription<TData = any, TVariables extends OperationVariables = OperationVariables>(\n subscription: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SubscriptionHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n) {\n const hasIssuedDeprecationWarningRef = useRef(false);\n const client = useApolloClient(options?.client);\n verifyDocumentType(subscription, DocumentType.Subscription);\n const [result, setResult] = useState<SubscriptionResult<TData, TVariables>>({\n loading: !options?.skip,\n error: void 0,\n data: void 0,\n variables: options?.variables,\n });\n\n if (!hasIssuedDeprecationWarningRef.current) {\n hasIssuedDeprecationWarningRef.current = true;\n\n if (options?.onSubscriptionData) {\n invariant.warn(\n options.onData\n ? \"'useSubscription' supports only the 'onSubscriptionData' or 'onData' option, but not both. Only the 'onData' option will be used.\"\n : \"'onSubscriptionData' is deprecated and will be removed in a future major version. Please use the 'onData' option instead.\"\n );\n }\n\n if (options?.onSubscriptionComplete) {\n invariant.warn(\n options.onComplete\n ? \"'useSubscription' supports only the 'onSubscriptionComplete' or 'onComplete' option, but not both. Only the 'onComplete' option will be used.\"\n : \"'onSubscriptionComplete' is deprecated and will be removed in a future major version. Please use the 'onComplete' option instead.\"\n );\n }\n }\n\n const [observable, setObservable] = useState(() => {\n if (options?.skip) {\n return null;\n }\n\n return client.subscribe({\n query: subscription,\n variables: options?.variables,\n fetchPolicy: options?.fetchPolicy,\n context: options?.context,\n });\n });\n\n const canResetObservableRef = useRef(false);\n useEffect(() => {\n return () => {\n canResetObservableRef.current = true;\n };\n }, []);\n\n const ref = useRef({ client, subscription, options });\n useEffect(() => {\n let shouldResubscribe = options?.shouldResubscribe;\n if (typeof shouldResubscribe === 'function') {\n shouldResubscribe = !!shouldResubscribe(options!);\n }\n\n if (options?.skip) {\n if (!options?.skip !== !ref.current.options?.skip || canResetObservableRef.current) {\n setResult({\n loading: false,\n data: void 0,\n error: void 0,\n variables: options?.variables,\n });\n setObservable(null);\n canResetObservableRef.current = false;\n }\n } else if (\n (shouldResubscribe !== false &&\n (client !== ref.current.client ||\n subscription !== ref.current.subscription ||\n options?.fetchPolicy !== ref.current.options?.fetchPolicy ||\n !options?.skip !== !ref.current.options?.skip ||\n !equal(options?.variables, ref.current.options?.variables))) ||\n canResetObservableRef.current\n ) {\n setResult({\n loading: true,\n data: void 0,\n error: void 0,\n variables: options?.variables,\n });\n setObservable(client.subscribe({\n query: subscription,\n variables: options?.variables,\n fetchPolicy: options?.fetchPolicy,\n context: options?.context,\n }));\n canResetObservableRef.current = false;\n }\n\n Object.assign(ref.current, { client, subscription, options });\n }, [client, subscription, options, canResetObservableRef.current]);\n\n useEffect(() => {\n if (!observable) {\n return;\n }\n\n const subscription = observable.subscribe({\n next(fetchResult) {\n const result = {\n loading: false,\n // TODO: fetchResult.data can be null but SubscriptionResult.data\n // expects TData | undefined only\n data: fetchResult.data!,\n error: void 0,\n variables: options?.variables,\n };\n setResult(result);\n\n if (ref.current.options?.onData) {\n ref.current.options.onData({\n client,\n data: result\n });\n } else if (ref.current.options?.onSubscriptionData) {\n ref.current.options.onSubscriptionData({\n client,\n subscriptionData: result\n });\n }\n },\n error(error) {\n setResult({\n loading: false,\n data: void 0,\n error,\n variables: options?.variables,\n });\n ref.current.options?.onError?.(error);\n },\n complete() {\n if (ref.current.options?.onComplete) {\n ref.current.options.onComplete();\n } else if (ref.current.options?.onSubscriptionComplete) {\n ref.current.options.onSubscriptionComplete();\n }\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [observable]);\n\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useSubscription.js","sourceRoot":"","sources":["../../../src/react/hooks/useSubscription.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../utilities/globals';\nimport { useState, useRef, useEffect } from 'react';\nimport { DocumentNode } from 'graphql';\nimport { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { equal } from '@wry/equality';\n\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport {\n NoInfer,\n SubscriptionHookOptions,\n SubscriptionResult\n} from '../types/types';\nimport { OperationVariables } from '../../core';\nimport { useApolloClient } from './useApolloClient';\n\nexport function useSubscription<TData = any, TVariables extends OperationVariables = OperationVariables>(\n subscription: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SubscriptionHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n) {\n const hasIssuedDeprecationWarningRef = useRef(false);\n const client = useApolloClient(options?.client);\n verifyDocumentType(subscription, DocumentType.Subscription);\n const [result, setResult] = useState<SubscriptionResult<TData, TVariables>>({\n loading: !options?.skip,\n error: void 0,\n data: void 0,\n variables: options?.variables,\n });\n\n if (!hasIssuedDeprecationWarningRef.current) {\n hasIssuedDeprecationWarningRef.current = true;\n\n if (options?.onSubscriptionData) {\n invariant.warn(\n options.onData\n ? \"'useSubscription' supports only the 'onSubscriptionData' or 'onData' option, but not both. Only the 'onData' option will be used.\"\n : \"'onSubscriptionData' is deprecated and will be removed in a future major version. Please use the 'onData' option instead.\"\n );\n }\n\n if (options?.onSubscriptionComplete) {\n invariant.warn(\n options.onComplete\n ? \"'useSubscription' supports only the 'onSubscriptionComplete' or 'onComplete' option, but not both. Only the 'onComplete' option will be used.\"\n : \"'onSubscriptionComplete' is deprecated and will be removed in a future major version. Please use the 'onComplete' option instead.\"\n );\n }\n }\n\n const [observable, setObservable] = useState(() => {\n if (options?.skip) {\n return null;\n }\n\n return client.subscribe({\n query: subscription,\n variables: options?.variables,\n fetchPolicy: options?.fetchPolicy,\n context: options?.context,\n });\n });\n\n const canResetObservableRef = useRef(false);\n useEffect(() => {\n return () => {\n canResetObservableRef.current = true;\n };\n }, []);\n\n const ref = useRef({ client, subscription, options });\n useEffect(() => {\n let shouldResubscribe = options?.shouldResubscribe;\n if (typeof shouldResubscribe === 'function') {\n shouldResubscribe = !!shouldResubscribe(options!);\n }\n\n if (options?.skip) {\n if (!options?.skip !== !ref.current.options?.skip || canResetObservableRef.current) {\n setResult({\n loading: false,\n data: void 0,\n error: void 0,\n variables: options?.variables,\n });\n setObservable(null);\n canResetObservableRef.current = false;\n }\n } else if (\n (shouldResubscribe !== false &&\n (client !== ref.current.client ||\n subscription !== ref.current.subscription ||\n options?.fetchPolicy !== ref.current.options?.fetchPolicy ||\n !options?.skip !== !ref.current.options?.skip ||\n !equal(options?.variables, ref.current.options?.variables))) ||\n canResetObservableRef.current\n ) {\n setResult({\n loading: true,\n data: void 0,\n error: void 0,\n variables: options?.variables,\n });\n setObservable(client.subscribe({\n query: subscription,\n variables: options?.variables,\n fetchPolicy: options?.fetchPolicy,\n context: options?.context,\n }));\n canResetObservableRef.current = false;\n }\n\n Object.assign(ref.current, { client, subscription, options });\n }, [client, subscription, options, canResetObservableRef.current]);\n\n useEffect(() => {\n if (!observable) {\n return;\n }\n\n let subscriptionStopped = false;\n const subscription = observable.subscribe({\n next(fetchResult) {\n if (subscriptionStopped) {\n return;\n }\n\n const result = {\n loading: false,\n // TODO: fetchResult.data can be null but SubscriptionResult.data\n // expects TData | undefined only\n data: fetchResult.data!,\n error: void 0,\n variables: options?.variables,\n };\n setResult(result);\n\n if (ref.current.options?.onData) {\n ref.current.options.onData({\n client,\n data: result\n });\n } else if (ref.current.options?.onSubscriptionData) {\n ref.current.options.onSubscriptionData({\n client,\n subscriptionData: result\n });\n }\n },\n error(error) {\n if (!subscriptionStopped) {\n setResult({\n loading: false,\n data: void 0,\n error,\n variables: options?.variables,\n });\n ref.current.options?.onError?.(error);\n };\n },\n complete() {\n if (!subscriptionStopped) {\n if (ref.current.options?.onComplete) {\n ref.current.options.onComplete();\n } else if (ref.current.options?.onSubscriptionComplete) {\n ref.current.options.onSubscriptionComplete();\n }\n }\n },\n });\n\n return () => {\n // immediately stop receiving subscription values, but do not unsubscribe\n // until after a short delay in case another useSubscription hook is\n // reusing the same underlying observable and is about to subscribe\n subscriptionStopped = true;\n setTimeout(() => {\n subscription.unsubscribe();\n });\n };\n }, [observable]);\n\n return result;\n}\n"]}
|
|
@@ -6,7 +6,7 @@ export function useSuspenseCache(override) {
|
|
|
6
6
|
var suspenseCache = override || context.suspenseCache;
|
|
7
7
|
__DEV__ ? invariant(suspenseCache, 'Could not find a "suspenseCache" in the context or passed in as an option. ' +
|
|
8
8
|
'Wrap the root component in an <ApolloProvider> and provide a suspenseCache, ' +
|
|
9
|
-
'or pass a SuspenseCache instance in via options.') : invariant(suspenseCache,
|
|
9
|
+
'or pass a SuspenseCache instance in via options.') : invariant(suspenseCache, 33);
|
|
10
10
|
return suspenseCache;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=useSuspenseCache.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ApolloClient, ApolloError, ApolloQueryResult, DocumentNode, OperationVariables, TypedDocumentNode, NetworkStatus, FetchMoreQueryOptions } from '../../core';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { DeepPartial } from '../../utilities';
|
|
3
|
+
import { SuspenseQueryHookOptions, ObservableQueryFields, NoInfer } from '../types/types';
|
|
4
|
+
export interface UseSuspenseQueryResult<TData = unknown, TVariables extends OperationVariables = OperationVariables> {
|
|
4
5
|
client: ApolloClient<any>;
|
|
5
6
|
data: TData;
|
|
6
7
|
error: ApolloError | undefined;
|
|
@@ -17,6 +18,17 @@ type FetchMoreFunction<TData, TVariables extends OperationVariables> = (fetchMor
|
|
|
17
18
|
}) => Promise<ApolloQueryResult<TData>>;
|
|
18
19
|
type RefetchFunction<TData, TVariables extends OperationVariables> = ObservableQueryFields<TData, TVariables>['refetch'];
|
|
19
20
|
type SubscribeToMoreFunction<TData, TVariables extends OperationVariables> = ObservableQueryFields<TData, TVariables>['subscribeToMore'];
|
|
20
|
-
export declare function useSuspenseQuery_experimental<TData
|
|
21
|
+
export declare function useSuspenseQuery_experimental<TData, TVariables extends OperationVariables, TOptions extends Omit<SuspenseQueryHookOptions<TData>, 'variables'>>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & TOptions): UseSuspenseQueryResult<TOptions['errorPolicy'] extends 'ignore' | 'all' ? TOptions['returnPartialData'] extends true ? DeepPartial<TData> | undefined : TData | undefined : TOptions['returnPartialData'] extends true ? DeepPartial<TData> : TData, TVariables>;
|
|
22
|
+
export declare function useSuspenseQuery_experimental<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
|
|
23
|
+
returnPartialData: true;
|
|
24
|
+
errorPolicy: 'ignore' | 'all';
|
|
25
|
+
}): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;
|
|
26
|
+
export declare function useSuspenseQuery_experimental<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
|
|
27
|
+
errorPolicy: 'ignore' | 'all';
|
|
28
|
+
}): UseSuspenseQueryResult<TData | undefined, TVariables>;
|
|
29
|
+
export declare function useSuspenseQuery_experimental<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
|
|
30
|
+
returnPartialData: true;
|
|
31
|
+
}): UseSuspenseQueryResult<DeepPartial<TData>, TVariables>;
|
|
32
|
+
export declare function useSuspenseQuery_experimental<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>): UseSuspenseQueryResult<TData, TVariables>;
|
|
21
33
|
export {};
|
|
22
34
|
//# sourceMappingURL=useSuspenseQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSuspenseQuery.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSuspenseQuery.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +1,43 @@
|
|
|
1
1
|
import { __assign } from "tslib";
|
|
2
2
|
import { invariant, __DEV__ } from "../../utilities/globals/index.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { ApolloError, NetworkStatus, } from "../../core/index.js";
|
|
3
|
+
import { useRef, useCallback, useMemo, useEffect, useState } from 'react';
|
|
4
|
+
import { ApolloError, } from "../../core/index.js";
|
|
6
5
|
import { isNonEmptyArray } from "../../utilities/index.js";
|
|
7
6
|
import { useApolloClient } from "./useApolloClient.js";
|
|
8
7
|
import { DocumentType, verifyDocumentType } from "../parser/index.js";
|
|
9
8
|
import { useDeepMemo, useStrictModeSafeCleanupEffect, __use } from "./internal/index.js";
|
|
10
9
|
import { useSuspenseCache } from "./useSuspenseCache.js";
|
|
11
|
-
import { useSyncExternalStore } from "./useSyncExternalStore.js";
|
|
12
10
|
import { canonicalStringify } from "../../cache/index.js";
|
|
13
11
|
export function useSuspenseQuery_experimental(query, options) {
|
|
14
12
|
if (options === void 0) { options = Object.create(null); }
|
|
15
|
-
var didPreviouslySuspend = useRef(false);
|
|
16
13
|
var client = useApolloClient(options.client);
|
|
17
14
|
var suspenseCache = useSuspenseCache(options.suspenseCache);
|
|
18
15
|
var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
16
|
+
var variables = watchQueryOptions.variables;
|
|
17
|
+
var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
|
|
18
|
+
var _b = usePromiseVersion(), version = _b[0], setVersion = _b[1];
|
|
22
19
|
var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
|
|
23
20
|
var subscription = suspenseCache.getSubscription(cacheKey, function () {
|
|
24
21
|
return client.watchQuery(watchQueryOptions);
|
|
25
22
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
__use(subscription.promise);
|
|
45
|
-
}
|
|
46
|
-
didPreviouslySuspend.current = true;
|
|
47
|
-
var fetchMore = useCallback(function (options) { return subscription.fetchMore(options); }, [subscription]);
|
|
48
|
-
var refetch = useCallback(function (variables) { return subscription.refetch(variables); }, [subscription]);
|
|
23
|
+
useTrackedSubscriptions(subscription);
|
|
24
|
+
useEffect(function () {
|
|
25
|
+
return subscription.listen(function () {
|
|
26
|
+
setVersion('main');
|
|
27
|
+
});
|
|
28
|
+
}, [subscription]);
|
|
29
|
+
var promise = subscription.promises[version] || subscription.promises.main;
|
|
30
|
+
var result = __use(promise);
|
|
31
|
+
var fetchMore = useCallback(function (options) {
|
|
32
|
+
var promise = subscription.fetchMore(options);
|
|
33
|
+
setVersion('network');
|
|
34
|
+
return promise;
|
|
35
|
+
}, [subscription]);
|
|
36
|
+
var refetch = useCallback(function (variables) {
|
|
37
|
+
var promise = subscription.refetch(variables);
|
|
38
|
+
setVersion('network');
|
|
39
|
+
return promise;
|
|
40
|
+
}, [subscription]);
|
|
49
41
|
var subscribeToMore = useCallback(function (options) { return subscription.observable.subscribeToMore(options); }, [subscription]);
|
|
50
42
|
return useMemo(function () {
|
|
51
43
|
return {
|
|
@@ -73,7 +65,7 @@ function validateFetchPolicy(fetchPolicy) {
|
|
|
73
65
|
'no-cache',
|
|
74
66
|
'cache-and-network',
|
|
75
67
|
];
|
|
76
|
-
__DEV__ ? invariant(supportedFetchPolicies.includes(fetchPolicy), "The fetch policy `".concat(fetchPolicy, "` is not supported with suspense.")) : invariant(supportedFetchPolicies.includes(fetchPolicy),
|
|
68
|
+
__DEV__ ? invariant(supportedFetchPolicies.includes(fetchPolicy), "The fetch policy `".concat(fetchPolicy, "` is not supported with suspense.")) : invariant(supportedFetchPolicies.includes(fetchPolicy), 34);
|
|
77
69
|
}
|
|
78
70
|
function validatePartialDataReturn(fetchPolicy, returnPartialData) {
|
|
79
71
|
if (fetchPolicy === 'no-cache' && returnPartialData) {
|
|
@@ -88,33 +80,23 @@ function toApolloError(result) {
|
|
|
88
80
|
function useTrackedSubscriptions(subscription) {
|
|
89
81
|
var trackedSubscriptions = useRef(new Set());
|
|
90
82
|
trackedSubscriptions.current.add(subscription);
|
|
91
|
-
|
|
83
|
+
useStrictModeSafeCleanupEffect(function () {
|
|
92
84
|
trackedSubscriptions.current.forEach(function (sub) { return sub.dispose(); });
|
|
93
|
-
};
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function usePromiseVersion() {
|
|
88
|
+
var _a = useState({
|
|
89
|
+
version: 'main',
|
|
90
|
+
}), version = _a[0].version, setState = _a[1];
|
|
91
|
+
var setVersion = useCallback(function (version) { return setState({ version: version }); }, []);
|
|
92
|
+
return [version, setVersion];
|
|
94
93
|
}
|
|
95
94
|
function useWatchQueryOptions(_a) {
|
|
96
95
|
var query = _a.query, options = _a.options;
|
|
97
|
-
var watchQueryOptions = useDeepMemo(function () { return (__assign(__assign({}, options), { query: query, notifyOnNetworkStatusChange:
|
|
96
|
+
var watchQueryOptions = useDeepMemo(function () { return (__assign(__assign({}, options), { query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 })); }, [options, query]);
|
|
98
97
|
if (__DEV__) {
|
|
99
98
|
validateOptions(watchQueryOptions);
|
|
100
99
|
}
|
|
101
100
|
return watchQueryOptions;
|
|
102
101
|
}
|
|
103
|
-
function shouldUseCachedResult(result, _a) {
|
|
104
|
-
var returnPartialData = _a.returnPartialData, fetchPolicy = _a.fetchPolicy;
|
|
105
|
-
if (result.networkStatus === NetworkStatus.refetch ||
|
|
106
|
-
result.networkStatus === NetworkStatus.fetchMore ||
|
|
107
|
-
result.networkStatus === NetworkStatus.error) {
|
|
108
|
-
return false;
|
|
109
|
-
}
|
|
110
|
-
switch (fetchPolicy) {
|
|
111
|
-
case void 0:
|
|
112
|
-
case 'cache-first':
|
|
113
|
-
case 'cache-and-network': {
|
|
114
|
-
return Boolean(result.data && (!result.partial || returnPartialData));
|
|
115
|
-
}
|
|
116
|
-
default:
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
102
|
//# sourceMappingURL=useSuspenseQuery.js.map
|