@apollo/client 3.10.3 → 3.10.5

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 (102) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/apollo-client.cjs +166 -134
  3. package/apollo-client.cjs.map +1 -1
  4. package/apollo-client.min.cjs +1 -1
  5. package/cache/cache.cjs +81 -8
  6. package/cache/cache.cjs.map +1 -1
  7. package/cache/cache.cjs.native.js +81 -8
  8. package/cache/core/cache.js +8 -4
  9. package/cache/core/cache.js.map +1 -1
  10. package/core/ApolloClient.js +2 -1
  11. package/core/ApolloClient.js.map +1 -1
  12. package/core/ObservableQuery.js +1 -1
  13. package/core/ObservableQuery.js.map +1 -1
  14. package/core/QueryInfo.js +7 -11
  15. package/core/QueryInfo.js.map +1 -1
  16. package/core/core.cjs +5 -7
  17. package/core/core.cjs.map +1 -1
  18. package/core/core.cjs.native.js +5 -7
  19. package/dev/dev.cjs +32 -27
  20. package/dev/dev.cjs.map +1 -1
  21. package/dev/dev.cjs.native.js +32 -27
  22. package/invariantErrorCodes.js +32 -26
  23. package/link/batch-http/batch-http.cjs +6 -5
  24. package/link/batch-http/batch-http.cjs.map +1 -1
  25. package/link/batch-http/batch-http.cjs.native.js +6 -5
  26. package/link/batch-http/batchHttpLink.js +15 -10
  27. package/link/batch-http/batchHttpLink.js.map +1 -1
  28. package/link/error/error.cjs +3 -2
  29. package/link/error/error.cjs.map +1 -1
  30. package/link/error/error.cjs.native.js +3 -2
  31. package/link/error/index.js +3 -2
  32. package/link/error/index.js.map +1 -1
  33. package/package.json +10 -6
  34. package/react/hooks/hooks.cjs +62 -34
  35. package/react/hooks/hooks.cjs.map +1 -1
  36. package/react/hooks/hooks.cjs.native.js +62 -34
  37. package/react/hooks/internal/useRenderGuard.js +37 -12
  38. package/react/hooks/internal/useRenderGuard.js.map +1 -1
  39. package/react/hooks/useBackgroundQuery.d.ts +10 -13
  40. package/react/hooks/useBackgroundQuery.js.map +1 -1
  41. package/react/hooks/useLazyQuery.js +7 -8
  42. package/react/hooks/useLazyQuery.js.map +1 -1
  43. package/react/hooks/useLoadableQuery.d.ts +3 -3
  44. package/react/hooks/useLoadableQuery.js +11 -3
  45. package/react/hooks/useLoadableQuery.js.map +1 -1
  46. package/react/hooks/useMutation.js +10 -7
  47. package/react/hooks/useMutation.js.map +1 -1
  48. package/react/hooks/useQuery.d.ts +2 -2
  49. package/react/hooks/useQuery.js +26 -12
  50. package/react/hooks/useQuery.js.map +1 -1
  51. package/react/hooks/useQueryRefHandlers.d.ts +3 -3
  52. package/react/hooks/useQueryRefHandlers.js +7 -2
  53. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  54. package/react/hooks/useReadQuery.d.ts +2 -2
  55. package/react/hooks/useReadQuery.js +7 -2
  56. package/react/hooks/useReadQuery.js.map +1 -1
  57. package/react/hooks/useSubscription.js +4 -0
  58. package/react/hooks/useSubscription.js.map +1 -1
  59. package/react/hooks/useSuspenseQuery.js +2 -2
  60. package/react/hooks/useSuspenseQuery.js.map +1 -1
  61. package/react/hooks/useSyncExternalStore.js +4 -0
  62. package/react/hooks/useSyncExternalStore.js.map +1 -1
  63. package/react/internal/cache/QueryReference.d.ts +68 -6
  64. package/react/internal/cache/QueryReference.js +4 -0
  65. package/react/internal/cache/QueryReference.js.map +1 -1
  66. package/react/internal/index.d.ts +2 -2
  67. package/react/internal/index.js +1 -1
  68. package/react/internal/index.js.map +1 -1
  69. package/react/internal/internal.cjs +92 -0
  70. package/react/internal/internal.cjs.map +1 -1
  71. package/react/internal/internal.cjs.native.js +92 -0
  72. package/react/parser/index.js +5 -5
  73. package/react/parser/parser.cjs +5 -5
  74. package/react/parser/parser.cjs.map +1 -1
  75. package/react/parser/parser.cjs.native.js +5 -5
  76. package/react/query-preloader/createQueryPreloader.d.ts +6 -6
  77. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  78. package/react/types/types.d.ts +1 -1
  79. package/react/types/types.js.map +1 -1
  80. package/testing/core/core.cjs +4 -4
  81. package/testing/core/core.cjs.map +1 -1
  82. package/testing/core/core.cjs.native.js +4 -4
  83. package/testing/core/mocking/mockLink.d.ts +8 -3
  84. package/testing/core/mocking/mockLink.js +5 -5
  85. package/testing/core/mocking/mockLink.js.map +1 -1
  86. package/testing/internal/profile/profile.js +6 -2
  87. package/testing/internal/profile/profile.js.map +1 -1
  88. package/testing/matchers/toBeDisposed.js +4 -13
  89. package/testing/matchers/toBeDisposed.js.map +1 -1
  90. package/utilities/globals/globals.cjs +1 -1
  91. package/utilities/globals/globals.cjs.map +1 -1
  92. package/utilities/globals/globals.cjs.native.js +1 -1
  93. package/utilities/graphql/DocumentTransform.js +1 -1
  94. package/utilities/graphql/directives.js +4 -4
  95. package/utilities/graphql/fragments.js +3 -3
  96. package/utilities/graphql/getFromAST.js +8 -8
  97. package/utilities/graphql/storeUtils.js +1 -1
  98. package/utilities/graphql/transform.js +2 -2
  99. package/utilities/utilities.cjs +19 -19
  100. package/utilities/utilities.cjs.map +1 -1
  101. package/utilities/utilities.cjs.native.js +19 -19
  102. package/version.js +1 -1
