@apollo/client 3.14.0-alpha.0 → 3.14.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 (200) hide show
  1. package/.changeset/breezy-lions-rule.md +5 -0
  2. package/.changeset/great-jobs-fetch.md +5 -0
  3. package/.changeset/pre.json +6 -2
  4. package/.changeset/shy-boxes-exercise.md +5 -0
  5. package/.changeset/tidy-bulldogs-exercise.md +5 -0
  6. package/CHANGELOG.md +16 -0
  7. package/README.md +2 -2
  8. package/apollo-client.cjs +187 -119
  9. package/apollo-client.cjs.map +1 -1
  10. package/apollo-client.min.cjs +1 -1
  11. package/cache/cache.cjs +7 -2
  12. package/cache/cache.cjs.map +1 -1
  13. package/cache/cache.cjs.native.js +7 -2
  14. package/cache/inmemory/inMemoryCache.d.ts +8 -0
  15. package/cache/inmemory/inMemoryCache.js +3 -0
  16. package/cache/inmemory/inMemoryCache.js.map +1 -1
  17. package/core/ApolloClient.d.ts +9 -9
  18. package/core/ApolloClient.js +6 -1
  19. package/core/ApolloClient.js.map +1 -1
  20. package/core/LocalState.js +2 -2
  21. package/core/ObservableQuery.d.ts +51 -6
  22. package/core/ObservableQuery.js +89 -13
  23. package/core/ObservableQuery.js.map +1 -1
  24. package/core/QueryInfo.js +6 -3
  25. package/core/QueryInfo.js.map +1 -1
  26. package/core/QueryManager.js +14 -12
  27. package/core/QueryManager.js.map +1 -1
  28. package/core/core.cjs +85 -33
  29. package/core/core.cjs.map +1 -1
  30. package/core/core.cjs.native.js +85 -33
  31. package/core/types.d.ts +177 -3
  32. package/core/types.js.map +1 -1
  33. package/core/watchQueryOptions.d.ts +10 -2
  34. package/core/watchQueryOptions.js.map +1 -1
  35. package/dev/dev.cjs +149 -97
  36. package/dev/dev.cjs.map +1 -1
  37. package/dev/dev.cjs.native.js +149 -97
  38. package/errors/errors.cjs.map +1 -1
  39. package/errors/index.d.ts +19 -0
  40. package/errors/index.js +19 -0
  41. package/errors/index.js.map +1 -1
  42. package/invariantErrorCodes.js +161 -96
  43. package/link/batch-http/batch-http.cjs +9 -0
  44. package/link/batch-http/batch-http.cjs.map +1 -1
  45. package/link/batch-http/batch-http.cjs.native.js +9 -0
  46. package/link/batch-http/batchHttpLink.js +9 -0
  47. package/link/batch-http/batchHttpLink.js.map +1 -1
  48. package/link/core/ApolloLink.d.ts +8 -0
  49. package/link/core/ApolloLink.js +19 -2
  50. package/link/core/ApolloLink.js.map +1 -1
  51. package/link/core/core.cjs +24 -2
  52. package/link/core/core.cjs.map +1 -1
  53. package/link/core/core.cjs.native.js +24 -2
  54. package/link/core/types.d.ts +20 -0
  55. package/link/core/types.js.map +1 -1
  56. package/link/error/index.d.ts +48 -0
  57. package/link/error/index.js.map +1 -1
  58. package/link/http/checkFetcher.js +1 -1
  59. package/link/http/createHttpLink.js +4 -1
  60. package/link/http/createHttpLink.js.map +1 -1
  61. package/link/http/http.cjs +6 -3
  62. package/link/http/http.cjs.map +1 -1
  63. package/link/http/http.cjs.native.js +6 -3
  64. package/link/http/serializeFetchParameter.js +1 -1
  65. package/link/persisted-queries/index.d.ts +38 -0
  66. package/link/persisted-queries/index.js +2 -2
  67. package/link/persisted-queries/index.js.map +1 -1
  68. package/link/persisted-queries/persisted-queries.cjs +2 -2
  69. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  70. package/link/persisted-queries/persisted-queries.cjs.native.js +2 -2
  71. package/link/utils/fromError.d.ts +16 -0
  72. package/link/utils/fromError.js +16 -0
  73. package/link/utils/fromError.js.map +1 -1
  74. package/link/utils/fromPromise.d.ts +16 -0
  75. package/link/utils/fromPromise.js +16 -0
  76. package/link/utils/fromPromise.js.map +1 -1
  77. package/link/utils/throwServerError.d.ts +30 -0
  78. package/link/utils/throwServerError.js +17 -0
  79. package/link/utils/throwServerError.js.map +1 -1
  80. package/link/utils/toPromise.d.ts +16 -0
  81. package/link/utils/toPromise.js +17 -1
  82. package/link/utils/toPromise.js.map +1 -1
  83. package/link/utils/utils.cjs +2 -2
  84. package/link/utils/utils.cjs.map +1 -1
  85. package/link/utils/utils.cjs.native.js +2 -2
  86. package/link/utils/validateOperation.js +1 -1
  87. package/masking/maskDefinition.js +2 -2
  88. package/masking/maskFragment.js +2 -2
  89. package/masking/maskOperation.js +1 -1
  90. package/masking/masking.cjs +6 -6
  91. package/masking/masking.cjs.map +1 -1
  92. package/masking/masking.cjs.native.js +6 -6
  93. package/masking/utils.js +1 -1
  94. package/masking/utils.js.map +1 -1
  95. package/package.json +1 -1
  96. package/react/components/Mutation.js +1 -1
  97. package/react/components/Query.js +1 -1
  98. package/react/components/Subscription.js +1 -1
  99. package/react/components/components.cjs +6 -4
  100. package/react/components/components.cjs.map +1 -1
  101. package/react/components/components.cjs.native.js +6 -4
  102. package/react/context/ApolloConsumer.js +1 -1
  103. package/react/context/ApolloContext.js +2 -2
  104. package/react/context/ApolloProvider.js +1 -1
  105. package/react/context/context.cjs +4 -4
  106. package/react/context/context.cjs.map +1 -1
  107. package/react/context/context.cjs.native.js +4 -4
  108. package/react/hoc/graphql.js +1 -1
  109. package/react/hoc/hoc-utils.js +1 -1
  110. package/react/hoc/hoc.cjs +9 -7
  111. package/react/hoc/hoc.cjs.map +1 -1
  112. package/react/hoc/hoc.cjs.native.js +9 -7
  113. package/react/hoc/mutation-hoc.js +1 -1
  114. package/react/hoc/query-hoc.js +1 -1
  115. package/react/hoc/subscription-hoc.js +1 -1
  116. package/react/hoc/withApollo.js +1 -1
  117. package/react/hooks/hooks.cjs +18 -16
  118. package/react/hooks/hooks.cjs.map +1 -1
  119. package/react/hooks/hooks.cjs.native.js +18 -16
  120. package/react/hooks/internal/useWarnRemoved.d.ts +2 -1
  121. package/react/hooks/internal/useWarnRemoved.js.map +1 -1
  122. package/react/hooks/internal/useWarnRemovedOption.js +1 -1
  123. package/react/hooks/useApolloClient.js +1 -1
  124. package/react/hooks/useLazyQuery.js +2 -2
  125. package/react/hooks/useLoadableQuery.js +2 -2
  126. package/react/hooks/useQuery.js +1 -1
  127. package/react/hooks/useSubscription.js +3 -3
  128. package/react/hooks/useSuspenseQuery.js +2 -2
  129. package/react/hooks/useSyncExternalStore.js +1 -1
  130. package/react/internal/cache/QueryReference.d.ts +1 -0
  131. package/react/internal/cache/QueryReference.js +5 -2
  132. package/react/internal/cache/QueryReference.js.map +1 -1
  133. package/react/internal/internal.cjs +16 -3
  134. package/react/internal/internal.cjs.map +1 -1
  135. package/react/internal/internal.cjs.native.js +16 -3
  136. package/react/parser/index.js +6 -6
  137. package/react/parser/parser.cjs +9 -7
  138. package/react/parser/parser.cjs.map +1 -1
  139. package/react/parser/parser.cjs.native.js +9 -7
  140. package/react/react.cjs +4 -2
  141. package/react/react.cjs.map +1 -1
  142. package/react/react.cjs.native.js +4 -2
  143. package/react/types/types.d.ts +40 -0
  144. package/react/types/types.documentation.d.ts +1 -1
  145. package/react/types/types.documentation.js.map +1 -1
  146. package/react/types/types.js.map +1 -1
  147. package/testing/core/core.cjs +17 -3
  148. package/testing/core/core.cjs.map +1 -1
  149. package/testing/core/core.cjs.native.js +17 -3
  150. package/testing/core/itAsync.d.ts +5 -0
  151. package/testing/core/itAsync.js +5 -0
  152. package/testing/core/itAsync.js.map +1 -1
  153. package/testing/core/mocking/mockClient.d.ts +4 -0
  154. package/testing/core/mocking/mockClient.js +4 -0
  155. package/testing/core/mocking/mockClient.js.map +1 -1
  156. package/testing/core/mocking/mockLink.d.ts +10 -0
  157. package/testing/core/mocking/mockLink.js +23 -4
  158. package/testing/core/mocking/mockLink.js.map +1 -1
  159. package/testing/core/mocking/mockSubscriptionLink.d.ts +4 -0
  160. package/testing/core/mocking/mockSubscriptionLink.js +4 -0
  161. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -1
  162. package/testing/core/subscribeAndCount.d.ts +4 -0
  163. package/testing/core/subscribeAndCount.js +4 -0
  164. package/testing/core/subscribeAndCount.js.map +1 -1
  165. package/testing/experimental/createSchemaFetch.d.ts +1 -1
  166. package/testing/experimental/createSchemaFetch.js +1 -1
  167. package/testing/experimental/createSchemaFetch.js.map +1 -1
  168. package/testing/experimental/createTestSchema.d.ts +1 -1
  169. package/testing/experimental/createTestSchema.js +1 -1
  170. package/testing/experimental/createTestSchema.js.map +1 -1
  171. package/testing/experimental/experimental.cjs.map +1 -1
  172. package/testing/testing.cjs +4 -2
  173. package/testing/testing.cjs.map +1 -1
  174. package/testing/testing.cjs.native.js +4 -2
  175. package/utilities/deprecation/index.d.ts +83 -3
  176. package/utilities/deprecation/index.js +15 -3
  177. package/utilities/deprecation/index.js.map +1 -1
  178. package/utilities/globals/globals.cjs +1 -1
  179. package/utilities/globals/globals.cjs.map +1 -1
  180. package/utilities/globals/globals.cjs.native.js +1 -1
  181. package/utilities/graphql/DocumentTransform.js +1 -1
  182. package/utilities/graphql/directives.js +7 -7
  183. package/utilities/graphql/fragments.js +3 -3
  184. package/utilities/graphql/getFromAST.js +8 -8
  185. package/utilities/graphql/storeUtils.js +1 -1
  186. package/utilities/graphql/transform.js +2 -2
  187. package/utilities/observables/asyncMap.d.ts +13 -0
  188. package/utilities/observables/asyncMap.js +13 -0
  189. package/utilities/observables/asyncMap.js.map +1 -1
  190. package/utilities/observables/iteration.d.ts +4 -0
  191. package/utilities/observables/iteration.js +4 -0
  192. package/utilities/observables/iteration.js.map +1 -1
  193. package/utilities/subscriptions/urql/index.d.ts +5 -0
  194. package/utilities/subscriptions/urql/index.js +5 -0
  195. package/utilities/subscriptions/urql/index.js.map +1 -1
  196. package/utilities/subscriptions/urql/urql.cjs.map +1 -1
  197. package/utilities/utilities.cjs +22 -22
  198. package/utilities/utilities.cjs.map +1 -1
  199. package/utilities/utilities.cjs.native.js +22 -22
  200. package/version.js +1 -1
