@apollo/client 3.11.10 → 3.11.11-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 (190) hide show
  1. package/.changeset/early-bobcats-eat.md +5 -0
  2. package/.changeset/flat-beans-knock.md +15 -0
  3. package/.changeset/kind-toys-tie.md +5 -0
  4. package/.changeset/nasty-camels-pay.md +36 -0
  5. package/.changeset/nervous-owls-hear.md +5 -0
  6. package/.changeset/pre.json +14 -0
  7. package/CHANGELOG.md +59 -0
  8. package/apollo-client.cjs +500 -118
  9. package/apollo-client.cjs.map +1 -1
  10. package/apollo-client.min.cjs +1 -1
  11. package/cache/cache.cjs +237 -31
  12. package/cache/cache.cjs.map +1 -1
  13. package/cache/cache.cjs.native.js +237 -31
  14. package/cache/core/cache.d.ts +13 -10
  15. package/cache/core/cache.js +32 -14
  16. package/cache/core/cache.js.map +1 -1
  17. package/cache/core/types/Cache.d.ts +2 -1
  18. package/cache/core/types/Cache.js.map +1 -1
  19. package/cache/core/types/DataProxy.d.ts +4 -3
  20. package/cache/core/types/DataProxy.js.map +1 -1
  21. package/cache/inmemory/entityStore.js +3 -3
  22. package/cache/inmemory/inMemoryCache.d.ts +3 -1
  23. package/cache/inmemory/inMemoryCache.js +7 -0
  24. package/cache/inmemory/inMemoryCache.js.map +1 -1
  25. package/cache/inmemory/key-extractor.js +1 -1
  26. package/cache/inmemory/policies.js +16 -13
  27. package/cache/inmemory/policies.js.map +1 -1
  28. package/cache/inmemory/readFromStore.js +2 -2
  29. package/cache/inmemory/writeToStore.js +4 -4
  30. package/core/ApolloClient.d.ts +14 -6
  31. package/core/ApolloClient.js +17 -6
  32. package/core/ApolloClient.js.map +1 -1
  33. package/core/LocalState.js +2 -2
  34. package/core/ObservableQuery.d.ts +17 -14
  35. package/core/ObservableQuery.js +31 -16
  36. package/core/ObservableQuery.js.map +1 -1
  37. package/core/QueryInfo.js.map +1 -1
  38. package/core/QueryManager.d.ts +22 -4
  39. package/core/QueryManager.js +63 -14
  40. package/core/QueryManager.js.map +1 -1
  41. package/core/core.cjs +321 -37
  42. package/core/core.cjs.map +1 -1
  43. package/core/core.cjs.native.js +321 -37
  44. package/core/index.d.ts +1 -0
  45. package/core/index.js.map +1 -1
  46. package/core/masking.d.ts +10 -0
  47. package/core/masking.js +230 -0
  48. package/core/masking.js.map +1 -0
  49. package/core/types.d.ts +3 -2
  50. package/core/types.js.map +1 -1
  51. package/core/watchQueryOptions.d.ts +8 -6
  52. package/core/watchQueryOptions.js.map +1 -1
  53. package/dev/dev.cjs +136 -88
  54. package/dev/dev.cjs.map +1 -1
  55. package/dev/dev.cjs.native.js +136 -88
  56. package/invariantErrorCodes.js +146 -87
  57. package/link/core/ApolloLink.js +2 -2
  58. package/link/core/core.cjs +2 -2
  59. package/link/core/core.cjs.map +1 -1
  60. package/link/core/core.cjs.native.js +2 -2
  61. package/link/http/checkFetcher.js +1 -1
  62. package/link/http/createHttpLink.js +1 -1
  63. package/link/http/http.cjs +3 -3
  64. package/link/http/http.cjs.map +1 -1
  65. package/link/http/http.cjs.native.js +3 -3
  66. package/link/http/serializeFetchParameter.js +1 -1
  67. package/link/persisted-queries/index.js +2 -2
  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/toPromise.js +1 -1
  72. package/link/utils/utils.cjs +2 -2
  73. package/link/utils/utils.cjs.map +1 -1
  74. package/link/utils/utils.cjs.native.js +2 -2
  75. package/link/utils/validateOperation.js +1 -1
  76. package/masking/index.d.ts +2 -0
  77. package/masking/index.js +2 -0
  78. package/masking/index.js.map +1 -0
  79. package/masking/internal/types.d.ts +15 -0
  80. package/masking/internal/types.js +2 -0
  81. package/masking/internal/types.js.map +1 -0
  82. package/masking/masking.cjs +3 -0
  83. package/masking/masking.cjs.map +1 -0
  84. package/masking/masking.cjs.native.js +3 -0
  85. package/masking/masking.d.cts +1 -0
  86. package/masking/package.json +8 -0
  87. package/masking/types.d.ts +44 -0
  88. package/masking/types.js +2 -0
  89. package/masking/types.js.map +1 -0
  90. package/package.json +1 -1
  91. package/react/context/ApolloConsumer.js +1 -1
  92. package/react/context/ApolloContext.js +1 -1
  93. package/react/context/ApolloProvider.js +1 -1
  94. package/react/context/context.cjs +3 -3
  95. package/react/context/context.cjs.map +1 -1
  96. package/react/context/context.cjs.native.js +3 -3
  97. package/react/hoc/hoc-utils.js +1 -1
  98. package/react/hoc/hoc.cjs +2 -2
  99. package/react/hoc/hoc.cjs.map +1 -1
  100. package/react/hoc/hoc.cjs.native.js +2 -2
  101. package/react/hoc/withApollo.js +1 -1
  102. package/react/hooks/hooks.cjs +24 -16
  103. package/react/hooks/hooks.cjs.map +1 -1
  104. package/react/hooks/hooks.cjs.native.js +24 -16
  105. package/react/hooks/useApolloClient.js +1 -1
  106. package/react/hooks/useFragment.d.ts +4 -3
  107. package/react/hooks/useFragment.js +12 -5
  108. package/react/hooks/useFragment.js.map +1 -1
  109. package/react/hooks/useLazyQuery.js +1 -1
  110. package/react/hooks/useLazyQuery.js.map +1 -1
  111. package/react/hooks/useLoadableQuery.js +2 -2
  112. package/react/hooks/useQuery.d.ts +4 -3
  113. package/react/hooks/useQuery.js +2 -1
  114. package/react/hooks/useQuery.js.map +1 -1
  115. package/react/hooks/useReadQuery.d.ts +2 -1
  116. package/react/hooks/useReadQuery.js.map +1 -1
  117. package/react/hooks/useSubscription.d.ts +2 -1
  118. package/react/hooks/useSubscription.js +3 -3
  119. package/react/hooks/useSubscription.js.map +1 -1
  120. package/react/hooks/useSuspenseQuery.d.ts +6 -5
  121. package/react/hooks/useSuspenseQuery.js +2 -2
  122. package/react/hooks/useSuspenseQuery.js.map +1 -1
  123. package/react/hooks/useSyncExternalStore.js +1 -1
  124. package/react/internal/cache/QueryReference.d.ts +5 -4
  125. package/react/internal/cache/QueryReference.js +1 -1
  126. package/react/internal/cache/QueryReference.js.map +1 -1
  127. package/react/internal/internal.cjs +2 -2
  128. package/react/internal/internal.cjs.map +1 -1
  129. package/react/internal/internal.cjs.native.js +2 -2
  130. package/react/parser/index.js +5 -5
  131. package/react/parser/parser.cjs +5 -5
  132. package/react/parser/parser.cjs.map +1 -1
  133. package/react/parser/parser.cjs.native.js +5 -5
  134. package/react/types/types.d.ts +18 -42
  135. package/react/types/types.js.map +1 -1
  136. package/testing/core/core.cjs +3 -3
  137. package/testing/core/core.cjs.map +1 -1
  138. package/testing/core/core.cjs.native.js +3 -3
  139. package/testing/core/mocking/mockLink.d.ts +3 -2
  140. package/testing/core/mocking/mockLink.js +3 -3
  141. package/testing/core/mocking/mockLink.js.map +1 -1
  142. package/testing/core/mocking/mockQueryManager.d.ts +1 -0
  143. package/testing/core/mocking/mockQueryManager.js +1 -1
  144. package/testing/core/mocking/mockQueryManager.js.map +1 -1
  145. package/testing/internal/disposables/index.d.ts +1 -0
  146. package/testing/internal/disposables/index.js +1 -0
  147. package/testing/internal/disposables/index.js.map +1 -1
  148. package/testing/internal/disposables/withProdMode.d.ts +4 -0
  149. package/testing/internal/disposables/withProdMode.js +10 -0
  150. package/testing/internal/disposables/withProdMode.js.map +1 -0
  151. package/testing/internal/scenarios/index.d.ts +28 -0
  152. package/testing/internal/scenarios/index.js +18 -2
  153. package/testing/internal/scenarios/index.js.map +1 -1
  154. package/utilities/common/maybeDeepFreeze.d.ts +1 -0
  155. package/utilities/common/maybeDeepFreeze.js +1 -1
  156. package/utilities/common/maybeDeepFreeze.js.map +1 -1
  157. package/utilities/globals/globals.cjs +1 -1
  158. package/utilities/globals/globals.cjs.map +1 -1
  159. package/utilities/globals/globals.cjs.native.js +1 -1
  160. package/utilities/graphql/DocumentTransform.js +1 -1
  161. package/utilities/graphql/directives.d.ts +3 -1
  162. package/utilities/graphql/directives.js +39 -5
  163. package/utilities/graphql/directives.js.map +1 -1
  164. package/utilities/graphql/fragments.d.ts +1 -0
  165. package/utilities/graphql/fragments.js +18 -3
  166. package/utilities/graphql/fragments.js.map +1 -1
  167. package/utilities/graphql/getFromAST.js +8 -8
  168. package/utilities/graphql/storeUtils.js +1 -1
  169. package/utilities/graphql/transform.d.ts +1 -0
  170. package/utilities/graphql/transform.js +21 -2
  171. package/utilities/graphql/transform.js.map +1 -1
  172. package/utilities/index.d.ts +8 -4
  173. package/utilities/index.js +5 -4
  174. package/utilities/index.js.map +1 -1
  175. package/utilities/promises/preventUnhandledRejection.d.ts +2 -0
  176. package/utilities/promises/preventUnhandledRejection.js +5 -0
  177. package/utilities/promises/preventUnhandledRejection.js.map +1 -0
  178. package/utilities/types/NoInfer.d.ts +27 -0
  179. package/utilities/types/NoInfer.js +2 -0
  180. package/utilities/types/NoInfer.js.map +1 -0
  181. package/utilities/types/Prettify.d.ts +4 -0
  182. package/utilities/types/Prettify.js +2 -0
  183. package/utilities/types/Prettify.js.map +1 -0
  184. package/utilities/types/UnionToIntersection.d.ts +2 -0
  185. package/utilities/types/UnionToIntersection.js +2 -0
  186. package/utilities/types/UnionToIntersection.js.map +1 -0
  187. package/utilities/utilities.cjs +92 -19
  188. package/utilities/utilities.cjs.map +1 -1
  189. package/utilities/utilities.cjs.native.js +92 -19
  190. package/version.js +1 -1
