@apollo/client 3.8.0-beta.2 → 3.8.0-beta.4

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.
Files changed (126) hide show
  1. package/apollo-client.cjs +95 -31
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs.map +1 -1
  5. package/cache/core/cache.d.ts +1 -1
  6. package/cache/core/cache.d.ts.map +1 -1
  7. package/cache/core/cache.js.map +1 -1
  8. package/cache/core/types/Cache.d.ts +3 -3
  9. package/cache/core/types/Cache.d.ts.map +1 -1
  10. package/cache/core/types/Cache.js +1 -0
  11. package/cache/core/types/Cache.js.map +1 -1
  12. package/cache/core/types/common.d.ts +17 -6
  13. package/cache/core/types/common.d.ts.map +1 -1
  14. package/cache/core/types/common.js.map +1 -1
  15. package/cache/inmemory/entityStore.d.ts +1 -1
  16. package/cache/inmemory/entityStore.d.ts.map +1 -1
  17. package/cache/inmemory/entityStore.js.map +1 -1
  18. package/cache/inmemory/inMemoryCache.d.ts +1 -1
  19. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  20. package/cache/inmemory/inMemoryCache.js.map +1 -1
  21. package/cache/inmemory/types.d.ts +2 -2
  22. package/cache/inmemory/types.d.ts.map +1 -1
  23. package/cache/inmemory/types.js.map +1 -1
  24. package/core/QueryManager.d.ts.map +1 -1
  25. package/core/QueryManager.js +5 -3
  26. package/core/QueryManager.js.map +1 -1
  27. package/core/core.cjs +5 -4
  28. package/core/core.cjs.map +1 -1
  29. package/core/core.cjs.native.js +5 -4
  30. package/dev/dev.cjs +1 -1
  31. package/dev/dev.cjs.map +1 -1
  32. package/dev/dev.cjs.native.js +1 -1
  33. package/link/batch-http/batch-http.cjs +5 -4
  34. package/link/batch-http/batch-http.cjs.map +1 -1
  35. package/link/batch-http/batch-http.cjs.native.js +5 -4
  36. package/link/batch-http/batchHttpLink.d.ts +1 -1
  37. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  38. package/link/batch-http/batchHttpLink.js +1 -1
  39. package/link/batch-http/batchHttpLink.js.map +1 -1
  40. package/link/http/createHttpLink.js +1 -1
  41. package/link/http/createHttpLink.js.map +1 -1
  42. package/link/http/http.cjs +2 -3
  43. package/link/http/http.cjs.map +1 -1
  44. package/link/http/http.cjs.native.js +2 -3
  45. package/link/http/selectHttpOptionsAndBody.d.ts +1 -1
  46. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  47. package/link/http/selectHttpOptionsAndBody.js +1 -1
  48. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  49. package/link/persisted-queries/index.d.ts +10 -4
  50. package/link/persisted-queries/index.d.ts.map +1 -1
  51. package/link/persisted-queries/index.js +26 -29
  52. package/link/persisted-queries/index.js.map +1 -1
  53. package/link/persisted-queries/persisted-queries.cjs +25 -29
  54. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  55. package/link/persisted-queries/persisted-queries.cjs.native.js +25 -29
  56. package/link/subscriptions/index.js +1 -1
  57. package/link/subscriptions/index.js.map +1 -1
  58. package/link/subscriptions/subscriptions.cjs +2 -3
  59. package/link/subscriptions/subscriptions.cjs.map +1 -1
  60. package/link/subscriptions/subscriptions.cjs.native.js +2 -3
  61. package/link/utils/filterOperationVariables.d.ts +2 -2
  62. package/link/utils/filterOperationVariables.d.ts.map +1 -1
  63. package/link/utils/filterOperationVariables.js +5 -4
  64. package/link/utils/filterOperationVariables.js.map +1 -1
  65. package/link/utils/utils.cjs +4 -3
  66. package/link/utils/utils.cjs.map +1 -1
  67. package/link/utils/utils.cjs.native.js +4 -3
  68. package/package.json +1 -1
  69. package/react/cache/QueryReference.d.ts +3 -1
  70. package/react/cache/QueryReference.d.ts.map +1 -1
  71. package/react/cache/QueryReference.js +12 -0
  72. package/react/cache/QueryReference.js.map +1 -1
  73. package/react/cache/SuspenseCache.d.ts +0 -1
  74. package/react/cache/SuspenseCache.d.ts.map +1 -1
  75. package/react/cache/SuspenseCache.js +10 -10
  76. package/react/cache/SuspenseCache.js.map +1 -1
  77. package/react/hooks/hooks.cjs +51 -12
  78. package/react/hooks/hooks.cjs.map +1 -1
  79. package/react/hooks/hooks.cjs.native.js +51 -12
  80. package/react/hooks/useBackgroundQuery.d.ts +19 -6
  81. package/react/hooks/useBackgroundQuery.d.ts.map +1 -1
  82. package/react/hooks/useBackgroundQuery.js +20 -3
  83. package/react/hooks/useBackgroundQuery.js.map +1 -1
  84. package/react/hooks/useSuspenseQuery.d.ts +12 -5
  85. package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
  86. package/react/hooks/useSuspenseQuery.js +33 -10
  87. package/react/hooks/useSuspenseQuery.js.map +1 -1
  88. package/react/react.cjs +22 -10
  89. package/react/react.cjs.map +1 -1
  90. package/react/react.cjs.native.js +22 -10
  91. package/react/types/types.d.ts +2 -1
  92. package/react/types/types.d.ts.map +1 -1
  93. package/react/types/types.js.map +1 -1
  94. package/testing/core/core.cjs +2 -3
  95. package/testing/core/core.cjs.map +1 -1
  96. package/testing/core/core.cjs.native.js +2 -3
  97. package/testing/core/mocking/mockLink.d.ts.map +1 -1
  98. package/testing/core/mocking/mockLink.js +1 -2
  99. package/testing/core/mocking/mockLink.js.map +1 -1
  100. package/testing/matchers/index.js +2 -0
  101. package/testing/matchers/index.js.map +1 -1
  102. package/testing/matchers/toHaveSuspenseCacheEntryUsing.d.ts +12 -0
  103. package/testing/matchers/toHaveSuspenseCacheEntryUsing.d.ts.map +1 -0
  104. package/testing/matchers/toHaveSuspenseCacheEntryUsing.js +18 -0
  105. package/testing/matchers/toHaveSuspenseCacheEntryUsing.js.map +1 -0
  106. package/testing/matchers/toMatchDocument.d.ts.map +1 -1
  107. package/testing/matchers/toMatchDocument.js +1 -2
  108. package/testing/matchers/toMatchDocument.js.map +1 -1
  109. package/utilities/globals/globals.cjs +1 -1
  110. package/utilities/globals/globals.cjs.map +1 -1
  111. package/utilities/globals/globals.cjs.native.js +1 -1
  112. package/utilities/graphql/print.d.ts +3 -0
  113. package/utilities/graphql/print.d.ts.map +1 -0
  114. package/utilities/graphql/print.js +13 -0
  115. package/utilities/graphql/print.js.map +1 -0
  116. package/utilities/index.d.ts +1 -0
  117. package/utilities/index.d.ts.map +1 -1
  118. package/utilities/index.js +1 -0
  119. package/utilities/index.js.map +1 -1
  120. package/utilities/policies/pagination.d.ts.map +1 -1
  121. package/utilities/policies/pagination.js +3 -0
  122. package/utilities/policies/pagination.js.map +1 -1
  123. package/utilities/utilities.cjs +15 -0
  124. package/utilities/utilities.cjs.map +1 -1
  125. package/utilities/utilities.cjs.native.js +15 -0
  126. package/version.js +1 -1
