@apollo/client 3.10.4 → 3.10.6

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 (57) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/apollo-client.cjs +63 -36
  3. package/apollo-client.cjs.map +1 -1
  4. package/apollo-client.min.cjs +1 -1
  5. package/core/core.cjs +1 -1
  6. package/core/core.cjs.map +1 -1
  7. package/core/core.cjs.native.js +1 -1
  8. package/dev/dev.cjs +1 -1
  9. package/dev/dev.cjs.map +1 -1
  10. package/dev/dev.cjs.native.js +1 -1
  11. package/link/batch-http/batch-http.cjs +6 -5
  12. package/link/batch-http/batch-http.cjs.map +1 -1
  13. package/link/batch-http/batch-http.cjs.native.js +6 -5
  14. package/link/batch-http/batchHttpLink.js +15 -10
  15. package/link/batch-http/batchHttpLink.js.map +1 -1
  16. package/link/error/error.cjs +3 -2
  17. package/link/error/error.cjs.map +1 -1
  18. package/link/error/error.cjs.native.js +3 -2
  19. package/link/error/index.js +3 -2
  20. package/link/error/index.js.map +1 -1
  21. package/package.json +10 -6
  22. package/react/hooks/hooks.cjs +61 -34
  23. package/react/hooks/hooks.cjs.map +1 -1
  24. package/react/hooks/hooks.cjs.native.js +61 -34
  25. package/react/hooks/internal/useRenderGuard.js +37 -12
  26. package/react/hooks/internal/useRenderGuard.js.map +1 -1
  27. package/react/hooks/useLazyQuery.js +7 -8
  28. package/react/hooks/useLazyQuery.js.map +1 -1
  29. package/react/hooks/useLoadableQuery.d.ts +1 -1
  30. package/react/hooks/useLoadableQuery.js +9 -2
  31. package/react/hooks/useLoadableQuery.js.map +1 -1
  32. package/react/hooks/useMutation.js +11 -7
  33. package/react/hooks/useMutation.js.map +1 -1
  34. package/react/hooks/useQuery.d.ts +2 -2
  35. package/react/hooks/useQuery.js +26 -12
  36. package/react/hooks/useQuery.js.map +1 -1
  37. package/react/hooks/useQueryRefHandlers.js +4 -0
  38. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  39. package/react/hooks/useReadQuery.js +5 -1
  40. package/react/hooks/useReadQuery.js.map +1 -1
  41. package/react/hooks/useSubscription.js +4 -0
  42. package/react/hooks/useSubscription.js.map +1 -1
  43. package/react/hooks/useSuspenseQuery.js +2 -2
  44. package/react/hooks/useSuspenseQuery.js.map +1 -1
  45. package/react/hooks/useSyncExternalStore.js +4 -0
  46. package/react/hooks/useSyncExternalStore.js.map +1 -1
  47. package/react/internal/internal.cjs +1 -1
  48. package/react/internal/internal.cjs.map +1 -1
  49. package/react/internal/internal.cjs.native.js +1 -1
  50. package/testing/core/mocking/mockLink.d.ts +8 -3
  51. package/testing/core/mocking/mockLink.js.map +1 -1
  52. package/testing/internal/profile/profile.js +6 -2
  53. package/testing/internal/profile/profile.js.map +1 -1
  54. package/utilities/globals/globals.cjs +1 -1
  55. package/utilities/globals/globals.cjs.map +1 -1
  56. package/utilities/globals/globals.cjs.native.js +1 -1
  57. package/version.js +1 -1
@@ -33,9 +33,10 @@ export function onError(errorHandler) {
33
33
  operation: operation,
34
34
  networkError: networkError,
35
35
  //Network errors can return GraphQL errors on for example a 403
36
- graphQLErrors: networkError &&
36
+ graphQLErrors: (networkError &&
37
37
  networkError.result &&
38
- networkError.result.errors,
38
+ networkError.result.errors) ||
39
+ void 0,
39
40
  forward: forward,
40
41
  });