@@ -12,6 +12,7 @@ var cache = require('../cache');
12
12
  var errors = require('../errors');
13
13
  var trie = require('@wry/trie');
14
14
  var graphql = require('graphql');
15
+ var optimism = require('optimism');
15
16
  var utils = require('../link/utils');
16
17
  var tsInvariant = require('ts-invariant');
17
18
  var graphqlTag = require('graphql-tag');
@@ -20,7 +21,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
20
21
 
21
22
  var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
22
23
 
23
- var version = "3.11.10";
24
+ var version = "3.11.11-rc.0";
24
25
 
25
26
  function isNonNullObject(obj) {
26
27
  return obj !== null && typeof obj === "object";
@@ -213,7 +214,7 @@ var ObservableQuery = (function (_super) {
213
214
  observer.error && observer.error(last.error);
214
215
  }
215
216
  else if (last && last.result) {
216
- observer.next && observer.next(last.result);
217
+ observer.next && observer.next(_this.maskResult(last.result));
217
218
  }
218
219
  if (first) {
219
220
  _this.reobserve().catch(function () { });
@@ -231,6 +232,7 @@ var ObservableQuery = (function (_super) {
231
232
  _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);
232
233
  _this.isTornDown = false;
233
234
  _this.subscribeToMore = _this.subscribeToMore.bind(_this);
235
+ _this.maskResult = _this.maskResult.bind(_this);
234
236
  var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? "cache-first" : _d;
235
237
  var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e,
236
238
  _f = options.initialFetchPolicy,
@@ -279,7 +281,7 @@ var ObservableQuery = (function (_super) {
279
281
  ObservableQuery.prototype.resetDiff = function () {
280
282
  this.queryInfo.resetDiff();
281
283
  };
282
- ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {
284
+ ObservableQuery.prototype.getCurrentFullResult = function (saveAsLastResult) {
283
285
  if (saveAsLastResult === void 0) { saveAsLastResult = true; }
284
286
  var lastResult = this.getLastResult(true);
285
287
  var networkStatus = this.queryInfo.networkStatus ||
@@ -327,12 +329,19 @@ var ObservableQuery = (function (_super) {
327
329
  }
328
330
  return result;
329
331
  };
332
+ ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {
333
+ if (saveAsLastResult === void 0) { saveAsLastResult = true; }
334
+ return this.maskResult(this.getCurrentFullResult(saveAsLastResult));
335
+ };
330
336
  ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {
331
337
  if (!this.last) {
332
338
  return true;
333
339
  }
334
- var resultIsDifferent = this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective ?
335
- !equalByQuery(this.query, this.last.result, newResult, this.variables)
340
+ var documentInfo = this.queryManager.getDocumentInfo(this.query);
341
+ var dataMasking = this.queryManager.dataMasking;
342
+ var query = dataMasking ? documentInfo.nonReactiveQuery : this.query;
343
+ var resultIsDifferent = dataMasking || documentInfo.hasNonreactiveDirective ?
344
+ !equalByQuery(query, this.last.result, newResult, this.variables)
336
345
  : !equal.equal(this.last.result, newResult);
337
346
  return (resultIsDifferent || (variables && !equal.equal(this.last.variables, variables)));
338
347
  };
@@ -377,7 +386,7 @@ var ObservableQuery = (function (_super) {
377
386
  var vars = queryDef.variableDefinitions;
378
387
  if (!vars || !vars.some(function (v) { return v.variable.name.value === "variables"; })) {
379
388
  globalThis.__DEV__ !== false && globals.invariant.warn(
380
- 20,
389
+ 21,
381
390
  variables,
382
391
  ((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || queryDef
383
392
  );
@@ -409,7 +418,7 @@ var ObservableQuery = (function (_super) {
409
418
  var updateQuery = fetchMoreOptions === null || fetchMoreOptions === void 0 ? void 0 : fetchMoreOptions.updateQuery;
410
419
  var isCached = this.options.fetchPolicy !== "no-cache";
411
420
  if (!isCached) {
412
- globals.invariant(updateQuery, 21);
421
+ globals.invariant(updateQuery, 22);
413
422
  }
414
423
  return this.queryManager
415
424
  .fetchQuery(qid, combinedOptions, exports.NetworkStatus.fetchMore)
@@ -456,7 +465,7 @@ var ObservableQuery = (function (_super) {
456
465
  });
457
466
  _this.reportResult(tslib.__assign(tslib.__assign({}, lastResult), { data: data }), _this.variables);
458
467
  }
459
- return fetchMoreResult;
468
+ return _this.maskResult(fetchMoreResult);
460
469
  })
461
470
  .finally(function () {
462
471
  if (isCached && !updatedQuerySet.has(_this.query)) {
@@ -490,7 +499,7 @@ var ObservableQuery = (function (_super) {
490
499
  options.onError(err);
491
500
  return;
492
501
  }
493
- globalThis.__DEV__ !== false && globals.invariant.error(22, err);
502
+ globalThis.__DEV__ !== false && globals.invariant.error(23, err);
494
503
  },
495
504
  });
496
505
  this.subscriptions.add(subscription);
@@ -590,7 +599,7 @@ var ObservableQuery = (function (_super) {
590
599
  if (pollingInfo && pollingInfo.interval === pollInterval) {
591
600
  return;
592
601
  }
593
- globals.invariant(pollInterval, 23);
602
+ globals.invariant(pollInterval, 24);
594
603
  var info = pollingInfo || (this.pollingInfo = {});
595
604
  info.interval = pollInterval;
596
605
  var maybeFetch = function () {
@@ -693,8 +702,7 @@ var ObservableQuery = (function (_super) {
693
702
  return concast;
694
703
  };
695
704
  ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {
696
- return this.reobserveAsConcast(newOptions, newNetworkStatus)
697
- .promise;
705
+ return utilities.preventUnhandledRejection(this.reobserveAsConcast(newOptions, newNetworkStatus).promise.then(this.maskResult));
698
706
  };
699
707
  ObservableQuery.prototype.resubscribeAfterError = function () {
700
708
  var args = [];
@@ -709,7 +717,7 @@ var ObservableQuery = (function (_super) {
709
717
  };
710
718
  ObservableQuery.prototype.observe = function () {
711
719
  this.reportResult(
712
- this.getCurrentResult(false), this.variables);
720
+ this.getCurrentFullResult(false), this.variables);
713
721
  };
714
722
  ObservableQuery.prototype.reportResult = function (result, variables) {
715
723
  var lastError = this.getLastError();
@@ -718,7 +726,7 @@ var ObservableQuery = (function (_super) {
718
726
  this.updateLastResult(result, variables);
719
727
  }
720
728
  if (lastError || isDifferent) {
721
- utilities.iterateObserversSafely(this.observers, "next", result);
729
+ utilities.iterateObserversSafely(this.observers, "next", this.maskResult(result));
722
730
  }
723
731
  };
724
732
  ObservableQuery.prototype.reportError = function (error, variables) {
@@ -747,6 +755,14 @@ var ObservableQuery = (function (_super) {
747
755
  ObservableQuery.prototype.transformDocument = function (document) {
748
756
  return this.queryManager.transform(document);
749
757
  };
758
+ ObservableQuery.prototype.maskResult = function (result) {
759
+ return result && "data" in result ? tslib.__assign(tslib.__assign({}, result), { data: this.queryManager.maskOperation({
760
+ document: this.query,
761
+ data: result.data,
762
+ fetchPolicy: this.options.fetchPolicy,
763
+ id: this.queryId,
764
+ }) }) : result;
765
+ };
750
766
  return ObservableQuery;
751
767
  }(utilities.Observable));
752
768
  utilities.fixObservableSubclass(ObservableQuery);
@@ -767,11 +783,11 @@ function reobserveCacheFirst(obsQuery) {
767
783
  return obsQuery.reobserve();
768
784
  }
769
785
  function defaultSubscriptionObserverErrorCallback(error) {
770
- globalThis.__DEV__ !== false && globals.invariant.error(24, error.message, error.stack);
786
+ globalThis.__DEV__ !== false && globals.invariant.error(25, error.message, error.stack);
771
787
  }
772
788
  function logMissingFieldErrors(missing) {
773
789
  if (globalThis.__DEV__ !== false && missing) {
774
- globalThis.__DEV__ !== false && globals.invariant.debug(25, missing);
790
+ globalThis.__DEV__ !== false && globals.invariant.debug(26, missing);
775
791
  }
776
792
  }
777
793
  function skipCacheDataFor(fetchPolicy ) {
@@ -1058,6 +1074,215 @@ function shouldWriteResult(result, errorPolicy) {
1058
1074
  return writeWithErrors;
1059
1075
  }
1060
1076
 
1077
+ var disableWarningsSlot = new optimism.Slot();
1078
+ function maskOperation(data, document, cache) {
1079
+ var _a;
1080
+ if (!cache.fragmentMatches) {
1081
+ if (globalThis.__DEV__ !== false) {
1082
+ warnOnImproperCacheImplementation();
1083
+ }
1084
+ return data;
1085
+ }
1086
+ var definition = utilities.getOperationDefinition(document);
1087
+ globals.invariant(definition, 38);
1088
+ if (data == null) {
1089
+ return data;
1090
+ }
1091
+ var context = {
1092
+ operationType: definition.operation,
1093
+ operationName: (_a = definition.name) === null || _a === void 0 ? void 0 : _a.value,
1094
+ fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(document)),
1095
+ cache: cache,
1096
+ };
1097
+ var _b = maskSelectionSet(data, definition.selectionSet, context), masked = _b[0], changed = _b[1];
1098
+ if (Object.isFrozen(data)) {
1099
+ disableWarningsSlot.withValue(true, utilities.maybeDeepFreeze, [masked]);
1100
+ }
1101
+ return changed ? masked : data;
1102
+ }
1103
+ function maskFragment(data, document, cache, fragmentName) {
1104
+ if (!cache.fragmentMatches) {
1105
+ if (globalThis.__DEV__ !== false) {
1106
+ warnOnImproperCacheImplementation();
1107
+ }
1108
+ return data;
1109
+ }
1110
+ var fragments = document.definitions.filter(function (node) {
1111
+ return node.kind === graphql.Kind.FRAGMENT_DEFINITION;
1112
+ });
1113
+ if (typeof fragmentName === "undefined") {
1114
+ globals.invariant(fragments.length === 1, 39, fragments.length);
1115
+ fragmentName = fragments[0].name.value;
1116
+ }
1117
+ var fragment = fragments.find(function (fragment) { return fragment.name.value === fragmentName; });
1118
+ globals.invariant(!!fragment, 40, fragmentName);
1119
+ if (data == null) {
1120
+ return data;
1121
+ }
1122
+ if (equal.equal(data, {})) {
1123
+ return data;
1124
+ }
1125
+ var context = {
1126
+ operationType: "fragment",
1127
+ operationName: fragment.name.value,
1128
+ fragmentMap: utilities.createFragmentMap(utilities.getFragmentDefinitions(document)),
1129
+ cache: cache,
1130
+ };
1131
+ var _a = maskSelectionSet(data, fragment.selectionSet, context), masked = _a[0], changed = _a[1];
1132
+ if (Object.isFrozen(data)) {
1133
+ disableWarningsSlot.withValue(true, utilities.maybeDeepFreeze, [masked]);
1134
+ }
1135
+ return changed ? masked : data;
1136
+ }
1137
+ function maskSelectionSet(data, selectionSet, context, path) {
1138
+ if (Array.isArray(data)) {
1139
+ var changed_1 = false;
1140
+ var masked = data.map(function (item, index) {
1141
+ if (item === null) {
1142
+ return null;
1143
+ }
1144
+ var _a = maskSelectionSet(item, selectionSet, context, globalThis.__DEV__ !== false ? "".concat(path || "", "[").concat(index, "]") : void 0), masked = _a[0], itemChanged = _a[1];
1145
+ changed_1 || (changed_1 = itemChanged);
1146
+ return itemChanged ? masked : item;
1147
+ });
1148
+ return [changed_1 ? masked : data, changed_1];
1149
+ }
1150
+ var result = selectionSet.selections.reduce(function (_a, selection) {
1151
+ var memo = _a[0], changed = _a[1];
1152
+ switch (selection.kind) {
1153
+ case graphql.Kind.FIELD: {
1154
+ var keyName = utilities.resultKeyNameFromField(selection);
1155
+ var childSelectionSet = selection.selectionSet;
1156
+ memo[keyName] = data[keyName];
1157
+ if (memo[keyName] === void 0) {
1158
+ delete memo[keyName];
1159
+ }
1160
+ if (keyName in memo && childSelectionSet && data[keyName] !== null) {
1161
+ var _b = maskSelectionSet(data[keyName], childSelectionSet, context, globalThis.__DEV__ !== false ? "".concat(path || "", ".").concat(keyName) : void 0), masked = _b[0], childChanged = _b[1];
1162
+ if (childChanged ||
1163
+ Object.keys(masked).length !== Object.keys(data[keyName]).length) {
1164
+ memo[keyName] = masked;
1165
+ changed = true;
1166
+ }
1167
+ }
1168
+ return [memo, changed];
1169
+ }
1170
+ case graphql.Kind.INLINE_FRAGMENT: {
1171
+ if (selection.typeCondition &&
1172
+ !context.cache.fragmentMatches(selection, data.__typename)) {
1173
+ return [memo, changed];
1174
+ }
1175
+ var _c = maskSelectionSet(data, selection.selectionSet, context, path), fragmentData = _c[0], childChanged = _c[1];
1176
+ return [
1177
+ tslib.__assign(tslib.__assign({}, memo), fragmentData),
1178
+ changed || childChanged,
1179
+ ];
1180
+ }
1181
+ case graphql.Kind.FRAGMENT_SPREAD: {
1182
+ var fragmentName = selection.name.value;
1183
+ var fragment = context.fragmentMap[fragmentName] ||
1184
+ (context.fragmentMap[fragmentName] =
1185
+ context.cache.lookupFragment(fragmentName));
1186
+ globals.invariant(fragment, 41, fragmentName);
1187
+ var mode = utilities.getFragmentMaskMode(selection);
1188
+ if (mode === "mask") {
1189
+ return [memo, true];
1190
+ }
1191
+ if (globalThis.__DEV__ !== false) {
1192
+ if (mode === "migrate") {
1193
+ return [
1194
+ addFieldAccessorWarnings(memo, data, fragment.selectionSet, path || "", context),
1195
+ true,
1196
+ ];
1197
+ }
1198
+ }
1199
+ var _d = maskSelectionSet(data, fragment.selectionSet, context, path), fragmentData = _d[0], changed_2 = _d[1];
1200
+ return [tslib.__assign(tslib.__assign({}, memo), fragmentData), changed_2];
1201
+ }
1202
+ }
1203
+ }, [Object.create(null), false]);
1204
+ if (data && "__typename" in data && !("__typename" in result[0])) {
1205
+ result[0].__typename = data.__typename;
1206
+ }
1207
+ return result;
1208
+ }
1209
+ function addFieldAccessorWarnings(memo, data, selectionSetNode, path, context) {
1210
+ if (Array.isArray(data)) {
1211
+ return data.map(function (item, index) {
1212
+ return addFieldAccessorWarnings(memo[index] || Object.create(null), item, selectionSetNode, "".concat(path, "[").concat(index, "]"), context);
1213
+ });
1214
+ }
1215
+ return selectionSetNode.selections.reduce(function (memo, selection) {
1216
+ switch (selection.kind) {
1217
+ case graphql.Kind.FIELD: {
1218
+ var keyName = utilities.resultKeyNameFromField(selection);
1219
+ var childSelectionSet = selection.selectionSet;
1220
+ if (keyName in memo) {
1221
+ return memo;
1222
+ }
1223
+ var value = data[keyName];
1224
+ if (childSelectionSet) {
1225
+ value = addFieldAccessorWarnings(memo[keyName] || Object.create(null), data[keyName], childSelectionSet, "".concat(path, ".").concat(keyName), context);
1226
+ }
1227
+ if (globalThis.__DEV__ !== false) {
1228
+ addAccessorWarning(memo, value, keyName, path, context);
1229
+ }
1230
+ if (!(globalThis.__DEV__ !== false)) {
1231
+ memo[keyName] = data[keyName];
1232
+ }
1233
+ return memo;
1234
+ }
1235
+ case graphql.Kind.INLINE_FRAGMENT: {
1236
+ return addFieldAccessorWarnings(memo, data, selection.selectionSet, path, context);
1237
+ }
1238
+ case graphql.Kind.FRAGMENT_SPREAD: {
1239
+ var fragment = context.fragmentMap[selection.name.value];
1240
+ var mode = utilities.getFragmentMaskMode(selection);
1241
+ if (mode === "mask") {
1242
+ return memo;
1243
+ }
1244
+ if (mode === "unmask") {
1245
+ var fragmentData = maskSelectionSet(data, fragment.selectionSet, context, path)[0];
1246
+ return Object.assign(memo, fragmentData);
1247
+ }
1248
+ return addFieldAccessorWarnings(memo, data, fragment.selectionSet, path, context);
1249
+ }
1250
+ }
1251
+ }, memo);
1252
+ }
1253
+ function addAccessorWarning(data, value, fieldName, path, context) {
1254
+ if (value === void 0) {
1255
+ return;
1256
+ }
1257
+ var getValue = function () {
1258
+ if (disableWarningsSlot.getValue()) {
1259
+ return value;
1260
+ }
1261
+ globalThis.__DEV__ !== false && globals.invariant.warn(42, context.operationName ?
1262
+ "".concat(context.operationType, " '").concat(context.operationName, "'")
1263
+ : "anonymous ".concat(context.operationType), "".concat(path, ".").concat(fieldName).replace(/^\./, ""));
1264
+ getValue = function () { return value; };
1265
+ return value;
1266
+ };
1267
+ Object.defineProperty(data, fieldName, {
1268
+ get: function () {
1269
+ return getValue();
1270
+ },
1271
+ set: function (value) {
1272
+ getValue = function () { return value; };
1273
+ },
1274
+ enumerable: true,
1275
+ configurable: true,
1276
+ });
1277
+ }
1278
+ var issuedWarning = false;
1279
+ function warnOnImproperCacheImplementation() {
1280
+ if (!issuedWarning) {
1281
+ issuedWarning = true;
1282
+ globalThis.__DEV__ !== false && globals.invariant.warn(43);
1283
+ }
1284
+ }
1285
+
1061
1286
  var hasOwnProperty = Object.prototype.hasOwnProperty;
1062
1287
  var IGNORE = Object.create(null);
1063
1288
  var QueryManager = (function () {
@@ -1072,6 +1297,7 @@ var QueryManager = (function () {
1072
1297
  this.requestIdCounter = 1;
1073
1298
  this.mutationIdCounter = 1;
1074
1299
  this.inFlightLinkObservables = new trie.Trie(false);
1300
+ this.noCacheWarningsByQueryId = new Set();
1075
1301
  var defaultDocumentTransform = new utilities.DocumentTransform(function (document) { return _this.cache.transformDocument(document); },
1076
1302
  { cache: false });
1077
1303
  this.cache = options.cache;
@@ -1082,6 +1308,7 @@ var QueryManager = (function () {
1082
1308
  this.localState = options.localState;
1083
1309
  this.ssrMode = options.ssrMode;
1084
1310
  this.assumeImmutableResults = options.assumeImmutableResults;
1311
+ this.dataMasking = options.dataMasking;
1085
1312
  var documentTransform = options.documentTransform;
1086
1313
  this.documentTransform =
1087
1314
  documentTransform ?
@@ -1099,7 +1326,7 @@ var QueryManager = (function () {
1099
1326
  this.queries.forEach(function (_info, queryId) {
1100
1327
  _this.stopQueryNoBroadcast(queryId);
1101
1328
  });
1102
- this.cancelPendingFetches(globals.newInvariantError(26));
1329
+ this.cancelPendingFetches(globals.newInvariantError(27));
1103
1330
  };
1104
1331
  QueryManager.prototype.cancelPendingFetches = function (error) {
1105
1332
  this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });
@@ -1113,8 +1340,8 @@ var QueryManager = (function () {
1113
1340
  return tslib.__generator(this, function (_j) {
1114
1341
  switch (_j.label) {
1115
1342
  case 0:
1116
- globals.invariant(mutation, 27);
1117
- globals.invariant(fetchPolicy === "network-only" || fetchPolicy === "no-cache", 28);
1343
+ globals.invariant(mutation, 28);
1344
+ globals.invariant(fetchPolicy === "network-only" || fetchPolicy === "no-cache", 29);
1118
1345
  mutationId = this.generateMutationId();
1119
1346
  mutation = this.cache.transformForLink(this.transform(mutation));
1120
1347
  hasClientExports = this.getDocumentInfo(mutation).hasClientExports;
@@ -1184,7 +1411,12 @@ var QueryManager = (function () {
1184
1411
  next: function (storeResult) {
1185
1412
  self.broadcastQueries();
1186
1413
  if (!("hasNext" in storeResult) || storeResult.hasNext === false) {
1187
- resolve(storeResult);
1414
+ resolve(tslib.__assign(tslib.__assign({}, storeResult), { data: self.maskOperation({
1415
+ document: mutation,
1416
+ data: storeResult.data,
1417
+ fetchPolicy: fetchPolicy,
1418
+ id: mutationId,
1419
+ }) }));
1188
1420
  }
1189
1421
  },
1190
1422
  error: function (err) {
@@ -1390,11 +1622,13 @@ var QueryManager = (function () {
1390
1622
  hasClientExports: utilities.hasClientExports(document),
1391
1623
  hasForcedResolvers: this.localState.shouldForceResolvers(document),
1392
1624
  hasNonreactiveDirective: utilities.hasDirectives(["nonreactive"], document),
1625
+ nonReactiveQuery: utilities.addNonReactiveToNamedFragments(document),
1393
1626
  clientQuery: this.localState.clientQuery(document),
1394
1627
  serverQuery: utilities.removeDirectivesFromDocument([
1395
1628
  { name: "client", remove: true },
1396
1629
  { name: "connection" },
1397
1630
  { name: "nonreactive" },
1631
+ { name: "unmask" },
1398
1632
  ], document),
1399
1633
  defaultVars: utilities.getDefaultValues(utilities.getOperationDefinition(document)),
1400
1634
  asQuery: tslib.__assign(tslib.__assign({}, document), { definitions: document.definitions.map(function (def) {
@@ -1436,11 +1670,21 @@ var QueryManager = (function () {
1436
1670
  QueryManager.prototype.query = function (options, queryId) {
1437
1671
  var _this = this;
1438
1672
  if (queryId === void 0) { queryId = this.generateQueryId(); }
1439
- globals.invariant(options.query, 29);
1440
- globals.invariant(options.query.kind === "Document", 30);
1441
- globals.invariant(!options.returnPartialData, 31);
1442
- globals.invariant(!options.pollInterval, 32);
1443
- return this.fetchQuery(queryId, tslib.__assign(tslib.__assign({}, options), { query: this.transform(options.query) })).finally(function () { return _this.stopQuery(queryId); });
1673
+ globals.invariant(options.query, 30);
1674
+ globals.invariant(options.query.kind === "Document", 31);
1675
+ globals.invariant(!options.returnPartialData, 32);
1676
+ globals.invariant(!options.pollInterval, 33);
1677
+ var query = this.transform(options.query);
1678
+ return this.fetchQuery(queryId, tslib.__assign(tslib.__assign({}, options), { query: query }))
1679
+ .then(function (result) {
1680
+ return result && tslib.__assign(tslib.__assign({}, result), { data: _this.maskOperation({
1681
+ document: query,
1682
+ data: result.data,
1683
+ fetchPolicy: options.fetchPolicy,
1684
+ id: queryId,
1685
+ }) });
1686
+ })
1687
+ .finally(function () { return _this.stopQuery(queryId); });
1444
1688
  };
1445
1689
  QueryManager.prototype.generateQueryId = function () {
1446
1690
  return String(this.queryIdCounter++);
@@ -1464,7 +1708,7 @@ var QueryManager = (function () {
1464
1708
  if (options === void 0) { options = {
1465
1709
  discardWatches: true,
1466
1710
  }; }
1467
- this.cancelPendingFetches(globals.newInvariantError(33));
1711
+ this.cancelPendingFetches(globals.newInvariantError(34));
1468
1712
  this.queries.forEach(function (queryInfo) {
1469
1713
  if (queryInfo.observableQuery) {
1470
1714
  queryInfo.networkStatus = exports.NetworkStatus.loading;
@@ -1540,7 +1784,7 @@ var QueryManager = (function () {
1540
1784
  if (globalThis.__DEV__ !== false && queryNamesAndDocs.size) {
1541
1785
  queryNamesAndDocs.forEach(function (included, nameOrDoc) {
1542
1786
  if (!included) {
1543
- globalThis.__DEV__ !== false && globals.invariant.warn(typeof nameOrDoc === "string" ? 34 : 35, nameOrDoc);
1787
+ globalThis.__DEV__ !== false && globals.invariant.warn(typeof nameOrDoc === "string" ? 35 : 36, nameOrDoc);
1544
1788
  }
1545
1789
  });
1546
1790
  }
@@ -1565,9 +1809,10 @@ var QueryManager = (function () {
1565
1809
  QueryManager.prototype.setObservableQuery = function (observableQuery) {
1566
1810
  this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);
1567
1811
  };
1568
- QueryManager.prototype.startGraphQLSubscription = function (_a) {
1812
+ QueryManager.prototype.startGraphQLSubscription = function (options) {
1569
1813
  var _this = this;
1570
- var query = _a.query, fetchPolicy = _a.fetchPolicy, _b = _a.errorPolicy, errorPolicy = _b === void 0 ? "none" : _b, variables = _a.variables, _c = _a.context, context = _c === void 0 ? {} : _c, _d = _a.extensions, extensions = _d === void 0 ? {} : _d;
1814
+ var query = options.query, variables = options.variables;
1815
+ var fetchPolicy = options.fetchPolicy, _a = options.errorPolicy, errorPolicy = _a === void 0 ? "none" : _a, _b = options.context, context = _b === void 0 ? {} : _b, _c = options.extensions, extensions = _c === void 0 ? {} : _c;
1571
1816
  query = this.transform(query);
1572
1817
  variables = this.getVariables(query, variables);
1573
1818
  var makeObservable = function (variables) {
@@ -1849,6 +2094,34 @@ var QueryManager = (function () {
1849
2094
  }
1850
2095
  return results;
1851
2096
  };
2097
+ QueryManager.prototype.maskOperation = function (options) {
2098
+ var _a, _b, _c;
2099
+ var document = options.document, data = options.data;
2100
+ if (globalThis.__DEV__ !== false) {
2101
+ var fetchPolicy = options.fetchPolicy, id = options.id;
2102
+ var operationType = (_a = utilities.getOperationDefinition(document)) === null || _a === void 0 ? void 0 : _a.operation;
2103
+ var operationId = ((_b = operationType === null || operationType === void 0 ? void 0 : operationType[0]) !== null && _b !== void 0 ? _b : "o") + id;
2104
+ if (this.dataMasking &&
2105
+ fetchPolicy === "no-cache" &&
2106
+ !utilities.isFullyUnmaskedOperation(document) &&
2107
+ !this.noCacheWarningsByQueryId.has(operationId)) {
2108
+ this.noCacheWarningsByQueryId.add(operationId);
2109
+ globalThis.__DEV__ !== false && globals.invariant.warn(
2110
+ 37,
2111
+ (_c = utilities.getOperationName(document)) !== null && _c !== void 0 ? _c : "Unnamed ".concat(operationType !== null && operationType !== void 0 ? operationType : "operation")
2112
+ );
2113
+ }
2114
+ }
2115
+ return (this.dataMasking ?
2116
+ maskOperation(data, document, this.cache)
2117
+ : data);
2118
+ };
2119
+ QueryManager.prototype.maskFragment = function (options) {
2120
+ var data = options.data, fragment = options.fragment, fragmentName = options.fragmentName;
2121
+ return this.dataMasking ?
2122
+ maskFragment(data, fragment, this.cache, fragmentName)
2123
+ : data;
2124
+ };
1852
2125
  QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a,
1853
2126
  networkStatus) {
1854
2127
  var _this = this;
@@ -2149,7 +2422,7 @@ var LocalState = (function () {
2149
2422
  }
2150
2423
  else {
2151
2424
  fragment = fragmentMap[selection.name.value];
2152
- globals.invariant(fragment, 18, selection.name.value);
2425
+ globals.invariant(fragment, 19, selection.name.value);
2153
2426
  }
2154
2427
  if (fragment && fragment.typeCondition) {
2155
2428
  typeCondition = fragment.typeCondition.name.value;
@@ -2263,7 +2536,7 @@ var LocalState = (function () {
2263
2536
  },
2264
2537
  FragmentSpread: function (spread, _, __, ___, ancestors) {
2265
2538
  var fragment = fragmentMap[spread.name.value];
2266
- globals.invariant(fragment, 19, spread.name.value);
2539
+ globals.invariant(fragment, 20, spread.name.value);
2267
2540
  var fragmentSelections = collectByDefinition(fragment);
2268
2541
  if (fragmentSelections.size > 0) {
2269
2542
  ancestors.forEach(function (node) {
@@ -2366,10 +2639,10 @@ var ApolloClient = (function () {
2366
2639
  this.resetStoreCallbacks = [];
2367
2640
  this.clearStoreCallbacks = [];
2368
2641
  if (!options.cache) {
2369
- throw globals.newInvariantError(15);
2642
+ throw globals.newInvariantError(16);
2370
2643
  }
2371
2644
  var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, documentTransform = options.documentTransform, _b = options.ssrMode, ssrMode = _b === void 0 ? false : _b, _c = options.ssrForceFetchDelay, ssrForceFetchDelay = _c === void 0 ? 0 : _c,
2372
- connectToDevTools = options.connectToDevTools, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, defaultContext = options.defaultContext, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? cache.assumeImmutableResults : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version, devtools = options.devtools;
2645
+ connectToDevTools = options.connectToDevTools, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, defaultContext = options.defaultContext, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? cache.assumeImmutableResults : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version, devtools = options.devtools, dataMasking = options.dataMasking;
2373
2646
  var link = options.link;
2374
2647
  if (!link) {
2375
2648
  link =
@@ -2409,6 +2682,7 @@ var ApolloClient = (function () {
2409
2682
  documentTransform: documentTransform,
2410
2683
  queryDeduplication: queryDeduplication,
2411
2684
  ssrMode: ssrMode,
2685
+ dataMasking: !!dataMasking,
2412
2686
  clientAwareness: {
2413
2687
  name: clientAwarenessName,
2414
2688
  version: clientAwarenessVersion,
@@ -2497,7 +2771,7 @@ var ApolloClient = (function () {
2497
2771
  if (this.defaultOptions.query) {
2498
2772
  options = utilities.mergeOptions(this.defaultOptions.query, options);
2499
2773
  }
2500
- globals.invariant(options.fetchPolicy !== "cache-and-network", 16);
2774
+ globals.invariant(options.fetchPolicy !== "cache-and-network", 17);
2501
2775
  if (this.disableNetworkFetches && options.fetchPolicy === "network-only") {
2502
2776
  options = tslib.__assign(tslib.__assign({}, options), { fetchPolicy: "cache-first" });
2503
2777
  }
@@ -2510,14 +2784,24 @@ var ApolloClient = (function () {
2510
2784
  return this.queryManager.mutate(options);
2511
2785
  };
2512
2786
  ApolloClient.prototype.subscribe = function (options) {
2513
- return this.queryManager.startGraphQLSubscription(options);
2787
+ var _this = this;
2788
+ var id = this.queryManager.generateQueryId();
2789
+ return this.queryManager
2790
+ .startGraphQLSubscription(options)
2791
+ .map(function (result) { return (tslib.__assign(tslib.__assign({}, result), { data: _this.queryManager.maskOperation({
2792
+ document: options.query,
2793
+ data: result.data,
2794
+ fetchPolicy: options.fetchPolicy,
2795
+ id: id,
2796
+ }) })); });
2514
2797
  };
2515
2798
  ApolloClient.prototype.readQuery = function (options, optimistic) {
2516
2799
  if (optimistic === void 0) { optimistic = false; }
2517
2800
  return this.cache.readQuery(options, optimistic);
2518
2801
  };
2519
2802
  ApolloClient.prototype.watchFragment = function (options) {
2520
- return this.cache.watchFragment(options);
2803
+ var _a;
2804
+ return this.cache.watchFragment(tslib.__assign(tslib.__assign({}, options), (_a = {}, _a[Symbol.for("apollo.dataMasking")] = this.queryManager.dataMasking, _a)));
2521
2805
  };
2522
2806
  ApolloClient.prototype.readFragment = function (options, optimistic) {
2523
2807
  if (optimistic === void 0) { optimistic = false; }
@@ -2593,7 +2877,7 @@ var ApolloClient = (function () {
2593
2877
  result.queries = queries;
2594
2878
  result.results = results;
2595
2879
  result.catch(function (error) {
2596
- globalThis.__DEV__ !== false && globals.invariant.debug(17, error);
2880
+ globalThis.__DEV__ !== false && globals.invariant.debug(18, error);
2597
2881
  });
2598
2882
  return result;
2599
2883
  };
package/core/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from "../link/core/index.js";
14
14
  export * from "../link/http/index.js";
15
15
  export type { ServerError } from "../link/utils/index.js";
16
16
  export { fromError, toPromise, fromPromise, throwServerError, } from "../link/utils/index.js";
17
+ export type { DataMasking, FragmentType, Masked, MaskedDocumentNode, MaybeMasked, Unmasked, } from "../masking/index.js";
17
18
  export type { DocumentTransformCacheKey, Observer, ObservableSubscription, Reference, StoreObject, } from "../utilities/index.js";
18
19
  export { DocumentTransform, Observable, isReference, makeReference, } from "../utilities/index.js";
19
20
  import { setVerbosity } from "ts-invariant";
package/core/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,UAAU;AAGV,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAK/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAcvD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAoBhE,OAAO,EACL,KAAK,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,OAAO,GACR,MAAM,mBAAmB,CAAC;AAE3B,cAAc,4BAA4B,CAAC;AAE3C,UAAU;AAEV,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAWhC,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,gBAAgB;AAEhB,yEAAyE;AACzE,qEAAqE;AACrE,uEAAuE;AACvE,6DAA6D;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,CAAC;AAC3C,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEzC,0DAA0D;AAC1D,qEAAqE;AACrE,sEAAsE;AACtE,yEAAyE;AACzE,yCAAyC;AACzC,wEAAwE;AACxE,6EAA6E;AAC7E,8EAA8E;AAC9E,sEAAsE;AACtE,qEAAqE;AACrE,4EAA4E;AAC5E,6BAA6B;AAC7B,OAAO,EACL,GAAG,EACH,WAAW,EACX,uBAAuB,EACvB,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,aAAa,CAAC","sourcesContent":["/* Core */\n\nexport type { ApolloClientOptions, DefaultOptions } from \"./ApolloClient.js\";\nexport { ApolloClient, mergeOptions } from \"./ApolloClient.js\";\nexport type {\n FetchMoreOptions,\n UpdateQueryOptions,\n} from \"./ObservableQuery.js\";\nexport { ObservableQuery } from \"./ObservableQuery.js\";\nexport type {\n QueryOptions,\n WatchQueryOptions,\n MutationOptions,\n SubscriptionOptions,\n FetchPolicy,\n WatchQueryFetchPolicy,\n MutationFetchPolicy,\n RefetchWritePolicy,\n ErrorPolicy,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n} from \"./watchQueryOptions.js\";\nexport { NetworkStatus, isNetworkRequestSettled } from \"./networkStatus.js\";\nexport * from \"./types.js\";\nexport type { Resolver, FragmentMatcher } from \"./LocalState.js\";\nexport { isApolloError, ApolloError } from \"../errors/index.js\";\n/* Cache */\n\nexport type {\n // All the exports (types) from ../cache, minus cacheSlot,\n // which we want to keep semi-private.\n Transaction,\n DataProxy,\n InMemoryCacheConfig,\n ReactiveVar,\n TypePolicies,\n TypePolicy,\n FieldPolicy,\n FieldReadFunction,\n FieldMergeFunction,\n FieldFunctionOptions,\n PossibleTypesMap,\n WatchFragmentOptions,\n WatchFragmentResult,\n} from \"../cache/index.js\";\nexport {\n Cache,\n ApolloCache,\n InMemoryCache,\n MissingFieldError,\n defaultDataIdFromObject,\n makeVar,\n} from \"../cache/index.js\";\n\nexport * from \"../cache/inmemory/types.js\";\n\n/* Link */\n\nexport * from \"../link/core/index.js\";\nexport * from \"../link/http/index.js\";\nexport type { ServerError } from \"../link/utils/index.js\";\nexport {\n fromError,\n toPromise,\n fromPromise,\n throwServerError,\n} from \"../link/utils/index.js\";\n\n/* Utilities */\n\nexport type {\n DocumentTransformCacheKey,\n Observer,\n ObservableSubscription,\n Reference,\n StoreObject,\n} from \"../utilities/index.js\";\nexport {\n DocumentTransform,\n Observable,\n isReference,\n makeReference,\n} from \"../utilities/index.js\";\n\n/* Supporting */\n\n// The verbosity of invariant.{log,warn,error} can be controlled globally\n// (for anyone using the same ts-invariant package) by passing \"log\",\n// \"warn\", \"error\", or \"silent\" to setVerbosity (\"log\" is the default).\n// Note that all invariant.* logging is hidden in production.\nimport { setVerbosity } from \"ts-invariant\";\nexport { setVerbosity as setLogVerbosity };\nsetVerbosity(__DEV__ ? \"log\" : \"silent\");\n\n// Note that importing `gql` by itself, then destructuring\n// additional properties separately before exporting, is intentional.\n// Due to the way the `graphql-tag` library is setup, certain bundlers\n// can't find the properties added to the exported `gql` function without\n// additional guidance (e.g. Rollup - see\n// https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module).\n// Instead of having people that are using bundlers with `@apollo/client` add\n// extra bundler config to help `graphql-tag` exports be found (which would be\n// awkward since they aren't importing `graphql-tag` themselves), this\n// workaround of pulling the extra properties off the `gql` function,\n// then re-exporting them separately, helps keeps bundlers happy without any\n// additional config changes.\nexport {\n gql,\n resetCaches,\n disableFragmentWarnings,\n enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables,\n} from \"graphql-tag\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,UAAU;AAGV,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAK/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAcvD,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAoBhE,OAAO,EACL,KAAK,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,OAAO,GACR,MAAM,mBAAmB,CAAC;AAE3B,cAAc,4BAA4B,CAAC;AAE3C,UAAU;AAEV,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAqBhC,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,gBAAgB;AAEhB,yEAAyE;AACzE,qEAAqE;AACrE,uEAAuE;AACvE,6DAA6D;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,CAAC;AAC3C,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEzC,0DAA0D;AAC1D,qEAAqE;AACrE,sEAAsE;AACtE,yEAAyE;AACzE,yCAAyC;AACzC,wEAAwE;AACxE,6EAA6E;AAC7E,8EAA8E;AAC9E,sEAAsE;AACtE,qEAAqE;AACrE,4EAA4E;AAC5E,6BAA6B;AAC7B,OAAO,EACL,GAAG,EACH,WAAW,EACX,uBAAuB,EACvB,mCAAmC,EACnC,oCAAoC,GACrC,MAAM,aAAa,CAAC","sourcesContent":["/* Core */\n\nexport type { ApolloClientOptions, DefaultOptions } from \"./ApolloClient.js\";\nexport { ApolloClient, mergeOptions } from \"./ApolloClient.js\";\nexport type {\n FetchMoreOptions,\n UpdateQueryOptions,\n} from \"./ObservableQuery.js\";\nexport { ObservableQuery } from \"./ObservableQuery.js\";\nexport type {\n QueryOptions,\n WatchQueryOptions,\n MutationOptions,\n SubscriptionOptions,\n FetchPolicy,\n WatchQueryFetchPolicy,\n MutationFetchPolicy,\n RefetchWritePolicy,\n ErrorPolicy,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n} from \"./watchQueryOptions.js\";\nexport { NetworkStatus, isNetworkRequestSettled } from \"./networkStatus.js\";\nexport * from \"./types.js\";\nexport type { Resolver, FragmentMatcher } from \"./LocalState.js\";\nexport { isApolloError, ApolloError } from \"../errors/index.js\";\n/* Cache */\n\nexport type {\n // All the exports (types) from ../cache, minus cacheSlot,\n // which we want to keep semi-private.\n Transaction,\n DataProxy,\n InMemoryCacheConfig,\n ReactiveVar,\n TypePolicies,\n TypePolicy,\n FieldPolicy,\n FieldReadFunction,\n FieldMergeFunction,\n FieldFunctionOptions,\n PossibleTypesMap,\n WatchFragmentOptions,\n WatchFragmentResult,\n} from \"../cache/index.js\";\nexport {\n Cache,\n ApolloCache,\n InMemoryCache,\n MissingFieldError,\n defaultDataIdFromObject,\n makeVar,\n} from \"../cache/index.js\";\n\nexport * from \"../cache/inmemory/types.js\";\n\n/* Link */\n\nexport * from \"../link/core/index.js\";\nexport * from \"../link/http/index.js\";\nexport type { ServerError } from \"../link/utils/index.js\";\nexport {\n fromError,\n toPromise,\n fromPromise,\n throwServerError,\n} from \"../link/utils/index.js\";\n\n/* Masking */\nexport type {\n DataMasking,\n FragmentType,\n Masked,\n MaskedDocumentNode,\n MaybeMasked,\n Unmasked,\n} from \"../masking/index.js\";\n\n/* Utilities */\n\nexport type {\n DocumentTransformCacheKey,\n Observer,\n ObservableSubscription,\n Reference,\n StoreObject,\n} from \"../utilities/index.js\";\nexport {\n DocumentTransform,\n Observable,\n isReference,\n makeReference,\n} from \"../utilities/index.js\";\n\n/* Supporting */\n\n// The verbosity of invariant.{log,warn,error} can be controlled globally\n// (for anyone using the same ts-invariant package) by passing \"log\",\n// \"warn\", \"error\", or \"silent\" to setVerbosity (\"log\" is the default).\n// Note that all invariant.* logging is hidden in production.\nimport { setVerbosity } from \"ts-invariant\";\nexport { setVerbosity as setLogVerbosity };\nsetVerbosity(__DEV__ ? \"log\" : \"silent\");\n\n// Note that importing `gql` by itself, then destructuring\n// additional properties separately before exporting, is intentional.\n// Due to the way the `graphql-tag` library is setup, certain bundlers\n// can't find the properties added to the exported `gql` function without\n// additional guidance (e.g. Rollup - see\n// https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module).\n// Instead of having people that are using bundlers with `@apollo/client` add\n// extra bundler config to help `graphql-tag` exports be found (which would be\n// awkward since they aren't importing `graphql-tag` themselves), this\n// workaround of pulling the extra properties off the `gql` function,\n// then re-exporting them separately, helps keeps bundlers happy without any\n// additional config changes.\nexport {\n gql,\n resetCaches,\n disableFragmentWarnings,\n enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables,\n} from \"graphql-tag\";\n"]}
@@ -0,0 +1,10 @@
1
+ import type { ApolloCache, DocumentNode, TypedDocumentNode } from "./index.js";
2
+ export declare const disableWarningsSlot: {
3
+ readonly id: string;
4
+ hasValue(): boolean;
5
+ getValue(): boolean | undefined;
6
+ withValue<TResult, TArgs extends any[], TThis = any>(value: boolean, callback: (this: TThis, ...args: TArgs) => TResult, args?: TArgs | undefined, thisArg?: TThis | undefined): TResult;
7
+ };
8
+ export declare function maskOperation<TData = unknown>(data: TData, document: DocumentNode | TypedDocumentNode<TData>, cache: ApolloCache<unknown>): TData;
9
+ export declare function maskFragment<TData = unknown>(data: TData, document: TypedDocumentNode<TData> | DocumentNode, cache: ApolloCache<unknown>, fragmentName?: string): TData;
10
+ //# sourceMappingURL=masking.d.ts.map