@apollo/client 3.7.10 → 3.7.11

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 (66) hide show
  1. package/apollo-client.cjs +177 -145
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/core/ApolloClient.d.ts.map +1 -1
  5. package/core/ApolloClient.js.map +1 -1
  6. package/core/ObservableQuery.d.ts +2 -1
  7. package/core/ObservableQuery.d.ts.map +1 -1
  8. package/core/ObservableQuery.js +8 -5
  9. package/core/ObservableQuery.js.map +1 -1
  10. package/core/QueryManager.d.ts +1 -0
  11. package/core/QueryManager.d.ts.map +1 -1
  12. package/core/QueryManager.js +52 -43
  13. package/core/QueryManager.js.map +1 -1
  14. package/core/core.cjs +63 -52
  15. package/core/core.cjs.map +1 -1
  16. package/core/core.cjs.native.js +63 -52
  17. package/errors/errors.cjs +17 -17
  18. package/errors/errors.cjs.map +1 -1
  19. package/errors/errors.cjs.native.js +17 -17
  20. package/errors/index.d.ts +24 -8
  21. package/errors/index.d.ts.map +1 -1
  22. package/errors/index.js +17 -19
  23. package/errors/index.js.map +1 -1
  24. package/invariantErrorCodes.js +1 -1
  25. package/link/core/types.d.ts +4 -0
  26. package/link/core/types.d.ts.map +1 -1
  27. package/link/core/types.js.map +1 -1
  28. package/link/http/createHttpLink.d.ts.map +1 -1
  29. package/link/http/createHttpLink.js +19 -3
  30. package/link/http/createHttpLink.js.map +1 -1
  31. package/link/http/http.cjs +52 -15
  32. package/link/http/http.cjs.map +1 -1
  33. package/link/http/http.cjs.native.js +52 -15
  34. package/link/http/parseAndCheckHttpResponse.d.ts.map +1 -1
  35. package/link/http/parseAndCheckHttpResponse.js +29 -14
  36. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  37. package/link/subscriptions/index.d.ts.map +1 -1
  38. package/link/subscriptions/index.js +8 -3
  39. package/link/subscriptions/index.js.map +1 -1
  40. package/link/subscriptions/subscriptions.cjs +8 -3
  41. package/link/subscriptions/subscriptions.cjs.map +1 -1
  42. package/link/subscriptions/subscriptions.cjs.native.js +8 -3
  43. package/package.json +18 -19
  44. package/react/hooks/hooks.cjs +36 -44
  45. package/react/hooks/hooks.cjs.map +1 -1
  46. package/react/hooks/hooks.cjs.native.js +36 -44
  47. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  48. package/react/hooks/useLazyQuery.js +11 -20
  49. package/react/hooks/useLazyQuery.js.map +1 -1
  50. package/react/hooks/useQuery.d.ts +1 -3
  51. package/react/hooks/useQuery.d.ts.map +1 -1
  52. package/react/hooks/useQuery.js +27 -26
  53. package/react/hooks/useQuery.js.map +1 -1
  54. package/testing/core/itAsync.js.map +1 -1
  55. package/testing/core/mocking/mockSubscriptionLink.d.ts +1 -1
  56. package/testing/react/MockedProvider.js +5 -4
  57. package/testing/react/MockedProvider.js.map +1 -1
  58. package/testing/testing.cjs +4 -2
  59. package/testing/testing.cjs.map +1 -1
  60. package/testing/testing.cjs.native.js +4 -2
  61. package/utilities/common/incrementalResult.d.ts +2 -1
  62. package/utilities/common/incrementalResult.d.ts.map +1 -1
  63. package/utilities/common/incrementalResult.js +4 -0
  64. package/utilities/common/incrementalResult.js.map +1 -1
  65. package/utilities/utilities.cjs.map +1 -1
  66. package/version.js +1 -1
package/apollo-client.cjs CHANGED
@@ -1075,6 +1075,9 @@ function isExecutionPatchResult(value) {
1075
1075
  return (isExecutionPatchIncrementalResult(value) ||
1076
1076
  isExecutionPatchInitialResult(value));
1077
1077
  }
