@apollo/client 3.10.7 → 3.11.0-rc.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 (135) hide show
  1. package/.changeset/angry-ravens-mate.md +5 -0
  2. package/.changeset/angry-seals-jog.md +5 -0
  3. package/.changeset/chilly-dots-shake.md +5 -0
  4. package/.changeset/clever-bikes-admire.md +5 -0
  5. package/.changeset/flat-onions-guess.md +5 -0
  6. package/.changeset/fluffy-badgers-rush.md +5 -0
  7. package/.changeset/little-suits-return.md +5 -0
  8. package/.changeset/nasty-olives-act.md +5 -0
  9. package/.changeset/pink-ants-remember.md +16 -0
  10. package/.changeset/pre.json +24 -0
  11. package/.changeset/slimy-balloons-cheat.md +5 -0
  12. package/.changeset/slimy-berries-yawn.md +14 -0
  13. package/.changeset/tasty-chairs-dress.md +5 -0
  14. package/.changeset/thin-lies-begin.md +5 -0
  15. package/.changeset/unlucky-birds-press.md +5 -0
  16. package/.changeset/weak-ads-develop.md +5 -0
  17. package/CHANGELOG.md +66 -4
  18. package/apollo-client.cjs +501 -410
  19. package/apollo-client.cjs.map +1 -1
  20. package/apollo-client.min.cjs +1 -1
  21. package/cache/core/types/common.d.ts +1 -1
  22. package/cache/core/types/common.js.map +1 -1
  23. package/core/ApolloClient.d.ts +24 -2
  24. package/core/ApolloClient.js +9 -8
  25. package/core/ApolloClient.js.map +1 -1
  26. package/core/ObservableQuery.js +5 -1
  27. package/core/ObservableQuery.js.map +1 -1
  28. package/core/QueryInfo.d.ts +2 -2
  29. package/core/QueryInfo.js.map +1 -1
  30. package/core/QueryManager.d.ts +1 -1
  31. package/core/QueryManager.js +5 -4
  32. package/core/QueryManager.js.map +1 -1
  33. package/core/core.cjs +18 -11
  34. package/core/core.cjs.map +1 -1
  35. package/core/core.cjs.native.js +18 -11
  36. package/core/types.d.ts +2 -2
  37. package/core/types.js.map +1 -1
  38. package/core/watchQueryOptions.d.ts +4 -0
  39. package/core/watchQueryOptions.js.map +1 -1
  40. package/dev/dev.cjs +40 -34
  41. package/dev/dev.cjs.map +1 -1
  42. package/dev/dev.cjs.native.js +40 -34
  43. package/errors/errors.cjs +4 -0
  44. package/errors/errors.cjs.map +1 -1
  45. package/errors/errors.cjs.native.js +4 -0
  46. package/errors/index.d.ts +18 -3
  47. package/errors/index.js +7 -2
  48. package/errors/index.js.map +1 -1
  49. package/invariantErrorCodes.js +41 -34
  50. package/link/core/types.d.ts +6 -4
  51. package/link/core/types.js.map +1 -1
  52. package/link/error/index.d.ts +4 -4
  53. package/link/error/index.js.map +1 -1
  54. package/link/persisted-queries/index.d.ts +3 -3
  55. package/link/persisted-queries/index.js.map +1 -1
  56. package/link/subscriptions/index.js +1 -0
  57. package/link/subscriptions/index.js.map +1 -1
  58. package/link/subscriptions/subscriptions.cjs.map +1 -1
  59. package/package.json +29 -29
  60. package/react/hooks/hooks.cjs +445 -368
  61. package/react/hooks/hooks.cjs.map +1 -1
  62. package/react/hooks/hooks.cjs.native.js +445 -368
  63. package/react/hooks/internal/wrapHook.d.ts +2 -0
  64. package/react/hooks/internal/wrapHook.js.map +1 -1
  65. package/react/hooks/useBackgroundQuery.d.ts +15 -1
  66. package/react/hooks/useBackgroundQuery.js +5 -1
  67. package/react/hooks/useBackgroundQuery.js.map +1 -1
  68. package/react/hooks/useLazyQuery.js +54 -12
  69. package/react/hooks/useLazyQuery.js.map +1 -1
  70. package/react/hooks/useLoadableQuery.d.ts +7 -1
  71. package/react/hooks/useLoadableQuery.js +5 -1
  72. package/react/hooks/useLoadableQuery.js.map +1 -1
  73. package/react/hooks/useQuery.d.ts +34 -47
  74. package/react/hooks/useQuery.js +387 -388
  75. package/react/hooks/useQuery.js.map +1 -1
  76. package/react/hooks/useQueryRefHandlers.d.ts +7 -1
  77. package/react/hooks/useQueryRefHandlers.js +5 -1
  78. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  79. package/react/hooks/useSubscription.d.ts +13 -10
  80. package/react/hooks/useSubscription.js +130 -98
  81. package/react/hooks/useSubscription.js.map +1 -1
  82. package/react/hooks/useSuspenseQuery.js +3 -3
  83. package/react/hooks/useSuspenseQuery.js.map +1 -1
  84. package/react/hooks/useSyncExternalStore.js +1 -1
  85. package/react/internal/cache/QueryReference.js +1 -1
  86. package/react/internal/internal.cjs +2 -2
  87. package/react/internal/internal.cjs.map +1 -1
  88. package/react/internal/internal.cjs.native.js +2 -2
  89. package/react/parser/index.js +5 -5
  90. package/react/parser/parser.cjs +5 -5
  91. package/react/parser/parser.cjs.map +1 -1
  92. package/react/parser/parser.cjs.native.js +5 -5
  93. package/react/query-preloader/createQueryPreloader.js +5 -1
  94. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  95. package/react/react.cjs +12 -1
  96. package/react/react.cjs.map +1 -1
  97. package/react/react.cjs.native.js +12 -1
  98. package/react/types/types.d.ts +19 -0
  99. package/react/types/types.documentation.d.ts +10 -0
  100. package/react/types/types.documentation.js.map +1 -1
  101. package/react/types/types.js.map +1 -1
  102. package/testing/core/core.cjs +6 -5
  103. package/testing/core/core.cjs.map +1 -1
  104. package/testing/core/core.cjs.native.js +6 -5
  105. package/testing/core/mocking/mockLink.js +8 -7
  106. package/testing/core/mocking/mockLink.js.map +1 -1
  107. package/testing/experimental/createSchemaFetch.d.ts +2 -0
  108. package/testing/experimental/createSchemaFetch.js +12 -1
  109. package/testing/experimental/createSchemaFetch.js.map +1 -1
  110. package/testing/experimental/createTestSchema.d.ts +2 -0
  111. package/testing/experimental/createTestSchema.js +2 -0
  112. package/testing/experimental/createTestSchema.js.map +1 -1
  113. package/testing/experimental/experimental.cjs +5 -1
  114. package/testing/experimental/experimental.cjs.map +1 -1
  115. package/testing/experimental/experimental.cjs.native.js +5 -1
  116. package/testing/internal/disposables/enableFakeTimers.d.ts +7 -0
  117. package/testing/internal/disposables/enableFakeTimers.js +16 -0
  118. package/testing/internal/disposables/enableFakeTimers.js.map +1 -0
  119. package/testing/internal/disposables/index.d.ts +1 -0
  120. package/testing/internal/disposables/index.js +1 -0
  121. package/testing/internal/disposables/index.js.map +1 -1
  122. package/utilities/common/errorHandling.d.ts +1 -1
  123. package/utilities/globals/globals.cjs +1 -1
  124. package/utilities/globals/globals.cjs.map +1 -1
  125. package/utilities/globals/globals.cjs.native.js +1 -1
  126. package/utilities/graphql/DocumentTransform.js +1 -1
  127. package/utilities/graphql/directives.js +4 -4
  128. package/utilities/graphql/fragments.js +3 -3
  129. package/utilities/graphql/getFromAST.js +8 -8
  130. package/utilities/graphql/storeUtils.js +1 -1
  131. package/utilities/graphql/transform.js +2 -2
  132. package/utilities/utilities.cjs +19 -19
  133. package/utilities/utilities.cjs.map +1 -1
  134. package/utilities/utilities.cjs.native.js +19 -19
  135. package/version.js +1 -1
