@apollo/client 3.6.2 → 3.6.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 (84) hide show
  1. package/apollo-client.cjs +164 -105
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs +9 -10
  5. package/cache/cache.cjs.map +1 -1
  6. package/cache/cache.cjs.native.js +2288 -0
  7. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  8. package/cache/inmemory/readFromStore.js +10 -11
  9. package/cache/inmemory/readFromStore.js.map +1 -1
  10. package/core/ApolloClient.d.ts.map +1 -1
  11. package/core/ApolloClient.js.map +1 -1
  12. package/core/ObservableQuery.d.ts.map +1 -1
  13. package/core/ObservableQuery.js +5 -3
  14. package/core/ObservableQuery.js.map +1 -1
  15. package/core/core.cjs +5 -3
  16. package/core/core.cjs.map +1 -1
  17. package/core/core.cjs.native.js +2141 -0
  18. package/errors/errors.cjs.native.js +48 -0
  19. package/invariantErrorCodes.js +1 -1
  20. package/link/batch/batch.cjs.native.js +161 -0
  21. package/link/batch-http/batch-http.cjs.native.js +127 -0
  22. package/link/context/context.cjs.native.js +38 -0
  23. package/link/core/core.cjs.native.js +121 -0
  24. package/link/error/error.cjs.native.js +90 -0
  25. package/link/http/http.cjs.native.js +320 -0
  26. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  27. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  28. package/link/persisted-queries/persisted-queries.cjs.native.js +174 -0
  29. package/link/retry/retry.cjs.native.js +170 -0
  30. package/link/schema/schema.cjs.native.js +56 -0
  31. package/link/subscriptions/subscriptions.cjs.native.js +45 -0
  32. package/link/utils/utils.cjs.native.js +115 -0
  33. package/link/ws/ws.cjs.native.js +28 -0
  34. package/main.cjs.native.js +16 -0
  35. package/package.json +16 -17
  36. package/react/components/components.cjs.native.js +79 -0
  37. package/react/context/context.cjs.native.js +67 -0
  38. package/react/hoc/hoc.cjs.native.js +325 -0
  39. package/react/hooks/hooks.cjs +168 -99
  40. package/react/hooks/hooks.cjs.map +1 -1
  41. package/react/hooks/hooks.cjs.native.js +612 -0
  42. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  43. package/react/hooks/useLazyQuery.js +12 -23
  44. package/react/hooks/useLazyQuery.js.map +1 -1
  45. package/react/hooks/useMutation.js +7 -7
  46. package/react/hooks/useMutation.js.map +1 -1
  47. package/react/hooks/useQuery.d.ts +6 -2
  48. package/react/hooks/useQuery.d.ts.map +1 -1
  49. package/react/hooks/useQuery.js +52 -40
  50. package/react/hooks/useQuery.js.map +1 -1
  51. package/react/hooks/useSubscription.d.ts.map +1 -1
  52. package/react/hooks/useSubscription.js +17 -7
  53. package/react/hooks/useSubscription.js.map +1 -1
  54. package/react/hooks/useSyncExternalStore.d.ts +4 -0
  55. package/react/hooks/useSyncExternalStore.d.ts.map +1 -0
  56. package/react/hooks/useSyncExternalStore.js +48 -0
  57. package/react/hooks/useSyncExternalStore.js.map +1 -0
  58. package/react/parser/parser.cjs.native.js +103 -0
  59. package/react/react.cjs.native.js +22 -0
  60. package/react/ssr/ssr.cjs.native.js +150 -0
  61. package/testing/core/core.cjs.native.js +288 -0
  62. package/testing/testing.cjs.native.js +58 -0
  63. package/utilities/common/canUse.d.ts +2 -0
  64. package/utilities/common/canUse.d.ts.map +1 -1
  65. package/utilities/common/canUse.js +6 -2
  66. package/utilities/common/canUse.js.map +1 -1
  67. package/utilities/common/mergeDeep.d.ts.map +1 -1
  68. package/utilities/common/mergeDeep.js +8 -11
  69. package/utilities/common/mergeDeep.js.map +1 -1
  70. package/utilities/common/mergeOptions.d.ts +1 -1
  71. package/utilities/common/mergeOptions.d.ts.map +1 -1
  72. package/utilities/common/mergeOptions.js +1 -1
  73. package/utilities/common/mergeOptions.js.map +1 -1
  74. package/utilities/globals/globals.cjs.native.js +56 -0
  75. package/utilities/observables/Concast.d.ts.map +1 -1
  76. package/utilities/observables/Concast.js +5 -2
  77. package/utilities/observables/Concast.js.map +1 -1
  78. package/utilities/policies/pagination.d.ts.map +1 -1
  79. package/utilities/policies/pagination.js +9 -7
  80. package/utilities/policies/pagination.js.map +1 -1
  81. package/utilities/utilities.cjs +30 -23
  82. package/utilities/utilities.cjs.map +1 -1
  83. package/utilities/utilities.cjs.native.js +1281 -0
  84. package/version.js +1 -1
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;
@@ -762,18 +761,15 @@ var DeepMerger = (function () {
762
761
  };
763
762
  DeepMerger.prototype.shallowCopyForMerge = function (value) {
764
763
  if (isNonNullObject(value)) {
765
- if (this.pastCopies.has(value)) {
766
- if (!Object.isFrozen(value))
767
- return value;
768
- this.pastCopies.delete(value);
769
- }
770
- if (Array.isArray(value)) {
771
- value = value.slice(0);
772
- }
773
- else {
774
- value = tslib.__assign({ __proto__: Object.getPrototypeOf(value) }, value);
764
+ if (!this.pastCopies.has(value)) {
765
+ if (Array.isArray(value)) {
766
+ value = value.slice(0);
767
+ }
768
+ else {
769
+ value = tslib.__assign({ __proto__: Object.getPrototypeOf(value) }, value);
770
+ }
771
+ this.pastCopies.add(value);
775
772
  }
776
- this.pastCopies.add(value);
777
773
  }
778
774
  return value;
779
775
  };
@@ -899,11 +895,14 @@ function asyncMap(observable, mapFn, catchFn) {
899
895
  });
900
896
  }
