@apollo/client 3.8.0-beta.4 → 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 (53) hide show
  1. package/apollo-client.cjs +130 -108
  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/package.json +9 -9
  16. package/react/cache/QueryReference.d.ts +7 -3
  17. package/react/cache/QueryReference.d.ts.map +1 -1
  18. package/react/cache/QueryReference.js +21 -16
  19. package/react/cache/QueryReference.js.map +1 -1
  20. package/react/cache/SuspenseCache.d.ts +2 -2
  21. package/react/cache/SuspenseCache.d.ts.map +1 -1
  22. package/react/cache/SuspenseCache.js +2 -2
  23. package/react/cache/SuspenseCache.js.map +1 -1
  24. package/react/hooks/hooks.cjs +137 -12
  25. package/react/hooks/hooks.cjs.map +1 -1
  26. package/react/hooks/hooks.cjs.native.js +137 -12
  27. package/react/hooks/index.d.ts +2 -1
  28. package/react/hooks/index.d.ts.map +1 -1
  29. package/react/hooks/index.js +2 -1
  30. package/react/hooks/index.js.map +1 -1
  31. package/react/hooks/useBackgroundQuery.d.ts +16 -13
  32. package/react/hooks/useBackgroundQuery.d.ts.map +1 -1
  33. package/react/hooks/useBackgroundQuery.js +5 -40
  34. package/react/hooks/useBackgroundQuery.js.map +1 -1
  35. package/react/hooks/useQuery.js +1 -1
  36. package/react/hooks/useReadQuery.d.ts +8 -0
  37. package/react/hooks/useReadQuery.d.ts.map +1 -0
  38. package/react/hooks/useReadQuery.js +42 -0
  39. package/react/hooks/useReadQuery.js.map +1 -0
  40. package/react/hooks/useSuspenseQuery.d.ts +2 -2
  41. package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
  42. package/react/hooks/useSuspenseQuery.js.map +1 -1
  43. package/react/react.cjs +20 -16
  44. package/react/react.cjs.map +1 -1
  45. package/react/react.cjs.native.js +20 -16
  46. package/react/types/types.d.ts +6 -0
  47. package/react/types/types.d.ts.map +1 -1
  48. package/react/types/types.js.map +1 -1
  49. package/utilities/globals/globals.cjs +1 -1
  50. package/utilities/globals/globals.cjs.map +1 -1
  51. package/utilities/globals/globals.cjs.native.js +1 -1
  52. package/utilities/index.js.map +1 -1
  53. 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.4';
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;
@@ -7781,86 +7795,9 @@ function useWatchQueryOptions(_a) {
7781
7795
  }, [client, options, query]);
7782
7796
  }
7783
7797
 
