@apollo/client 4.3.0-alpha.4 → 4.3.0-alpha.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 (150) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +3 -7
  3. package/__cjs/cache/core/cache.cjs +1 -1
  4. package/__cjs/cache/core/cache.cjs.map +1 -1
  5. package/__cjs/cache/core/cache.d.cts +5 -1
  6. package/__cjs/cache/inmemory/entityStore.cjs +3 -3
  7. package/__cjs/cache/inmemory/inMemoryCache.cjs +0 -4
  8. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  9. package/__cjs/cache/inmemory/inMemoryCache.d.cts +3 -4
  10. package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
  11. package/__cjs/cache/inmemory/policies.cjs +4 -4
  12. package/__cjs/cache/inmemory/readFromStore.cjs +71 -54
  13. package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
  14. package/__cjs/cache/inmemory/readFromStore.d.cts +1 -1
  15. package/__cjs/cache/inmemory/types.d.cts +1 -2
  16. package/__cjs/cache/inmemory/writeToStore.cjs +4 -4
  17. package/__cjs/core/ApolloClient.cjs +21 -22
  18. package/__cjs/core/ApolloClient.cjs.map +1 -1
  19. package/__cjs/core/ApolloClient.d.cts +44 -10
  20. package/__cjs/core/ObservableQuery.cjs +46 -5
  21. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  22. package/__cjs/core/ObservableQuery.d.cts +12 -1
  23. package/__cjs/core/QueryInfo.cjs +177 -154
  24. package/__cjs/core/QueryInfo.cjs.map +1 -1
  25. package/__cjs/core/QueryInfo.d.cts +13 -3
  26. package/__cjs/core/QueryManager.cjs +49 -27
  27. package/__cjs/core/QueryManager.cjs.map +1 -1
  28. package/__cjs/core/RefetchEventManager.cjs +3 -3
  29. package/__cjs/core/dataStateErrorCache.cjs +12 -0
  30. package/__cjs/core/dataStateErrorCache.cjs.map +1 -0
  31. package/__cjs/core/dataStateErrorCache.d.cts +3 -0
  32. package/__cjs/core/types.d.cts +2 -0
  33. package/__cjs/incremental/handlers/graphql17Alpha9.cjs +34 -11
  34. package/__cjs/incremental/handlers/graphql17Alpha9.cjs.map +1 -1
  35. package/__cjs/incremental/handlers/graphql17Alpha9.d.cts +26 -3
  36. package/__cjs/incremental/types.d.cts +41 -3
  37. package/__cjs/invariantErrorCodes.cjs +50 -31
  38. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  39. package/__cjs/react/hooks/useBackgroundQuery.d.cts +100 -47
  40. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  41. package/__cjs/react/hooks/useLazyQuery.d.cts +26 -20
  42. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  43. package/__cjs/react/hooks/useLoadableQuery.d.cts +23 -15
  44. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  45. package/__cjs/react/hooks/useMutation.d.cts +10 -7
  46. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  47. package/__cjs/react/hooks/useQuery.d.cts +74 -32
  48. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  49. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  50. package/__cjs/react/hooks/useSuspenseQuery.d.cts +83 -34
  51. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  52. package/__cjs/react/internal/types.d.cts +14 -3
  53. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  54. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +20 -5
  55. package/__cjs/testing/core/mocking/mockLink.cjs +21 -1
  56. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  57. package/__cjs/testing/core/mocking/mockLink.d.cts +1 -2
  58. package/__cjs/utilities/internal/addDeferFragmentLabels.cjs +33 -0
  59. package/__cjs/utilities/internal/addDeferFragmentLabels.cjs.map +1 -0
  60. package/__cjs/utilities/internal/addDeferFragmentLabels.d.cts +3 -0
  61. package/__cjs/utilities/internal/getDirectiveArgValue.cjs +19 -0
  62. package/__cjs/utilities/internal/getDirectiveArgValue.cjs.map +1 -0
  63. package/__cjs/utilities/internal/getDirectiveArgValue.d.cts +9 -0
  64. package/__cjs/utilities/internal/index.cjs +6 -2
  65. package/__cjs/utilities/internal/index.cjs.map +1 -1
  66. package/__cjs/utilities/internal/index.d.cts +2 -0
  67. package/__cjs/version.cjs +1 -1
  68. package/cache/core/cache.d.ts +5 -1
  69. package/cache/core/cache.js +1 -1
  70. package/cache/core/cache.js.map +1 -1
  71. package/cache/inmemory/entityStore.js +3 -3
  72. package/cache/inmemory/inMemoryCache.d.ts +3 -4
  73. package/cache/inmemory/inMemoryCache.js +1 -5
  74. package/cache/inmemory/inMemoryCache.js.map +1 -1
  75. package/cache/inmemory/key-extractor.js +1 -1
  76. package/cache/inmemory/policies.js +4 -4
  77. package/cache/inmemory/readFromStore.d.ts +1 -1
  78. package/cache/inmemory/readFromStore.js +72 -55
  79. package/cache/inmemory/readFromStore.js.map +1 -1
  80. package/cache/inmemory/types.d.ts +1 -2
  81. package/cache/inmemory/types.js.map +1 -1
  82. package/cache/inmemory/writeToStore.js +4 -4
  83. package/core/ApolloClient.d.ts +44 -10
  84. package/core/ApolloClient.js +21 -22
  85. package/core/ApolloClient.js.map +1 -1
  86. package/core/ObservableQuery.d.ts +12 -1
  87. package/core/ObservableQuery.js +46 -5
  88. package/core/ObservableQuery.js.map +1 -1
  89. package/core/QueryInfo.d.ts +13 -3
  90. package/core/QueryInfo.js +173 -154
  91. package/core/QueryInfo.js.map +1 -1
  92. package/core/QueryManager.js +49 -27
  93. package/core/QueryManager.js.map +1 -1
  94. package/core/RefetchEventManager.js +3 -3
  95. package/core/dataStateErrorCache.d.ts +3 -0
  96. package/core/dataStateErrorCache.js +9 -0
  97. package/core/dataStateErrorCache.js.map +1 -0
  98. package/core/types.d.ts +2 -0
  99. package/core/types.js.map +1 -1
  100. package/incremental/handlers/graphql17Alpha9.d.ts +26 -3
  101. package/incremental/handlers/graphql17Alpha9.js +35 -12
  102. package/incremental/handlers/graphql17Alpha9.js.map +1 -1
  103. package/incremental/types.d.ts +41 -3
  104. package/incremental/types.js.map +1 -1
  105. package/invariantErrorCodes.js +50 -31
  106. package/package.json +1 -1
  107. package/react/hooks/useBackgroundQuery.d.ts +100 -47
  108. package/react/hooks/useBackgroundQuery.js.map +1 -1
  109. package/react/hooks/useLazyQuery.d.ts +26 -20
  110. package/react/hooks/useLazyQuery.js.map +1 -1
  111. package/react/hooks/useLoadableQuery.d.ts +23 -15
  112. package/react/hooks/useLoadableQuery.js.map +1 -1
  113. package/react/hooks/useMutation.d.ts +10 -7
  114. package/react/hooks/useMutation.js.map +1 -1
  115. package/react/hooks/useQuery.d.ts +74 -32
  116. package/react/hooks/useQuery.js.map +1 -1
  117. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  118. package/react/hooks/useSuspenseQuery.d.ts +83 -34
  119. package/react/hooks/useSuspenseQuery.js.map +1 -1
  120. package/react/hooks-compiled/useBackgroundQuery.d.ts +100 -47
  121. package/react/hooks-compiled/useBackgroundQuery.js.map +1 -1
  122. package/react/hooks-compiled/useLazyQuery.d.ts +26 -20
  123. package/react/hooks-compiled/useLazyQuery.js.map +1 -1
  124. package/react/hooks-compiled/useLoadableQuery.d.ts +23 -15
  125. package/react/hooks-compiled/useLoadableQuery.js.map +1 -1
  126. package/react/hooks-compiled/useMutation.d.ts +10 -7
  127. package/react/hooks-compiled/useMutation.js.map +1 -1
  128. package/react/hooks-compiled/useQuery.d.ts +74 -32
  129. package/react/hooks-compiled/useQuery.js.map +1 -1
  130. package/react/hooks-compiled/useQueryRefHandlers.js.map +1 -1
  131. package/react/hooks-compiled/useSuspenseQuery.d.ts +83 -34
  132. package/react/hooks-compiled/useSuspenseQuery.js.map +1 -1
  133. package/react/internal/cache/QueryReference.js.map +1 -1
  134. package/react/internal/types.d.ts +15 -4
  135. package/react/internal/types.js.map +1 -1
  136. package/react/query-preloader/createQueryPreloader.d.ts +20 -5
  137. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  138. package/testing/core/mocking/mockLink.d.ts +1 -2
  139. package/testing/core/mocking/mockLink.js +21 -1
  140. package/testing/core/mocking/mockLink.js.map +1 -1
  141. package/utilities/internal/addDeferFragmentLabels.d.ts +3 -0
  142. package/utilities/internal/addDeferFragmentLabels.js +30 -0
  143. package/utilities/internal/addDeferFragmentLabels.js.map +1 -0
  144. package/utilities/internal/getDirectiveArgValue.d.ts +9 -0
  145. package/utilities/internal/getDirectiveArgValue.js +16 -0
  146. package/utilities/internal/getDirectiveArgValue.js.map +1 -0
  147. package/utilities/internal/index.d.ts +2 -0
  148. package/utilities/internal/index.js +2 -0
  149. package/utilities/internal/index.js.map +1 -1
  150. package/version.js +1 -1