901
897
 
902
- var canUseWeakMap = typeof WeakMap === 'function' && !(typeof navigator === 'object' &&
903
- navigator.product === 'ReactNative');
898
+ var canUseWeakMap = typeof WeakMap === 'function' &&
899
+ maybe(function () { return navigator.product; }) !== 'ReactNative';
904
900
  var canUseWeakSet = typeof WeakSet === 'function';
905
901
  var canUseSymbol = typeof Symbol === 'function' &&
906
902
  typeof Symbol.for === 'function';
903
+ var canUseDOM = typeof maybe(function () { return window.document.createElement; }) === "function";
904
+ var usingJSDOM = maybe(function () { return navigator.userAgent.indexOf("jsdom") >= 0; }) || false;
905
+ var canUseLayoutEffect = canUseDOM && !usingJSDOM;
907
906
 
908
907
  function fixObservableSubclass(subclass) {
909
908
  function set(key) {
@@ -951,9 +950,12 @@ var Concast = (function (_super) {
951
950
  }
952
951
  },
953
952
  complete: function () {
954
- if (_this.sub !== null) {
953
+ var sub = _this.sub;
954
+ if (sub !== null) {
955
955
  var value = _this.sources.shift();
956
956
  if (!value) {
957
+ if (sub)
958
+ setTimeout(function () { return sub.unsubscribe(); });
957
959
  _this.sub = null;
958
960
  if (_this.latest &&
959
961
  _this.latest[0] === "next") {
@@ -1021,7 +1023,7 @@ var Concast = (function (_super) {
1021
1023
  if (this.observers.delete(observer) &&
1022
1024
  --this.addCount < 1 &&
1023
1025
  !quietly) {
1024
- this.handlers.error(new Error("Observable cancelled prematurely"));
1026
+ this.handlers.complete();
1025
1027
  }
1026
1028
  };
1027
1029
  Concast.prototype.cleanup = function (callback) {
@@ -1090,7 +1092,7 @@ function stringifyForDisplay(value) {
1090
1092
 
1091
1093
  function mergeOptions(defaults, options) {
1092
1094
  return compact(defaults, options, options.variables && {
1093
- variables: tslib.__assign(tslib.__assign({}, defaults.variables), options.variables),
1095
+ variables: tslib.__assign(tslib.__assign({}, (defaults && defaults.variables)), options.variables),
1094
1096
  });
1095
1097
  }
1096
1098
 
@@ -1298,7 +1300,7 @@ var concat = ApolloLink.concat;
1298
1300
 
1299
1301
  var execute = ApolloLink.execute;
1300
1302
 
1301
- var version = '3.6.2';
1303
+ var version = '3.6.5';
1302
1304
 
1303
1305
  var hasOwnProperty$3 = Object.prototype.hasOwnProperty;
1304
1306
  function parseAndCheckHttpResponse(operations) {
@@ -2391,7 +2393,6 @@ var StoreReader = (function () {
2391
2393
  var policies = this.config.cache.policies;
2392
2394
  variables = tslib.__assign(tslib.__assign({}, getDefaultValues(getQueryDefinition(query))), variables);
2393
2395
  var rootRef = makeReference(rootId);
2394
- var merger = new DeepMerger;
2395
2396
  var execResult = this.executeSelectionSet({
2396
2397
  selectionSet: getMainDefinition(query).selectionSet,
2397
2398
  objectOrReference: rootRef,
@@ -2404,9 +2405,6 @@ var StoreReader = (function () {
2404
2405
  varString: canonicalStringify(variables),
2405
2406
  canonizeResults: canonizeResults,
2406
2407
  fragmentMap: createFragmentMap(getFragmentDefinitions(query)),
2407
- merge: function (a, b) {
2408
- return merger.merge(a, b);
2409
- },
2410
2408
  },
2411
2409
  });
2412
2410
  var missing;
@@ -2445,17 +2443,18 @@ var StoreReader = (function () {
2445
2443
  }
2446
2444
  var variables = context.variables, policies = context.policies, store = context.store;
2447
2445
  var typename = store.getFieldValue(objectOrReference, "__typename");
2448
- var result = {};
2446
+ var objectsToMerge = [];
2449
2447
  var missing;
2448
+ var missingMerger = new DeepMerger();
2450
2449
  if (this.config.addTypename &&
2451
2450
  typeof typename === "string" &&
2452
2451
  !policies.rootIdsByTypename[typename]) {
2453
- result = { __typename: typename };
2452
+ objectsToMerge.push({ __typename: typename });
2454
2453
  }
2455
2454
  function handleMissing(result, resultName) {
2456
2455
  var _a;
2457
2456
  if (result.missing) {
2458
- missing = context.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));
2457
+ missing = missingMerger.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));
2459
2458
  }
2460
2459
  return result.result;
2461
2460
  }
@@ -2474,7 +2473,7 @@ var StoreReader = (function () {
2474
2473
  var resultName = resultKeyNameFromField(selection);
2475
2474
  if (fieldValue === void 0) {
2476
2475
  if (!addTypenameToDocument.added(selection)) {
2477
- missing = context.merge(missing, (_a = {},
2476
+ missing = missingMerger.merge(missing, (_a = {},
2478
2477
  _a[resultName] = "Can't find field '".concat(selection.name.value, "' on ").concat(isReference(objectOrReference)
2479
2478
  ? objectOrReference.__ref + " object"
2480
2479
  : "object " + JSON.stringify(objectOrReference, null, 2)),
@@ -2503,7 +2502,7 @@ var StoreReader = (function () {
2503
2502
  }), resultName);
2504
2503
  }
2505
2504
  if (fieldValue !== void 0) {
2506
- result = context.merge(result, (_b = {}, _b[resultName] = fieldValue, _b));
2505
+ objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));
2507
2506
  }
2508
2507
  }
2509
2508
  else {
@@ -2513,6 +2512,7 @@ var StoreReader = (function () {
2513
2512
  }
2514
2513
  }
2515
2514
  });
2515
+ var result = mergeDeepArray(objectsToMerge);
2516
2516
  var finalResult = { result: result, missing: missing };
2517
2517
  var frozen = context.canonizeResults
2518
2518
  ? this.canon.admit(finalResult)
@@ -2526,10 +2526,11 @@ var StoreReader = (function () {
2526
2526
  var _this = this;
2527
2527
  var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;
2528
2528
  var missing;
2529
+ var missingMerger = new DeepMerger();
2529
2530
  function handleMissing(childResult, i) {
2530
2531
  var _a;
2531
2532
  if (childResult.missing) {
2532
- missing = context.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));
2533
+ missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));
2533
2534
  }
2534
2535
  return childResult.result;
2535
2536
  }
@@ -3948,7 +3949,9 @@ var ObservableQuery = (function (_super) {
3948
3949
  _this.queryInfo = queryInfo;
3949
3950
  _this.queryManager = queryManager;
3950
3951
  _this.isTornDown = false;
3951
- _this.options = tslib.__assign({ initialFetchPolicy: options.fetchPolicy || "cache-first" }, options);
3952
+ var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? "cache-first" : _d;
3953
+ var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? (fetchPolicy === "standby" ? defaultFetchPolicy : fetchPolicy) : _f;
3954
+ _this.options = tslib.__assign(tslib.__assign({}, options), { initialFetchPolicy: initialFetchPolicy, fetchPolicy: fetchPolicy });
3952
3955
  _this.queryId = queryInfo.queryId || queryManager.generateQueryId();
3953
3956
  var opDef = getOperationDefinition(_this.query);
3954
3957
  _this.queryName = opDef && opDef.name && opDef.name.value;
@@ -4300,7 +4303,7 @@ var ObservableQuery = (function (_super) {
4300
4303
  newNetworkStatus === exports.NetworkStatus.poll;
4301
4304
  var oldVariables = this.options.variables;
4302
4305
  var oldFetchPolicy = this.options.fetchPolicy;
4303
- var mergedOptions = mergeOptions(this.options, newOptions || {});
4306
+ var mergedOptions = compact(this.options, newOptions || {});
4304
4307
  var options = useDisposableConcast
4305
4308
  ? mergedOptions
4306
4309
  : assign(this.options, mergedOptions);
@@ -6034,6 +6037,51 @@ function useApolloClient(override) {
6034
6037
  return client;
6035
6038
  }
6036
6039
 
6040
+ var didWarnUncachedGetSnapshot = false;
6041
+ var uSESKey = "useSyncExternalStore";
6042
+ var realHook = React__namespace[uSESKey];
6043
+ var useSyncExternalStore = realHook || (function (subscribe, getSnapshot, getServerSnapshot) {
6044
+ var value = getSnapshot();
6045
+ if (__DEV__ &&
6046
+ !didWarnUncachedGetSnapshot &&
6047
+ value !== getSnapshot()) {
6048
+ didWarnUncachedGetSnapshot = true;
6049
+ __DEV__ && tsInvariant.invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');
6050
+ }
6051
+ var _a = React__namespace.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];
6052
+ if (canUseLayoutEffect) {
6053
+ React__namespace.useLayoutEffect(function () {
6054
+ Object.assign(inst, { value: value, getSnapshot: getSnapshot });
6055
+ if (checkIfSnapshotChanged(inst)) {
6056
+ forceUpdate({ inst: inst });
6057
+ }
6058
+ }, [subscribe, value, getSnapshot]);
6059
+ }
6060
+ else {
6061
+ Object.assign(inst, { value: value, getSnapshot: getSnapshot });
6062
+ }
6063
+ React__namespace.useEffect(function () {
6064
+ if (checkIfSnapshotChanged(inst)) {
6065
+ forceUpdate({ inst: inst });
6066
+ }
6067
+ return subscribe(function handleStoreChange() {
6068
+ if (checkIfSnapshotChanged(inst)) {
6069
+ forceUpdate({ inst: inst });
6070
+ }
6071
+ });
6072
+ }, [subscribe]);
6073
+ return value;
6074
+ });
6075
+ function checkIfSnapshotChanged(_a) {
6076
+ var value = _a.value, getSnapshot = _a.getSnapshot;
6077
+ try {
6078
+ return value !== getSnapshot();
6079
+ }
6080
+ catch (_b) {
6081
+ return true;
6082
+ }
6083
+ }
6084
+
6037
6085
  exports.DocumentType = void 0;
6038
6086
  (function (DocumentType) {
6039
6087
  DocumentType[DocumentType["Query"] = 0] = "Query";
@@ -6137,7 +6185,7 @@ function useInternalState(client, query) {
6137
6185
  if (!stateRef.current ||
6138
6186
  client !== stateRef.current.client ||
6139
6187
  query !== stateRef.current.query) {
6140
- stateRef.current = new InternalState(client, query);
6188
+ stateRef.current = new InternalState(client, query, stateRef.current);
6141
6189
  }
6142
6190
  var state = stateRef.current;
6143
6191
  var _a = React.useState(0); _a[0]; var setTick = _a[1];
@@ -6147,9 +6195,11 @@ function useInternalState(client, query) {
6147
6195
  return state;
6148
6196
  }
6149
6197
  var InternalState = (function () {
6150
- function InternalState(client, query) {
6198
+ function InternalState(client, query, previous) {
6151
6199
  this.client = client;
6152
6200
  this.query = query;
6201
+ this.asyncResolveFns = new Set();
6202
+ this.optionsToIgnoreOnce = new (canUseWeakSet ? WeakSet : Set)();
6153
6203
  this.ssrDisabledResult = maybeDeepFreeze({
6154
6204
  loading: true,
6155
6205
  data: void 0,
@@ -6164,15 +6214,29 @@ var InternalState = (function () {
6164
6214
  });
6165
6215
  this.toQueryResultCache = new (canUseWeakMap ? WeakMap : Map)();
6166
6216
  verifyDocumentType(query, exports.DocumentType.Query);
6217
+ var previousResult = previous && previous.result;
6218
+ var previousData = previousResult && previousResult.data;
6219
+ if (previousData) {
6220
+ this.previousData = previousData;
6221
+ }
6167
6222
  }
6168
6223
  InternalState.prototype.forceUpdate = function () {
6224
+ __DEV__ && tsInvariant.invariant.warn("Calling default no-op implementation of InternalState#forceUpdate");
6225
+ };
6226
+ InternalState.prototype.asyncUpdate = function () {
6227
+ var _this = this;
6228
+ return new Promise(function (resolve) {
6229
+ _this.asyncResolveFns.add(resolve);
6230
+ _this.optionsToIgnoreOnce.add(_this.watchQueryOptions);
6231
+ _this.forceUpdate();
6232
+ });
6169
6233
  };
6170
6234
  InternalState.prototype.useQuery = function (options) {
6171
6235
  var _this = this;
6172
6236
  this.renderPromises = React.useContext(getApolloContext()).renderPromises;
6173
6237
  this.useOptions(options);
6174
6238
  var obsQuery = this.useObservableQuery();
6175
- var result = index_js.useSyncExternalStore(React.useCallback(function () {
6239
+ var result = useSyncExternalStore(React.useCallback(function () {
6176
6240
  if (_this.renderPromises) {
6177
6241
  return function () { };
6178
6242
  }
@@ -6220,15 +6284,22 @@ var InternalState = (function () {
6220
6284
  this.client.disableNetworkFetches,
6221
6285
  ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });
6222
6286
  this.unsafeHandlePartialRefetch(result);
6223
- return this.toQueryResult(result);
6287
+ var queryResult = this.toQueryResult(result);
6288
+ if (!queryResult.loading && this.asyncResolveFns.size) {
6289
+ this.asyncResolveFns.forEach(function (resolve) { return resolve(queryResult); });
6290
+ this.asyncResolveFns.clear();
6291
+ }
6292
+ return queryResult;
6224
6293
  };
6225
6294
  InternalState.prototype.useOptions = function (options) {
6226
6295
  var _a;
6227
6296
  var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
6228
6297
  var currentWatchQueryOptions = this.watchQueryOptions;
6229
- if (!equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
6298
+ if (this.optionsToIgnoreOnce.has(currentWatchQueryOptions) ||
6299
+ !equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
6230
6300
  this.watchQueryOptions = watchQueryOptions;
6231
6301
  if (currentWatchQueryOptions && this.observable) {
6302
+ this.optionsToIgnoreOnce.delete(currentWatchQueryOptions);
6232
6303
  this.observable.reobserve(watchQueryOptions);
6233
6304
  this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
6234
6305
  this.result = void 0;
@@ -6237,7 +6308,8 @@ var InternalState = (function () {
6237
6308
  this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;
6238
6309
  this.onError = options.onError || InternalState.prototype.onError;
6239
6310
  if ((this.renderPromises || this.client.disableNetworkFetches) &&
6240
- this.queryHookOptions.ssr === false) {
6311
+ this.queryHookOptions.ssr === false &&
6312
+ !this.queryHookOptions.skip) {
6241
6313
  this.result = this.ssrDisabledResult;
6242
6314
  }
6243
6315
  else if (this.queryHookOptions.skip ||
@@ -6250,51 +6322,38 @@ var InternalState = (function () {
6250
6322
  }
6251
6323
  };
6252
6324
  InternalState.prototype.createWatchQueryOptions = function (_a) {
6325
+ var _b;
6253
6326
  if (_a === void 0) { _a = {}; }
6254
- 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"]);
6255
- var toMerge = [];
6256
- var globalDefaults = this.client.defaultOptions.watchQuery;
6257
- if (globalDefaults)
6258
- toMerge.push(globalDefaults);
6259
- if (defaultOptions)
6260
- toMerge.push(defaultOptions);
6261
- var latestOptions = this.observable && this.observable.options;
6262
- if (latestOptions && toMerge.length) {
6263
- var defaults_1 = toMerge.reduce(mergeOptions, Object.create(null));
6264
- toMerge.length = 1;
6265
- toMerge[0] = defaults_1;
6266
- Object.keys(defaults_1).forEach(function (defaultOptionName) {
6267
- var currentOptionValue = latestOptions[defaultOptionName];
6268
- if (hasOwnProperty.call(latestOptions, defaultOptionName) &&
6269
- !equality.equal(defaults_1[defaultOptionName], currentOptionValue)) {
6270
- defaults_1[defaultOptionName] = defaultOptionName === "variables"
6271
- ? tslib.__assign(tslib.__assign({}, defaults_1.variables), currentOptionValue) : currentOptionValue;
6272
- }
6273
- });
6274
- }
6275
- toMerge.push(otherOptions);
6276
- var merged = toMerge.reduce(mergeOptions, Object.create(null));
6277
- var watchQueryOptions = Object.assign(merged, { query: this.query });
6327
+ 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"]);
6328
+ var watchQueryOptions = Object.assign(otherOptions, { query: this.query });
6278
6329
  if (this.renderPromises &&
6279
6330
  (watchQueryOptions.fetchPolicy === 'network-only' ||
6280
6331
  watchQueryOptions.fetchPolicy === 'cache-and-network')) {
6281
6332
  watchQueryOptions.fetchPolicy = 'cache-first';
6282
6333
  }
6283
- else if (!watchQueryOptions.fetchPolicy) {
6284
- watchQueryOptions.fetchPolicy = 'cache-first';
6334
+ if (!watchQueryOptions.variables) {
6335
+ watchQueryOptions.variables = {};
6285
6336
  }
6286
6337
  if (skip) {
6287
- var _b = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? watchQueryOptions.fetchPolicy : _b;
6338
+ var _c = watchQueryOptions.fetchPolicy, fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c, _d = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;
6288
6339
  Object.assign(watchQueryOptions, {
6289
6340
  initialFetchPolicy: initialFetchPolicy,
6290
6341
  fetchPolicy: 'standby',
6291
6342
  });
6292
6343
  }
6293
- if (!watchQueryOptions.variables) {
6294
- watchQueryOptions.variables = {};
6344
+ else if (!watchQueryOptions.fetchPolicy) {
6345
+ watchQueryOptions.fetchPolicy =
6346
+ ((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) ||
6347
+ this.getDefaultFetchPolicy();
6295
6348
  }
6296
6349
  return watchQueryOptions;
6297
6350
  };
6351
+ InternalState.prototype.getDefaultFetchPolicy = function () {
6352
+ var _a, _b;
6353
+ return (((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
6354
+ ((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
6355
+ "cache-first");
6356
+ };
6298
6357
  InternalState.prototype.onCompleted = function (data) { };
6299
6358
  InternalState.prototype.onError = function (error) { };
6300
6359
  InternalState.prototype.useObservableQuery = function () {
@@ -6302,7 +6361,7 @@ var InternalState = (function () {
6302
6361
  this.renderPromises
6303
6362
  && this.renderPromises.getSSRObservable(this.watchQueryOptions)
6304
6363
  || this.observable
6305
- || this.client.watchQuery(tslib.__assign({}, this.watchQueryOptions));
6364
+ || this.client.watchQuery(mergeOptions(this.queryHookOptions.defaultOptions, this.watchQueryOptions));
6306
6365
  this.obsQueryFields = React.useMemo(function () { return ({
6307
6366
  refetch: obsQuery.refetch.bind(obsQuery),
6308
6367
  reobserve: obsQuery.reobserve.bind(obsQuery),
@@ -6312,11 +6371,11 @@ var InternalState = (function () {
6312
6371
  stopPolling: obsQuery.stopPolling.bind(obsQuery),
6313
6372
  subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
6314
6373
  }); }, [obsQuery]);
6315
- if (this.renderPromises) {
6374
+ var ssrAllowed = !(this.queryHookOptions.ssr === false ||
6375
+ this.queryHookOptions.skip);
6376
+ if (this.renderPromises && ssrAllowed) {
6316
6377
  this.renderPromises.registerSSRObservable(obsQuery);
6317
- var ssrAllowed = !(this.queryHookOptions.ssr === false ||
6318
- this.queryHookOptions.skip);
6319
- if (ssrAllowed && obsQuery.getCurrentResult().loading) {
6378
+ if (obsQuery.getCurrentResult().loading) {
6320
6379
  this.renderPromises.addObservableQueryPromise(obsQuery);
6321
6380
  }
6322
6381
  }
@@ -6385,12 +6444,12 @@ var EAGER_METHODS = [
6385
6444
  function useLazyQuery(query, options) {
6386
6445
  var internalState = useInternalState(useApolloClient(options && options.client), query);
6387
6446
  var execOptionsRef = React.useRef();
6388
- var defaultOptions = internalState.client.defaultOptions.watchQuery;
6389
- var initialFetchPolicy = (options && options.fetchPolicy) ||
6390
- (execOptionsRef.current && execOptionsRef.current.fetchPolicy) ||
6391
- (defaultOptions && defaultOptions.fetchPolicy) ||
6392
- "cache-first";
6393
- var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign(tslib.__assign({}, options), execOptionsRef.current), { skip: !execOptionsRef.current }));
6447
+ var merged = execOptionsRef.current
6448
+ ? mergeOptions(options, execOptionsRef.current)
6449
+ : options;
6450
+ var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current }));
6451
+ var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
6452
+ internalState.getDefaultFetchPolicy();
6394
6453
  var result = Object.assign(useQueryResult, {
6395
6454
  called: !!execOptionsRef.current,
6396
6455
  });
@@ -6414,22 +6473,12 @@ function useLazyQuery(query, options) {
6414
6473
  }, []);
6415
6474
  Object.assign(result, eagerMethods);
6416
6475
  var execute = React.useCallback(function (executeOptions) {
6417
- var promise = result.reobserve(execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
6476
+ execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
6418
6477
  fetchPolicy: initialFetchPolicy,
6419
- }).then(function (apolloQueryResult) {
6420
- apolloQueryResult = apolloQueryResult || internalState["getCurrentResult"]();
6421
- if (apolloQueryResult.error ||
6422
- isNonEmptyArray(apolloQueryResult.errors)) {
6423
- var _a = result.observable.options.errorPolicy, errorPolicy = _a === void 0 ? "none" : _a;
6424
- if (errorPolicy === "none") {
6425
- throw apolloQueryResult.error || new ApolloError({
6426
- graphQLErrors: apolloQueryResult.errors,
6427
- });
6428
- }
6429
- }
6430
- return internalState.toQueryResult(apolloQueryResult);
6431
- }).then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
6432
- internalState.forceUpdate();
6478
+ };
6479
+ var promise = internalState
6480
+ .asyncUpdate()
6481
+ .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
6433
6482
  promise.catch(function () { });
6434
6483
  return promise;
6435
6484
  }, []);
@@ -6471,7 +6520,7 @@ function useMutation(mutation, options) {
6471
6520
  var mutationId = ++ref.current.mutationId;
6472
6521
  var clientOptions = mergeOptions(baseOptions, executeOptions);
6473
6522
  return client.mutate(clientOptions).then(function (response) {
6474
- var _a, _b;
6523
+ var _a, _b, _c;
6475
6524
  var data = response.data, errors = response.errors;
6476
6525
  var error = errors && errors.length > 0
6477
6526
  ? new ApolloError({ graphQLErrors: errors })
@@ -6489,11 +6538,11 @@ function useMutation(mutation, options) {
6489
6538
  setResult(ref.current.result = result_1);
6490
6539
  }
6491
6540
  }
6492
- (_a = baseOptions.onCompleted) === null || _a === void 0 ? void 0 : _a.call(baseOptions, response.data);
6493
- (_b = executeOptions.onCompleted) === null || _b === void 0 ? void 0 : _b.call(executeOptions, response.data);
6541
+ (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onCompleted) === null || _b === void 0 ? void 0 : _b.call(_a, response.data);
6542
+ (_c = executeOptions.onCompleted) === null || _c === void 0 ? void 0 : _c.call(executeOptions, response.data);
6494
6543
  return response;
6495
6544
  }).catch(function (error) {
6496
- var _a, _b;
6545
+ var _a, _b, _c, _d;
6497
6546
  if (mutationId === ref.current.mutationId &&
6498
6547
  ref.current.isMounted) {
6499
6548
  var result_2 = {
@@ -6507,9 +6556,9 @@ function useMutation(mutation, options) {
6507
6556
  setResult(ref.current.result = result_2);
6508
6557
  }
6509
6558
  }
6510
- if (baseOptions.onError || clientOptions.onError) {
6511
- (_a = baseOptions.onError) === null || _a === void 0 ? void 0 : _a.call(baseOptions, error);
6512
- (_b = executeOptions.onError) === null || _b === void 0 ? void 0 : _b.call(executeOptions, error);
6559
+ if (((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) || clientOptions.onError) {
6560
+ (_c = (_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onError) === null || _c === void 0 ? void 0 : _c.call(_b, error);
6561
+ (_d = executeOptions.onError) === null || _d === void 0 ? void 0 : _d.call(executeOptions, error);
6513
6562
  return { data: void 0, errors: error };
6514
6563
  }
6515
6564
  throw error;
@@ -6547,6 +6596,12 @@ function useSubscription(subscription, options) {
6547
6596
  context: options === null || options === void 0 ? void 0 : options.context,
6548
6597
  });
6549
6598
  }), observable = _b[0], setObservable = _b[1];
6599
+ var canResetObservableRef = React.useRef(false);
6600
+ React.useEffect(function () {
6601
+ return function () {
6602
+ canResetObservableRef.current = true;
6603
+ };
6604
+ }, []);
6550
6605
  var ref = React.useRef({ client: client, subscription: subscription, options: options });
6551
6606
  React.useEffect(function () {
6552
6607
  var _a, _b, _c, _d;
@@ -6555,7 +6610,7 @@ function useSubscription(subscription, options) {
6555
6610
  shouldResubscribe = !!shouldResubscribe(options);
6556
6611
  }
6557
6612
  if (options === null || options === void 0 ? void 0 : options.skip) {
6558
- if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip)) {
6613
+ if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip) || canResetObservableRef.current) {
6559
6614
  setResult({
6560
6615
  loading: false,
6561
6616
  data: void 0,
@@ -6563,13 +6618,16 @@ function useSubscription(subscription, options) {
6563
6618
  variables: options === null || options === void 0 ? void 0 : options.variables,
6564
6619
  });
6565
6620
  setObservable(null);
6621
+ canResetObservableRef.current = false;
6566
6622
  }
6567
6623
  }
6568
- else if (shouldResubscribe !== false && (client !== ref.current.client ||
6569
- subscription !== ref.current.subscription ||
6570
- (options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
6571
- !(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||
6572
- !equality.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) {
6624
+ else if ((shouldResubscribe !== false &&
6625
+ (client !== ref.current.client ||
6626
+ subscription !== ref.current.subscription ||
6627
+ (options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
6628
+ !(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||
6629
+ !equality.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) ||
6630
+ canResetObservableRef.current) {
6573
6631
  setResult({
6574
6632
  loading: true,
6575
6633
  data: void 0,
@@ -6582,9 +6640,10 @@ function useSubscription(subscription, options) {
6582
6640
  fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
6583
6641
  context: options === null || options === void 0 ? void 0 : options.context,
6584
6642
  }));
6643
+ canResetObservableRef.current = false;
6585
6644
  }
6586
6645
  Object.assign(ref.current, { client: client, subscription: subscription, options: options });
6587
- }, [client, subscription, options]);
6646
+ }, [client, subscription, options, canResetObservableRef.current]);
6588
6647
  React.useEffect(function () {
6589
6648
  if (!observable) {
6590
6649
  return;