@@ -759,15 +759,20 @@ function useSuspenseQuery(query, options) {
759
759
  if (options === void 0) { options = Object.create(null); }
760
760
  var client = useApolloClient(options.client);
761
761
  var suspenseCache = useSuspenseCache(options.suspenseCache);
762
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
763
- var variables = watchQueryOptions.variables;
762
+ var watchQueryOptions = useWatchQueryOptions({ client: client, query: query, options: options });
763
+ var fetchPolicy = watchQueryOptions.fetchPolicy, variables = watchQueryOptions.variables;
764
764
  var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
765
765
  var cacheKey = [client, query, cache.canonicalStringify(variables)].concat(queryKey);
766
766
  var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
767
767
  return client.watchQuery(watchQueryOptions);
768
768
  });
769
+ var currentFetchPolicy = queryRef.watchQueryOptions.fetchPolicy;
769
770
  var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
770
771
  var promise = promiseCache.get(queryRef.key);
772
+ if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {
773
+ promise = queryRef.reobserve({ fetchPolicy: fetchPolicy });
774
+ promiseCache.set(queryRef.key, promise);
775
+ }
771
776
  if (!promise) {
772
777
  promise = queryRef.promise;
773
778
  promiseCache.set(queryRef.key, promise);
@@ -780,7 +785,16 @@ function useSuspenseQuery(query, options) {
780
785
  });
781
786
  });
782
787
  }, [queryRef]);
