@apollo/client 4.0.0-rc.6 → 4.0.0-rc.7

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 (309) hide show
  1. package/CHANGELOG.md +135 -0
  2. package/__cjs/cache/core/cache.cjs +12 -7
  3. package/__cjs/cache/core/cache.cjs.map +1 -1
  4. package/__cjs/cache/core/cache.d.cts +12 -7
  5. package/__cjs/core/ApolloClient.cjs +2 -2
  6. package/__cjs/core/ApolloClient.cjs.map +1 -1
  7. package/__cjs/core/ApolloClient.d.cts +80 -98
  8. package/__cjs/core/ObservableQuery.d.cts +41 -74
  9. package/__cjs/core/QueryInfo.cjs.map +1 -1
  10. package/__cjs/core/QueryInfo.d.cts +3 -3
  11. package/__cjs/core/QueryManager.cjs +0 -2
  12. package/__cjs/core/QueryManager.cjs.map +1 -1
  13. package/__cjs/core/QueryManager.d.cts +3 -3
  14. package/__cjs/core/index.cjs.map +1 -1
  15. package/__cjs/core/index.d.cts +1 -1
  16. package/__cjs/core/types.d.cts +40 -28
  17. package/__cjs/errors/CombinedGraphQLErrors.cjs +22 -17
  18. package/__cjs/errors/CombinedGraphQLErrors.cjs.map +1 -1
  19. package/__cjs/errors/CombinedGraphQLErrors.d.cts +39 -20
  20. package/__cjs/errors/CombinedProtocolErrors.cjs +12 -6
  21. package/__cjs/errors/CombinedProtocolErrors.cjs.map +1 -1
  22. package/__cjs/errors/CombinedProtocolErrors.d.cts +12 -6
  23. package/__cjs/errors/ServerError.cjs +2 -1
  24. package/__cjs/errors/ServerError.cjs.map +1 -1
  25. package/__cjs/errors/ServerError.d.cts +2 -1
  26. package/__cjs/errors/ServerParseError.cjs +2 -1
  27. package/__cjs/errors/ServerParseError.cjs.map +1 -1
  28. package/__cjs/errors/ServerParseError.d.cts +2 -1
  29. package/__cjs/incremental/handlers/defer20220824.cjs.map +1 -1
  30. package/__cjs/incremental/handlers/defer20220824.d.cts +4 -4
  31. package/__cjs/incremental/handlers/notImplemented.cjs.map +1 -1
  32. package/__cjs/incremental/handlers/notImplemented.d.cts +2 -2
  33. package/__cjs/incremental/types.d.cts +4 -4
  34. package/__cjs/invariantErrorCodes.cjs +14 -10
  35. package/__cjs/link/batch/batchLink.cjs +3 -9
  36. package/__cjs/link/batch/batchLink.cjs.map +1 -1
  37. package/__cjs/link/batch/batchLink.d.cts +2 -3
  38. package/__cjs/link/batch/batching.cjs +1 -1
  39. package/__cjs/link/batch/batching.cjs.map +1 -1
  40. package/__cjs/link/batch/batching.d.cts +7 -7
  41. package/__cjs/link/batch-http/batchHttpLink.cjs +6 -3
  42. package/__cjs/link/batch-http/batchHttpLink.cjs.map +1 -1
  43. package/__cjs/link/batch-http/batchHttpLink.d.cts +1 -2
  44. package/__cjs/link/context/index.cjs.map +1 -1
  45. package/__cjs/link/context/index.d.cts +3 -4
  46. package/__cjs/link/core/ApolloLink.cjs +226 -54
  47. package/__cjs/link/core/ApolloLink.cjs.map +1 -1
  48. package/__cjs/link/core/ApolloLink.d.cts +355 -9
  49. package/__cjs/link/core/concat.cjs +4 -0
  50. package/__cjs/link/core/concat.cjs.map +1 -1
  51. package/__cjs/link/core/concat.d.cts +4 -0
  52. package/__cjs/link/core/deprecated.cjs +3 -0
  53. package/__cjs/link/core/deprecated.cjs.map +1 -0
  54. package/__cjs/link/core/deprecated.d.cts +10 -0
  55. package/__cjs/link/core/empty.cjs +4 -0
  56. package/__cjs/link/core/empty.cjs.map +1 -1
  57. package/__cjs/link/core/empty.d.cts +4 -0
  58. package/__cjs/link/core/from.cjs +4 -0
  59. package/__cjs/link/core/from.cjs.map +1 -1
  60. package/__cjs/link/core/from.d.cts +4 -0
  61. package/__cjs/link/core/split.cjs +4 -0
  62. package/__cjs/link/core/split.cjs.map +1 -1
  63. package/__cjs/link/core/split.d.cts +4 -0
  64. package/__cjs/link/core/types.d.cts +2 -33
  65. package/__cjs/link/error/index.cjs.map +1 -1
  66. package/__cjs/link/error/index.d.cts +4 -5
  67. package/__cjs/link/http/BaseHttpLink.cjs +2 -2
  68. package/__cjs/link/http/BaseHttpLink.cjs.map +1 -1
  69. package/__cjs/link/http/HttpLink.cjs +4 -1
  70. package/__cjs/link/http/HttpLink.cjs.map +1 -1
  71. package/__cjs/link/http/HttpLink.d.cts +1 -2
  72. package/__cjs/link/http/checkFetcher.cjs +1 -1
  73. package/__cjs/link/http/parseAndCheckHttpResponse.cjs +41 -26
  74. package/__cjs/link/http/parseAndCheckHttpResponse.cjs.map +1 -1
  75. package/__cjs/link/http/parseAndCheckHttpResponse.d.cts +2 -2
  76. package/__cjs/link/http/selectHttpOptionsAndBody.cjs.map +1 -1
  77. package/__cjs/link/http/selectHttpOptionsAndBody.d.cts +3 -3
  78. package/__cjs/link/http/selectURI.cjs.map +1 -1
  79. package/__cjs/link/http/selectURI.d.cts +2 -2
  80. package/__cjs/link/http/serializeFetchParameter.cjs +1 -1
  81. package/__cjs/link/index.cjs.map +1 -1
  82. package/__cjs/link/index.d.cts +2 -1
  83. package/__cjs/link/persisted-queries/index.cjs +2 -2
  84. package/__cjs/link/persisted-queries/index.cjs.map +1 -1
  85. package/__cjs/link/persisted-queries/index.d.cts +1 -2
  86. package/__cjs/link/retry/delayFunction.cjs.map +1 -1
  87. package/__cjs/link/retry/delayFunction.d.cts +2 -2
  88. package/__cjs/link/retry/retryFunction.cjs.map +1 -1
  89. package/__cjs/link/retry/retryFunction.d.cts +3 -3
  90. package/__cjs/link/retry/retryLink.cjs +2 -2
  91. package/__cjs/link/retry/retryLink.cjs.map +1 -1
  92. package/__cjs/link/retry/retryLink.d.cts +1 -2
  93. package/__cjs/link/schema/index.cjs.map +1 -1
  94. package/__cjs/link/schema/index.d.cts +2 -3
  95. package/__cjs/link/subscriptions/index.cjs.map +1 -1
  96. package/__cjs/link/subscriptions/index.d.cts +1 -2
  97. package/__cjs/link/utils/createOperation.cjs +12 -4
  98. package/__cjs/link/utils/createOperation.cjs.map +1 -1
  99. package/__cjs/link/utils/createOperation.d.cts +2 -2
  100. package/__cjs/link/utils/index.cjs +1 -5
  101. package/__cjs/link/utils/index.cjs.map +1 -1
  102. package/__cjs/link/utils/index.d.cts +0 -2
  103. package/__cjs/link/ws/index.cjs.map +1 -1
  104. package/__cjs/link/ws/index.d.cts +1 -2
  105. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  106. package/__cjs/react/hooks/useBackgroundQuery.d.cts +125 -93
  107. package/__cjs/react/hooks/useFragment.cjs.map +1 -1
  108. package/__cjs/react/hooks/useFragment.d.cts +2 -2
  109. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  110. package/__cjs/react/hooks/useLazyQuery.d.cts +70 -108
  111. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  112. package/__cjs/react/hooks/useLoadableQuery.d.cts +52 -61
  113. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  114. package/__cjs/react/hooks/useMutation.d.cts +36 -54
  115. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  116. package/__cjs/react/hooks/useQuery.d.cts +64 -105
  117. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  118. package/__cjs/react/hooks/useQueryRefHandlers.d.cts +17 -8
  119. package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
  120. package/__cjs/react/hooks/useReadQuery.d.cts +6 -9
  121. package/__cjs/react/hooks/useSubscription.cjs.map +1 -1
  122. package/__cjs/react/hooks/useSubscription.d.cts +32 -24
  123. package/__cjs/react/hooks/useSuspenseFragment.cjs.map +1 -1
  124. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  125. package/__cjs/react/hooks/useSuspenseQuery.d.cts +75 -94
  126. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  127. package/__cjs/react/internal/cache/QueryReference.d.cts +3 -1
  128. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  129. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +29 -20
  130. package/__cjs/react/types/types.documentation.d.cts +5 -5
  131. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  132. package/__cjs/testing/core/mocking/mockLink.d.cts +5 -6
  133. package/__cjs/testing/core/mocking/mockSubscriptionLink.cjs.map +1 -1
  134. package/__cjs/testing/core/mocking/mockSubscriptionLink.d.cts +3 -4
  135. package/__cjs/utilities/internal/types/DocumentationTypes.d.cts +20 -28
  136. package/__cjs/utilities/internal/types/VariablesOption.d.cts +2 -6
  137. package/__cjs/version.cjs +1 -1
  138. package/cache/core/cache.d.ts +12 -7
  139. package/cache/core/cache.js +12 -7
  140. package/cache/core/cache.js.map +1 -1
  141. package/core/ApolloClient.d.ts +80 -98
  142. package/core/ApolloClient.js +2 -2
  143. package/core/ApolloClient.js.map +1 -1
  144. package/core/ObservableQuery.d.ts +41 -74
  145. package/core/QueryInfo.d.ts +3 -3
  146. package/core/QueryInfo.js.map +1 -1
  147. package/core/QueryManager.d.ts +3 -3
  148. package/core/QueryManager.js +0 -2
  149. package/core/QueryManager.js.map +1 -1
  150. package/core/index.d.ts +1 -1
  151. package/core/index.js.map +1 -1
  152. package/core/types.d.ts +40 -28
  153. package/errors/CombinedGraphQLErrors.d.ts +39 -20
  154. package/errors/CombinedGraphQLErrors.js +22 -17
  155. package/errors/CombinedGraphQLErrors.js.map +1 -1
  156. package/errors/CombinedProtocolErrors.d.ts +12 -6
  157. package/errors/CombinedProtocolErrors.js +12 -6
  158. package/errors/CombinedProtocolErrors.js.map +1 -1
  159. package/errors/ServerError.d.ts +2 -1
  160. package/errors/ServerError.js +2 -1
  161. package/errors/ServerError.js.map +1 -1
  162. package/errors/ServerParseError.d.ts +2 -1
  163. package/errors/ServerParseError.js +2 -1
  164. package/errors/ServerParseError.js.map +1 -1
  165. package/incremental/handlers/defer20220824.d.ts +4 -4
  166. package/incremental/handlers/defer20220824.js.map +1 -1
  167. package/incremental/handlers/notImplemented.d.ts +2 -2
  168. package/incremental/handlers/notImplemented.js.map +1 -1
  169. package/incremental/types.d.ts +4 -4
  170. package/incremental/types.js.map +1 -1
  171. package/invariantErrorCodes.js +14 -10
  172. package/link/batch/batchLink.d.ts +2 -3
  173. package/link/batch/batchLink.js +3 -9
  174. package/link/batch/batchLink.js.map +1 -1
  175. package/link/batch/batching.d.ts +7 -7
  176. package/link/batch/batching.js +2 -2
  177. package/link/batch/batching.js.map +1 -1
  178. package/link/batch-http/batchHttpLink.d.ts +1 -2
  179. package/link/batch-http/batchHttpLink.js +6 -3
  180. package/link/batch-http/batchHttpLink.js.map +1 -1
  181. package/link/context/index.d.ts +3 -4
  182. package/link/context/index.js.map +1 -1
  183. package/link/core/ApolloLink.d.ts +355 -9
  184. package/link/core/ApolloLink.js +227 -56
  185. package/link/core/ApolloLink.js.map +1 -1
  186. package/link/core/concat.d.ts +4 -0
  187. package/link/core/concat.js +4 -0
  188. package/link/core/concat.js.map +1 -1
  189. package/link/core/deprecated.d.ts +10 -0
  190. package/link/core/deprecated.js +2 -0
  191. package/link/core/deprecated.js.map +1 -0
  192. package/link/core/empty.d.ts +4 -0
  193. package/link/core/empty.js +4 -0
  194. package/link/core/empty.js.map +1 -1
  195. package/link/core/from.d.ts +4 -0
  196. package/link/core/from.js +4 -0
  197. package/link/core/from.js.map +1 -1
  198. package/link/core/split.d.ts +4 -0
  199. package/link/core/split.js +4 -0
  200. package/link/core/split.js.map +1 -1
  201. package/link/core/types.d.ts +2 -33
  202. package/link/core/types.js.map +1 -1
  203. package/link/error/index.d.ts +4 -5
  204. package/link/error/index.js.map +1 -1
  205. package/link/http/BaseHttpLink.js +2 -2
  206. package/link/http/BaseHttpLink.js.map +1 -1
  207. package/link/http/HttpLink.d.ts +1 -2
  208. package/link/http/HttpLink.js +4 -1
  209. package/link/http/HttpLink.js.map +1 -1
  210. package/link/http/checkFetcher.js +1 -1
  211. package/link/http/parseAndCheckHttpResponse.d.ts +2 -2
  212. package/link/http/parseAndCheckHttpResponse.js +41 -26
  213. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  214. package/link/http/selectHttpOptionsAndBody.d.ts +3 -3
  215. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  216. package/link/http/selectURI.d.ts +2 -2
  217. package/link/http/selectURI.js.map +1 -1
  218. package/link/http/serializeFetchParameter.js +1 -1
  219. package/link/index.d.ts +2 -1
  220. package/link/index.js.map +1 -1
  221. package/link/persisted-queries/index.d.ts +1 -2
  222. package/link/persisted-queries/index.js +2 -2
  223. package/link/persisted-queries/index.js.map +1 -1
  224. package/link/retry/delayFunction.d.ts +2 -2
  225. package/link/retry/delayFunction.js.map +1 -1
  226. package/link/retry/retryFunction.d.ts +3 -3
  227. package/link/retry/retryFunction.js.map +1 -1
  228. package/link/retry/retryLink.d.ts +1 -2
  229. package/link/retry/retryLink.js +2 -2
  230. package/link/retry/retryLink.js.map +1 -1
  231. package/link/schema/index.d.ts +2 -3
  232. package/link/schema/index.js.map +1 -1
  233. package/link/subscriptions/index.d.ts +1 -2
  234. package/link/subscriptions/index.js.map +1 -1
  235. package/link/utils/createOperation.d.ts +2 -2
  236. package/link/utils/createOperation.js +12 -4
  237. package/link/utils/createOperation.js.map +1 -1
  238. package/link/utils/index.d.ts +0 -2
  239. package/link/utils/index.js +0 -2
  240. package/link/utils/index.js.map +1 -1
  241. package/link/ws/index.d.ts +1 -2
  242. package/link/ws/index.js.map +1 -1
  243. package/package.json +1 -1
  244. package/react/hooks/useBackgroundQuery.d.ts +125 -93
  245. package/react/hooks/useBackgroundQuery.js.map +1 -1
  246. package/react/hooks/useFragment.d.ts +2 -2
  247. package/react/hooks/useFragment.js.map +1 -1
  248. package/react/hooks/useLazyQuery.d.ts +70 -108
  249. package/react/hooks/useLazyQuery.js.map +1 -1
  250. package/react/hooks/useLoadableQuery.d.ts +52 -61
  251. package/react/hooks/useLoadableQuery.js.map +1 -1
  252. package/react/hooks/useMutation.d.ts +36 -54
  253. package/react/hooks/useMutation.js.map +1 -1
  254. package/react/hooks/useQuery.d.ts +64 -105
  255. package/react/hooks/useQuery.js.map +1 -1
  256. package/react/hooks/useQueryRefHandlers.d.ts +17 -8
  257. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  258. package/react/hooks/useReadQuery.d.ts +6 -9
  259. package/react/hooks/useReadQuery.js.map +1 -1
  260. package/react/hooks/useSubscription.d.ts +32 -24
  261. package/react/hooks/useSubscription.js.map +1 -1
  262. package/react/hooks/useSuspenseFragment.js.map +1 -1
  263. package/react/hooks/useSuspenseQuery.d.ts +75 -94
  264. package/react/hooks/useSuspenseQuery.js.map +1 -1
  265. package/react/hooks-compiled/useBackgroundQuery.d.ts +125 -93
  266. package/react/hooks-compiled/useBackgroundQuery.js.map +1 -1
  267. package/react/hooks-compiled/useFragment.d.ts +2 -2
  268. package/react/hooks-compiled/useFragment.js.map +1 -1
  269. package/react/hooks-compiled/useLazyQuery.d.ts +70 -108
  270. package/react/hooks-compiled/useLazyQuery.js.map +1 -1
  271. package/react/hooks-compiled/useLoadableQuery.d.ts +52 -61
  272. package/react/hooks-compiled/useLoadableQuery.js.map +1 -1
  273. package/react/hooks-compiled/useMutation.d.ts +36 -54
  274. package/react/hooks-compiled/useMutation.js.map +1 -1
  275. package/react/hooks-compiled/useQuery.d.ts +64 -105
  276. package/react/hooks-compiled/useQuery.js.map +1 -1
  277. package/react/hooks-compiled/useQueryRefHandlers.d.ts +17 -8
  278. package/react/hooks-compiled/useQueryRefHandlers.js.map +1 -1
  279. package/react/hooks-compiled/useReadQuery.d.ts +6 -9
  280. package/react/hooks-compiled/useReadQuery.js.map +1 -1
  281. package/react/hooks-compiled/useSubscription.d.ts +32 -24
  282. package/react/hooks-compiled/useSubscription.js.map +1 -1
  283. package/react/hooks-compiled/useSuspenseFragment.js.map +1 -1
  284. package/react/hooks-compiled/useSuspenseQuery.d.ts +75 -94
  285. package/react/hooks-compiled/useSuspenseQuery.js.map +1 -1
  286. package/react/internal/cache/QueryReference.d.ts +3 -1
  287. package/react/internal/cache/QueryReference.js.map +1 -1
  288. package/react/query-preloader/createQueryPreloader.d.ts +29 -20
  289. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  290. package/react/types/types.documentation.d.ts +5 -5
  291. package/testing/core/mocking/mockLink.d.ts +5 -6
  292. package/testing/core/mocking/mockLink.js.map +1 -1
  293. package/testing/core/mocking/mockSubscriptionLink.d.ts +3 -4
  294. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -1
  295. package/utilities/internal/types/DocumentationTypes.d.ts +20 -28
  296. package/utilities/internal/types/VariablesOption.d.ts +2 -6
  297. package/version.js +1 -1
  298. package/__cjs/link/utils/transformOperation.cjs +0 -22
  299. package/__cjs/link/utils/transformOperation.cjs.map +0 -1
  300. package/__cjs/link/utils/transformOperation.d.cts +0 -3
  301. package/__cjs/link/utils/validateOperation.cjs +0 -21
  302. package/__cjs/link/utils/validateOperation.cjs.map +0 -1
  303. package/__cjs/link/utils/validateOperation.d.cts +0 -3
  304. package/link/utils/transformOperation.d.ts +0 -3
  305. package/link/utils/transformOperation.js +0 -19
  306. package/link/utils/transformOperation.js.map +0 -1
  307. package/link/utils/validateOperation.d.ts +0 -3
  308. package/link/utils/validateOperation.js +0 -18
  309. package/link/utils/validateOperation.js.map +0 -1