1078
+ function isApolloPayloadResult(value) {
1079
+ return isNonNullObject(value) && "payload" in value;
1080
+ }
1078
1081
  function mergeIncrementalData(prevResult, result) {
1079
1082
  var mergedData = prevResult;
1080
1083
  var merger = new DeepMerger();
@@ -1357,7 +1360,7 @@ var concat = ApolloLink.concat;
1357
1360
 
1358
1361
  var execute = ApolloLink.execute;
1359
1362
 
1360
- var version = '3.7.10';
1363
+ var version = '3.7.11';
1361
1364
 
1362
1365
  function isNodeResponse(value) {
1363
1366
  return !!value.body;
@@ -1522,20 +1525,56 @@ function responseIterator(response) {
1522
1525
  throw new Error("Unknown body type for responseIterator. Please pass a streamable response.");
1523
1526
  }
1524
1527
 
1528
+ var PROTOCOL_ERRORS_SYMBOL = Symbol();
1529
+ function graphQLResultHasProtocolErrors(result) {
1530
+ if (result.extensions) {
1531
+ return Array.isArray(result.extensions[PROTOCOL_ERRORS_SYMBOL]);
1532
+ }
1533
+ return false;
1534
+ }
1535
+ function isApolloError(err) {
1536
+ return err.hasOwnProperty('graphQLErrors');
1537
+ }
1538
+ var generateErrorMessage = function (err) {
1539
+ var errors = tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([], err.graphQLErrors, true), err.clientErrors, true), err.protocolErrors, true);
1540
+ if (err.networkError)
1541
+ errors.push(err.networkError);
1542
+ return errors
1543
+ .map(function (err) { return isNonNullObject(err) && err.message || 'Error message not found.'; })
1544
+ .join('\n');
1545
+ };
1546
+ var ApolloError = (function (_super) {
1547
+ tslib.__extends(ApolloError, _super);
1548
+ function ApolloError(_a) {
1549
+ var graphQLErrors = _a.graphQLErrors, protocolErrors = _a.protocolErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;
1550
+ var _this = _super.call(this, errorMessage) || this;
1551
+ _this.name = 'ApolloError';
1552
+ _this.graphQLErrors = graphQLErrors || [];
1553
+ _this.protocolErrors = protocolErrors || [];
1554
+ _this.clientErrors = clientErrors || [];
1555
+ _this.networkError = networkError || null;
1556
+ _this.message = errorMessage || generateErrorMessage(_this);
1557
+ _this.extraInfo = extraInfo;
1558
+ _this.__proto__ = ApolloError.prototype;
1559
+ return _this;
1560
+ }
1561
+ return ApolloError;
1562
+ }(Error));
1563
+
1525
1564
  var hasOwnProperty$3 = Object.prototype.hasOwnProperty;
