@apollo/client 3.7.0-alpha.0 → 3.7.0-alpha.3

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 (67) hide show
  1. package/LICENSE +1 -1
  2. package/apollo-client.cjs +150 -128
  3. package/apollo-client.cjs.map +1 -1
  4. package/apollo-client.min.cjs +1 -1
  5. package/core/ApolloClient.d.ts.map +1 -1
  6. package/core/ApolloClient.js.map +1 -1
  7. package/core/ObservableQuery.d.ts.map +1 -1
  8. package/core/ObservableQuery.js +3 -1
  9. package/core/ObservableQuery.js.map +1 -1
  10. package/core/QueryManager.d.ts.map +1 -1
  11. package/core/QueryManager.js +7 -23
  12. package/core/QueryManager.js.map +1 -1
  13. package/core/core.cjs +11 -25
  14. package/core/core.cjs.map +1 -1
  15. package/core/watchQueryOptions.d.ts +0 -1
  16. package/core/watchQueryOptions.d.ts.map +1 -1
  17. package/core/watchQueryOptions.js.map +1 -1
  18. package/invariantErrorCodes.js +1 -1
  19. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  20. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  21. package/link/persisted-queries/index.d.ts +2 -1
  22. package/link/persisted-queries/index.d.ts.map +1 -1
  23. package/link/persisted-queries/index.js +26 -13
  24. package/link/persisted-queries/index.js.map +1 -1
  25. package/link/persisted-queries/persisted-queries.cjs +25 -12
  26. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  27. package/package.json +14 -15
  28. package/react/context/ApolloConsumer.js +2 -2
  29. package/react/context/ApolloProvider.js +2 -2
  30. package/react/context/context.cjs +4 -4
  31. package/react/context/context.cjs.map +1 -1
  32. package/react/hooks/hooks.cjs +137 -107
  33. package/react/hooks/hooks.cjs.map +1 -1
  34. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  35. package/react/hooks/useLazyQuery.js +7 -22
  36. package/react/hooks/useLazyQuery.js.map +1 -1
  37. package/react/hooks/useQuery.d.ts +5 -1
  38. package/react/hooks/useQuery.d.ts.map +1 -1
  39. package/react/hooks/useQuery.js +48 -64
  40. package/react/hooks/useQuery.js.map +1 -1
  41. package/react/hooks/useSyncExternalStore.d.ts +4 -0
  42. package/react/hooks/useSyncExternalStore.d.ts.map +1 -0
  43. package/react/hooks/useSyncExternalStore.js +50 -0
  44. package/react/hooks/useSyncExternalStore.js.map +1 -0
  45. package/react/parser/index.d.ts.map +1 -1
  46. package/react/parser/index.js +24 -10
  47. package/react/parser/index.js.map +1 -1
  48. package/react/parser/parser.cjs +24 -10
  49. package/react/parser/parser.cjs.map +1 -1
  50. package/testing/core/mocking/mockQueryManager.js +1 -1
  51. package/testing/core/mocking/mockWatchQuery.js +1 -1
  52. package/testing/core/wrap.js +1 -1
  53. package/utilities/common/canUse.d.ts +2 -0
  54. package/utilities/common/canUse.d.ts.map +1 -1
  55. package/utilities/common/canUse.js +6 -2
  56. package/utilities/common/canUse.js.map +1 -1
  57. package/utilities/common/mergeOptions.d.ts +1 -1
  58. package/utilities/common/mergeOptions.d.ts.map +1 -1
  59. package/utilities/common/mergeOptions.js +1 -1
  60. package/utilities/common/mergeOptions.js.map +1 -1
  61. package/utilities/globals/global.js +1 -2
  62. package/utilities/observables/Concast.d.ts.map +1 -1
  63. package/utilities/observables/Concast.js +5 -2
  64. package/utilities/observables/Concast.js.map +1 -1
  65. package/utilities/utilities.cjs +13 -5
  66. package/utilities/utilities.cjs.map +1 -1
  67. package/version.js +1 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.)
3
+ Copyright (c) 2022 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/apollo-client.cjs CHANGED
@@ -13,7 +13,6 @@ var context = require('@wry/context');
13
13
  var trie = require('@wry/trie');
14
14
  var graphqlTag = require('graphql-tag');
15
15
  var React = require('react');