@@ -12,11 +12,9 @@ export declare namespace useLoadableQuery {
12
12
  interface Handlers<TData = unknown, TVariables extends OperationVariables = OperationVariables> {
13
13
  /**
14
14
  * 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/).
15
+ *
15
16
  *
16
- *
17
- * @docGroup
18
- *
19
- * 3. Helper functions
17
+ * @docGroup 3. Helper functions
20
18
  */
21
19
  fetchMore: FetchMoreFunction<TData, TVariables>;
22
20
  /**
@@ -26,11 +24,11 @@ export declare namespace useLoadableQuery {
26
24
  *
27
25
  * See also [Refetching](https://www.apollographql.com/docs/react/data/queries/#refetching).
28
26
  *
29
- * Returns a `ResultPromise` with an additional `.retain()` method. Calling `.retain()` keeps the network operation running even if the `ObservableQuery` no longer requires the result.
27
+ * Returns a `ResultPromise` with an additional `.retain()` method. Calling
28
+ * `.retain()` keeps the network operation running even if the `ObservableQuery`
29
+ * no longer requires the result.
30
30
  *
31
- * @docGroup
32
- *
33
- * 3. Helper functions
31
+ * @docGroup 3. Helper functions
34
32
  */
35
33
  refetch: RefetchFunction<TData, TVariables>;
36
34
  /**
@@ -49,19 +47,16 @@ export declare namespace useLoadableQuery {
49
47
  /**
50
48
  * The instance of `ApolloClient` to use to execute the query.
51
49
  *
52
- * By default, the instance that's passed down via context is used, but you can provide a different instance here.
53
- *
54
- * @docGroup
50
+ * By default, the instance that's passed down via context is used, but you
51
+ * can provide a different instance here.
55
52
  *
56
- * 1. Operation options
53
+ * @docGroup 1. Operation options
57
54
  */
58
55
  client?: ApolloClient;
59
56
  /**
60
57
  * If you're using [Apollo Link](https://www.apollographql.com/docs/react/api/link/introduction/), this object is the initial value of the `context` object that's passed along your link chain.
61
58
  *
62
- * @docGroup
63
- *
64
- * 2. Networking options
59
+ * @docGroup 2. Networking options
65
60
  */
66
61
  context?: DefaultContext;
67
62
  /**
@@ -71,9 +66,7 @@ export declare namespace useLoadableQuery {
71
66
  *
72
67
  * The default value is `none`, meaning that the query result includes error details but not partial results.
73
68
  *
74
- * @docGroup
75
- *
76
- * 1. Operation options
69
+ * @docGroup 1. Operation options
77
70
  */
78
71
  errorPolicy?: ErrorPolicy;
79
72
  /**
@@ -83,27 +76,27 @@ export declare namespace useLoadableQuery {
83
76
  *
84
77
  * The default value is `cache-first`.
85
78
  *
86
- * @docGroup
87
- *
88
- * 3. Caching options
79
+ * @docGroup 3. Caching options
89
80
  */
90
81
  fetchPolicy?: FetchPolicy;
91
82
  /**
92
- * A unique identifier for the query. Each item in the array must be a stable identifier to prevent infinite fetches.
83
+ * A unique identifier for the query. Each item in the array must be a stable
84
+ * identifier to prevent infinite fetches.
93
85
  *
94
- * This is useful when using the same query and variables combination in more than one component, otherwise the components may clobber each other. This can also be used to force the query to re-evaluate fresh.
86
+ * This is useful when using the same query and variables combination in more
87
+ * than one component, otherwise the components may clobber each other. This
88
+ * can also be used to force the query to re-evaluate fresh.
95
89
  *
96
- * @docGroup
97
- *
98
- * 1. Operation options
90
+ * @docGroup 1. Operation options
99
91
  */
100
92
  queryKey?: string | number | any[];
101
93
  /**
102
- * Specifies whether a `NetworkStatus.refetch` operation should merge incoming field data with existing data, or overwrite the existing data. Overwriting is probably preferable, but merging is currently the default behavior, for backwards compatibility with Apollo Client 3.x.
103
- *
104
- * @docGroup
94
+ * Specifies whether a `NetworkStatus.refetch` operation should merge
95
+ * incoming field data with existing data, or overwrite the existing data.
96
+ * Overwriting is probably preferable, but merging is currently the default
97
+ * behavior, for backwards compatibility with Apollo Client 3.x.
105
98
  *
106
- * 3. Caching options
99
+ * @docGroup 3. Caching options
107
100
  */
108
101
  refetchWritePolicy?: RefetchWritePolicy;
109
102
  /**
@@ -111,25 +104,19 @@ export declare namespace useLoadableQuery {
111
104
  *
112
105
  * The default value is `false`.
113
106
  *
114
- * @docGroup
115
- *
116
- * 3. Caching options
107
+ * @docGroup 3. Caching options
117
108
  */
118
109
  returnPartialData?: boolean;
119
110
  }
120
111
  namespace DocumentationTypes {
121
112
  /**
122
- * A hook for imperatively loading a query, such as responding to a user interaction.
113
+ * A hook for imperatively loading a query, such as responding to a user
114
+ * interaction.
123
115
  *
124
116
  * > Refer to the [Suspense - Fetching in response to user interaction](https://www.apollographql.com/docs/react/data/suspense#fetching-in-response-to-user-interaction) section for a more in-depth overview of `useLoadableQuery`.
125
117
  *
126
- * @param query - A GraphQL query document parsed into an AST by `gql`.
127
- *
128
- * @param options - Options to control how the query is executed.
129
- *
130
- * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
131
- *
132
118
  * @example
119
+ *
133
120
  * ```jsx
134
121
  * import { gql, useLoadableQuery } from "@apollo/client";
135
122
  *
@@ -162,6 +149,10 @@ export declare namespace useLoadableQuery {
162
149
  * return <div>{data.greeting.message}</div>;
163
150
  * }
164
151
  * ```
152
+ *
153
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
154
+ * @param options - Options to control how the query is executed.
155
+ * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
165
156
  */
166
157
  function useLoadableQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useLoadableQuery.Options): useLoadableQuery.Result<TData, TVariables>;
167
158
  }