package/apollo-client.cjs CHANGED
@@ -31,7 +31,7 @@ function _interopNamespace(e) {
31
31
  var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
32
32
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
33
33
 
34
- var version = "3.10.7";
34
+ var version = "3.11.0-rc.0";
35
35
 
36
36
  function maybe(thunk) {
37
37
  try {
@@ -145,7 +145,7 @@ function shouldInclude(_a, variables) {
145
145
  if (ifArgument.value.kind === "Variable") {
146
146
  evaledValue =
147
147
  variables && variables[ifArgument.value.name.value];
148
- invariant(evaledValue !== void 0, 68, directive.name.value);
148
+ invariant(evaledValue !== void 0, 69, directive.name.value);
149
149
  }
150
150
  else {
151
151
  evaledValue = ifArgument.value.value;
@@ -180,12 +180,12 @@ function getInclusionDirectives(directives) {
180
180
  return;
181
181
  var directiveArguments = directive.arguments;
182
182
  var directiveName = directive.name.value;
183
- invariant(directiveArguments && directiveArguments.length === 1, 69, directiveName);
183
+ invariant(directiveArguments && directiveArguments.length === 1, 70, directiveName);
184
184
  var ifArgument = directiveArguments[0];
185
- invariant(ifArgument.name && ifArgument.name.value === "if", 70, directiveName);
185
+ invariant(ifArgument.name && ifArgument.name.value === "if", 71, directiveName);
186
186
  var ifValue = ifArgument.value;
187
187
  invariant(ifValue &&
188
- (ifValue.kind === "Variable" || ifValue.kind === "BooleanValue"), 71, directiveName);
188
+ (ifValue.kind === "Variable" || ifValue.kind === "BooleanValue"), 72, directiveName);
189
189
  result.push({ directive: directive, ifArgument: ifArgument });
190
190
  });
191
191
  }
@@ -213,7 +213,7 @@ function getFragmentQueryDocument(document, fragmentName) {
213
213
  document.definitions.forEach(function (definition) {
214
214
  if (definition.kind === "OperationDefinition") {
215
215
  throw newInvariantError(
216
- 72,
216
+ 73,
217
217
  definition.operation,
218
218
  definition.name ? " named '".concat(definition.name.value, "'") : ""
219
219
  );
@@ -223,7 +223,7 @@ function getFragmentQueryDocument(document, fragmentName) {
223
223
  }
224
224
  });
225
225
  if (typeof actualFragmentName === "undefined") {
226
- invariant(fragments.length === 1, 73, fragments.length);
226
+ invariant(fragments.length === 1, 74, fragments.length);
227
227
  actualFragmentName = fragments[0].name.value;
228
228
  }
229
229
  var query = tslib.__assign(tslib.__assign({}, document), { definitions: tslib.__spreadArray([
@@ -264,7 +264,7 @@ function getFragmentFromSelection(selection, fragmentMap) {
264
264
  return fragmentMap(fragmentName);
265
265
  }
266
266
  var fragment = fragmentMap && fragmentMap[fragmentName];
267
- invariant(fragment, 74, fragmentName);
267
+ invariant(fragment, 75, fragmentName);
268
268
  return fragment || null;
269
269
  }
270
270
  default:
@@ -515,7 +515,7 @@ function valueToObjectRepresentation(argObj, name, value, variables) {
515
515
  argObj[name.value] = null;
516
516
  }
517
517
  else {
518
- throw newInvariantError(83, name.value, value.kind);
518
+ throw newInvariantError(84, name.value, value.kind);
519
519
  }
520
520
  }
521
521
  function storeKeyNameFromField(field, variables) {
@@ -649,16 +649,16 @@ function isInlineFragment(selection) {
649
649
  }
650
650
 
651
651
  function checkDocument(doc) {
652
- invariant(doc && doc.kind === "Document", 75);
652
+ invariant(doc && doc.kind === "Document", 76);
653
653
  var operations = doc.definitions
654
654
  .filter(function (d) { return d.kind !== "FragmentDefinition"; })
655
655
  .map(function (definition) {
656
656
  if (definition.kind !== "OperationDefinition") {
657
- throw newInvariantError(76, definition.kind);
657
+ throw newInvariantError(77, definition.kind);
658
658
  }
659
659
  return definition;
660
660
  });
661
- invariant(operations.length <= 1, 77, operations.length);
661
+ invariant(operations.length <= 1, 78, operations.length);
662
662
  return doc;
663
663
  }
664
664
  function getOperationDefinition(doc) {
@@ -681,14 +681,14 @@ function getFragmentDefinitions(doc) {
681
681
  }
682
682
  function getQueryDefinition(doc) {
683
683
  var queryDef = getOperationDefinition(doc);
684
- invariant(queryDef && queryDef.operation === "query", 78);
684
+ invariant(queryDef && queryDef.operation === "query", 79);
685
685
  return queryDef;
686
686
  }
687
687
  function getFragmentDefinition(doc) {
688
- invariant(doc.kind === "Document", 79);
689
- invariant(doc.definitions.length <= 1, 80);
688
+ invariant(doc.kind === "Document", 80);
689
+ invariant(doc.definitions.length <= 1, 81);
690
690
  var fragmentDef = doc.definitions[0];
691
- invariant(fragmentDef.kind === "FragmentDefinition", 81);
691
+ invariant(fragmentDef.kind === "FragmentDefinition", 82);
692
692
  return fragmentDef;
693
693
  }
694
694
  function getMainDefinition(queryDoc) {
@@ -711,7 +711,7 @@ function getMainDefinition(queryDoc) {
711
711
  if (fragmentDefinition) {
712
712
  return fragmentDefinition;
713
713
  }
714
- throw newInvariantError(82);
714
+ throw newInvariantError(83);
715
715
  }
716
716
  function getDefaultValues(definition) {
717
717
  var defaultValues = Object.create(null);
@@ -762,7 +762,7 @@ var DocumentTransform = (function () {
762
762
  makeCacheKey: function (document) {
763
763
  var cacheKeys = _this.getCacheKey(document);
764
764
  if (cacheKeys) {
765
- invariant(Array.isArray(cacheKeys), 67);
765
+ invariant(Array.isArray(cacheKeys), 68);
766
766
  return stableCacheKeys_1.lookupArray(cacheKeys);
767
767
  }
768
768
  },
@@ -892,7 +892,7 @@ function removeDirectivesFromDocument(directives, doc) {
892
892
  return getInUseByFragmentName(ancestor.name.value);
893
893
  }
894
894
  }
895
- globalThis.__DEV__ !== false && invariant.error(84);
895
+ globalThis.__DEV__ !== false && invariant.error(85);
896
896
  return null;
897
897
  };
898
898
  var operationCount = 0;
@@ -1944,6 +1944,10 @@ var ApolloError = (function (_super) {
1944
1944
  _this.networkError = networkError || null;
1945
1945
  _this.message = errorMessage || generateErrorMessage(_this);
1946
1946
  _this.extraInfo = extraInfo;
1947
+ _this.cause =
1948
+ tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([
1949
+ networkError
1950
+ ], (graphQLErrors || []), true), (protocolErrors || []), true), (clientErrors || []), true).find(function (e) { return !!e; }) || null;
1947
1951
  _this.__proto__ = ApolloError.prototype;
1948
1952
  return _this;
1949
1953
  }
@@ -4920,6 +4924,7 @@ var ObservableQuery = (function (_super) {
4920
4924
  _this.queryManager = queryManager;
4921
4925
  _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);
4922
4926
  _this.isTornDown = false;
4927
+ _this.subscribeToMore = _this.subscribeToMore.bind(_this);
4923
4928
  var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? "cache-first" : _d;
4924
4929
  var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e,
4925
4930
  _f = options.initialFetchPolicy,
@@ -5323,7 +5328,8 @@ var ObservableQuery = (function (_super) {
5323
5328
  newOptions.variables &&
5324
5329
  !equal.equal(newOptions.variables, oldVariables) &&
5325
5330
  options.fetchPolicy !== "standby" &&
5326
- options.fetchPolicy === oldFetchPolicy) {
5331
+ (options.fetchPolicy === oldFetchPolicy ||
5332
+ typeof options.nextFetchPolicy === "function")) {
5327
5333
  this.applyNextFetchPolicy("variables-changed", options);
5328
5334
  if (newNetworkStatus === void 0) {
5329
5335
  newNetworkStatus = exports.NetworkStatus.setVariables;
@@ -6131,7 +6137,7 @@ var QueryManager = (function () {
6131
6137
  this.broadcastQueries();
6132
6138
  self = this;
6133
6139
  return [2 , new Promise(function (resolve, reject) {
6134
- return asyncMap(self.getObservableFromLink(mutation, tslib.__assign(tslib.__assign({}, context), { optimisticResponse: isOptimistic ? optimisticResponse : void 0 }), variables, false), function (result) {
6140
+ return asyncMap(self.getObservableFromLink(mutation, tslib.__assign(tslib.__assign({}, context), { optimisticResponse: isOptimistic ? optimisticResponse : void 0 }), variables, {}, false), function (result) {
6135
6141
  if (graphQLResultHasError(result) && errorPolicy === "none") {
6136
6142
  throw new ApolloError({
6137
6143
  graphQLErrors: getGraphQLErrorsFromResult(result),
@@ -6551,11 +6557,11 @@ var QueryManager = (function () {
6551
6557
  };
6552
6558
  QueryManager.prototype.startGraphQLSubscription = function (_a) {
6553
6559
  var _this = this;
6554
- var query = _a.query, fetchPolicy = _a.fetchPolicy, _b = _a.errorPolicy, errorPolicy = _b === void 0 ? "none" : _b, variables = _a.variables, _c = _a.context, context = _c === void 0 ? {} : _c;
6560
+ var query = _a.query, fetchPolicy = _a.fetchPolicy, _b = _a.errorPolicy, errorPolicy = _b === void 0 ? "none" : _b, variables = _a.variables, _c = _a.context, context = _c === void 0 ? {} : _c, _d = _a.extensions, extensions = _d === void 0 ? {} : _d;
6555
6561
  query = this.transform(query);
6556
6562
  variables = this.getVariables(query, variables);
6557
6563
  var makeObservable = function (variables) {
6558
- return _this.getObservableFromLink(query, context, variables).map(function (result) {
6564
+ return _this.getObservableFromLink(query, context, variables, extensions).map(function (result) {
6559
6565
  if (fetchPolicy !== "no-cache") {
6560
6566
  if (shouldWriteResult(result, errorPolicy)) {
6561
6567
  _this.cache.write({
@@ -6622,7 +6628,7 @@ var QueryManager = (function () {
6622
6628
  QueryManager.prototype.getLocalState = function () {
6623
6629
  return this.localState;
6624
6630
  };
6625
- QueryManager.prototype.getObservableFromLink = function (query, context, variables,
6631
+ QueryManager.prototype.getObservableFromLink = function (query, context, variables, extensions,
6626
6632
  deduplication) {
6627
6633
  var _this = this;
6628
6634
  var _a;
@@ -6636,6 +6642,7 @@ var QueryManager = (function () {
6636
6642
  variables: variables,
6637
6643
  operationName: getOperationName(serverQuery) || void 0,
6638
6644
  context: this.prepareContext(tslib.__assign(tslib.__assign({}, context), { forceFetch: !deduplication })),
6645
+ extensions: extensions,
6639
6646
  };
6640
6647
  context = operation.context;
6641
6648
  if (deduplication) {
@@ -6961,10 +6968,7 @@ var ApolloClient = (function () {
6961
6968
  throw newInvariantError(15);
6962
6969
  }
6963
6970
  var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, documentTransform = options.documentTransform, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b,
6964
- _c = options.connectToDevTools,
6965
- connectToDevTools = _c === void 0 ? typeof window === "object" &&
6966
- !window.__APOLLO_CLIENT__ &&
6967
- globalThis.__DEV__ !== false : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, defaultContext = options.defaultContext, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? cache.assumeImmutableResults : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;
6971
+ connectToDevTools = options.connectToDevTools, _c = options.queryDeduplication, queryDeduplication = _c === void 0 ? true : _c, defaultOptions = options.defaultOptions, defaultContext = options.defaultContext, _d = options.assumeImmutableResults, assumeImmutableResults = _d === void 0 ? cache.assumeImmutableResults : _d, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version, devtools = options.devtools;
6968
6972
  var link = options.link;
6969
6973
  if (!link) {
6970
6974
  link =
@@ -6976,6 +6980,13 @@ var ApolloClient = (function () {
6976
6980
  this.queryDeduplication = queryDeduplication;
6977
6981
  this.defaultOptions = defaultOptions || Object.create(null);
6978
6982
  this.typeDefs = typeDefs;
6983
+ this.devtoolsConfig = tslib.__assign(tslib.__assign({}, devtools), { enabled: (devtools === null || devtools === void 0 ? void 0 : devtools.enabled) || connectToDevTools });
6984
+ if (this.devtoolsConfig.enabled === undefined) {
6985
+ this.devtoolsConfig.enabled =
6986
+ typeof window === "object" &&
6987
+ window.__APOLLO_CLIENT__ &&
6988
+ globalThis.__DEV__ !== false;
6989
+ }
6979
6990
  if (ssrForceFetchDelay) {
6980
6991
  setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);
6981
6992
  }
@@ -7021,7 +7032,7 @@ var ApolloClient = (function () {
7021
7032
  }
7022
7033
  : void 0,
7023
7034
  });
7024
- if (connectToDevTools)
7035
+ if (this.devtoolsConfig.enabled)
7025
7036
  this.connectToDevTools();
7026
7037
  }
7027
7038
  ApolloClient.prototype.connectToDevTools = function () {
@@ -7279,7 +7290,7 @@ var useSyncExternalStore = realHook$1 ||
7279
7290
  !didWarnUncachedGetSnapshot &&
7280
7291
  value !== getSnapshot()) {
7281
7292
  didWarnUncachedGetSnapshot = true;
7282
- globalThis.__DEV__ !== false && invariant.error(58);
7293
+ globalThis.__DEV__ !== false && invariant.error(59);
7283
7294
  }
7284
7295
  var _a = React__namespace.useState({
7285
7296
  inst: { value: value, getSnapshot: getSnapshot },
@@ -7347,7 +7358,7 @@ function parser(document) {
7347
7358
  if (cached)
7348
7359
  return cached;
7349
7360
  var variables, type, name;
7350
- invariant(!!document && !!document.kind, 60, document);
7361
+ invariant(!!document && !!document.kind, 61, document);
7351
7362
  var fragments = [];
7352
7363
  var queries = [];
7353
7364
  var mutations = [];
@@ -7375,10 +7386,10 @@ function parser(document) {
7375
7386
  invariant(!fragments.length ||
7376
7387
  queries.length ||
7377
7388
  mutations.length ||
7378
- subscriptions.length, 61);
7389
+ subscriptions.length, 62);
7379
7390
  invariant(
7380
7391
  queries.length + mutations.length + subscriptions.length <= 1,
7381
- 62,
7392
+ 63,
7382
7393
  document,
7383
7394
  queries.length,
7384
7395
  subscriptions.length,
@@ -7390,7 +7401,7 @@ function parser(document) {
7390
7401
  var definitions = queries.length ? queries
7391
7402
  : mutations.length ? mutations
7392
7403
  : subscriptions;
7393
- invariant(definitions.length === 1, 63, document, definitions.length);
7404
+ invariant(definitions.length === 1, 64, document, definitions.length);
7394
7405
  var definition = definitions[0];
7395
7406
  variables = definition.variableDefinitions || [];
7396
7407
  if (definition.name && definition.name.kind === "Name") {
@@ -7415,7 +7426,7 @@ function verifyDocumentType(document, type) {
7415
7426
  var usedOperationName = operationName(operation.type);
7416
7427
  invariant(
7417
7428
  operation.type === type,
7418
- 64,
7429
+ 65,
7419
7430
  requiredOperationName,
7420
7431
  requiredOperationName,
7421
7432
  usedOperationName
@@ -7433,7 +7444,7 @@ function useDeepMemo(memoFn, deps) {
7433
7444
  var useIsomorphicLayoutEffect = canUseDOM ? React__namespace.useLayoutEffect : React__namespace.useEffect;
7434
7445
 
7435
7446
  var Ctx;
7436
- function noop() { }
7447
+ function noop$1() { }
7437
7448
  function useRenderGuard() {
7438
7449
  if (!Ctx) {
7439
7450
  Ctx = React__namespace.createContext(null);
@@ -7442,7 +7453,7 @@ function useRenderGuard() {
7442
7453
  function () {
7443
7454
  var orig = console.error;
7444
7455
  try {
7445
- console.error = noop;
7456
+ console.error = noop$1;
7446
7457
  React__namespace["useContext" ](Ctx);
7447
7458
  return true;
7448
7459
  }
@@ -7488,181 +7499,185 @@ function wrapHook(hookName, useHook, clientOrObsQuery) {
7488
7499
  }
7489
7500
 
7490
7501
  var hasOwnProperty = Object.prototype.hasOwnProperty;
7502
+ var originalResult = Symbol();
7503
+ function noop() { }
7504
+ var lastWatchOptions = Symbol();
7491
7505
  function useQuery(query, options) {
7492
7506
  if (options === void 0) { options = Object.create(null); }
7493
7507
  return wrapHook("useQuery", _useQuery, useApolloClient(options && options.client))(query, options);
7494
7508
  }
7495
7509
  function _useQuery(query, options) {
7496
- return useInternalState(useApolloClient(options.client), query).useQuery(options);
7510
+ var _a = useQueryInternals(query, options), result = _a.result, obsQueryFields = _a.obsQueryFields;
7511
+ return React__namespace.useMemo(function () { return (tslib.__assign(tslib.__assign({}, result), obsQueryFields)); }, [result, obsQueryFields]);
7497
7512
  }
7498
- function useInternalState(client, query) {
7499
- var forceUpdateState = React__namespace.useReducer(function (tick) { return tick + 1; }, 0)[1];
7513
+ function useInternalState(client, query, options, renderPromises, makeWatchQueryOptions) {
7500
7514
  function createInternalState(previous) {
7501
- return Object.assign(new InternalState(client, query, previous), {
7502
- forceUpdateState: forceUpdateState,
7503
- });
7504
- }
7505
- var _a = React__namespace.useState(createInternalState), state = _a[0], updateState = _a[1];
7506
- if (client !== state.client || query !== state.query) {
7507
- updateState((state = createInternalState(state)));
7508
- }
7509
- return state;
7510
- }
7511
- var InternalState = (function () {
7512
- function InternalState(client, query, previous) {
7513
- var _this = this;
7514
- this.client = client;
7515
- this.query = query;
7516
- this.forceUpdate = function () { return _this.forceUpdateState(); };
7517
- this.ssrDisabledResult = maybeDeepFreeze({
7518
- loading: true,
7519
- data: void 0,
7520
- error: void 0,
7521
- networkStatus: exports.NetworkStatus.loading,
7522
- });
7523
- this.skipStandbyResult = maybeDeepFreeze({
7524
- loading: false,
7525
- data: void 0,
7526
- error: void 0,
7527
- networkStatus: exports.NetworkStatus.ready,
7528
- });
7529
- this.toQueryResultCache = new (canUseWeakMap ? WeakMap : Map)();
7515
+ var _a;
7530
7516
  verifyDocumentType(query, exports.DocumentType.Query);
7531
- var previousResult = previous && previous.result;
7532
- var previousData = previousResult && previousResult.data;
7533
- if (previousData) {
7534
- this.previousData = previousData;
7535
- }
7517
+ var internalState = {
7518
+ client: client,
7519
+ query: query,
7520
+ observable:
7521
+ (renderPromises &&
7522
+ renderPromises.getSSRObservable(makeWatchQueryOptions())) ||
7523
+ client.watchQuery(getObsQueryOptions(void 0, client, options, makeWatchQueryOptions())),
7524
+ resultData: {
7525
+ previousData: (_a = previous === null || previous === void 0 ? void 0 : previous.resultData.current) === null || _a === void 0 ? void 0 : _a.data,
7526
+ },
7527
+ };
7528
+ return internalState;
7536
7529
  }
7537
- InternalState.prototype.forceUpdateState = function () {
7538
- globalThis.__DEV__ !== false && invariant.warn(51);
7539
- };
7540
- InternalState.prototype.executeQuery = function (options) {
7541
- var _this = this;
7542
- var _a;
7543
- if (options.query) {
7544
- Object.assign(this, { query: options.query });
7545
- }
7546
- this.watchQueryOptions = this.createWatchQueryOptions((this.queryHookOptions = options));
7547
- var concast = this.observable.reobserveAsConcast(this.getObsQueryOptions());
7548
- this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
7549
- this.result = void 0;
7550
- this.forceUpdate();
7551
- return new Promise(function (resolve) {
7552
- var result;
7553
- concast.subscribe({
7554
- next: function (value) {
7555
- result = value;
7556
- },
7557
- error: function () {
7558
- resolve(_this.toQueryResult(_this.observable.getCurrentResult()));
7559
- },
7560
- complete: function () {
7561
- resolve(_this.toQueryResult(result));
7562
- },
7563
- });
7564
- });
7565
- };
7566
- InternalState.prototype.useQuery = function (options) {
7567
- var _this = this;
7568
- this.renderPromises = React__namespace.useContext(getApolloContext()).renderPromises;
7569
- this.useOptions(options);
7570
- var obsQuery = this.useObservableQuery();
7571
- var result = useSyncExternalStore(
7572
- React__namespace.useCallback(function (handleStoreChange) {
7573
- if (_this.renderPromises) {
7574
- return function () { };
7575
- }
7576
- _this.forceUpdate = handleStoreChange;
7577
- var onNext = function () {
7578
- var previousResult = _this.result;
7579
- var result = obsQuery.getCurrentResult();
7580
- if (previousResult &&
7581
- previousResult.loading === result.loading &&
7582
- previousResult.networkStatus === result.networkStatus &&
7583
- equal.equal(previousResult.data, result.data)) {
7584
- return;
7585
- }
7586
- _this.setResult(result);
7587
- };
7588
- var onError = function (error) {
7589
- subscription.unsubscribe();
7590
- subscription = obsQuery.resubscribeAfterError(onNext, onError);
7591
- if (!hasOwnProperty.call(error, "graphQLErrors")) {
7592
- throw error;
7593
- }
7594
- var previousResult = _this.result;
7595
- if (!previousResult ||
7596
- (previousResult && previousResult.loading) ||
7597
- !equal.equal(error, previousResult.error)) {
7598
- _this.setResult({
7599
- data: (previousResult && previousResult.data),
7600
- error: error,
7601
- loading: false,
7602
- networkStatus: exports.NetworkStatus.error,
7603
- });
7604
- }
7605
- };
7606
- var subscription = obsQuery.subscribe(onNext, onError);
7607
- return function () {
7608
- setTimeout(function () { return subscription.unsubscribe(); });
7609
- _this.forceUpdate = function () { return _this.forceUpdateState(); };
7610
- };
7611
- }, [
7612
- obsQuery,
7613
- this.renderPromises,
7614
- this.client.disableNetworkFetches,
7615
- ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });
7616
- this.unsafeHandlePartialRefetch(result);
7617
- return this.toQueryResult(result);
7618
- };
7619
- InternalState.prototype.useOptions = function (options) {
7530
+ var _a = React__namespace.useState(createInternalState), internalState = _a[0], updateInternalState = _a[1];
7531
+ function onQueryExecuted(watchQueryOptions) {
7620
7532
  var _a;
7621
- var watchQueryOptions = this.createWatchQueryOptions((this.queryHookOptions = options));
7622
- var currentWatchQueryOptions = this.watchQueryOptions;
7623
- if (!equal.equal(watchQueryOptions, currentWatchQueryOptions)) {
7624
- this.watchQueryOptions = watchQueryOptions;
7625
- if (currentWatchQueryOptions && this.observable) {
7626
- this.observable.reobserve(this.getObsQueryOptions());
7627
- this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
7628
- this.result = void 0;
7629
- }
7630
- }
7631
- this.onCompleted =
7632
- options.onCompleted || InternalState.prototype.onCompleted;
7633
- this.onError = options.onError || InternalState.prototype.onError;
7634
- if ((this.renderPromises || this.client.disableNetworkFetches) &&
7635
- this.queryHookOptions.ssr === false &&
7636
- !this.queryHookOptions.skip) {
7637
- this.result = this.ssrDisabledResult;
7638
- }
7639
- else if (this.queryHookOptions.skip ||
7640
- this.watchQueryOptions.fetchPolicy === "standby") {
7641
- this.result = this.skipStandbyResult;
7642
- }
7643
- else if (this.result === this.ssrDisabledResult ||
7644
- this.result === this.skipStandbyResult) {
7645
- this.result = void 0;
7646
- }
7647
- };
7648
- InternalState.prototype.getObsQueryOptions = function () {
7649
- var toMerge = [];
7650
- var globalDefaults = this.client.defaultOptions.watchQuery;
7651
- if (globalDefaults)
7652
- toMerge.push(globalDefaults);
7653
- if (this.queryHookOptions.defaultOptions) {
7654
- toMerge.push(this.queryHookOptions.defaultOptions);
7655
- }
7656
- toMerge.push(compact(this.observable && this.observable.options, this.watchQueryOptions));
7657
- return toMerge.reduce(mergeOptions);
7658
- };
7659
- InternalState.prototype.createWatchQueryOptions = function (_a) {
7660
7533
  var _b;
7661
- if (_a === void 0) { _a = {}; }
7662
- var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; _a.defaultOptions;
7663
- var otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "defaultOptions"]);
7664
- var watchQueryOptions = Object.assign(otherOptions, { query: this.query });
7665
- if (this.renderPromises &&
7534
+ Object.assign(internalState.observable, (_a = {},
7535
+ _a[lastWatchOptions] = watchQueryOptions,
7536
+ _a));
7537
+ var resultData = internalState.resultData;
7538
+ updateInternalState(tslib.__assign(tslib.__assign({}, internalState), {
7539
+ query: watchQueryOptions.query, resultData: Object.assign(resultData, {
7540
+ previousData: ((_b = resultData.current) === null || _b === void 0 ? void 0 : _b.data) || resultData.previousData,
7541
+ current: undefined,
7542
+ }) }));
7543
+ }
7544
+ if (client !== internalState.client || query !== internalState.query) {
7545
+ var newInternalState = createInternalState(internalState);
7546
+ updateInternalState(newInternalState);
7547
+ return [newInternalState, onQueryExecuted];
7548
+ }
7549
+ return [internalState, onQueryExecuted];
7550
+ }
7551
+ function useQueryInternals(query, options) {
7552
+ var client = useApolloClient(options.client);
7553
+ var renderPromises = React__namespace.useContext(getApolloContext()).renderPromises;
7554
+ var isSyncSSR = !!renderPromises;
7555
+ var disableNetworkFetches = client.disableNetworkFetches;
7556
+ var ssrAllowed = options.ssr !== false && !options.skip;
7557
+ var partialRefetch = options.partialRefetch;
7558
+ var makeWatchQueryOptions = createMakeWatchQueryOptions(client, query, options, isSyncSSR);
7559
+ var _a = useInternalState(client, query, options, renderPromises, makeWatchQueryOptions), _b = _a[0], observable = _b.observable, resultData = _b.resultData, onQueryExecuted = _a[1];
7560
+ var watchQueryOptions = makeWatchQueryOptions(observable);
7561
+ useResubscribeIfNecessary(resultData,
7562
+ observable,
7563
+ client, options, watchQueryOptions);
7564
+ var obsQueryFields = React__namespace.useMemo(function () { return bindObservableMethods(observable); }, [observable]);
7565
+ useHandleSkip(resultData,
7566
+ observable, client, options, watchQueryOptions, disableNetworkFetches, isSyncSSR);
7567
+ useRegisterSSRObservable(observable, renderPromises, ssrAllowed);
7568
+ var result = useObservableSubscriptionResult(resultData, observable, client, disableNetworkFetches, partialRefetch, isSyncSSR, {
7569
+ onCompleted: options.onCompleted || noop,
7570
+ onError: options.onError || noop,
7571
+ });
7572
+ return {
7573
+ result: result,
7574
+ obsQueryFields: obsQueryFields,
7575
+ observable: observable,
7576
+ resultData: resultData,
7577
+ client: client,
7578
+ onQueryExecuted: onQueryExecuted,
7579
+ };
7580
+ }
7581
+ function useObservableSubscriptionResult(resultData, observable, client, disableNetworkFetches, partialRefetch, skipSubscribing, callbacks) {
7582
+ var callbackRef = React__namespace.useRef(callbacks);
7583
+ React__namespace.useEffect(function () {
7584
+ callbackRef.current = callbacks;
7585
+ });
7586
+ return useSyncExternalStore(React__namespace.useCallback(function (handleStoreChange) {
7587
+ if (skipSubscribing) {
7588
+ return function () { };
7589
+ }
7590
+ var onNext = function () {
7591
+ var previousResult = resultData.current;
7592
+ var result = observable.getCurrentResult();
7593
+ if (previousResult &&
7594
+ previousResult.loading === result.loading &&
7595
+ previousResult.networkStatus === result.networkStatus &&
7596
+ equal.equal(previousResult.data, result.data)) {
7597
+ return;
7598
+ }
7599
+ setResult(result, resultData, observable, client, partialRefetch, handleStoreChange, callbackRef.current);
7600
+ };
7601
+ var onError = function (error) {
7602
+ subscription.current.unsubscribe();
7603
+ subscription.current = observable.resubscribeAfterError(onNext, onError);
7604
+ if (!hasOwnProperty.call(error, "graphQLErrors")) {
7605
+ throw error;
7606
+ }
7607
+ var previousResult = resultData.current;
7608
+ if (!previousResult ||
7609
+ (previousResult && previousResult.loading) ||
7610
+ !equal.equal(error, previousResult.error)) {
7611
+ setResult({
7612
+ data: (previousResult && previousResult.data),
7613
+ error: error,
7614
+ loading: false,
7615
+ networkStatus: exports.NetworkStatus.error,
7616
+ }, resultData, observable, client, partialRefetch, handleStoreChange, callbackRef.current);
7617
+ }
7618
+ };
7619
+ var subscription = { current: observable.subscribe(onNext, onError) };
7620
+ return function () {
7621
+ setTimeout(function () { return subscription.current.unsubscribe(); });
7622
+ };
7623
+ }, [
7624
+ disableNetworkFetches,
7625
+ skipSubscribing,
7626
+ observable,
7627
+ resultData,
7628
+ partialRefetch,
7629
+ client,
7630
+ ]), function () {
7631
+ return getCurrentResult(resultData, observable, callbackRef.current, partialRefetch, client);
7632
+ }, function () {
7633
+ return getCurrentResult(resultData, observable, callbackRef.current, partialRefetch, client);
7634
+ });
7635
+ }
7636
+ function useRegisterSSRObservable(observable, renderPromises, ssrAllowed) {
7637
+ if (renderPromises && ssrAllowed) {
7638
+ renderPromises.registerSSRObservable(observable);
7639
+ if (observable.getCurrentResult().loading) {
7640
+ renderPromises.addObservableQueryPromise(observable);
7641
+ }
7642
+ }
7643
+ }
7644
+ function useHandleSkip(
7645
+ resultData, observable, client, options, watchQueryOptions, disableNetworkFetches, isSyncSSR) {
7646
+ if ((isSyncSSR || disableNetworkFetches) &&
7647
+ options.ssr === false &&
7648
+ !options.skip) {
7649
+ resultData.current = toQueryResult(ssrDisabledResult, resultData.previousData, observable, client);
7650
+ }
7651
+ else if (options.skip || watchQueryOptions.fetchPolicy === "standby") {
7652
+ resultData.current = toQueryResult(skipStandbyResult, resultData.previousData, observable, client);
7653
+ }
7654
+ else if (
7655
+ resultData.current &&
7656
+ (resultData.current[originalResult] === ssrDisabledResult ||
7657
+ resultData.current[originalResult] === skipStandbyResult)) {
7658
+ resultData.current = void 0;
7659
+ }
7660
+ }
7661
+ function useResubscribeIfNecessary(
7662
+ resultData,
7663
+ observable, client, options, watchQueryOptions) {
7664
+ var _a;
7665
+ if (observable[lastWatchOptions] &&
7666
+ !equal.equal(observable[lastWatchOptions], watchQueryOptions)) {
7667
+ observable.reobserve(getObsQueryOptions(observable, client, options, watchQueryOptions));
7668
+ resultData.previousData =
7669
+ ((_a = resultData.current) === null || _a === void 0 ? void 0 : _a.data) || resultData.previousData;
7670
+ resultData.current = void 0;
7671
+ }
7672
+ observable[lastWatchOptions] = watchQueryOptions;
7673
+ }
7674
+ function createMakeWatchQueryOptions(client, query, _a, isSyncSSR) {
7675
+ if (_a === void 0) { _a = {}; }
7676
+ var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; var defaultOptions = _a.defaultOptions,
7677
+ otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "defaultOptions"]);
7678
+ return function (observable) {
7679
+ var watchQueryOptions = Object.assign(otherOptions, { query: query });
7680
+ if (isSyncSSR &&
7666
7681
  (watchQueryOptions.fetchPolicy === "network-only" ||
7667
7682
  watchQueryOptions.fetchPolicy === "cache-and-network")) {
7668
7683
  watchQueryOptions.fetchPolicy = "cache-first";
@@ -7671,117 +7686,119 @@ var InternalState = (function () {
7671
7686
  watchQueryOptions.variables = {};
7672
7687
  }
7673
7688
  if (skip) {
7674
- var _c = watchQueryOptions.fetchPolicy, fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c, _d = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;
7675
- Object.assign(watchQueryOptions, {
7676
- initialFetchPolicy: initialFetchPolicy,
7677
- fetchPolicy: "standby",
7678
- });
7689
+ watchQueryOptions.initialFetchPolicy =
7690
+ watchQueryOptions.initialFetchPolicy ||
7691
+ watchQueryOptions.fetchPolicy ||
7692
+ getDefaultFetchPolicy(defaultOptions, client.defaultOptions);
7693
+ watchQueryOptions.fetchPolicy = "standby";
7679
7694
  }
7680
7695
  else if (!watchQueryOptions.fetchPolicy) {
7681
7696
  watchQueryOptions.fetchPolicy =
7682
- ((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) ||
7683
- this.getDefaultFetchPolicy();
7697
+ (observable === null || observable === void 0 ? void 0 : observable.options.initialFetchPolicy) ||
7698
+ getDefaultFetchPolicy(defaultOptions, client.defaultOptions);
7684
7699
  }
7685
7700
  return watchQueryOptions;
7686
7701
  };
7687
- InternalState.prototype.getDefaultFetchPolicy = function () {
7688
- var _a, _b;
7689
- return (((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
7690
- ((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
7691
- "cache-first");
7692
- };
7693
- InternalState.prototype.onCompleted = function (data) { };
7694
- InternalState.prototype.onError = function (error) { };
7695
- InternalState.prototype.useObservableQuery = function () {
7696
- var obsQuery = (this.observable =
7697
- (this.renderPromises &&
7698
- this.renderPromises.getSSRObservable(this.watchQueryOptions)) ||
7699
- this.observable ||
7700
- this.client.watchQuery(this.getObsQueryOptions()));
7701
- this.obsQueryFields = React__namespace.useMemo(function () { return ({
7702
- refetch: obsQuery.refetch.bind(obsQuery),
7703
- reobserve: obsQuery.reobserve.bind(obsQuery),
7704
- fetchMore: obsQuery.fetchMore.bind(obsQuery),
7705
- updateQuery: obsQuery.updateQuery.bind(obsQuery),
7706
- startPolling: obsQuery.startPolling.bind(obsQuery),
7707
- stopPolling: obsQuery.stopPolling.bind(obsQuery),
7708
- subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
7709
- }); }, [obsQuery]);
7710
- var ssrAllowed = !(this.queryHookOptions.ssr === false || this.queryHookOptions.skip);
7711
- if (this.renderPromises && ssrAllowed) {
7712
- this.renderPromises.registerSSRObservable(obsQuery);
7713
- if (obsQuery.getCurrentResult().loading) {
7714
- this.renderPromises.addObservableQueryPromise(obsQuery);
7715
- }
7716
- }
7717
- return obsQuery;
7718
- };
7719
- InternalState.prototype.setResult = function (nextResult) {
7720
- var previousResult = this.result;
7721
- if (previousResult && previousResult.data) {
7722
- this.previousData = previousResult.data;
7723
- }
7724
- this.result = nextResult;
7725
- this.forceUpdate();
7726
- this.handleErrorOrCompleted(nextResult, previousResult);
7727
- };
7728
- InternalState.prototype.handleErrorOrCompleted = function (result, previousResult) {
7729
- var _this = this;
7730
- if (!result.loading) {
7731
- var error_1 = this.toApolloError(result);
7732
- Promise.resolve()
7733
- .then(function () {
7734
- if (error_1) {
7735
- _this.onError(error_1);
7736
- }
7737
- else if (result.data &&
7738
- (previousResult === null || previousResult === void 0 ? void 0 : previousResult.networkStatus) !== result.networkStatus &&
7739
- result.networkStatus === exports.NetworkStatus.ready) {
7740
- _this.onCompleted(result.data);
7741
- }
7742
- })
7743
- .catch(function (error) {
7744
- globalThis.__DEV__ !== false && invariant.warn(error);
7745
- });
7746
- }
7747
- };
7748
- InternalState.prototype.toApolloError = function (result) {
7749
- return isNonEmptyArray(result.errors) ?
7750
- new ApolloError({ graphQLErrors: result.errors })
7751
- : result.error;
7752
- };
7753
- InternalState.prototype.getCurrentResult = function () {
7754
- if (!this.result) {
7755
- this.handleErrorOrCompleted((this.result = this.observable.getCurrentResult()));
7756
- }
7757
- return this.result;
7758
- };
7759
- InternalState.prototype.toQueryResult = function (result) {
7760
- var queryResult = this.toQueryResultCache.get(result);
7761
- if (queryResult)
7762
- return queryResult;
7763
- var data = result.data; result.partial; var resultWithoutPartial = tslib.__rest(result, ["data", "partial"]);
7764
- this.toQueryResultCache.set(result, (queryResult = tslib.__assign(tslib.__assign(tslib.__assign({ data: data }, resultWithoutPartial), this.obsQueryFields), { client: this.client, observable: this.observable, variables: this.observable.variables, called: !this.queryHookOptions.skip, previousData: this.previousData })));
7765
- if (!queryResult.error && isNonEmptyArray(result.errors)) {
7766
- queryResult.error = new ApolloError({ graphQLErrors: result.errors });
7767
- }
7768
- return queryResult;
7769
- };
7770
- InternalState.prototype.unsafeHandlePartialRefetch = function (result) {
7771
- if (result.partial &&
7772
- this.queryHookOptions.partialRefetch &&
7773
- !result.loading &&
7774
- (!result.data || Object.keys(result.data).length === 0) &&
7775
- this.observable.options.fetchPolicy !== "cache-only") {
7776
- Object.assign(result, {
7777
- loading: true,
7778
- networkStatus: exports.NetworkStatus.refetch,
7779
- });
7780
- this.observable.refetch();
7781
- }
7702
+ }
7703
+ function getObsQueryOptions(observable, client, queryHookOptions, watchQueryOptions) {
7704
+ var toMerge = [];
7705
+ var globalDefaults = client.defaultOptions.watchQuery;
7706
+ if (globalDefaults)
7707
+ toMerge.push(globalDefaults);
7708
+ if (queryHookOptions.defaultOptions) {
7709
+ toMerge.push(queryHookOptions.defaultOptions);
7710
+ }
7711
+ toMerge.push(compact(observable && observable.options, watchQueryOptions));
7712
+ return toMerge.reduce(mergeOptions);
7713
+ }
7714
+ function setResult(nextResult, resultData, observable, client, partialRefetch, forceUpdate, callbacks) {
7715
+ var previousResult = resultData.current;
7716
+ if (previousResult && previousResult.data) {
7717
+ resultData.previousData = previousResult.data;
7718
+ }
7719
+ resultData.current = toQueryResult(unsafeHandlePartialRefetch(nextResult, observable, partialRefetch), resultData.previousData, observable, client);
7720
+ forceUpdate();
7721
+ handleErrorOrCompleted(nextResult, previousResult === null || previousResult === void 0 ? void 0 : previousResult[originalResult], callbacks);
7722
+ }
7723
+ function handleErrorOrCompleted(result, previousResult, callbacks) {
7724
+ if (!result.loading) {
7725
+ var error_1 = toApolloError$1(result);
7726
+ Promise.resolve()
7727
+ .then(function () {
7728
+ if (error_1) {
7729
+ callbacks.onError(error_1);
7730
+ }
7731
+ else if (result.data &&
7732
+ (previousResult === null || previousResult === void 0 ? void 0 : previousResult.networkStatus) !== result.networkStatus &&
7733
+ result.networkStatus === exports.NetworkStatus.ready) {
7734
+ callbacks.onCompleted(result.data);
7735
+ }
7736
+ })
7737
+ .catch(function (error) {
7738
+ globalThis.__DEV__ !== false && invariant.warn(error);
7739
+ });
7740
+ }
7741
+ }
7742
+ function getCurrentResult(resultData, observable, callbacks, partialRefetch, client) {
7743
+ if (!resultData.current) {
7744
+ setResult(observable.getCurrentResult(), resultData, observable, client, partialRefetch, function () { }, callbacks);
7745
+ }
7746
+ return resultData.current;
7747
+ }
7748
+ function getDefaultFetchPolicy(queryHookDefaultOptions, clientDefaultOptions) {
7749
+ var _a;
7750
+ return ((queryHookDefaultOptions === null || queryHookDefaultOptions === void 0 ? void 0 : queryHookDefaultOptions.fetchPolicy) ||
7751
+ ((_a = clientDefaultOptions === null || clientDefaultOptions === void 0 ? void 0 : clientDefaultOptions.watchQuery) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
7752
+ "cache-first");
7753
+ }
7754
+ function toApolloError$1(result) {
7755
+ return isNonEmptyArray(result.errors) ?
7756
+ new ApolloError({ graphQLErrors: result.errors })
7757
+ : result.error;
7758
+ }
7759
+ function toQueryResult(result, previousData, observable, client) {
7760
+ var data = result.data; result.partial; var resultWithoutPartial = tslib.__rest(result, ["data", "partial"]);
7761
+ var queryResult = tslib.__assign(tslib.__assign({ data: data }, resultWithoutPartial), { client: client, observable: observable, variables: observable.variables, called: result !== ssrDisabledResult && result !== skipStandbyResult, previousData: previousData });
7762
+ Object.defineProperty(queryResult, originalResult, { value: result });
7763
+ if (!queryResult.error && isNonEmptyArray(result.errors)) {
7764
+ queryResult.error = new ApolloError({ graphQLErrors: result.errors });
7765
+ }
7766
+ return queryResult;
7767
+ }
7768
+ function unsafeHandlePartialRefetch(result, observable, partialRefetch) {
7769
+ if (result.partial &&
7770
+ partialRefetch &&
7771
+ !result.loading &&
7772
+ (!result.data || Object.keys(result.data).length === 0) &&
7773
+ observable.options.fetchPolicy !== "cache-only") {
7774
+ observable.refetch();
7775
+ return tslib.__assign(tslib.__assign({}, result), { loading: true, networkStatus: exports.NetworkStatus.refetch });
7776
+ }
7777
+ return result;
7778
+ }
7779
+ var ssrDisabledResult = maybeDeepFreeze({
7780
+ loading: true,
7781
+ data: void 0,
7782
+ error: void 0,
7783
+ networkStatus: exports.NetworkStatus.loading,
7784
+ });
7785
+ var skipStandbyResult = maybeDeepFreeze({
7786
+ loading: false,
7787
+ data: void 0,
7788
+ error: void 0,
7789
+ networkStatus: exports.NetworkStatus.ready,
7790
+ });
7791
+ function bindObservableMethods(observable) {
7792
+ return {
7793
+ refetch: observable.refetch.bind(observable),
7794
+ reobserve: observable.reobserve.bind(observable),
7795
+ fetchMore: observable.fetchMore.bind(observable),
7796
+ updateQuery: observable.updateQuery.bind(observable),
7797
+ startPolling: observable.startPolling.bind(observable),
7798
+ stopPolling: observable.stopPolling.bind(observable),
7799
+ subscribeToMore: observable.subscribeToMore.bind(observable),
7782
7800
  };
7783
- return InternalState;
7784
- }());
7801
+ }
7785
7802
 
7786
7803
  var EAGER_METHODS = [
7787
7804
  "refetch",
@@ -7789,6 +7806,7 @@ var EAGER_METHODS = [
7789
7806
  "fetchMore",
7790
7807
  "updateQuery",
7791
7808
  "startPolling",
7809
+ "stopPolling",
7792
7810
  "subscribeToMore",
7793
7811
  ];
7794
7812
  function useLazyQuery(query, options) {
@@ -7800,11 +7818,11 @@ function useLazyQuery(query, options) {
7800
7818
  var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;
7801
7819
  optionsRef.current = options;
7802
7820
  queryRef.current = document;
7803
- var internalState = useInternalState(useApolloClient(options && options.client), document);
7804
- var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current }));
7805
- var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
7806
- internalState.getDefaultFetchPolicy();
7807
- var forceUpdateState = internalState.forceUpdateState, obsQueryFields = internalState.obsQueryFields;
7821
+ var queryHookOptions = tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current });
7822
+ var _b = useQueryInternals(document, queryHookOptions), obsQueryFields = _b.obsQueryFields, useQueryResult = _b.result, client = _b.client, resultData = _b.resultData, observable = _b.observable, onQueryExecuted = _b.onQueryExecuted;
7823
+ var initialFetchPolicy = observable.options.initialFetchPolicy ||
7824
+ getDefaultFetchPolicy(queryHookOptions.defaultOptions, client.defaultOptions);
7825
+ var forceUpdateState = React__namespace.useReducer(function (tick) { return tick + 1; }, 0)[1];
7808
7826
  var eagerMethods = React__namespace.useMemo(function () {
7809
7827
  var eagerMethods = {};
7810
7828
  var _loop_1 = function (key) {
@@ -7831,13 +7849,50 @@ function useLazyQuery(query, options) {
7831
7849
  fetchPolicy: initialFetchPolicy,
7832
7850
  };
7833
7851
  var options = mergeOptions(optionsRef.current, tslib.__assign({ query: queryRef.current }, execOptionsRef.current));
7834
- var promise = internalState
7835
- .executeQuery(tslib.__assign(tslib.__assign({}, options), { skip: false }))
7836
- .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
7852
+ var promise = executeQuery(resultData, observable, client, document, tslib.__assign(tslib.__assign({}, options), { skip: false }), onQueryExecuted).then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
7837
7853
  promise.catch(function () { });
7838
7854
  return promise;
7839
- }, [eagerMethods, initialFetchPolicy, internalState]);
7840
- return [execute, result];
7855
+ }, [
7856
+ client,
7857
+ document,
7858
+ eagerMethods,
7859
+ initialFetchPolicy,
7860
+ observable,
7861
+ resultData,
7862
+ onQueryExecuted,
7863
+ ]);
7864
+ var executeRef = React__namespace.useRef(execute);
7865
+ useIsomorphicLayoutEffect(function () {
7866
+ executeRef.current = execute;
7867
+ });
7868
+ var stableExecute = React__namespace.useCallback(function () {
7869
+ var args = [];
7870
+ for (var _i = 0; _i < arguments.length; _i++) {
7871
+ args[_i] = arguments[_i];
7872
+ }
7873
+ return executeRef.current.apply(executeRef, args);
7874
+ }, []);
7875
+ return [stableExecute, result];
7876
+ }
7877
+ function executeQuery(resultData, observable, client, currentQuery, options, onQueryExecuted) {
7878
+ var query = options.query || currentQuery;
7879
+ var watchQueryOptions = createMakeWatchQueryOptions(client, query, options, false)(observable);
7880
+ var concast = observable.reobserveAsConcast(getObsQueryOptions(observable, client, options, watchQueryOptions));
7881
+ onQueryExecuted(watchQueryOptions);
7882
+ return new Promise(function (resolve) {
7883
+ var result;
7884
+ concast.subscribe({
7885
+ next: function (value) {
7886
+ result = value;
7887
+ },
7888
+ error: function () {
7889
+ resolve(toQueryResult(observable.getCurrentResult(), resultData.previousData, observable, client));
7890
+ },
7891
+ complete: function () {
7892
+ resolve(toQueryResult(result, resultData.previousData, observable, client));
7893
+ },
7894
+ });
7895
+ });
7841
7896
  }
7842
7897
 
7843
7898
  function useMutation(mutation, options) {
@@ -7952,89 +8007,67 @@ function useMutation(mutation, options) {
7952
8007
  }
7953
8008
 
7954
8009
  function useSubscription(subscription, options) {
8010
+ if (options === void 0) { options = Object.create(null); }
7955
8011
  var hasIssuedDeprecationWarningRef = React__namespace.useRef(false);
7956
- var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);
8012
+ var client = useApolloClient(options.client);
7957
8013
  verifyDocumentType(subscription, exports.DocumentType.Subscription);
7958
- var _a = React__namespace.useState({
7959
- loading: !(options === null || options === void 0 ? void 0 : options.skip),
7960
- error: void 0,
7961
- data: void 0,
7962
- variables: options === null || options === void 0 ? void 0 : options.variables,
7963
- }), result = _a[0], setResult = _a[1];
7964
8014
  if (!hasIssuedDeprecationWarningRef.current) {
7965
8015
  hasIssuedDeprecationWarningRef.current = true;
7966
- if (options === null || options === void 0 ? void 0 : options.onSubscriptionData) {
8016
+ if (options.onSubscriptionData) {
7967
8017
  globalThis.__DEV__ !== false && invariant.warn(options.onData ? 52 : 53);
7968
8018
  }
7969
- if (options === null || options === void 0 ? void 0 : options.onSubscriptionComplete) {
8019
+ if (options.onSubscriptionComplete) {
7970
8020
  globalThis.__DEV__ !== false && invariant.warn(options.onComplete ? 54 : 55);
7971
8021
  }
7972
8022
  }
7973
- var _b = React__namespace.useState(function () {
7974
- if (options === null || options === void 0 ? void 0 : options.skip) {
7975
- return null;
7976
- }
7977
- return client.subscribe({
7978
- query: subscription,
7979
- variables: options === null || options === void 0 ? void 0 : options.variables,
7980
- fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
7981
- context: options === null || options === void 0 ? void 0 : options.context,
7982
- });
7983
- }), observable = _b[0], setObservable = _b[1];
7984
- var canResetObservableRef = React__namespace.useRef(false);
7985
- React__namespace.useEffect(function () {
7986
- return function () {
7987
- canResetObservableRef.current = true;
7988
- };
7989
- }, []);
7990
- var ref = React__namespace.useRef({ client: client, subscription: subscription, options: options });
7991
- React__namespace.useEffect(function () {
7992
- var _a, _b, _c, _d;
7993
- var shouldResubscribe = options === null || options === void 0 ? void 0 : options.shouldResubscribe;
7994
- if (typeof shouldResubscribe === "function") {
7995
- shouldResubscribe = !!shouldResubscribe(options);
7996
- }
7997
- if (options === null || options === void 0 ? void 0 : options.skip) {
7998
- if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip) ||
7999
- canResetObservableRef.current) {
8000
- setResult({
8001
- loading: false,
8002
- data: void 0,
8003
- error: void 0,
8004
- variables: options === null || options === void 0 ? void 0 : options.variables,
8005
- });
8006
- setObservable(null);
8007
- canResetObservableRef.current = false;
8008
- }
8009
- }
8010
- else if ((shouldResubscribe !== false &&
8011
- (client !== ref.current.client ||
8012
- subscription !== ref.current.subscription ||
8013
- (options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
8014
- !(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||
8015
- !equal.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) ||
8016
- canResetObservableRef.current) {
8017
- setResult({
8018
- loading: true,
8019
- data: void 0,
8020
- error: void 0,
8021
- variables: options === null || options === void 0 ? void 0 : options.variables,
8022
- });
8023
- setObservable(client.subscribe({
8024
- query: subscription,
8025
- variables: options === null || options === void 0 ? void 0 : options.variables,
8026
- fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
8027
- context: options === null || options === void 0 ? void 0 : options.context,
8028
- }));
8029
- canResetObservableRef.current = false;
8030
- }
8031
- Object.assign(ref.current, { client: client, subscription: subscription, options: options });
8032
- }, [client, subscription, options, canResetObservableRef.current]);
8023
+ var skip = options.skip, fetchPolicy = options.fetchPolicy, errorPolicy = options.errorPolicy, shouldResubscribe = options.shouldResubscribe, context = options.context, extensions = options.extensions, ignoreResults = options.ignoreResults;
8024
+ var variables = useDeepMemo(function () { return options.variables; }, [options.variables]);
8025
+ var recreate = function () {
8026
+ return createSubscription(client, subscription, variables, fetchPolicy, errorPolicy, context, extensions);
8027
+ };
8028
+ var _a = React__namespace.useState(options.skip ? null : recreate), observable = _a[0], setObservable = _a[1];
8029
+ var recreateRef = React__namespace.useRef(recreate);
8030
+ useIsomorphicLayoutEffect(function () {
8031
+ recreateRef.current = recreate;
8032
+ });
8033
+ if (skip) {
8034
+ if (observable) {
8035
+ setObservable((observable = null));
8036
+ }
8037
+ }
8038
+ else if (!observable ||
8039
+ ((client !== observable.__.client ||
8040
+ subscription !== observable.__.query ||
8041
+ fetchPolicy !== observable.__.fetchPolicy ||
8042
+ errorPolicy !== observable.__.errorPolicy ||
8043
+ !equal.equal(variables, observable.__.variables)) &&
8044
+ (typeof shouldResubscribe === "function" ?
8045
+ !!shouldResubscribe(options)
8046
+ : shouldResubscribe) !== false)) {
8047
+ setObservable((observable = recreate()));
8048
+ }
8049
+ var optionsRef = React__namespace.useRef(options);
8033
8050
  React__namespace.useEffect(function () {
8051
+ optionsRef.current = options;
8052
+ });
8053
+ var fallbackLoading = !skip && !ignoreResults;
8054
+ var fallbackResult = React__namespace.useMemo(function () { return ({
8055
+ loading: fallbackLoading,
8056
+ error: void 0,
8057
+ data: void 0,
8058
+ variables: variables,
8059
+ }); }, [fallbackLoading, variables]);
8060
+ var ignoreResultsRef = React__namespace.useRef(ignoreResults);
8061
+ useIsomorphicLayoutEffect(function () {
8062
+ ignoreResultsRef.current = ignoreResults;
8063
+ });
8064
+ var ret = useSyncExternalStore(React__namespace.useCallback(function (update) {
8034
8065
  if (!observable) {
8035
- return;
8066
+ return function () { };
8036
8067
  }
8037
8068
  var subscriptionStopped = false;
8069
+ var variables = observable.__.variables;
8070
+ var client = observable.__.client;
8038
8071
  var subscription = observable.subscribe({
8039
8072
  next: function (fetchResult) {
8040
8073
  var _a, _b;
@@ -8044,18 +8077,23 @@ function useSubscription(subscription, options) {
8044
8077
  var result = {
8045
8078
  loading: false,
8046
8079
  data: fetchResult.data,
8047
- error: void 0,
8048
- variables: options === null || options === void 0 ? void 0 : options.variables,
8080
+ error: toApolloError$1(fetchResult),
8081
+ variables: variables,
8049
8082
  };
8050
- setResult(result);
8051
- if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onData) {
8052
- ref.current.options.onData({
8083
+ observable.__.setResult(result);
8084
+ if (!ignoreResultsRef.current)
8085
+ update();
8086
+ if (result.error) {
8087
+ (_b = (_a = optionsRef.current).onError) === null || _b === void 0 ? void 0 : _b.call(_a, result.error);
8088
+ }
8089
+ else if (optionsRef.current.onData) {
8090
+ optionsRef.current.onData({
8053
8091
  client: client,
8054
8092
  data: result,
8055
8093
  });
8056
8094
  }
8057
- else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionData) {
8058
- ref.current.options.onSubscriptionData({
8095
+ else if (optionsRef.current.onSubscriptionData) {
8096
+ optionsRef.current.onSubscriptionData({
8059
8097
  client: client,
8060
8098
  subscriptionData: result,
8061
8099
  });
@@ -8063,24 +8101,27 @@ function useSubscription(subscription, options) {
8063
8101
  },
8064
8102
  error: function (error) {
8065
8103
  var _a, _b;
8104
+ error =
8105
+ error instanceof ApolloError ? error : (new ApolloError({ protocolErrors: [error] }));
8066
8106
  if (!subscriptionStopped) {
8067
- setResult({
8107
+ observable.__.setResult({
8068
8108
  loading: false,
8069
8109
  data: void 0,
8070
8110
  error: error,
8071
- variables: options === null || options === void 0 ? void 0 : options.variables,
8111
+ variables: variables,
8072
8112
  });
8073
- (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
8113
+ if (!ignoreResultsRef.current)
8114
+ update();
8115
+ (_b = (_a = optionsRef.current).onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
8074
8116
  }
8075
8117
  },
8076
8118
  complete: function () {
8077
- var _a, _b;
8078
8119
  if (!subscriptionStopped) {
8079
- if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onComplete) {
8080
- ref.current.options.onComplete();
8120
+ if (optionsRef.current.onComplete) {
8121
+ optionsRef.current.onComplete();
8081
8122
  }
8082
- else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionComplete) {
8083
- ref.current.options.onSubscriptionComplete();
8123
+ else if (optionsRef.current.onSubscriptionComplete) {
8124
+ optionsRef.current.onSubscriptionComplete();
8084
8125
  }
8085
8126
  }
8086
8127
  },
@@ -8091,8 +8132,43 @@ function useSubscription(subscription, options) {
8091
8132
  subscription.unsubscribe();
8092
8133
  });
8093
8134
  };
8094
- }, [observable]);
8095
- return result;
8135
+ }, [observable]), function () {
8136
+ return observable && !skip && !ignoreResults ?
8137
+ observable.__.result
8138
+ : fallbackResult;
8139
+ });
8140
+ return React__namespace.useMemo(function () { return (tslib.__assign(tslib.__assign({}, ret), { restart: function () {
8141
+ invariant(!optionsRef.current.skip, 56);
8142
+ setObservable(recreateRef.current());
8143
+ } })); }, [ret]);
8144
+ }
8145
+ function createSubscription(client, query, variables, fetchPolicy, errorPolicy, context, extensions) {
8146
+ var options = {
8147
+ query: query,
8148
+ variables: variables,
8149
+ fetchPolicy: fetchPolicy,
8150
+ errorPolicy: errorPolicy,
8151
+ context: context,
8152
+ extensions: extensions,
8153
+ };
8154
+ var __ = tslib.__assign(tslib.__assign({}, options), { client: client, result: {
8155
+ loading: true,
8156
+ data: void 0,
8157
+ error: void 0,
8158
+ variables: variables,
8159
+ }, setResult: function (result) {
8160
+ __.result = result;
8161
+ } });
8162
+ var observable = null;
8163
+ return Object.assign(new zenObservableTs.Observable(function (observer) {
8164
+ if (!observable) {
8165
+ observable = client.subscribe(options);
8166
+ }
8167
+ var sub = observable.subscribe(observer);
8168
+ return function () { return sub.unsubscribe(); };
8169
+ }), {
8170
+ __: __,
8171
+ });
8096
8172
  }
8097
8173
 
8098
8174
  function useReactiveVar(rv) {
@@ -8164,7 +8240,7 @@ function wrapQueryRef(internalQueryRef) {
8164
8240
  return ref;
8165
8241
  }
8166
8242
  function assertWrappedQueryRef(queryRef) {
8167
- invariant(!queryRef || QUERY_REFERENCE_SYMBOL in queryRef, 59);
8243
+ invariant(!queryRef || QUERY_REFERENCE_SYMBOL in queryRef, 60);
8168
8244
  }
8169
8245
  function getWrappedPromise(queryRef) {
8170
8246
  var internalQueryRef = unwrapQueryRef(queryRef);
@@ -8508,7 +8584,7 @@ function _useSuspenseQuery(query, options) {
8508
8584
  setPromise([queryRef.key, queryRef.promise]);
8509
8585
  return promise;
8510
8586
  }, [queryRef]);
8511
- var subscribeToMore = React__namespace.useCallback(function (options) { return queryRef.observable.subscribeToMore(options); }, [queryRef]);
8587
+ var subscribeToMore = queryRef.observable.subscribeToMore;
8512
8588
  return React__namespace.useMemo(function () {
8513
8589
  return {
8514
8590
  client: client,
@@ -8535,11 +8611,11 @@ function validateFetchPolicy(fetchPolicy) {
8535
8611
  "no-cache",
8536
8612
  "cache-and-network",
8537
8613
  ];
8538
- invariant(supportedFetchPolicies.includes(fetchPolicy), 56, fetchPolicy);
8614
+ invariant(supportedFetchPolicies.includes(fetchPolicy), 57, fetchPolicy);
8539
8615
  }
8540
8616
  function validatePartialDataReturn(fetchPolicy, returnPartialData) {
8541
8617
  if (fetchPolicy === "no-cache" && returnPartialData) {
8542
- globalThis.__DEV__ !== false && invariant.warn(57);
8618
+ globalThis.__DEV__ !== false && invariant.warn(58);
8543
8619
  }
8544
8620
  }
8545
8621
  function toApolloError(result) {
@@ -8616,7 +8692,11 @@ function _useBackgroundQuery(query, options) {
8616
8692
  React__namespace.useEffect(function () { return queryRef.softRetain(); }, [queryRef]);
8617
8693
  return [
8618
8694
  didFetchResult.current ? wrappedQueryRef : void 0,
8619
- { fetchMore: fetchMore, refetch: refetch },
8695
+ {
8696
+ fetchMore: fetchMore,
8697
+ refetch: refetch,
8698
+ subscribeToMore: queryRef.observable.subscribeToMore,
8699
+ },
8620
8700
  ];
8621
8701
  }
8622
8702
 
@@ -8673,10 +8753,14 @@ function useLoadableQuery(query, options) {
8673
8753
  calledDuringRender,
8674
8754
  client,
8675
8755
  ]);
8756
+ var subscribeToMore = React__namespace.useCallback(function (options) {
8757
+ invariant(internalQueryRef, 51);
8758
+ return internalQueryRef.observable.subscribeToMore(options);
8759
+ }, [internalQueryRef]);
8676
8760
  var reset = React__namespace.useCallback(function () {
8677
8761
  setQueryRef(null);
8678
8762
  }, []);
8679
- return [loadQuery, queryRef, { fetchMore: fetchMore, refetch: refetch, reset: reset }];
8763
+ return [loadQuery, queryRef, { fetchMore: fetchMore, refetch: refetch, reset: reset, subscribeToMore: subscribeToMore }];
8680
8764
  }
8681
8765
 
8682
8766
  function useQueryRefHandlers(queryRef) {
@@ -8707,7 +8791,11 @@ function _useQueryRefHandlers(queryRef) {
8707
8791
  setWrappedQueryRef(wrapQueryRef(internalQueryRef));
8708
8792
  return promise;
8709
8793
  }, [internalQueryRef]);
8710
- return { refetch: refetch, fetchMore: fetchMore };
8794
+ return {
8795
+ refetch: refetch,
8796
+ fetchMore: fetchMore,
8797
+ subscribeToMore: internalQueryRef.observable.subscribeToMore,
8798
+ };
8711
8799
  }
8712
8800
 
8713
8801
  function useReadQuery(queryRef) {
@@ -8742,6 +8830,9 @@ function _useReadQuery(queryRef) {
8742
8830
  }
8743
8831
 
8744
8832
  function createQueryPreloader(client) {
8833
+ return wrapHook("createQueryPreloader", _createQueryPreloader, client)(client);
8834
+ }
8835
+ var _createQueryPreloader = function (client) {
8745
8836
  return function preloadQuery(query, options) {
8746
8837
  var _a, _b;
8747
8838
  if (options === void 0) { options = Object.create(null); }
@@ -8750,7 +8841,7 @@ function createQueryPreloader(client) {
8750
8841
  });
8751
8842
  return wrapQueryRef(queryRef);
8752
8843
  };
8753
- }
8844
+ };
8754
8845
 
8755
8846
  exports.setLogVerbosity = tsInvariant.setVerbosity;
8756
8847
  exports.Observable = zenObservableTs.Observable;