783
- var result = __use(promise);
788
+ var skipResult = React.useMemo(function () {
789
+ var error = toApolloError(queryRef.result);
790
+ return {
791
+ loading: false,
792
+ data: queryRef.result.data,
793
+ networkStatus: error ? core.NetworkStatus.error : core.NetworkStatus.ready,
794
+ error: error,
795
+ };
796
+ }, [queryRef.result]);
797
+ var result = watchQueryOptions.fetchPolicy === 'standby' ? skipResult : __use(promise);
784
798
  var fetchMore = React.useCallback(function (options) {
785
799
  var promise = queryRef.fetchMore(options);
786
800
  setPromiseCache(function (previousPromiseCache) {
@@ -842,26 +856,40 @@ function useTrackedQueryRefs(queryRef) {
842
856
  });
843
857
  }
844
858
  function useWatchQueryOptions(_a) {
845
- var query = _a.query, options = _a.options;
846
- var watchQueryOptions = useDeepMemo(function () { return (tslib.__assign(tslib.__assign({}, options), { query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 })); }, [options, query]);
847
- if (globals.__DEV__) {
848
- validateOptions(watchQueryOptions);
849
- }
850
- return watchQueryOptions;
859
+ var client = _a.client, query = _a.query, options = _a.options;
860
+ return useDeepMemo(function () {
861
+ var _a;
862
+ var fetchPolicy = options.fetchPolicy ||
863
+ ((_a = client.defaultOptions.watchQuery) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
864
+ 'cache-first';
865
+ var watchQueryOptions = tslib.__assign(tslib.__assign({}, options), { fetchPolicy: fetchPolicy, query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 });
866
+ if (globals.__DEV__) {
867
+ validateOptions(watchQueryOptions);
868
+ }
869
+ if (options.skip) {
870
+ watchQueryOptions.fetchPolicy = 'standby';
871
+ }
872
+ return watchQueryOptions;
873
+ }, [client, options, query]);
851
874
  }
852
875
 
853
876
  function useBackgroundQuery(query, options) {
854
877
  if (options === void 0) { options = Object.create(null); }
855
878
  var suspenseCache = useSuspenseCache(options.suspenseCache);
856
879
  var client = useApolloClient(options.client);
857
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
858
- var variables = watchQueryOptions.variables;
880
+ var watchQueryOptions = useWatchQueryOptions({ client: client, query: query, options: options });
881
+ var fetchPolicy = watchQueryOptions.fetchPolicy, variables = watchQueryOptions.variables;
859
882
  var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
860
883
  var cacheKey = [client, query, cache.canonicalStringify(variables)].concat(queryKey);
861
884
  var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
862
885
  return client.watchQuery(watchQueryOptions);
863
886
  });
887
+ var currentFetchPolicy = queryRef.watchQueryOptions.fetchPolicy;
864
888
  var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
889
+ if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {
890
+ var promise = queryRef.reobserve({ fetchPolicy: fetchPolicy });
891
+ promiseCache.set(queryRef.key, promise);
892
+ }
865
893
  useTrackedQueryRefs(queryRef);
866
894
  var fetchMore = React.useCallback(function (options) {
867
895
  var promise = queryRef.fetchMore(options);
@@ -891,6 +919,15 @@ function useBackgroundQuery(query, options) {
891
919
  function useReadQuery(queryRef) {
892
920
  var _a = React.useState(0), forceUpdate = _a[1];
893
921
  globals.invariant(queryRef.promiseCache, 49);
922
+ var skipResult = React.useMemo(function () {
923
+ var error = toApolloError(queryRef.result);
924
+ return {
925
+ loading: false,
926
+ data: queryRef.result.data,
927
+ networkStatus: error ? core.NetworkStatus.error : core.NetworkStatus.ready,
928
+ error: error,
929
+ };
930
+ }, [queryRef.result]);
894
931
  var promise = queryRef.promiseCache.get(queryRef.key);
895
932
  if (!promise) {
896
933
  promise = queryRef.promise;
@@ -902,7 +939,9 @@ function useReadQuery(queryRef) {
902
939
  forceUpdate(function (prevState) { return prevState + 1; });
903
940
  });
904
941
  }, [queryRef]);
905
- var result = __use(promise);
942
+ var result = queryRef.watchQueryOptions.fetchPolicy === 'standby'
943
+ ? skipResult
944
+ : __use(promise);
906
945
  return React.useMemo(function () {
907
946
  return {
908
947
  data: result.data,
@@ -1,18 +1,31 @@
1
1
  import type { DocumentNode, OperationVariables, TypedDocumentNode } from '../../core';
2
+ import { NetworkStatus } from '../../core';
2
3
  import type { QueryReference } from '../cache/QueryReference';
3
- import type { SuspenseQueryHookOptions, ObservableQueryFields } from '../types/types';
4
- import type { FetchMoreFunction } from './useSuspenseQuery';
5
- export type UseBackgroundQueryResult<TData = any, TVariables extends OperationVariables = OperationVariables> = [
4
+ import type { SuspenseQueryHookOptions, NoInfer } from '../types/types';
5
+ import type { FetchMoreFunction, RefetchFunction } from './useSuspenseQuery';
6
+ import type { DeepPartial } from '../../utilities';
7
+ export type UseBackgroundQueryResult<TData = unknown, TVariables extends OperationVariables = OperationVariables> = [
6
8
  QueryReference<TData>,
7
9
  {
8
10
  fetchMore: FetchMoreFunction<TData, TVariables>;
9
- refetch: ObservableQueryFields<TData, TVariables>['refetch'];
11
+ refetch: RefetchFunction<TData, TVariables>;
10
12
  }
11
13
  ];
12
- export declare function useBackgroundQuery<TData = any, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: Omit<SuspenseQueryHookOptions<TData, TVariables>, 'returnPartialData' | 'refetchWritePolicy'>): UseBackgroundQueryResult<TData>;
14
+ export declare function useBackgroundQuery<TData, TVariables extends OperationVariables, TOptions extends Omit<SuspenseQueryHookOptions<TData>, 'variables' | 'returnPartialData' | 'refetchWritePolicy'>>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: Omit<SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>, 'returnPartialData' | 'refetchWritePolicy'> & TOptions): UseBackgroundQueryResult<TOptions['errorPolicy'] extends 'ignore' | 'all' ? TData | undefined : TOptions['skip'] extends boolean ? TData | undefined : TData, TVariables>;
15
+ export declare function useBackgroundQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: Omit<SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>, 'returnPartialData' | 'refetchWritePolicy'> & {
16
+ returnPartialData: true;
17
+ errorPolicy: 'ignore' | 'all';
18
+ }): UseBackgroundQueryResult<DeepPartial<TData> | undefined, TVariables>;
19
+ export declare function useBackgroundQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: Omit<SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>, 'returnPartialData' | 'refetchWritePolicy'> & {
20
+ errorPolicy: 'ignore' | 'all';
21
+ }): UseBackgroundQueryResult<TData | undefined, TVariables>;
22
+ export declare function useBackgroundQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: Omit<SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>, 'returnPartialData' | 'refetchWritePolicy'> & {
23
+ skip: boolean;
24
+ }): UseBackgroundQueryResult<TData | undefined, TVariables>;
25
+ export declare function useBackgroundQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: Omit<SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>, 'returnPartialData' | 'refetchWritePolicy'>): UseBackgroundQueryResult<TData, TVariables>;
13
26
  export declare function useReadQuery<TData>(queryRef: QueryReference<TData>): {
14
27
  data: TData;
15
- networkStatus: import("../../core").NetworkStatus;
28
+ networkStatus: NetworkStatus;
16
29
  error: import("../../errors").ApolloError | undefined;
17
30
  };
18
31
  //# sourceMappingURL=useBackgroundQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBackgroundQuery.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useBackgroundQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EACV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,oBAAoB,CAAC;AAI7E,MAAM,MAAM,wBAAwB,CAClC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,kBAAkB,GAAG,kBAAkB,IACxD;IACF,cAAc,CAAC,KAAK,CAAC;IACrB;QACE,SAAS,EAAE,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAChD,OAAO,EAAE,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;KAC9D;CACF,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,kBAAkB,GAAG,kBAAkB,EAE1D,KAAK,EAAE,YAAY,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,EAC1D,OAAO,GAAE,IAAI,CACX,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,EAC3C,mBAAmB,GAAG,oBAAoB,CACrB,GACtB,wBAAwB,CAAC,KAAK,CAAC,CA0DjC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC;;;;EAiClE"}
1
+ {"version":3,"file":"useBackgroundQuery.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useBackgroundQuery.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { useEffect, useState, useMemo, useCallback } from 'react';
2
+ import { NetworkStatus } from "../../core/index.js";
2
3
  import { useApolloClient } from "./useApolloClient.js";
3
4
  import { __use } from "./internal/index.js";
4
5
  import { useSuspenseCache } from "./useSuspenseCache.js";
@@ -9,14 +10,19 @@ export function useBackgroundQuery(query, options) {
9
10
  if (options === void 0) { options = Object.create(null); }
10
11
  var suspenseCache = useSuspenseCache(options.suspenseCache);
11
12
  var client = useApolloClient(options.client);
12
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
13
- var variables = watchQueryOptions.variables;
13
+ var watchQueryOptions = useWatchQueryOptions({ client: client, query: query, options: options });
14
+ var fetchPolicy = watchQueryOptions.fetchPolicy, variables = watchQueryOptions.variables;
14
15
  var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
15
16
  var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
16
17
  var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
17
18
  return client.watchQuery(watchQueryOptions);
18
19
  });
20
+ var currentFetchPolicy = queryRef.watchQueryOptions.fetchPolicy;
19
21
  var _b = useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
22
+ if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {
23
+ var promise = queryRef.reobserve({ fetchPolicy: fetchPolicy });
24
+ promiseCache.set(queryRef.key, promise);
25
+ }
20
26
  useTrackedQueryRefs(queryRef);
21
27
  var fetchMore = useCallback(function (options) {
22
28
  var promise = queryRef.fetchMore(options);
@@ -46,6 +52,15 @@ export function useBackgroundQuery(query, options) {
46
52
  export function useReadQuery(queryRef) {
47
53
  var _a = useState(0), forceUpdate = _a[1];
48
54
  invariant(queryRef.promiseCache, 49);
55
+ var skipResult = useMemo(function () {
56
+ var error = toApolloError(queryRef.result);
57
+ return {
58
+ loading: false,
59
+ data: queryRef.result.data,
60
+ networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,
61
+ error: error,
62
+ };
63
+ }, [queryRef.result]);
49
64
  var promise = queryRef.promiseCache.get(queryRef.key);
50
65
  if (!promise) {
51
66
  promise = queryRef.promise;
@@ -57,7 +72,9 @@ export function useReadQuery(queryRef) {
57
72
  forceUpdate(function (prevState) { return prevState + 1; });
58
73
  });
59
74
  }, [queryRef]);
60
- var result = __use(promise);
75
+ var result = queryRef.watchQueryOptions.fetchPolicy === 'standby'
76
+ ? skipResult
77
+ : __use(promise);
61
78
  return useMemo(function () {
62
79
  return {
63
80
  data: result.data,
@@ -1 +1 @@
1
- {"version":3,"file":"useBackgroundQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useBackgroundQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState, useMemo, useCallback } from 'react';\nimport type {\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n} from '../../core';\nimport { useApolloClient } from './useApolloClient';\nimport type { QueryReference } from '../cache/QueryReference';\nimport type {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n} from '../types/types';\nimport { __use } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport {\n toApolloError,\n useTrackedQueryRefs,\n useWatchQueryOptions,\n} from './useSuspenseQuery';\nimport type { FetchMoreFunction, RefetchFunction } from './useSuspenseQuery';\nimport { canonicalStringify } from '../../cache';\nimport { invariant } from '../../utilities/globals';\n\nexport type UseBackgroundQueryResult<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n> = [\n QueryReference<TData>,\n {\n fetchMore: FetchMoreFunction<TData, TVariables>;\n refetch: ObservableQueryFields<TData, TVariables>['refetch'];\n }\n];\n\nexport function useBackgroundQuery<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: Omit<\n SuspenseQueryHookOptions<TData, TVariables>,\n 'returnPartialData' | 'refetchWritePolicy'\n > = Object.create(null)\n): UseBackgroundQueryResult<TData> {\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const client = useApolloClient(options.client);\n const watchQueryOptions = useWatchQueryOptions({ query, options });\n const { variables } = watchQueryOptions;\n const { queryKey = [] } = options;\n\n const cacheKey = (\n [client, query, canonicalStringify(variables)] as any[]\n ).concat(queryKey);\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery(watchQueryOptions)\n );\n\n const [promiseCache, setPromiseCache] = useState(\n () => new Map([[queryRef.key, queryRef.promise]])\n );\n\n useTrackedQueryRefs(queryRef);\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = useCallback(\n (options) => {\n const promise = queryRef.fetchMore(options);\n\n setPromiseCache((promiseCache) =>\n new Map(promiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n\n setPromiseCache((promiseCache) =>\n new Map(promiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n queryRef.promiseCache = promiseCache;\n\n return useMemo(() => {\n return [\n queryRef,\n {\n fetchMore,\n refetch,\n },\n ];\n }, [queryRef, fetchMore, refetch]);\n}\n\nexport function useReadQuery<TData>(queryRef: QueryReference<TData>) {\n const [, forceUpdate] = useState(0);\n\n invariant(\n queryRef.promiseCache,\n 'It appears that `useReadQuery` was used outside of `useBackgroundQuery`. ' +\n '`useReadQuery` is only supported for use with `useBackgroundQuery`. ' +\n 'Please ensure you are passing the `queryRef` returned from `useBackgroundQuery`.'\n );\n\n let promise = queryRef.promiseCache.get(queryRef.key);\n\n if (!promise) {\n promise = queryRef.promise;\n queryRef.promiseCache.set(queryRef.key, promise);\n }\n\n useEffect(() => {\n return queryRef.listen((promise) => {\n queryRef.promiseCache!.set(queryRef.key, promise);\n forceUpdate((prevState) => prevState + 1);\n });\n }, [queryRef]);\n\n const result = __use(promise);\n\n return useMemo(() => {\n return {\n data: result.data,\n networkStatus: result.networkStatus,\n error: toApolloError(result),\n };\n }, [result]);\n}\n"]}
1
+ {"version":3,"file":"useBackgroundQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useBackgroundQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState, useMemo, useCallback } from 'react';\nimport type {\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n} from '../../core';\nimport { NetworkStatus } from '../../core';\nimport { useApolloClient } from './useApolloClient';\nimport type { QueryReference } from '../cache/QueryReference';\nimport type { SuspenseQueryHookOptions, NoInfer } from '../types/types';\nimport { __use } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport {\n toApolloError,\n useTrackedQueryRefs,\n useWatchQueryOptions,\n} from './useSuspenseQuery';\nimport type { FetchMoreFunction, RefetchFunction } from './useSuspenseQuery';\nimport { canonicalStringify } from '../../cache';\nimport type { DeepPartial } from '../../utilities';\nimport { invariant } from '../../utilities/globals';\n\nexport type UseBackgroundQueryResult<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n> = [\n QueryReference<TData>,\n {\n fetchMore: FetchMoreFunction<TData, TVariables>;\n refetch: RefetchFunction<TData, TVariables>;\n }\n];\n\nexport function useBackgroundQuery<\n TData,\n TVariables extends OperationVariables,\n TOptions extends Omit<\n SuspenseQueryHookOptions<TData>,\n 'variables' | 'returnPartialData' | 'refetchWritePolicy'\n >\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: Omit<\n SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n 'returnPartialData' | 'refetchWritePolicy'\n > &\n TOptions\n): UseBackgroundQueryResult<\n TOptions['errorPolicy'] extends 'ignore' | 'all'\n ? TData | undefined\n : TOptions['skip'] extends boolean\n ? TData | undefined\n : TData,\n TVariables\n>;\n\nexport function useBackgroundQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: Omit<\n SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n 'returnPartialData' | 'refetchWritePolicy'\n > & {\n returnPartialData: true;\n errorPolicy: 'ignore' | 'all';\n }\n): UseBackgroundQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useBackgroundQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: Omit<\n SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n 'returnPartialData' | 'refetchWritePolicy'\n > & {\n errorPolicy: 'ignore' | 'all';\n }\n): UseBackgroundQueryResult<TData | undefined, TVariables>;\n\nexport function useBackgroundQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: Omit<\n SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n 'returnPartialData' | 'refetchWritePolicy'\n > & {\n skip: boolean;\n }\n): UseBackgroundQueryResult<TData | undefined, TVariables>;\n\n// TODO: support `returnPartialData` | `refetchWritePolicy`\n// see https://github.com/apollographql/apollo-client/issues/10893\n\n// export function useBackgroundQuery<\n// TData = unknown,\n// TVariables extends OperationVariables = OperationVariables\n// >(\n// query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n// options: Omit<\n// SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n// 'returnPartialData' | 'refetchWritePolicy'\n// > & {\n// returnPartialData: true;\n// }\n// ): UseBackgroundQueryResult<DeepPartial<TData>, TVariables>;\n\nexport function useBackgroundQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: Omit<\n SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>,\n 'returnPartialData' | 'refetchWritePolicy'\n >\n): UseBackgroundQueryResult<TData, TVariables>;\n\nexport function useBackgroundQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: Omit<\n SuspenseQueryHookOptions<TData, TVariables>,\n 'returnPartialData' | 'refetchWritePolicy'\n > = Object.create(null)\n): UseBackgroundQueryResult<TData> {\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const client = useApolloClient(options.client);\n const watchQueryOptions = useWatchQueryOptions({ client, query, options });\n const { fetchPolicy, variables } = watchQueryOptions;\n const { queryKey = [] } = options;\n\n const cacheKey = (\n [client, query, canonicalStringify(variables)] as any[]\n ).concat(queryKey);\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery(watchQueryOptions)\n );\n\n const { fetchPolicy: currentFetchPolicy } = queryRef.watchQueryOptions;\n\n const [promiseCache, setPromiseCache] = useState(\n () => new Map([[queryRef.key, queryRef.promise]])\n );\n\n if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {\n const promise = queryRef.reobserve({ fetchPolicy });\n promiseCache.set(queryRef.key, promise);\n }\n\n useTrackedQueryRefs(queryRef);\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = useCallback(\n (options) => {\n const promise = queryRef.fetchMore(options);\n\n setPromiseCache((promiseCache) =>\n new Map(promiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n\n setPromiseCache((promiseCache) =>\n new Map(promiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n queryRef.promiseCache = promiseCache;\n\n return useMemo(() => {\n return [\n queryRef,\n {\n fetchMore,\n refetch,\n },\n ];\n }, [queryRef, fetchMore, refetch]);\n}\n\nexport function useReadQuery<TData>(queryRef: QueryReference<TData>) {\n const [, forceUpdate] = useState(0);\n\n invariant(\n queryRef.promiseCache,\n 'It appears that `useReadQuery` was used outside of `useBackgroundQuery`. ' +\n '`useReadQuery` is only supported for use with `useBackgroundQuery`. ' +\n 'Please ensure you are passing the `queryRef` returned from `useBackgroundQuery`.'\n );\n\n const skipResult = useMemo(() => {\n const error = toApolloError(queryRef.result);\n\n return {\n loading: false,\n data: queryRef.result.data,\n networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,\n error,\n };\n }, [queryRef.result]);\n\n let promise = queryRef.promiseCache.get(queryRef.key);\n\n if (!promise) {\n promise = queryRef.promise;\n queryRef.promiseCache.set(queryRef.key, promise);\n }\n\n useEffect(() => {\n return queryRef.listen((promise) => {\n queryRef.promiseCache!.set(queryRef.key, promise);\n forceUpdate((prevState) => prevState + 1);\n });\n }, [queryRef]);\n\n const result =\n queryRef.watchQueryOptions.fetchPolicy === 'standby'\n ? skipResult\n : __use(promise);\n\n return useMemo(() => {\n return {\n data: result.data,\n networkStatus: result.networkStatus,\n error: toApolloError(result),\n };\n }, [result]);\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { ApolloClient, ApolloQueryResult, DocumentNode, OperationVariables, TypedDocumentNode, WatchQueryOptions, NetworkStatus, FetchMoreQueryOptions } from '../../core';
2
- import { ApolloError } from '../../core';
1
+ import type { ApolloClient, ApolloQueryResult, DocumentNode, OperationVariables, TypedDocumentNode, WatchQueryOptions, FetchMoreQueryOptions } from '../../core';
2
+ import { ApolloError, NetworkStatus } from '../../core';
3
3
  import type { DeepPartial } from '../../utilities';
4
4
  import type { SuspenseQueryHookOptions, ObservableQueryFields, NoInfer } from '../types/types';
5
5
  import type { QueryReference } from '../cache/QueryReference';
@@ -20,8 +20,7 @@ export type FetchMoreFunction<TData, TVariables extends OperationVariables> = (f
20
20
  }) => Promise<ApolloQueryResult<TData>>;
21
21
  export type RefetchFunction<TData, TVariables extends OperationVariables> = ObservableQueryFields<TData, TVariables>['refetch'];
22
22
  export type SubscribeToMoreFunction<TData, TVariables extends OperationVariables> = ObservableQueryFields<TData, TVariables>['subscribeToMore'];
23
- export type Version = 'main' | 'network';
24
- export declare function useSuspenseQuery<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>;
23
+ export declare function useSuspenseQuery<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 ? TOptions['skip'] extends boolean ? DeepPartial<TData> | undefined : DeepPartial<TData> : TOptions['skip'] extends boolean ? TData | undefined : TData, TVariables>;
25
24
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
26
25
  returnPartialData: true;
27
26
  errorPolicy: 'ignore' | 'all';
@@ -29,16 +28,24 @@ export declare function useSuspenseQuery<TData = unknown, TVariables extends Ope
29
28
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
30
29
  errorPolicy: 'ignore' | 'all';
31
30
  }): UseSuspenseQueryResult<TData | undefined, TVariables>;
31
+ export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
32
+ skip: boolean;
33
+ returnPartialData: true;
34
+ }): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;
32
35
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
33
36
  returnPartialData: true;
34
37
  }): UseSuspenseQueryResult<DeepPartial<TData>, TVariables>;