@@ -216,17 +207,13 @@ export declare function useLoadableQuery<TData = unknown, TVariables extends Ope
216
207
  errorPolicy: "ignore" | "all";
217
208
  }): useLoadableQuery.Result<TData, TVariables, "complete" | "streaming" | "partial" | "empty">;
218
209
  /**
219
- * A hook for imperatively loading a query, such as responding to a user interaction.
210
+ * A hook for imperatively loading a query, such as responding to a user
211
+ * interaction.
220
212
  *
221
213
  * > Refer to the [Suspense - Fetching in response to user interaction](https://www.apollographql.com/docs/react/data/suspense#fetching-in-response-to-user-interaction) section for a more in-depth overview of `useLoadableQuery`.
222
214
  *
223
- * @param query - A GraphQL query document parsed into an AST by `gql`.
224
- *
225
- * @param options - Options to control how the query is executed.
226
- *
227
- * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
228
- *
229
215
  * @example
216
+ *
230
217
  * ```jsx
231
218
  * import { gql, useLoadableQuery } from "@apollo/client";
232
219
  *
@@ -259,22 +246,22 @@ export declare function useLoadableQuery<TData = unknown, TVariables extends Ope
259
246
  * return <div>{data.greeting.message}</div>;
260
247
  * }
261
248
  * ```
249
+ *
250
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
251
+ * @param options - Options to control how the query is executed.
252
+ * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
262
253
  */
263
254
  export declare function useLoadableQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useLoadableQuery.Options & {
264
255
  errorPolicy: "ignore" | "all";
265
256
  }): useLoadableQuery.Result<TData, TVariables, "complete" | "streaming" | "empty">;
