@apollo/client 3.12.0-alpha.0 → 3.12.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 (137) hide show
  1. package/.changeset/cold-apes-bow.md +5 -0
  2. package/.changeset/early-bobcats-eat.md +5 -0
  3. package/.changeset/flat-beans-knock.md +15 -0
  4. package/.changeset/kind-toys-tie.md +5 -0
  5. package/.changeset/nervous-owls-hear.md +5 -0
  6. package/.changeset/pre.json +7 -2
  7. package/CHANGELOG.md +34 -0
  8. package/apollo-client.cjs +133 -77
  9. package/apollo-client.cjs.map +1 -1
  10. package/apollo-client.min.cjs +1 -1
  11. package/cache/cache.cjs +30 -20
  12. package/cache/cache.cjs.map +1 -1
  13. package/cache/cache.cjs.native.js +30 -20
  14. package/cache/inmemory/policies.js +12 -9
  15. package/cache/inmemory/policies.js.map +1 -1
  16. package/config/jest/setup.js +5 -0
  17. package/config/jest/setup.js.map +1 -1
  18. package/core/ApolloClient.js +7 -3
  19. package/core/ApolloClient.js.map +1 -1
  20. package/core/ObservableQuery.js +2 -0
  21. package/core/ObservableQuery.js.map +1 -1
  22. package/core/QueryManager.d.ts +4 -1
  23. package/core/QueryManager.js +26 -2
  24. package/core/QueryManager.js.map +1 -1
  25. package/core/core.cjs +57 -20
  26. package/core/core.cjs.map +1 -1
  27. package/core/core.cjs.native.js +57 -20
  28. package/core/masking.d.ts +6 -0
  29. package/core/masking.js +33 -15
  30. package/core/masking.js.map +1 -1
  31. package/dev/dev.cjs +66 -62
  32. package/dev/dev.cjs.map +1 -1
  33. package/dev/dev.cjs.native.js +66 -62
  34. package/invariantErrorCodes.js +66 -61
  35. package/link/core/ApolloLink.js +2 -2
  36. package/link/core/core.cjs +2 -2
  37. package/link/core/core.cjs.map +1 -1
  38. package/link/core/core.cjs.native.js +2 -2
  39. package/link/http/checkFetcher.js +1 -1
  40. package/link/http/createHttpLink.js +1 -1
  41. package/link/http/http.cjs +3 -3
  42. package/link/http/http.cjs.map +1 -1
  43. package/link/http/http.cjs.native.js +3 -3
  44. package/link/http/serializeFetchParameter.js +1 -1
  45. package/link/persisted-queries/index.js +2 -2
  46. package/link/persisted-queries/index.js.map +1 -1
  47. package/link/persisted-queries/persisted-queries.cjs +2 -2
  48. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  49. package/link/persisted-queries/persisted-queries.cjs.native.js +2 -2
  50. package/link/utils/toPromise.js +1 -1
  51. package/link/utils/utils.cjs +2 -2
  52. package/link/utils/utils.cjs.map +1 -1
  53. package/link/utils/utils.cjs.native.js +2 -2
  54. package/link/utils/validateOperation.js +1 -1
  55. package/masking/types.d.ts +2 -2
  56. package/masking/types.js.map +1 -1
  57. package/package.json +4 -3
  58. package/react/context/ApolloConsumer.js +1 -1
  59. package/react/context/ApolloContext.js +1 -1
  60. package/react/context/ApolloProvider.js +1 -1
  61. package/react/context/context.cjs +3 -3
  62. package/react/context/context.cjs.map +1 -1
  63. package/react/context/context.cjs.native.js +3 -3
  64. package/react/hoc/hoc-utils.js +1 -1
  65. package/react/hoc/hoc.cjs +2 -2
  66. package/react/hoc/hoc.cjs.map +1 -1
  67. package/react/hoc/hoc.cjs.native.js +2 -2
  68. package/react/hoc/withApollo.js +1 -1
  69. package/react/hooks/hooks.cjs +9 -9
  70. package/react/hooks/hooks.cjs.map +1 -1
  71. package/react/hooks/hooks.cjs.native.js +9 -9
  72. package/react/hooks/useApolloClient.js +1 -1
  73. package/react/hooks/useLoadableQuery.js +2 -2
  74. package/react/hooks/useSubscription.js +3 -3
  75. package/react/hooks/useSuspenseQuery.js +2 -2
  76. package/react/hooks/useSyncExternalStore.js +1 -1
  77. package/react/internal/cache/QueryReference.js +2 -2
  78. package/react/internal/cache/QueryReference.js.map +1 -1
  79. package/react/internal/internal.cjs +3 -3
  80. package/react/internal/internal.cjs.map +1 -1
  81. package/react/internal/internal.cjs.native.js +3 -3
  82. package/react/parser/index.js +5 -5
  83. package/react/parser/parser.cjs +5 -5
  84. package/react/parser/parser.cjs.map +1 -1
  85. package/react/parser/parser.cjs.native.js +5 -5
  86. package/testing/core/core.cjs +2 -2
  87. package/testing/core/core.cjs.map +1 -1
  88. package/testing/core/core.cjs.native.js +2 -2
  89. package/testing/core/mocking/mockLink.js +2 -2
  90. package/testing/internal/ObservableStream.d.ts +11 -15
  91. package/testing/internal/ObservableStream.js +18 -62
  92. package/testing/internal/ObservableStream.js.map +1 -1
  93. package/testing/internal/index.d.ts +1 -2
  94. package/testing/internal/index.js +1 -2
  95. package/testing/internal/index.js.map +1 -1
  96. package/testing/internal/renderHelpers.d.ts +13 -2
  97. package/testing/internal/renderHelpers.js +20 -12
  98. package/testing/internal/renderHelpers.js.map +1 -1
  99. package/testing/matchers/index.js +0 -3
  100. package/testing/matchers/index.js.map +1 -1
  101. package/utilities/globals/globals.cjs +1 -1
  102. package/utilities/globals/globals.cjs.map +1 -1
  103. package/utilities/globals/globals.cjs.native.js +1 -1
  104. package/utilities/graphql/DocumentTransform.js +1 -1
  105. package/utilities/graphql/directives.js +7 -7
  106. package/utilities/graphql/fragments.d.ts +1 -0
  107. package/utilities/graphql/fragments.js +18 -3
  108. package/utilities/graphql/fragments.js.map +1 -1
  109. package/utilities/graphql/getFromAST.js +8 -8
  110. package/utilities/graphql/storeUtils.js +1 -1
  111. package/utilities/graphql/transform.js +8 -2
  112. package/utilities/graphql/transform.js.map +1 -1
  113. package/utilities/index.d.ts +1 -1
  114. package/utilities/index.js +1 -1
  115. package/utilities/index.js.map +1 -1
  116. package/utilities/utilities.cjs +41 -22
  117. package/utilities/utilities.cjs.map +1 -1
  118. package/utilities/utilities.cjs.native.js +41 -22
  119. package/version.js +1 -1
  120. package/testing/internal/profile/Render.d.ts +0 -69
  121. package/testing/internal/profile/Render.js +0 -144
  122. package/testing/internal/profile/Render.js.map +0 -1
  123. package/testing/internal/profile/context.d.ts +0 -10
  124. package/testing/internal/profile/context.js +0 -14
  125. package/testing/internal/profile/context.js.map +0 -1
  126. package/testing/internal/profile/index.d.ts +0 -4
  127. package/testing/internal/profile/index.js +0 -2
  128. package/testing/internal/profile/index.js.map +0 -1
  129. package/testing/internal/profile/profile.d.ts +0 -109
  130. package/testing/internal/profile/profile.js +0 -304
  131. package/testing/internal/profile/profile.js.map +0 -1
  132. package/testing/internal/profile/traces.d.ts +0 -7
  133. package/testing/internal/profile/traces.js +0 -30
  134. package/testing/internal/profile/traces.js.map +0 -1
  135. package/testing/matchers/ProfiledComponent.d.ts +0 -8
  136. package/testing/matchers/ProfiledComponent.js +0 -110
  137. package/testing/matchers/ProfiledComponent.js.map +0 -1