38
+ export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {
39
+ skip: boolean;
40
+ }): UseSuspenseQueryResult<TData | undefined, TVariables>;
35
41
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>): UseSuspenseQueryResult<TData, TVariables>;
36
42
  export declare function toApolloError(result: ApolloQueryResult<any>): ApolloError | undefined;
37
43
  export declare function useTrackedQueryRefs(queryRef: QueryReference): void;
38
44
  interface UseWatchQueryOptionsHookOptions<TData, TVariables extends OperationVariables> {
45
+ client: ApolloClient<unknown>;
39
46
  query: DocumentNode | TypedDocumentNode<TData, TVariables>;
40
47
  options: SuspenseQueryHookOptions<TData, TVariables>;
41
48
  }
42
- export declare function useWatchQueryOptions<TData, TVariables extends OperationVariables>({ query, options, }: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<TVariables, TData>;
49
+ export declare function useWatchQueryOptions<TData, TVariables extends OperationVariables>({ client, query, options, }: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<TVariables, TData>;
43
50
  export {};
44
51
  //# sourceMappingURL=useSuspenseQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSuspenseQuery.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSuspenseQuery.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { __assign } from "tslib";
2
2
  import { invariant, __DEV__ } from "../../utilities/globals/index.js";
3
3
  import { useRef, useCallback, useMemo, useEffect, useState } from 'react';
4
- import { ApolloError } from "../../core/index.js";
4
+ import { ApolloError, NetworkStatus } from "../../core/index.js";
5
5
  import { isNonEmptyArray } from "../../utilities/index.js";
6
6
  import { useApolloClient } from "./useApolloClient.js";
7
7
  import { DocumentType, verifyDocumentType } from "../parser/index.js";
@@ -12,15 +12,20 @@ export function useSuspenseQuery(query, options) {
12
12
  if (options === void 0) { options = Object.create(null); }
13
13
  var client = useApolloClient(options.client);
14
14
  var suspenseCache = useSuspenseCache(options.suspenseCache);
15
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
16
- var variables = watchQueryOptions.variables;
15
+ var watchQueryOptions = useWatchQueryOptions({ client: client, query: query, options: options });
16
+ var fetchPolicy = watchQueryOptions.fetchPolicy, variables = watchQueryOptions.variables;
17
17
  var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
18
18
  var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
19
19
  var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
20
20
  return client.watchQuery(watchQueryOptions);
21
21
  });
22
+ var currentFetchPolicy = queryRef.watchQueryOptions.fetchPolicy;
22
23
  var _b = useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
23
24
  var promise = promiseCache.get(queryRef.key);
25
+ if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {
26
+ promise = queryRef.reobserve({ fetchPolicy: fetchPolicy });
27
+ promiseCache.set(queryRef.key, promise);
28
+ }
24
29
  if (!promise) {
25
30
  promise = queryRef.promise;
26
31
  promiseCache.set(queryRef.key, promise);
@@ -33,7 +38,16 @@ export function useSuspenseQuery(query, options) {
33
38
  });
34
39
  });