1526
1565
  function readMultipartBody(response, observer) {
1527
- var _a, _b, _c;
1566
+ var _a, _b, _c, _d;
1528
1567
  return tslib.__awaiter(this, void 0, void 0, function () {
1529
- var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _d, value, done, chunk, bi, message, i, headers, contentType_1, body, result;
1530
- var _e;
1531
- return tslib.__generator(this, function (_f) {
1532
- switch (_f.label) {
1568
+ var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _e, value, done, chunk, bi, message, i, headers, contentType_1, body, result, next;
1569
+ var _f, _g;
1570
+ return tslib.__generator(this, function (_h) {
1571
+ switch (_h.label) {
1533
1572
  case 0:
1534
1573
  if (TextDecoder === undefined) {
1535
1574
  throw new Error("TextDecoder must be defined in the environment: please import a polyfill.");
1536
1575
  }
1537
1576
  decoder = new TextDecoder("utf-8");
1538
- contentType = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type');
1577
+ contentType = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get("content-type");
1539
1578
  delimiter = "boundary=";
1540
1579
  boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter))
1541
1580
  ? contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['"]/g, "").replace(/\;(.*)/gm, "").trim()
@@ -1544,22 +1583,22 @@ function readMultipartBody(response, observer) {
1544
1583
  buffer = "";
1545
1584
  iterator = responseIterator(response);
1546
1585
  running = true;
1547
- _f.label = 1;
1586
+ _h.label = 1;
1548
1587
  case 1:
1549
1588
  if (!running) return [3, 3];
1550
1589
  return [4, iterator.next()];
1551
1590
  case 2:
1552
- _d = _f.sent(), value = _d.value, done = _d.done;
1591
+ _e = _h.sent(), value = _e.value, done = _e.done;
1553
1592
  chunk = typeof value === "string" ? value : decoder.decode(value);
1554
1593
  running = !done;
1555
1594
  buffer += chunk;
1556
1595
  bi = buffer.indexOf(boundary);
1557
1596
  while (bi > -1) {
1558
1597
  message = void 0;
1559
- _e = [
1598
+ _f = [
1560
1599
  buffer.slice(0, bi),
1561
1600
  buffer.slice(bi + boundary.length),
1562
- ], message = _e[0], buffer = _e[1];
1601
+ ], message = _f[0], buffer = _f[1];
1563
1602
  if (message.trim()) {
1564
1603
  i = message.indexOf("\r\n\r\n");
1565
1604
  headers = parseHeaders(message.slice(0, i));
@@ -1574,8 +1613,21 @@ function readMultipartBody(response, observer) {
1574
1613
  if (Object.keys(result).length > 1 ||
1575
1614
  "data" in result ||
1576
1615
  "incremental" in result ||
1577
- "errors" in result) {
1578
- (_b = observer.next) === null || _b === void 0 ? void 0 : _b.call(observer, result);
1616
+ "errors" in result ||
1617
+ "payload" in result) {
1618
+ if (isApolloPayloadResult(result)) {
1619
+ next = {};
1620
+ if ("payload" in result) {
1621
+ next = tslib.__assign({}, result.payload);
1622
+ }
1623
+ if ("errors" in result) {
1624
+ next = tslib.__assign(tslib.__assign({}, next), { extensions: tslib.__assign(tslib.__assign({}, ("extensions" in next ? next.extensions : null)), (_g = {}, _g[PROTOCOL_ERRORS_SYMBOL] = result.errors, _g)) });
1625
+ }
1626
+ (_b = observer.next) === null || _b === void 0 ? void 0 : _b.call(observer, next);
1627
+ }
1628
+ else {
1629
+ (_c = observer.next) === null || _c === void 0 ? void 0 : _c.call(observer, result);
1630
+ }
1579
1631
  }
1580
1632
  }
1581
1633
  catch (err) {
@@ -1586,7 +1638,7 @@ function readMultipartBody(response, observer) {
1586
1638
  }
1587
1639
  return [3, 1];
1588
1640
  case 3:
1589
- (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);
1641
+ (_d = observer.complete) === null || _d === void 0 ? void 0 : _d.call(observer);
1590
1642
  return [2];
1591
1643
  }
1592
1644
  });
@@ -1884,13 +1936,28 @@ var createHttpLink = function (linkOptions) {
1884
1936
  var definitionIsMutation = function (d) {
1885
1937
  return d.kind === 'OperationDefinition' && d.operation === 'mutation';
1886
1938
  };
1939
+ var definitionIsSubscription = function (d) {
1940
+ return d.kind === 'OperationDefinition' && d.operation === 'subscription';
1941
+ };
1942
+ var isSubscription = definitionIsSubscription(getMainDefinition(operation.query));
1943
+ var hasDefer = hasDirectives(['defer'], operation.query);
1887
1944
  if (useGETForQueries &&
1888
1945
  !operation.query.definitions.some(definitionIsMutation)) {
1889
1946
  options.method = 'GET';
1890
1947
  }
1891
- if (hasDirectives(['defer'], operation.query)) {
1948
+ if (hasDefer || isSubscription) {
1892
1949
  options.headers = options.headers || {};
1893
- options.headers.accept = "multipart/mixed; deferSpec=20220824, application/json";
1950
+ var acceptHeader = "multipart/mixed;";
1951
+ if (isSubscription && hasDefer) {
1952
+ __DEV__ && tsInvariant.invariant.warn("Multipart-subscriptions do not support @defer");
1953
+ }
1954
+ if (isSubscription) {
1955
+ acceptHeader += 'boundary=graphql;subscriptionSpec=1.0,application/json';
1956
+ }
1957
+ else if (hasDefer) {
1958
+ acceptHeader += 'deferSpec=20220824,application/json';
1959
+ }
1960
+ options.headers.accept = acceptHeader;
1894
1961
  }
1895
1962
  if (options.method === 'GET') {
1896
1963
  var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;
@@ -4230,44 +4297,6 @@ var InMemoryCache = (function (_super) {
4230
4297
  return InMemoryCache;
4231
4298
  }(ApolloCache));
4232
4299
 
4233
- function isApolloError(err) {
4234
- return err.hasOwnProperty('graphQLErrors');
4235
- }
4236
- var generateErrorMessage = function (err) {
4237
- var message = '';
4238
- if (isNonEmptyArray(err.graphQLErrors) || isNonEmptyArray(err.clientErrors)) {
4239
- var errors = (err.graphQLErrors || [])
4240
- .concat(err.clientErrors || []);
4241
- errors.forEach(function (error) {
4242
- var errorMessage = error
4243
- ? error.message
4244
- : 'Error message not found.';
4245
- message += "".concat(errorMessage, "\n");
4246
- });
4247
- }
4248
- if (err.networkError) {
4249
- message += "".concat(err.networkError.message, "\n");
4250
- }
4251
- message = message.replace(/\n$/, '');
4252
- return message;
4253
- };
4254
- var ApolloError = (function (_super) {
4255
- tslib.__extends(ApolloError, _super);
4256
- function ApolloError(_a) {
4257
- var graphQLErrors = _a.graphQLErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;
4258
- var _this = _super.call(this, errorMessage) || this;
4259
- _this.name = 'ApolloError';
4260
- _this.graphQLErrors = graphQLErrors || [];
4261
- _this.clientErrors = clientErrors || [];
4262
- _this.networkError = networkError || null;
4263
- _this.message = errorMessage || generateErrorMessage(_this);
4264
- _this.extraInfo = extraInfo;
4265
- _this.__proto__ = ApolloError.prototype;
4266
- return _this;
4267
- }
4268
- return ApolloError;
4269
- }(Error));
4270
-
4271
4300
  exports.NetworkStatus = void 0;
4272
4301
  (function (NetworkStatus) {
4273
4302
  NetworkStatus[NetworkStatus["loading"] = 1] = "loading";
@@ -4614,7 +4643,7 @@ var ObservableQuery = (function (_super) {
4614
4643
  };
4615
4644
  ObservableQuery.prototype.fetch = function (options, newNetworkStatus) {
4616
4645
  this.queryManager.setObservableQuery(this);
4617
- return this.queryManager.fetchQueryObservable(this.queryId, options, newNetworkStatus);
4646
+ return this.queryManager['fetchConcastWithInfo'](this.queryId, options, newNetworkStatus);
4618
4647
  };
4619
4648
  ObservableQuery.prototype.updatePolling = function () {
4620
4649
  var _this = this;
@@ -4667,7 +4696,7 @@ var ObservableQuery = (function (_super) {
4667
4696
  }
4668
4697
  return this.last;
4669
4698
  };
4670
- ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {
4699
+ ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {
4671
4700
  var _this = this;
4672
4701
  this.isTornDown = false;
4673
4702
  var useDisposableConcast = newNetworkStatus === exports.NetworkStatus.refetch ||
@@ -4693,7 +4722,7 @@ var ObservableQuery = (function (_super) {
4693
4722
  }
4694
4723
  }
4695
4724
  var variables = options.variables && tslib.__assign({}, options.variables);
4696
- var concast = this.fetch(options, newNetworkStatus);
4725
+ var _a = this.fetch(options, newNetworkStatus), concast = _a.concast, fromLink = _a.fromLink;
4697
4726
  var observer = {
4698
4727
  next: function (result) {
4699
4728
  _this.reportResult(result, variables);
@@ -4702,7 +4731,7 @@ var ObservableQuery = (function (_super) {
4702
4731
  _this.reportError(error, variables);
4703
4732
  },
4704
4733
  };
4705
- if (!useDisposableConcast) {
4734
+ if (!useDisposableConcast && fromLink) {
4706
4735
  if (this.concast && this.observer) {
4707
4736
  this.concast.removeObserver(this.observer);
4708
4737
  }
@@ -4710,7 +4739,10 @@ var ObservableQuery = (function (_super) {
4710
4739
  this.observer = observer;
4711
4740
  }
4712
4741
  concast.addObserver(observer);
4713
- return concast.promise;
4742
+ return concast;
4743
+ };
4744
+ ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {
4745
+ return this.reobserveAsConcast(newOptions, newNetworkStatus).promise;
4714
4746
  };
4715
4747
  ObservableQuery.prototype.observe = function () {
4716
4748
  this.reportResult(this.getCurrentResult(false), this.variables);
@@ -5881,10 +5913,17 @@ var QueryManager = (function () {
5881
5913
  }
5882
5914
  _this.broadcastQueries();
5883
5915
  }
5884
- if (graphQLResultHasError(result)) {
5885
- throw new ApolloError({
5886
- graphQLErrors: result.errors,
5887
- });
5916
+ var hasErrors = graphQLResultHasError(result);
5917
+ var hasProtocolErrors = graphQLResultHasProtocolErrors(result);
5918
+ if (hasErrors || hasProtocolErrors) {
5919
+ var errors = {};
5920
+ if (hasErrors) {
5921
+ errors.graphQLErrors = result.errors;
5922
+ }
5923
+ if (hasProtocolErrors) {
5924
+ errors.protocolErrors = result.extensions[PROTOCOL_ERRORS_SYMBOL];
5925
+ }
5926
+ throw new ApolloError(errors);
5888
5927
  }
5889
5928
  return result;
5890
5929
  });
@@ -6016,6 +6055,9 @@ var QueryManager = (function () {
6016
6055
  });
6017
6056
  };
6018
6057
  QueryManager.prototype.fetchQueryObservable = function (queryId, options, networkStatus) {
6058
+ return this.fetchConcastWithInfo(queryId, options, networkStatus).concast;
6059
+ };
6060
+ QueryManager.prototype.fetchConcastWithInfo = function (queryId, options, networkStatus) {
6019
6061
  var _this = this;
6020
6062
  if (networkStatus === void 0) { networkStatus = exports.NetworkStatus.loading; }
6021
6063
  var query = this.transform(options.query).document;
@@ -6034,24 +6076,36 @@ var QueryManager = (function () {
6034
6076
  });
6035
6077
  var fromVariables = function (variables) {
6036
6078
  normalized.variables = variables;
6037
- var concastSources = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);
6079
+ var sourcesWithInfo = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);
6038
6080
  if (normalized.fetchPolicy !== "standby" &&
6039
- concastSources.length > 0 &&
6081
+ sourcesWithInfo.sources.length > 0 &&
6040
6082
  queryInfo.observableQuery) {
6041
6083
  queryInfo.observableQuery["applyNextFetchPolicy"]("after-fetch", options);
6042
6084
  }
6043
- return concastSources;
6085
+ return sourcesWithInfo;
6044
6086
  };
6045
6087
  var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };
6046
6088
  this.fetchCancelFns.set(queryId, function (reason) {
6047
6089
  cleanupCancelFn();
6048
6090
  setTimeout(function () { return concast.cancel(reason); });
6049
6091
  });
6050
- var concast = new Concast(this.transform(normalized.query).hasClientExports
6051
- ? this.localState.addExportedVariables(normalized.query, normalized.variables, normalized.context).then(fromVariables)
6052
- : fromVariables(normalized.variables));
6092
+ var concast, containsDataFromLink;
6093
+ if (this.transform(normalized.query).hasClientExports) {
6094
+ concast = new Concast(this.localState
6095
+ .addExportedVariables(normalized.query, normalized.variables, normalized.context)
6096
+ .then(fromVariables).then(function (sourcesWithInfo) { return sourcesWithInfo.sources; }));
6097
+ containsDataFromLink = true;
6098
+ }
6099
+ else {
6100
+ var sourcesWithInfo = fromVariables(normalized.variables);
6101
+ containsDataFromLink = sourcesWithInfo.fromLink;
6102
+ concast = new Concast(sourcesWithInfo.sources);
6103
+ }
6053
6104
  concast.promise.then(cleanupCancelFn, cleanupCancelFn);
6054
- return concast;
6105
+ return {
6106
+ concast: concast,
6107
+ fromLink: containsDataFromLink,
6108
+ };
6055
6109
  };
6056
6110
  QueryManager.prototype.refetchQueries = function (_a) {
6057
6111
  var _this = this;
@@ -6175,54 +6229,40 @@ var QueryManager = (function () {
6175
6229
  case "cache-first": {
6176
6230
  var diff = readCache();
6177
6231
  if (diff.complete) {
6178
- return [
6179
- resultsFromCache(diff, queryInfo.markReady()),
6180
- ];
6232
+ return { fromLink: false, sources: [resultsFromCache(diff, queryInfo.markReady())] };
6181
6233
  }
6182
6234
  if (returnPartialData || shouldNotify) {
6183
- return [
6184
- resultsFromCache(diff),
6185
- resultsFromLink(),
6186
- ];
6235
+ return { fromLink: true, sources: [resultsFromCache(diff), resultsFromLink()] };
6187
6236
  }
6188
- return [
6189
- resultsFromLink(),
6190
- ];
6237
+ return { fromLink: true, sources: [resultsFromLink()] };
6191
6238
  }
6192
6239
  case "cache-and-network": {
6193
6240
  var diff = readCache();
6194
6241
  if (diff.complete || returnPartialData || shouldNotify) {
6195
- return [
6196
- resultsFromCache(diff),
6197
- resultsFromLink(),
6198
- ];
6242
+ return { fromLink: true, sources: [resultsFromCache(diff), resultsFromLink()] };
6199
6243
  }
6200
- return [
6201
- resultsFromLink(),
6202
- ];
6244
+ return { fromLink: true, sources: [resultsFromLink()] };
6203
6245
  }
6204
6246
  case "cache-only":
6205
- return [
6206
- resultsFromCache(readCache(), queryInfo.markReady()),
6207
- ];
6247
+ return { fromLink: false, sources: [resultsFromCache(readCache(), queryInfo.markReady())] };
6208
6248
  case "network-only":
6209
6249
  if (shouldNotify) {
6210
- return [
6211
- resultsFromCache(readCache()),
6212
- resultsFromLink(),
6213
- ];
6250
+ return { fromLink: true, sources: [resultsFromCache(readCache()), resultsFromLink()] };
6214
6251
  }
6215
- return [resultsFromLink()];
6252
+ return { fromLink: true, sources: [resultsFromLink()] };
6216
6253
  case "no-cache":
6217
6254
  if (shouldNotify) {
6218
- return [
6219
- resultsFromCache(queryInfo.getDiff()),
6220
- resultsFromLink(),
6221
- ];
6255
+ return {
6256
+ fromLink: true,
6257
+ sources: [
6258
+ resultsFromCache(queryInfo.getDiff()),
6259
+ resultsFromLink(),
6260
+ ],
6261
+ };
6222
6262
  }
6223
- return [resultsFromLink()];
6263
+ return { fromLink: true, sources: [resultsFromLink()] };
6224
6264
  case "standby":
6225
- return [];
6265
+ return { fromLink: false, sources: [] };
6226
6266
  }
6227
6267
  };
6228
6268
  QueryManager.prototype.getQuery = function (queryId) {
@@ -6685,8 +6725,6 @@ var InternalState = (function () {
6685
6725
  function InternalState(client, query, previous) {
6686
6726
  this.client = client;
6687
6727
  this.query = query;
6688
- this.asyncResolveFns = new Set();
6689
- this.optionsToIgnoreOnce = new (canUseWeakSet ? WeakSet : Set)();
6690
6728
  this.ssrDisabledResult = maybeDeepFreeze({
6691
6729
  loading: true,
6692
6730
  data: void 0,
@@ -6710,20 +6748,30 @@ var InternalState = (function () {
6710
6748
  InternalState.prototype.forceUpdate = function () {
6711
6749
  __DEV__ && tsInvariant.invariant.warn("Calling default no-op implementation of InternalState#forceUpdate");
6712
6750
  };
6713
- InternalState.prototype.asyncUpdate = function (signal) {
6751
+ InternalState.prototype.executeQuery = function (options) {
6714
6752
  var _this = this;
6715
- return new Promise(function (resolve, reject) {
6716
- var watchQueryOptions = _this.watchQueryOptions;
6717
- var handleAborted = function () {
6718
- _this.asyncResolveFns.delete(resolve);
6719
- _this.optionsToIgnoreOnce.delete(watchQueryOptions);
6720
- signal.removeEventListener('abort', handleAborted);
6721
- reject(signal.reason);
6722
- };
6723
- _this.asyncResolveFns.add(resolve);
6724
- _this.optionsToIgnoreOnce.add(watchQueryOptions);
6725
- signal.addEventListener('abort', handleAborted);
6726
- _this.forceUpdate();
6753
+ var _a;
6754
+ if (options.query) {
6755
+ Object.assign(this, { query: options.query });
6756
+ }
6757
+ this.watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
6758
+ var concast = this.observable.reobserveAsConcast(this.getObsQueryOptions());
6759
+ this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
6760
+ this.result = void 0;
6761
+ this.forceUpdate();
6762
+ return new Promise(function (resolve) {
6763
+ var result;
6764
+ concast.subscribe({
6765
+ next: function (value) {
6766
+ result = value;
6767
+ },
6768
+ error: function () {
6769
+ resolve(_this.toQueryResult(_this.observable.getCurrentResult()));
6770
+ },
6771
+ complete: function () {
6772
+ resolve(_this.toQueryResult(result));
6773
+ }
6774
+ });
6727
6775
  });
6728
6776
  };
6729
6777
  InternalState.prototype.useQuery = function (options) {
@@ -6772,29 +6820,22 @@ var InternalState = (function () {
6772
6820
  }
6773
6821
  };
6774
6822
  var subscription = obsQuery.subscribe(onNext, onError);
6775
- return function () { return subscription.unsubscribe(); };
6823
+ return function () { return setTimeout(function () { return subscription.unsubscribe(); }); };
6776
6824
  }, [
6777
6825
  obsQuery,
6778
6826
  this.renderPromises,
6779
6827
  this.client.disableNetworkFetches,
6780
6828
  ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });
6781
6829
  this.unsafeHandlePartialRefetch(result);
6782
- var queryResult = this.toQueryResult(result);
6783
- if (!queryResult.loading && this.asyncResolveFns.size) {
6784
- this.asyncResolveFns.forEach(function (resolve) { return resolve(queryResult); });
6785
- this.asyncResolveFns.clear();
6786
- }
6787
- return queryResult;
6830
+ return this.toQueryResult(result);
6788
6831
  };
6789
6832
  InternalState.prototype.useOptions = function (options) {
6790
6833
  var _a;
6791
6834
  var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
6792
6835
  var currentWatchQueryOptions = this.watchQueryOptions;
6793
- if (this.optionsToIgnoreOnce.has(currentWatchQueryOptions) ||
6794
- !equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
6836
+ if (!equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
6795
6837
  this.watchQueryOptions = watchQueryOptions;
6796
6838
  if (currentWatchQueryOptions && this.observable) {
6797
- this.optionsToIgnoreOnce.delete(currentWatchQueryOptions);
6798
6839
  this.observable.reobserve(this.getObsQueryOptions());
6799
6840
  this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
6800
6841
  this.result = void 0;
@@ -6960,10 +7001,14 @@ var EAGER_METHODS = [
6960
7001
  ];
6961
7002
  function useLazyQuery(query, options) {
6962
7003
  var _a;
6963
- var abortControllersRef = React.useRef(new Set());
6964
7004
  var execOptionsRef = React.useRef();
7005
+ var optionsRef = React.useRef();
7006
+ var queryRef = React.useRef();
6965
7007
  var merged = execOptionsRef.current ? mergeOptions(options, execOptionsRef.current) : options;
6966
- var internalState = useInternalState(useApolloClient(options && options.client), (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query);
7008
+ var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;
7009
+ optionsRef.current = merged;
7010
+ queryRef.current = document;
7011
+ var internalState = useInternalState(useApolloClient(options && options.client), document);
6967
7012
  var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current }));
6968
7013
  var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
6969
7014
  internalState.getDefaultFetchPolicy();
@@ -6989,28 +7034,15 @@ function useLazyQuery(query, options) {
6989
7034
  return eagerMethods;
6990
7035
  }, []);
6991
7036
  Object.assign(result, eagerMethods);
6992
- React.useEffect(function () {
6993
- return function () {
6994
- abortControllersRef.current.forEach(function (controller) {
6995
- controller.abort();
6996
- });
6997
- };
6998
- }, []);
6999
7037
  var execute = React.useCallback(function (executeOptions) {
7000
- var controller = new AbortController();
7001
- abortControllersRef.current.add(controller);
7002
7038
  execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
7003
7039
  fetchPolicy: initialFetchPolicy,
7004
7040
  };
7041
+ var options = mergeOptions(optionsRef.current, tslib.__assign({ query: queryRef.current }, execOptionsRef.current));
7005
7042
  var promise = internalState
7006
- .asyncUpdate(controller.signal)
7007
- .then(function (queryResult) {
7008
- abortControllersRef.current.delete(controller);
7009
- return Object.assign(queryResult, eagerMethods);
7010
- });
7011
- promise.catch(function () {
7012
- abortControllersRef.current.delete(controller);
7013
- });
7043
+ .executeQuery(tslib.__assign(tslib.__assign({}, options), { skip: false }))
7044
+ .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
7045
+ promise.catch(function () { });
7014
7046
  return promise;
7015
7047
  }, []);
7016
7048
  return [execute, result];