package/cache/cache.cjs CHANGED
@@ -7,10 +7,14 @@ var tslib = require('tslib');
7
7
  var optimism = require('optimism');
8
8
  var utilities = require('../utilities');
9
9
  var caches = require('@wry/caches');
10
- var equality = require('@wry/equality');
10
+ var equal = require('@wry/equality');
11
11
  var trie = require('@wry/trie');
12
12
  var graphql = require('graphql');
13
13
 
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
15
+
16
+ var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
17
+
14
18
  var getInMemoryCacheMemoryInternals = globalThis.__DEV__ !== false ?
15
19
  _getInMemoryCacheMemoryInternals
16
20
  : undefined;
@@ -56,6 +60,72 @@ function recurseTransformInfo(transform) {
56
60
  : [];
57
61
  }
58
62
 
63
+ function equalByQuery(query, _a, _b, variables) {
64
+ var aData = _a.data, aRest = tslib.__rest(_a, ["data"]);
65
+ var bData = _b.data, bRest = tslib.__rest(_b, ["data"]);
66
+ return (equal__default(aRest, bRest) &&
67
+ equalBySelectionSet(utilities.getMainDefinition(query).selectionSet, aData, bData, {
68
+ fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(query)),
69
+ variables: variables,
70
+ }));
71
+ }
72
+ function equalBySelectionSet(selectionSet, aResult, bResult, context) {
73
+ if (aResult === bResult) {
74
+ return true;
75
+ }
76
+ var seenSelections = new Set();
77
+ return selectionSet.selections.every(function (selection) {
78
+ if (seenSelections.has(selection))
79
+ return true;
80
+ seenSelections.add(selection);
81
+ if (!utilities.shouldInclude(selection, context.variables))
82
+ return true;
83
+ if (selectionHasNonreactiveDirective(selection))
84
+ return true;
85
+ if (utilities.isField(selection)) {
86
+ var resultKey = utilities.resultKeyNameFromField(selection);
87
+ var aResultChild = aResult && aResult[resultKey];
88
+ var bResultChild = bResult && bResult[resultKey];
89
+ var childSelectionSet = selection.selectionSet;
90
+ if (!childSelectionSet) {
91
+ return equal__default(aResultChild, bResultChild);
92
+ }
93
+ var aChildIsArray = Array.isArray(aResultChild);
94
+ var bChildIsArray = Array.isArray(bResultChild);
95
+ if (aChildIsArray !== bChildIsArray)
96
+ return false;
97
+ if (aChildIsArray && bChildIsArray) {
98
+ var length_1 = aResultChild.length;
99
+ if (bResultChild.length !== length_1) {
100
+ return false;
101
+ }
102
+ for (var i = 0; i < length_1; ++i) {
103
+ if (!equalBySelectionSet(childSelectionSet, aResultChild[i], bResultChild[i], context)) {
104
+ return false;
105
+ }
106
+ }
107
+ return true;
108
+ }
109
+ return equalBySelectionSet(childSelectionSet, aResultChild, bResultChild, context);
110
+ }
111
+ else {
112
+ var fragment = utilities.getFragmentFromSelection(selection, context.fragmentMap);
113
+ if (fragment) {
114
+ if (selectionHasNonreactiveDirective(fragment))
115
+ return true;
116
+ return equalBySelectionSet(fragment.selectionSet,
117
+ aResult, bResult, context);
118
+ }
119
+ }
120
+ });
121
+ }
122
+ function selectionHasNonreactiveDirective(selection) {
123
+ return (!!selection.directives && selection.directives.some(directiveIsNonreactive));
124
+ }
125
+ function directiveIsNonreactive(dir) {
126
+ return dir.name.value === "nonreactive";
127
+ }
128
+
59
129
  var ApolloCache = (function () {
60
130
  function ApolloCache() {
61
131
  this.assumeImmutableResults = false;
@@ -99,16 +169,19 @@ var ApolloCache = (function () {
99
169
  ApolloCache.prototype.watchFragment = function (options) {
100
170
  var _this = this;
101
171
  var fragment = options.fragment, fragmentName = options.fragmentName, from = options.from, _a = options.optimistic, optimistic = _a === void 0 ? true : _a;
172
+ var query = this.getFragmentDoc(fragment, fragmentName);
102
173
  var diffOptions = {
103
174
  returnPartialData: true,
104
175
  id: typeof from === "string" ? from : this.identify(from),
105
- query: this.getFragmentDoc(fragment, fragmentName),
176
+ query: query,
106
177
  optimistic: optimistic,
107
178
  };
108
179
  var latestDiff;
109
180
  return new utilities.Observable(function (observer) {
110
- return _this.watch(tslib.__assign(tslib.__assign({}, diffOptions), { immediate: true, query: _this.getFragmentDoc(fragment, fragmentName), callback: function (diff) {
111
- if (equality.equal(diff, latestDiff)) {
181
+ return _this.watch(tslib.__assign(tslib.__assign({}, diffOptions), { immediate: true, callback: function (diff) {
182
+ if (
183
+ latestDiff &&
184
+ equalByQuery(query, { data: latestDiff === null || latestDiff === void 0 ? void 0 : latestDiff.result }, { data: diff.result })) {
112
185
  return;
113
186
  }
114
187
  var result = {
@@ -731,7 +804,7 @@ var Layer = (function (_super) {
731
804
  }
732
805
  else if (ownStoreObject !== parentStoreObject) {
733
806
  Object.keys(ownStoreObject).forEach(function (storeFieldName) {
734
- if (!equality.equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {
807
+ if (!equal.equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {
735
808
  _this.group.dirty(dataId, storeFieldName);
736
809
  }
737
810
  });
@@ -776,7 +849,7 @@ var Stump = (function (_super) {
776
849
  function storeObjectReconciler(existingObject, incomingObject, property) {
777
850
  var existingValue = existingObject[property];
778
851
  var incomingValue = incomingObject[property];
779
- return equality.equal(existingValue, incomingValue) ? existingValue : incomingValue;
852
+ return equal.equal(existingValue, incomingValue) ? existingValue : incomingValue;
780
853
  }
781
854
  function supportsResultCaching(store) {
782
855
  return !!(store instanceof exports.EntityStore && store.group.caching);
@@ -2130,7 +2203,7 @@ function warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {
2130
2203
  return;
2131
2204
  if (utilities.isReference(existing))
2132
2205
  return;
2133
- if (equality.equal(existing, incoming))
2206
+ if (equal.equal(existing, incoming))
2134
2207
  return;
2135
2208
  if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {
2136
2209
  return;
@@ -2453,7 +2526,7 @@ var InMemoryCache = (function (_super) {
2453
2526
  return;
2454
2527
  }
2455
2528
  }
2456
- if (!lastDiff || !equality.equal(lastDiff.result, diff.result)) {
2529
+ if (!lastDiff || !equal.equal(lastDiff.result, diff.result)) {
2457
2530
  c.callback((c.lastDiff = diff), lastDiff);
2458
2531
  }
2459
2532
  };