16
- var index_js = require('use-sync-external-store/shim/index.js');
17
16
 
18
17
  function _interopNamespace(e) {
19
18
  if (e && e.__esModule) return e;
@@ -899,11 +898,14 @@ function asyncMap(observable, mapFn, catchFn) {
899
898
  });
900
899
  }
901
900
 
902
- var canUseWeakMap = typeof WeakMap === 'function' && !(typeof navigator === 'object' &&
903
- navigator.product === 'ReactNative');
901
+ var canUseWeakMap = typeof WeakMap === 'function' &&
902
+ maybe(function () { return navigator.product; }) !== 'ReactNative';
904
903
  var canUseWeakSet = typeof WeakSet === 'function';
905
904
  var canUseSymbol = typeof Symbol === 'function' &&
906
905
  typeof Symbol.for === 'function';
906
+ var canUseDOM = typeof maybe(function () { return window.document.createElement; }) === "function";
907
+ var usingJSDOM = maybe(function () { return navigator.userAgent.indexOf("jsdom") >= 0; }) || false;
908
+ var canUseLayoutEffect = canUseDOM && !usingJSDOM;
907
909
 
908
910
  function fixObservableSubclass(subclass) {
909
911
  function set(key) {
@@ -951,9 +953,12 @@ var Concast = (function (_super) {
951
953
  }
952
954
  },
953
955
  complete: function () {
954
- if (_this.sub !== null) {
956
+ var sub = _this.sub;
957
+ if (sub !== null) {
955
958
  var value = _this.sources.shift();
956
959
  if (!value) {
960
+ if (sub)
961
+ setTimeout(function () { return sub.unsubscribe(); });
957
962
  _this.sub = null;
958
963
  if (_this.latest &&
959
964
  _this.latest[0] === "next") {
@@ -1021,7 +1026,7 @@ var Concast = (function (_super) {
1021
1026
  if (this.observers.delete(observer) &&
1022
1027
  --this.addCount < 1 &&
1023
1028
  !quietly) {
1024
- this.handlers.error(new Error("Observable cancelled prematurely"));
1029
+ this.handlers.complete();
1025
1030
  }
1026
1031
  };
1027
1032
  Concast.prototype.cleanup = function (callback) {
@@ -1090,7 +1095,7 @@ function stringifyForDisplay(value) {
1090
1095
 
1091
1096
  function mergeOptions(defaults, options) {
1092
1097
  return compact(defaults, options, options.variables && {
1093
- variables: tslib.__assign(tslib.__assign({}, defaults.variables), options.variables),
1098
+ variables: tslib.__assign(tslib.__assign({}, (defaults && defaults.variables)), options.variables),
1094
1099
  });
1095
1100
  }
1096
1101
 
@@ -1298,7 +1303,7 @@ var concat = ApolloLink.concat;
1298
1303
 
1299
1304
  var execute = ApolloLink.execute;
1300
1305
 
1301
- var version = '3.7.0-alpha.0';
1306
+ var version = '3.7.0-alpha.3';
1302
1307
 
1303
1308
  var hasOwnProperty$3 = Object.prototype.hasOwnProperty;
1304
1309
  function parseAndCheckHttpResponse(operations) {
@@ -3948,7 +3953,9 @@ var ObservableQuery = (function (_super) {
3948
3953
  _this.queryInfo = queryInfo;
3949
3954
  _this.queryManager = queryManager;
3950
3955
  _this.isTornDown = false;
3951
- _this.options = tslib.__assign({ initialFetchPolicy: options.fetchPolicy || "cache-first" }, options);
3956
+ var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? "cache-first" : _d;
3957
+ var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? (fetchPolicy === "standby" ? defaultFetchPolicy : fetchPolicy) : _f;
3958
+ _this.options = tslib.__assign(tslib.__assign({}, options), { initialFetchPolicy: initialFetchPolicy, fetchPolicy: fetchPolicy });
3952
3959
  _this.queryId = queryInfo.queryId || queryManager.generateQueryId();
3953
3960
  var opDef = getOperationDefinition(_this.query);
3954
3961
  _this.queryName = opDef && opDef.name && opDef.name.value;
@@ -5644,7 +5651,7 @@ var QueryManager = (function () {
5644
5651
  };
5645
5652
  QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, networkStatus) {
5646
5653
  var _this = this;
5647
- var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange, fetchBlockingPromise = _a.fetchBlockingPromise;
5654
+ var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;
5648
5655
  var oldNetworkStatus = queryInfo.networkStatus;
5649
5656
  queryInfo.init({
5650
5657
  document: this.transform(query).document,
@@ -5676,28 +5683,12 @@ var QueryManager = (function () {
5676
5683
  (networkStatus === exports.NetworkStatus.refetch &&
5677
5684
  refetchWritePolicy !== "merge") ? 1
5678
5685
  : 2;
5679
- var resultsFromLink = function () {
5680
- var get = function () { return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {
5681
- variables: variables,
5682
- context: context,
5683
- fetchPolicy: fetchPolicy,
5684
- errorPolicy: errorPolicy,
5685
- }); };
5686
- return fetchBlockingPromise ? fetchBlockingPromise.then(function (ok) { return ok ? get() : zenObservableTs.Observable.of(); }, function (error) {
5687
- var apolloError = isApolloError(error)
5688
- ? error
5689
- : new ApolloError({ clientErrors: [error] });
5690
- if (errorPolicy !== "ignore") {
5691
- queryInfo.markError(apolloError);
5692
- }
5693
- return zenObservableTs.Observable.of({
5694
- loading: false,
5695
- networkStatus: exports.NetworkStatus.error,
5696
- error: apolloError,
5697
- data: readCache().result,
5698
- });
5699
- }) : get();
5700
- };
5686
+ var resultsFromLink = function () { return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {
5687
+ variables: variables,
5688
+ context: context,
5689
+ fetchPolicy: fetchPolicy,
5690
+ errorPolicy: errorPolicy,
5691
+ }); };
5701
5692
  var shouldNotify = notifyOnNetworkStatusChange &&
5702
5693
  typeof oldNetworkStatus === "number" &&
5703
5694
  oldNetworkStatus !== networkStatus &&
@@ -6020,17 +6011,17 @@ function getApolloContext() {
6020
6011
 
6021
6012
  var ApolloConsumer = function (props) {
6022
6013
  var ApolloContext = getApolloContext();
6023
- return React__namespace.createElement(ApolloContext.Consumer, null, function (context) {
6014
+ return (React__namespace.createElement(ApolloContext.Consumer, null, function (context) {
6024
6015
  __DEV__ ? tsInvariant.invariant(context && context.client, 'Could not find "client" in the context of ApolloConsumer. ' +
6025
6016
  'Wrap the root component in an <ApolloProvider>.') : tsInvariant.invariant(context && context.client, 25);
6026
6017
  return props.children(context.client);
6027
- });
6018
+ }));
6028
6019
  };
6029
6020
 
6030
6021
  var ApolloProvider = function (_a) {
6031
6022
  var client = _a.client, children = _a.children;
6032
6023
  var ApolloContext = getApolloContext();
6033
- return React__namespace.createElement(ApolloContext.Consumer, null, function (context) {
6024
+ return (React__namespace.createElement(ApolloContext.Consumer, null, function (context) {
6034
6025
  if (context === void 0) { context = {}; }
6035
6026
  if (client && context.client !== client) {
6036
6027
  context = Object.assign({}, context, { client: client });
@@ -6038,7 +6029,7 @@ var ApolloProvider = function (_a) {
6038
6029
  __DEV__ ? tsInvariant.invariant(context.client, 'ApolloProvider was not passed a client instance. Make ' +
6039
6030
  'sure you pass in your client via the "client" prop.') : tsInvariant.invariant(context.client, 26);
6040
6031
  return (React__namespace.createElement(ApolloContext.Provider, { value: context }, children));
6041
- });
6032
+ }));
6042
6033
  };
6043
6034
 
6044
6035
  function useApolloClient(override) {
@@ -6050,6 +6041,53 @@ function useApolloClient(override) {
6050
6041
  return client;
6051
6042
  }
6052
6043
 
6044
+ var didWarnUncachedGetSnapshot = false;
6045
+ var useSyncExternalStore = function (subscribe, getSnapshot, getServerSnapshot) {
6046
+ var realHook = React__namespace.useSyncExternalStore;
6047
+ if (realHook) {
6048
+ return realHook(subscribe, getSnapshot, getServerSnapshot);
6049
+ }
6050
+ var value = getSnapshot();
6051
+ if (__DEV__ &&
6052
+ !didWarnUncachedGetSnapshot &&
6053
+ value !== getSnapshot()) {
6054
+ didWarnUncachedGetSnapshot = true;
6055
+ __DEV__ && tsInvariant.invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');
6056
+ }
6057
+ var _a = React__namespace.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];
6058
+ if (canUseLayoutEffect) {
6059
+ React__namespace.useLayoutEffect(function () {
6060
+ Object.assign(inst, { value: value, getSnapshot: getSnapshot });
6061
+ if (checkIfSnapshotChanged(inst)) {
6062
+ forceUpdate({ inst: inst });
6063
+ }
6064
+ }, [subscribe, value, getSnapshot]);
6065
+ }
6066
+ else {
6067
+ Object.assign(inst, { value: value, getSnapshot: getSnapshot });
6068
+ }
6069
+ React__namespace.useEffect(function () {
6070
+ if (checkIfSnapshotChanged(inst)) {
6071
+ forceUpdate({ inst: inst });
6072
+ }
6073
+ return subscribe(function handleStoreChange() {
6074
+ if (checkIfSnapshotChanged(inst)) {
6075
+ forceUpdate({ inst: inst });
6076
+ }
6077
+ });
6078
+ }, [subscribe]);
6079
+ return value;
6080
+ };
6081
+ function checkIfSnapshotChanged(_a) {
6082
+ var value = _a.value, getSnapshot = _a.getSnapshot;
6083
+ try {
6084
+ return value !== getSnapshot();
6085
+ }
6086
+ catch (_b) {
6087
+ return true;
6088
+ }
6089
+ }
6090
+
6053
6091
  exports.DocumentType = void 0;
6054
6092
  (function (DocumentType) {
6055
6093
  DocumentType[DocumentType["Query"] = 0] = "Query";
@@ -6080,16 +6118,30 @@ function parser(document) {
6080
6118
  __DEV__ ? tsInvariant.invariant(!!document && !!document.kind, "Argument of ".concat(document, " passed to parser was not a valid GraphQL ") +
6081
6119
  "DocumentNode. You may need to use 'graphql-tag' or another method " +
6082
6120
  "to convert your operation into a document") : tsInvariant.invariant(!!document && !!document.kind, 30);
6083
- var fragments = document.definitions.filter(function (x) { return x.kind === 'FragmentDefinition'; });
6084
- var queries = document.definitions.filter(function (x) {
6085
- return x.kind === 'OperationDefinition' && x.operation === 'query';
6086
- });
6087
- var mutations = document.definitions.filter(function (x) {
6088
- return x.kind === 'OperationDefinition' && x.operation === 'mutation';
6089
- });
6090
- var subscriptions = document.definitions.filter(function (x) {
6091
- return x.kind === 'OperationDefinition' && x.operation === 'subscription';
6092
- });
6121
+ var fragments = [];
6122
+ var queries = [];
6123
+ var mutations = [];
6124
+ var subscriptions = [];
6125
+ for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {
6126
+ var x = _a[_i];
6127
+ if (x.kind === 'FragmentDefinition') {
6128
+ fragments.push(x);
6129
+ continue;
6130
+ }
6131
+ if (x.kind === 'OperationDefinition') {
6132
+ switch (x.operation) {
6133
+ case 'query':
6134
+ queries.push(x);
6135
+ break;
6136
+ case 'mutation':
6137
+ mutations.push(x);
6138
+ break;
6139
+ case 'subscription':
6140
+ subscriptions.push(x);
6141
+ break;
6142
+ }
6143
+ }
6144
+ }
6093
6145
  __DEV__ ? tsInvariant.invariant(!fragments.length ||
6094
6146
  (queries.length || mutations.length || subscriptions.length), "Passing only a fragment to 'graphql' is not yet supported. " +
6095
6147
  "You must include a query, subscription or mutation as well") : tsInvariant.invariant(!fragments.length ||
@@ -6152,6 +6204,8 @@ var InternalState = (function () {
6152
6204
  function InternalState(client, query) {
6153
6205
  this.client = client;
6154
6206
  this.query = query;
6207
+ this.asyncResolveFns = new Set();
6208
+ this.optionsToIgnoreOnce = new (canUseWeakSet ? WeakSet : Set)();
6155
6209
  this.ssrDisabledResult = maybeDeepFreeze({
6156
6210
  loading: true,
6157
6211
  data: void 0,
@@ -6168,13 +6222,22 @@ var InternalState = (function () {
6168
6222
  verifyDocumentType(query, exports.DocumentType.Query);
6169
6223
  }
6170
6224
  InternalState.prototype.forceUpdate = function () {
6225
+ __DEV__ && tsInvariant.invariant.warn("Calling default no-op implementation of InternalState#forceUpdate");
6226
+ };
6227
+ InternalState.prototype.asyncUpdate = function () {
6228
+ var _this = this;
6229
+ return new Promise(function (resolve) {
6230
+ _this.asyncResolveFns.add(resolve);
6231
+ _this.optionsToIgnoreOnce.add(_this.watchQueryOptions);
6232
+ _this.forceUpdate();
6233
+ });
6171
6234
  };
6172
6235
  InternalState.prototype.useQuery = function (options) {
6173
6236
  var _this = this;
6174
6237
  this.renderPromises = React.useContext(getApolloContext()).renderPromises;
6175
6238
  this.useOptions(options);
6176
6239
  var obsQuery = this.useObservableQuery();
6177
- var result = index_js.useSyncExternalStore(React.useCallback(function () {
6240
+ var result = useSyncExternalStore(React.useCallback(function () {
6178
6241
  if (_this.renderPromises) {
6179
6242
  return function () { };
6180
6243
  }
@@ -6220,30 +6283,34 @@ var InternalState = (function () {
6220
6283
  obsQuery,
6221
6284
  this.renderPromises,
6222
6285
  this.client.disableNetworkFetches,
6223
- ]), function () { return _this.getCurrentResult(); });
6286
+ ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });
6224
6287
  this.unsafeHandlePartialRefetch(result);
6225
- return this.toQueryResult(result);
6288
+ var queryResult = this.toQueryResult(result);
6289
+ if (!queryResult.loading && this.asyncResolveFns.size) {
6290
+ this.asyncResolveFns.forEach(function (resolve) { return resolve(queryResult); });
6291
+ this.asyncResolveFns.clear();
6292
+ }
6293
+ return queryResult;
6226
6294
  };
6227
6295
  InternalState.prototype.useOptions = function (options) {
6228
6296
  var _a;
6229
6297
  var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
6230
6298
  var currentWatchQueryOptions = this.watchQueryOptions;
6231
- var resolveFetchBlockingPromise;
6232
- if (!equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
6299
+ if (this.optionsToIgnoreOnce.has(currentWatchQueryOptions) ||
6300
+ !equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
6233
6301
  this.watchQueryOptions = watchQueryOptions;
6234
6302
  if (currentWatchQueryOptions && this.observable) {
6235
- this.observable.reobserve(tslib.__assign({ fetchBlockingPromise: new Promise(function (resolve) {
6236
- resolveFetchBlockingPromise = resolve;
6237
- }) }, watchQueryOptions));
6303
+ this.optionsToIgnoreOnce.delete(currentWatchQueryOptions);
6304
+ this.observable.reobserve(watchQueryOptions);
6238
6305
  this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
6239
6306
  this.result = void 0;
6240
6307
  }
6241
6308
  }
6242
- useUnblockFetchEffect(this.renderPromises, resolveFetchBlockingPromise);
6243
6309
  this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;
6244
6310
  this.onError = options.onError || InternalState.prototype.onError;
6245
6311
  if ((this.renderPromises || this.client.disableNetworkFetches) &&
6246
- this.queryHookOptions.ssr === false) {
6312
+ this.queryHookOptions.ssr === false &&
6313
+ !this.queryHookOptions.skip) {
6247
6314
  this.result = this.ssrDisabledResult;
6248
6315
  }
6249
6316
  else if (this.queryHookOptions.skip ||
@@ -6256,63 +6323,46 @@ var InternalState = (function () {
6256
6323
  }
6257
6324
  };
6258
6325
  InternalState.prototype.createWatchQueryOptions = function (_a) {
6326
+ var _b;
6259
6327
  if (_a === void 0) { _a = {}; }
6260
- var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; _a.displayName; var defaultOptions = _a.defaultOptions, otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "displayName", "defaultOptions"]);
6261
- var toMerge = [];
6262
- var globalDefaults = this.client.defaultOptions.watchQuery;
6263
- if (globalDefaults)
6264
- toMerge.push(globalDefaults);
6265
- if (defaultOptions)
6266
- toMerge.push(defaultOptions);
6267
- var latestOptions = this.observable && this.observable.options;
6268
- if (latestOptions && toMerge.length) {
6269
- var defaults_1 = toMerge.reduce(mergeOptions, Object.create(null));
6270
- toMerge.length = 1;
6271
- toMerge[0] = defaults_1;
6272
- Object.keys(defaults_1).forEach(function (defaultOptionName) {
6273
- var currentOptionValue = latestOptions[defaultOptionName];
6274
- if (hasOwnProperty.call(latestOptions, defaultOptionName) &&
6275
- !equality.equal(defaults_1[defaultOptionName], currentOptionValue)) {
6276
- defaults_1[defaultOptionName] = defaultOptionName === "variables"
6277
- ? tslib.__assign(tslib.__assign({}, defaults_1.variables), currentOptionValue) : currentOptionValue;
6278
- }
6279
- });
6280
- }
6281
- toMerge.push(otherOptions);
6282
- var merged = toMerge.reduce(mergeOptions, Object.create(null));
6283
- var watchQueryOptions = Object.assign(merged, { query: this.query });
6328
+ var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; _a.displayName; _a.defaultOptions; var otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "displayName", "defaultOptions"]);
6329
+ var watchQueryOptions = Object.assign(otherOptions, { query: this.query });
6284
6330
  if (this.renderPromises &&
6285
6331
  (watchQueryOptions.fetchPolicy === 'network-only' ||
6286
6332
  watchQueryOptions.fetchPolicy === 'cache-and-network')) {
6287
6333
  watchQueryOptions.fetchPolicy = 'cache-first';
6288
6334
  }
6289
- else if (!watchQueryOptions.fetchPolicy) {
6290
- watchQueryOptions.fetchPolicy = 'cache-first';
6335
+ if (!watchQueryOptions.variables) {
6336
+ watchQueryOptions.variables = {};
6291
6337
  }
6292
6338
  if (skip) {
6293
- var _b = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? watchQueryOptions.fetchPolicy : _b;
6339
+ var _c = watchQueryOptions.fetchPolicy, fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c, _d = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;
6294
6340
  Object.assign(watchQueryOptions, {
6295
6341
  initialFetchPolicy: initialFetchPolicy,
6296
6342
  fetchPolicy: 'standby',
6297
6343
  });
6298
6344
  }
6299
- if (!watchQueryOptions.variables) {
6300
- watchQueryOptions.variables = {};
6345
+ else if (!watchQueryOptions.fetchPolicy) {
6346
+ watchQueryOptions.fetchPolicy =
6347
+ ((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) ||
6348
+ this.getDefaultFetchPolicy();
6301
6349
  }
6302
6350
  return watchQueryOptions;
6303
6351
  };
6352
+ InternalState.prototype.getDefaultFetchPolicy = function () {
6353
+ var _a, _b;
6354
+ return (((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
6355
+ ((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
6356
+ "cache-first");
6357
+ };
6304
6358
  InternalState.prototype.onCompleted = function (data) { };
6305
6359
  InternalState.prototype.onError = function (error) { };
6306
6360
  InternalState.prototype.useObservableQuery = function () {
6307
- var resolveFetchBlockingPromise;
6308
6361
  var obsQuery = this.observable =
6309
6362
  this.renderPromises
6310
6363
  && this.renderPromises.getSSRObservable(this.watchQueryOptions)
6311
6364
  || this.observable
6312
- || this.client.watchQuery(tslib.__assign({ fetchBlockingPromise: new Promise(function (resolve) {
6313
- resolveFetchBlockingPromise = resolve;
6314
- }) }, this.watchQueryOptions));
6315
- useUnblockFetchEffect(this.renderPromises, resolveFetchBlockingPromise);
6365
+ || this.client.watchQuery(mergeOptions(this.queryHookOptions.defaultOptions, this.watchQueryOptions));
6316
6366
  this.obsQueryFields = React.useMemo(function () { return ({
6317
6367
  refetch: obsQuery.refetch.bind(obsQuery),
6318
6368
  reobserve: obsQuery.reobserve.bind(obsQuery),
@@ -6322,11 +6372,11 @@ var InternalState = (function () {
6322
6372
  stopPolling: obsQuery.stopPolling.bind(obsQuery),
6323
6373
  subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
6324
6374
  }); }, [obsQuery]);
6325
- if (this.renderPromises) {
6375
+ var ssrAllowed = !(this.queryHookOptions.ssr === false ||
6376
+ this.queryHookOptions.skip);
6377
+ if (this.renderPromises && ssrAllowed) {
6326
6378
  this.renderPromises.registerSSRObservable(obsQuery);
6327
- var ssrAllowed = !(this.queryHookOptions.ssr === false ||
6328
- this.queryHookOptions.skip);
6329
- if (ssrAllowed && obsQuery.getCurrentResult().loading) {
6379
+ if (obsQuery.getCurrentResult().loading) {
6330
6380
  this.renderPromises.addObservableQueryPromise(obsQuery);
6331
6381
  }
6332
6382
  }
@@ -6383,21 +6433,6 @@ var InternalState = (function () {
6383
6433
  };
6384
6434
  return InternalState;
6385
6435
  }());
6386
- function useUnblockFetchEffect(renderPromises, resolveFetchBlockingPromise) {
6387
- if (resolveFetchBlockingPromise) {
6388
- if (renderPromises) {
6389
- resolveFetchBlockingPromise(true);
6390
- }
6391
- else {
6392
- setTimeout(function () { return resolveFetchBlockingPromise(false); }, 5000);
6393
- }
6394
- }
6395
- React.useEffect(function () {
6396
- if (resolveFetchBlockingPromise) {
6397
- resolveFetchBlockingPromise(true);
6398
- }
6399
- }, [resolveFetchBlockingPromise]);
6400
- }
6401
6436
 
6402
6437
  var EAGER_METHODS = [
6403
6438
  'refetch',
@@ -6410,12 +6445,9 @@ var EAGER_METHODS = [
6410
6445
  function useLazyQuery(query, options) {
6411
6446
  var internalState = useInternalState(useApolloClient(options && options.client), query);
6412
6447
  var execOptionsRef = React.useRef();
6413
- var defaultOptions = internalState.client.defaultOptions.watchQuery;
6414
- var initialFetchPolicy = (options && options.fetchPolicy) ||
6415
- (execOptionsRef.current && execOptionsRef.current.fetchPolicy) ||
6416
- (defaultOptions && defaultOptions.fetchPolicy) ||
6417
- "cache-first";
6418
6448
  var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign(tslib.__assign({}, options), execOptionsRef.current), { skip: !execOptionsRef.current }));
6449
+ var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
6450
+ internalState.getDefaultFetchPolicy();
6419
6451
  var result = Object.assign(useQueryResult, {
6420
6452
  called: !!execOptionsRef.current,
6421
6453
  });
@@ -6439,22 +6471,12 @@ function useLazyQuery(query, options) {
6439
6471
  }, []);
6440
6472
  Object.assign(result, eagerMethods);
6441
6473
  var execute = React.useCallback(function (executeOptions) {
6442
- var promise = result.reobserve(execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
6474
+ execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
6443
6475
  fetchPolicy: initialFetchPolicy,
6444
- }).then(function (apolloQueryResult) {
6445
- apolloQueryResult = apolloQueryResult || internalState["getCurrentResult"]();
6446
- if (apolloQueryResult.error ||
6447
- isNonEmptyArray(apolloQueryResult.errors)) {
6448
- var _a = result.observable.options.errorPolicy, errorPolicy = _a === void 0 ? "none" : _a;
6449
- if (errorPolicy === "none") {
6450
- throw apolloQueryResult.error || new ApolloError({
6451
- graphQLErrors: apolloQueryResult.errors,
6452
- });
6453
- }
6454
- }
6455
- return internalState.toQueryResult(apolloQueryResult);
6456
- }).then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
6457
- internalState.forceUpdate();
6476
+ };
6477
+ var promise = internalState
6478
+ .asyncUpdate()
6479
+ .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
6458
6480
  promise.catch(function () { });
6459
6481
  return promise;
6460
6482
  }, []);