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

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 (512) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +40 -40
  3. package/__cjs/cache/core/cache.cjs +2 -6
  4. package/__cjs/cache/core/cache.cjs.map +1 -1
  5. package/__cjs/cache/core/cache.d.cts +65 -64
  6. package/__cjs/cache/core/types/Cache.cjs +0 -4
  7. package/__cjs/cache/core/types/Cache.cjs.map +1 -1
  8. package/__cjs/cache/core/types/Cache.d.cts +200 -15
  9. package/__cjs/cache/{core/types/DataProxy.cjs → deprecated.cjs} +1 -1
  10. package/__cjs/cache/deprecated.cjs.map +1 -0
  11. package/__cjs/cache/deprecated.d.cts +6 -0
  12. package/__cjs/cache/index.cjs.map +1 -1
  13. package/__cjs/cache/index.d.cts +2 -2
  14. package/__cjs/cache/inmemory/entityStore.cjs +25 -28
  15. package/__cjs/cache/inmemory/entityStore.cjs.map +1 -1
  16. package/__cjs/cache/inmemory/entityStore.d.cts +17 -16
  17. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  18. package/__cjs/cache/inmemory/inMemoryCache.d.cts +4 -4
  19. package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
  20. package/__cjs/cache/inmemory/policies.cjs +4 -4
  21. package/__cjs/cache/inmemory/policies.cjs.map +1 -1
  22. package/__cjs/cache/inmemory/policies.d.cts +3 -2
  23. package/__cjs/cache/inmemory/readFromStore.cjs +2 -2
  24. package/__cjs/cache/inmemory/writeToStore.cjs +4 -4
  25. package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  26. package/__cjs/cache/inmemory/writeToStore.d.cts +1 -1
  27. package/__cjs/core/ApolloClient.cjs +92 -110
  28. package/__cjs/core/ApolloClient.cjs.map +1 -1
  29. package/__cjs/core/ApolloClient.d.cts +774 -180
  30. package/__cjs/core/ObservableQuery.cjs +10 -10
  31. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  32. package/__cjs/core/ObservableQuery.d.cts +120 -68
  33. package/__cjs/core/QueryInfo.cjs.map +1 -1
  34. package/__cjs/core/QueryInfo.d.cts +5 -4
  35. package/__cjs/core/QueryManager.cjs +15 -13
  36. package/__cjs/core/QueryManager.cjs.map +1 -1
  37. package/__cjs/core/QueryManager.d.cts +17 -17
  38. package/__cjs/core/deprecated.cjs +3 -0
  39. package/__cjs/core/deprecated.cjs.map +1 -0
  40. package/__cjs/core/deprecated.d.cts +29 -0
  41. package/__cjs/core/index.cjs.map +1 -1
  42. package/__cjs/core/index.d.cts +9 -5
  43. package/__cjs/core/types.d.cts +29 -129
  44. package/__cjs/core/watchQueryOptions.d.cts +8 -297
  45. package/__cjs/dev/setErrorMessageHandler.cjs.map +1 -1
  46. package/__cjs/dev/setErrorMessageHandler.d.cts +4 -4
  47. package/__cjs/errors/CombinedGraphQLErrors.cjs +59 -11
  48. package/__cjs/errors/CombinedGraphQLErrors.cjs.map +1 -1
  49. package/__cjs/errors/CombinedGraphQLErrors.d.cts +146 -11
  50. package/__cjs/errors/CombinedProtocolErrors.cjs +48 -1
  51. package/__cjs/errors/CombinedProtocolErrors.cjs.map +1 -1
  52. package/__cjs/errors/CombinedProtocolErrors.d.cts +126 -2
  53. package/__cjs/errors/LinkError.cjs +45 -2
  54. package/__cjs/errors/LinkError.cjs.map +1 -1
  55. package/__cjs/errors/LinkError.d.cts +45 -2
  56. package/__cjs/errors/LocalStateError.cjs +35 -5
  57. package/__cjs/errors/LocalStateError.cjs.map +1 -1
  58. package/__cjs/errors/LocalStateError.d.cts +41 -5
  59. package/__cjs/errors/ServerError.cjs +50 -8
  60. package/__cjs/errors/ServerError.cjs.map +1 -1
  61. package/__cjs/errors/ServerError.d.cts +70 -11
  62. package/__cjs/errors/ServerParseError.cjs +45 -8
  63. package/__cjs/errors/ServerParseError.cjs.map +1 -1
  64. package/__cjs/errors/ServerParseError.d.cts +71 -16
  65. package/__cjs/errors/UnconventionalError.cjs +46 -2
  66. package/__cjs/errors/UnconventionalError.cjs.map +1 -1
  67. package/__cjs/errors/UnconventionalError.d.cts +46 -2
  68. package/__cjs/incremental/handlers/notImplemented.cjs +1 -1
  69. package/__cjs/invariantErrorCodes.cjs +72 -80
  70. package/__cjs/link/batch/batchLink.cjs.map +1 -1
  71. package/__cjs/link/batch-http/batchHttpLink.cjs +2 -2
  72. package/__cjs/link/batch-http/batchHttpLink.cjs.map +1 -1
  73. package/__cjs/link/client-awareness/ClientAwarenessLink.cjs.map +1 -1
  74. package/__cjs/link/client-awareness/ClientAwarenessLink.d.cts +4 -4
  75. package/__cjs/link/context/index.cjs +1 -1
  76. package/__cjs/link/context/index.cjs.map +1 -1
  77. package/__cjs/link/context/index.d.cts +1 -1
  78. package/__cjs/link/core/ApolloLink.cjs +2 -2
  79. package/__cjs/link/core/types.d.cts +2 -2
  80. package/__cjs/link/error/index.cjs.map +1 -1
  81. package/__cjs/link/error/index.d.cts +16 -1
  82. package/__cjs/link/http/HttpLink.cjs.map +1 -1
  83. package/__cjs/link/http/HttpLink.d.cts +2 -1
  84. package/__cjs/link/http/checkFetcher.cjs +1 -1
  85. package/__cjs/link/http/parseAndCheckHttpResponse.cjs +1 -1
  86. package/__cjs/link/http/serializeFetchParameter.cjs +1 -1
  87. package/__cjs/link/persisted-queries/index.cjs +2 -2
  88. package/__cjs/link/persisted-queries/index.cjs.map +1 -1
  89. package/__cjs/link/persisted-queries/index.d.cts +11 -11
  90. package/__cjs/link/retry/delayFunction.cjs.map +1 -1
  91. package/__cjs/link/retry/delayFunction.d.cts +1 -1
  92. package/__cjs/link/retry/retryFunction.cjs.map +1 -1
  93. package/__cjs/link/retry/retryFunction.d.cts +1 -1
  94. package/__cjs/link/retry/retryLink.cjs.map +1 -1
  95. package/__cjs/link/schema/index.cjs.map +1 -1
  96. package/__cjs/link/utils/validateOperation.cjs +1 -1
  97. package/__cjs/link/ws/index.cjs.map +1 -1
  98. package/__cjs/local-state/LocalState.cjs +55 -9
  99. package/__cjs/local-state/LocalState.cjs.map +1 -1
  100. package/__cjs/local-state/LocalState.d.cts +94 -0
  101. package/__cjs/masking/GraphQLCodegenDataMasking.d.cts +6 -7
  102. package/__cjs/masking/internal/types.d.cts +70 -70
  103. package/__cjs/masking/maskDefinition.cjs +2 -2
  104. package/__cjs/masking/maskFragment.cjs +2 -2
  105. package/__cjs/masking/maskOperation.cjs +1 -1
  106. package/__cjs/masking/utils.cjs +3 -3
  107. package/__cjs/react/context/ApolloContext.cjs +1 -1
  108. package/__cjs/react/context/ApolloProvider.cjs +1 -1
  109. package/__cjs/react/hooks/internal/useDeepMemo.cjs +0 -3
  110. package/__cjs/react/hooks/internal/useDeepMemo.cjs.map +1 -1
  111. package/__cjs/react/hooks/internal/validateSuspenseHookOptions.cjs.map +1 -1
  112. package/__cjs/react/hooks/internal/validateSuspenseHookOptions.d.cts +2 -2
  113. package/__cjs/react/hooks/internal/wrapHook.cjs +1 -0
  114. package/__cjs/react/hooks/internal/wrapHook.cjs.map +1 -1
  115. package/__cjs/react/hooks/internal/wrapHook.d.cts +8 -7
  116. package/__cjs/react/hooks/useApolloClient.cjs +2 -2
  117. package/__cjs/react/hooks/useApolloClient.cjs.map +1 -1
  118. package/__cjs/react/hooks/useApolloClient.d.cts +2 -2
  119. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  120. package/__cjs/react/hooks/useBackgroundQuery.d.cts +814 -86
  121. package/__cjs/react/hooks/useFragment.cjs +7 -0
  122. package/__cjs/react/hooks/useFragment.cjs.map +1 -1
  123. package/__cjs/react/hooks/useFragment.d.cts +53 -2
  124. package/__cjs/react/hooks/useLazyQuery.cjs +0 -38
  125. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  126. package/__cjs/react/hooks/useLazyQuery.d.cts +309 -119
  127. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  128. package/__cjs/react/hooks/useLoadableQuery.d.cts +113 -126
  129. package/__cjs/react/hooks/useMutation.cjs +6 -7
  130. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  131. package/__cjs/react/hooks/useMutation.d.cts +57 -17
  132. package/__cjs/react/hooks/useQuery.cjs +1 -35
  133. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  134. package/__cjs/react/hooks/useQuery.d.cts +163 -18
  135. package/__cjs/react/hooks/useQueryRefHandlers.cjs +2 -1
  136. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  137. package/__cjs/react/hooks/useQueryRefHandlers.d.cts +21 -1
  138. package/__cjs/react/hooks/useReactiveVar.cjs +2 -1
  139. package/__cjs/react/hooks/useReactiveVar.cjs.map +1 -1
  140. package/__cjs/react/hooks/useReactiveVar.d.cts +2 -1
  141. package/__cjs/react/hooks/useReadQuery.cjs +29 -0
  142. package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
  143. package/__cjs/react/hooks/useReadQuery.d.cts +95 -16
  144. package/__cjs/react/hooks/useSubscription.cjs +8 -9
  145. package/__cjs/react/hooks/useSubscription.cjs.map +1 -1
  146. package/__cjs/react/hooks/useSubscription.d.cts +99 -32
  147. package/__cjs/react/hooks/useSuspenseFragment.cjs.map +1 -1
  148. package/__cjs/react/hooks/useSuspenseFragment.d.cts +61 -29
  149. package/__cjs/react/hooks/useSuspenseQuery.cjs +4 -1
  150. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  151. package/__cjs/react/hooks/useSuspenseQuery.d.cts +438 -17
  152. package/__cjs/react/index.cjs +1 -3
  153. package/__cjs/react/index.cjs.map +1 -1
  154. package/__cjs/react/index.d.cts +0 -1
  155. package/__cjs/react/index.react-server.cjs +1 -3
  156. package/__cjs/react/index.react-server.cjs.map +1 -1
  157. package/__cjs/react/index.react-server.d.cts +0 -1
  158. package/__cjs/react/internal/cache/FragmentReference.cjs.map +1 -1
  159. package/__cjs/react/internal/cache/FragmentReference.d.cts +2 -3
  160. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  161. package/__cjs/react/internal/cache/QueryReference.d.cts +11 -11
  162. package/__cjs/react/internal/cache/SuspenseCache.cjs.map +1 -1
  163. package/__cjs/react/internal/cache/SuspenseCache.d.cts +2 -2
  164. package/__cjs/react/internal/cache/getSuspenseCache.cjs.map +1 -1
  165. package/__cjs/react/internal/cache/getSuspenseCache.d.cts +6 -4
  166. package/__cjs/react/internal/index.cjs +1 -0
  167. package/__cjs/react/internal/index.cjs.map +1 -1
  168. package/__cjs/react/internal/index.d.cts +1 -1
  169. package/__cjs/react/internal/types.d.cts +3 -3
  170. package/__cjs/react/query-preloader/createQueryPreloader.cjs +1 -1
  171. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  172. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +31 -31
  173. package/__cjs/react/ssr/prerenderStatic.cjs +5 -4
  174. package/__cjs/react/ssr/prerenderStatic.cjs.map +1 -1
  175. package/__cjs/react/ssr/prerenderStatic.d.cts +11 -9
  176. package/__cjs/react/ssr/useSSRQuery.cjs.map +1 -1
  177. package/__cjs/react/types/deprecated.d.cts +1 -1
  178. package/__cjs/react/types/types.documentation.d.cts +10 -10
  179. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  180. package/__cjs/testing/core/mocking/mockLink.d.cts +3 -2
  181. package/__cjs/testing/core/types/deprecated.d.cts +3 -2
  182. package/__cjs/testing/react/MockedProvider.cjs.map +1 -1
  183. package/__cjs/testing/react/MockedProvider.d.cts +2 -3
  184. package/__cjs/utilities/HKT.d.cts +8 -7
  185. package/__cjs/utilities/caching/sizes.cjs +3 -3
  186. package/__cjs/utilities/caching/sizes.cjs.map +1 -1
  187. package/__cjs/utilities/caching/sizes.d.cts +4 -6
  188. package/__cjs/utilities/graphql/DocumentTransform.cjs +2 -2
  189. package/__cjs/utilities/graphql/DocumentTransform.cjs.map +1 -1
  190. package/__cjs/utilities/index.cjs +2 -3
  191. package/__cjs/utilities/index.cjs.map +1 -1
  192. package/__cjs/utilities/index.d.cts +1 -2
  193. package/__cjs/utilities/{shared → internal}/canonicalStringify.cjs +5 -7
  194. package/__cjs/utilities/internal/canonicalStringify.cjs.map +1 -0
  195. package/__cjs/utilities/{shared → internal}/canonicalStringify.d.cts +1 -1
  196. package/__cjs/utilities/internal/checkDocument.cjs +2 -2
  197. package/__cjs/utilities/internal/checkDocument.cjs.map +1 -1
  198. package/__cjs/utilities/internal/createFragmentMap.cjs.map +1 -1
  199. package/__cjs/{core → utilities/internal}/equalByQuery.cjs +13 -7
  200. package/__cjs/utilities/internal/equalByQuery.cjs.map +1 -0
  201. package/__cjs/utilities/internal/equalByQuery.d.cts +5 -0
  202. package/__cjs/utilities/internal/getFragmentQueryDocument.cjs +13 -3
  203. package/__cjs/utilities/internal/getFragmentQueryDocument.cjs.map +1 -1
  204. package/__cjs/utilities/internal/getFragmentQueryDocument.d.cts +13 -3
  205. package/__cjs/utilities/internal/getMemoryInternals.cjs.map +1 -1
  206. package/__cjs/utilities/internal/getStoreKeyName.cjs +1 -2
  207. package/__cjs/utilities/internal/getStoreKeyName.cjs.map +1 -1
  208. package/__cjs/utilities/internal/index.cjs +6 -2
  209. package/__cjs/utilities/internal/index.cjs.map +1 -1
  210. package/__cjs/utilities/internal/index.d.cts +2 -0
  211. package/__cjs/utilities/internal/mergeOptions.cjs.map +1 -1
  212. package/__cjs/utilities/internal/mergeOptions.d.cts +2 -2
  213. package/__cjs/utilities/internal/toQueryResult.cjs.map +1 -1
  214. package/__cjs/utilities/internal/toQueryResult.d.cts +2 -2
  215. package/__cjs/utilities/internal/types/DocumentationTypes.d.cts +16 -2
  216. package/__cjs/utilities/internal/types/NoInfer.d.cts +31 -25
  217. package/__cjs/utilities/subscriptions/relay/index.cjs +2 -0
  218. package/__cjs/utilities/subscriptions/relay/index.cjs.map +1 -1
  219. package/__cjs/version.cjs +1 -1
  220. package/cache/core/cache.d.ts +65 -64
  221. package/cache/core/cache.js +3 -7
  222. package/cache/core/cache.js.map +1 -1
  223. package/cache/core/types/Cache.d.ts +200 -15
  224. package/cache/core/types/Cache.js +1 -3
  225. package/cache/core/types/Cache.js.map +1 -1
  226. package/cache/deprecated.d.ts +6 -0
  227. package/cache/deprecated.js +2 -0
  228. package/cache/deprecated.js.map +1 -0
  229. package/cache/index.d.ts +2 -2
  230. package/cache/index.js.map +1 -1
  231. package/cache/inmemory/entityStore.d.ts +17 -16
  232. package/cache/inmemory/entityStore.js +25 -28
  233. package/cache/inmemory/entityStore.js.map +1 -1
  234. package/cache/inmemory/inMemoryCache.d.ts +4 -4
  235. package/cache/inmemory/inMemoryCache.js.map +1 -1
  236. package/cache/inmemory/key-extractor.js +1 -1
  237. package/cache/inmemory/policies.d.ts +3 -2
  238. package/cache/inmemory/policies.js +4 -4
  239. package/cache/inmemory/policies.js.map +1 -1
  240. package/cache/inmemory/readFromStore.js +2 -2
  241. package/cache/inmemory/writeToStore.d.ts +1 -1
  242. package/cache/inmemory/writeToStore.js +4 -4
  243. package/cache/inmemory/writeToStore.js.map +1 -1
  244. package/core/ApolloClient.d.ts +774 -180
  245. package/core/ApolloClient.js +92 -110
  246. package/core/ApolloClient.js.map +1 -1
  247. package/core/ObservableQuery.d.ts +120 -68
  248. package/core/ObservableQuery.js +10 -10
  249. package/core/ObservableQuery.js.map +1 -1
  250. package/core/QueryInfo.d.ts +5 -4
  251. package/core/QueryInfo.js.map +1 -1
  252. package/core/QueryManager.d.ts +17 -17
  253. package/core/QueryManager.js +15 -13
  254. package/core/QueryManager.js.map +1 -1
  255. package/core/deprecated.d.ts +29 -0
  256. package/core/deprecated.js +2 -0
  257. package/core/deprecated.js.map +1 -0
  258. package/core/index.d.ts +9 -5
  259. package/core/index.js.map +1 -1
  260. package/core/types.d.ts +29 -129
  261. package/core/types.js.map +1 -1
  262. package/core/watchQueryOptions.d.ts +9 -298
  263. package/core/watchQueryOptions.js.map +1 -1
  264. package/dev/setErrorMessageHandler.d.ts +4 -4
  265. package/dev/setErrorMessageHandler.js.map +1 -1
  266. package/errors/CombinedGraphQLErrors.d.ts +147 -12
  267. package/errors/CombinedGraphQLErrors.js +60 -12
  268. package/errors/CombinedGraphQLErrors.js.map +1 -1
  269. package/errors/CombinedProtocolErrors.d.ts +127 -3
  270. package/errors/CombinedProtocolErrors.js +49 -2
  271. package/errors/CombinedProtocolErrors.js.map +1 -1
  272. package/errors/LinkError.d.ts +45 -2
  273. package/errors/LinkError.js +45 -2
  274. package/errors/LinkError.js.map +1 -1
  275. package/errors/LocalStateError.d.ts +42 -6
  276. package/errors/LocalStateError.js +36 -6
  277. package/errors/LocalStateError.js.map +1 -1
  278. package/errors/ServerError.d.ts +71 -12
  279. package/errors/ServerError.js +51 -9
  280. package/errors/ServerError.js.map +1 -1
  281. package/errors/ServerParseError.d.ts +72 -17
  282. package/errors/ServerParseError.js +46 -9
  283. package/errors/ServerParseError.js.map +1 -1
  284. package/errors/UnconventionalError.d.ts +46 -2
  285. package/errors/UnconventionalError.js +46 -2
  286. package/errors/UnconventionalError.js.map +1 -1
  287. package/incremental/handlers/notImplemented.js +1 -1
  288. package/invariantErrorCodes.js +72 -80
  289. package/link/batch/batchLink.js.map +1 -1
  290. package/link/batch-http/batchHttpLink.js +1 -1
  291. package/link/batch-http/batchHttpLink.js.map +1 -1
  292. package/link/client-awareness/ClientAwarenessLink.d.ts +4 -4
  293. package/link/client-awareness/ClientAwarenessLink.js.map +1 -1
  294. package/link/context/index.d.ts +1 -1
  295. package/link/context/index.js +1 -1
  296. package/link/context/index.js.map +1 -1
  297. package/link/core/ApolloLink.js +2 -2
  298. package/link/core/types.d.ts +2 -2
  299. package/link/core/types.js.map +1 -1
  300. package/link/error/index.d.ts +16 -1
  301. package/link/error/index.js.map +1 -1
  302. package/link/http/HttpLink.d.ts +2 -1
  303. package/link/http/HttpLink.js.map +1 -1
  304. package/link/http/checkFetcher.js +1 -1
  305. package/link/http/parseAndCheckHttpResponse.js +1 -1
  306. package/link/http/serializeFetchParameter.js +1 -1
  307. package/link/persisted-queries/index.d.ts +11 -11
  308. package/link/persisted-queries/index.js +2 -2
  309. package/link/persisted-queries/index.js.map +1 -1
  310. package/link/retry/delayFunction.d.ts +1 -1
  311. package/link/retry/delayFunction.js.map +1 -1
  312. package/link/retry/retryFunction.d.ts +1 -1
  313. package/link/retry/retryFunction.js.map +1 -1
  314. package/link/retry/retryLink.js.map +1 -1
  315. package/link/schema/index.js.map +1 -1
  316. package/link/utils/validateOperation.js +1 -1
  317. package/link/ws/index.js.map +1 -1
  318. package/local-state/LocalState.d.ts +94 -0
  319. package/local-state/LocalState.js +55 -9
  320. package/local-state/LocalState.js.map +1 -1
  321. package/masking/GraphQLCodegenDataMasking.d.ts +6 -7
  322. package/masking/GraphQLCodegenDataMasking.js.map +1 -1
  323. package/masking/internal/types.d.ts +70 -70
  324. package/masking/internal/types.js.map +1 -1
  325. package/masking/maskDefinition.js +2 -2
  326. package/masking/maskFragment.js +2 -2
  327. package/masking/maskOperation.js +1 -1
  328. package/masking/types.js.map +1 -1
  329. package/masking/utils.js +3 -3
  330. package/package.json +1 -1
  331. package/react/context/ApolloContext.js +1 -1
  332. package/react/context/ApolloProvider.js +1 -1
  333. package/react/hooks/internal/useDeepMemo.js +0 -3
  334. package/react/hooks/internal/useDeepMemo.js.map +1 -1
  335. package/react/hooks/internal/validateSuspenseHookOptions.d.ts +2 -2
  336. package/react/hooks/internal/validateSuspenseHookOptions.js.map +1 -1
  337. package/react/hooks/internal/wrapHook.d.ts +8 -7
  338. package/react/hooks/internal/wrapHook.js +1 -0
  339. package/react/hooks/internal/wrapHook.js.map +1 -1
  340. package/react/hooks/useApolloClient.d.ts +2 -2
  341. package/react/hooks/useApolloClient.js +2 -2
  342. package/react/hooks/useApolloClient.js.map +1 -1
  343. package/react/hooks/useBackgroundQuery.d.ts +814 -86
  344. package/react/hooks/useBackgroundQuery.js.map +1 -1
  345. package/react/hooks/useFragment.d.ts +54 -3
  346. package/react/hooks/useFragment.js +7 -0
  347. package/react/hooks/useFragment.js.map +1 -1
  348. package/react/hooks/useLazyQuery.d.ts +309 -119
  349. package/react/hooks/useLazyQuery.js +0 -38
  350. package/react/hooks/useLazyQuery.js.map +1 -1
  351. package/react/hooks/useLoadableQuery.d.ts +113 -126
  352. package/react/hooks/useLoadableQuery.js.map +1 -1
  353. package/react/hooks/useMutation.d.ts +57 -17
  354. package/react/hooks/useMutation.js +6 -7
  355. package/react/hooks/useMutation.js.map +1 -1
  356. package/react/hooks/useQuery.d.ts +163 -18
  357. package/react/hooks/useQuery.js +1 -35
  358. package/react/hooks/useQuery.js.map +1 -1
  359. package/react/hooks/useQueryRefHandlers.d.ts +21 -1
  360. package/react/hooks/useQueryRefHandlers.js +2 -1
  361. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  362. package/react/hooks/useReactiveVar.d.ts +2 -1
  363. package/react/hooks/useReactiveVar.js +2 -1
  364. package/react/hooks/useReactiveVar.js.map +1 -1
  365. package/react/hooks/useReadQuery.d.ts +96 -17
  366. package/react/hooks/useReadQuery.js +29 -0
  367. package/react/hooks/useReadQuery.js.map +1 -1
  368. package/react/hooks/useSubscription.d.ts +99 -32
  369. package/react/hooks/useSubscription.js +8 -9
  370. package/react/hooks/useSubscription.js.map +1 -1
  371. package/react/hooks/useSuspenseFragment.d.ts +62 -30
  372. package/react/hooks/useSuspenseFragment.js.map +1 -1
  373. package/react/hooks/useSuspenseQuery.d.ts +438 -17
  374. package/react/hooks/useSuspenseQuery.js +4 -1
  375. package/react/hooks/useSuspenseQuery.js.map +1 -1
  376. package/react/hooks-compiled/internal/useDeepMemo.js +0 -3
  377. package/react/hooks-compiled/internal/useDeepMemo.js.map +1 -1
  378. package/react/hooks-compiled/internal/validateSuspenseHookOptions.d.ts +2 -2
  379. package/react/hooks-compiled/internal/validateSuspenseHookOptions.js.map +1 -1
  380. package/react/hooks-compiled/internal/wrapHook.d.ts +8 -7
  381. package/react/hooks-compiled/internal/wrapHook.js +1 -0
  382. package/react/hooks-compiled/internal/wrapHook.js.map +1 -1
  383. package/react/hooks-compiled/useApolloClient.d.ts +2 -2
  384. package/react/hooks-compiled/useApolloClient.js +2 -2
  385. package/react/hooks-compiled/useApolloClient.js.map +1 -1
  386. package/react/hooks-compiled/useBackgroundQuery.d.ts +814 -86
  387. package/react/hooks-compiled/useBackgroundQuery.js.map +1 -1
  388. package/react/hooks-compiled/useFragment.d.ts +54 -3
  389. package/react/hooks-compiled/useFragment.js +7 -0
  390. package/react/hooks-compiled/useFragment.js.map +1 -1
  391. package/react/hooks-compiled/useLazyQuery.d.ts +309 -119
  392. package/react/hooks-compiled/useLazyQuery.js +0 -38
  393. package/react/hooks-compiled/useLazyQuery.js.map +1 -1
  394. package/react/hooks-compiled/useLoadableQuery.d.ts +113 -126
  395. package/react/hooks-compiled/useLoadableQuery.js.map +1 -1
  396. package/react/hooks-compiled/useMutation.d.ts +57 -17
  397. package/react/hooks-compiled/useMutation.js +6 -7
  398. package/react/hooks-compiled/useMutation.js.map +1 -1
  399. package/react/hooks-compiled/useQuery.d.ts +163 -18
  400. package/react/hooks-compiled/useQuery.js +1 -35
  401. package/react/hooks-compiled/useQuery.js.map +1 -1
  402. package/react/hooks-compiled/useQueryRefHandlers.d.ts +21 -1
  403. package/react/hooks-compiled/useQueryRefHandlers.js +2 -1
  404. package/react/hooks-compiled/useQueryRefHandlers.js.map +1 -1
  405. package/react/hooks-compiled/useReactiveVar.d.ts +2 -1
  406. package/react/hooks-compiled/useReactiveVar.js +2 -1
  407. package/react/hooks-compiled/useReactiveVar.js.map +1 -1
  408. package/react/hooks-compiled/useReadQuery.d.ts +96 -17
  409. package/react/hooks-compiled/useReadQuery.js +29 -0
  410. package/react/hooks-compiled/useReadQuery.js.map +1 -1
  411. package/react/hooks-compiled/useSubscription.d.ts +99 -32
  412. package/react/hooks-compiled/useSubscription.js +8 -9
  413. package/react/hooks-compiled/useSubscription.js.map +1 -1
  414. package/react/hooks-compiled/useSuspenseFragment.d.ts +62 -30
  415. package/react/hooks-compiled/useSuspenseFragment.js.map +1 -1
  416. package/react/hooks-compiled/useSuspenseQuery.d.ts +438 -17
  417. package/react/hooks-compiled/useSuspenseQuery.js.map +1 -1
  418. package/react/index.compiled.d.ts +0 -1
  419. package/react/index.compiled.js +0 -1
  420. package/react/index.compiled.js.map +1 -1
  421. package/react/index.d.ts +0 -1
  422. package/react/index.js +0 -1
  423. package/react/index.js.map +1 -1
  424. package/react/index.react-server.d.ts +0 -1
  425. package/react/index.react-server.js +0 -2
  426. package/react/index.react-server.js.map +1 -1
  427. package/react/internal/cache/FragmentReference.d.ts +2 -3
  428. package/react/internal/cache/FragmentReference.js.map +1 -1
  429. package/react/internal/cache/QueryReference.d.ts +11 -11
  430. package/react/internal/cache/QueryReference.js.map +1 -1
  431. package/react/internal/cache/SuspenseCache.d.ts +2 -2
  432. package/react/internal/cache/SuspenseCache.js.map +1 -1
  433. package/react/internal/cache/getSuspenseCache.d.ts +6 -4
  434. package/react/internal/cache/getSuspenseCache.js.map +1 -1
  435. package/react/internal/index.d.ts +1 -1
  436. package/react/internal/index.js +1 -0
  437. package/react/internal/index.js.map +1 -1
  438. package/react/internal/types.d.ts +3 -3
  439. package/react/internal/types.js.map +1 -1
  440. package/react/query-preloader/createQueryPreloader.d.ts +31 -31
  441. package/react/query-preloader/createQueryPreloader.js +1 -1
  442. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  443. package/react/ssr/prerenderStatic.d.ts +11 -9
  444. package/react/ssr/prerenderStatic.js +5 -4
  445. package/react/ssr/prerenderStatic.js.map +1 -1
  446. package/react/ssr/useSSRQuery.js.map +1 -1
  447. package/react/types/deprecated.d.ts +1 -1
  448. package/react/types/deprecated.js.map +1 -1
  449. package/react/types/types.documentation.d.ts +10 -10
  450. package/react/types/types.documentation.js.map +1 -1
  451. package/testing/core/mocking/mockLink.d.ts +3 -2
  452. package/testing/core/mocking/mockLink.js.map +1 -1
  453. package/testing/core/types/deprecated.d.ts +3 -2
  454. package/testing/core/types/deprecated.js.map +1 -1
  455. package/testing/react/MockedProvider.d.ts +2 -3
  456. package/testing/react/MockedProvider.js.map +1 -1
  457. package/utilities/HKT.d.ts +8 -7
  458. package/utilities/HKT.js.map +1 -1
  459. package/utilities/caching/sizes.d.ts +4 -6
  460. package/utilities/caching/sizes.js +3 -3
  461. package/utilities/caching/sizes.js.map +1 -1
  462. package/utilities/graphql/DocumentTransform.js +1 -1
  463. package/utilities/graphql/DocumentTransform.js.map +1 -1
  464. package/utilities/index.d.ts +1 -2
  465. package/utilities/index.js +1 -2
  466. package/utilities/index.js.map +1 -1
  467. package/utilities/{shared → internal}/canonicalStringify.d.ts +1 -1
  468. package/utilities/{shared → internal}/canonicalStringify.js +4 -6
  469. package/utilities/internal/canonicalStringify.js.map +1 -0
  470. package/utilities/internal/checkDocument.js +1 -1
  471. package/utilities/internal/checkDocument.js.map +1 -1
  472. package/utilities/internal/createFragmentMap.js.map +1 -1
  473. package/utilities/internal/equalByQuery.d.ts +5 -0
  474. package/{core → utilities/internal}/equalByQuery.js +7 -1
  475. package/utilities/internal/equalByQuery.js.map +1 -0
  476. package/utilities/internal/getFragmentQueryDocument.d.ts +13 -3
  477. package/utilities/internal/getFragmentQueryDocument.js +13 -3
  478. package/utilities/internal/getFragmentQueryDocument.js.map +1 -1
  479. package/utilities/internal/getMemoryInternals.js.map +1 -1
  480. package/utilities/internal/getStoreKeyName.js +1 -2
  481. package/utilities/internal/getStoreKeyName.js.map +1 -1
  482. package/utilities/internal/index.d.ts +2 -0
  483. package/utilities/internal/index.js +2 -0
  484. package/utilities/internal/index.js.map +1 -1
  485. package/utilities/internal/mergeOptions.d.ts +2 -2
  486. package/utilities/internal/mergeOptions.js.map +1 -1
  487. package/utilities/internal/toQueryResult.d.ts +2 -2
  488. package/utilities/internal/toQueryResult.js.map +1 -1
  489. package/utilities/internal/types/DocumentationTypes.d.ts +16 -2
  490. package/utilities/internal/types/DocumentationTypes.js.map +1 -1
  491. package/utilities/internal/types/NoInfer.d.ts +31 -25
  492. package/utilities/internal/types/NoInfer.js.map +1 -1
  493. package/utilities/subscriptions/relay/index.js +2 -0
  494. package/utilities/subscriptions/relay/index.js.map +1 -1
  495. package/version.js +1 -1
  496. package/__cjs/cache/core/types/DataProxy.cjs.map +0 -1
  497. package/__cjs/cache/core/types/DataProxy.d.cts +0 -140
  498. package/__cjs/core/equalByQuery.cjs.map +0 -1
  499. package/__cjs/core/equalByQuery.d.cts +0 -4
  500. package/__cjs/react/context/ApolloConsumer.cjs +0 -16
  501. package/__cjs/react/context/ApolloConsumer.cjs.map +0 -1
  502. package/__cjs/react/context/ApolloConsumer.d.cts +0 -10
  503. package/__cjs/utilities/shared/canonicalStringify.cjs.map +0 -1
  504. package/cache/core/types/DataProxy.d.ts +0 -140
  505. package/cache/core/types/DataProxy.js +0 -2
  506. package/cache/core/types/DataProxy.js.map +0 -1
  507. package/core/equalByQuery.d.ts +0 -4
  508. package/core/equalByQuery.js.map +0 -1
  509. package/react/context/ApolloConsumer.d.ts +0 -10
  510. package/react/context/ApolloConsumer.js +0 -11
  511. package/react/context/ApolloConsumer.js.map +0 -1
  512. package/utilities/shared/canonicalStringify.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { ApolloClient, DataState, DefaultContext, DocumentNode, ErrorLike, ErrorPolicy, GetDataState, MaybeMasked, OperationVariables, RefetchWritePolicy, TypedDocumentNode, WatchQueryFetchPolicy, WatchQueryOptions } from "@apollo/client";
