@apollo/client 3.13.8 → 3.14.0-alpha.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 (182) hide show
  1. package/.changeset/chilled-cameras-scream.md +5 -0
  2. package/.changeset/great-suns-cover.md +5 -0
  3. package/.changeset/perfect-donuts-roll.md +5 -0
  4. package/.changeset/popular-waves-drop.md +5 -0
  5. package/.changeset/pre.json +16 -0
  6. package/.changeset/shy-dragons-tease.md +5 -0
  7. package/.changeset/smooth-countries-cough.md +5 -0
  8. package/.changeset/spotty-walls-repair.md +5 -0
  9. package/CHANGELOG.md +20 -0
  10. package/README.md +80 -31
  11. package/apollo-client.cjs +354 -132
  12. package/apollo-client.cjs.map +1 -1
  13. package/apollo-client.min.cjs +1 -1
  14. package/cache/cache.cjs +78 -21
  15. package/cache/cache.cjs.map +1 -1
  16. package/cache/cache.cjs.native.js +78 -21
  17. package/cache/core/cache.js +27 -4
  18. package/cache/core/cache.js.map +1 -1
  19. package/cache/core/types/Cache.d.ts +4 -4
  20. package/cache/core/types/Cache.js.map +1 -1
  21. package/cache/core/types/DataProxy.d.ts +2 -2
  22. package/cache/inmemory/inMemoryCache.js +15 -4
  23. package/cache/inmemory/inMemoryCache.js.map +1 -1
  24. package/cache/inmemory/policies.js +18 -13
  25. package/cache/inmemory/policies.js.map +1 -1
  26. package/cache/inmemory/readFromStore.d.ts +7 -0
  27. package/cache/inmemory/readFromStore.js.map +1 -1
  28. package/cache/inmemory/types.d.ts +14 -3
  29. package/cache/inmemory/types.js.map +1 -1
  30. package/core/ApolloClient.d.ts +191 -2
  31. package/core/ApolloClient.js +93 -7
  32. package/core/ApolloClient.js.map +1 -1
  33. package/core/LocalState.js +2 -2
  34. package/core/ObservableQuery.js +10 -6
  35. package/core/ObservableQuery.js.map +1 -1
  36. package/core/QueryInfo.js +8 -2
  37. package/core/QueryInfo.js.map +1 -1
  38. package/core/QueryManager.js +15 -12
  39. package/core/QueryManager.js.map +1 -1
  40. package/core/core.cjs +93 -30
  41. package/core/core.cjs.map +1 -1
  42. package/core/core.cjs.native.js +93 -30
  43. package/core/watchQueryOptions.d.ts +2 -2
  44. package/dev/dev.cjs +144 -84
  45. package/dev/dev.cjs.map +1 -1
  46. package/dev/dev.cjs.native.js +144 -84
  47. package/invariantErrorCodes.js +158 -83
  48. package/link/core/ApolloLink.js +2 -2
  49. package/link/core/core.cjs +2 -2
  50. package/link/core/core.cjs.map +1 -1
  51. package/link/core/core.cjs.native.js +2 -2
  52. package/link/http/checkFetcher.js +1 -1
  53. package/link/http/createHttpLink.js +1 -1
  54. package/link/http/http.cjs +3 -3
  55. package/link/http/http.cjs.map +1 -1
  56. package/link/http/http.cjs.native.js +3 -3
  57. package/link/http/serializeFetchParameter.js +1 -1
  58. package/link/persisted-queries/index.js +2 -2
  59. package/link/persisted-queries/persisted-queries.cjs +2 -2
  60. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  61. package/link/persisted-queries/persisted-queries.cjs.native.js +2 -2
  62. package/link/utils/toPromise.js +1 -1
  63. package/link/utils/utils.cjs +2 -2
  64. package/link/utils/utils.cjs.map +1 -1
  65. package/link/utils/utils.cjs.native.js +2 -2
  66. package/link/utils/validateOperation.js +1 -1
  67. package/masking/maskDefinition.js +2 -2
  68. package/masking/maskFragment.js +2 -2
  69. package/masking/maskOperation.js +1 -1
  70. package/masking/masking.cjs +6 -6
  71. package/masking/masking.cjs.map +1 -1
  72. package/masking/masking.cjs.native.js +6 -6
  73. package/masking/utils.js +1 -1
  74. package/package.json +1 -1
  75. package/react/components/Mutation.js +5 -0
  76. package/react/components/Mutation.js.map +1 -1
  77. package/react/components/Query.js +5 -0
  78. package/react/components/Query.js.map +1 -1
  79. package/react/components/Subscription.js +5 -0
  80. package/react/components/Subscription.js.map +1 -1
  81. package/react/components/components.cjs +34 -0
  82. package/react/components/components.cjs.map +1 -1
  83. package/react/components/components.cjs.native.js +34 -0
  84. package/react/context/ApolloConsumer.js +1 -1
  85. package/react/context/ApolloContext.js +7 -2
  86. package/react/context/ApolloContext.js.map +1 -1
  87. package/react/context/ApolloProvider.js +1 -1
  88. package/react/context/context.cjs +9 -4
  89. package/react/context/context.cjs.map +1 -1
  90. package/react/context/context.cjs.native.js +9 -4
  91. package/react/hoc/graphql.js +17 -4
  92. package/react/hoc/graphql.js.map +1 -1
  93. package/react/hoc/hoc-utils.js +1 -1
  94. package/react/hoc/hoc.cjs +55 -9
  95. package/react/hoc/hoc.cjs.map +1 -1
  96. package/react/hoc/hoc.cjs.native.js +55 -9
  97. package/react/hoc/mutation-hoc.js +8 -1
  98. package/react/hoc/mutation-hoc.js.map +1 -1
  99. package/react/hoc/query-hoc.js +8 -1
  100. package/react/hoc/query-hoc.js.map +1 -1
  101. package/react/hoc/subscription-hoc.js +8 -1
  102. package/react/hoc/subscription-hoc.js.map +1 -1
  103. package/react/hoc/withApollo.js +1 -1
  104. package/react/hooks/hooks.cjs +264 -31
  105. package/react/hooks/hooks.cjs.map +1 -1
  106. package/react/hooks/hooks.cjs.native.js +264 -31
  107. package/react/hooks/internal/index.d.ts +2 -0
  108. package/react/hooks/internal/index.js +2 -0
  109. package/react/hooks/internal/index.js.map +1 -1
  110. package/react/hooks/internal/useWarnRemoved.d.ts +2 -0
  111. package/react/hooks/internal/useWarnRemoved.js +14 -0
  112. package/react/hooks/internal/useWarnRemoved.js.map +1 -0
  113. package/react/hooks/internal/useWarnRemovedOption.d.ts +2 -0
  114. package/react/hooks/internal/useWarnRemovedOption.js +14 -0
  115. package/react/hooks/internal/useWarnRemovedOption.js.map +1 -0
  116. package/react/hooks/useApolloClient.js +1 -1
  117. package/react/hooks/useBackgroundQuery.js +11 -3
  118. package/react/hooks/useBackgroundQuery.js.map +1 -1
  119. package/react/hooks/useFragment.js +30 -21
  120. package/react/hooks/useFragment.js.map +1 -1
  121. package/react/hooks/useLazyQuery.js +65 -0
  122. package/react/hooks/useLazyQuery.js.map +1 -1
  123. package/react/hooks/useLoadableQuery.js +12 -5
  124. package/react/hooks/useLoadableQuery.js.map +1 -1
  125. package/react/hooks/useMutation.js +5 -1
  126. package/react/hooks/useMutation.js.map +1 -1
  127. package/react/hooks/useQuery.d.ts +2 -2
  128. package/react/hooks/useQuery.js +25 -7
  129. package/react/hooks/useQuery.js.map +1 -1
  130. package/react/hooks/useSubscription.js +3 -3
  131. package/react/hooks/useSubscription.js.map +1 -1
  132. package/react/hooks/useSuspenseQuery.js +12 -6
  133. package/react/hooks/useSuspenseQuery.js.map +1 -1
  134. package/react/hooks/useSyncExternalStore.js +1 -1
  135. package/react/internal/cache/QueryReference.d.ts +16 -0
  136. package/react/internal/cache/QueryReference.js +1 -1
  137. package/react/internal/cache/QueryReference.js.map +1 -1
  138. package/react/internal/internal.cjs +2 -2
  139. package/react/internal/internal.cjs.map +1 -1
  140. package/react/internal/internal.cjs.native.js +2 -2
  141. package/react/parser/index.d.ts +7 -0
  142. package/react/parser/index.js +17 -7
  143. package/react/parser/index.js.map +1 -1
  144. package/react/parser/parser.cjs +28 -7
  145. package/react/parser/parser.cjs.map +1 -1
  146. package/react/parser/parser.cjs.native.js +28 -7
  147. package/react/query-preloader/createQueryPreloader.d.ts +2 -1
  148. package/react/query-preloader/createQueryPreloader.js +14 -5
  149. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  150. package/react/react.cjs +40 -6
  151. package/react/react.cjs.map +1 -1
  152. package/react/react.cjs.native.js +40 -6
  153. package/react/types/types.d.ts +303 -9
  154. package/react/types/types.documentation.d.ts +2 -3
  155. package/react/types/types.documentation.js.map +1 -1
  156. package/react/types/types.js.map +1 -1
  157. package/testing/core/core.cjs +2 -2
  158. package/testing/core/core.cjs.map +1 -1
  159. package/testing/core/core.cjs.native.js +2 -2
  160. package/testing/core/mocking/mockLink.js +2 -2
  161. package/testing/react/MockedProvider.d.ts +27 -1
  162. package/testing/react/MockedProvider.js +16 -10
  163. package/testing/react/MockedProvider.js.map +1 -1
  164. package/testing/testing.cjs +42 -11
  165. package/testing/testing.cjs.map +1 -1
  166. package/testing/testing.cjs.native.js +42 -11
  167. package/utilities/deprecation/index.d.ts +11 -0
  168. package/utilities/deprecation/index.js +28 -0
  169. package/utilities/deprecation/index.js.map +1 -0
  170. package/utilities/globals/globals.cjs +1 -1
  171. package/utilities/globals/globals.cjs.map +1 -1
  172. package/utilities/globals/globals.cjs.native.js +1 -1
  173. package/utilities/graphql/DocumentTransform.js +1 -1
  174. package/utilities/graphql/directives.js +7 -7
  175. package/utilities/graphql/fragments.js +3 -3
  176. package/utilities/graphql/getFromAST.js +8 -8
  177. package/utilities/graphql/storeUtils.js +1 -1
  178. package/utilities/graphql/transform.js +2 -2
  179. package/utilities/utilities.cjs +22 -22
  180. package/utilities/utilities.cjs.map +1 -1
  181. package/utilities/utilities.cjs.native.js +22 -22
  182. package/version.js +1 -1