7784
- function useBackgroundQuery(query, options) {
7785
- if (options === void 0) { options = Object.create(null); }
7786
- var suspenseCache = useSuspenseCache(options.suspenseCache);
7787
- var client = useApolloClient(options.client);
7788
- var watchQueryOptions = useWatchQueryOptions({ client: client, query: query, options: options });
7789
- var fetchPolicy = watchQueryOptions.fetchPolicy, variables = watchQueryOptions.variables;
7790
- var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
7791
- var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
7792
- var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
7793
- return client.watchQuery(watchQueryOptions);
7794
- });
7795
- var currentFetchPolicy = queryRef.watchQueryOptions.fetchPolicy;
7796
- var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
7797
- if (currentFetchPolicy === 'standby' && fetchPolicy !== currentFetchPolicy) {
7798
- var promise = queryRef.reobserve({ fetchPolicy: fetchPolicy });
7799
- promiseCache.set(queryRef.key, promise);
7800
- }
7801
- useTrackedQueryRefs(queryRef);
7802
- var fetchMore = React.useCallback(function (options) {
7803
- var promise = queryRef.fetchMore(options);
7804
- setPromiseCache(function (promiseCache) {
7805
- return new Map(promiseCache).set(queryRef.key, promise);
7806
- });
7807
- return promise;
7808
- }, [queryRef]);
7809
- var refetch = React.useCallback(function (variables) {
7810
- var promise = queryRef.refetch(variables);
7811
- setPromiseCache(function (promiseCache) {
7812
- return new Map(promiseCache).set(queryRef.key, promise);
7813
- });
7814
- return promise;
7815
- }, [queryRef]);
7816
- queryRef.promiseCache = promiseCache;
7817
- return React.useMemo(function () {
7818
- return [
7819
- queryRef,
7820
- {
7821
- fetchMore: fetchMore,
7822
- refetch: refetch,
7823
- },
7824
- ];
7825
- }, [queryRef, fetchMore, refetch]);
7826
- }
7827
- function useReadQuery(queryRef) {
7828
- var _a = React.useState(0), forceUpdate = _a[1];
7829
- invariant(queryRef.promiseCache, 49);
7830
- var skipResult = React.useMemo(function () {
7831
- var error = toApolloError(queryRef.result);
7832
- return {
7833
- loading: false,
7834
- data: queryRef.result.data,
7835
- networkStatus: error ? exports.NetworkStatus.error : exports.NetworkStatus.ready,
7836
- error: error,
7837
- };
7838
- }, [queryRef.result]);
7839
- var promise = queryRef.promiseCache.get(queryRef.key);
7840
- if (!promise) {
7841
- promise = queryRef.promise;
7842
- queryRef.promiseCache.set(queryRef.key, promise);
7843
- }
7844
- React.useEffect(function () {
7845
- return queryRef.listen(function (promise) {
7846
- queryRef.promiseCache.set(queryRef.key, promise);
7847
- forceUpdate(function (prevState) { return prevState + 1; });
7848
- });
7849
- }, [queryRef]);
7850
- var result = queryRef.watchQueryOptions.fetchPolicy === 'standby'
7851
- ? skipResult
7852
- : __use(promise);
7853
- return React.useMemo(function () {
7854
- return {
7855
- data: result.data,
7856
- networkStatus: result.networkStatus,
7857
- error: toApolloError(result),
7858
- };
7859
- }, [result]);
7860
- }
7861
-
7862
- var QueryReference = (function () {
7863
- function QueryReference(observable, options) {
7798
+ var QUERY_REFERENCE_SYMBOL = Symbol();
7799
+ var InternalQueryReference = (function () {
7800
+ function InternalQueryReference(observable, options) {
7864
7801
  var _this = this;
7865
7802
  var _a;
7866
7803
  this.listeners = new Set();
@@ -7895,14 +7832,14 @@ var QueryReference = (function () {
7895
7832
  }
7896
7833
  this.autoDisposeTimeoutId = setTimeout(this.dispose, (_a = options.autoDisposeTimeoutMs) !== null && _a !== void 0 ? _a : 30000);
7897
7834
  }
7898
- Object.defineProperty(QueryReference.prototype, "watchQueryOptions", {
7835
+ Object.defineProperty(InternalQueryReference.prototype, "watchQueryOptions", {
7899
7836
  get: function () {
7900
7837
  return this.observable.options;
7901
7838
  },
7902
7839
  enumerable: false,
7903
7840
  configurable: true
7904
7841
  });
7905
- QueryReference.prototype.listen = function (listener) {
7842
+ InternalQueryReference.prototype.listen = function (listener) {
7906
7843
  var _this = this;
7907
7844
  clearTimeout(this.autoDisposeTimeoutId);
7908
7845
  this.listeners.add(listener);
@@ -7910,29 +7847,29 @@ var QueryReference = (function () {
7910
7847
  _this.listeners.delete(listener);
7911
7848
  };
7912
7849
  };
7913
- QueryReference.prototype.refetch = function (variables) {
7850
+ InternalQueryReference.prototype.refetch = function (variables) {
7914
7851
  this.refetching = true;
7915
7852
  var promise = this.observable.refetch(variables);
7916
7853
  this.promise = promise;
7917
7854
  return promise;
7918
7855
  };
7919
- QueryReference.prototype.fetchMore = function (options) {
7856
+ InternalQueryReference.prototype.fetchMore = function (options) {
7920
7857
  var promise = this.observable.fetchMore(options);
7921
7858
  this.promise = promise;
7922
7859
  return promise;
7923
7860
  };
7924
- QueryReference.prototype.reobserve = function (watchQueryOptions) {
7861
+ InternalQueryReference.prototype.reobserve = function (watchQueryOptions) {
7925
7862
  var promise = this.observable.reobserve(watchQueryOptions);
7926
7863
  this.promise = promise;
7927
7864
  return promise;
7928
7865
  };
7929
- QueryReference.prototype.dispose = function () {
7866
+ InternalQueryReference.prototype.dispose = function () {
7930
7867
  this.subscription.unsubscribe();
7931
7868
  this.onDispose();
7932
7869
  };
7933
- QueryReference.prototype.onDispose = function () {
7870
+ InternalQueryReference.prototype.onDispose = function () {
7934
7871
  };
7935
- QueryReference.prototype.handleNext = function (result) {
7872
+ InternalQueryReference.prototype.handleNext = function (result) {
7936
7873
  if (!this.initialized || this.refetching) {
7937
7874
  if (!isNetworkRequestSettled(result.networkStatus)) {
7938
7875
  return;
@@ -7943,7 +7880,9 @@ var QueryReference = (function () {
7943
7880
  this.initialized = true;
7944
7881
  this.refetching = false;
7945
7882
  this.result = result;
7946
- this.resolve(result);
7883
+ if (this.resolve) {
7884
+ this.resolve(result);
7885
+ }
7947
7886
  return;
7948
7887
  }
7949
7888
  if (result.data === this.result.data) {
@@ -7953,13 +7892,15 @@ var QueryReference = (function () {
7953
7892
  this.promise = createFulfilledPromise(result);
7954
7893
  this.deliver(this.promise);
7955
7894
  };
7956
- QueryReference.prototype.handleError = function (error) {
7895
+ InternalQueryReference.prototype.handleError = function (error) {
7957
7896
  var result = tslib.__assign(tslib.__assign({}, this.result), { error: error, networkStatus: exports.NetworkStatus.error });
7958
7897
  this.result = result;
7959
7898
  if (!this.initialized || this.refetching) {
7960
7899
  this.initialized = true;
7961
7900
  this.refetching = false;
7962
- this.reject(error);
7901
+ if (this.reject) {
7902
+ this.reject(error);
7903
+ }
7963
7904
  return;
7964
7905
  }
7965
7906
  this.result = result;
@@ -7968,12 +7909,93 @@ var QueryReference = (function () {
7968
7909
  : createRejectedPromise(result);
7969
7910
  this.deliver(this.promise);
7970
7911
  };
7971
- QueryReference.prototype.deliver = function (promise) {
7912
+ InternalQueryReference.prototype.deliver = function (promise) {
7972
7913
  this.listeners.forEach(function (listener) { return listener(promise); });
7973
7914
  };
7974
- return QueryReference;
7915
+ return InternalQueryReference;
7975
7916
  }());
7976
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
+
7977
7999
  var SuspenseCache = (function () {
7978
8000
  function SuspenseCache(options) {
7979
8001
  if (options === void 0) { options = Object.create(null); }
@@ -7983,7 +8005,7 @@ var SuspenseCache = (function () {
7983
8005
  SuspenseCache.prototype.getQueryRef = function (cacheKey, createObservable) {
7984
8006
  var ref = this.queryRefs.lookupArray(cacheKey);
7985
8007
  if (!ref.current) {
7986
- ref.current = new QueryReference(createObservable(), {
8008
+ ref.current = new InternalQueryReference(createObservable(), {
7987
8009
  key: cacheKey,
7988
8010
  autoDisposeTimeoutMs: this.options.autoDisposeTimeoutMs,
7989
8011
  onDispose: function () {
@@ -7996,7 +8018,7 @@ var SuspenseCache = (function () {
7996
8018
  return SuspenseCache;
7997
8019
  }());
7998
8020
 
7999
- exports.setLogVerbosity = tsInvariant.setVerbosity;
8021
+ exports.setLogVerbosity = invariant$1.setVerbosity;
8000
8022
  exports.Observable = zenObservableTs.Observable;
8001
8023
  exports.disableExperimentalFragmentVariables = graphqlTag.disableExperimentalFragmentVariables;
8002
8024
  exports.disableFragmentWarnings = graphqlTag.disableFragmentWarnings;