@apollo/client 3.6.0-beta.9 → 3.6.0

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 (71) hide show
  1. package/apollo-client.cjs +325 -255
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/core/ApolloClient.d.ts +2 -3
  5. package/core/ApolloClient.d.ts.map +1 -1
  6. package/core/ApolloClient.js +2 -6
  7. package/core/ApolloClient.js.map +1 -1
  8. package/core/ObservableQuery.d.ts +9 -3
  9. package/core/ObservableQuery.d.ts.map +1 -1
  10. package/core/ObservableQuery.js +78 -41
  11. package/core/ObservableQuery.js.map +1 -1
  12. package/core/QueryInfo.d.ts.map +1 -1
  13. package/core/QueryInfo.js +4 -2
  14. package/core/QueryInfo.js.map +1 -1
  15. package/core/QueryManager.d.ts.map +1 -1
  16. package/core/QueryManager.js +26 -9
  17. package/core/QueryManager.js.map +1 -1
  18. package/core/core.cjs +115 -65
  19. package/core/core.cjs.map +1 -1
  20. package/core/watchQueryOptions.d.ts +3 -1
  21. package/core/watchQueryOptions.d.ts.map +1 -1
  22. package/core/watchQueryOptions.js.map +1 -1
  23. package/invariantErrorCodes.js +1 -1
  24. package/package.json +23 -21
  25. package/react/hooks/hooks.cjs +193 -180
  26. package/react/hooks/hooks.cjs.map +1 -1
  27. package/react/hooks/index.d.ts +1 -1
  28. package/react/hooks/index.d.ts.map +1 -1
  29. package/react/hooks/index.js +1 -1
  30. package/react/hooks/index.js.map +1 -1
  31. package/react/hooks/useLazyQuery.d.ts +2 -2
  32. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  33. package/react/hooks/useLazyQuery.js +38 -24
  34. package/react/hooks/useLazyQuery.js.map +1 -1
  35. package/react/hooks/useMutation.d.ts.map +1 -1
  36. package/react/hooks/useMutation.js +6 -3
  37. package/react/hooks/useMutation.js.map +1 -1
  38. package/react/hooks/useQuery.d.ts +33 -3
  39. package/react/hooks/useQuery.d.ts.map +1 -1
  40. package/react/hooks/useQuery.js +152 -134
  41. package/react/hooks/useQuery.js.map +1 -1
  42. package/react/ssr/RenderPromises.d.ts +2 -1
  43. package/react/ssr/RenderPromises.d.ts.map +1 -1
  44. package/react/ssr/RenderPromises.js +23 -1
  45. package/react/ssr/RenderPromises.js.map +1 -1
  46. package/react/ssr/ssr.cjs +23 -1
  47. package/react/ssr/ssr.cjs.map +1 -1
  48. package/react/types/types.d.ts +9 -13
  49. package/react/types/types.d.ts.map +1 -1
  50. package/react/types/types.js.map +1 -1
  51. package/testing/core/mocking/mockFetch.js +1 -1
  52. package/testing/core/mocking/mockFetch.js.map +1 -1
  53. package/utilities/common/mergeOptions.d.ts +5 -0
  54. package/utilities/common/mergeOptions.d.ts.map +1 -0
  55. package/utilities/common/mergeOptions.js +8 -0
  56. package/utilities/common/mergeOptions.js.map +1 -0
  57. package/utilities/graphql/transform.d.ts +2 -2
  58. package/utilities/graphql/transform.d.ts.map +1 -1
  59. package/utilities/graphql/transform.js +1 -1
  60. package/utilities/graphql/transform.js.map +1 -1
  61. package/utilities/index.d.ts +1 -0
  62. package/utilities/index.d.ts.map +1 -1
  63. package/utilities/index.js +1 -0
  64. package/utilities/index.js.map +1 -1
  65. package/utilities/utilities.cjs +8 -1
  66. package/utilities/utilities.cjs.map +1 -1
  67. package/version.js +1 -1
  68. package/react/hooks/options.d.ts +0 -3
  69. package/react/hooks/options.d.ts.map +0 -1
  70. package/react/hooks/options.js +0 -20
  71. package/react/hooks/options.js.map +0 -1