package/cache/cache.cjs CHANGED
@@ -126,6 +126,7 @@ function directiveIsNonreactive(dir) {
126
126
  return dir.name.value === "nonreactive";
127
127
  }
128
128
 
129
+ var disableWarningsSlot = new optimism.Slot();
129
130
  function maskFragment(data, document, cache, fragmentName) {
130
131
  if (!cache.fragmentMatches) {
131
132
  if (globalThis.__DEV__ !== false) {
@@ -137,14 +138,17 @@ function maskFragment(data, document, cache, fragmentName) {
137
138
  return node.kind === graphql.Kind.FRAGMENT_DEFINITION;
138
139
  });
139
140
  if (typeof fragmentName === "undefined") {
140
- globals.invariant(fragments.length === 1, 38, fragments.length);
141
+ globals.invariant(fragments.length === 1, 39, fragments.length);
141
142
  fragmentName = fragments[0].name.value;
142
143
  }
143
144
  var fragment = fragments.find(function (fragment) { return fragment.name.value === fragmentName; });
144
- globals.invariant(!!fragment, 39, fragmentName);
145
+ globals.invariant(!!fragment, 40, fragmentName);
145
146
  if (data == null) {
146
147
  return data;
147
148
  }
149
+ if (equal.equal(data, {})) {
150
+ return data;
151
+ }
148
152
  var context = {
149
153
  operationType: "fragment",
150
154
  operationName: fragment.name.value,
@@ -153,9 +157,7 @@ function maskFragment(data, document, cache, fragmentName) {
153
157
  };
154
158
  var _a = maskSelectionSet(data, fragment.selectionSet, context), masked = _a[0], changed = _a[1];
155
159
  if (Object.isFrozen(data)) {
156
- context.disableWarnings = true;
157
- utilities.maybeDeepFreeze(masked);
158
- context.disableWarnings = false;
160
+ disableWarningsSlot.withValue(true, utilities.maybeDeepFreeze, [masked]);
159
161
  }
160
162
  return changed ? masked : data;
161
163
  }
@@ -179,7 +181,10 @@ function maskSelectionSet(data, selectionSet, context, path) {
179
181
  var keyName = utilities.resultKeyNameFromField(selection);
180
182
  var childSelectionSet = selection.selectionSet;
181
183
  memo[keyName] = data[keyName];
182
- if (childSelectionSet && data[keyName] !== null) {
184
+ if (memo[keyName] === void 0) {
185
+ delete memo[keyName];
186
+ }
187
+ if (keyName in memo && childSelectionSet && data[keyName] !== null) {
183
188
  var _b = maskSelectionSet(data[keyName], childSelectionSet, context, globalThis.__DEV__ !== false ? "".concat(path || "", ".").concat(keyName) : void 0), masked = _b[0], childChanged = _b[1];
184
189
  if (childChanged ||
185
190
  Object.keys(masked).length !== Object.keys(data[keyName]).length) {
@@ -205,7 +210,7 @@ function maskSelectionSet(data, selectionSet, context, path) {
205
210
  var fragment = context.fragmentMap[fragmentName] ||
206
211
  (context.fragmentMap[fragmentName] =
207
212
  context.cache.lookupFragment(fragmentName));
208
- globals.invariant(fragment, 40, fragmentName);
213
+ globals.invariant(fragment, 41, fragmentName);
209
214
  var mode = utilities.getFragmentMaskMode(selection);
210
215
  if (mode === "mask") {
211
216
  return [memo, true];
@@ -223,7 +228,7 @@ function maskSelectionSet(data, selectionSet, context, path) {
223
228
  }
224
229
  }
225
230
  }, [Object.create(null), false]);
226
- if ("__typename" in data && !("__typename" in result[0])) {
231
+ if (data && "__typename" in data && !("__typename" in result[0])) {
227
232
  result[0].__typename = data.__typename;
228
233
  }
229
234
  return result;
@@ -273,11 +278,14 @@ function addFieldAccessorWarnings(memo, data, selectionSetNode, path, context) {
273
278
  }, memo);
274
279
  }
275
280
  function addAccessorWarning(data, value, fieldName, path, context) {
281
+ if (value === void 0) {
282
+ return;
283
+ }
276
284
  var getValue = function () {
277
- if (context.disableWarnings) {
285
+ if (disableWarningsSlot.getValue()) {
278
286
  return value;
279
287
  }
280
- globalThis.__DEV__ !== false && globals.invariant.warn(41, context.operationName ?
288
+ globalThis.__DEV__ !== false && globals.invariant.warn(42, context.operationName ?
281
289
  "".concat(context.operationType, " '").concat(context.operationName, "'")
282
290
  : "anonymous ".concat(context.operationType), "".concat(path, ".").concat(fieldName).replace(/^\./, ""));
283
291
  getValue = function () { return value; };
@@ -298,7 +306,7 @@ var issuedWarning = false;
298
306
  function warnOnImproperCacheImplementation() {
299
307
  if (!issuedWarning) {
300
308
  issuedWarning = true;
301
- globalThis.__DEV__ !== false && globals.invariant.warn(42);
309
+ globalThis.__DEV__ !== false && globals.invariant.warn(43);
302
310
  }
303
311
  }
304
312
 
@@ -1648,16 +1656,18 @@ var Policies = (function () {
1648
1656
  var id;
1649
1657
  var policy = typename && this.getTypePolicy(typename);
1650
1658
  var keyFn = (policy && policy.keyFn) || this.config.dataIdFromObject;
1651
- while (keyFn) {
1652
- var specifierOrId = keyFn(tslib.__assign(tslib.__assign({}, object), storeObject), context);
1653
- if (utilities.isArray(specifierOrId)) {
1654
- keyFn = keyFieldsFnFromSpecifier(specifierOrId);
1655
- }
1656
- else {
1657
- id = specifierOrId;
1658
- break;
1659
+ disableWarningsSlot.withValue(true, function () {
1660
+ while (keyFn) {
1661
+ var specifierOrId = keyFn(tslib.__assign(tslib.__assign({}, object), storeObject), context);
1662
+ if (utilities.isArray(specifierOrId)) {
1663
+ keyFn = keyFieldsFnFromSpecifier(specifierOrId);
1664
+ }
1665
+ else {
1666
+ id = specifierOrId;
1667
+ break;
1668
+ }
1659
1669
  }
1660
- }
1670
+ });
1661
1671
  id = id ? String(id) : void 0;
1662
1672
  return context.keyObject ? [id, context.keyObject] : [id];
1663
1673
  };