35
40
  }, [queryRef]);
36
- var result = __use(promise);
41
+ var skipResult = useMemo(function () {
42
+ var error = toApolloError(queryRef.result);
43
+ return {
44
+ loading: false,
45
+ data: queryRef.result.data,
46
+ networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,
47
+ error: error,
48
+ };
49
+ }, [queryRef.result]);
50
+ var result = watchQueryOptions.fetchPolicy === 'standby' ? skipResult : __use(promise);
37
51
  var fetchMore = useCallback(function (options) {
38
52
  var promise = queryRef.fetchMore(options);
39
53
  setPromiseCache(function (previousPromiseCache) {
@@ -95,11 +109,20 @@ export function useTrackedQueryRefs(queryRef) {
95
109
  });
96
110
  }
97
111
  export function useWatchQueryOptions(_a) {
98
- var query = _a.query, options = _a.options;
99
- var watchQueryOptions = useDeepMemo(function () { return (__assign(__assign({}, options), { query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 })); }, [options, query]);
100
- if (__DEV__) {
101
- validateOptions(watchQueryOptions);
102
- }
103
- return watchQueryOptions;
112
+ var client = _a.client, query = _a.query, options = _a.options;
113
+ return useDeepMemo(function () {
114
+ var _a;
115
+ var fetchPolicy = options.fetchPolicy ||
116
+ ((_a = client.defaultOptions.watchQuery) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
117
+ 'cache-first';
118
+ var watchQueryOptions = __assign(__assign({}, options), { fetchPolicy: fetchPolicy, query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 });
119
+ if (__DEV__) {
120
+ validateOptions(watchQueryOptions);
121
+ }
122
+ if (options.skip) {
123
+ watchQueryOptions.fetchPolicy = 'standby';
124
+ }
125
+ return watchQueryOptions;
126
+ }, [client, options, query]);
104
127
  }
105
128
  //# sourceMappingURL=useSuspenseQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nimport { useRef, useCallback, useMemo, useEffect, useState } from 'react';\nimport type {\n ApolloClient,\n ApolloQueryResult,\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryOptions,\n WatchQueryFetchPolicy,\n NetworkStatus,\n FetchMoreQueryOptions,\n} from '../../core';\nimport { ApolloError } from '../../core';\nimport type { DeepPartial } from '../../utilities';\nimport { isNonEmptyArray } from '../../utilities';\nimport { useApolloClient } from './useApolloClient';\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport type {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n NoInfer,\n} from '../types/types';\nimport { useDeepMemo, useStrictModeSafeCleanupEffect, __use } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport type { QueryReference } from '../cache/QueryReference';\nimport { canonicalStringify } from '../../cache';\n\nexport interface UseSuspenseQueryResult<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: FetchMoreFunction<TData, TVariables>;\n networkStatus: NetworkStatus;\n refetch: RefetchFunction<TData, TVariables>;\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n}\n\nexport type FetchMoreFunction<TData, TVariables extends OperationVariables> = (\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TData;\n variables: TVariables;\n }\n ) => TData;\n }\n) => Promise<ApolloQueryResult<TData>>;\n\nexport type RefetchFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['refetch'];\n\nexport type SubscribeToMoreFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['subscribeToMore'];\n\nexport type Version = 'main' | 'network';\n\nexport function useSuspenseQuery<\n TData,\n TVariables extends OperationVariables,\n TOptions extends Omit<SuspenseQueryHookOptions<TData>, 'variables'>\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> &\n TOptions\n): UseSuspenseQueryResult<\n TOptions['errorPolicy'] extends 'ignore' | 'all'\n ? TOptions['returnPartialData'] extends true\n ? DeepPartial<TData> | undefined\n : TData | undefined\n : TOptions['returnPartialData'] extends true\n ? DeepPartial<TData>\n : TData,\n TVariables\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n errorPolicy: 'ignore' | 'all';\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n errorPolicy: 'ignore' | 'all';\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData>, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>\n): UseSuspenseQueryResult<TData, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<\n NoInfer<TData>,\n NoInfer<TVariables>\n > = Object.create(null)\n): UseSuspenseQueryResult<TData, TVariables> {\n const client = useApolloClient(options.client);\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const watchQueryOptions = useWatchQueryOptions({ query, options });\n const { variables } = watchQueryOptions;\n const { queryKey = [] } = options;\n\n const cacheKey = (\n [client, query, canonicalStringify(variables)] as any[]\n ).concat(queryKey);\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery(watchQueryOptions)\n );\n\n const [promiseCache, setPromiseCache] = useState(\n () => new Map([[queryRef.key, queryRef.promise]])\n );\n\n let promise = promiseCache.get(queryRef.key);\n\n if (!promise) {\n promise = queryRef.promise;\n promiseCache.set(queryRef.key, promise);\n }\n\n useTrackedQueryRefs(queryRef);\n\n useEffect(() => {\n return queryRef.listen((promise) => {\n setPromiseCache((promiseCache) =>\n new Map(promiseCache).set(queryRef.key, promise)\n );\n });\n }, [queryRef]);\n\n const result = __use(promise);\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = useCallback(\n (options) => {\n const promise = queryRef.fetchMore(options);\n\n setPromiseCache((previousPromiseCache) =>\n new Map(previousPromiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n\n setPromiseCache((previousPromiseCache) =>\n new Map(previousPromiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<TData, TVariables> =\n useCallback(\n (options) => queryRef.observable.subscribeToMore(options),\n [queryRef]\n );\n\n return useMemo(() => {\n return {\n client,\n data: result.data,\n error: toApolloError(result),\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n };\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const { query, fetchPolicy, returnPartialData } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(\n fetchPolicy: WatchQueryFetchPolicy = 'cache-first'\n) {\n const supportedFetchPolicies: WatchQueryFetchPolicy[] = [\n 'cache-first',\n 'network-only',\n 'no-cache',\n 'cache-and-network',\n ];\n\n invariant(\n supportedFetchPolicies.includes(fetchPolicy),\n `The fetch policy \\`%s\\` is not supported with suspense.`,\n fetchPolicy\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy | undefined,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === 'no-cache' && returnPartialData) {\n invariant.warn(\n 'Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.'\n );\n }\n}\n\nexport function toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\nexport function useTrackedQueryRefs(queryRef: QueryReference) {\n const trackedQueryRefs = useRef(new Set<QueryReference>());\n\n trackedQueryRefs.current.add(queryRef);\n\n useStrictModeSafeCleanupEffect(() => {\n trackedQueryRefs.current.forEach((sub) => sub.dispose());\n });\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables\n> {\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SuspenseQueryHookOptions<TData, TVariables>;\n}\n\nexport function useWatchQueryOptions<\n TData,\n TVariables extends OperationVariables\n>({\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n const watchQueryOptions = useDeepMemo<WatchQueryOptions<TVariables, TData>>(\n () => ({\n ...options,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n }),\n [options, query]\n );\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n return watchQueryOptions;\n}\n"]}
1
+ {"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nimport { useRef, useCallback, useMemo, useEffect, useState } from 'react';\nimport type {\n ApolloClient,\n ApolloQueryResult,\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryOptions,\n WatchQueryFetchPolicy,\n FetchMoreQueryOptions,\n} from '../../core';\nimport { ApolloError, NetworkStatus } from '../../core';\nimport type { DeepPartial } from '../../utilities';\nimport { isNonEmptyArray } from '../../utilities';\nimport { useApolloClient } from './useApolloClient';\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport type {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n NoInfer,\n} from '../types/types';\nimport { useDeepMemo, useStrictModeSafeCleanupEffect, __use } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport type { QueryReference } from '../cache/QueryReference';\nimport { canonicalStringify } from '../../cache';\n\nexport interface UseSuspenseQueryResult<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: FetchMoreFunction<TData, TVariables>;\n networkStatus: NetworkStatus;\n refetch: RefetchFunction<TData, TVariables>;\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n}\n\nexport type FetchMoreFunction<TData, TVariables extends OperationVariables> = (\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TData;\n variables: TVariables;\n }\n ) => TData;\n }\n) => Promise<ApolloQueryResult<TData>>;\n\nexport type RefetchFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['refetch'];\n\nexport type SubscribeToMoreFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['subscribeToMore'];\n\nexport function useSuspenseQuery<\n TData,\n TVariables extends OperationVariables,\n TOptions extends Omit<SuspenseQueryHookOptions<TData>, 'variables'>\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> &\n TOptions\n): UseSuspenseQueryResult<\n TOptions['errorPolicy'] extends 'ignore' | 'all'\n ? TOptions['returnPartialData'] extends true\n ? DeepPartial<TData> | undefined\n : TData | undefined\n : TOptions['returnPartialData'] extends true\n ? TOptions['skip'] extends boolean\n ? DeepPartial<TData> | undefined\n : DeepPartial<TData>\n : TOptions['skip'] extends boolean\n ? TData | undefined\n : TData,\n TVariables\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n errorPolicy: 'ignore' | 'all';\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n errorPolicy: 'ignore' | 'all';\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n skip: boolean;\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData>, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n skip: boolean;\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>\n): UseSuspenseQueryResult<TData, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<\n NoInfer<TData>,\n NoInfer<TVariables>\n > = Object.create(null)\n): UseSuspenseQueryResult<TData | undefined, TVariables> {\n const client = useApolloClient(options.client);\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const watchQueryOptions = useWatchQueryOptions({ client, query, options });\n const { fetchPolicy, variables } = watchQueryOptions;\n const { queryKey = [] } = options;\n\n const cacheKey = (\n [client, query, canonicalStringify(variables)] as any[]\n ).concat(queryKey);\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery(watchQueryOptions)\n );\n\n const { fetchPolicy: currentFetchPolicy } = queryRef.watchQueryOptions;\n\n const [promiseCache, setPromiseCache] = useState(\n () => new Map([[queryRef.key, queryRef.promise]])\n );\n\n let promise = promiseCache.get(queryRef.key);\n\n if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {\n promise = queryRef.reobserve({ fetchPolicy });\n promiseCache.set(queryRef.key, promise);\n }\n\n if (!promise) {\n promise = queryRef.promise;\n promiseCache.set(queryRef.key, promise);\n }\n\n useTrackedQueryRefs(queryRef);\n\n useEffect(() => {\n return queryRef.listen((promise) => {\n setPromiseCache((promiseCache) =>\n new Map(promiseCache).set(queryRef.key, promise)\n );\n });\n }, [queryRef]);\n\n const skipResult = useMemo(() => {\n const error = toApolloError(queryRef.result);\n\n return {\n loading: false,\n data: queryRef.result.data,\n networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,\n error,\n };\n }, [queryRef.result]);\n\n const result =\n watchQueryOptions.fetchPolicy === 'standby' ? skipResult : __use(promise);\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = useCallback(\n (options) => {\n const promise = queryRef.fetchMore(options);\n\n setPromiseCache((previousPromiseCache) =>\n new Map(previousPromiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n\n setPromiseCache((previousPromiseCache) =>\n new Map(previousPromiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<TData, TVariables> =\n useCallback(\n (options) => queryRef.observable.subscribeToMore(options),\n [queryRef]\n );\n\n return useMemo(() => {\n return {\n client,\n data: result.data,\n error: toApolloError(result),\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n };\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const { query, fetchPolicy, returnPartialData } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(\n fetchPolicy: WatchQueryFetchPolicy = 'cache-first'\n) {\n const supportedFetchPolicies: WatchQueryFetchPolicy[] = [\n 'cache-first',\n 'network-only',\n 'no-cache',\n 'cache-and-network',\n ];\n\n invariant(\n supportedFetchPolicies.includes(fetchPolicy),\n `The fetch policy \\`%s\\` is not supported with suspense.`,\n fetchPolicy\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy | undefined,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === 'no-cache' && returnPartialData) {\n invariant.warn(\n 'Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.'\n );\n }\n}\n\nexport function toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\nexport function useTrackedQueryRefs(queryRef: QueryReference) {\n const trackedQueryRefs = useRef(new Set<QueryReference>());\n\n trackedQueryRefs.current.add(queryRef);\n\n useStrictModeSafeCleanupEffect(() => {\n trackedQueryRefs.current.forEach((sub) => sub.dispose());\n });\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables\n> {\n client: ApolloClient<unknown>;\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SuspenseQueryHookOptions<TData, TVariables>;\n}\n\nexport function useWatchQueryOptions<\n TData,\n TVariables extends OperationVariables\n>({\n client,\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n return useDeepMemo<WatchQueryOptions<TVariables, TData>>(() => {\n const fetchPolicy =\n options.fetchPolicy ||\n client.defaultOptions.watchQuery?.fetchPolicy ||\n 'cache-first';\n\n const watchQueryOptions = {\n ...options,\n fetchPolicy,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n };\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n // Assign the updated fetch policy after our validation since `standby` is\n // not a supported fetch policy on its own without the use of `skip`.\n if (options.skip) {\n watchQueryOptions.fetchPolicy = 'standby';\n }\n\n return watchQueryOptions;\n }, [client, options, query]);\n}\n"]}
package/react/react.cjs CHANGED
@@ -47,6 +47,13 @@ var QueryReference = (function () {
47
47
  }
48
48
  this.autoDisposeTimeoutId = setTimeout(this.dispose, (_a = options.autoDisposeTimeoutMs) !== null && _a !== void 0 ? _a : 30000);
49
49
  }
50
+ Object.defineProperty(QueryReference.prototype, "watchQueryOptions", {
51
+ get: function () {
52
+ return this.observable.options;
53
+ },
54
+ enumerable: false,
55
+ configurable: true
56
+ });
50
57
  QueryReference.prototype.listen = function (listener) {
51
58
  var _this = this;
52
59
  clearTimeout(this.autoDisposeTimeoutId);
@@ -66,6 +73,11 @@ var QueryReference = (function () {
66
73
  this.promise = promise;
67
74
  return promise;
68
75
  };
76
+ QueryReference.prototype.reobserve = function (watchQueryOptions) {
77
+ var promise = this.observable.reobserve(watchQueryOptions);
78
+ this.promise = promise;
79
+ return promise;
80
+ };
69
81
  QueryReference.prototype.dispose = function () {
70
82
  this.subscription.unsubscribe();
71
83
  this.onDispose();
@@ -117,21 +129,21 @@ var QueryReference = (function () {
117
129
  var SuspenseCache = (function () {
118
130
  function SuspenseCache(options) {
119
131
  if (options === void 0) { options = Object.create(null); }
120
- this.cacheKeys = new trie.Trie(utilities.canUseWeakMap, function (cacheKey) { return cacheKey; });
121
- this.queryRefs = new Map();
132
+ this.queryRefs = new trie.Trie(utilities.canUseWeakMap);
122
133
  this.options = options;
123
134
  }
124
135
  SuspenseCache.prototype.getQueryRef = function (cacheKey, createObservable) {
125
- var _this = this;
126
- var stableCacheKey = this.cacheKeys.lookupArray(cacheKey);
127
- if (!this.queryRefs.has(stableCacheKey)) {
128
- this.queryRefs.set(stableCacheKey, new QueryReference(createObservable(), {
129
- key: stableCacheKey,
136
+ var ref = this.queryRefs.lookupArray(cacheKey);
137
+ if (!ref.current) {
138
+ ref.current = new QueryReference(createObservable(), {
139
+ key: cacheKey,
130
140
  autoDisposeTimeoutMs: this.options.autoDisposeTimeoutMs,
131
- onDispose: function () { return _this.queryRefs.delete(stableCacheKey); },
132
- }));
141
+ onDispose: function () {
142
+ delete ref.current;
143
+ },
144
+ });
133
145
  }
134
- return this.queryRefs.get(stableCacheKey);
146
+ return ref.current;
135
147
  };
136
148
  return SuspenseCache;
137
149
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"react.cjs","sources":["cache/QueryReference.js","cache/SuspenseCache.js"],"sourcesContent":["import { __assign } from \"tslib\";\nimport { NetworkStatus, isNetworkRequestSettled } from '../../core';\nimport { createFulfilledPromise, createRejectedPromise } from '../../utilities';\nvar QueryReference = (function () {\n function QueryReference(observable, options) {\n var _this = this;\n var _a;\n this.listeners = new Set();\n this.initialized = false;\n this.refetching = false;\n this.listen = this.listen.bind(this);\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n this.result = observable.getCurrentResult(false);\n this.key = options.key;\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n if (isNetworkRequestSettled(this.result.networkStatus) ||\n (this.result.data &&\n (!this.result.partial || this.observable.options.returnPartialData))) {\n this.promise = createFulfilledPromise(this.result);\n this.initialized = true;\n this.refetching = false;\n }\n this.subscription = observable.subscribe({\n next: this.handleNext,\n error: this.handleError,\n });\n if (!this.promise) {\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n }\n this.autoDisposeTimeoutId = setTimeout(this.dispose, (_a = options.autoDisposeTimeoutMs) !== null && _a !== void 0 ? _a : 30000);\n }\n QueryReference.prototype.listen = function (listener) {\n var _this = this;\n clearTimeout(this.autoDisposeTimeoutId);\n this.listeners.add(listener);\n return function () {\n _this.listeners.delete(listener);\n };\n };\n QueryReference.prototype.refetch = function (variables) {\n this.refetching = true;\n var promise = this.observable.refetch(variables);\n this.promise = promise;\n return promise;\n };\n QueryReference.prototype.fetchMore = function (options) {\n var promise = this.observable.fetchMore(options);\n this.promise = promise;\n return promise;\n };\n QueryReference.prototype.dispose = function () {\n this.subscription.unsubscribe();\n this.onDispose();\n };\n QueryReference.prototype.onDispose = function () {\n };\n QueryReference.prototype.handleNext = function (result) {\n if (!this.initialized || this.refetching) {\n if (!isNetworkRequestSettled(result.networkStatus)) {\n return;\n }\n if (this.result.data && result.data === void 0) {\n result.data = this.result.data;\n }\n this.initialized = true;\n this.refetching = false;\n this.result = result;\n this.resolve(result);\n return;\n }\n if (result.data === this.result.data) {\n return;\n }\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n };\n QueryReference.prototype.handleError = function (error) {\n var result = __assign(__assign({}, this.result), { error: error, networkStatus: NetworkStatus.error });\n this.result = result;\n if (!this.initialized || this.refetching) {\n this.initialized = true;\n this.refetching = false;\n this.reject(error);\n return;\n }\n this.result = result;\n this.promise = result.data\n ? createFulfilledPromise(result)\n : createRejectedPromise(result);\n this.deliver(this.promise);\n };\n QueryReference.prototype.deliver = function (promise) {\n this.listeners.forEach(function (listener) { return listener(promise); });\n };\n return QueryReference;\n}());\nexport { QueryReference };\n//# sourceMappingURL=QueryReference.js.map","import { Trie } from '@wry/trie';\nimport { canUseWeakMap } from '../../utilities';\nimport { QueryReference } from './QueryReference';\nvar SuspenseCache = (function () {\n function SuspenseCache(options) {\n if (options === void 0) { options = Object.create(null); }\n this.cacheKeys = new Trie(canUseWeakMap, function (cacheKey) { return cacheKey; });\n this.queryRefs = new Map();\n this.options = options;\n }\n SuspenseCache.prototype.getQueryRef = function (cacheKey, createObservable) {\n var _this = this;\n var stableCacheKey = this.cacheKeys.lookupArray(cacheKey);\n if (!this.queryRefs.has(stableCacheKey)) {\n this.queryRefs.set(stableCacheKey, new QueryReference(createObservable(), {\n key: stableCacheKey,\n autoDisposeTimeoutMs: this.options.autoDisposeTimeoutMs,\n onDispose: function () { return _this.queryRefs.delete(stableCacheKey); },\n }));\n }\n return this.queryRefs.get(stableCacheKey);\n };\n return SuspenseCache;\n}());\nexport { SuspenseCache };\n//# sourceMappingURL=SuspenseCache.js.map"],"names":["isNetworkRequestSettled","createFulfilledPromise","__assign","NetworkStatus","createRejectedPromise","Trie","canUseWeakMap"],"mappings":"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"}
1
+ {"version":3,"file":"react.cjs","sources":["cache/QueryReference.js","cache/SuspenseCache.js"],"sourcesContent":["import { __assign } from \"tslib\";\nimport { NetworkStatus, isNetworkRequestSettled } from '../../core';\nimport { createFulfilledPromise, createRejectedPromise } from '../../utilities';\nvar QueryReference = (function () {\n function QueryReference(observable, options) {\n var _this = this;\n var _a;\n this.listeners = new Set();\n this.initialized = false;\n this.refetching = false;\n this.listen = this.listen.bind(this);\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n this.result = observable.getCurrentResult(false);\n this.key = options.key;\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n if (isNetworkRequestSettled(this.result.networkStatus) ||\n (this.result.data &&\n (!this.result.partial || this.observable.options.returnPartialData))) {\n this.promise = createFulfilledPromise(this.result);\n this.initialized = true;\n this.refetching = false;\n }\n this.subscription = observable.subscribe({\n next: this.handleNext,\n error: this.handleError,\n });\n if (!this.promise) {\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n }\n this.autoDisposeTimeoutId = setTimeout(this.dispose, (_a = options.autoDisposeTimeoutMs) !== null && _a !== void 0 ? _a : 30000);\n }\n Object.defineProperty(QueryReference.prototype, \"watchQueryOptions\", {\n get: function () {\n return this.observable.options;\n },\n enumerable: false,\n configurable: true\n });\n QueryReference.prototype.listen = function (listener) {\n var _this = this;\n clearTimeout(this.autoDisposeTimeoutId);\n this.listeners.add(listener);\n return function () {\n _this.listeners.delete(listener);\n };\n };\n QueryReference.prototype.refetch = function (variables) {\n this.refetching = true;\n var promise = this.observable.refetch(variables);\n this.promise = promise;\n return promise;\n };\n QueryReference.prototype.fetchMore = function (options) {\n var promise = this.observable.fetchMore(options);\n this.promise = promise;\n return promise;\n };\n QueryReference.prototype.reobserve = function (watchQueryOptions) {\n var promise = this.observable.reobserve(watchQueryOptions);\n this.promise = promise;\n return promise;\n };\n QueryReference.prototype.dispose = function () {\n this.subscription.unsubscribe();\n this.onDispose();\n };\n QueryReference.prototype.onDispose = function () {\n };\n QueryReference.prototype.handleNext = function (result) {\n if (!this.initialized || this.refetching) {\n if (!isNetworkRequestSettled(result.networkStatus)) {\n return;\n }\n if (this.result.data && result.data === void 0) {\n result.data = this.result.data;\n }\n this.initialized = true;\n this.refetching = false;\n this.result = result;\n this.resolve(result);\n return;\n }\n if (result.data === this.result.data) {\n return;\n }\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n };\n QueryReference.prototype.handleError = function (error) {\n var result = __assign(__assign({}, this.result), { error: error, networkStatus: NetworkStatus.error });\n this.result = result;\n if (!this.initialized || this.refetching) {\n this.initialized = true;\n this.refetching = false;\n this.reject(error);\n return;\n }\n this.result = result;\n this.promise = result.data\n ? createFulfilledPromise(result)\n : createRejectedPromise(result);\n this.deliver(this.promise);\n };\n QueryReference.prototype.deliver = function (promise) {\n this.listeners.forEach(function (listener) { return listener(promise); });\n };\n return QueryReference;\n}());\nexport { QueryReference };\n//# sourceMappingURL=QueryReference.js.map","import { Trie } from '@wry/trie';\nimport { canUseWeakMap } from '../../utilities';\nimport { QueryReference } from './QueryReference';\nvar SuspenseCache = (function () {\n function SuspenseCache(options) {\n if (options === void 0) { options = Object.create(null); }\n this.queryRefs = new Trie(canUseWeakMap);\n this.options = options;\n }\n SuspenseCache.prototype.getQueryRef = function (cacheKey, createObservable) {\n var ref = this.queryRefs.lookupArray(cacheKey);\n if (!ref.current) {\n ref.current = new QueryReference(createObservable(), {\n key: cacheKey,\n autoDisposeTimeoutMs: this.options.autoDisposeTimeoutMs,\n onDispose: function () {\n delete ref.current;\n },\n });\n }\n return ref.current;\n };\n return SuspenseCache;\n}());\nexport { SuspenseCache };\n//# sourceMappingURL=SuspenseCache.js.map"],"names":["isNetworkRequestSettled","createFulfilledPromise","__assign","NetworkStatus","createRejectedPromise","Trie","canUseWeakMap"],"mappings":"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"}