@@ -18,6 +18,7 @@ const utilities_1 = require("@apollo/client/utilities");
18
18
  const environment_1 = require("@apollo/client/utilities/environment");
19
19
  const internal_1 = require("@apollo/client/utilities/internal");
20
20
  const invariant_1 = require("@apollo/client/utilities/invariant");
21
+ const dataStateErrorCache_js_1 = require("./dataStateErrorCache.cjs");
21
22
  const networkStatus_js_1 = require("./networkStatus.cjs");
22
23
  const ObservableQuery_js_1 = require("./ObservableQuery.cjs");
23
24
  const QueryInfo_js_1 = require("./QueryInfo.cjs");
@@ -82,6 +83,12 @@ class QueryManager {
82
83
  // selections and fragments from the fragment registry.
83
84
  .concat(defaultDocumentTransform)
84
85
  : defaultDocumentTransform;
86
+ // Put the incremental transform last so custom document transforms don't
87
+ // revert changes made to the document accidentally. Adding last also
88
+ // ensures `@defer` fragments added by the fragment registry are labeled.
89
+ if (this.incrementalHandler.documentTransform) {
90
+ this.documentTransform = this.documentTransform.concat(this.incrementalHandler.documentTransform);
91
+ }
85
92
  this.defaultContext = options.defaultContext || {};
86
93
  if ((this.onBroadcast = options.onBroadcast)) {
87
94
  this.mutationStore = {};
@@ -99,7 +106,7 @@ class QueryManager {
99
106
  */
100
107
  stop() {
101
108
  this.obsQueries.forEach((oq) => oq.stop());
102
- this.cancelPendingFetches((0, invariant_1.newInvariantError)(89));
109
+ this.cancelPendingFetches((0, invariant_1.newInvariantError)(90));
103
110
  }
104
111
  cancelPendingFetches(error) {
105
112
  this.fetchCancelFns.forEach((cancel) => cancel(error));
@@ -114,7 +121,7 @@ class QueryManager {
114
121
  if (environment_1.__DEV__) {
115
122
  (0, invariant_1.invariant)(
116
123
  this.localState,
117
- 90,
124
+ 91,
118
125
  (0, internal_1.getOperationName)(mutation, "(anonymous)")
119
126
  );
120
127
  }
@@ -349,7 +356,7 @@ class QueryManager {
349
356
  // depend on values that previously existed in the data portion of the
350
357
  // store. So, we cancel the promises and observers that we have issued
351
358
  // so far and not yet resolved (in the case of queries).
352
- this.cancelPendingFetches((0, invariant_1.newInvariantError)(91));
359
+ this.cancelPendingFetches((0, invariant_1.newInvariantError)(92));
353
360
  this.obsQueries.forEach((observableQuery) => {
354
361
  // Set loading to true so listeners don't trigger unless they want
355
362
  // results with partial data.
@@ -419,10 +426,10 @@ class QueryManager {
419
426
  if (!included) {
420
427
  const queryName = queryNames.get(nameOrQueryString);
421
428
  if (queryName) {
422
- __DEV__ && invariant_1.invariant.warn(92, queryName);
429
+ __DEV__ && invariant_1.invariant.warn(93, queryName);
423
430
  }
424
431
  else {
425
- __DEV__ && invariant_1.invariant.warn(93);
432
+ __DEV__ && invariant_1.invariant.warn(94);
426
433
  }
427
434
  }
428
435
  });
@@ -451,7 +458,7 @@ class QueryManager {
451
458
  if (environment_1.__DEV__) {
452
459
  (0, invariant_1.invariant)(
453
460
  !this.getDocumentInfo(query).hasClientExports || this.localState,
454
- 94,
461
+ 95,
455
462
  (0, internal_1.getOperationName)(query, "(anonymous)")
456
463
  );
457
464
  }
@@ -596,14 +603,14 @@ class QueryManager {
596
603
  if (environment_1.__DEV__) {
597
604
  (0, invariant_1.invariant)(
598
605
  this.localState,
599
- 95,
606
+ 96,
600
607
  operation[0].toUpperCase() + operation.slice(1),
601
608
  operationName ?? "(anonymous)"
602
609
  );
603
610
  }
604
611
  (0, invariant_1.invariant)(
605
612
  !hasIncrementalDirective,
606
- 96,
613
+ 97,
607
614
  operation[0].toUpperCase() + operation.slice(1),
608
615
  operationName ?? "(anonymous)"
609
616
  );
@@ -627,7 +634,7 @@ class QueryManager {
627
634
  })),
628
635
  };
629
636
  }
630
- getResultsFromLink(options, { queryInfo, cacheWriteBehavior, observableQuery, exposeExtensions, }) {
637
+ getResultsFromLink(options, { queryInfo, cacheWriteBehavior, observableQuery, exposeExtensions, prunePendingDeferFragments, }) {
631
638
  const { errorPolicy } = options;
632
639
  // Performing transformForLink here gives this.cache a chance to fill in
633
640
  // missing fragment definitions (for example) before sending this document
@@ -642,12 +649,15 @@ class QueryManager {
642
649
  document: linkDocument,
643
650
  cacheWriteBehavior,
644
651
  returnPartialData: options.returnPartialData,
652
+ prunePendingDeferFragments,
645
653
  });
646
654
  const hasErrors = (0, internal_1.graphQLResultHasError)(result);
647
655
  if (hasErrors && errorPolicy === "none") {
648
656
  queryInfo.resetLastWrite();
649
657
  observableQuery?.["resetNotifications"]();
650
- throw new errors_1.CombinedGraphQLErrors(removeStreamDetailsFromExtensions(result));
658
+ const error = new errors_1.CombinedGraphQLErrors(removeStreamDetailsFromExtensions(result));
659
+ dataStateErrorCache_js_1.dataStateErrorCache.set(error, dataState);
660
+ throw error;
651
661
  }
652
662
  const partial = dataState !== "complete";
653
663
  const aqr = {
@@ -669,16 +679,10 @@ class QueryManager {
669
679
  if (exposeExtensions && "extensions" in result) {
670
680
  aqr[internal_1.extensionsSymbol] = result.extensions;
671
681
  }
672
- if (hasErrors) {
673
- if (errorPolicy === "none") {
674
- aqr.data = void 0;
675
- aqr.dataState = "empty";
676
- }
677
- if (errorPolicy !== "ignore") {
678
- aqr.error = new errors_1.CombinedGraphQLErrors(removeStreamDetailsFromExtensions(result));
679
- if (aqr.networkStatus !== networkStatus_js_1.NetworkStatus.streaming) {
680
- aqr.networkStatus = networkStatus_js_1.NetworkStatus.error;
681
- }
682
+ if (hasErrors && errorPolicy !== "ignore") {
683
+ aqr.error = new errors_1.CombinedGraphQLErrors(removeStreamDetailsFromExtensions(result));
684
+ if (aqr.networkStatus !== networkStatus_js_1.NetworkStatus.streaming) {
685
+ aqr.networkStatus = networkStatus_js_1.NetworkStatus.error;
682
686
  }
683
687
  }
684
688
  return aqr;
@@ -778,7 +782,7 @@ class QueryManager {
778
782
  if (environment_1.__DEV__) {
779
783
  (0, invariant_1.invariant)(
780
784
  this.localState,
781
- 97,
785
+ 98,
782
786
  (0, internal_1.getOperationName)(normalized.query, "(anonymous)")
783
787
  );
784
788
  }
@@ -954,7 +958,7 @@ class QueryManager {
954
958
  !this.noCacheWarningsByCause.has(cause)) {
955
959
  this.noCacheWarningsByCause.add(cause);
956
960
  __DEV__ && invariant_1.invariant.warn(
957
- 98,
961
+ 99,
958
962
  (0, internal_1.getOperationName)(document, `Unnamed ${operationType ?? "operation"}`)
959
963
  );
960
964
  }
@@ -1004,6 +1008,10 @@ class QueryManager {
1004
1008
  return (0, rxjs_2.of)({
1005
1009
  kind: "N",
1006
1010
  value: toResult(data),
1011
+ // Always attach the variables used for this fetch so @export
1012
+ // resolution can update ObservableQuery.options.variables and
1013
+ // resubscribe the cache watch under the correct variable set.
1014
+ resolvedVariables: variables,
1007
1015
  source: "cache",
1008
1016
  });
1009
1017
  };
@@ -1016,7 +1024,7 @@ class QueryManager {
1016
1024
  if (environment_1.__DEV__) {
1017
1025
  (0, invariant_1.invariant)(
1018
1026
  this.localState,
1019
- 99,
1027
+ 100,
1020
1028
  (0, internal_1.getOperationName)(query, "(anonymous)")
1021
1029
  );
1022
1030
  }
@@ -1033,6 +1041,10 @@ class QueryManager {
1033
1041
  }).then((resolved) => ({
1034
1042
  kind: "N",
1035
1043
  value: toResult(resolved.data || void 0),
1044
+ // Always attach the variables used for this fetch so @export
1045
+ // resolution can update ObservableQuery.options.variables and
1046
+ // resubscribe the cache watch under the correct variable set.
1047
+ resolvedVariables: variables,
1036
1048
  source: "cache",
1037
1049
  })));
1038
1050
  }
@@ -1047,7 +1059,7 @@ class QueryManager {
1047
1059
  }
1048
1060
  return fromData(data || undefined);
1049
1061
  };
1050
- const resultsFromLink = () => this.getResultsFromLink({
1062
+ const resultsFromLink = ({ prunePendingDeferFragments = true, } = {}) => this.getResultsFromLink({
1051
1063
  query,
1052
1064
  variables,
1053
1065
  context,
@@ -1060,8 +1072,13 @@ class QueryManager {
1060
1072
  queryInfo,
1061
1073
  observableQuery,
1062
1074
  exposeExtensions,
1075
+ prunePendingDeferFragments,
1063
1076
  }).pipe(validateDidEmitValue(), (0, rxjs_2.materialize)(), (0, rxjs_2.map)((result) => ({
1064
1077
  ...result,
1078
+ // Always attach the variables used for this fetch so @export
1079
+ // resolution can update ObservableQuery.options.variables and
1080
+ // resubscribe the cache watch under the correct variable set.
1081
+ resolvedVariables: variables,
1065
1082
  source: "network",
1066
1083
  })));
1067
1084
  switch (fetchPolicy) {
@@ -1087,7 +1104,7 @@ class QueryManager {
1087
1104
  if (diff.complete || returnPartialData) {
1088
1105
  return {
1089
1106
  fromLink: true,
1090
- observable: (0, rxjs_2.concat)(resultsFromCache(diff, networkStatus_js_1.NetworkStatus.loading), resultsFromLink()),
1107
+ observable: (0, rxjs_2.concat)(resultsFromCache(diff, networkStatus_js_1.NetworkStatus.loading), resultsFromLink({ prunePendingDeferFragments: false })),
1091
1108
  };
1092
1109
  }
1093
1110
  return { fromLink: true, observable: resultsFromLink() };
@@ -1098,7 +1115,12 @@ class QueryManager {
1098
1115
  observable: (0, rxjs_2.concat)(resultsFromCache(readCache(), networkStatus_js_1.NetworkStatus.ready)),
1099
1116
  };
1100
1117
  case "network-only":
1101
- return { fromLink: true, observable: resultsFromLink() };
1118
+ return {
1119
+ fromLink: true,
1120
+ observable: resultsFromLink({
1121
+ prunePendingDeferFragments: networkStatus !== networkStatus_js_1.NetworkStatus.refetch,
1122
+ }),
1123
+ };
1102
1124
  case "no-cache":
1103
1125
  return { fromLink: true, observable: resultsFromLink() };
1104
1126
  case "standby":
@@ -1114,7 +1136,7 @@ function validateDidEmitValue() {
1114
1136
  didEmitValue = true;
1115
1137
  },
1116
1138
  complete() {
1117
- (0, invariant_1.invariant)(didEmitValue, 100);
1139
+ (0, invariant_1.invariant)(didEmitValue, 101);
1118
1140
  },
1119
1141
  });
1120
1142
  }