@apollo/client 4.0.0-alpha.16 → 4.0.0-alpha.17

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 (90) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/__cjs/core/ObservableQuery.cjs +104 -48
  3. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  4. package/__cjs/core/ObservableQuery.d.cts +19 -2
  5. package/__cjs/core/QueryManager.cjs +19 -2
  6. package/__cjs/core/QueryManager.cjs.map +1 -1
  7. package/__cjs/core/index.cjs.map +1 -1
  8. package/__cjs/core/index.d.cts +1 -1
  9. package/__cjs/core/types.d.cts +25 -3
  10. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  11. package/__cjs/react/hooks/useBackgroundQuery.d.cts +50 -14
  12. package/__cjs/react/hooks/useLazyQuery.cjs +1 -0
  13. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  14. package/__cjs/react/hooks/useLazyQuery.d.cts +28 -53
  15. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  16. package/__cjs/react/hooks/useLoadableQuery.d.cts +7 -8
  17. package/__cjs/react/hooks/useQuery.cjs +3 -2
  18. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  19. package/__cjs/react/hooks/useQuery.d.cts +10 -48
  20. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  21. package/__cjs/react/hooks/useQueryRefHandlers.d.cts +2 -2
  22. package/__cjs/react/hooks/useReadQuery.cjs +1 -0
  23. package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
  24. package/__cjs/react/hooks/useReadQuery.d.cts +4 -11
  25. package/__cjs/react/hooks/useSuspenseQuery.cjs +2 -0
  26. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  27. package/__cjs/react/hooks/useSuspenseQuery.d.cts +12 -24
  28. package/__cjs/react/index.cjs.map +1 -1
  29. package/__cjs/react/index.d.cts +1 -1
  30. package/__cjs/react/internal/cache/QueryReference.cjs +7 -1
  31. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  32. package/__cjs/react/internal/cache/QueryReference.d.cts +25 -65
  33. package/__cjs/react/internal/cache/SuspenseCache.cjs.map +1 -1
  34. package/__cjs/react/internal/cache/SuspenseCache.d.cts +3 -3
  35. package/__cjs/react/internal/index.cjs.map +1 -1
  36. package/__cjs/react/internal/index.d.cts +1 -1
  37. package/__cjs/react/internal/types.d.cts +2 -2
  38. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  39. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +4 -5
  40. package/__cjs/react/ssr/prerenderStatic.cjs.map +1 -1
  41. package/__cjs/react/ssr/useSSRQuery.cjs +1 -0
  42. package/__cjs/react/ssr/useSSRQuery.cjs.map +1 -1
  43. package/__cjs/react/types/types.documentation.d.cts +12 -0
  44. package/__cjs/utilities/internal/toQueryResult.cjs.map +1 -1
  45. package/__cjs/version.cjs +1 -1
  46. package/core/ObservableQuery.d.ts +19 -2
  47. package/core/ObservableQuery.js +105 -49
  48. package/core/ObservableQuery.js.map +1 -1
  49. package/core/QueryManager.js +19 -2
  50. package/core/QueryManager.js.map +1 -1
  51. package/core/index.d.ts +1 -1
  52. package/core/index.js.map +1 -1
  53. package/core/types.d.ts +25 -3
  54. package/package.json +1 -1
  55. package/react/hooks/useBackgroundQuery.d.ts +50 -14
  56. package/react/hooks/useBackgroundQuery.js.map +1 -1
  57. package/react/hooks/useLazyQuery.d.ts +28 -53
  58. package/react/hooks/useLazyQuery.js +1 -0
  59. package/react/hooks/useLazyQuery.js.map +1 -1
  60. package/react/hooks/useLoadableQuery.d.ts +7 -8
  61. package/react/hooks/useLoadableQuery.js.map +1 -1
  62. package/react/hooks/useQuery.d.ts +10 -48
  63. package/react/hooks/useQuery.js +3 -2
  64. package/react/hooks/useQuery.js.map +1 -1
  65. package/react/hooks/useQueryRefHandlers.d.ts +2 -2
  66. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  67. package/react/hooks/useReadQuery.d.ts +4 -11
  68. package/react/hooks/useReadQuery.js +1 -0
  69. package/react/hooks/useReadQuery.js.map +1 -1
  70. package/react/hooks/useSuspenseQuery.d.ts +12 -24
  71. package/react/hooks/useSuspenseQuery.js +2 -0
  72. package/react/hooks/useSuspenseQuery.js.map +1 -1
  73. package/react/index.d.ts +1 -1
  74. package/react/index.js.map +1 -1
  75. package/react/internal/cache/QueryReference.d.ts +25 -65
  76. package/react/internal/cache/QueryReference.js +7 -1
  77. package/react/internal/cache/QueryReference.js.map +1 -1
  78. package/react/internal/cache/SuspenseCache.d.ts +3 -3
  79. package/react/internal/cache/SuspenseCache.js.map +1 -1
  80. package/react/internal/index.d.ts +1 -1
  81. package/react/internal/index.js.map +1 -1
  82. package/react/internal/types.d.ts +2 -2
  83. package/react/query-preloader/createQueryPreloader.d.ts +4 -5
  84. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  85. package/react/ssr/prerenderStatic.js.map +1 -1
  86. package/react/ssr/useSSRQuery.js +1 -0
  87. package/react/ssr/useSSRQuery.js.map +1 -1
  88. package/react/types/types.documentation.d.ts +12 -0
  89. package/utilities/internal/toQueryResult.js.map +1 -1
  90. package/version.js +1 -1