1
+ import type { ApolloClient, DataState, DefaultContext, DocumentNode, ErrorLike, ErrorPolicy, GetDataState, MaybeMasked, OperationVariables, RefetchWritePolicy, TypedDocumentNode, WatchQueryFetchPolicy } from "@apollo/client";
2
2
  import type { SubscribeToMoreFunction } from "@apollo/client";
3
3
  import { NetworkStatus } from "@apollo/client";
4
4
  import type { FetchMoreFunction, RefetchFunction } from "@apollo/client/react/internal";
@@ -87,7 +87,7 @@ export declare namespace useSuspenseQuery {
87
87
  *
88
88
  * We recommend using `skipToken` in place of the `skip` option as it is more type-safe.
89
89
  *
90
- * This option is deprecated and only supported to ease the migration from useQuery. It will be removed in a future release.
90
+ * This option is deprecated and only supported to ease the migration from `useQuery`. It will be removed in a future release. Please use [`skipToken`](https://www.apollographql.com/docs/react/api/react/hooks#skiptoken) instead of the `skip` option as it is more type-safe.
91
91
  *
92
92
  * @docGroup
93
93
  *
@@ -95,10 +95,14 @@ export declare namespace useSuspenseQuery {
95
95
  *
96
96
  *
97
97
  * @example Recommended usage of `skipToken`:
98
+ *
98
99
  * ```ts
99
- * import { skipToken, useSuspenseQuery } from '@apollo/client';
100
+ * import { skipToken, useSuspenseQuery } from "@apollo/client";
100
101
  *
101
- * const { data } = useSuspenseQuery(query, id ? { variables: { id } } : skipToken);
102
+ * const { data } = useSuspenseQuery(
103
+ * query,
104
+ * id ? { variables: { id } } : skipToken
105
+ * );
102
106
  * ```
103
107
  */
104
108
  skip?: boolean;
@@ -106,17 +110,9 @@ export declare namespace useSuspenseQuery {
106
110
  }
107
111
  type Options<TVariables extends OperationVariables = OperationVariables> = Base.Options<TVariables> & VariablesOption<TVariables>;
108
112
  namespace DocumentationTypes {
109
- interface Options<TVariables extends OperationVariables = OperationVariables> extends Base.Options<TVariables> {
110
- /**
111
- * An object containing all of the GraphQL variables your query requires to execute.
112
- *
113
- * Each key in the object corresponds to a variable name, and that key's value corresponds to the variable value.
114
- *
115
- * @docGroup
116
- *
117
- * 1. Operation options
118
- */
119
- variables?: TVariables;
113
+ namespace useSuspenseQuery {
114
+ interface Options<TVariables extends OperationVariables = OperationVariables> extends Base.Options<TVariables>, UtilityDocumentationTypes.VariableOptions<TVariables> {
115
+ }
120
116
  }
121
117
  }
122
118
  namespace Base {
@@ -148,6 +144,10 @@ export declare namespace useSuspenseQuery {
148
144
  * @docGroup
149
145
  *
150
146
  * 3. Helper functions
147
+ *
148
+ *
149
+ * @remarks
150
+ * Calling this function will cause the component to re-suspend, unless the call site is wrapped in [`startTransition`](https://react.dev/reference/react/startTransition).
151
151
  */
152
152
  fetchMore: FetchMoreFunction<TData, TVariables>;
153
153
  /**
@@ -167,9 +167,15 @@ export declare namespace useSuspenseQuery {
167
167
  *
168
168
  * See also [Refetching](https://www.apollographql.com/docs/react/data/queries/#refetching).
169
169
  *
170
+ * Returns a `ResultPromise` with an additional `.retain()` method. Calling `.retain()` keeps the network operation running even if the `ObservableQuery` no longer requires the result.
171
+ *
170
172
  * @docGroup
171
173
  *
172
174
  * 3. Helper functions
175
+ *
176
+ *
177
+ * @remarks
178
+ * Calling this function will cause the component to re-suspend, unless the call site is wrapped in [`startTransition`](https://react.dev/reference/react/startTransition).
173
179
  */
174
180
  refetch: RefetchFunction<TData, TVariables>;
175
181
  /**
@@ -187,42 +193,457 @@ export declare namespace useSuspenseQuery {
187
193
  }
188
194
  type Result<TData = unknown, TVariables extends OperationVariables = OperationVariables, TStates extends DataState<TData>["dataState"] = DataState<TData>["dataState"]> = Base.Result<TData, TVariables> & GetDataState<MaybeMasked<TData>, TStates>;
189
195
  namespace DocumentationTypes {
190
- interface Result<TData = unknown, TVariables extends OperationVariables = OperationVariables> extends Base.Result<TData, TVariables>, UtilityDocumentationTypes.DataState<TData> {
196
+ namespace useSuspenseQuery {
197
+ interface Result<TData = unknown, TVariables extends OperationVariables = OperationVariables> extends Base.Result<TData, TVariables>, UtilityDocumentationTypes.DataState<TData> {
198
+ }
191
199
  }
192
200
  }
201
+ namespace DocumentationTypes {
202
+ /**
203
+ * Test For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
204
+ *
205
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
206
+ *
207
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
208
+ *
209
+ * @example
210
+ * ```jsx
211
+ * import { Suspense } from "react";
212
+ * import { useSuspenseQuery } from "@apollo/client";
213
+ *
214
+ * const listQuery = gql`
215
+ * query {
216
+ * list {
217
+ * id
218
+ * }
219
+ * }
220
+ * `;
221
+ *
222
+ * function App() {
223
+ * return (
224
+ * <Suspense fallback={<Spinner />}>
225
+ * <List />
226
+ * </Suspense>
227
+ * );
228
+ * }
229
+ *
230
+ * function List() {
231
+ * const { data } = useSuspenseQuery(listQuery);
232
+ *
233
+ * return (
234
+ * <ol>
235
+ * {data.list.map((item) => (
236
+ * <Item key={item.id} id={item.id} />
237
+ * ))}
238
+ * </ol>
239
+ * );
240
+ * }
241
+ * ```
242
+ */
243
+ function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options?: useSuspenseQuery.Options<TVariables>): useSuspenseQuery.Result<TData, TVariables>;
244
+ }
193
245
  }
246
+ /**
247
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
248
+ *
249
+ * @example
250
+ *
251
+ * ```jsx
252
+ * import { Suspense } from "react";
253
+ * import { useSuspenseQuery } from "@apollo/client";
254
+ *
255
+ * const listQuery = gql`
256
+ * query {
257
+ * list {
258
+ * id
259
+ * }
260
+ * }
261
+ * `;
262
+ *
263
+ * function App() {
264
+ * return (
265
+ * <Suspense fallback={<Spinner />}>
266
+ * <List />
267
+ * </Suspense>
268
+ * );
269
+ * }
270
+ *
271
+ * function List() {
272
+ * const { data } = useSuspenseQuery(listQuery);
273
+ *
274
+ * return (
275
+ * <ol>
276
+ * {data.list.map((item) => (
277
+ * <Item key={item.id} id={item.id} />
278
+ * ))}
279
+ * </ol>
280
+ * );
281
+ * }
282
+ * ```
283
+ *
284
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
285
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
286
+ */
194
287
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useSuspenseQuery.Options<NoInfer<TVariables>> & {
195
288
  returnPartialData: true;
196
289
  errorPolicy: "ignore" | "all";
197
290
  }): useSuspenseQuery.Result<TData, TVariables, "complete" | "streaming" | "partial" | "empty">;
291
+ /**
292
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
293
+ *
294
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
295
+ *
296
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
297
+ *
298
+ * @example
299
+ * ```jsx
300
+ * import { Suspense } from "react";
301
+ * import { useSuspenseQuery } from "@apollo/client";
302
+ *
303
+ * const listQuery = gql`
304
+ * query {
305
+ * list {
306
+ * id
307
+ * }
308
+ * }
309
+ * `;
310
+ *
311
+ * function App() {
312
+ * return (
313
+ * <Suspense fallback={<Spinner />}>
314
+ * <List />
315
+ * </Suspense>
316
+ * );
317
+ * }
318
+ *
319
+ * function List() {
320
+ * const { data } = useSuspenseQuery(listQuery);
321
+ *
322
+ * return (
323
+ * <ol>
324
+ * {data.list.map((item) => (
325
+ * <Item key={item.id} id={item.id} />
326
+ * ))}
327
+ * </ol>
328
+ * );
329
+ * }
330
+ * ```
331
+ */
198
332
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useSuspenseQuery.Options<NoInfer<TVariables>> & {
199
333
  errorPolicy: "ignore" | "all";
200
334
  }): useSuspenseQuery.Result<TData, TVariables, "complete" | "streaming" | "empty">;
335
+ /**
336
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
337
+ *
338
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
339
+ *
340
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
341
+ *
342
+ * @example
343
+ * ```jsx
344
+ * import { Suspense } from "react";
345
+ * import { useSuspenseQuery } from "@apollo/client";
346
+ *
347
+ * const listQuery = gql`
348
+ * query {
349
+ * list {
350
+ * id
351
+ * }
352
+ * }
353
+ * `;
354
+ *
355
+ * function App() {
356
+ * return (
357
+ * <Suspense fallback={<Spinner />}>
358
+ * <List />
359
+ * </Suspense>
360
+ * );
361
+ * }
362
+ *
363
+ * function List() {
364
+ * const { data } = useSuspenseQuery(listQuery);
365
+ *
366
+ * return (
367
+ * <ol>
368
+ * {data.list.map((item) => (
369
+ * <Item key={item.id} id={item.id} />
370
+ * ))}
371
+ * </ol>
372
+ * );
373
+ * }
374
+ * ```
375
+ */
201
376
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useSuspenseQuery.Options<NoInfer<TVariables>> & {
202
377
  skip: boolean;
203
378
  returnPartialData: true;
204
379
  }): useSuspenseQuery.Result<TData, TVariables, "complete" | "empty" | "streaming" | "partial">;
380
+ /**
381
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
382
+ *
383
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
384
+ *
385
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
386
+ *
387
+ * @example
388
+ * ```jsx
389
+ * import { Suspense } from "react";
390
+ * import { useSuspenseQuery } from "@apollo/client";
391
+ *
392
+ * const listQuery = gql`
393
+ * query {
394
+ * list {
395
+ * id
396
+ * }
397
+ * }
398
+ * `;
399
+ *
400
+ * function App() {
401
+ * return (
402
+ * <Suspense fallback={<Spinner />}>
403
+ * <List />
404
+ * </Suspense>
405
+ * );
406
+ * }
407
+ *
408
+ * function List() {
409
+ * const { data } = useSuspenseQuery(listQuery);
410
+ *
411
+ * return (
412
+ * <ol>
413
+ * {data.list.map((item) => (
414
+ * <Item key={item.id} id={item.id} />
415
+ * ))}
416
+ * </ol>
417
+ * );
418
+ * }
419
+ * ```
420
+ */
205
421
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useSuspenseQuery.Options<NoInfer<TVariables>> & {
206
422
  returnPartialData: true;
207
423
  }): useSuspenseQuery.Result<TData, TVariables, "partial" | "streaming" | "complete">;