package/cache/cache.cjs CHANGED
@@ -127,6 +127,31 @@ function directiveIsNonreactive(dir) {
127
127
  return dir.name.value === "nonreactive";
128
128
  }
129
129
 
130
+ var slot = new optimism.Slot();
131
+ function isMuted(name) {
132
+ return (slot.getValue() || []).includes(name);
133
+ }
134
+ function muteDeprecations(name) {
135
+ var args = [];
136
+ for (var _i = 1; _i < arguments.length; _i++) {
137
+ args[_i - 1] = arguments[_i];
138
+ }
139
+ return slot.withValue.apply(slot, tslib.__spreadArray([Array.isArray(name) ? name : [name]], args, false));
140
+ }
141
+ function warnRemovedOption(options, name, callSite, recommendation) {
142
+ if (recommendation === void 0) { recommendation = "Please remove this option."; }
143
+ warnDeprecated(name, function () {
144
+ if (name in options) {
145
+ globalThis.__DEV__ !== false && globals.invariant.warn(91, callSite, name, recommendation);
146
+ }
147
+ });
148
+ }
149
+ function warnDeprecated(name, cb) {
150
+ if (!isMuted(name)) {
151
+ cb();
152
+ }
153
+ }
154
+
130
155
  var ApolloCache = (function () {
131
156
  function ApolloCache() {
132
157
  this.assumeImmutableResults = false;
@@ -167,8 +192,14 @@ var ApolloCache = (function () {
167
192
  return false;
168
193
  };
169
194
  ApolloCache.prototype.readQuery = function (options, optimistic) {
195
+ var _this = this;
170
196
  if (optimistic === void 0) { optimistic = !!options.optimistic; }
171
- return this.read(tslib.__assign(tslib.__assign({}, options), { rootId: options.id || "ROOT_QUERY", optimistic: optimistic }));
197
+ if (globalThis.__DEV__ !== false) {
198
+ warnRemovedOption(options, "canonizeResults", "cache.readQuery");
199
+ }
200
+ return muteDeprecations("canonizeResults", function () {
201
+ return _this.read(tslib.__assign(tslib.__assign({}, options), { rootId: options.id || "ROOT_QUERY", optimistic: optimistic }));
202
+ });
172
203
  };
173
204
  ApolloCache.prototype.watchFragment = function (options) {
174
205
  var _this = this;
@@ -210,8 +241,14 @@ var ApolloCache = (function () {
210
241
  });
211
242
  };
212
243
  ApolloCache.prototype.readFragment = function (options, optimistic) {
244
+ var _this = this;
213
245
  if (optimistic === void 0) { optimistic = !!options.optimistic; }
214
- return this.read(tslib.__assign(tslib.__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));
246
+ if (globalThis.__DEV__ !== false) {
247
+ warnRemovedOption(options, "canonizeResults", "cache.readFragment");
248
+ }
249
+ return muteDeprecations("canonizeResults", function () {
250
+ return _this.read(tslib.__assign(tslib.__assign({}, options), { query: _this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));
251
+ });
215
252
  };
216
253
  ApolloCache.prototype.writeQuery = function (_a) {
217
254
  var id = _a.id, data = _a.data, options = tslib.__rest(_a, ["id", "data"]);
@@ -229,9 +266,14 @@ var ApolloCache = (function () {
229
266
  }));
230
267
  };
231
268
  ApolloCache.prototype.updateQuery = function (options, update) {
269
+ if (globalThis.__DEV__ !== false) {
270
+ warnRemovedOption(options, "canonizeResults", "cache.updateQuery");
271
+ }
232
272
  return this.batch({
233
273
  update: function (cache) {
234
- var value = cache.readQuery(options);
274
+ var value = muteDeprecations("canonizeResults", function () {
275
+ return cache.readQuery(options);
276
+ });
235
277
  var data = update(value);
236
278
  if (data === void 0 || data === null)
237
279
  return value;
@@ -241,9 +283,14 @@ var ApolloCache = (function () {
241
283
  });
242
284
  };
243
285
  ApolloCache.prototype.updateFragment = function (options, update) {
286
+ if (globalThis.__DEV__ !== false) {
287
+ warnRemovedOption(options, "canonizeResults", "cache.updateFragment");
288
+ }
244
289
  return this.batch({
245
290
  update: function (cache) {
246
- var value = cache.readFragment(options);
291
+ var value = muteDeprecations("canonizeResults", function () {
292
+ return cache.readFragment(options);
293
+ });
247
294
  var data = update(value);
248
295
  if (data === void 0 || data === null)
249
296
  return value;
@@ -1507,8 +1554,7 @@ var Policies = (function () {
1507
1554
  }
1508
1555
  });
1509
1556
  };
1510
- Policies.prototype.updateTypePolicy = function (typename, incoming) {
1511
- var _this = this;
1557
+ Policies.prototype.updateTypePolicy = function (typename, incoming, existingFieldPolicies) {
1512
1558
  var existing = this.getTypePolicy(typename);
1513
1559
  var keyFields = incoming.keyFields, fields = incoming.fields;
1514
1560
  function setMerge(existing, merge) {
@@ -1526,7 +1572,10 @@ var Policies = (function () {
1526
1572
  : existing.keyFn;
1527
1573
  if (fields) {
1528
1574
  Object.keys(fields).forEach(function (fieldName) {
1529
- var existing = _this.getFieldPolicy(typename, fieldName, true);
1575
+ var existing = existingFieldPolicies[fieldName];
1576
+ if (!existing || (existing === null || existing === void 0 ? void 0 : existing.typename) !== typename) {
1577
+ existing = existingFieldPolicies[fieldName] = { typename: typename };
1578
+ }
1530
1579
  var incoming = fields[fieldName];
1531
1580
  if (typeof incoming === "function") {
1532
1581
  existing.read = incoming;
@@ -1605,16 +1654,14 @@ var Policies = (function () {
1605
1654
  var inbox = this.toBeAdded[typename];
1606
1655
  if (inbox && inbox.length) {
1607
1656
  inbox.splice(0).forEach(function (policy) {
1608
- _this.updateTypePolicy(typename, policy);
1657
+ _this.updateTypePolicy(typename, policy, _this.typePolicies[typename].fields);
1609
1658
  });
1610
1659
  }
1611
1660
  return this.typePolicies[typename];
1612
1661
  };
1613
- Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {
1662
+ Policies.prototype.getFieldPolicy = function (typename, fieldName) {
1614
1663
  if (typename) {
1615
- var fieldPolicies = this.getTypePolicy(typename).fields;
1616
- return (fieldPolicies[fieldName] ||
1617
- (createIfMissing && (fieldPolicies[fieldName] = Object.create(null))));
1664
+ return this.getTypePolicy(typename).fields[fieldName];
1618
1665
  }
1619
1666
  };
1620
1667
  Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {
@@ -1675,12 +1722,12 @@ var Policies = (function () {
1675
1722
  return false;
1676
1723
  };
1677
1724
  Policies.prototype.hasKeyArgs = function (typename, fieldName) {
1678
- var policy = this.getFieldPolicy(typename, fieldName, false);
1725
+ var policy = this.getFieldPolicy(typename, fieldName);
1679
1726
  return !!(policy && policy.keyFn);
1680
1727
  };
1681
1728
  Policies.prototype.getStoreFieldName = function (fieldSpec) {
1682
1729
  var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;
1683
- var policy = this.getFieldPolicy(typename, fieldName, false);
1730
+ var policy = this.getFieldPolicy(typename, fieldName);
1684
1731
  var storeFieldName;
1685
1732
  var keyFn = policy && policy.keyFn;
1686
1733
  if (keyFn && typename) {
@@ -1729,7 +1776,7 @@ var Policies = (function () {
1729
1776
  var storeFieldName = this.getStoreFieldName(options);
1730
1777
  var fieldName = fieldNameFromStoreName(storeFieldName);
1731
1778
  var existing = context.store.getFieldValue(objectOrReference, storeFieldName);
1732
- var policy = this.getFieldPolicy(options.typename, fieldName, false);
1779
+ var policy = this.getFieldPolicy(options.typename, fieldName);
1733
1780
  var read = policy && policy.read;
1734
1781
  if (read) {
1735
1782
  var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(utilities.isReference(objectOrReference) ?
@@ -1743,11 +1790,11 @@ var Policies = (function () {
1743
1790
  return existing;
1744
1791
  };
1745
1792
  Policies.prototype.getReadFunction = function (typename, fieldName) {
1746
- var policy = this.getFieldPolicy(typename, fieldName, false);
1793
+ var policy = this.getFieldPolicy(typename, fieldName);
1747
1794
  return policy && policy.read;
1748
1795
  };
1749
1796
  Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {
1750
- var policy = this.getFieldPolicy(parentTypename, fieldName, false);
1797
+ var policy = this.getFieldPolicy(parentTypename, fieldName);
1751
1798
  var merge = policy && policy.merge;
1752
1799
  if (!merge && childTypename) {
1753
1800
  policy = this.getTypePolicy(childTypename);
@@ -2256,6 +2303,10 @@ var InMemoryCache = (function (_super) {
2256
2303
  _this.assumeImmutableResults = true;
2257
2304
  _this.makeVar = makeVar;
2258
2305
  _this.txCount = 0;
2306
+ if (globalThis.__DEV__ !== false) {
2307
+ warnRemovedOption(config, "addTypename", "InMemoryCache", "Please remove the `addTypename` option when initializing `InMemoryCache`.");
2308
+ warnRemovedOption(config, "canonizeResults", "InMemoryCache", "Please remove the `canonizeResults` option when initializing `InMemoryCache`.");
2309
+ }
2259
2310
  _this.config = normalizeConfig(config);
2260
2311
  _this.addTypename = !!_this.config.addTypename;
2261
2312
  _this.policies = new Policies({
@@ -2279,6 +2330,8 @@ var InMemoryCache = (function (_super) {
2279
2330
  var _this = this;
2280
2331
  var previousReader = this.storeReader;
2281
2332
  var fragments = this.config.fragments;
2333
+ this.addTypenameTransform.resetCache();
2334
+ fragments === null || fragments === void 0 ? void 0 : fragments.resetCaches();
2282
2335
  this.storeWriter = new StoreWriter(this, (this.storeReader = new StoreReader({
2283
2336
  cache: this,
2284
2337
  addTypename: this.addTypename,
@@ -2317,6 +2370,9 @@ var InMemoryCache = (function (_super) {
2317
2370
  return (optimistic ? this.optimisticData : this.data).extract();
2318
2371
  };
2319
2372
  InMemoryCache.prototype.read = function (options) {
2373
+ if (globalThis.__DEV__ !== false) {
2374
+ warnRemovedOption(options, "canonizeResults", "cache.read");
2375
+ }
2320
2376
  var
2321
2377
  _a = options.returnPartialData,
2322
2378
  returnPartialData = _a === void 0 ? false : _a;
@@ -2360,6 +2416,9 @@ var InMemoryCache = (function (_super) {
2360
2416
  }
2361
2417
  };
2362
2418
  InMemoryCache.prototype.diff = function (options) {
2419
+ if (globalThis.__DEV__ !== false) {
2420
+ warnRemovedOption(options, "canonizeResults", "cache.diff");
2421
+ }
2363
2422
  return this.storeReader.diffQueryAgainstStore(tslib.__assign(tslib.__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || "ROOT_QUERY", config: this.config }));
2364
2423
  };
2365
2424
  InMemoryCache.prototype.watch = function (watch) {
@@ -2379,11 +2438,8 @@ var InMemoryCache = (function (_super) {
2379
2438
  };
2380
2439
  };
2381
2440
  InMemoryCache.prototype.gc = function (options) {
2382
- var _a;
2383
2441
  utilities.canonicalStringify.reset();
2384
2442
  utilities.print.reset();
2385
- this.addTypenameTransform.resetCache();
2386
- (_a = this.config.fragments) === null || _a === void 0 ? void 0 : _a.resetCaches();
2387
2443
  var ids = this.optimisticData.gc();
2388
2444
  if (options && !this.txCount) {
2389
2445
  if (options.resetResultCache) {
@@ -2537,8 +2593,9 @@ var InMemoryCache = (function (_super) {
2537
2593
  return document;
2538
2594
  };
2539
2595
  InMemoryCache.prototype.broadcastWatch = function (c, options) {
2596
+ var _this = this;
2540
2597
  var lastDiff = c.lastDiff;
2541
- var diff = this.diff(c);
2598
+ var diff = muteDeprecations("canonizeResults", function () { return _this.diff(c); });
2542
2599
  if (options) {
2543
2600
  if (c.optimistic && typeof options.optimistic === "string") {
2544
2601
  diff.fromOptimisticTransaction = true;