266
257
  /**
267
- * A hook for imperatively loading a query, such as responding to a user interaction.
258
+ * A hook for imperatively loading a query, such as responding to a user
259
+ * interaction.
268
260
  *
269
261
  * > Refer to the [Suspense - Fetching in response to user interaction](https://www.apollographql.com/docs/react/data/suspense#fetching-in-response-to-user-interaction) section for a more in-depth overview of `useLoadableQuery`.
270
262
  *
271
- * @param query - A GraphQL query document parsed into an AST by `gql`.
272
- *
273
- * @param options - Options to control how the query is executed.
274
- *
275
- * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
276
- *
277
263
  * @example
264
+ *
278
265
  * ```jsx
279
266
  * import { gql, useLoadableQuery } from "@apollo/client";
280
267
  *
@@ -307,22 +294,22 @@ export declare function useLoadableQuery<TData = unknown, TVariables extends Ope
307
294
  * return <div>{data.greeting.message}</div>;
308
295
  * }
309
296
  * ```
297
+ *
298
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
299
+ * @param options - Options to control how the query is executed.
300
+ * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
310
301
  */
311
302
  export declare function useLoadableQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useLoadableQuery.Options & {
312
303
  returnPartialData: true;
313
304
  }): useLoadableQuery.Result<TData, TVariables, "complete" | "streaming" | "partial">;
314
305
  /**
315
- * A hook for imperatively loading a query, such as responding to a user interaction.
306
+ * A hook for imperatively loading a query, such as responding to a user
307
+ * interaction.
316
308
  *
317
309
  * > Refer to the [Suspense - Fetching in response to user interaction](https://www.apollographql.com/docs/react/data/suspense#fetching-in-response-to-user-interaction) section for a more in-depth overview of `useLoadableQuery`.
318
310
  *
319
- * @param query - A GraphQL query document parsed into an AST by `gql`.
320
- *
321
- * @param options - Options to control how the query is executed.
322
- *
323
- * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
324
- *
325
311
  * @example
312
+ *
326
313
  * ```jsx
327
314
  * import { gql, useLoadableQuery } from "@apollo/client";
328
315
  *
@@ -355,6 +342,10 @@ export declare function useLoadableQuery<TData = unknown, TVariables extends Ope
355
342
  * return <div>{data.greeting.message}</div>;
356
343
  * }
357
344
  * ```
345
+ *
346
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
347
+ * @param options - Options to control how the query is executed.
348
+ * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`
358
349
  */
359
350
  export declare function useLoadableQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: useLoadableQuery.Options): useLoadableQuery.Result<TData, TVariables, "complete" | "streaming">;