424
+ /**
425
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
426
+ *
427
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
428
+ *
429
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
430
+ *
431
+ * @example
432
+ * ```jsx
433
+ * import { Suspense } from "react";
434
+ * import { useSuspenseQuery } from "@apollo/client";
435
+ *
436
+ * const listQuery = gql`
437
+ * query {
438
+ * list {
439
+ * id
440
+ * }
441
+ * }
442
+ * `;
443
+ *
444
+ * function App() {
445
+ * return (
446
+ * <Suspense fallback={<Spinner />}>
447
+ * <List />
448
+ * </Suspense>
449
+ * );
450
+ * }
451
+ *
452
+ * function List() {
453
+ * const { data } = useSuspenseQuery(listQuery);
454
+ *
455
+ * return (
456
+ * <ol>
457
+ * {data.list.map((item) => (
458
+ * <Item key={item.id} id={item.id} />
459
+ * ))}
460
+ * </ol>
461
+ * );
462
+ * }
463
+ * ```
464
+ */
208
465
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: useSuspenseQuery.Options<NoInfer<TVariables>> & {
209
466
  skip: boolean;
210
467
  }): useSuspenseQuery.Result<TData, TVariables, "complete" | "streaming" | "empty">;
468
+ /**
469
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
470
+ *
471
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
472
+ *
473
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
474
+ *
475
+ * @example
476
+ * ```jsx
477
+ * import { Suspense } from "react";
478
+ * import { useSuspenseQuery } from "@apollo/client";
479
+ *
480
+ * const listQuery = gql`
481
+ * query {
482
+ * list {
483
+ * id
484
+ * }
485
+ * }
486
+ * `;
487
+ *
488
+ * function App() {
489
+ * return (
490
+ * <Suspense fallback={<Spinner />}>
491
+ * <List />
492
+ * </Suspense>
493
+ * );
494
+ * }
495
+ *
496
+ * function List() {
497
+ * const { data } = useSuspenseQuery(listQuery);
498
+ *
499
+ * return (
500
+ * <ol>
501
+ * {data.list.map((item) => (
502
+ * <Item key={item.id} id={item.id} />
503
+ * ))}
504
+ * </ol>
505
+ * );
506
+ * }
507
+ * ```
508
+ */
211
509
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SkipToken | (useSuspenseQuery.Options<NoInfer<TVariables>> & {
212
510
  returnPartialData: true;
213
511
  })): useSuspenseQuery.Result<TData, TVariables, "empty" | "streaming" | "complete" | "partial">;