@@ -152,6 +152,22 @@ export declare namespace ObservableQuery {
152
152
  */
153
153
  lastOwnDiff?: Cache.DiffResult<TData>;
154
154
  }
155
+ /**
156
+ * Promise returned by `reobserve` and `refetch` methods.
157
+ *
158
+ * By default, if the `ObservableQuery` is not interested in the result
159
+ * of this operation anymore, the network operation will be cancelled.
160
+ *
161
+ * This has an additional `retain` method that can be used to keep the
162
+ * network operation running until it is finished nonetheless.
163
+ */
164
+ interface ResultPromise<T> extends Promise<T> {
165
+ /**
166
+ * Kepp the network operation running until it is finished, even if
167
+ * `ObservableQuery` unsubscribed from the operation.
168
+ */
169
+ retain(): this;
170
+ }
155
171
  }
156
172
  export declare class ObservableQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables> implements Subscribable<ApolloQueryResult<MaybeMasked<TData>>>, InteropObservable<ApolloQueryResult<MaybeMasked<TData>>> {
157
173
  /**
@@ -217,7 +233,7 @@ export declare class ObservableQuery<TData = unknown, TVariables extends Operati
217
233
  * @param variables - The new set of variables. If there are missing variables,
218
234
  * the previous values of those variables will be used.
219
235
  */
220
- refetch(variables?: Partial<TVariables>): Promise<QueryResult<TData>>;
236
+ refetch(variables?: Partial<TVariables>): ObservableQuery.ResultPromise<QueryResult<TData>>;
221
237
  /**
222
238
  * A function that helps you fetch the next set of results for a [paginated list field](https://www.apollographql.com/docs/react/pagination/core-api/).
223
239
  */
@@ -280,7 +296,8 @@ export declare class ObservableQuery<TData = unknown, TVariables extends Operati
280
296
  * Reevaluate the query, optionally against new options. New options will be
281
297
  * merged with the current options when given.
282
298
  */
283
- reobserve(newOptions?: Partial<ObservableQuery.Options<TData, TVariables>>): Promise<QueryResult<MaybeMasked<TData>>>;
299
+ reobserve(newOptions?: Partial<ObservableQuery.Options<TData, TVariables>>): ObservableQuery.ResultPromise<QueryResult<MaybeMasked<TData>>>;
300
+ private _reobserve;
284
301
  hasObservers(): boolean;
285
302
  private tearDownQuery;
286
303
  private transformDocument;
@@ -850,20 +850,29 @@ class QueryManager {
850
850
  }
851
851
  const aqr = {
852
852
  data: result.data,
853
+ dataState: result.data ? "complete" : "empty",
853
854
  loading: false,
854
855
  networkStatus: networkStatus_js_1.NetworkStatus.ready,
855
856
  partial: !result.data,
856
857
  };
858
+ if ((0, internal_1.isExecutionPatchResult)(result) && result.hasNext) {
859
+ aqr.dataState = "streaming";
860
+ aqr.partial = true;
861
+ }
857
862
  // In the case we start multiple network requests simulatenously, we
858
863
  // want to ensure we properly set `data` if we're reporting on an old
859
864
  // result which will not be caught by the conditional above that ends up
860
865
  // throwing the markError result.
861
866
  if (hasErrors && errorPolicy === "none") {
862
867
  aqr.data = void 0;
868
+ aqr.dataState = "empty";
863
869
  }
864
870
  if (hasErrors && errorPolicy !== "ignore") {
865
871
  aqr.error = new errors_1.CombinedGraphQLErrors(result);
866
872
  aqr.networkStatus = networkStatus_js_1.NetworkStatus.error;
873
+ if (aqr.data) {
874
+ aqr.dataState = "complete";
875
+ }
867
876
  }
868
877
  return aqr;
869
878
  }), (0, rxjs_1.catchError)((error) => {
@@ -875,6 +884,7 @@ class QueryManager {
875
884
  }
876
885
  const aqr = {
877
886
  data: undefined,
887
+ dataState: "empty",
878
888
  loading: false,
879
889
  networkStatus: networkStatus_js_1.NetworkStatus.ready,
880
890
  partial: true,
@@ -1059,7 +1069,9 @@ class QueryManager {
1059
1069
  if (result === true) {
1060
1070
  // The onQueryUpdated function requested the default refetching
1061
1071
  // behavior by returning true.
1062
- result = oq.refetch();
1072
+ result = oq
1073
+ .refetch()
1074
+ .retain( /* create a persistent subscription on the query */);
1063
1075
  }
1064
1076
  // Record the result in the results Map, as long as onQueryUpdated
1065
1077
  // did not return false to skip/ignore this result.
@@ -1093,7 +1105,9 @@ class QueryManager {
1093
1105
  }
1094
1106
  // Otherwise, we fall back to refetching.
1095
1107
  if (!onQueryUpdated || result === true) {
1096
- result = oq.refetch();
1108
+ result = oq
1109
+ .refetch()
1110
+ .retain( /* create a persistent subscription on the query */);
1097
1111
  }
1098
1112
  if (result !== false) {
1099
1113
  results.set(oq, result);
@@ -1165,6 +1179,9 @@ class QueryManager {
1165
1179
  return {
1166
1180
  // TODO: Handle partial data
1167
1181
  data: data,
1182
+ dataState: diff.complete ? "complete"
1183
+ : data ? "partial"
1184
+ : "empty",
1168
1185
  loading: (0, networkStatus_js_1.isNetworkRequestInFlight)(networkStatus),
1169
1186
  networkStatus,
1170
1187
  partial: !diff.complete,