41
42
  if (retriedResult) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/error/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsB9C,MAAM,UAAU,OAAO,CAAC,YAA0B;IAChD,OAAO,IAAI,UAAU,CAAC,UAAC,SAAS,EAAE,OAAO;QACvC,OAAO,IAAI,UAAU,CAAC,UAAC,QAAQ;YAC7B,IAAI,GAAQ,CAAC;YACb,IAAI,UAAe,CAAC;YACpB,IAAI,aAAkB,CAAC;YAEvB,IAAI,CAAC;gBACH,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;oBACjC,IAAI,EAAE,UAAC,MAAM;wBACX,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;4BAClB,aAAa,GAAG,YAAY,CAAC;gCAC3B,aAAa,EAAE,MAAM,CAAC,MAAM;gCAC5B,QAAQ,EAAE,MAAM;gCAChB,SAAS,WAAA;gCACT,OAAO,SAAA;6BACR,CAAC,CAAC;4BAEH,IAAI,aAAa,EAAE,CAAC;gCAClB,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;oCACnC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oCAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;oCACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;iCAC3C,CAAC,CAAC;gCACH,OAAO;4BACT,CAAC;wBACH,CAAC;wBACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxB,CAAC;oBACD,KAAK,EAAE,UAAC,YAAY;wBAClB,aAAa,GAAG,YAAY,CAAC;4BAC3B,SAAS,WAAA;4BACT,YAAY,cAAA;4BACZ,+DAA+D;4BAC/D,aAAa,EACX,YAAY;gCACZ,YAAY,CAAC,MAAM;gCACnB,YAAY,CAAC,MAAM,CAAC,MAAM;4BAC5B,OAAO,SAAA;yBACR,CAAC,CAAC;wBACH,IAAI,aAAa,EAAE,CAAC;4BAClB,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;gCACnC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gCAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gCACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;6BAC3C,CAAC,CAAC;4BACH,OAAO;wBACT,CAAC;wBACD,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAC/B,CAAC;oBACD,QAAQ,EAAE;wBACR,+DAA+D;wBAC/D,yBAAyB;wBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;4BACnB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACrC,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,YAAY,CAAC,EAAE,YAAY,EAAE,CAAU,EAAE,SAAS,WAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;gBAC/D,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,OAAO;gBACL,IAAI,GAAG;oBAAE,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC3B,IAAI,UAAU;oBAAE,GAAG,CAAC,WAAW,EAAE,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;IAA+B,6BAAU;IAEvC,mBAAY,YAAoC;QAC9C,YAAA,MAAK,WAAE,SAAC;QACR,KAAI,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;;IACpC,CAAC;IAEM,2BAAO,GAAd,UACE,SAAoB,EACpB,OAAiB;QAEjB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACH,gBAAC;AAAD,CAAC,AAbD,CAA+B,UAAU,GAaxC","sourcesContent":["import type { ExecutionResult } from \"graphql\";\n\nimport type { NetworkError, GraphQLErrors } from \"../../errors/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport type { Operation, FetchResult, NextLink } from \"../core/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\n\nexport interface ErrorResponse {\n graphQLErrors?: GraphQLErrors;\n networkError?: NetworkError;\n response?: ExecutionResult;\n operation: Operation;\n forward: NextLink;\n}\n\nexport namespace ErrorLink {\n /**\n * Callback to be triggered when an error occurs within the link stack.\n */\n export interface ErrorHandler {\n (error: ErrorResponse): Observable<FetchResult> | void;\n }\n}\n\n// For backwards compatibility.\nexport import ErrorHandler = ErrorLink.ErrorHandler;\n\nexport function onError(errorHandler: ErrorHandler): ApolloLink {\n return new ApolloLink((operation, forward) => {\n return new Observable((observer) => {\n let sub: any;\n let retriedSub: any;\n let retriedResult: any;\n\n try {\n sub = forward(operation).subscribe({\n next: (result) => {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation,\n forward,\n });\n\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: (networkError) => {\n retriedResult = errorHandler({\n operation,\n networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors:\n networkError &&\n networkError.result &&\n networkError.result.errors,\n forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: () => {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n } catch (e) {\n errorHandler({ networkError: e as Error, operation, forward });\n observer.error(e);\n }\n\n return () => {\n if (sub) sub.unsubscribe();\n if (retriedSub) sub.unsubscribe();\n };\n });\n });\n}\n\nexport class ErrorLink extends ApolloLink {\n private link: ApolloLink;\n constructor(errorHandler: ErrorLink.ErrorHandler) {\n super();\n this.link = onError(errorHandler);\n }\n\n public request(\n operation: Operation,\n forward: NextLink\n ): Observable<FetchResult> | null {\n return this.link.request(operation, forward);\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/error/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExecutionResult } from \"graphql\";\n\nimport type { NetworkError, GraphQLErrors } from \"../../errors/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport type { Operation, FetchResult, NextLink } from \"../core/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\n\nexport interface ErrorResponse {\n graphQLErrors?: GraphQLErrors;\n networkError?: NetworkError;\n response?: ExecutionResult;\n operation: Operation;\n forward: NextLink;\n}\n\nexport namespace ErrorLink {\n /**\n * Callback to be triggered when an error occurs within the link stack.\n */\n export interface ErrorHandler {\n (error: ErrorResponse): Observable<FetchResult> | void;\n }\n}\n\n// For backwards compatibility.\nexport import ErrorHandler = ErrorLink.ErrorHandler;\n\nexport function onError(errorHandler: ErrorHandler): ApolloLink {\n return new ApolloLink((operation, forward) => {\n return new Observable((observer) => {\n let sub: any;\n let retriedSub: any;\n let retriedResult: any;\n\n try {\n sub = forward(operation).subscribe({\n next: (result) => {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation,\n forward,\n });\n\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: (networkError) => {\n retriedResult = errorHandler({\n operation,\n networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors:\n (networkError &&\n networkError.result &&\n networkError.result.errors) ||\n void 0,\n forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: () => {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n } catch (e) {\n errorHandler({ networkError: e as Error, operation, forward });\n observer.error(e);\n }\n\n return () => {\n if (sub) sub.unsubscribe();\n if (retriedSub) sub.unsubscribe();\n };\n });\n });\n}\n\nexport class ErrorLink extends ApolloLink {\n private link: ApolloLink;\n constructor(errorHandler: ErrorLink.ErrorHandler) {\n super();\n this.link = onError(errorHandler);\n }\n\n public request(\n operation: Operation,\n forward: NextLink\n ): Observable<FetchResult> | null {\n return this.link.request(operation, forward);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo/client",
