@apollo/client 3.8.0-beta.3 → 3.8.0-beta.5

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 (70) hide show
  1. package/apollo-client.cjs +172 -99
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/core/ObservableQuery.d.ts +1 -0
  5. package/core/ObservableQuery.d.ts.map +1 -1
  6. package/core/ObservableQuery.js +17 -4
  7. package/core/ObservableQuery.js.map +1 -1
  8. package/core/core.cjs +18 -5
  9. package/core/core.cjs.map +1 -1
  10. package/core/core.cjs.native.js +18 -5
  11. package/dev/dev.cjs +5 -5
  12. package/dev/dev.cjs.map +1 -1
  13. package/dev/dev.cjs.native.js +5 -5
  14. package/invariantErrorCodes.js +4 -4
  15. package/link/batch-http/batchHttpLink.d.ts +1 -1
  16. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  17. package/link/batch-http/batchHttpLink.js.map +1 -1
  18. package/link/persisted-queries/index.d.ts +10 -4
  19. package/link/persisted-queries/index.d.ts.map +1 -1
  20. package/link/persisted-queries/index.js +25 -28
  21. package/link/persisted-queries/index.js.map +1 -1
  22. package/link/persisted-queries/persisted-queries.cjs +24 -27
  23. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  24. package/link/persisted-queries/persisted-queries.cjs.native.js +24 -27
  25. package/package.json +9 -9
  26. package/react/cache/QueryReference.d.ts +10 -4
  27. package/react/cache/QueryReference.d.ts.map +1 -1
  28. package/react/cache/QueryReference.js +31 -14
  29. package/react/cache/QueryReference.js.map +1 -1
  30. package/react/cache/SuspenseCache.d.ts +2 -2
  31. package/react/cache/SuspenseCache.d.ts.map +1 -1
  32. package/react/cache/SuspenseCache.js +2 -2
  33. package/react/cache/SuspenseCache.js.map +1 -1
  34. package/react/hooks/hooks.cjs +184 -20
  35. package/react/hooks/hooks.cjs.map +1 -1
  36. package/react/hooks/hooks.cjs.native.js +184 -20
  37. package/react/hooks/index.d.ts +2 -1
  38. package/react/hooks/index.d.ts.map +1 -1
  39. package/react/hooks/index.js +2 -1
  40. package/react/hooks/index.js.map +1 -1
  41. package/react/hooks/useBackgroundQuery.d.ts +18 -11
  42. package/react/hooks/useBackgroundQuery.d.ts.map +1 -1
  43. package/react/hooks/useBackgroundQuery.js +12 -30
  44. package/react/hooks/useBackgroundQuery.js.map +1 -1
  45. package/react/hooks/useQuery.js +1 -1
  46. package/react/hooks/useReadQuery.d.ts +8 -0
  47. package/react/hooks/useReadQuery.d.ts.map +1 -0
  48. package/react/hooks/useReadQuery.js +42 -0
  49. package/react/hooks/useReadQuery.js.map +1 -0
  50. package/react/hooks/useSuspenseQuery.d.ts +14 -6
  51. package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
  52. package/react/hooks/useSuspenseQuery.js +33 -10
  53. package/react/hooks/useSuspenseQuery.js.map +1 -1
  54. package/react/react.cjs +30 -14
  55. package/react/react.cjs.map +1 -1
  56. package/react/react.cjs.native.js +30 -14
  57. package/react/types/types.d.ts +7 -1
  58. package/react/types/types.d.ts.map +1 -1
  59. package/react/types/types.js.map +1 -1
  60. package/utilities/globals/globals.cjs +1 -1
  61. package/utilities/globals/globals.cjs.map +1 -1
  62. package/utilities/globals/globals.cjs.native.js +1 -1
  63. package/utilities/index.js.map +1 -1
  64. package/utilities/policies/pagination.d.ts.map +1 -1
  65. package/utilities/policies/pagination.js +3 -0
  66. package/utilities/policies/pagination.js.map +1 -1
  67. package/utilities/utilities.cjs +3 -0
  68. package/utilities/utilities.cjs.map +1 -1
  69. package/utilities/utilities.cjs.native.js +3 -0
  70. package/version.js +1 -1
package/apollo-client.cjs CHANGED
@@ -6,7 +6,7 @@ var tslib = require('tslib');
6
6
  var process$1 = require('ts-invariant/process');