360
351
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useLoadableQuery.js","sources":["../../../src/react/hooks/useLoadableQuery.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport type {\n ApolloClient,\n DataState,\n DefaultContext,\n DocumentNode,\n ErrorPolicy,\n ObservableQuery,\n OperationVariables,\n RefetchWritePolicy,\n TypedDocumentNode,\n WatchQueryFetchPolicy,\n} from \"@apollo/client\";\nimport type { SubscribeToMoreFunction } from \"@apollo/client\";\nimport { canonicalStringify } from \"@apollo/client/cache\";\nimport type {\n CacheKey,\n FetchMoreFunction,\n QueryRef,\n RefetchFunction,\n} from \"@apollo/client/react/internal\";\nimport {\n assertWrappedQueryRef,\n getSuspenseCache,\n unwrapQueryRef,\n updateWrappedQueryRef,\n wrapQueryRef,\n} from \"@apollo/client/react/internal\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\nimport { __use, useDeepMemo, useRenderGuard } from \"./internal/index.js\";\nimport { validateSuspenseHookOptions } from \"./internal/validateSuspenseHookOptions.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n\ntype ResetFunction = () => void;\n\nexport declare namespace useLoadableQuery {\n export type LoadQueryFunction<TVariables extends OperationVariables> = (\n // Use variadic args to handle cases where TVariables is type `never`, in\n // which case we don't want to allow a variables argument. In other\n // words, we don't want to allow variables to be passed as an argument to this\n // function if the query does not expect variables in the document.\n ...args: {} extends TVariables ? [variables?: TVariables]\n : [variables: TVariables]\n ) => void;\n\n export type Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TStates extends\n DataState<TData>[\"dataState\"] = DataState<TData>[\"dataState\"],\n > = [\n loadQuery: LoadQueryFunction<TVariables>,\n queryRef: QueryRef<TData, TVariables, TStates> | null,\n handlers: Handlers<TData, TVariables>,\n ];\n export interface Handlers<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n > {\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#fetchMore:member} */\n fetchMore: FetchMoreFunction<TData, TVariables>;\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#refetch:member} */\n refetch: RefetchFunction<TData, TVariables>;\n /** {@inheritDoc @apollo/client!ObservableQuery#subscribeToMore:member(1)} */\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n /**\n * A function that resets the `queryRef` back to `null`.\n */\n reset: ResetFunction;\n }\n\n export type FetchPolicy = Extract<\n WatchQueryFetchPolicy,\n \"cache-first\" | \"network-only\" | \"no-cache\" | \"cache-and-network\"\n >;\n\n export interface Options {\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#client:member} */\n client?: ApolloClient;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#context:member} */\n context?: DefaultContext;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#errorPolicy:member} */\n errorPolicy?: ErrorPolicy;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#fetchPolicy:member} */\n fetchPolicy?: FetchPolicy;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#queryKey:member} */\n queryKey?: string | number | any[];\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#refetchWritePolicy:member} */\n refetchWritePolicy?: RefetchWritePolicy;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#returnPartialData:member} */\n returnPartialData?: boolean;\n }\n\n export namespace DocumentationTypes {\n /** {@inheritDoc @apollo/client!useLoadableQuery:function(1)} */\n export function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n >(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options\n ): useLoadableQuery.Result<TData, TVariables>;\n }\n}\n\n/**\n * A hook for imperatively loading a query, such as responding to a user\n * interaction.\n *\n * > Refer to the [Suspense - Fetching in response to user interaction](https://www.apollographql.com/docs/react/data/suspense#fetching-in-response-to-user-interaction) section for a more in-depth overview of `useLoadableQuery`.\n *\n * @example\n *\n * ```jsx\n * import { gql, useLoadableQuery } from \"@apollo/client\";\n *\n * const GET_GREETING = gql`\n * query GetGreeting($language: String!) {\n * greeting(language: $language) {\n * message\n * }\n * }\n * `;\n *\n * function App() {\n * const [loadGreeting, queryRef] = useLoadableQuery(GET_GREETING);\n *\n * return (\n * <>\n * <button onClick={() => loadGreeting({ language: \"english\" })}>\n * Load greeting\n * </button>\n * <Suspense fallback={<div>Loading...</div>}>\n * {queryRef && <Hello queryRef={queryRef} />}\n * </Suspense>\n * </>\n * );\n * }\n *\n * function Hello({ queryRef }) {\n * const { data } = useReadQuery(queryRef);\n *\n * return <div>{data.greeting.message}</div>;\n * }\n * ```\n *\n * @param query - A GraphQL query document parsed into an AST by `gql`.\n * @param options - Options to control how the query is executed.\n * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`\n */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options & {\n returnPartialData: true;\n errorPolicy: \"ignore\" | \"all\";\n }\n): useLoadableQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"partial\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client!useLoadableQuery:function(1)} */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options & {\n errorPolicy: \"ignore\" | \"all\";\n }\n): useLoadableQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client!useLoadableQuery:function(1)} */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options & {\n returnPartialData: true;\n }\n): useLoadableQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"partial\"\n>;\n\n/** {@inheritDoc @apollo/client!useLoadableQuery:function(1)} */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: useLoadableQuery.Options\n): useLoadableQuery.Result<TData, TVariables, \"complete\" | \"streaming\">;\n\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options = {}\n): useLoadableQuery.Result<TData, TVariables> {\n const client = useApolloClient(options.client);\n const suspenseCache = getSuspenseCache(client);\n const watchQueryOptions = useWatchQueryOptions({ client, query, options });\n const { queryKey = [] } = options;\n\n const [queryRef, setQueryRef] = React.useState<QueryRef<\n TData,\n TVariables,\n DataState<TData>[\"dataState\"]\n > | null>(null);\n\n assertWrappedQueryRef(queryRef);\n\n const internalQueryRef = queryRef && unwrapQueryRef(queryRef);\n\n if (queryRef && internalQueryRef?.didChangeOptions(watchQueryOptions)) {\n const promise = internalQueryRef.applyOptions(watchQueryOptions);\n updateWrappedQueryRef(queryRef, promise);\n }\n\n const calledDuringRender = useRenderGuard();\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = React.useCallback(\n (options) => {\n if (!internalQueryRef) {\n throw new Error(\n \"The query has not been loaded. Please load the query.\"\n );\n }\n\n const promise = internalQueryRef.fetchMore(options);\n\n setQueryRef(wrapQueryRef(internalQueryRef));\n\n return promise;\n },\n [internalQueryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = React.useCallback(\n (options) => {\n if (!internalQueryRef) {\n throw new Error(\n \"The query has not been loaded. Please load the query.\"\n );\n }\n\n const promise = internalQueryRef.refetch(options);\n\n setQueryRef(wrapQueryRef(internalQueryRef));\n\n return promise;\n },\n [internalQueryRef]\n );\n\n const loadQuery: useLoadableQuery.LoadQueryFunction<TVariables> =\n React.useCallback(\n (...args) => {\n invariant(\n !calledDuringRender(),\n \"useLoadableQuery: 'loadQuery' should not be called during render. To start a query during render, use the 'useBackgroundQuery' hook.\"\n );\n\n const [variables] = args;\n\n const cacheKey: CacheKey = [\n query,\n canonicalStringify(variables),\n ...([] as any[]).concat(queryKey),\n ];\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery({\n ...watchQueryOptions,\n variables,\n } as ApolloClient.WatchQueryOptions<any, any>)\n );\n\n setQueryRef(wrapQueryRef(queryRef));\n },\n [\n query,\n queryKey,\n suspenseCache,\n watchQueryOptions,\n calledDuringRender,\n client,\n ]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<TData, TVariables> =\n React.useCallback(\n (options) => {\n invariant(\n internalQueryRef,\n \"The query has not been loaded. Please load the query.\"\n );\n\n return internalQueryRef.observable.subscribeToMore(\n // TODO: The internalQueryRef doesn't have TVariables' type information so we have to cast it here\n options as any as ObservableQuery.SubscribeToMoreOptions<\n TData,\n OperationVariables\n >\n );\n },\n [internalQueryRef]\n );\n\n const reset: ResetFunction = React.useCallback(() => {\n setQueryRef(null);\n }, []);\n\n return [loadQuery, queryRef, { fetchMore, refetch, reset, subscribeToMore }];\n}\n\nfunction useWatchQueryOptions<TData, TVariables extends OperationVariables>({\n client,\n query,\n options,\n}: {\n client: ApolloClient;\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: useLoadableQuery.Options;\n}): ApolloClient.WatchQueryOptions<TData, TVariables> {\n return useDeepMemo<ApolloClient.WatchQueryOptions<TData, TVariables>>(() => {\n const fetchPolicy =\n options.fetchPolicy ||\n client.defaultOptions.watchQuery?.fetchPolicy ||\n \"cache-first\";\n\n const watchQueryOptions = {\n ...options,\n fetchPolicy,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n };\n\n if (__DEV__) {\n validateSuspenseHookOptions(watchQueryOptions as any);\n }\n\n return watchQueryOptions as ApolloClient.WatchQueryOptions<\n TData,\n TVariables\n >;\n }, [client, options, query]);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useLoadableQuery.js","sources":["../../../src/react/hooks/useLoadableQuery.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport type {\n ApolloClient,\n DataState,\n DefaultContext,\n DocumentNode,\n ErrorPolicy,\n ObservableQuery,\n OperationVariables,\n RefetchWritePolicy,\n TypedDocumentNode,\n WatchQueryFetchPolicy,\n} from \"@apollo/client\";\nimport type { SubscribeToMoreFunction } from \"@apollo/client\";\nimport { canonicalStringify } from \"@apollo/client/cache\";\nimport type {\n CacheKey,\n FetchMoreFunction,\n QueryRef,\n RefetchFunction,\n} from \"@apollo/client/react/internal\";\nimport {\n assertWrappedQueryRef,\n getSuspenseCache,\n unwrapQueryRef,\n updateWrappedQueryRef,\n wrapQueryRef,\n} from \"@apollo/client/react/internal\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\nimport { __use, useDeepMemo, useRenderGuard } from \"./internal/index.js\";\nimport { validateSuspenseHookOptions } from \"./internal/validateSuspenseHookOptions.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n\ntype ResetFunction = () => void;\n\nexport declare namespace useLoadableQuery {\n export type LoadQueryFunction<TVariables extends OperationVariables> = (\n // Use variadic args to handle cases where TVariables is type `never`, in\n // which case we don't want to allow a variables argument. In other\n // words, we don't want to allow variables to be passed as an argument to this\n // function if the query does not expect variables in the document.\n ...args: {} extends TVariables ? [variables?: TVariables]\n : [variables: TVariables]\n ) => void;\n\n export type Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TStates extends\n DataState<TData>[\"dataState\"] = DataState<TData>[\"dataState\"],\n > = [\n loadQuery: LoadQueryFunction<TVariables>,\n queryRef: QueryRef<TData, TVariables, TStates> | null,\n handlers: Handlers<TData, TVariables>,\n ];\n export interface Handlers<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n > {\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#fetchMore:member} */\n fetchMore: FetchMoreFunction<TData, TVariables>;\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#refetch:member} */\n refetch: RefetchFunction<TData, TVariables>;\n /** {@inheritDoc @apollo/client!ObservableQuery#subscribeToMore:member(1)} */\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n /**\n * A function that resets the `queryRef` back to `null`.\n */\n reset: ResetFunction;\n }\n\n export type FetchPolicy = Extract<\n WatchQueryFetchPolicy,\n \"cache-first\" | \"network-only\" | \"no-cache\" | \"cache-and-network\"\n >;\n\n export interface Options {\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#client:member} */\n client?: ApolloClient;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#context:member} */\n context?: DefaultContext;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#errorPolicy:member} */\n errorPolicy?: ErrorPolicy;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#fetchPolicy:member} */\n fetchPolicy?: FetchPolicy;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#queryKey:member} */\n queryKey?: string | number | any[];\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#refetchWritePolicy:member} */\n refetchWritePolicy?: RefetchWritePolicy;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#returnPartialData:member} */\n returnPartialData?: boolean;\n }\n\n export namespace DocumentationTypes {\n /** {@inheritDoc @apollo/client/react!useLoadableQuery:function(1)} */\n export function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n >(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options\n ): useLoadableQuery.Result<TData, TVariables>;\n }\n}\n\n/**\n * A hook for imperatively loading a query, such as responding to a user\n * interaction.\n *\n * > Refer to the [Suspense - Fetching in response to user interaction](https://www.apollographql.com/docs/react/data/suspense#fetching-in-response-to-user-interaction) section for a more in-depth overview of `useLoadableQuery`.\n *\n * @example\n *\n * ```jsx\n * import { gql, useLoadableQuery } from \"@apollo/client\";\n *\n * const GET_GREETING = gql`\n * query GetGreeting($language: String!) {\n * greeting(language: $language) {\n * message\n * }\n * }\n * `;\n *\n * function App() {\n * const [loadGreeting, queryRef] = useLoadableQuery(GET_GREETING);\n *\n * return (\n * <>\n * <button onClick={() => loadGreeting({ language: \"english\" })}>\n * Load greeting\n * </button>\n * <Suspense fallback={<div>Loading...</div>}>\n * {queryRef && <Hello queryRef={queryRef} />}\n * </Suspense>\n * </>\n * );\n * }\n *\n * function Hello({ queryRef }) {\n * const { data } = useReadQuery(queryRef);\n *\n * return <div>{data.greeting.message}</div>;\n * }\n * ```\n *\n * @param query - A GraphQL query document parsed into an AST by `gql`.\n * @param options - Options to control how the query is executed.\n * @returns A tuple in the form of `[loadQuery, queryRef, handlers]`\n */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options & {\n returnPartialData: true;\n errorPolicy: \"ignore\" | \"all\";\n }\n): useLoadableQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"partial\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client/react!useLoadableQuery:function(1)} */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options & {\n errorPolicy: \"ignore\" | \"all\";\n }\n): useLoadableQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client/react!useLoadableQuery:function(1)} */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options & {\n returnPartialData: true;\n }\n): useLoadableQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"partial\"\n>;\n\n/** {@inheritDoc @apollo/client/react!useLoadableQuery:function(1)} */\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: useLoadableQuery.Options\n): useLoadableQuery.Result<TData, TVariables, \"complete\" | \"streaming\">;\n\nexport function useLoadableQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useLoadableQuery.Options = {}\n): useLoadableQuery.Result<TData, TVariables> {\n const client = useApolloClient(options.client);\n const suspenseCache = getSuspenseCache(client);\n const watchQueryOptions = useWatchQueryOptions({ client, query, options });\n const { queryKey = [] } = options;\n\n const [queryRef, setQueryRef] = React.useState<QueryRef<\n TData,\n TVariables,\n DataState<TData>[\"dataState\"]\n > | null>(null);\n\n assertWrappedQueryRef(queryRef);\n\n const internalQueryRef = queryRef && unwrapQueryRef(queryRef);\n\n if (queryRef && internalQueryRef?.didChangeOptions(watchQueryOptions)) {\n const promise = internalQueryRef.applyOptions(watchQueryOptions);\n updateWrappedQueryRef(queryRef, promise);\n }\n\n const calledDuringRender = useRenderGuard();\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = React.useCallback(\n (options) => {\n if (!internalQueryRef) {\n throw new Error(\n \"The query has not been loaded. Please load the query.\"\n );\n }\n\n const promise = internalQueryRef.fetchMore(options);\n\n setQueryRef(wrapQueryRef(internalQueryRef));\n\n return promise;\n },\n [internalQueryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = React.useCallback(\n (options) => {\n if (!internalQueryRef) {\n throw new Error(\n \"The query has not been loaded. Please load the query.\"\n );\n }\n\n const promise = internalQueryRef.refetch(options);\n\n setQueryRef(wrapQueryRef(internalQueryRef));\n\n return promise;\n },\n [internalQueryRef]\n );\n\n const loadQuery: useLoadableQuery.LoadQueryFunction<TVariables> =\n React.useCallback(\n (...args) => {\n invariant(\n !calledDuringRender(),\n \"useLoadableQuery: 'loadQuery' should not be called during render. To start a query during render, use the 'useBackgroundQuery' hook.\"\n );\n\n const [variables] = args;\n\n const cacheKey: CacheKey = [\n query,\n canonicalStringify(variables),\n ...([] as any[]).concat(queryKey),\n ];\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery({\n ...watchQueryOptions,\n variables,\n } as ApolloClient.WatchQueryOptions<any, any>)\n );\n\n setQueryRef(wrapQueryRef(queryRef));\n },\n [\n query,\n queryKey,\n suspenseCache,\n watchQueryOptions,\n calledDuringRender,\n client,\n ]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<TData, TVariables> =\n React.useCallback(\n (options) => {\n invariant(\n internalQueryRef,\n \"The query has not been loaded. Please load the query.\"\n );\n\n return internalQueryRef.observable.subscribeToMore(\n // TODO: The internalQueryRef doesn't have TVariables' type information so we have to cast it here\n options as any as ObservableQuery.SubscribeToMoreOptions<\n TData,\n OperationVariables\n >\n );\n },\n [internalQueryRef]\n );\n\n const reset: ResetFunction = React.useCallback(() => {\n setQueryRef(null);\n }, []);\n\n return [loadQuery, queryRef, { fetchMore, refetch, reset, subscribeToMore }];\n}\n\nfunction useWatchQueryOptions<TData, TVariables extends OperationVariables>({\n client,\n query,\n options,\n}: {\n client: ApolloClient;\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: useLoadableQuery.Options;\n}): ApolloClient.WatchQueryOptions<TData, TVariables> {\n return useDeepMemo<ApolloClient.WatchQueryOptions<TData, TVariables>>(() => {\n const fetchPolicy =\n options.fetchPolicy ||\n client.defaultOptions.watchQuery?.fetchPolicy ||\n \"cache-first\";\n\n const watchQueryOptions = {\n ...options,\n fetchPolicy,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n };\n\n if (__DEV__) {\n validateSuspenseHookOptions(watchQueryOptions as any);\n }\n\n return watchQueryOptions as ApolloClient.WatchQueryOptions<\n TData,\n TVariables\n >;\n }, [client, options, query]);\n}\n"],"names":[],"mappings":"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"}
@@ -8,19 +8,24 @@ type MakeRequiredVariablesOptional<TVariables extends OperationVariables, TConfi
8
8
  export declare namespace useMutation {
9
9
  interface Options<TData = unknown, TVariables extends OperationVariables = OperationVariables, TCache extends ApolloCache = ApolloCache, TConfiguredVariables extends Partial<TVariables> = Partial<TVariables>> {
10
10
  /**
11
- * By providing either an object or a callback function that, when invoked after a mutation, allows you to return optimistic data and optionally skip updates via the `IGNORE` sentinel object, Apollo Client caches this temporary (and potentially incorrect) response until the mutation completes, enabling more responsive UI updates.
11
+ * By providing either an object or a callback function that, when invoked after
12
+ * a mutation, allows you to return optimistic data and optionally skip updates
13
+ * via the `IGNORE` sentinel object, Apollo Client caches this temporary
14
+ * (and potentially incorrect) response until the mutation completes, enabling
15
+ * more responsive UI updates.
12
16
  *
13
17
  * For more information, see [Optimistic mutation results](https://www.apollographql.com/docs/react/performance/optimistic-ui/).
14
18
  *
15
- * @docGroup
16
- *
17
- * 3. Caching options
19
+ * @docGroup 3. Caching options
18
20
  */
19
21
  optimisticResponse?: Unmasked<NoInfer<TData>> | ((vars: TVariables, { IGNORE }: {
20
22
  IGNORE: IgnoreModifier;
21
23
  }) => Unmasked<NoInfer<TData>> | IgnoreModifier);
22
24
  /**
23
- * A `MutationQueryReducersMap`, which is map from query names to mutation query reducers. Briefly, this map defines how to incorporate the results of the mutation into the results of queries that are currently being watched by your application.
25
+ * A `MutationQueryReducersMap`, which is map from query names to
26
+ * mutation query reducers. Briefly, this map defines how to incorporate the
27
+ * results of the mutation into the results of queries that are currently
28
+ * being watched by your application.
24
29
  */
25
30
  updateQueries?: MutationQueryReducersMap<TData>;
26
31
  /**
@@ -32,9 +37,7 @@ export declare namespace useMutation {
32
37
  *
33
38
  * - A string indicating the operation name of the query to refetch
34
39
  *
35
- * @docGroup
36
- *
37
- * 1. Operation options
40
+ * @docGroup 1. Operation options
38
41
  */
39
42
  refetchQueries?: ((result: NormalizedExecutionResult<Unmasked<TData>>) => InternalRefetchQueriesInclude) | InternalRefetchQueriesInclude;
40
43
  /**
@@ -42,9 +45,7 @@ export declare namespace useMutation {
42
45
  *
43
46
  * The default value is `false` (queries are refetched asynchronously).
44
47
  *
45
- * @docGroup
46
- *
47
- * 1. Operation options
48
+ * @docGroup 1. Operation options
48
49
  */
49
50
  awaitRefetchQueries?: boolean;
50
51
  /**
@@ -52,9 +53,7 @@ export declare namespace useMutation {
52
53
  *
53
54
  * For more information, see [Updating the cache after a mutation](https://www.apollographql.com/docs/react/data/mutations#updating-the-cache-after-a-mutation).
54
55
  *
55
- * @docGroup
56
- *
57
- * 3. Caching options
56
+ * @docGroup 3. Caching options
58
57
  */
59
58
  update?: MutationUpdaterFunction<TData, TVariables, TCache>;
60
59
  /**
@@ -62,9 +61,7 @@ export declare namespace useMutation {
62
61
  *
63
62
  * Returning a `Promise` from `onQueryUpdated` will cause the final mutation `Promise` to await the returned `Promise`. Returning `false` causes the query to be ignored.
64
63
  *
65
- * @docGroup
66
- *
67
- * 1. Operation options
64
+ * @docGroup 1. Operation options
68
65
  */
69
66
  onQueryUpdated?: OnQueryUpdated<any>;
70
67
  /**
@@ -74,9 +71,7 @@ export declare namespace useMutation {
74
71
  *
75
72
  * The default value is `none`, meaning that the mutation result includes error details but _not_ partial results.
76
73
  *
77
- * @docGroup
78
- *
79
- * 1. Operation options
74
+ * @docGroup 1. Operation options
80
75
  */
81
76
  errorPolicy?: ErrorPolicy;
82
77
  /**
@@ -84,17 +79,13 @@ export declare namespace useMutation {
84
79
  *
85
80
  * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.
86
81
  *
87
- * @docGroup
88
- *
89
- * 1. Operation options
82
+ * @docGroup 1. Operation options
90
83
  */
91
84
  variables?: TConfiguredVariables;
92
85
  /**
93
86
  * If you're using [Apollo Link](https://www.apollographql.com/docs/react/api/link/introduction/), this object is the initial value of the `context` object that's passed along your link chain.
94
87
  *
95
- * @docGroup
96
- *
97
- * 2. Networking options
88
+ * @docGroup 2. Networking options
98
89
  */
99
90
  context?: DefaultContext;
100
91
  /**
@@ -104,13 +95,17 @@ export declare namespace useMutation {
104
95
  *
105
96
  * Unlike queries, mutations _do not_ support [fetch policies](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy) besides `network-only` and `no-cache`.
106
97
  *
107
- * @docGroup
108
- *
109
- * 3. Caching options
98
+ * @docGroup 3. Caching options
110
99
  */
111
100
  fetchPolicy?: MutationFetchPolicy;
112
101
  /**
113
- * To avoid retaining sensitive information from mutation root field arguments, Apollo Client v3.4+ automatically clears any `ROOT_MUTATION` fields from the cache after each mutation finishes. If you need this information to remain in the cache, you can prevent the removal by passing `keepRootFields: true` to the mutation. `ROOT_MUTATION` result data are also passed to the mutation `update` function, so we recommend obtaining the results that way, rather than using this option, if possible.
102
+ * To avoid retaining sensitive information from mutation root field
103
+ * arguments, Apollo Client v3.4+ automatically clears any `ROOT_MUTATION`
104
+ * fields from the cache after each mutation finishes. If you need this
105
+ * information to remain in the cache, you can prevent the removal by passing
106
+ * `keepRootFields: true` to the mutation. `ROOT_MUTATION` result data are
107
+ * also passed to the mutation `update` function, so we recommend obtaining
108
+ * the results that way, rather than using this option, if possible.
114
109
  */
115
110
  keepRootFields?: boolean;
116
111
  /**
@@ -118,9 +113,7 @@ export declare namespace useMutation {
118
113
  *
119
114
  * By default, the instance that's passed down via context is used, but you can provide a different instance here.
120
115
  *
121
- * @docGroup
122
- *
123
- * 2. Networking options
116
+ * @docGroup 2. Networking options
124
117
  */
125
118
  client?: ApolloClient;
126
119
  /**
@@ -128,9 +121,7 @@ export declare namespace useMutation {
128
121
  *
129
122
  * The default value is `true`.
130
123
  *
131
- * @docGroup
132
- *
133
- * 2. Networking options
124
+ * @docGroup 2. Networking options
134
125
  */
135
126
  notifyOnNetworkStatusChange?: boolean;
136
127
  /**
@@ -138,9 +129,7 @@ export declare namespace useMutation {
138
129
  *
139
130
  * This function is passed the mutation's result `data` and any options passed to the mutation.
140
131
  *
141
- * @docGroup
142
- *
143
- * 1. Operation options
132
+ * @docGroup 1. Operation options
144
133
  */
145
134
  onCompleted?: (data: MaybeMasked<TData>, clientOptions?: Options<TData, TVariables, TCache>) => void;
146
135
  /**
@@ -148,9 +137,7 @@ export declare namespace useMutation {
148
137
  *
149
138
  * This function is passed an [`ApolloError`](https://github.com/apollographql/apollo-client/blob/d96f4578f89b933c281bb775a39503f6cdb59ee8/src/errors/index.ts#L36-L39) object that contains either a `networkError` object or a `graphQLErrors` array, depending on the error(s) that occurred, as well as any options passed the mutation.
150
139
  *
151
- * @docGroup
152
- *
153
- * 1. Operation options
140
+ * @docGroup 1. Operation options
154
141
  */
155
142
  onError?: (error: ErrorLike, clientOptions?: Options<TData, TVariables, TCache>) => void;
156
143
  }
@@ -195,9 +182,7 @@ export declare namespace useMutation {
195
182
  *
196
183
  * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.
197
184
  *
198
- * @docGroup
199
- *
200
- * 1. Operation options
185
+ * @docGroup 1. Operation options
201
186
  */
202
187
  variables?: TVariables;
203
188
  }
@@ -208,9 +193,7 @@ export declare namespace useMutation {
208
193
  *
209
194
  * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.
210
195
  *
211
- * @docGroup
212
- *
213
- * 1. Operation options
196
+ * @docGroup 1. Operation options
214
197
  */
215
198
  variables: TVariables;
216
199
  }
@@ -220,13 +203,8 @@ export declare namespace useMutation {
220
203
  /**
221
204
  * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.
222
205
  *
223
- * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.
224
- *
225
- * @param options - Options to control how the mutation is executed.
226
- *
227
- * @returns A tuple in the form of `[mutate, result]`
228
- *
229
206
  * @example
207
+ *
230
208
  * ```jsx
231
209
  * import { gql, useMutation } from "@apollo/client";
232
210
  *
@@ -263,6 +241,10 @@ export declare namespace useMutation {
263
241
  * );
264
242
  * }
265
243
  * ```
244
+ *
245
+ * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.
246
+ * @param options - Options to control how the mutation is executed.
247
+ * @returns A tuple in the form of `[mutate, result]`
266
248
  */
267
249
  function useMutation<TData = unknown, TVariables extends OperationVariables = OperationVariables>(mutation: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: useMutation.Options<TData, TVariables>): useMutation.ResultTuple<TData, TVariables>;
268
250
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useMutation.js","sources":["../../../src/react/hooks/useMutation.ts"],"sourcesContent":["import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport { equal } from \"@wry/equality\";\nimport * as React from \"react\";\n\nimport type {\n ApolloCache,\n ApolloClient,\n DefaultContext,\n DocumentNode,\n ErrorLike,\n ErrorPolicy,\n InternalRefetchQueriesInclude,\n MaybeMasked,\n MutationFetchPolicy,\n MutationQueryReducersMap,\n MutationUpdaterFunction,\n NormalizedExecutionResult,\n OnQueryUpdated,\n OperationVariables,\n Unmasked,\n} from \"@apollo/client\";\nimport type { IgnoreModifier } from \"@apollo/client/cache\";\nimport type { NoInfer, Prettify } from \"@apollo/client/utilities/internal\";\nimport { mergeOptions } from \"@apollo/client/utilities/internal\";\n\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n\ntype MakeRequiredVariablesOptional<\n TVariables extends OperationVariables,\n TConfiguredVariables extends Partial<TVariables>,\n> = Prettify<\n {\n [K in keyof TVariables as K extends keyof TConfiguredVariables ? K\n : never]?: TVariables[K];\n } & Omit<TVariables, keyof TConfiguredVariables>\n>;\n\nexport declare namespace useMutation {\n export interface Options<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n TConfiguredVariables extends Partial<TVariables> = Partial<TVariables>,\n > {\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#optimisticResponse:member} */\n optimisticResponse?:\n | Unmasked<NoInfer<TData>>\n | ((\n vars: TVariables,\n { IGNORE }: { IGNORE: IgnoreModifier }\n ) => Unmasked<NoInfer<TData>> | IgnoreModifier);\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#updateQueries:member} */\n updateQueries?: MutationQueryReducersMap<TData>;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#refetchQueries:member} */\n refetchQueries?:\n | ((\n result: NormalizedExecutionResult<Unmasked<TData>>\n ) => InternalRefetchQueriesInclude)\n | InternalRefetchQueriesInclude;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#awaitRefetchQueries:member} */\n awaitRefetchQueries?: boolean;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#update:member} */\n update?: MutationUpdaterFunction<TData, TVariables, TCache>;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#onQueryUpdated:member} */\n onQueryUpdated?: OnQueryUpdated<any>;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#errorPolicy:member} */\n errorPolicy?: ErrorPolicy;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#variables:member} */\n variables?: TConfiguredVariables;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#context:member} */\n context?: DefaultContext;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#fetchPolicy:member} */\n fetchPolicy?: MutationFetchPolicy;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#keepRootFields:member} */\n keepRootFields?: boolean;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#client:member} */\n client?: ApolloClient;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#notifyOnNetworkStatusChange:member} */\n notifyOnNetworkStatusChange?: boolean;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#onCompleted:member} */\n onCompleted?: (\n data: MaybeMasked<TData>,\n clientOptions?: Options<TData, TVariables, TCache>\n ) => void;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#onError:member} */\n onError?: (\n error: ErrorLike,\n clientOptions?: Options<TData, TVariables, TCache>\n ) => void;\n }\n\n export interface Result<TData = unknown> {\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#data:member} */\n data: MaybeMasked<TData> | null | undefined;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#error:member} */\n error: ErrorLike | undefined;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#loading:member} */\n loading: boolean;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#called:member} */\n called: boolean;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#client:member} */\n client: ApolloClient;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#reset:member} */\n reset: () => void;\n }\n\n export type ResultTuple<\n TData,\n TVariables extends OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n > = [\n mutate: MutationFunction<TData, TVariables, TCache>,\n result: Result<TData>,\n ];\n\n export type MutationFunction<\n TData,\n TVariables extends OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n > = (\n ...[options]: {} extends TVariables ?\n [\n options?: MutationFunctionOptions<TData, TVariables, TCache> & {\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#variables:member} */\n variables?: TVariables;\n },\n ]\n : [\n options: MutationFunctionOptions<TData, TVariables, TCache> & {\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#variables:member} */\n variables: TVariables;\n },\n ]\n ) => Promise<ApolloClient.MutateResult<MaybeMasked<TData>>>;\n\n export type MutationFunctionOptions<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n > = Options<TData, TVariables, TCache>;\n\n export namespace DocumentationTypes {\n /** {@inheritDoc @apollo/client!useMutation:function(1)} */\n export function useMutation<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n >(\n mutation: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: useMutation.Options<TData, TVariables>\n ): useMutation.ResultTuple<TData, TVariables>;\n }\n}\n\n/**\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n *\n * ```jsx\n * import { gql, useMutation } from \"@apollo/client\";\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n * <div>\n * <form\n * onSubmit={(e) => {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = \"\";\n * }}\n * >\n * <input\n * ref={(node) => {\n * input = node;\n * }}\n * />\n * <button type=\"submit\">Add Todo</button>\n * </form>\n * </div>\n * );\n * }\n * ```\n *\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n TConfiguredVariables extends Partial<TVariables> = {},\n>(\n mutation: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: useMutation.Options<\n NoInfer<TData>,\n NoInfer<TVariables>,\n TCache,\n {\n [K in keyof TConfiguredVariables]: K extends keyof TVariables ?\n TConfiguredVariables[K]\n : never;\n }\n >\n): useMutation.ResultTuple<\n TData,\n MakeRequiredVariablesOptional<TVariables, TConfiguredVariables>,\n TCache\n> {\n const client = useApolloClient(options?.client);\n const [result, setResult] = React.useState<\n Omit<useMutation.Result<TData>, \"reset\">\n >(() => createInitialResult(client));\n\n const ref = React.useRef({\n result,\n mutationId: 0,\n isMounted: true,\n client,\n mutation,\n options,\n });\n\n useIsomorphicLayoutEffect(() => {\n Object.assign(ref.current, { client, options, mutation });\n });\n\n const execute = React.useCallback(\n (\n executeOptions: useMutation.MutationFunctionOptions<\n TData,\n TVariables,\n TCache\n > = {} as useMutation.MutationFunctionOptions<TData, TVariables, TCache>\n ) => {\n const { options, mutation } = ref.current;\n const baseOptions = { ...options, mutation };\n const client = executeOptions.client || ref.current.client;\n\n if (!ref.current.result.loading && ref.current.isMounted) {\n setResult(\n (ref.current.result = {\n loading: true,\n error: undefined,\n data: undefined,\n called: true,\n client,\n })\n );\n }\n\n const mutationId = ++ref.current.mutationId;\n const clientOptions = mergeOptions(baseOptions, executeOptions as any);\n\n return client\n .mutate(\n clientOptions as ApolloClient.MutateOptions<TData, OperationVariables>\n )\n .then(\n (response) => {\n const { data, error } = response;\n\n const onError =\n executeOptions.onError || ref.current.options?.onError;\n\n if (error && onError) {\n onError(error, clientOptions);\n }\n\n if (mutationId === ref.current.mutationId) {\n const result = {\n called: true,\n loading: false,\n data,\n error,\n client,\n };\n\n if (ref.current.isMounted && !equal(ref.current.result, result)) {\n setResult((ref.current.result = result));\n }\n }\n\n const onCompleted =\n executeOptions.onCompleted || ref.current.options?.onCompleted;\n\n if (!error) {\n onCompleted?.(response.data!, clientOptions);\n }\n\n return response;\n },\n (error) => {\n if (\n mutationId === ref.current.mutationId &&\n ref.current.isMounted\n ) {\n const result = {\n loading: false,\n error,\n data: void 0,\n called: true,\n client,\n };\n\n if (!equal(ref.current.result, result)) {\n setResult((ref.current.result = result));\n }\n }\n\n const onError =\n executeOptions.onError || ref.current.options?.onError;\n\n if (onError) {\n onError(error, clientOptions);\n }\n\n throw error;\n }\n );\n },\n []\n );\n\n const reset = React.useCallback(() => {\n if (ref.current.isMounted) {\n const result = createInitialResult(ref.current.client);\n Object.assign(ref.current, { mutationId: 0, result });\n setResult(result);\n }\n }, []);\n\n React.useEffect(() => {\n const current = ref.current;\n current.isMounted = true;\n\n return () => {\n current.isMounted = false;\n };\n }, []);\n\n return [execute as any, { reset, ...result }];\n}\n\nfunction createInitialResult(client: ApolloClient) {\n return {\n data: undefined,\n error: undefined,\n called: false,\n loading: false,\n client,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMutation.js","sources":["../../../src/react/hooks/useMutation.ts"],"sourcesContent":["import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport { equal } from \"@wry/equality\";\nimport * as React from \"react\";\n\nimport type {\n ApolloCache,\n ApolloClient,\n DefaultContext,\n DocumentNode,\n ErrorLike,\n ErrorPolicy,\n InternalRefetchQueriesInclude,\n MaybeMasked,\n MutationFetchPolicy,\n MutationQueryReducersMap,\n MutationUpdaterFunction,\n NormalizedExecutionResult,\n OnQueryUpdated,\n OperationVariables,\n Unmasked,\n} from \"@apollo/client\";\nimport type { IgnoreModifier } from \"@apollo/client/cache\";\nimport type { NoInfer, Prettify } from \"@apollo/client/utilities/internal\";\nimport { mergeOptions } from \"@apollo/client/utilities/internal\";\n\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n\ntype MakeRequiredVariablesOptional<\n TVariables extends OperationVariables,\n TConfiguredVariables extends Partial<TVariables>,\n> = Prettify<\n {\n [K in keyof TVariables as K extends keyof TConfiguredVariables ? K\n : never]?: TVariables[K];\n } & Omit<TVariables, keyof TConfiguredVariables>\n>;\n\nexport declare namespace useMutation {\n export interface Options<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n TConfiguredVariables extends Partial<TVariables> = Partial<TVariables>,\n > {\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#optimisticResponse:member} */\n optimisticResponse?:\n | Unmasked<NoInfer<TData>>\n | ((\n vars: TVariables,\n { IGNORE }: { IGNORE: IgnoreModifier }\n ) => Unmasked<NoInfer<TData>> | IgnoreModifier);\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#updateQueries:member} */\n updateQueries?: MutationQueryReducersMap<TData>;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#refetchQueries:member} */\n refetchQueries?:\n | ((\n result: NormalizedExecutionResult<Unmasked<TData>>\n ) => InternalRefetchQueriesInclude)\n | InternalRefetchQueriesInclude;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#awaitRefetchQueries:member} */\n awaitRefetchQueries?: boolean;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#update:member} */\n update?: MutationUpdaterFunction<TData, TVariables, TCache>;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#onQueryUpdated:member} */\n onQueryUpdated?: OnQueryUpdated<any>;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#errorPolicy:member} */\n errorPolicy?: ErrorPolicy;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#variables:member} */\n variables?: TConfiguredVariables;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#context:member} */\n context?: DefaultContext;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#fetchPolicy:member} */\n fetchPolicy?: MutationFetchPolicy;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#keepRootFields:member} */\n keepRootFields?: boolean;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#client:member} */\n client?: ApolloClient;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#notifyOnNetworkStatusChange:member} */\n notifyOnNetworkStatusChange?: boolean;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#onCompleted:member} */\n onCompleted?: (\n data: MaybeMasked<TData>,\n clientOptions?: Options<TData, TVariables, TCache>\n ) => void;\n\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#onError:member} */\n onError?: (\n error: ErrorLike,\n clientOptions?: Options<TData, TVariables, TCache>\n ) => void;\n }\n\n export interface Result<TData = unknown> {\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#data:member} */\n data: MaybeMasked<TData> | null | undefined;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#error:member} */\n error: ErrorLike | undefined;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#loading:member} */\n loading: boolean;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#called:member} */\n called: boolean;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#client:member} */\n client: ApolloClient;\n\n /** {@inheritDoc @apollo/client!MutationResultDocumentation#reset:member} */\n reset: () => void;\n }\n\n export type ResultTuple<\n TData,\n TVariables extends OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n > = [\n mutate: MutationFunction<TData, TVariables, TCache>,\n result: Result<TData>,\n ];\n\n export type MutationFunction<\n TData,\n TVariables extends OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n > = (\n ...[options]: {} extends TVariables ?\n [\n options?: MutationFunctionOptions<TData, TVariables, TCache> & {\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#variables:member} */\n variables?: TVariables;\n },\n ]\n : [\n options: MutationFunctionOptions<TData, TVariables, TCache> & {\n /** {@inheritDoc @apollo/client!MutationOptionsDocumentation#variables:member} */\n variables: TVariables;\n },\n ]\n ) => Promise<ApolloClient.MutateResult<MaybeMasked<TData>>>;\n\n export type MutationFunctionOptions<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n > = Options<TData, TVariables, TCache>;\n\n export namespace DocumentationTypes {\n /** {@inheritDoc @apollo/client/react!useMutation:function(1)} */\n export function useMutation<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n >(\n mutation: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: useMutation.Options<TData, TVariables>\n ): useMutation.ResultTuple<TData, TVariables>;\n }\n}\n\n/**\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n *\n * ```jsx\n * import { gql, useMutation } from \"@apollo/client\";\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n * <div>\n * <form\n * onSubmit={(e) => {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = \"\";\n * }}\n * >\n * <input\n * ref={(node) => {\n * input = node;\n * }}\n * />\n * <button type=\"submit\">Add Todo</button>\n * </form>\n * </div>\n * );\n * }\n * ```\n *\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TCache extends ApolloCache = ApolloCache,\n TConfiguredVariables extends Partial<TVariables> = {},\n>(\n mutation: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: useMutation.Options<\n NoInfer<TData>,\n NoInfer<TVariables>,\n TCache,\n {\n [K in keyof TConfiguredVariables]: K extends keyof TVariables ?\n TConfiguredVariables[K]\n : never;\n }\n >\n): useMutation.ResultTuple<\n TData,\n MakeRequiredVariablesOptional<TVariables, TConfiguredVariables>,\n TCache\n> {\n const client = useApolloClient(options?.client);\n const [result, setResult] = React.useState<\n Omit<useMutation.Result<TData>, \"reset\">\n >(() => createInitialResult(client));\n\n const ref = React.useRef({\n result,\n mutationId: 0,\n isMounted: true,\n client,\n mutation,\n options,\n });\n\n useIsomorphicLayoutEffect(() => {\n Object.assign(ref.current, { client, options, mutation });\n });\n\n const execute = React.useCallback(\n (\n executeOptions: useMutation.MutationFunctionOptions<\n TData,\n TVariables,\n TCache\n > = {} as useMutation.MutationFunctionOptions<TData, TVariables, TCache>\n ) => {\n const { options, mutation } = ref.current;\n const baseOptions = { ...options, mutation };\n const client = executeOptions.client || ref.current.client;\n\n if (!ref.current.result.loading && ref.current.isMounted) {\n setResult(\n (ref.current.result = {\n loading: true,\n error: undefined,\n data: undefined,\n called: true,\n client,\n })\n );\n }\n\n const mutationId = ++ref.current.mutationId;\n const clientOptions = mergeOptions(baseOptions, executeOptions as any);\n\n return client\n .mutate(\n clientOptions as ApolloClient.MutateOptions<TData, OperationVariables>\n )\n .then(\n (response) => {\n const { data, error } = response;\n\n const onError =\n executeOptions.onError || ref.current.options?.onError;\n\n if (error && onError) {\n onError(error, clientOptions);\n }\n\n if (mutationId === ref.current.mutationId) {\n const result = {\n called: true,\n loading: false,\n data,\n error,\n client,\n };\n\n if (ref.current.isMounted && !equal(ref.current.result, result)) {\n setResult((ref.current.result = result));\n }\n }\n\n const onCompleted =\n executeOptions.onCompleted || ref.current.options?.onCompleted;\n\n if (!error) {\n onCompleted?.(response.data!, clientOptions);\n }\n\n return response;\n },\n (error) => {\n if (\n mutationId === ref.current.mutationId &&\n ref.current.isMounted\n ) {\n const result = {\n loading: false,\n error,\n data: void 0,\n called: true,\n client,\n };\n\n if (!equal(ref.current.result, result)) {\n setResult((ref.current.result = result));\n }\n }\n\n const onError =\n executeOptions.onError || ref.current.options?.onError;\n\n if (onError) {\n onError(error, clientOptions);\n }\n\n throw error;\n }\n );\n },\n []\n );\n\n const reset = React.useCallback(() => {\n if (ref.current.isMounted) {\n const result = createInitialResult(ref.current.client);\n Object.assign(ref.current, { mutationId: 0, result });\n setResult(result);\n }\n }, []);\n\n React.useEffect(() => {\n const current = ref.current;\n current.isMounted = true;\n\n return () => {\n current.isMounted = false;\n };\n }, []);\n\n return [execute as any, { reset, ...result }];\n}\n\nfunction createInitialResult(client: ApolloClient) {\n return {\n data: undefined,\n error: undefined,\n called: false,\n loading: false,\n client,\n };\n}\n"],"names":[],"mappings":"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"}