3
- "version": "3.10.4",
3
+ "version": "3.10.6",
4
4
  "description": "A fully-featured caching GraphQL client.",
5
5
  "private": false,
6
6
  "keywords": [
@@ -95,11 +95,11 @@
95
95
  "@types/react-dom": "18.3.0",
96
96
  "@types/relay-runtime": "14.1.23",
97
97
  "@types/use-sync-external-store": "0.0.6",
98
- "@typescript-eslint/eslint-plugin": "7.8.0",
99
- "@typescript-eslint/parser": "7.8.0",
100
- "@typescript-eslint/rule-tester": "7.8.0",
101
- "@typescript-eslint/types": "7.8.0",
102
- "@typescript-eslint/utils": "7.8.0",
98
+ "@typescript-eslint/eslint-plugin": "7.9.0",
99
+ "@typescript-eslint/parser": "7.9.0",
100
+ "@typescript-eslint/rule-tester": "7.9.0",
101
+ "@typescript-eslint/types": "7.9.0",
102
+ "@typescript-eslint/utils": "7.9.0",
103
103
  "acorn": "8.11.3",
104
104
  "blob-polyfill": "7.0.20220408",
105
105
  "bytes": "3.1.2",
@@ -108,6 +108,8 @@
108
108
  "eslint-import-resolver-typescript": "3.6.1",
109
109
  "eslint-plugin-import": "npm:@phryneas/eslint-plugin-import@2.27.5-pr.2813.2817.199971c",
110
110
  "eslint-plugin-local-rules": "2.0.1",
111
+ "eslint-plugin-react-compiler": "0.0.0-experimental-c8b3f72-20240517",
112
+ "eslint-plugin-react-hooks": "4.6.2",
111
113
  "eslint-plugin-testing-library": "6.2.2",
112
114
  "expect-type": "0.19.0",
113
115
  "fetch-mock": "9.11.0",
@@ -122,8 +124,10 @@
122
124
  "prettier": "3.1.1",
123
125
  "react": "18.3.1",
124
126
  "react-17": "npm:react@^17",
127
+ "react-19": "npm:react@19.0.0-rc-cc1ec60d0d-20240607",
125
128
  "react-dom": "18.3.1",
126
129
  "react-dom-17": "npm:react-dom@^17",
130
+ "react-dom-19": "npm:react-dom@19.0.0-rc-cc1ec60d0d-20240607",
127
131
  "react-error-boundary": "4.0.13",
128
132
  "recast": "0.23.6",
129
133
  "resolve": "1.22.8",
@@ -95,15 +95,28 @@ function useDeepMemo(memoFn, deps) {
95
95
  return ref.current.value;
96
96
  }
97
97
 
98
- function getRenderDispatcher() {
99
- var _a, _b;
100
- return (_b = (_a = React__namespace.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED) === null || _a === void 0 ? void 0 : _a.ReactCurrentDispatcher) === null || _b === void 0 ? void 0 : _b.current;
101
- }
102
- var RenderDispatcher = null;
98
+ var useIsomorphicLayoutEffect = utilities.canUseDOM ? React__namespace.useLayoutEffect : React__namespace.useEffect;
99
+
100
+ var Ctx;
101
+ function noop() { }
103
102
  function useRenderGuard() {
104
- RenderDispatcher = getRenderDispatcher();
105
- return React__namespace.useCallback(function () {
106
- return (RenderDispatcher != null && RenderDispatcher === getRenderDispatcher());
103
+ if (!Ctx) {
104
+ Ctx = React__namespace.createContext(null);
105
+ }
106
+ return React__namespace.useCallback(
107
+ function () {
108
+ var orig = console.error;
109
+ try {
110
+ console.error = noop;
111
+ React__namespace["useContext" ](Ctx);
112
+ return true;
113
+ }
114
+ catch (e) {
115
+ return false;
116
+ }
117
+ finally {
118
+ console.error = orig;
119
+ }
107
120
  }, []);
108
121
  }
109
122
 
@@ -148,14 +161,16 @@ function _useQuery(query, options) {
148
161
  return useInternalState(useApolloClient(options.client), query).useQuery(options);
149
162
  }
150
163
  function useInternalState(client, query) {
151
- var stateRef = React__namespace.useRef();
152
- if (!stateRef.current ||
153
- client !== stateRef.current.client ||
154
- query !== stateRef.current.query) {
155
- stateRef.current = new InternalState(client, query, stateRef.current);
164
+ var forceUpdateState = React__namespace.useReducer(function (tick) { return tick + 1; }, 0)[1];
165
+ function createInternalState(previous) {
166
+ return Object.assign(new InternalState(client, query, previous), {
167
+ forceUpdateState: forceUpdateState,
168
+ });
169
+ }
170
+ var _a = React__namespace.useState(createInternalState), state = _a[0], updateState = _a[1];
171
+ if (client !== state.client || query !== state.query) {
172
+ updateState((state = createInternalState(state)));
156
173
  }
157
- var state = stateRef.current;
158
- state.forceUpdateState = React__namespace.useReducer(function (tick) { return tick + 1; }, 0)[1];
159
174
  return state;
160
175
  }
161
176
  var InternalState = (function () {
@@ -218,7 +233,8 @@ var InternalState = (function () {
218
233
  this.renderPromises = React__namespace.useContext(context.getApolloContext()).renderPromises;
219
234
  this.useOptions(options);
220
235
  var obsQuery = this.useObservableQuery();
221
- var result = useSyncExternalStore(React__namespace.useCallback(function (handleStoreChange) {
236
+ var result = useSyncExternalStore(
237
+ React__namespace.useCallback(function (handleStoreChange) {
222
238
  if (_this.renderPromises) {
223
239
  return function () { };
224
240
  }
@@ -453,17 +469,15 @@ function useLazyQuery(query, options) {
453
469
  var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current }));
454
470
  var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
455
471
  internalState.getDefaultFetchPolicy();
456
- var result = Object.assign(useQueryResult, {
457
- called: !!execOptionsRef.current,
458
- });
472
+ var forceUpdateState = internalState.forceUpdateState, obsQueryFields = internalState.obsQueryFields;
459
473
  var eagerMethods = React__namespace.useMemo(function () {
460
474
  var eagerMethods = {};
461
475
  var _loop_1 = function (key) {
462
- var method = result[key];
476
+ var method = obsQueryFields[key];
463
477
  eagerMethods[key] = function () {
464
478
  if (!execOptionsRef.current) {
465
479
  execOptionsRef.current = Object.create(null);
466
- internalState.forceUpdateState();
480
+ forceUpdateState();
467
481
  }
468
482
  return method.apply(this, arguments);
469
483
  };
@@ -473,8 +487,9 @@ function useLazyQuery(query, options) {
473
487
  _loop_1(key);
474
488
  }
475
489
  return eagerMethods;
476
- }, []);
477
- Object.assign(result, eagerMethods);
490
+ }, [forceUpdateState, obsQueryFields]);
491
+ var called = !!execOptionsRef.current;
492
+ var result = React__namespace.useMemo(function () { return (tslib.__assign(tslib.__assign(tslib.__assign({}, useQueryResult), eagerMethods), { called: called })); }, [useQueryResult, eagerMethods, called]);
478
493
  var execute = React__namespace.useCallback(function (executeOptions) {
479
494
  execOptionsRef.current =
480
495
  executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
@@ -486,7 +501,7 @@ function useLazyQuery(query, options) {
486
501
  .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
487
502
  promise.catch(function () { });
488
503
  return promise;
489
- }, []);
504
+ }, [eagerMethods, initialFetchPolicy, internalState]);
490
505
  return [execute, result];
491
506
  }
492
507
 
@@ -506,9 +521,9 @@ function useMutation(mutation, options) {
506
521
  mutation: mutation,
507
522
  options: options,
508
523
  });
509
- {
524
+ useIsomorphicLayoutEffect(function () {
510
525
  Object.assign(ref.current, { client: client, options: options, mutation: mutation });
511
- }
526
+ });
512
527
  var execute = React__namespace.useCallback(function (executeOptions) {
513
528
  if (executeOptions === void 0) { executeOptions = {}; }
514
529
  var _a = ref.current, options = _a.options, mutation = _a.mutation;
@@ -582,15 +597,20 @@ function useMutation(mutation, options) {
582
597
  }, []);
583
598
  var reset = React__namespace.useCallback(function () {
584
599
  if (ref.current.isMounted) {
585
- var result_3 = { called: false, loading: false, client: client };
600
+ var result_3 = {
601
+ called: false,
602
+ loading: false,
603
+ client: ref.current.client,
604
+ };
586
605
  Object.assign(ref.current, { mutationId: 0, result: result_3 });
587
606
  setResult(result_3);
588
607
  }
589
608
  }, []);
590
609
  React__namespace.useEffect(function () {
591
- ref.current.isMounted = true;
610
+ var current = ref.current;
611
+ current.isMounted = true;
592
612
  return function () {
593
- ref.current.isMounted = false;
613
+ current.isMounted = false;
594
614
  };
595
615
  }, []);
596
616
  return [execute, tslib.__assign({ reset: reset }, result)];
@@ -846,11 +866,11 @@ function _useSuspenseQuery(query, options) {
846
866
  };
847
867
  }, [queryRef.result]);
848
868
  var result = fetchPolicy === "standby" ? skipResult : __use(promise);
849
- var fetchMore = React__namespace.useCallback((function (options) {
869
+ var fetchMore = React__namespace.useCallback(function (options) {
850
870
  var promise = queryRef.fetchMore(options);
851
871
  setPromise([queryRef.key, queryRef.promise]);
852
872
  return promise;
853
- }), [queryRef]);
873
+ }, [queryRef]);
854
874
  var refetch = React__namespace.useCallback(function (variables) {
855
875
  var promise = queryRef.refetch(variables);
856
876
  setPromise([queryRef.key, queryRef.promise]);
@@ -1013,10 +1033,17 @@ function useLoadableQuery(query, options) {
1013
1033
  return client.watchQuery(tslib.__assign(tslib.__assign({}, watchQueryOptions), { variables: variables }));
1014
1034
  });
1015
1035
  setQueryRef(internal.wrapQueryRef(queryRef));
1016
- }, [query, queryKey, suspenseCache, watchQueryOptions, calledDuringRender]);
1036
+ }, [
1037
+ query,
1038
+ queryKey,
1039
+ suspenseCache,
1040
+ watchQueryOptions,
1041
+ calledDuringRender,
1042
+ client,
1043
+ ]);
1017
1044
  var reset = React__namespace.useCallback(function () {
1018
1045
  setQueryRef(null);
1019
- }, [queryRef]);
1046
+ }, []);
1020
1047
  return [loadQuery, queryRef, { fetchMore: fetchMore, refetch: refetch, reset: reset }];
1021
1048
  }
1022
1049
 
@@ -1071,7 +1098,7 @@ function _useReadQuery(queryRef) {
1071
1098
  internal.updateWrappedQueryRef(queryRef, promise);
1072
1099
  forceUpdate();
1073
1100
  });
1074
- }, [internalQueryRef]), getPromise, getPromise);
1101
+ }, [internalQueryRef, queryRef]), getPromise, getPromise);
1075
1102
  var result = __use(promise);
1076
1103
  return React__namespace.useMemo(function () {
1077
1104
  return {