7
7
  var graphql = require('graphql');
8
8
  var equal = require('@wry/equality');
9
- var tsInvariant = require('ts-invariant');
9
+ var invariant$1 = require('ts-invariant');
10
10
  var zenObservableTs = require('zen-observable-ts');
11
11
  require('symbol-observable');
12
12
  var optimism = require('optimism');
@@ -30,10 +30,11 @@ function _interopNamespace(e) {
30
30
  }
31
31
 
32
32
  var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
33
+ var invariant__default = /*#__PURE__*/_interopDefaultLegacy(invariant$1);
33
34
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
35
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
35
36
 
36
- var version = '3.8.0-beta.3';
37
+ var version = '3.8.0-beta.5';
37
38
 
38
39
  function maybe(thunk) {
39
40
  try {
@@ -78,20 +79,20 @@ var invariant = Object.assign(function invariant(condition, message) {
78
79
  args[_i - 2] = arguments[_i];
79
80
  }
80
81
  if (!condition) {
81
- tsInvariant.invariant(condition, getErrorMsg(message, args));
82
+ invariant$1.invariant(condition, getErrorMsg(message, args));
82
83
  }
83
84
  }, {
84
- debug: wrap(tsInvariant.invariant.debug),
85
- log: wrap(tsInvariant.invariant.log),
86
- warn: wrap(tsInvariant.invariant.warn),
87
- error: wrap(tsInvariant.invariant.error),
85
+ debug: wrap(invariant$1.invariant.debug),
86
+ log: wrap(invariant$1.invariant.log),
87
+ warn: wrap(invariant$1.invariant.warn),
88
+ error: wrap(invariant$1.invariant.error),
88
89
  });
89
90
  function newInvariantError(message) {
90
91
  var optionalParams = [];
91
92
  for (var _i = 1; _i < arguments.length; _i++) {
92
93
  optionalParams[_i - 1] = arguments[_i];
93
94
  }
94
- return new tsInvariant.InvariantError(getErrorMsg(message, optionalParams));
95
+ return new invariant$1.InvariantError(getErrorMsg(message, optionalParams));
95
96
  }
96
97
  var ApolloErrorMessageHandler = Symbol.for('ApolloErrorMessageHandler_' + version);
97
98
  function getErrorMsg(message, messageArgs) {
@@ -4622,6 +4623,7 @@ var ObservableQuery = (function (_super) {
4622
4623
  _this.subscriptions = new Set();
4623
4624
  _this.queryInfo = queryInfo;
4624
4625
  _this.queryManager = queryManager;
4626
+ _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);
4625
4627
  _this.isTornDown = false;
4626
4628
  var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? "cache-first" : _d;
4627
4629
  var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? (fetchPolicy === "standby" ? defaultFetchPolicy : fetchPolicy) : _f;
@@ -4672,10 +4674,11 @@ var ObservableQuery = (function (_super) {
4672
4674
  exports.NetworkStatus.ready;
4673
4675
  var result = tslib.__assign(tslib.__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });
4674
4676
  var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? "cache-first" : _a;
4675
- if (fetchPolicy === 'network-only' ||
4676
- fetchPolicy === 'no-cache' ||
4677
- fetchPolicy === 'standby' ||
4677
+ if (skipCacheDataFor(fetchPolicy) ||
4678
4678
  this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) ;
4679
+ else if (this.waitForOwnResult) {
4680
+ this.queryInfo['updateWatch']();
4681
+ }
4679
4682
  else {
4680
4683
  var diff = this.queryInfo.getDiff();
4681
4684
  if (diff.complete || this.options.returnPartialData) {
@@ -5013,13 +5016,21 @@ var ObservableQuery = (function (_super) {
5013
5016
  }
5014
5017
  }
5015
5018
  var fetchOptions = query === options.query ? options : tslib.__assign(tslib.__assign({}, options), { query: query });
5016
- var variables = options.variables && tslib.__assign({}, options.variables);
5019
+ this.waitForOwnResult && (this.waitForOwnResult = skipCacheDataFor(fetchOptions.fetchPolicy));
5020
+ var finishWaitingForOwnResult = function () {
5021
+ if (_this.concast === concast) {
5022
+ _this.waitForOwnResult = false;
5023
+ }
5024
+ };
5025
+ var variables = fetchOptions.variables && tslib.__assign({}, fetchOptions.variables);
5017
5026
  var _a = this.fetch(fetchOptions, newNetworkStatus), concast = _a.concast, fromLink = _a.fromLink;
5018
5027
  var observer = {
5019
5028
  next: function (result) {
5029
+ finishWaitingForOwnResult();
5020
5030
  _this.reportResult(result, variables);
5021
5031
  },
5022
5032
  error: function (error) {
5033
+ finishWaitingForOwnResult();
5023
5034
  _this.reportError(error, variables);
5024
5035
  },
5025
5036
  };
@@ -5103,6 +5114,9 @@ function logMissingFieldErrors(missing) {
5103
5114
  __DEV__ && invariant.debug(23, missing);
5104
5115
  }
5105
5116
  }
5117
+ function skipCacheDataFor(fetchPolicy) {
5118
+ return fetchPolicy === "network-only" || fetchPolicy === "no-cache" || fetchPolicy === "standby";
5119
+ }
5106
5120
 
5107
5121
  var LocalState = (function () {
5108
5122
  function LocalState(_a) {
@@ -7034,7 +7048,7 @@ var InternalState = (function () {
7034
7048
  }
7035
7049
  }
7036
7050
  InternalState.prototype.forceUpdate = function () {
7037
- __DEV__ && invariant.warn(50);
7051
+ __DEV__ && invariant.warn(49);
7038
7052
  };
7039
7053
  InternalState.prototype.executeQuery = function (options) {
7040
7054
  var _this = this;
@@ -7667,15 +7681,20 @@ function useSuspenseQuery(query, options) {
7667
7681
  if (options === void 0) { options = Object.create(null); }
7668
7682
  var client = useApolloClient(options.client);
7669
7683
  var suspenseCache = useSuspenseCache(options.suspenseCache);
7670
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
7671
- var variables = watchQueryOptions.variables;
7684
+ var watchQueryOptions = useWatchQueryOptions({ client: client, query: query, options: options });
7685
+ var fetchPolicy = watchQueryOptions.fetchPolicy, variables = watchQueryOptions.variables;
7672
7686
  var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
7673
7687
  var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
7674
7688
  var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
7675
7689
  return client.watchQuery(watchQueryOptions);
7676
7690
  });
7691
+ var currentFetchPolicy = queryRef.watchQueryOptions.fetchPolicy;
7677
7692
  var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
7678
7693
  var promise = promiseCache.get(queryRef.key);
7694
+ if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {
7695
+ promise = queryRef.reobserve({ fetchPolicy: fetchPolicy });
7696
+ promiseCache.set(queryRef.key, promise);
7697
+ }
7679
7698
  if (!promise) {
7680
7699
  promise = queryRef.promise;
7681
7700
  promiseCache.set(queryRef.key, promise);
@@ -7688,7 +7707,16 @@ function useSuspenseQuery(query, options) {
7688
7707
  });
7689
7708
  });
7690
7709
  }, [queryRef]);
7691
- var result = __use(promise);
7710
+ var skipResult = React.useMemo(function () {
7711
+ var error = toApolloError(queryRef.result);
7712
+ return {
7713
+ loading: false,
7714
+ data: queryRef.result.data,
7715
+ networkStatus: error ? exports.NetworkStatus.error : exports.NetworkStatus.ready,
7716
+ error: error,
7717
+ };
7718
+ }, [queryRef.result]);
7719
+ var result = watchQueryOptions.fetchPolicy === 'standby' ? skipResult : __use(promise);
7692
7720
  var fetchMore = React.useCallback(function (options) {
7693
7721
  var promise = queryRef.fetchMore(options);
7694
7722
  setPromiseCache(function (previousPromiseCache) {
@@ -7750,78 +7778,26 @@ function useTrackedQueryRefs(queryRef) {
7750
7778
  });
7751
7779
  }
7752
7780
  function useWatchQueryOptions(_a) {
7753
- var query = _a.query, options = _a.options;
7754
- var watchQueryOptions = useDeepMemo(function () { return (tslib.__assign(tslib.__assign({}, options), { query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 })); }, [options, query]);
7755
- if (__DEV__) {
7756
- validateOptions(watchQueryOptions);
7757
- }
7758
- return watchQueryOptions;
7759
- }
7760
-
7761
- function useBackgroundQuery(query, options) {
7762
- if (options === void 0) { options = Object.create(null); }
7763
- var suspenseCache = useSuspenseCache(options.suspenseCache);
7764
- var client = useApolloClient(options.client);
7765
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
7766
- var variables = watchQueryOptions.variables;
7767
- var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
7768
- var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
7769
- var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
7770
- return client.watchQuery(watchQueryOptions);
7771
- });
7772
- var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
7773
- useTrackedQueryRefs(queryRef);
7774
- var fetchMore = React.useCallback(function (options) {
7775
- var promise = queryRef.fetchMore(options);
7776
- setPromiseCache(function (promiseCache) {
7777
- return new Map(promiseCache).set(queryRef.key, promise);
7778
- });
7779
- return promise;
7780
- }, [queryRef]);
7781
- var refetch = React.useCallback(function (variables) {
7782
- var promise = queryRef.refetch(variables);
7783
- setPromiseCache(function (promiseCache) {
7784
- return new Map(promiseCache).set(queryRef.key, promise);
7785
- });
7786
- return promise;
7787
- }, [queryRef]);
7788
- queryRef.promiseCache = promiseCache;
7789
- return React.useMemo(function () {
7790
- return [
7791
- queryRef,
7792
- {
7793
- fetchMore: fetchMore,
7794
- refetch: refetch,
7795
- },
7796
- ];
7797
- }, [queryRef, fetchMore, refetch]);
7798
- }
7799
- function useReadQuery(queryRef) {
7800
- var _a = React.useState(0), forceUpdate = _a[1];
7801
- invariant(queryRef.promiseCache, 49);
7802
- var promise = queryRef.promiseCache.get(queryRef.key);
7803
- if (!promise) {
7804
- promise = queryRef.promise;
7805
- queryRef.promiseCache.set(queryRef.key, promise);
7806
- }
7807
- React.useEffect(function () {
7808
- return queryRef.listen(function (promise) {
7809
- queryRef.promiseCache.set(queryRef.key, promise);
7810
- forceUpdate(function (prevState) { return prevState + 1; });
7811
- });
7812
- }, [queryRef]);
7813
- var result = __use(promise);
7814
- return React.useMemo(function () {
7815
- return {
7816
- data: result.data,
7817
- networkStatus: result.networkStatus,
7818
- error: toApolloError(result),
7819
- };
7820
- }, [result]);
7781
+ var client = _a.client, query = _a.query, options = _a.options;
7782
+ return useDeepMemo(function () {
7783
+ var _a;
7784
+ var fetchPolicy = options.fetchPolicy ||
7785
+ ((_a = client.defaultOptions.watchQuery) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
7786
+ 'cache-first';
7787
+ var watchQueryOptions = tslib.__assign(tslib.__assign({}, options), { fetchPolicy: fetchPolicy, query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 });
7788
+ if (__DEV__) {
7789
+ validateOptions(watchQueryOptions);
7790
+ }
7791
+ if (options.skip) {
7792
+ watchQueryOptions.fetchPolicy = 'standby';
7793
+ }
7794
+ return watchQueryOptions;
7795
+ }, [client, options, query]);
7821
7796
  }
7822
7797
 
7823
- var QueryReference = (function () {
7824
- function QueryReference(observable, options) {
7798
+ var QUERY_REFERENCE_SYMBOL = Symbol();
7799
+ var InternalQueryReference = (function () {
7800
+ function InternalQueryReference(observable, options) {
7825
7801
  var _this = this;
7826
7802
  var _a;
7827
7803
  this.listeners = new Set();
@@ -7856,7 +7832,14 @@ var QueryReference = (function () {
7856
7832
  }
7857
7833
  this.autoDisposeTimeoutId = setTimeout(this.dispose, (_a = options.autoDisposeTimeoutMs) !== null && _a !== void 0 ? _a : 30000);
7858
7834
  }
7859
- QueryReference.prototype.listen = function (listener) {
7835
+ Object.defineProperty(InternalQueryReference.prototype, "watchQueryOptions", {
7836
+ get: function () {
7837
+ return this.observable.options;
7838
+ },
7839
+ enumerable: false,
7840
+ configurable: true
7841
+ });
7842
+ InternalQueryReference.prototype.listen = function (listener) {
7860
7843
  var _this = this;
7861
7844
  clearTimeout(this.autoDisposeTimeoutId);
7862
7845
  this.listeners.add(listener);
@@ -7864,24 +7847,29 @@ var QueryReference = (function () {
7864
7847
  _this.listeners.delete(listener);
7865
7848
  };
7866
7849
  };
7867
- QueryReference.prototype.refetch = function (variables) {
7850
+ InternalQueryReference.prototype.refetch = function (variables) {
7868
7851
  this.refetching = true;
7869
7852
  var promise = this.observable.refetch(variables);
7870
7853
  this.promise = promise;
7871
7854
  return promise;
7872
7855
  };
7873
- QueryReference.prototype.fetchMore = function (options) {
7856
+ InternalQueryReference.prototype.fetchMore = function (options) {
7874
7857
  var promise = this.observable.fetchMore(options);
7875
7858
  this.promise = promise;
7876
7859
  return promise;
7877
7860
  };
7878
- QueryReference.prototype.dispose = function () {
7861
+ InternalQueryReference.prototype.reobserve = function (watchQueryOptions) {
7862
+ var promise = this.observable.reobserve(watchQueryOptions);
7863
+ this.promise = promise;
7864
+ return promise;
7865
+ };
7866
+ InternalQueryReference.prototype.dispose = function () {
7879
7867
  this.subscription.unsubscribe();
7880
7868
  this.onDispose();
7881
7869
  };
7882
- QueryReference.prototype.onDispose = function () {
7870
+ InternalQueryReference.prototype.onDispose = function () {
7883
7871
  };
7884
- QueryReference.prototype.handleNext = function (result) {
7872
+ InternalQueryReference.prototype.handleNext = function (result) {
7885
7873
  if (!this.initialized || this.refetching) {
7886
7874
  if (!isNetworkRequestSettled(result.networkStatus)) {
7887
7875
  return;
@@ -7892,7 +7880,9 @@ var QueryReference = (function () {
7892
7880
  this.initialized = true;
7893
7881
  this.refetching = false;
7894
7882
  this.result = result;
7895
- this.resolve(result);
7883
+ if (this.resolve) {
7884
+ this.resolve(result);
7885
+ }
7896
7886
  return;
7897
7887
  }
7898
7888
  if (result.data === this.result.data) {
@@ -7902,13 +7892,15 @@ var QueryReference = (function () {
7902
7892
  this.promise = createFulfilledPromise(result);
7903
7893
  this.deliver(this.promise);
7904
7894
  };
7905
- QueryReference.prototype.handleError = function (error) {
7895
+ InternalQueryReference.prototype.handleError = function (error) {
7906
7896
  var result = tslib.__assign(tslib.__assign({}, this.result), { error: error, networkStatus: exports.NetworkStatus.error });
7907
7897
  this.result = result;
7908
7898
  if (!this.initialized || this.refetching) {
7909
7899
  this.initialized = true;
7910
7900
  this.refetching = false;
7911
- this.reject(error);
7901
+ if (this.reject) {
7902
+ this.reject(error);
7903
+ }
7912
7904
  return;
7913
7905
  }
7914
7906
  this.result = result;
@@ -7917,12 +7909,93 @@ var QueryReference = (function () {
7917
7909
  : createRejectedPromise(result);
7918
7910
  this.deliver(this.promise);
7919
7911
  };
7920
- QueryReference.prototype.deliver = function (promise) {
7912
+ InternalQueryReference.prototype.deliver = function (promise) {
7921
7913
  this.listeners.forEach(function (listener) { return listener(promise); });
7922
7914
  };
7923
- return QueryReference;
7915
+ return InternalQueryReference;
7924
7916
  }());
7925
7917
 
7918
+ function useBackgroundQuery(query, options) {
7919
+ if (options === void 0) { options = Object.create(null); }
7920
+ var suspenseCache = useSuspenseCache(options.suspenseCache);
7921
+ var client = useApolloClient(options.client);
7922
+ var watchQueryOptions = useWatchQueryOptions({ client: client, query: query, options: options });
7923
+ var fetchPolicy = watchQueryOptions.fetchPolicy, variables = watchQueryOptions.variables;
7924
+ var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
7925
+ var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
7926
+ var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
7927
+ return client.watchQuery(watchQueryOptions);
7928
+ });
7929
+ var currentFetchPolicy = queryRef.watchQueryOptions.fetchPolicy;
7930
+ var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
7931
+ if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {
7932
+ var promise = queryRef.reobserve({ fetchPolicy: fetchPolicy });
7933
+ promiseCache.set(queryRef.key, promise);
7934
+ }
7935
+ useTrackedQueryRefs(queryRef);
7936
+ var fetchMore = React.useCallback(function (options) {
7937
+ var promise = queryRef.fetchMore(options);
7938
+ setPromiseCache(function (promiseCache) {
7939
+ return new Map(promiseCache).set(queryRef.key, promise);
7940
+ });
7941
+ return promise;
7942
+ }, [queryRef]);
7943
+ var refetch = React.useCallback(function (variables) {
7944
+ var promise = queryRef.refetch(variables);
7945
+ setPromiseCache(function (promiseCache) {
7946
+ return new Map(promiseCache).set(queryRef.key, promise);
7947
+ });
7948
+ return promise;
7949
+ }, [queryRef]);
7950
+ queryRef.promiseCache = promiseCache;
7951
+ return React.useMemo(function () {
7952
+ var _a;
7953
+ return [
7954
+ (_a = {}, _a[QUERY_REFERENCE_SYMBOL] = queryRef, _a),
7955
+ {
7956
+ fetchMore: fetchMore,
7957
+ refetch: refetch,
7958
+ },
7959
+ ];
7960
+ }, [queryRef, fetchMore, refetch]);
7961
+ }
7962
+
7963
+ function useReadQuery(queryRef) {
7964
+ var _a = React.useState(0), forceUpdate = _a[1];
7965
+ var internalQueryRef = queryRef[QUERY_REFERENCE_SYMBOL];
7966
+ invariant__default(internalQueryRef.promiseCache, 50);
7967
+ var skipResult = React.useMemo(function () {
7968
+ var error = toApolloError(internalQueryRef.result);
7969
+ return {
7970
+ loading: false,
7971
+ data: internalQueryRef.result.data,
7972
+ networkStatus: error ? exports.NetworkStatus.error : exports.NetworkStatus.ready,
7973
+ error: error,
7974
+ };
7975
+ }, [internalQueryRef.result]);
7976
+ var promise = internalQueryRef.promiseCache.get(internalQueryRef.key);
7977
+ if (!promise) {
7978
+ promise = internalQueryRef.promise;
7979
+ internalQueryRef.promiseCache.set(internalQueryRef.key, promise);
7980
+ }
7981
+ React.useEffect(function () {
7982
+ return internalQueryRef.listen(function (promise) {
7983
+ internalQueryRef.promiseCache.set(internalQueryRef.key, promise);
7984
+ forceUpdate(function (prevState) { return prevState + 1; });
7985
+ });
7986
+ }, [queryRef]);
7987
+ var result = internalQueryRef.watchQueryOptions.fetchPolicy === 'standby'
7988
+ ? skipResult
7989
+ : __use(promise);
7990
+ return React.useMemo(function () {
7991
+ return {
7992
+ data: result.data,
7993
+ networkStatus: result.networkStatus,
7994
+ error: toApolloError(result),
7995
+ };
7996
+ }, [result]);
7997
+ }
7998
+
7926
7999
  var SuspenseCache = (function () {
7927
8000
  function SuspenseCache(options) {
7928
8001
  if (options === void 0) { options = Object.create(null); }
@@ -7932,7 +8005,7 @@ var SuspenseCache = (function () {
7932
8005
  SuspenseCache.prototype.getQueryRef = function (cacheKey, createObservable) {
7933
8006
  var ref = this.queryRefs.lookupArray(cacheKey);
7934
8007
  if (!ref.current) {
7935
- ref.current = new QueryReference(createObservable(), {
8008
+ ref.current = new InternalQueryReference(createObservable(), {
7936
8009
  key: cacheKey,
7937
8010
  autoDisposeTimeoutMs: this.options.autoDisposeTimeoutMs,
7938
8011
  onDispose: function () {
@@ -7945,7 +8018,7 @@ var SuspenseCache = (function () {
7945
8018
  return SuspenseCache;
7946
8019
  }());
7947
8020
 
7948
- exports.setLogVerbosity = tsInvariant.setVerbosity;
8021
+ exports.setLogVerbosity = invariant$1.setVerbosity;
7949
8022
  exports.Observable = zenObservableTs.Observable;
7950
8023
  exports.disableExperimentalFragmentVariables = graphqlTag.disableExperimentalFragmentVariables;
7951
8024
  exports.disableFragmentWarnings = graphqlTag.disableFragmentWarnings;