512
+ /**
513
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
514
+ *
515
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
516
+ *
517
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
518
+ *
519
+ * @example
520
+ * ```jsx
521
+ * import { Suspense } from "react";
522
+ * import { useSuspenseQuery } from "@apollo/client";
523
+ *
524
+ * const listQuery = gql`
525
+ * query {
526
+ * list {
527
+ * id
528
+ * }
529
+ * }
530
+ * `;
531
+ *
532
+ * function App() {
533
+ * return (
534
+ * <Suspense fallback={<Spinner />}>
535
+ * <List />
536
+ * </Suspense>
537
+ * );
538
+ * }
539
+ *
540
+ * function List() {
541
+ * const { data } = useSuspenseQuery(listQuery);
542
+ *
543
+ * return (
544
+ * <ol>
545
+ * {data.list.map((item) => (
546
+ * <Item key={item.id} id={item.id} />
547
+ * ))}
548
+ * </ol>
549
+ * );
550
+ * }
551
+ * ```
552
+ */
214
553
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, ...[options]: {} extends TVariables ? [
215
554
  options?: useSuspenseQuery.Options<NoInfer<TVariables>>
216
555
  ] : [options: useSuspenseQuery.Options<NoInfer<TVariables>>]): useSuspenseQuery.Result<TData, TVariables, "complete" | "streaming">;