@@ -36,7 +36,7 @@ var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
36
36
  function useApolloClient(override) {
37
37
  var context$1 = React__namespace.useContext(context.getApolloContext());
38
38
  var client = override || context$1.client;
39
- globals.invariant(!!client, 68);
39
+ globals.invariant(!!client, 79);
40
40
  return client;
41
41
  }
42
42
 
@@ -51,7 +51,7 @@ var useSyncExternalStore = realHook$1 ||
51
51
  !didWarnUncachedGetSnapshot &&
52
52
  value !== getSnapshot()) {
53
53
  didWarnUncachedGetSnapshot = true;
54
- globalThis.__DEV__ !== false && globals.invariant.error(81);
54
+ globalThis.__DEV__ !== false && globals.invariant.error(92);
55
55
  }
56
56
  var _a = React__namespace.useState({
57
57
  inst: { value: value, getSnapshot: getSnapshot },
@@ -122,9 +122,11 @@ function useRenderGuard() {
122
122
  }, []);
123
123
  }
124
124
 
125
+ var muteAllDeprecations = Symbol.for("apollo.deprecations");
126
+ var global$2 = globals.global;
125
127
  var slot = new optimism.Slot();
126
128
  function isMuted(name) {
127
- return (slot.getValue() || []).includes(name);
129
+ return global$2[muteAllDeprecations] || (slot.getValue() || []).includes(name);
128
130
  }
129
131
  function muteDeprecations(name) {
130
132
  var args = [];
@@ -137,7 +139,7 @@ function warnRemovedOption(options, name, callSite, recommendation) {
137
139
  if (recommendation === void 0) { recommendation = "Please remove this option."; }
138
140
  warnDeprecated(name, function () {
139
141
  if (name in options) {
140
- globalThis.__DEV__ !== false && globals.invariant.warn(91, callSite, name, recommendation);
142
+ globalThis.__DEV__ !== false && globals.invariant.warn(104, callSite, name, recommendation);
141
143
  }
142
144
  });
143
145
  }
@@ -152,7 +154,7 @@ function useWarnRemovedOption(options, name, callSite, recommendation) {
152
154
  if (recommendation === void 0) { recommendation = "Please remove this option."; }
153
155
  var didWarn = React__namespace.useRef(false);
154
156
  if (name in options && !didWarn.current) {
155
- globalThis.__DEV__ !== false && globals.invariant.warn(67, callSite, name, recommendation);
157
+ globalThis.__DEV__ !== false && globals.invariant.warn(78, callSite, name, recommendation);
156
158
  didWarn.current = true;
157
159
  }
158
160
  }
@@ -484,7 +486,7 @@ function bindObservableMethods(observable) {
484
486
  args[_i] = arguments[_i];
485
487
  }
486
488
  if (globalThis.__DEV__ !== false) {
487
- globalThis.__DEV__ !== false && globals.invariant.warn(73);
489
+ globalThis.__DEV__ !== false && globals.invariant.warn(84);
488
490
  }
489
491
  return observable.reobserve.apply(observable, args);
490
492
  },
@@ -496,7 +498,7 @@ function bindObservableMethods(observable) {
496
498
  };
497
499
  }
498
500
 
499
- var version = "3.14.0-alpha.0";
501
+ var version = "3.14.0-rc.0";
500
502
 