@@ -6,16 +6,13 @@ var globals = require('../../utilities/globals');
6
6
  var react = require('react');
7
7
  var context = require('../context');
8
8
  var tslib = require('tslib');
9
- var equal = require('@wry/equality');
10
9
  var errors = require('../../errors');
10
+ var index_js = require('use-sync-external-store/shim/index.js');
11
+ var equality = require('@wry/equality');
11
12
  var core = require('../../core');
12
13
  var parser = require('../parser');
13
14
  var utilities = require('../../utilities');
14
15
 
15
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
16
-
17
- var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
18
-
19
16
  function useApolloClient(override) {
20
17
  var context$1 = react.useContext(context.getApolloContext());
21
18
  var client = override || context$1.client;
@@ -25,26 +22,9 @@ function useApolloClient(override) {
25
22
  return client;
26
23
  }
27
24
 
28
- function useNormalizedOptions(optionsOrFunction) {
29
- var optionsRef = react.useRef();
30
- var options = optionsRef.current || Object.create(null);
31
- if (typeof optionsOrFunction === "function") {
32
- var newOptions = optionsOrFunction(options);
33
- if (newOptions !== options) {
34
- Object.assign(options, newOptions, newOptions.variables && {
35
- variables: tslib.__assign(tslib.__assign({}, options.variables), newOptions.variables),
36
- });
37
- }
38
- }
39
- else if (optionsOrFunction && !equal__default(optionsOrFunction, options)) {
40
- options = optionsOrFunction;
41
- }
42
- return optionsRef.current = options;
43
- }
44
-
45
25
  var hasOwnProperty = Object.prototype.hasOwnProperty;
46
- function useQuery(query, optionsOrFunction) {
47
- var options = useNormalizedOptions(optionsOrFunction);
26
+ function useQuery(query, options) {
27
+ if (options === void 0) { options = Object.create(null); }
48
28
  return useInternalState(useApolloClient(options.client), query).useQuery(options);
49
29
  }
50
30
  function useInternalState(client, query) {
@@ -65,118 +45,31 @@ var InternalState = (function () {
65
45
  function InternalState(client, query) {
66
46
  this.client = client;
67
47
  this.query = query;
48
+ this.ssrDisabledResult = utilities.maybeDeepFreeze({
49
+ loading: true,
50
+ data: void 0,
51
+ error: void 0,
52
+ networkStatus: core.NetworkStatus.loading,
53
+ });
54
+ this.skipStandbyResult = utilities.maybeDeepFreeze({
55
+ loading: false,
56
+ data: void 0,
57
+ error: void 0,
58
+ networkStatus: core.NetworkStatus.ready,
59
+ });
68
60
  this.toQueryResultCache = new (utilities.canUseWeakMap ? WeakMap : Map)();
69
61
  parser.verifyDocumentType(query, parser.DocumentType.Query);
70
62
  }
71
63
  InternalState.prototype.forceUpdate = function () {
72
64
  };
73
65
  InternalState.prototype.useQuery = function (options) {
66
+ var _this = this;
67
+ this.renderPromises = react.useContext(context.getApolloContext()).renderPromises;
74
68
  this.useOptions(options);
75
69
  var obsQuery = this.useObservableQuery();
76
- this.useSubscriptionEffect(obsQuery);
77
- var result = this.getCurrentResult();
78
- this.unsafeHandlePartialRefetch(result);
79
- return this.toQueryResult(result);
80
- };
81
- InternalState.prototype.useOptions = function (options) {
82
- this.renderPromises = react.useContext(context.getApolloContext()).renderPromises;
83
- var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
84
- if (!equal.equal(watchQueryOptions, this.watchQueryOptions)) {
85
- this.watchQueryOptions = watchQueryOptions;
86
- }
87
- this.ssrDisabled = !!(options && (options.ssr === false ||
88
- options.skip));
89
- this.onCompleted = options
90
- && options.onCompleted
91
- || InternalState.prototype.onCompleted;
92
- this.onError = options
93
- && options.onError
94
- || InternalState.prototype.onError;
95
- };
96
- InternalState.prototype.createWatchQueryOptions = function (_a) {
97
- var _b;
98
- if (_a === void 0) { _a = {}; }
99
- var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; _a.displayName; var otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "displayName"]);
100
- var watchQueryOptions = Object.assign(otherOptions, { query: this.query });
101
- if (skip) {
102
- watchQueryOptions.fetchPolicy = 'standby';
103
- }
104
- else if (((_b = watchQueryOptions.context) === null || _b === void 0 ? void 0 : _b.renderPromises) &&
105
- (watchQueryOptions.fetchPolicy === 'network-only' ||
106
- watchQueryOptions.fetchPolicy === 'cache-and-network')) {
107
- watchQueryOptions.fetchPolicy = 'cache-first';
108
- }
109
- else if (!watchQueryOptions.fetchPolicy) {
110
- var defaultOptions = this.client.defaultOptions.watchQuery;
111
- watchQueryOptions.fetchPolicy =
112
- defaultOptions && defaultOptions.fetchPolicy || 'cache-first';
113
- }
114
- if (!watchQueryOptions.variables) {
115
- watchQueryOptions.variables = {};
116
- }
117
- return watchQueryOptions;
118
- };
119
- InternalState.prototype.onCompleted = function (data) { };
120
- InternalState.prototype.onError = function (error) { };
121
- InternalState.prototype.useObservableQuery = function () {
122
- var _this = this;
123
- var obsQuery = this.observable =
124
- this.renderPromises
125
- && this.renderPromises.getSSRObservable(this.watchQueryOptions)
126
- || this.observable
127
- || this.client.watchQuery(this.watchQueryOptions);
128
- this.obsQueryFields = react.useMemo(function () { return ({
129
- refetch: obsQuery.refetch.bind(obsQuery),
130
- fetchMore: obsQuery.fetchMore.bind(obsQuery),
131
- updateQuery: obsQuery.updateQuery.bind(obsQuery),
132
- startPolling: obsQuery.startPolling.bind(obsQuery),
133
- stopPolling: obsQuery.stopPolling.bind(obsQuery),
134
- subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
135
- }); }, [obsQuery]);
136
- if (this.renderPromises) {
137
- this.renderPromises.registerSSRObservable(obsQuery);
138
- if (!this.ssrDisabled && obsQuery.getCurrentResult().loading) {
139
- this.renderPromises.addQueryPromise({
140
- getOptions: function () { return obsQuery.options; },
141
- fetchData: function () { return new Promise(function (resolve) {
142
- var sub = obsQuery.subscribe({
143
- next: function (result) {
144
- if (!result.loading) {
145
- resolve();
146
- sub.unsubscribe();
147
- }
148
- },
149
- error: function () {
150
- resolve();
151
- sub.unsubscribe();
152
- },
153
- complete: function () {
154
- resolve();
155
- },
156
- });
157
- }); },
158
- }, function () { return null; });
159
- obsQuery.setOptions(this.watchQueryOptions).catch(function () { });
160
- }
161
- }
162
- var prevOptionsRef = react.useRef({
163
- watchQueryOptions: this.watchQueryOptions,
164
- });
165
- react.useEffect(function () {
166
- if (_this.renderPromises) ;
167
- else if (_this.watchQueryOptions !== prevOptionsRef.current.watchQueryOptions) {
168
- obsQuery.setOptions(_this.watchQueryOptions).catch(function () { });
169
- prevOptionsRef.current.watchQueryOptions = _this.watchQueryOptions;
170
- _this.setResult(obsQuery.getCurrentResult());
171
- }
172
- }, [obsQuery, this.watchQueryOptions]);
173
- return obsQuery;
174
- };
175
- InternalState.prototype.useSubscriptionEffect = function (obsQuery) {
176
- var _this = this;
177
- react.useEffect(function () {
70
+ var result = index_js.useSyncExternalStore(react.useCallback(function () {
178
71
  if (_this.renderPromises) {
179
- return;
72
+ return function () { };
180
73
  }
181
74
  var onNext = function () {
182
75
  var previousResult = _this.result;
@@ -184,7 +77,7 @@ var InternalState = (function () {
184
77
  if (previousResult &&
185
78
  previousResult.loading === result.loading &&
186
79
  previousResult.networkStatus === result.networkStatus &&
187
- equal.equal(previousResult.data, result.data)) {
80
+ equality.equal(previousResult.data, result.data)) {
188
81
  return;
189
82
  }
190
83
  _this.setResult(result);
@@ -205,7 +98,7 @@ var InternalState = (function () {
205
98
  var previousResult = _this.result;
206
99
  if (!previousResult ||
207
100
  (previousResult && previousResult.loading) ||
208
- !equal.equal(error, previousResult.error)) {
101
+ !equality.equal(error, previousResult.error)) {
209
102
  _this.setResult({
210
103
  data: (previousResult && previousResult.data),
211
104
  error: error,
@@ -220,7 +113,117 @@ var InternalState = (function () {
220
113
  obsQuery,
221
114
  this.renderPromises,
222
115
  this.client.disableNetworkFetches,
223
- ]);
116
+ ]), function () { return _this.getCurrentResult(); });
117
+ this.unsafeHandlePartialRefetch(result);
118
+ return this.toQueryResult(result);
119
+ };
120
+ InternalState.prototype.useOptions = function (options) {
121
+ var _a;
122
+ var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
123
+ var currentWatchQueryOptions = this.watchQueryOptions;
124
+ var resolveFetchBlockingPromise;
125
+ if (!equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
126
+ this.watchQueryOptions = watchQueryOptions;
127
+ if (currentWatchQueryOptions && this.observable) {
128
+ this.observable.reobserve(tslib.__assign({ fetchBlockingPromise: new Promise(function (resolve) {
129
+ resolveFetchBlockingPromise = resolve;
130
+ }) }, watchQueryOptions));
131
+ this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
132
+ this.result = void 0;
133
+ }
134
+ }
135
+ useUnblockFetchEffect(this.renderPromises, resolveFetchBlockingPromise);
136
+ this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;
137
+ this.onError = options.onError || InternalState.prototype.onError;
138
+ if ((this.renderPromises || this.client.disableNetworkFetches) &&
139
+ this.queryHookOptions.ssr === false) {
140
+ this.result = this.ssrDisabledResult;
141
+ }
142
+ else if (this.queryHookOptions.skip ||
143
+ this.watchQueryOptions.fetchPolicy === 'standby') {
144
+ this.result = this.skipStandbyResult;
145
+ }
146
+ else if (this.result === this.ssrDisabledResult ||
147
+ this.result === this.skipStandbyResult) {
148
+ this.result = void 0;
149
+ }
150
+ };
151
+ InternalState.prototype.createWatchQueryOptions = function (_a) {
152
+ if (_a === void 0) { _a = {}; }
153
+ 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"]);
154
+ var toMerge = [];
155
+ var globalDefaults = this.client.defaultOptions.watchQuery;
156
+ if (globalDefaults)
157
+ toMerge.push(globalDefaults);
158
+ if (defaultOptions)
159
+ toMerge.push(defaultOptions);
160
+ var latestOptions = this.observable && this.observable.options;
161
+ if (latestOptions && toMerge.length) {
162
+ var defaults_1 = toMerge.reduce(core.mergeOptions, Object.create(null));
163
+ toMerge.length = 1;
164
+ toMerge[0] = defaults_1;
165
+ Object.keys(defaults_1).forEach(function (defaultOptionName) {
166
+ var currentOptionValue = latestOptions[defaultOptionName];
167
+ if (hasOwnProperty.call(latestOptions, defaultOptionName) &&
168
+ !equality.equal(defaults_1[defaultOptionName], currentOptionValue)) {
169
+ defaults_1[defaultOptionName] = defaultOptionName === "variables"
170
+ ? tslib.__assign(tslib.__assign({}, defaults_1.variables), currentOptionValue) : currentOptionValue;
171
+ }
172
+ });
173
+ }
174
+ toMerge.push(otherOptions);
175
+ var merged = toMerge.reduce(core.mergeOptions, Object.create(null));
176
+ var watchQueryOptions = Object.assign(merged, { query: this.query });
177
+ if (this.renderPromises &&
178
+ (watchQueryOptions.fetchPolicy === 'network-only' ||
179
+ watchQueryOptions.fetchPolicy === 'cache-and-network')) {
180
+ watchQueryOptions.fetchPolicy = 'cache-first';
181
+ }
182
+ else if (!watchQueryOptions.fetchPolicy) {
183
+ watchQueryOptions.fetchPolicy = 'cache-first';
184
+ }
185
+ if (skip) {
186
+ var _b = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? watchQueryOptions.fetchPolicy : _b;
187
+ Object.assign(watchQueryOptions, {
188
+ initialFetchPolicy: initialFetchPolicy,
189
+ fetchPolicy: 'standby',
190
+ });
191
+ }
192
+ if (!watchQueryOptions.variables) {
193
+ watchQueryOptions.variables = {};
194
+ }
195
+ return watchQueryOptions;
196
+ };
197
+ InternalState.prototype.onCompleted = function (data) { };
198
+ InternalState.prototype.onError = function (error) { };
199
+ InternalState.prototype.useObservableQuery = function () {
200
+ var resolveFetchBlockingPromise;
201
+ var obsQuery = this.observable =
202
+ this.renderPromises
203
+ && this.renderPromises.getSSRObservable(this.watchQueryOptions)
204
+ || this.observable
205
+ || this.client.watchQuery(tslib.__assign({ fetchBlockingPromise: new Promise(function (resolve) {
206
+ resolveFetchBlockingPromise = resolve;
207
+ }) }, this.watchQueryOptions));
208
+ useUnblockFetchEffect(this.renderPromises, resolveFetchBlockingPromise);
209
+ this.obsQueryFields = react.useMemo(function () { return ({
210
+ refetch: obsQuery.refetch.bind(obsQuery),
211
+ reobserve: obsQuery.reobserve.bind(obsQuery),
212
+ fetchMore: obsQuery.fetchMore.bind(obsQuery),
213
+ updateQuery: obsQuery.updateQuery.bind(obsQuery),
214
+ startPolling: obsQuery.startPolling.bind(obsQuery),
215
+ stopPolling: obsQuery.stopPolling.bind(obsQuery),
216
+ subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
217
+ }); }, [obsQuery]);
218
+ if (this.renderPromises) {
219
+ this.renderPromises.registerSSRObservable(obsQuery);
220
+ var ssrAllowed = !(this.queryHookOptions.ssr === false ||
221
+ this.queryHookOptions.skip);
222
+ if (ssrAllowed && obsQuery.getCurrentResult().loading) {
223
+ this.renderPromises.addObservableQueryPromise(obsQuery);
224
+ }
225
+ }
226
+ return obsQuery;
224
227
  };
225
228
  InternalState.prototype.setResult = function (nextResult) {
226
229
  var previousResult = this.result;
@@ -242,30 +245,10 @@ var InternalState = (function () {
242
245
  }
243
246
  };
244
247
  InternalState.prototype.getCurrentResult = function () {
245
- var result = this.result;
246
- if (!result) {
247
- result = this.result = this.observable.getCurrentResult();
248
- this.handleErrorOrCompleted(result);
249
- }
250
- if ((this.renderPromises || this.client.disableNetworkFetches) &&
251
- this.queryHookOptions.ssr === false) {
252
- result = {
253
- loading: true,
254
- data: void 0,
255
- error: void 0,
256
- networkStatus: core.NetworkStatus.loading,
257
- };
248
+ if (!this.result) {
249
+ this.handleErrorOrCompleted(this.result = this.observable.getCurrentResult());
258
250
  }
259
- else if (this.queryHookOptions.skip ||
260
- this.queryHookOptions.fetchPolicy === 'standby') {
261
- result = {
262
- loading: false,
263
- data: void 0,
264
- error: void 0,
265
- networkStatus: core.NetworkStatus.ready,
266
- };
267
- }
268
- return result;
251
+ return this.result;
269
252
  };
270
253
  InternalState.prototype.toQueryResult = function (result) {
271
254
  var queryResult = this.toQueryResultCache.get(result);
@@ -293,34 +276,52 @@ var InternalState = (function () {
293
276
  };
294
277
  return InternalState;
295
278
  }());
279
+ function useUnblockFetchEffect(renderPromises, resolveFetchBlockingPromise) {
280
+ if (resolveFetchBlockingPromise) {
281
+ if (renderPromises) {
282
+ resolveFetchBlockingPromise(true);
283
+ }
284
+ else {
285
+ setTimeout(function () { return resolveFetchBlockingPromise(false); }, 5000);
286
+ }
287
+ }
288
+ react.useEffect(function () {
289
+ if (resolveFetchBlockingPromise) {
290
+ resolveFetchBlockingPromise(true);
291
+ }
292
+ }, [resolveFetchBlockingPromise]);
293
+ }
296
294
 
297
295
  var EAGER_METHODS = [
298
296
  'refetch',
297
+ 'reobserve',
299
298
  'fetchMore',
300
299
  'updateQuery',
301
300
  'startPolling',
302
301
  'subscribeToMore',
303
302
  ];
304
- function useLazyQuery(query, optionsOrFunction) {
305
- var options = useNormalizedOptions(optionsOrFunction);
306
- var _a = react.useState({
307
- called: false,
308
- }), execution = _a[0], setExecution = _a[1];
309
- var result = useQuery(query, tslib.__assign(tslib.__assign(tslib.__assign({}, options), execution.options), { fetchPolicy: execution.called ? options === null || options === void 0 ? void 0 : options.fetchPolicy : 'standby', skip: undefined }));
310
- if (!execution.called) {
311
- result = tslib.__assign(tslib.__assign({}, result), { loading: false, data: void 0, error: void 0, called: false });
312
- }
303
+ function useLazyQuery(query, options) {
304
+ var internalState = useInternalState(useApolloClient(options && options.client), query);
305
+ var execOptionsRef = react.useRef();
306
+ var defaultOptions = internalState.client.defaultOptions.watchQuery;
307
+ var initialFetchPolicy = (options && options.fetchPolicy) ||
308
+ (execOptionsRef.current && execOptionsRef.current.fetchPolicy) ||
309
+ (defaultOptions && defaultOptions.fetchPolicy) ||
310
+ "cache-first";
311
+ var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign(tslib.__assign({}, options), execOptionsRef.current), { skip: !execOptionsRef.current }));
312
+ var result = Object.assign(useQueryResult, {
313
+ called: !!execOptionsRef.current,
314
+ });
313
315
  var eagerMethods = react.useMemo(function () {
314
316
  var eagerMethods = {};
315
317
  var _loop_1 = function (key) {
316
318
  var method = result[key];
317
319
  eagerMethods[key] = function () {
318
- var args = [];
319
- for (var _i = 0; _i < arguments.length; _i++) {
320
- args[_i] = arguments[_i];
320
+ if (!execOptionsRef.current) {
321
+ execOptionsRef.current = Object.create(null);
322
+ internalState.forceUpdate();
321
323
  }
322
- setExecution(function (execution) { return (tslib.__assign(tslib.__assign({}, execution), { called: true })); });
323
- return method.apply(void 0, args);
324
+ return method.apply(this, arguments);
324
325
  };
325
326
  };
326
327
  for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {
@@ -329,15 +330,24 @@ function useLazyQuery(query, optionsOrFunction) {
329
330
  }
330
331
  return eagerMethods;
331
332
  }, []);
332
- result.error = result.error || void 0;
333
333
  Object.assign(result, eagerMethods);
334
334
  var execute = react.useCallback(function (executeOptions) {
335
- setExecution({ called: true, options: executeOptions });
336
- var promise = result.refetch(executeOptions === null || executeOptions === void 0 ? void 0 : executeOptions.variables).then(function (result1) {
337
- var result2 = tslib.__assign(tslib.__assign({}, result), { data: result1.data, error: result1.error, called: true, loading: false });
338
- Object.assign(result2, eagerMethods);
339
- return result2;
340
- });
335
+ var promise = result.reobserve(execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
336
+ fetchPolicy: initialFetchPolicy,
337
+ }).then(function (apolloQueryResult) {
338
+ apolloQueryResult = apolloQueryResult || internalState["getCurrentResult"]();
339
+ if (apolloQueryResult.error ||
340
+ utilities.isNonEmptyArray(apolloQueryResult.errors)) {
341
+ var _a = result.observable.options.errorPolicy, errorPolicy = _a === void 0 ? "none" : _a;
342
+ if (errorPolicy === "none") {
343
+ throw apolloQueryResult.error || new errors.ApolloError({
344
+ graphQLErrors: apolloQueryResult.errors,
345
+ });
346
+ }
347
+ }
348
+ return internalState.toQueryResult(apolloQueryResult);
349
+ }).then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
350
+ internalState.forceUpdate();
341
351
  promise.catch(function () { });
342
352
  return promise;
343
353
  }, []);
@@ -393,7 +403,7 @@ function useMutation(mutation, options) {
393
403
  error: error,
394
404
  client: client,
395
405
  };
396
- if (ref.current.isMounted && !equal.equal(ref.current.result, result_1)) {
406
+ if (ref.current.isMounted && !equality.equal(ref.current.result, result_1)) {
397
407
  setResult(ref.current.result = result_1);
398
408
  }
399
409
  }
@@ -411,7 +421,7 @@ function useMutation(mutation, options) {
411
421
  called: true,
412
422
  client: client,
413
423
  };
414
- if (!equal.equal(ref.current.result, result_2)) {
424
+ if (!equality.equal(ref.current.result, result_2)) {
415
425
  setResult(ref.current.result = result_2);
416
426
  }
417
427
  }
@@ -426,9 +436,12 @@ function useMutation(mutation, options) {
426
436
  var reset = react.useCallback(function () {
427
437
  setResult({ called: false, loading: false, client: client });
428
438
  }, []);
429
- react.useEffect(function () { return function () {
430
- ref.current.isMounted = false;
431
- }; }, []);
439
+ react.useEffect(function () {
440
+ ref.current.isMounted = true;
441
+ return function () {
442
+ ref.current.isMounted = false;
443
+ };
444
+ }, []);
432
445
  return [execute, tslib.__assign({ reset: reset }, result)];
433
446
  }
434
447
 
@@ -474,7 +487,7 @@ function useSubscription(subscription, options) {
474
487
  subscription !== ref.current.subscription ||
475
488
  (options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
476
489
  !(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||
477
- !equal.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) {
490
+ !equality.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) {
478
491
  setResult({
479
492
  loading: true,
480
493
  data: void 0,