556
+ /**
557
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
558
+ *
559
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
560
+ *
561
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
562
+ *
563
+ * @example
564
+ * ```jsx
565
+ * import { Suspense } from "react";
566
+ * import { useSuspenseQuery } from "@apollo/client";
567
+ *
568
+ * const listQuery = gql`
569
+ * query {
570
+ * list {
571
+ * id
572
+ * }
573
+ * }
574
+ * `;
575
+ *
576
+ * function App() {
577
+ * return (
578
+ * <Suspense fallback={<Spinner />}>
579
+ * <List />
580
+ * </Suspense>
581
+ * );
582
+ * }
583
+ *
584
+ * function List() {
585
+ * const { data } = useSuspenseQuery(listQuery);
586
+ *
587
+ * return (
588
+ * <ol>
589
+ * {data.list.map((item) => (
590
+ * <Item key={item.id} id={item.id} />
591
+ * ))}
592
+ * </ol>
593
+ * );
594
+ * }
595
+ * ```
596
+ */
217
597
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, ...[options]: {} extends TVariables ? [
218
598
  options?: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>
219
599
  ] : [options: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>]): useSuspenseQuery.Result<TData, TVariables, "complete" | "streaming" | "empty">;
600
+ /**
601
+ * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).
602
+ *
603
+ * @param query - A GraphQL query document parsed into an AST by `gql`.
604
+ *
605
+ * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.
606
+ *
607
+ * @example
608
+ * ```jsx
609
+ * import { Suspense } from "react";
610
+ * import { useSuspenseQuery } from "@apollo/client";
611
+ *
612
+ * const listQuery = gql`
613
+ * query {
614
+ * list {
615
+ * id
616
+ * }
617
+ * }
618
+ * `;
619
+ *
620
+ * function App() {
621
+ * return (
622
+ * <Suspense fallback={<Spinner />}>
623
+ * <List />
624
+ * </Suspense>
625
+ * );
626
+ * }
627
+ *
628
+ * function List() {
629
+ * const { data } = useSuspenseQuery(listQuery);
630
+ *
631
+ * return (
632
+ * <ol>
633
+ * {data.list.map((item) => (
634
+ * <Item key={item.id} id={item.id} />
635
+ * ))}
636
+ * </ol>
637
+ * );
638
+ * }
639
+ * ```
640
+ */
220
641
  export declare function useSuspenseQuery<TData = unknown, TVariables extends OperationVariables = OperationVariables>(query: DocumentNode | TypedDocumentNode<TData, TVariables>, options: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>): useSuspenseQuery.Result<TData, TVariables, "complete" | "streaming" | "empty">;