501
503
  function maybe(thunk) {
502
504
  try {
@@ -653,7 +655,7 @@ function useLazyQuery(query, options) {
653
655
  eagerMethods[key] = function () {
654
656
  if (globalThis.__DEV__ !== false) {
655
657
  if (key === "reobserve") {
656
- globalThis.__DEV__ !== false && invariant.warn(69);
658
+ globalThis.__DEV__ !== false && invariant.warn(80);
657
659
  }
658
660
  }
659
661
  if (!execOptionsRef.current) {
@@ -676,7 +678,7 @@ function useLazyQuery(query, options) {
676
678
  var execute = React__namespace.useCallback(function (executeOptions) {
677
679
  if (globalThis.__DEV__ !== false) {
678
680
  if (calledDuringRender()) {
679
- globalThis.__DEV__ !== false && invariant.warn(70);
681
+ globalThis.__DEV__ !== false && invariant.warn(81);
680
682
  }
681
683
  for (var _i = 0, REMOVED_EXECUTE_OPTIONS_1 = REMOVED_EXECUTE_OPTIONS; _i < REMOVED_EXECUTE_OPTIONS_1.length; _i++) {
682
684
  var name_1 = REMOVED_EXECUTE_OPTIONS_1[_i];
@@ -867,10 +869,10 @@ function useSubscription(subscription, options) {
867
869
  if (!hasIssuedDeprecationWarningRef.current) {
868
870
  hasIssuedDeprecationWarningRef.current = true;
869
871
  if (options.onSubscriptionData) {
870
- globalThis.__DEV__ !== false && globals.invariant.warn(options.onData ? 74 : 75);
872
+ globalThis.__DEV__ !== false && globals.invariant.warn(options.onData ? 85 : 86);
871
873
  }
872
874
  if (options.onSubscriptionComplete) {
873
- globalThis.__DEV__ !== false && globals.invariant.warn(options.onComplete ? 76 : 77);
875
+ globalThis.__DEV__ !== false && globals.invariant.warn(options.onComplete ? 87 : 88);
874
876
  }
875
877
  }
876
878
  var skip = options.skip, fetchPolicy = options.fetchPolicy, errorPolicy = options.errorPolicy, shouldResubscribe = options.shouldResubscribe, context = options.context, extensions = options.extensions, ignoreResults = options.ignoreResults;
@@ -991,7 +993,7 @@ function useSubscription(subscription, options) {
991
993
  : fallbackResult;
992
994
  }, function () { return fallbackResult; });
993
995
  var restart = React__namespace.useCallback(function () {
994
- globals.invariant(!optionsRef.current.skip, 78);
996
+ globals.invariant(!optionsRef.current.skip, 89);
995
997
  setObservable(recreateRef.current());
996
998
  }, [optionsRef, recreateRef]);
997
999
  return React__namespace.useMemo(function () { return (tslib.__assign(tslib.__assign({}, ret), { restart: restart })); }, [ret, restart]);
@@ -1202,11 +1204,11 @@ function validateFetchPolicy(fetchPolicy) {
1202
1204
  "no-cache",
1203
1205
  "cache-and-network",
1204
1206
  ];
1205
- globals.invariant(supportedFetchPolicies.includes(fetchPolicy), 79, fetchPolicy);
1207
+ globals.invariant(supportedFetchPolicies.includes(fetchPolicy), 90, fetchPolicy);
1206
1208
  }
1207
1209
  function validatePartialDataReturn(fetchPolicy, returnPartialData) {
1208
1210
  if (fetchPolicy === "no-cache" && returnPartialData) {
1209
- globalThis.__DEV__ !== false && globals.invariant.warn(80);
1211
+ globalThis.__DEV__ !== false && globals.invariant.warn(91);
1210
1212
  }
1211
1213
  }
1212
1214
  function toApolloError(result) {
@@ -1376,7 +1378,7 @@ function useLoadableQuery(query, options) {
1376
1378
  for (var _i = 0; _i < arguments.length; _i++) {
1377
1379
  args[_i] = arguments[_i];
1378
1380
  }
1379
- globals.invariant(!calledDuringRender(), 71);
1381
+ globals.invariant(!calledDuringRender(), 82);
1380
1382
  var variables = args[0];
1381
1383
  var cacheKey = tslib.__spreadArray([
1382
1384
  query,
@@ -1397,7 +1399,7 @@ function useLoadableQuery(query, options) {
1397
1399
  client,
1398
1400
  ]);
1399
1401
  var subscribeToMore = React__namespace.useCallback(function (options) {
1400
- globals.invariant(internalQueryRef, 72);
1402
+ globals.invariant(internalQueryRef, 83);
1401
1403
  return internalQueryRef.observable.subscribeToMore(
1402
1404
  options);
1403
1405
  }, [internalQueryRef]);
@@ -1,2 +1,3 @@
1
- export declare function useWarnRemoved(name: string, cb: () => void): void;
1
+ import type { DeprecationName } from "../../../utilities/deprecation/index.js";
2
+ export declare function useWarnRemoved(name: DeprecationName, cb: () => void): void;
2
3
  //# sourceMappingURL=useWarnRemoved.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWarnRemoved.js","sourceRoot":"","sources":["../../../../src/react/hooks/internal/useWarnRemoved.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,EAAc;IACzD,aAAa,CAAC;IACd,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;QAED,yDAAyD;QACzD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC","sourcesContent":["import * as React from \"rehackt\";\nimport { warnDeprecated } from \"../../../utilities/deprecation/index.js\";\n\nexport function useWarnRemoved(name: string, cb: () => void) {\n \"use no memo\";\n const didWarn = React.useRef(false);\n\n if (__DEV__) {\n if (!didWarn.current) {\n warnDeprecated(name, cb);\n }\n\n // eslint-disable-next-line react-compiler/react-compiler\n didWarn.current = true;\n }\n}\n"]}
1
+ {"version":3,"file":"useWarnRemoved.js","sourceRoot":"","sources":["../../../../src/react/hooks/internal/useWarnRemoved.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,UAAU,cAAc,CAAC,IAAqB,EAAE,EAAc;IAClE,aAAa,CAAC;IACd,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;QAED,yDAAyD;QACzD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC","sourcesContent":["import * as React from \"rehackt\";\nimport type { DeprecationName } from \"../../../utilities/deprecation/index.js\";\nimport { warnDeprecated } from \"../../../utilities/deprecation/index.js\";\n\nexport function useWarnRemoved(name: DeprecationName, cb: () => void) {\n \"use no memo\";\n const didWarn = React.useRef(false);\n\n if (__DEV__) {\n if (!didWarn.current) {\n warnDeprecated(name, cb);\n }\n\n // eslint-disable-next-line react-compiler/react-compiler\n didWarn.current = true;\n }\n}\n"]}
@@ -6,7 +6,7 @@ export function useWarnRemovedOption(options, name, callSite, recommendation) {
6
6
  if (recommendation === void 0) { recommendation = "Please remove this option."; }
7
7
  var didWarn = React.useRef(false);
8
8
  if (name in options && !didWarn.current) {
9
- globalThis.__DEV__ !== false && invariant.warn(67, callSite, name, recommendation);
9
+ globalThis.__DEV__ !== false && invariant.warn(78, callSite, name, recommendation);
10
10
  // eslint-disable-next-line react-compiler/react-compiler
11
11
  didWarn.current = true;
12
12
  }
@@ -19,7 +19,7 @@ import { getApolloContext } from "../context/index.js";
19
19
  export function useApolloClient(override) {
20
20
  var context = React.useContext(getApolloContext());
21
21
  var client = override || context.client;
22
- invariant(!!client, 68);
22
+ invariant(!!client, 79);
23
23
  return client;
24
24
  }
25
25
  //# sourceMappingURL=useApolloClient.js.map
@@ -111,7 +111,7 @@ export function useLazyQuery(query, options) {
111
111
  eagerMethods[key] = function () {
112
112
  if (globalThis.__DEV__ !== false) {
113
113
  if (key === "reobserve") {
114
- globalThis.__DEV__ !== false && invariant.warn(69);
114
+ globalThis.__DEV__ !== false && invariant.warn(80);
115
115
  }
116
116
  }
117
117
  if (!execOptionsRef.current) {
@@ -136,7 +136,7 @@ export function useLazyQuery(query, options) {
136
136
  var execute = React.useCallback(function (executeOptions) {
137
137
  if (globalThis.__DEV__ !== false) {
138
138
  if (calledDuringRender()) {
139
- globalThis.__DEV__ !== false && invariant.warn(70);
139
+ globalThis.__DEV__ !== false && invariant.warn(81);
140
140
  }
141
141
  for (var _i = 0, REMOVED_EXECUTE_OPTIONS_1 = REMOVED_EXECUTE_OPTIONS; _i < REMOVED_EXECUTE_OPTIONS_1.length; _i++) {
142
142
  var name_1 = REMOVED_EXECUTE_OPTIONS_1[_i];
@@ -46,7 +46,7 @@ export function useLoadableQuery(query, options) {
46
46
  for (var _i = 0; _i < arguments.length; _i++) {
47
47
  args[_i] = arguments[_i];
48
48
  }
49
- invariant(!calledDuringRender(), 71);
49
+ invariant(!calledDuringRender(), 82);
50
50
  var variables = args[0];
51
51
  var cacheKey = __spreadArray([
52
52
  query,
@@ -67,7 +67,7 @@ export function useLoadableQuery(query, options) {
67
67
  client,
68
68
  ]);
69
69
  var subscribeToMore = React.useCallback(function (options) {
70
- invariant(internalQueryRef, 72);
70
+ invariant(internalQueryRef, 83);
71
71
  return internalQueryRef.observable.subscribeToMore(
72
72
  // TODO: The internalQueryRef doesn't have TVariables' type information so we have to cast it here
73
73
  options);
@@ -483,7 +483,7 @@ function bindObservableMethods(observable) {
483
483
  args[_i] = arguments[_i];
484
484
  }
485
485
  if (globalThis.__DEV__ !== false) {
486
- globalThis.__DEV__ !== false && invariant.warn(73);
486
+ globalThis.__DEV__ !== false && invariant.warn(84);
487
487
  }
488
488
  return observable.reobserve.apply(observable, args);
489
489
  },
@@ -99,10 +99,10 @@ export function useSubscription(subscription, options) {
99
99
  // eslint-disable-next-line react-compiler/react-compiler
100
100
  hasIssuedDeprecationWarningRef.current = true;
101
101
  if (options.onSubscriptionData) {
102
- globalThis.__DEV__ !== false && invariant.warn(options.onData ? 74 : 75);
102
+ globalThis.__DEV__ !== false && invariant.warn(options.onData ? 85 : 86);
103
103
  }
104
104
  if (options.onSubscriptionComplete) {
105
- globalThis.__DEV__ !== false && invariant.warn(options.onComplete ? 76 : 77);
105
+ globalThis.__DEV__ !== false && invariant.warn(options.onComplete ? 87 : 88);
106
106
  }
107
107
  }
108
108
  var skip = options.skip, fetchPolicy = options.fetchPolicy, errorPolicy = options.errorPolicy, shouldResubscribe = options.shouldResubscribe, context = options.context, extensions = options.extensions, ignoreResults = options.ignoreResults;
@@ -236,7 +236,7 @@ export function useSubscription(subscription, options) {
236
236
  : fallbackResult;
237
237
  }, function () { return fallbackResult; });
238
238
  var restart = React.useCallback(function () {
239
- invariant(!optionsRef.current.skip, 78);
239
+ invariant(!optionsRef.current.skip, 89);
240
240
  setObservable(recreateRef.current());
241
241
  }, [optionsRef, recreateRef]);
242
242
  return React.useMemo(function () { return (__assign(__assign({}, ret), { restart: restart })); }, [ret, restart]);
@@ -108,11 +108,11 @@ function validateFetchPolicy(fetchPolicy) {
108
108
  "no-cache",
109
109
  "cache-and-network",
110
110
  ];
111
- invariant(supportedFetchPolicies.includes(fetchPolicy), 79, fetchPolicy);
111
+ invariant(supportedFetchPolicies.includes(fetchPolicy), 90, fetchPolicy);
112
112
  }
113
113
  function validatePartialDataReturn(fetchPolicy, returnPartialData) {
114
114
  if (fetchPolicy === "no-cache" && returnPartialData) {
115
- globalThis.__DEV__ !== false && invariant.warn(80);
115
+ globalThis.__DEV__ !== false && invariant.warn(91);
116
116
  }
117
117
  }
118
118
  export function toApolloError(result) {
@@ -26,7 +26,7 @@ export var useSyncExternalStore = realHook ||
26
26
  value !== getSnapshot()) {
27
27
  didWarnUncachedGetSnapshot = true;
28
28
  // DEVIATION: Using invariant.error instead of console.error directly.
29
- globalThis.__DEV__ !== false && invariant.error(81);
29
+ globalThis.__DEV__ !== false && invariant.error(92);
30
30
  }
31
31
  // Because updates are synchronous, we don't queue them. Instead we force a
32
32
  // re-render whenever the subscribed state changes by updating an some
@@ -31,6 +31,7 @@ interface WrappedQueryRef<TData = unknown, TVariables = unknown> extends QueryRe
31
31
  }
32
32
  /**
33
33
  * @deprecated Please use the `QueryRef` interface instead of `QueryReference`.
34
+ * `QueryReference` will be removed in Apollo Client 4.0.
34
35
  *
35
36
  * A `QueryReference` is an opaque object returned by `useBackgroundQuery`. A child component reading the `QueryReference` via `useReadQuery` will suspend until the promise resolves.
36
37
  */
@@ -3,6 +3,7 @@ import { equal } from "@wry/equality";
3
3
  import { createFulfilledPromise, createRejectedPromise, } from "../../../utilities/index.js";
4
4
  import { wrapPromiseWithState } from "../../../utilities/index.js";
5
5
  import { invariant } from "../../../utilities/globals/invariantWrappers.js";
6
+ import { muteDeprecations } from "../../../utilities/deprecation/index.js";
6
7
  var QUERY_REFERENCE_SYMBOL = Symbol.for("apollo.internal.queryRef");
7
8
  var PROMISE_SYMBOL = Symbol.for("apollo.internal.refPromise");
8
9
  export function wrapQueryRef(internalQueryRef) {
@@ -29,7 +30,7 @@ export function wrapQueryRef(internalQueryRef) {
29
30
  return ref;
30
31
  }
31
32
  export function assertWrappedQueryRef(queryRef) {
32
- invariant(!queryRef || QUERY_REFERENCE_SYMBOL in queryRef, 82);
33
+ invariant(!queryRef || QUERY_REFERENCE_SYMBOL in queryRef, 93);
33
34
  }
34
35
  export function getWrappedPromise(queryRef) {
35
36
  var internalQueryRef = unwrapQueryRef(queryRef);
@@ -105,7 +106,9 @@ var InternalQueryReference = /** @class */ (function () {
105
106
  observable.silentSetOptions({ fetchPolicy: "standby" });
106
107
  }
107
108
  else {
108
- observable.resetLastResults();
109
+ muteDeprecations("resetLastResults", function () {
110
+ return observable.resetLastResults();
111
+ });
109
112
  observable.silentSetOptions({ fetchPolicy: "cache-first" });
110
113
  }
111
114
  this.subscribeToQuery();
@@ -1 +1 @@
1
- {"version":3,"file":"QueryReference.js","sourceRoot":"","sources":["../../../../src/react/internal/cache/QueryReference.ts"],"names":[],"mappings":"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","sourcesContent":["import { equal } from \"@wry/equality\";\nimport type {\n ApolloError,\n ApolloQueryResult,\n ObservableQuery,\n OperationVariables,\n WatchQueryOptions,\n} from \"../../../core/index.js\";\nimport type {\n ObservableSubscription,\n PromiseWithState,\n} from \"../../../utilities/index.js\";\nimport {\n createFulfilledPromise,\n createRejectedPromise,\n} from \"../../../utilities/index.js\";\nimport type { QueryKey } from \"./types.js\";\nimport { wrapPromiseWithState } from \"../../../utilities/index.js\";\nimport { invariant } from \"../../../utilities/globals/invariantWrappers.js\";\nimport type { MaybeMasked } from \"../../../masking/index.js\";\n\ntype QueryRefPromise<TData> = PromiseWithState<\n ApolloQueryResult<MaybeMasked<TData>>\n>;\n\ntype Listener<TData> = (promise: QueryRefPromise<TData>) => void;\n\ntype FetchMoreOptions<TData> = Parameters<\n ObservableQuery<TData>[\"fetchMore\"]\n>[0];\n\nconst QUERY_REFERENCE_SYMBOL: unique symbol = Symbol.for(\n \"apollo.internal.queryRef\"\n);\nconst PROMISE_SYMBOL: unique symbol = Symbol.for(\"apollo.internal.refPromise\");\ndeclare const QUERY_REF_BRAND: unique symbol;\n/**\n * A `QueryReference` is an opaque object returned by `useBackgroundQuery`.\n * A child component reading the `QueryReference` via `useReadQuery` will\n * suspend until the promise resolves.\n */\nexport interface QueryRef<TData = unknown, TVariables = unknown> {\n /** @internal */\n [QUERY_REF_BRAND]?(variables: TVariables): TData;\n}\n\n/**\n * @internal\n * For usage in internal helpers only.\n */\ninterface WrappedQueryRef<TData = unknown, TVariables = unknown>\n extends QueryRef<TData, TVariables> {\n /** @internal */\n readonly [QUERY_REFERENCE_SYMBOL]: InternalQueryReference<TData>;\n /** @internal */\n [PROMISE_SYMBOL]: QueryRefPromise<TData>;\n /** @internal */\n toPromise?(): Promise<unknown>;\n}\n\n/**\n * @deprecated Please use the `QueryRef` interface instead of `QueryReference`.\n *\n * {@inheritDoc @apollo/client!QueryRef:interface}\n */\nexport interface QueryReference<TData = unknown, TVariables = unknown>\n extends QueryRef<TData, TVariables> {\n /**\n * @deprecated Please use the `QueryRef` interface instead of `QueryReference`.\n *\n * {@inheritDoc @apollo/client!PreloadedQueryRef#toPromise:member(1)}\n */\n toPromise?: unknown;\n}\n\n/**\n * {@inheritDoc @apollo/client!QueryRef:interface}\n */\nexport interface PreloadedQueryRef<TData = unknown, TVariables = unknown>\n extends QueryRef<TData, TVariables> {\n /**\n * A function that returns a promise that resolves when the query has finished\n * loading. The promise resolves with the `QueryReference` itself.\n *\n * @remarks\n * This method is useful for preloading queries in data loading routers, such\n * as [React Router](https://reactrouter.com/en/main) or [TanStack Router](https://tanstack.com/router),\n * to prevent routes from transitioning until the query has finished loading.\n * `data` is not exposed on the promise to discourage using the data in\n * `loader` functions and exposing it to your route components. Instead, we\n * prefer you rely on `useReadQuery` to access the data to ensure your\n * component can rerender with cache updates. If you need to access raw query\n * data, use `client.query()` directly.\n *\n * @example\n * Here's an example using React Router's `loader` function:\n * ```ts\n * import { createQueryPreloader } from \"@apollo/client\";\n *\n * const preloadQuery = createQueryPreloader(client);\n *\n * export async function loader() {\n * const queryRef = preloadQuery(GET_DOGS_QUERY);\n *\n * return queryRef.toPromise();\n * }\n *\n * export function RouteComponent() {\n * const queryRef = useLoaderData();\n * const { data } = useReadQuery(queryRef);\n *\n * // ...\n * }\n * ```\n *\n * @deprecated `toPromise` has been changed in Apollo Client 4.0 and is no\n * longer available on the returned `queryRef`.\n *\n * **Recommended now**\n *\n * `preloadQuery` provides a `.toPromise` method in 3.14.0. Use\n * `preloadQuery.toPromise(queryRef)` instead.\n *\n * @since 3.9.0\n */\n toPromise(): Promise<PreloadedQueryRef<TData, TVariables>>;\n}\n\ninterface InternalQueryReferenceOptions {\n onDispose?: () => void;\n autoDisposeTimeoutMs?: number;\n}\n\nexport function wrapQueryRef<TData, TVariables extends OperationVariables>(\n internalQueryRef: InternalQueryReference<TData>\n) {\n const ref: WrappedQueryRef<TData, TVariables> = {\n toPromise() {\n // We avoid resolving this promise with the query data because we want to\n // discourage using the server data directly from the queryRef. Instead,\n // the data should be accessed through `useReadQuery`. When the server\n // data is needed, its better to use `client.query()` directly.\n //\n // Here we resolve with the ref itself to make using this in React Router\n // or TanStack Router `loader` functions a bit more ergonomic e.g.\n //\n // function loader() {\n // return { queryRef: await preloadQuery(query).toPromise() }\n // }\n return getWrappedPromise(ref).then(() => ref);\n },\n [QUERY_REFERENCE_SYMBOL]: internalQueryRef,\n [PROMISE_SYMBOL]: internalQueryRef.promise,\n };\n\n return ref;\n}\n\nexport function assertWrappedQueryRef<TData, TVariables>(\n queryRef: QueryRef<TData, TVariables>\n): asserts queryRef is WrappedQueryRef<TData, TVariables>;\nexport function assertWrappedQueryRef<TData, TVariables>(\n queryRef: QueryRef<TData, TVariables> | undefined | null\n): asserts queryRef is WrappedQueryRef<TData, TVariables> | undefined | null;\nexport function assertWrappedQueryRef<TData, TVariables>(\n queryRef: QueryRef<TData, TVariables> | undefined | null\n) {\n invariant(\n !queryRef || QUERY_REFERENCE_SYMBOL in queryRef,\n \"Expected a QueryRef object, but got something else instead.\"\n );\n}\n\nexport function getWrappedPromise<TData>(\n queryRef: WrappedQueryRef<TData, any>\n) {\n const internalQueryRef = unwrapQueryRef(queryRef);\n\n return internalQueryRef.promise.status === \"fulfilled\" ?\n internalQueryRef.promise\n : queryRef[PROMISE_SYMBOL];\n}\n\nexport function unwrapQueryRef<TData>(\n queryRef: WrappedQueryRef<TData>\n): InternalQueryReference<TData>;\nexport function unwrapQueryRef<TData>(\n queryRef: Partial<WrappedQueryRef<TData>>\n): undefined | InternalQueryReference<TData>;\nexport function unwrapQueryRef<TData>(\n queryRef: Partial<WrappedQueryRef<TData>>\n) {\n return queryRef[QUERY_REFERENCE_SYMBOL];\n}\n\nexport function updateWrappedQueryRef<TData>(\n queryRef: WrappedQueryRef<TData>,\n promise: QueryRefPromise<TData>\n) {\n queryRef[PROMISE_SYMBOL] = promise;\n}\n\nconst OBSERVED_CHANGED_OPTIONS = [\n \"canonizeResults\",\n \"context\",\n \"errorPolicy\",\n \"fetchPolicy\",\n \"refetchWritePolicy\",\n \"returnPartialData\",\n] as const;\n\ntype ObservedOptions = Pick<\n WatchQueryOptions,\n (typeof OBSERVED_CHANGED_OPTIONS)[number]\n>;\n\nexport class InternalQueryReference<TData = unknown> {\n public result!: ApolloQueryResult<MaybeMasked<TData>>;\n public readonly key: QueryKey = {};\n public readonly observable: ObservableQuery<TData>;\n\n public promise!: QueryRefPromise<TData>;\n\n private subscription!: ObservableSubscription;\n private listeners = new Set<Listener<TData>>();\n private autoDisposeTimeoutId?: NodeJS.Timeout;\n\n private resolve:\n | ((result: ApolloQueryResult<MaybeMasked<TData>>) => void)\n | undefined;\n private reject: ((error: unknown) => void) | undefined;\n\n private references = 0;\n private softReferences = 0;\n\n constructor(\n observable: ObservableQuery<TData, any>,\n options: InternalQueryReferenceOptions\n ) {\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n\n this.setResult();\n this.subscribeToQuery();\n\n // Start a timer that will automatically dispose of the query if the\n // suspended resource does not use this queryRef in the given time. This\n // helps prevent memory leaks when a component has unmounted before the\n // query has finished loading.\n const startDisposeTimer = () => {\n if (!this.references) {\n this.autoDisposeTimeoutId = setTimeout(\n this.dispose,\n options.autoDisposeTimeoutMs ?? 30_000\n );\n }\n };\n\n // We wait until the request has settled to ensure we don't dispose of the\n // query ref before the request finishes, otherwise we would leave the\n // promise in a pending state rendering the suspense boundary indefinitely.\n this.promise.then(startDisposeTimer, startDisposeTimer);\n }\n\n get disposed() {\n return this.subscription.closed;\n }\n\n get watchQueryOptions() {\n return this.observable.options;\n }\n\n reinitialize() {\n const { observable } = this;\n\n const originalFetchPolicy = this.watchQueryOptions.fetchPolicy;\n const avoidNetworkRequests =\n originalFetchPolicy === \"no-cache\" || originalFetchPolicy === \"standby\";\n\n try {\n if (avoidNetworkRequests) {\n observable.silentSetOptions({ fetchPolicy: \"standby\" });\n } else {\n observable.resetLastResults();\n observable.silentSetOptions({ fetchPolicy: \"cache-first\" });\n }\n\n this.subscribeToQuery();\n\n if (avoidNetworkRequests) {\n return;\n }\n\n observable.resetDiff();\n this.setResult();\n } finally {\n observable.silentSetOptions({ fetchPolicy: originalFetchPolicy });\n }\n }\n\n retain() {\n this.references++;\n clearTimeout(this.autoDisposeTimeoutId);\n let disposed = false;\n\n return () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n this.references--;\n\n setTimeout(() => {\n if (!this.references) {\n this.dispose();\n }\n });\n };\n }\n\n softRetain() {\n this.softReferences++;\n let disposed = false;\n\n return () => {\n // Tracking if this has already been called helps ensure that\n // multiple calls to this function won't decrement the reference\n // counter more than it should. Subsequent calls just result in a noop.\n if (disposed) {\n return;\n }\n\n disposed = true;\n this.softReferences--;\n setTimeout(() => {\n if (!this.softReferences && !this.references) {\n this.dispose();\n }\n });\n };\n }\n\n didChangeOptions(watchQueryOptions: ObservedOptions) {\n return OBSERVED_CHANGED_OPTIONS.some(\n (option) =>\n option in watchQueryOptions &&\n !equal(this.watchQueryOptions[option], watchQueryOptions[option])\n );\n }\n\n applyOptions(watchQueryOptions: ObservedOptions) {\n const {\n fetchPolicy: currentFetchPolicy,\n canonizeResults: currentCanonizeResults,\n } = this.watchQueryOptions;\n\n // \"standby\" is used when `skip` is set to `true`. Detect when we've\n // enabled the query (i.e. `skip` is `false`) to execute a network request.\n if (\n currentFetchPolicy === \"standby\" &&\n currentFetchPolicy !== watchQueryOptions.fetchPolicy\n ) {\n this.initiateFetch(this.observable.reobserve(watchQueryOptions));\n } else {\n this.observable.silentSetOptions(watchQueryOptions);\n\n if (currentCanonizeResults !== watchQueryOptions.canonizeResults) {\n this.result = { ...this.result, ...this.observable.getCurrentResult() };\n this.promise = createFulfilledPromise(this.result);\n }\n }\n\n return this.promise;\n }\n\n listen(listener: Listener<TData>) {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n refetch(variables: OperationVariables | undefined) {\n return this.initiateFetch(this.observable.refetch(variables));\n }\n\n fetchMore(options: FetchMoreOptions<TData>) {\n return this.initiateFetch(this.observable.fetchMore<TData>(options));\n }\n\n private dispose() {\n this.subscription.unsubscribe();\n this.onDispose();\n }\n\n private onDispose() {\n // noop. overridable by options\n }\n\n private handleNext(result: ApolloQueryResult<MaybeMasked<TData>>) {\n switch (this.promise.status) {\n case \"pending\": {\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n this.resolve?.(result);\n break;\n }\n default: {\n // This occurs when switching to a result that is fully cached when this\n // class is instantiated. ObservableQuery will run reobserve when\n // subscribing, which delivers a result from the cache.\n if (\n result.data === this.result.data &&\n result.networkStatus === this.result.networkStatus\n ) {\n return;\n }\n\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n break;\n }\n }\n }\n\n private handleError(error: ApolloError) {\n this.subscription.unsubscribe();\n this.subscription = this.observable.resubscribeAfterError(\n this.handleNext,\n this.handleError\n );\n\n switch (this.promise.status) {\n case \"pending\": {\n this.reject?.(error);\n break;\n }\n default: {\n this.promise = createRejectedPromise(error);\n this.deliver(this.promise);\n }\n }\n }\n\n private deliver(promise: QueryRefPromise<TData>) {\n this.listeners.forEach((listener) => listener(promise));\n }\n\n private initiateFetch(\n returnedPromise: Promise<ApolloQueryResult<MaybeMasked<TData>>>\n ) {\n this.promise = this.createPendingPromise();\n this.promise.catch(() => {});\n\n // If the data returned from the fetch is deeply equal to the data already\n // in the cache, `handleNext` will not be triggered leaving the promise we\n // created in a pending state forever. To avoid this situtation, we attempt\n // to resolve the promise if `handleNext` hasn't been run to ensure the\n // promise is resolved correctly.\n returnedPromise\n .then(() => {\n // In the case of `fetchMore`, this promise is resolved before a cache\n // result is emitted due to the fact that `fetchMore` sets a `no-cache`\n // fetch policy and runs `cache.batch` in its `.then` handler. Because\n // the timing is different, we accidentally run this update twice\n // causing an additional re-render with the `fetchMore` result by\n // itself. By wrapping in `setTimeout`, this should provide a short\n // delay to allow the `QueryInfo.notify` handler to run before this\n // promise is checked.\n // See https://github.com/apollographql/apollo-client/issues/11315 for\n // more information\n setTimeout(() => {\n if (this.promise.status === \"pending\") {\n // Use the current result from the observable instead of the value\n // resolved from the promise. This avoids issues in some cases where\n // the raw resolved value should not be the emitted value, such as\n // when a `fetchMore` call returns an empty array after it has\n // reached the end of the list.\n //\n // See the following for more information:\n // https://github.com/apollographql/apollo-client/issues/11642\n this.result = this.observable.getCurrentResult();\n this.resolve?.(this.result);\n }\n });\n })\n .catch((error) => this.reject?.(error));\n\n return returnedPromise;\n }\n\n private subscribeToQuery() {\n this.subscription = this.observable\n .filter(\n (result) => !equal(result.data, {}) && !equal(result, this.result)\n )\n .subscribe(this.handleNext, this.handleError);\n }\n\n private setResult() {\n // Don't save this result as last result to prevent delivery of last result\n // when first subscribing\n const result = this.observable.getCurrentResult(false);\n\n if (equal(result, this.result)) {\n return;\n }\n\n this.result = result;\n this.promise =\n (\n result.data &&\n (!result.partial || this.watchQueryOptions.returnPartialData)\n ) ?\n createFulfilledPromise(result)\n : this.createPendingPromise();\n }\n\n private createPendingPromise() {\n return wrapPromiseWithState(\n new Promise<ApolloQueryResult<MaybeMasked<TData>>>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n })\n );\n }\n}\n"]}
1
+ {"version":3,"file":"QueryReference.js","sourceRoot":"","sources":["../../../../src/react/internal/cache/QueryReference.ts"],"names":[],"mappings":"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","sourcesContent":["import { equal } from \"@wry/equality\";\nimport type {\n ApolloError,\n ApolloQueryResult,\n ObservableQuery,\n OperationVariables,\n WatchQueryOptions,\n} from \"../../../core/index.js\";\nimport type {\n ObservableSubscription,\n PromiseWithState,\n} from \"../../../utilities/index.js\";\nimport {\n createFulfilledPromise,\n createRejectedPromise,\n} from \"../../../utilities/index.js\";\nimport type { QueryKey } from \"./types.js\";\nimport { wrapPromiseWithState } from \"../../../utilities/index.js\";\nimport { invariant } from \"../../../utilities/globals/invariantWrappers.js\";\nimport type { MaybeMasked } from \"../../../masking/index.js\";\nimport { muteDeprecations } from \"../../../utilities/deprecation/index.js\";\n\ntype QueryRefPromise<TData> = PromiseWithState<\n ApolloQueryResult<MaybeMasked<TData>>\n>;\n\ntype Listener<TData> = (promise: QueryRefPromise<TData>) => void;\n\ntype FetchMoreOptions<TData> = Parameters<\n ObservableQuery<TData>[\"fetchMore\"]\n>[0];\n\nconst QUERY_REFERENCE_SYMBOL: unique symbol = Symbol.for(\n \"apollo.internal.queryRef\"\n);\nconst PROMISE_SYMBOL: unique symbol = Symbol.for(\"apollo.internal.refPromise\");\ndeclare const QUERY_REF_BRAND: unique symbol;\n/**\n * A `QueryReference` is an opaque object returned by `useBackgroundQuery`.\n * A child component reading the `QueryReference` via `useReadQuery` will\n * suspend until the promise resolves.\n */\nexport interface QueryRef<TData = unknown, TVariables = unknown> {\n /** @internal */\n [QUERY_REF_BRAND]?(variables: TVariables): TData;\n}\n\n/**\n * @internal\n * For usage in internal helpers only.\n */\ninterface WrappedQueryRef<TData = unknown, TVariables = unknown>\n extends QueryRef<TData, TVariables> {\n /** @internal */\n readonly [QUERY_REFERENCE_SYMBOL]: InternalQueryReference<TData>;\n /** @internal */\n [PROMISE_SYMBOL]: QueryRefPromise<TData>;\n /** @internal */\n toPromise?(): Promise<unknown>;\n}\n\n/**\n * @deprecated Please use the `QueryRef` interface instead of `QueryReference`.\n * `QueryReference` will be removed in Apollo Client 4.0.\n *\n * {@inheritDoc @apollo/client!QueryRef:interface}\n */\nexport interface QueryReference<TData = unknown, TVariables = unknown>\n extends QueryRef<TData, TVariables> {\n /**\n * @deprecated Please use the `QueryRef` interface instead of `QueryReference`.\n *\n * {@inheritDoc @apollo/client!PreloadedQueryRef#toPromise:member(1)}\n */\n toPromise?: unknown;\n}\n\n/**\n * {@inheritDoc @apollo/client!QueryRef:interface}\n */\nexport interface PreloadedQueryRef<TData = unknown, TVariables = unknown>\n extends QueryRef<TData, TVariables> {\n /**\n * A function that returns a promise that resolves when the query has finished\n * loading. The promise resolves with the `QueryReference` itself.\n *\n * @remarks\n * This method is useful for preloading queries in data loading routers, such\n * as [React Router](https://reactrouter.com/en/main) or [TanStack Router](https://tanstack.com/router),\n * to prevent routes from transitioning until the query has finished loading.\n * `data` is not exposed on the promise to discourage using the data in\n * `loader` functions and exposing it to your route components. Instead, we\n * prefer you rely on `useReadQuery` to access the data to ensure your\n * component can rerender with cache updates. If you need to access raw query\n * data, use `client.query()` directly.\n *\n * @example\n * Here's an example using React Router's `loader` function:\n * ```ts\n * import { createQueryPreloader } from \"@apollo/client\";\n *\n * const preloadQuery = createQueryPreloader(client);\n *\n * export async function loader() {\n * const queryRef = preloadQuery(GET_DOGS_QUERY);\n *\n * return queryRef.toPromise();\n * }\n *\n * export function RouteComponent() {\n * const queryRef = useLoaderData();\n * const { data } = useReadQuery(queryRef);\n *\n * // ...\n * }\n * ```\n *\n * @deprecated `toPromise` has been changed in Apollo Client 4.0 and is no\n * longer available on the returned `queryRef`.\n *\n * **Recommended now**\n *\n * `preloadQuery` provides a `.toPromise` method in 3.14.0. Use\n * `preloadQuery.toPromise(queryRef)` instead.\n *\n * @since 3.9.0\n */\n toPromise(): Promise<PreloadedQueryRef<TData, TVariables>>;\n}\n\ninterface InternalQueryReferenceOptions {\n onDispose?: () => void;\n autoDisposeTimeoutMs?: number;\n}\n\nexport function wrapQueryRef<TData, TVariables extends OperationVariables>(\n internalQueryRef: InternalQueryReference<TData>\n) {\n const ref: WrappedQueryRef<TData, TVariables> = {\n toPromise() {\n // We avoid resolving this promise with the query data because we want to\n // discourage using the server data directly from the queryRef. Instead,\n // the data should be accessed through `useReadQuery`. When the server\n // data is needed, its better to use `client.query()` directly.\n //\n // Here we resolve with the ref itself to make using this in React Router\n // or TanStack Router `loader` functions a bit more ergonomic e.g.\n //\n // function loader() {\n // return { queryRef: await preloadQuery(query).toPromise() }\n // }\n return getWrappedPromise(ref).then(() => ref);\n },\n [QUERY_REFERENCE_SYMBOL]: internalQueryRef,\n [PROMISE_SYMBOL]: internalQueryRef.promise,\n };\n\n return ref;\n}\n\nexport function assertWrappedQueryRef<TData, TVariables>(\n queryRef: QueryRef<TData, TVariables>\n): asserts queryRef is WrappedQueryRef<TData, TVariables>;\nexport function assertWrappedQueryRef<TData, TVariables>(\n queryRef: QueryRef<TData, TVariables> | undefined | null\n): asserts queryRef is WrappedQueryRef<TData, TVariables> | undefined | null;\nexport function assertWrappedQueryRef<TData, TVariables>(\n queryRef: QueryRef<TData, TVariables> | undefined | null\n) {\n invariant(\n !queryRef || QUERY_REFERENCE_SYMBOL in queryRef,\n \"Expected a QueryRef object, but got something else instead.\"\n );\n}\n\nexport function getWrappedPromise<TData>(\n queryRef: WrappedQueryRef<TData, any>\n) {\n const internalQueryRef = unwrapQueryRef(queryRef);\n\n return internalQueryRef.promise.status === \"fulfilled\" ?\n internalQueryRef.promise\n : queryRef[PROMISE_SYMBOL];\n}\n\nexport function unwrapQueryRef<TData>(\n queryRef: WrappedQueryRef<TData>\n): InternalQueryReference<TData>;\nexport function unwrapQueryRef<TData>(\n queryRef: Partial<WrappedQueryRef<TData>>\n): undefined | InternalQueryReference<TData>;\nexport function unwrapQueryRef<TData>(\n queryRef: Partial<WrappedQueryRef<TData>>\n) {\n return queryRef[QUERY_REFERENCE_SYMBOL];\n}\n\nexport function updateWrappedQueryRef<TData>(\n queryRef: WrappedQueryRef<TData>,\n promise: QueryRefPromise<TData>\n) {\n queryRef[PROMISE_SYMBOL] = promise;\n}\n\nconst OBSERVED_CHANGED_OPTIONS = [\n \"canonizeResults\",\n \"context\",\n \"errorPolicy\",\n \"fetchPolicy\",\n \"refetchWritePolicy\",\n \"returnPartialData\",\n] as const;\n\ntype ObservedOptions = Pick<\n WatchQueryOptions,\n (typeof OBSERVED_CHANGED_OPTIONS)[number]\n>;\n\nexport class InternalQueryReference<TData = unknown> {\n public result!: ApolloQueryResult<MaybeMasked<TData>>;\n public readonly key: QueryKey = {};\n public readonly observable: ObservableQuery<TData>;\n\n public promise!: QueryRefPromise<TData>;\n\n private subscription!: ObservableSubscription;\n private listeners = new Set<Listener<TData>>();\n private autoDisposeTimeoutId?: NodeJS.Timeout;\n\n private resolve:\n | ((result: ApolloQueryResult<MaybeMasked<TData>>) => void)\n | undefined;\n private reject: ((error: unknown) => void) | undefined;\n\n private references = 0;\n private softReferences = 0;\n\n constructor(\n observable: ObservableQuery<TData, any>,\n options: InternalQueryReferenceOptions\n ) {\n this.handleNext = this.handleNext.bind(this);\n this.handleError = this.handleError.bind(this);\n this.dispose = this.dispose.bind(this);\n this.observable = observable;\n\n if (options.onDispose) {\n this.onDispose = options.onDispose;\n }\n\n this.setResult();\n this.subscribeToQuery();\n\n // Start a timer that will automatically dispose of the query if the\n // suspended resource does not use this queryRef in the given time. This\n // helps prevent memory leaks when a component has unmounted before the\n // query has finished loading.\n const startDisposeTimer = () => {\n if (!this.references) {\n this.autoDisposeTimeoutId = setTimeout(\n this.dispose,\n options.autoDisposeTimeoutMs ?? 30_000\n );\n }\n };\n\n // We wait until the request has settled to ensure we don't dispose of the\n // query ref before the request finishes, otherwise we would leave the\n // promise in a pending state rendering the suspense boundary indefinitely.\n this.promise.then(startDisposeTimer, startDisposeTimer);\n }\n\n get disposed() {\n return this.subscription.closed;\n }\n\n get watchQueryOptions() {\n return this.observable.options;\n }\n\n reinitialize() {\n const { observable } = this;\n\n const originalFetchPolicy = this.watchQueryOptions.fetchPolicy;\n const avoidNetworkRequests =\n originalFetchPolicy === \"no-cache\" || originalFetchPolicy === \"standby\";\n\n try {\n if (avoidNetworkRequests) {\n observable.silentSetOptions({ fetchPolicy: \"standby\" });\n } else {\n muteDeprecations(\"resetLastResults\", () =>\n observable.resetLastResults()\n );\n observable.silentSetOptions({ fetchPolicy: \"cache-first\" });\n }\n\n this.subscribeToQuery();\n\n if (avoidNetworkRequests) {\n return;\n }\n\n observable.resetDiff();\n this.setResult();\n } finally {\n observable.silentSetOptions({ fetchPolicy: originalFetchPolicy });\n }\n }\n\n retain() {\n this.references++;\n clearTimeout(this.autoDisposeTimeoutId);\n let disposed = false;\n\n return () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n this.references--;\n\n setTimeout(() => {\n if (!this.references) {\n this.dispose();\n }\n });\n };\n }\n\n softRetain() {\n this.softReferences++;\n let disposed = false;\n\n return () => {\n // Tracking if this has already been called helps ensure that\n // multiple calls to this function won't decrement the reference\n // counter more than it should. Subsequent calls just result in a noop.\n if (disposed) {\n return;\n }\n\n disposed = true;\n this.softReferences--;\n setTimeout(() => {\n if (!this.softReferences && !this.references) {\n this.dispose();\n }\n });\n };\n }\n\n didChangeOptions(watchQueryOptions: ObservedOptions) {\n return OBSERVED_CHANGED_OPTIONS.some(\n (option) =>\n option in watchQueryOptions &&\n !equal(this.watchQueryOptions[option], watchQueryOptions[option])\n );\n }\n\n applyOptions(watchQueryOptions: ObservedOptions) {\n const {\n fetchPolicy: currentFetchPolicy,\n canonizeResults: currentCanonizeResults,\n } = this.watchQueryOptions;\n\n // \"standby\" is used when `skip` is set to `true`. Detect when we've\n // enabled the query (i.e. `skip` is `false`) to execute a network request.\n if (\n currentFetchPolicy === \"standby\" &&\n currentFetchPolicy !== watchQueryOptions.fetchPolicy\n ) {\n this.initiateFetch(this.observable.reobserve(watchQueryOptions));\n } else {\n this.observable.silentSetOptions(watchQueryOptions);\n\n if (currentCanonizeResults !== watchQueryOptions.canonizeResults) {\n this.result = { ...this.result, ...this.observable.getCurrentResult() };\n this.promise = createFulfilledPromise(this.result);\n }\n }\n\n return this.promise;\n }\n\n listen(listener: Listener<TData>) {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n refetch(variables: OperationVariables | undefined) {\n return this.initiateFetch(this.observable.refetch(variables));\n }\n\n fetchMore(options: FetchMoreOptions<TData>) {\n return this.initiateFetch(this.observable.fetchMore<TData>(options));\n }\n\n private dispose() {\n this.subscription.unsubscribe();\n this.onDispose();\n }\n\n private onDispose() {\n // noop. overridable by options\n }\n\n private handleNext(result: ApolloQueryResult<MaybeMasked<TData>>) {\n switch (this.promise.status) {\n case \"pending\": {\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n this.result = result;\n this.resolve?.(result);\n break;\n }\n default: {\n // This occurs when switching to a result that is fully cached when this\n // class is instantiated. ObservableQuery will run reobserve when\n // subscribing, which delivers a result from the cache.\n if (\n result.data === this.result.data &&\n result.networkStatus === this.result.networkStatus\n ) {\n return;\n }\n\n // Maintain the last successful `data` value if the next result does not\n // have one.\n if (result.data === void 0) {\n result.data = this.result.data;\n }\n\n this.result = result;\n this.promise = createFulfilledPromise(result);\n this.deliver(this.promise);\n break;\n }\n }\n }\n\n private handleError(error: ApolloError) {\n this.subscription.unsubscribe();\n this.subscription = this.observable.resubscribeAfterError(\n this.handleNext,\n this.handleError\n );\n\n switch (this.promise.status) {\n case \"pending\": {\n this.reject?.(error);\n break;\n }\n default: {\n this.promise = createRejectedPromise(error);\n this.deliver(this.promise);\n }\n }\n }\n\n private deliver(promise: QueryRefPromise<TData>) {\n this.listeners.forEach((listener) => listener(promise));\n }\n\n private initiateFetch(\n returnedPromise: Promise<ApolloQueryResult<MaybeMasked<TData>>>\n ) {\n this.promise = this.createPendingPromise();\n this.promise.catch(() => {});\n\n // If the data returned from the fetch is deeply equal to the data already\n // in the cache, `handleNext` will not be triggered leaving the promise we\n // created in a pending state forever. To avoid this situtation, we attempt\n // to resolve the promise if `handleNext` hasn't been run to ensure the\n // promise is resolved correctly.\n returnedPromise\n .then(() => {\n // In the case of `fetchMore`, this promise is resolved before a cache\n // result is emitted due to the fact that `fetchMore` sets a `no-cache`\n // fetch policy and runs `cache.batch` in its `.then` handler. Because\n // the timing is different, we accidentally run this update twice\n // causing an additional re-render with the `fetchMore` result by\n // itself. By wrapping in `setTimeout`, this should provide a short\n // delay to allow the `QueryInfo.notify` handler to run before this\n // promise is checked.\n // See https://github.com/apollographql/apollo-client/issues/11315 for\n // more information\n setTimeout(() => {\n if (this.promise.status === \"pending\") {\n // Use the current result from the observable instead of the value\n // resolved from the promise. This avoids issues in some cases where\n // the raw resolved value should not be the emitted value, such as\n // when a `fetchMore` call returns an empty array after it has\n // reached the end of the list.\n //\n // See the following for more information:\n // https://github.com/apollographql/apollo-client/issues/11642\n this.result = this.observable.getCurrentResult();\n this.resolve?.(this.result);\n }\n });\n })\n .catch((error) => this.reject?.(error));\n\n return returnedPromise;\n }\n\n private subscribeToQuery() {\n this.subscription = this.observable\n .filter(\n (result) => !equal(result.data, {}) && !equal(result, this.result)\n )\n .subscribe(this.handleNext, this.handleError);\n }\n\n private setResult() {\n // Don't save this result as last result to prevent delivery of last result\n // when first subscribing\n const result = this.observable.getCurrentResult(false);\n\n if (equal(result, this.result)) {\n return;\n }\n\n this.result = result;\n this.promise =\n (\n result.data &&\n (!result.partial || this.watchQueryOptions.returnPartialData)\n ) ?\n createFulfilledPromise(result)\n : this.createPendingPromise();\n }\n\n private createPendingPromise() {\n return wrapPromiseWithState(\n new Promise<ApolloQueryResult<MaybeMasked<TData>>>((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n })\n );\n }\n}\n"]}
@@ -7,8 +7,10 @@ var utilities = require('../../utilities');
7
7
  var tslib = require('tslib');
8
8
  var equality = require('@wry/equality');
9
9
  var tsInvariant = require('ts-invariant');
10
+ var optimism = require('optimism');
11
+ require('../../utilities/globals');
10
12
 
11
- var version = "3.14.0-alpha.0";
13
+ var version = "3.14.0-rc.0";
12
14
 
13
15
  function maybe(thunk) {
14
16
  try {
@@ -103,6 +105,15 @@ function getFallbackErrorMsg(message, messageArgs) {
103
105
  })));
104
106
  }
105
107
 
108
+ var slot = new optimism.Slot();
109
+ function muteDeprecations(name) {
110
+ var args = [];
111
+ for (var _i = 1; _i < arguments.length; _i++) {
112
+ args[_i - 1] = arguments[_i];
113
+ }
114
+ return slot.withValue.apply(slot, tslib.__spreadArray([Array.isArray(name) ? name : [name]], args, false));
115
+ }
116
+
106
117
  var QUERY_REFERENCE_SYMBOL = Symbol.for("apollo.internal.queryRef");
107
118
  var PROMISE_SYMBOL = Symbol.for("apollo.internal.refPromise");
108
119
  function wrapQueryRef(internalQueryRef) {
@@ -118,7 +129,7 @@ function wrapQueryRef(internalQueryRef) {
118
129
  return ref;
119
130
  }
120
131
  function assertWrappedQueryRef(queryRef) {
121
- invariant(!queryRef || QUERY_REFERENCE_SYMBOL in queryRef, 82);
132
+ invariant(!queryRef || QUERY_REFERENCE_SYMBOL in queryRef, 93);
122
133
  }
123
134
  function getWrappedPromise(queryRef) {
124
135
  var internalQueryRef = unwrapQueryRef(queryRef);
@@ -187,7 +198,9 @@ var InternalQueryReference = (function () {
187
198
  observable.silentSetOptions({ fetchPolicy: "standby" });
188
199
  }
189
200
  else {
190
- observable.resetLastResults();
201
+ muteDeprecations("resetLastResults", function () {
202
+ return observable.resetLastResults();
203
+ });
191
204
  observable.silentSetOptions({ fetchPolicy: "cache-first" });
192
205
  }
193
206
  this.subscribeToQuery();