221
642
  interface UseWatchQueryOptionsHookOptions<TData, TVariables extends OperationVariables> {
222
643
  client: ApolloClient;
223
644
  query: DocumentNode | TypedDocumentNode<TData, TVariables>;
224
645
  options: SkipToken | useSuspenseQuery.Options<TVariables>;
225
646
  }
226
- export declare function useWatchQueryOptions<TData, TVariables extends OperationVariables>({ client, query, options, }: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<TVariables, TData>;
647
+ export declare function useWatchQueryOptions<TData, TVariables extends OperationVariables>({ client, query, options, }: UseWatchQueryOptionsHookOptions<TData, TVariables>): ApolloClient.WatchQueryOptions<TData, TVariables>;
227
648
  export {};
228
649
  //# sourceMappingURL=useSuspenseQuery.d.ts.map
@@ -93,7 +93,10 @@ function useSuspenseQuery_(query, options) {
93
93
  export function useWatchQueryOptions({ client, query, options, }) {
94
94
  return useDeepMemo(() => {
95
95
  if (options === skipToken) {
96
- return { query, fetchPolicy: "standby" };
96
+ return {
97
+ query,
98
+ fetchPolicy: "standby",
99
+ };
97
100
  }
98
101
  const fetchPolicy = options.fetchPolicy ||
99
102
  client.defaultOptions.watchQuery?.fetchPolicy ||
@@ -1 +1 @@
1
- {"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\n\nimport type {\n ApolloClient,\n ApolloQueryResult,\n DataState,\n DefaultContext,\n DocumentNode,\n ErrorLike,\n ErrorPolicy,\n GetDataState,\n MaybeMasked,\n OperationVariables,\n RefetchWritePolicy,\n TypedDocumentNode,\n WatchQueryFetchPolicy,\n WatchQueryOptions,\n} from \"@apollo/client\";\nimport type { SubscribeToMoreFunction } from \"@apollo/client\";\nimport { NetworkStatus } from \"@apollo/client\";\nimport { canonicalStringify } from \"@apollo/client/cache\";\nimport type {\n CacheKey,\n FetchMoreFunction,\n QueryKey,\n RefetchFunction,\n} from \"@apollo/client/react/internal\";\nimport { getSuspenseCache } from \"@apollo/client/react/internal\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport type {\n DocumentationTypes as UtilityDocumentationTypes,\n NoInfer,\n VariablesOption,\n} from \"@apollo/client/utilities/internal\";\n\nimport type { SkipToken } from \"./constants.js\";\nimport { skipToken } from \"./constants.js\";\nimport { __use, useDeepMemo, wrapHook } from \"./internal/index.js\";\nimport { validateSuspenseHookOptions } from \"./internal/validateSuspenseHookOptions.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n\nexport declare namespace useSuspenseQuery {\n export type FetchPolicy = Extract<\n WatchQueryFetchPolicy,\n \"cache-first\" | \"network-only\" | \"no-cache\" | \"cache-and-network\"\n >;\n\n export namespace Base {\n export interface Options<\n TVariables extends OperationVariables = OperationVariables,\n > {\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#returnPartialData:member} */\n returnPartialData?: boolean;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#refetchWritePolicy_suspense:member} */\n refetchWritePolicy?: RefetchWritePolicy;\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 /**\n * {@inheritDoc @apollo/client!QueryOptionsDocumentation#skip_deprecated:member}\n *\n * @example Recommended usage of `skipToken`:\n * ```ts\n * import { skipToken, useSuspenseQuery } from '@apollo/client';\n *\n * const { data } = useSuspenseQuery(query, id ? { variables: { id } } : skipToken);\n * ```\n */\n skip?: boolean;\n }\n }\n export type Options<\n TVariables extends OperationVariables = OperationVariables,\n > = Base.Options<TVariables> & VariablesOption<TVariables>;\n\n export namespace DocumentationTypes {\n export interface Options<\n TVariables extends OperationVariables = OperationVariables,\n > extends Base.Options<TVariables> {\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#variables:member} */\n variables?: TVariables;\n }\n }\n\n export namespace Base {\n export interface Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n > {\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#client:member} */\n client: ApolloClient;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#error:member} */\n error: ErrorLike | undefined;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#fetchMore:member} */\n fetchMore: FetchMoreFunction<TData, TVariables>;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#networkStatus:member} */\n networkStatus: NetworkStatus;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#refetch:member} */\n refetch: RefetchFunction<TData, TVariables>;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#subscribeToMore:member} */\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n }\n }\n export type Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TStates extends\n DataState<TData>[\"dataState\"] = DataState<TData>[\"dataState\"],\n > = Base.Result<TData, TVariables> &\n GetDataState<MaybeMasked<TData>, TStates>;\n\n export namespace DocumentationTypes {\n export interface Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n > extends Base.Result<TData, TVariables>,\n UtilityDocumentationTypes.DataState<TData> {}\n }\n}\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n returnPartialData: true;\n errorPolicy: \"ignore\" | \"all\";\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"partial\" | \"empty\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n errorPolicy: \"ignore\" | \"all\";\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n skip: boolean;\n returnPartialData: true;\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"empty\" | \"streaming\" | \"partial\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n returnPartialData: true;\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"partial\" | \"streaming\" | \"complete\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n skip: boolean;\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | SkipToken\n | (useSuspenseQuery.Options<NoInfer<TVariables>> & {\n returnPartialData: true;\n })\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"empty\" | \"streaming\" | \"complete\" | \"partial\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n ...[options]: {} extends TVariables ?\n [options?: useSuspenseQuery.Options<NoInfer<TVariables>>]\n : [options: useSuspenseQuery.Options<NoInfer<TVariables>>]\n): useSuspenseQuery.Result<TData, TVariables, \"complete\" | \"streaming\">;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n ...[options]: {} extends TVariables ?\n [options?: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>]\n : [options: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>]\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"empty\" | \"streaming\" | \"complete\" | \"partial\"\n> {\n \"use no memo\";\n return wrapHook(\n \"useSuspenseQuery\",\n // eslint-disable-next-line react-compiler/react-compiler\n useSuspenseQuery_,\n useApolloClient(typeof options === \"object\" ? options.client : undefined)\n )(query, options ?? ({} as any));\n}\n\nfunction useSuspenseQuery_<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | (SkipToken & Partial<useSuspenseQuery.Options<TVariables>>)\n | useSuspenseQuery.Options<TVariables>\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"partial\" | \"complete\" | \"streaming\" | \"empty\"\n> {\n const client = useApolloClient(options.client);\n const suspenseCache = getSuspenseCache(client);\n const watchQueryOptions = useWatchQueryOptions<any, any>({\n client,\n query,\n options,\n });\n const { fetchPolicy, variables } = watchQueryOptions;\n const { queryKey = [] } = options;\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(watchQueryOptions)\n );\n\n let [current, setPromise] = React.useState<\n [QueryKey, Promise<ApolloQueryResult<any>>]\n >([queryRef.key, queryRef.promise]);\n\n // This saves us a re-execution of the render function when a variable changed.\n if (current[0] !== queryRef.key) {\n // eslint-disable-next-line react-compiler/react-compiler\n current[0] = queryRef.key;\n current[1] = queryRef.promise;\n }\n let promise = current[1];\n\n if (queryRef.didChangeOptions(watchQueryOptions)) {\n current[1] = promise = queryRef.applyOptions(watchQueryOptions);\n }\n\n React.useEffect(() => {\n const dispose = queryRef.retain();\n\n const removeListener = queryRef.listen((promise) => {\n setPromise([queryRef.key, promise]);\n });\n\n return () => {\n removeListener();\n dispose();\n };\n }, [queryRef]);\n\n const skipResult = React.useMemo<ApolloQueryResult<TData>>(() => {\n const error = queryRef.result.error;\n const complete = !!queryRef.result.data;\n\n return {\n loading: false,\n data: queryRef.result.data,\n dataState: queryRef.result.dataState,\n networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,\n error,\n complete,\n partial: !complete,\n };\n }, [queryRef.result]);\n\n const result = fetchPolicy === \"standby\" ? skipResult : __use(promise);\n\n const fetchMore = React.useCallback<\n FetchMoreFunction<unknown, OperationVariables>\n >(\n (options) => {\n const promise = queryRef.fetchMore(options);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n },\n [queryRef]\n ) as FetchMoreFunction<TData | undefined, TVariables>;\n\n const refetch: RefetchFunction<TData, TVariables> = React.useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n },\n [queryRef]\n );\n\n // TODO: The internalQueryRef doesn't have TVariables' type information so we have to cast it here\n const subscribeToMore = queryRef.observable\n .subscribeToMore as SubscribeToMoreFunction<TData | undefined, TVariables>;\n\n return React.useMemo<\n useSuspenseQuery.Result<TData, TVariables, DataState<TData>[\"dataState\"]>\n >(() => {\n return {\n client,\n data: result.data,\n dataState: result.dataState,\n error: result.error,\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n } as useSuspenseQuery.Result<\n TData,\n TVariables,\n DataState<TData>[\"dataState\"]\n >;\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables,\n> {\n client: ApolloClient;\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SkipToken | useSuspenseQuery.Options<TVariables>;\n}\n\nexport function useWatchQueryOptions<\n TData,\n TVariables extends OperationVariables,\n>({\n client,\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n return useDeepMemo<WatchQueryOptions<TVariables, TData>>(() => {\n if (options === skipToken) {\n return { query, fetchPolicy: \"standby\" } as WatchQueryOptions<\n TVariables,\n TData\n >;\n }\n\n const fetchPolicy =\n options.fetchPolicy ||\n client.defaultOptions.watchQuery?.fetchPolicy ||\n \"cache-first\";\n\n const watchQueryOptions: WatchQueryOptions<TVariables, TData> = {\n ...options,\n fetchPolicy,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n };\n\n if (__DEV__) {\n validateSuspenseHookOptions(watchQueryOptions);\n }\n\n // Assign the updated fetch policy after our validation since `standby` is\n // not a supported fetch policy on its own without the use of `skip`.\n if (options.skip) {\n watchQueryOptions.fetchPolicy = \"standby\";\n }\n\n return watchQueryOptions;\n }, [client, options, query]);\n}\n"]}
1
+ {"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\n\nimport type {\n ApolloClient,\n DataState,\n DefaultContext,\n DocumentNode,\n ErrorLike,\n ErrorPolicy,\n GetDataState,\n MaybeMasked,\n ObservableQuery,\n OperationVariables,\n RefetchWritePolicy,\n TypedDocumentNode,\n WatchQueryFetchPolicy,\n} from \"@apollo/client\";\nimport type { SubscribeToMoreFunction } from \"@apollo/client\";\nimport { NetworkStatus } from \"@apollo/client\";\nimport { canonicalStringify } from \"@apollo/client/cache\";\nimport type {\n CacheKey,\n FetchMoreFunction,\n QueryKey,\n RefetchFunction,\n} from \"@apollo/client/react/internal\";\nimport { getSuspenseCache } from \"@apollo/client/react/internal\";\nimport { __DEV__ } from \"@apollo/client/utilities/environment\";\nimport type {\n DocumentationTypes as UtilityDocumentationTypes,\n NoInfer,\n VariablesOption,\n} from \"@apollo/client/utilities/internal\";\n\nimport type { SkipToken } from \"./constants.js\";\nimport { skipToken } from \"./constants.js\";\nimport { __use, useDeepMemo, wrapHook } from \"./internal/index.js\";\nimport { validateSuspenseHookOptions } from \"./internal/validateSuspenseHookOptions.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n\nexport declare namespace useSuspenseQuery {\n export type FetchPolicy = Extract<\n WatchQueryFetchPolicy,\n \"cache-first\" | \"network-only\" | \"no-cache\" | \"cache-and-network\"\n >;\n\n export namespace Base {\n export interface Options<\n TVariables extends OperationVariables = OperationVariables,\n > {\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#returnPartialData:member} */\n returnPartialData?: boolean;\n\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#refetchWritePolicy_suspense:member} */\n refetchWritePolicy?: RefetchWritePolicy;\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 /**\n * {@inheritDoc @apollo/client!QueryOptionsDocumentation#skip_deprecated:member}\n *\n * @example Recommended usage of `skipToken`:\n *\n * ```ts\n * import { skipToken, useSuspenseQuery } from \"@apollo/client\";\n *\n * const { data } = useSuspenseQuery(\n * query,\n * id ? { variables: { id } } : skipToken\n * );\n * ```\n */\n skip?: boolean;\n }\n }\n export type Options<\n TVariables extends OperationVariables = OperationVariables,\n > = Base.Options<TVariables> & VariablesOption<TVariables>;\n\n export namespace DocumentationTypes {\n namespace useSuspenseQuery {\n export interface Options<\n TVariables extends OperationVariables = OperationVariables,\n > extends Base.Options<TVariables>,\n UtilityDocumentationTypes.VariableOptions<TVariables> {}\n }\n }\n\n export namespace Base {\n export interface Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n > {\n /** {@inheritDoc @apollo/client!QueryOptionsDocumentation#client:member} */\n client: ApolloClient;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#error:member} */\n error: ErrorLike | undefined;\n\n /**\n * {@inheritDoc @apollo/client!QueryResultDocumentation#fetchMore:member}\n *\n * @remarks\n * Calling this function will cause the component to re-suspend, unless the call site is wrapped in [`startTransition`](https://react.dev/reference/react/startTransition).\n */\n fetchMore: FetchMoreFunction<TData, TVariables>;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#networkStatus:member} */\n networkStatus: NetworkStatus;\n\n /**\n * {@inheritDoc @apollo/client!QueryResultDocumentation#refetch:member}\n *\n * @remarks\n * Calling this function will cause the component to re-suspend, unless the call site is wrapped in [`startTransition`](https://react.dev/reference/react/startTransition).\n */\n refetch: RefetchFunction<TData, TVariables>;\n\n /** {@inheritDoc @apollo/client!QueryResultDocumentation#subscribeToMore:member} */\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n }\n }\n export type Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n TStates extends\n DataState<TData>[\"dataState\"] = DataState<TData>[\"dataState\"],\n > = Base.Result<TData, TVariables> &\n GetDataState<MaybeMasked<TData>, TStates>;\n\n export namespace DocumentationTypes {\n namespace useSuspenseQuery {\n export interface Result<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n > extends Base.Result<TData, TVariables>,\n UtilityDocumentationTypes.DataState<TData> {}\n }\n }\n export namespace DocumentationTypes {\n /** Test {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\n export function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n >(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: useSuspenseQuery.Options<TVariables>\n ): useSuspenseQuery.Result<TData, TVariables>;\n }\n}\n\n/**\n * For a detailed explanation of `useSuspenseQuery`, see the [fetching with Suspense reference](https://www.apollographql.com/docs/react/data/suspense).\n *\n * @example\n *\n * ```jsx\n * import { Suspense } from \"react\";\n * import { useSuspenseQuery } from \"@apollo/client\";\n *\n * const listQuery = gql`\n * query {\n * list {\n * id\n * }\n * }\n * `;\n *\n * function App() {\n * return (\n * <Suspense fallback={<Spinner />}>\n * <List />\n * </Suspense>\n * );\n * }\n *\n * function List() {\n * const { data } = useSuspenseQuery(listQuery);\n *\n * return (\n * <ol>\n * {data.list.map((item) => (\n * <Item key={item.id} id={item.id} />\n * ))}\n * </ol>\n * );\n * }\n * ```\n *\n * @param query - A GraphQL query document parsed into an AST by `gql`.\n * @param options - An optional object containing options for the query. Instead of passing a `useSuspenseQuery.Options` object into the hook, you can also pass a [`skipToken`](#skiptoken) to prevent the `useSuspenseQuery` hook from executing the query or suspending.\n */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n returnPartialData: true;\n errorPolicy: \"ignore\" | \"all\";\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"partial\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n errorPolicy: \"ignore\" | \"all\";\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n skip: boolean;\n returnPartialData: true;\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"empty\" | \"streaming\" | \"partial\"\n>;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n returnPartialData: true;\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"partial\" | \"streaming\" | \"complete\"\n>;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: useSuspenseQuery.Options<NoInfer<TVariables>> & {\n skip: boolean;\n }\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | SkipToken\n | (useSuspenseQuery.Options<NoInfer<TVariables>> & {\n returnPartialData: true;\n })\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"empty\" | \"streaming\" | \"complete\" | \"partial\"\n>;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n ...[options]: {} extends TVariables ?\n [options?: useSuspenseQuery.Options<NoInfer<TVariables>>]\n : [options: useSuspenseQuery.Options<NoInfer<TVariables>>]\n): useSuspenseQuery.Result<TData, TVariables, \"complete\" | \"streaming\">;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n ...[options]: {} extends TVariables ?\n [options?: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>]\n : [options: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>]\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\n/** {@inheritDoc @apollo/client!useSuspenseQuery:function(1)} */\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"complete\" | \"streaming\" | \"empty\"\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SkipToken | useSuspenseQuery.Options<NoInfer<TVariables>>\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"empty\" | \"streaming\" | \"complete\" | \"partial\"\n> {\n \"use no memo\";\n return wrapHook(\n \"useSuspenseQuery\",\n // eslint-disable-next-line react-compiler/react-compiler\n useSuspenseQuery_,\n useApolloClient(typeof options === \"object\" ? options.client : undefined)\n )(query, options ?? ({} as any));\n}\n\nfunction useSuspenseQuery_<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables,\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options:\n | (SkipToken & Partial<useSuspenseQuery.Options<TVariables>>)\n | useSuspenseQuery.Options<TVariables>\n): useSuspenseQuery.Result<\n TData,\n TVariables,\n \"partial\" | \"complete\" | \"streaming\" | \"empty\"\n> {\n const client = useApolloClient(options.client);\n const suspenseCache = getSuspenseCache(client);\n const watchQueryOptions = useWatchQueryOptions<any, any>({\n client,\n query,\n options,\n });\n const { fetchPolicy, variables } = watchQueryOptions;\n const { queryKey = [] } = options;\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(watchQueryOptions)\n );\n\n let [current, setPromise] = React.useState<\n [QueryKey, Promise<ObservableQuery.Result<any>>]\n >([queryRef.key, queryRef.promise]);\n\n // This saves us a re-execution of the render function when a variable changed.\n if (current[0] !== queryRef.key) {\n // eslint-disable-next-line react-compiler/react-compiler\n current[0] = queryRef.key;\n current[1] = queryRef.promise;\n }\n let promise = current[1];\n\n if (queryRef.didChangeOptions(watchQueryOptions)) {\n current[1] = promise = queryRef.applyOptions(watchQueryOptions);\n }\n\n React.useEffect(() => {\n const dispose = queryRef.retain();\n\n const removeListener = queryRef.listen((promise) => {\n setPromise([queryRef.key, promise]);\n });\n\n return () => {\n removeListener();\n dispose();\n };\n }, [queryRef]);\n\n const skipResult = React.useMemo<ObservableQuery.Result<TData>>(() => {\n const error = queryRef.result.error;\n const complete = !!queryRef.result.data;\n\n return {\n loading: false,\n data: queryRef.result.data,\n dataState: queryRef.result.dataState,\n networkStatus: error ? NetworkStatus.error : NetworkStatus.ready,\n error,\n complete,\n partial: !complete,\n };\n }, [queryRef.result]);\n\n const result = fetchPolicy === \"standby\" ? skipResult : __use(promise);\n\n const fetchMore = React.useCallback<\n FetchMoreFunction<unknown, OperationVariables>\n >(\n (options) => {\n const promise = queryRef.fetchMore(options);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n },\n [queryRef]\n ) as FetchMoreFunction<TData | undefined, TVariables>;\n\n const refetch: RefetchFunction<TData, TVariables> = React.useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n setPromise([queryRef.key, queryRef.promise]);\n\n return promise;\n },\n [queryRef]\n );\n\n // TODO: The internalQueryRef doesn't have TVariables' type information so we have to cast it here\n const subscribeToMore = queryRef.observable\n .subscribeToMore as SubscribeToMoreFunction<TData | undefined, TVariables>;\n\n return React.useMemo<\n useSuspenseQuery.Result<TData, TVariables, DataState<TData>[\"dataState\"]>\n >(() => {\n return {\n client,\n data: result.data,\n dataState: result.dataState,\n error: result.error,\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n } as useSuspenseQuery.Result<\n TData,\n TVariables,\n DataState<TData>[\"dataState\"]\n >;\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables,\n> {\n client: ApolloClient;\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SkipToken | useSuspenseQuery.Options<TVariables>;\n}\n\nexport function useWatchQueryOptions<\n TData,\n TVariables extends OperationVariables,\n>({\n client,\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<\n TData,\n TVariables\n>): ApolloClient.WatchQueryOptions<TData, TVariables> {\n return useDeepMemo<ApolloClient.WatchQueryOptions<TData, TVariables>>(() => {\n if (options === skipToken) {\n return {\n query,\n fetchPolicy: \"standby\",\n } as ApolloClient.WatchQueryOptions<TData, TVariables>;\n }\n\n const fetchPolicy =\n options.fetchPolicy ||\n client.defaultOptions.watchQuery?.fetchPolicy ||\n \"cache-first\";\n\n const watchQueryOptions: ApolloClient.WatchQueryOptions<TData, TVariables> =\n {\n ...options,\n fetchPolicy,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n };\n\n if (__DEV__) {\n validateSuspenseHookOptions(watchQueryOptions);\n }\n\n // Assign the updated fetch policy after our validation since `standby` is\n // not a supported fetch policy on its own without the use of `skip`.\n if (options.skip) {\n watchQueryOptions.fetchPolicy = \"standby\";\n }\n\n return watchQueryOptions;\n }, [client, options, query]);\n}\n"]}
@@ -2,12 +2,9 @@ import { equal } from "@wry/equality";
2
2
  import * as React from "react";
3
3
  export function useDeepMemo(memoFn, deps) {
4
4
  const ref = React.useRef(void 0);
5
- // eslint-disable-next-line react-compiler/react-compiler
6
5
  if (!ref.current || !equal(ref.current.deps, deps)) {
7
- // eslint-disable-next-line react-compiler/react-compiler
8
6
  ref.current = { value: memoFn(), deps };
9
7
  }
10
- // eslint-disable-next-line react-compiler/react-compiler
11
8
  return ref.current.value;
12
9
  }
13
10
  //# sourceMappingURL=useDeepMemo.js.map