@apollo/client 4.0.10 → 4.0.12-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/CHANGELOG.md +217 -0
  2. package/__cjs/cache/core/cache.cjs +216 -52
  3. package/__cjs/cache/core/cache.cjs.map +1 -1
  4. package/__cjs/cache/core/cache.d.cts +141 -25
  5. package/__cjs/cache/core/types/Cache.d.cts +77 -17
  6. package/__cjs/cache/index.cjs.map +1 -1
  7. package/__cjs/cache/index.d.cts +1 -1
  8. package/__cjs/cache/inmemory/entityStore.cjs +6 -4
  9. package/__cjs/cache/inmemory/entityStore.cjs.map +1 -1
  10. package/__cjs/cache/inmemory/helpers.d.cts +1 -1
  11. package/__cjs/cache/inmemory/inMemoryCache.cjs +62 -1
  12. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  13. package/__cjs/cache/inmemory/inMemoryCache.d.cts +48 -0
  14. package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
  15. package/__cjs/cache/inmemory/key-extractor.cjs.map +1 -1
  16. package/__cjs/cache/inmemory/policies.cjs +56 -17
  17. package/__cjs/cache/inmemory/policies.cjs.map +1 -1
  18. package/__cjs/cache/inmemory/policies.d.cts +30 -6
  19. package/__cjs/cache/inmemory/readFromStore.cjs +3 -3
  20. package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
  21. package/__cjs/cache/inmemory/types.d.cts +2 -0
  22. package/__cjs/cache/inmemory/writeToStore.cjs +24 -10
  23. package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  24. package/__cjs/cache/inmemory/writeToStore.d.cts +2 -1
  25. package/__cjs/core/ApolloClient.cjs +31 -49
  26. package/__cjs/core/ApolloClient.cjs.map +1 -1
  27. package/__cjs/core/ApolloClient.d.cts +159 -18
  28. package/__cjs/core/ObservableQuery.cjs +173 -128
  29. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  30. package/__cjs/core/ObservableQuery.d.cts +2 -0
  31. package/__cjs/core/QueryInfo.cjs +9 -1
  32. package/__cjs/core/QueryInfo.cjs.map +1 -1
  33. package/__cjs/core/QueryInfo.d.cts +2 -1
  34. package/__cjs/core/QueryManager.cjs +47 -25
  35. package/__cjs/core/QueryManager.cjs.map +1 -1
  36. package/__cjs/core/QueryManager.d.cts +18 -2
  37. package/__cjs/incremental/handlers/defer20220824.cjs +44 -19
  38. package/__cjs/incremental/handlers/defer20220824.cjs.map +1 -1
  39. package/__cjs/incremental/handlers/defer20220824.d.cts +15 -7
  40. package/__cjs/incremental/handlers/graphql17Alpha9.cjs +222 -0
  41. package/__cjs/incremental/handlers/graphql17Alpha9.cjs.map +1 -0
  42. package/__cjs/incremental/handlers/graphql17Alpha9.d.cts +98 -0
  43. package/__cjs/incremental/handlers/notImplemented.cjs +1 -1
  44. package/__cjs/incremental/handlers/notImplemented.cjs.map +1 -1
  45. package/__cjs/incremental/index.cjs +3 -1
  46. package/__cjs/incremental/index.cjs.map +1 -1
  47. package/__cjs/incremental/index.d.cts +1 -0
  48. package/__cjs/incremental/types.d.cts +9 -0
  49. package/__cjs/invariantErrorCodes.cjs +83 -61
  50. package/__cjs/link/client-awareness/ClientAwarenessLink.cjs +13 -1
  51. package/__cjs/link/client-awareness/ClientAwarenessLink.cjs.map +1 -1
  52. package/__cjs/link/client-awareness/ClientAwarenessLink.d.cts +1 -1
  53. package/__cjs/link/core/ApolloLink.cjs +3 -3
  54. package/__cjs/link/error/index.cjs +1 -1
  55. package/__cjs/link/error/index.cjs.map +1 -1
  56. package/__cjs/link/error/index.d.cts +1 -1
  57. package/__cjs/link/http/checkFetcher.cjs +1 -1
  58. package/__cjs/link/http/parseAndCheckHttpResponse.cjs +2 -2
  59. package/__cjs/link/http/parseAndCheckHttpResponse.cjs.map +1 -1
  60. package/__cjs/link/persisted-queries/index.cjs +2 -2
  61. package/__cjs/link/ws/index.cjs +1 -1
  62. package/__cjs/local-state/LocalState.cjs +28 -14
  63. package/__cjs/local-state/LocalState.cjs.map +1 -1
  64. package/__cjs/local-state/LocalState.d.cts +3 -2
  65. package/__cjs/masking/types.d.cts +2 -1
  66. package/__cjs/react/hooks/internal/useDeepMemo.cjs +2 -0
  67. package/__cjs/react/hooks/internal/useDeepMemo.cjs.map +1 -1
  68. package/__cjs/react/hooks/useBackgroundQuery.cjs +1 -3
  69. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  70. package/__cjs/react/hooks/useFragment.cjs +38 -87
  71. package/__cjs/react/hooks/useFragment.cjs.map +1 -1
  72. package/__cjs/react/hooks/useFragment.d.cts +65 -6
  73. package/__cjs/react/hooks/useLazyQuery.cjs +3 -0
  74. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  75. package/__cjs/react/hooks/useMutation.cjs +7 -1
  76. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  77. package/__cjs/react/hooks/useMutation.d.cts +13 -1
  78. package/__cjs/react/hooks/useQuery.cjs +8 -8
  79. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  80. package/__cjs/react/hooks/useQuery.d.cts +1 -1
  81. package/__cjs/react/hooks/useQueryRefHandlers.cjs +1 -3
  82. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  83. package/__cjs/react/hooks/useReadQuery.cjs +1 -3
  84. package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
  85. package/__cjs/react/hooks/useSubscription.cjs +1 -1
  86. package/__cjs/react/hooks/useSubscription.cjs.map +1 -1
  87. package/__cjs/react/hooks/useSuspenseFragment.cjs +16 -16
  88. package/__cjs/react/hooks/useSuspenseFragment.cjs.map +1 -1
  89. package/__cjs/react/hooks/useSuspenseFragment.d.cts +33 -7
  90. package/__cjs/react/hooks/useSuspenseQuery.cjs +6 -4
  91. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  92. package/__cjs/react/internal/cache/FragmentReference.cjs +3 -22
  93. package/__cjs/react/internal/cache/FragmentReference.cjs.map +1 -1
  94. package/__cjs/react/internal/cache/FragmentReference.d.cts +2 -4
  95. package/__cjs/react/internal/cache/QueryReference.cjs +16 -0
  96. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  97. package/__cjs/react/internal/cache/QueryReference.d.cts +5 -0
  98. package/__cjs/react/internal/cache/SuspenseCache.cjs.map +1 -1
  99. package/__cjs/react/internal/cache/SuspenseCache.d.cts +1 -1
  100. package/__cjs/react/internal/cache/types.d.cts +2 -2
  101. package/__cjs/react/query-preloader/createQueryPreloader.cjs +41 -1
  102. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  103. package/__cjs/react/ssr/useSSRQuery.cjs +1 -0
  104. package/__cjs/react/ssr/useSSRQuery.cjs.map +1 -1
  105. package/__cjs/utilities/DeepPartial.cjs.map +1 -1
  106. package/__cjs/utilities/DeepPartial.d.cts +1 -1
  107. package/__cjs/utilities/internal/DeepMerger.cjs +36 -4
  108. package/__cjs/utilities/internal/DeepMerger.cjs.map +1 -1
  109. package/__cjs/utilities/internal/DeepMerger.d.cts +20 -4
  110. package/__cjs/utilities/internal/combineLatestBatched.cjs +71 -0
  111. package/__cjs/utilities/internal/combineLatestBatched.cjs.map +1 -0
  112. package/__cjs/utilities/internal/combineLatestBatched.d.cts +14 -0
  113. package/__cjs/utilities/internal/constants.cjs +29 -0
  114. package/__cjs/utilities/internal/constants.cjs.map +1 -0
  115. package/__cjs/utilities/internal/constants.d.cts +26 -0
  116. package/__cjs/utilities/internal/getStoreKeyName.cjs +1 -0
  117. package/__cjs/utilities/internal/getStoreKeyName.cjs.map +1 -1
  118. package/__cjs/utilities/internal/index.cjs +10 -2
  119. package/__cjs/utilities/internal/index.cjs.map +1 -1
  120. package/__cjs/utilities/internal/index.d.cts +4 -0
  121. package/__cjs/utilities/internal/mapObservableFragment.cjs +27 -0
  122. package/__cjs/utilities/internal/mapObservableFragment.cjs.map +1 -0
  123. package/__cjs/utilities/internal/mapObservableFragment.d.cts +3 -0
  124. package/__cjs/utilities/internal/memoize.cjs +2 -2
  125. package/__cjs/utilities/internal/memoize.cjs.map +1 -1
  126. package/__cjs/utilities/internal/memoize.d.cts +2 -1
  127. package/__cjs/utilities/internal/ponyfills/FinalizationRegistry.cjs +61 -0
  128. package/__cjs/utilities/internal/ponyfills/FinalizationRegistry.cjs.map +1 -0
  129. package/__cjs/utilities/internal/ponyfills/FinalizationRegistry.d.cts +11 -0
  130. package/__cjs/utilities/internal/ponyfills/index.cjs +6 -0
  131. package/__cjs/utilities/internal/ponyfills/index.cjs.map +1 -0
  132. package/__cjs/utilities/internal/ponyfills/index.d.cts +3 -0
  133. package/__cjs/utilities/internal/ponyfills/index.react-native.cjs +6 -0
  134. package/__cjs/utilities/internal/ponyfills/index.react-native.cjs.map +1 -0
  135. package/__cjs/utilities/internal/ponyfills/index.react-native.d.cts +2 -0
  136. package/__cjs/utilities/internal/types/ExtensionsWithStreamDetails.cjs +3 -0
  137. package/__cjs/utilities/internal/types/ExtensionsWithStreamDetails.cjs.map +1 -0
  138. package/__cjs/utilities/internal/types/ExtensionsWithStreamDetails.d.cts +24 -0
  139. package/__cjs/version.cjs +1 -1
  140. package/__cjs/version.cjs.map +1 -1
  141. package/cache/core/cache.d.ts +141 -25
  142. package/cache/core/cache.js +219 -55
  143. package/cache/core/cache.js.map +1 -1
  144. package/cache/core/types/Cache.d.ts +77 -17
  145. package/cache/core/types/Cache.js.map +1 -1
  146. package/cache/index.d.ts +1 -1
  147. package/cache/index.js.map +1 -1
  148. package/cache/inmemory/entityStore.js +6 -4
  149. package/cache/inmemory/entityStore.js.map +1 -1
  150. package/cache/inmemory/helpers.d.ts +1 -1
  151. package/cache/inmemory/inMemoryCache.d.ts +48 -0
  152. package/cache/inmemory/inMemoryCache.js +62 -1
  153. package/cache/inmemory/inMemoryCache.js.map +1 -1
  154. package/cache/inmemory/key-extractor.js +1 -1
  155. package/cache/inmemory/key-extractor.js.map +1 -1
  156. package/cache/inmemory/policies.d.ts +30 -6
  157. package/cache/inmemory/policies.js +45 -7
  158. package/cache/inmemory/policies.js.map +1 -1
  159. package/cache/inmemory/readFromStore.js +3 -3
  160. package/cache/inmemory/readFromStore.js.map +1 -1
  161. package/cache/inmemory/types.d.ts +2 -0
  162. package/cache/inmemory/types.js.map +1 -1
  163. package/cache/inmemory/writeToStore.d.ts +2 -1
  164. package/cache/inmemory/writeToStore.js +26 -12
  165. package/cache/inmemory/writeToStore.js.map +1 -1
  166. package/core/ApolloClient.d.ts +159 -18
  167. package/core/ApolloClient.js +32 -50
  168. package/core/ApolloClient.js.map +1 -1
  169. package/core/ObservableQuery.d.ts +2 -0
  170. package/core/ObservableQuery.js +176 -131
  171. package/core/ObservableQuery.js.map +1 -1
  172. package/core/QueryInfo.d.ts +2 -1
  173. package/core/QueryInfo.js +10 -2
  174. package/core/QueryInfo.js.map +1 -1
  175. package/core/QueryManager.d.ts +18 -2
  176. package/core/QueryManager.js +48 -26
  177. package/core/QueryManager.js.map +1 -1
  178. package/incremental/handlers/defer20220824.d.ts +15 -7
  179. package/incremental/handlers/defer20220824.js +44 -19
  180. package/incremental/handlers/defer20220824.js.map +1 -1
  181. package/incremental/handlers/graphql17Alpha9.d.ts +98 -0
  182. package/incremental/handlers/graphql17Alpha9.js +218 -0
  183. package/incremental/handlers/graphql17Alpha9.js.map +1 -0
  184. package/incremental/handlers/notImplemented.js +1 -1
  185. package/incremental/handlers/notImplemented.js.map +1 -1
  186. package/incremental/index.d.ts +1 -0
  187. package/incremental/index.js +3 -2
  188. package/incremental/index.js.map +1 -1
  189. package/incremental/types.d.ts +9 -0
  190. package/incremental/types.js.map +1 -1
  191. package/invariantErrorCodes.js +83 -61
  192. package/legacyEntryPoints/utilities/internal/ponyfills/index.d.ts +1 -0
  193. package/legacyEntryPoints/utilities/internal/ponyfills/index.js +1 -0
  194. package/legacyEntryPoints/utilities/internal/ponyfills/ponyfills.cjs +1 -0
  195. package/legacyEntryPoints/utilities/internal/ponyfills/ponyfills.d.cts +1 -0
  196. package/link/client-awareness/ClientAwarenessLink.d.ts +1 -1
  197. package/link/client-awareness/ClientAwarenessLink.js +13 -1
  198. package/link/client-awareness/ClientAwarenessLink.js.map +1 -1
  199. package/link/core/ApolloLink.js +3 -3
  200. package/link/error/index.d.ts +1 -1
  201. package/link/error/index.js +1 -1
  202. package/link/error/index.js.map +1 -1
  203. package/link/http/checkFetcher.js +1 -1
  204. package/link/http/parseAndCheckHttpResponse.js +2 -2
  205. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  206. package/link/persisted-queries/index.js +2 -2
  207. package/link/ws/index.js +1 -1
  208. package/local-state/LocalState.d.ts +3 -2
  209. package/local-state/LocalState.js +28 -14
  210. package/local-state/LocalState.js.map +1 -1
  211. package/masking/types.d.ts +2 -1
  212. package/masking/types.js.map +1 -1
  213. package/package.json +15 -1
  214. package/react/hooks/internal/useDeepMemo.js +2 -0
  215. package/react/hooks/internal/useDeepMemo.js.map +1 -1
  216. package/react/hooks/useBackgroundQuery.js +1 -3
  217. package/react/hooks/useBackgroundQuery.js.map +1 -1
  218. package/react/hooks/useFragment.d.ts +65 -6
  219. package/react/hooks/useFragment.js +38 -87
  220. package/react/hooks/useFragment.js.map +1 -1
  221. package/react/hooks/useLazyQuery.js +4 -1
  222. package/react/hooks/useLazyQuery.js.map +1 -1
  223. package/react/hooks/useMutation.d.ts +13 -1
  224. package/react/hooks/useMutation.js +7 -1
  225. package/react/hooks/useMutation.js.map +1 -1
  226. package/react/hooks/useQuery.js +9 -9
  227. package/react/hooks/useQuery.js.map +1 -1
  228. package/react/hooks/useQueryRefHandlers.js +1 -3
  229. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  230. package/react/hooks/useReadQuery.js +1 -3
  231. package/react/hooks/useReadQuery.js.map +1 -1
  232. package/react/hooks/useSubscription.js +1 -1
  233. package/react/hooks/useSubscription.js.map +1 -1
  234. package/react/hooks/useSuspenseFragment.d.ts +33 -7
  235. package/react/hooks/useSuspenseFragment.js +17 -17
  236. package/react/hooks/useSuspenseFragment.js.map +1 -1
  237. package/react/hooks/useSuspenseQuery.js +6 -4
  238. package/react/hooks/useSuspenseQuery.js.map +1 -1
  239. package/react/hooks-compiled/internal/useDeepMemo.js +2 -0
  240. package/react/hooks-compiled/internal/useDeepMemo.js.map +1 -1
  241. package/react/hooks-compiled/internal/useSuspenseHookCacheKey.js +0 -2
  242. package/react/hooks-compiled/internal/useSuspenseHookCacheKey.js.map +1 -1
  243. package/react/hooks-compiled/useBackgroundQuery.js +1 -3
  244. package/react/hooks-compiled/useBackgroundQuery.js.map +1 -1
  245. package/react/hooks-compiled/useFragment.d.ts +65 -6
  246. package/react/hooks-compiled/useFragment.js +110 -88
  247. package/react/hooks-compiled/useFragment.js.map +1 -1
  248. package/react/hooks-compiled/useLazyQuery.js +4 -1
  249. package/react/hooks-compiled/useLazyQuery.js.map +1 -1
  250. package/react/hooks-compiled/useLoadableQuery.js +69 -75
  251. package/react/hooks-compiled/useMutation.d.ts +13 -1
  252. package/react/hooks-compiled/useMutation.js +5 -13
  253. package/react/hooks-compiled/useMutation.js.map +1 -1
  254. package/react/hooks-compiled/useQuery.js +53 -61
  255. package/react/hooks-compiled/useQuery.js.map +1 -1
  256. package/react/hooks-compiled/useQueryRefHandlers.js +1 -5
  257. package/react/hooks-compiled/useQueryRefHandlers.js.map +1 -1
  258. package/react/hooks-compiled/useReadQuery.js +77 -14
  259. package/react/hooks-compiled/useReadQuery.js.map +1 -1
  260. package/react/hooks-compiled/useSubscription.js +237 -93
  261. package/react/hooks-compiled/useSubscription.js.map +1 -1
  262. package/react/hooks-compiled/useSuspenseFragment.d.ts +33 -7
  263. package/react/hooks-compiled/useSuspenseFragment.js +17 -17
  264. package/react/hooks-compiled/useSuspenseFragment.js.map +1 -1
  265. package/react/hooks-compiled/useSuspenseQuery.js +7 -9
  266. package/react/hooks-compiled/useSuspenseQuery.js.map +1 -1
  267. package/react/index.compiled.d.ts +1 -1
  268. package/react/index.compiled.js +1 -1
  269. package/react/index.compiled.js.map +1 -1
  270. package/react/internal/cache/FragmentReference.d.ts +2 -4
  271. package/react/internal/cache/FragmentReference.js +3 -22
  272. package/react/internal/cache/FragmentReference.js.map +1 -1
  273. package/react/internal/cache/QueryReference.d.ts +5 -0
  274. package/react/internal/cache/QueryReference.js +16 -0
  275. package/react/internal/cache/QueryReference.js.map +1 -1
  276. package/react/internal/cache/SuspenseCache.d.ts +1 -1
  277. package/react/internal/cache/SuspenseCache.js.map +1 -1
  278. package/react/internal/cache/types.d.ts +2 -2
  279. package/react/internal/cache/types.js.map +1 -1
  280. package/react/query-preloader/createQueryPreloader.js +41 -1
  281. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  282. package/react/ssr/useSSRQuery.js +1 -0
  283. package/react/ssr/useSSRQuery.js.map +1 -1
  284. package/utilities/DeepPartial.d.ts +1 -1
  285. package/utilities/DeepPartial.js.map +1 -1
  286. package/utilities/internal/DeepMerger.d.ts +20 -4
  287. package/utilities/internal/DeepMerger.js +36 -4
  288. package/utilities/internal/DeepMerger.js.map +1 -1
  289. package/utilities/internal/combineLatestBatched.d.ts +14 -0
  290. package/utilities/internal/combineLatestBatched.js +68 -0
  291. package/utilities/internal/combineLatestBatched.js.map +1 -0
  292. package/utilities/internal/constants.d.ts +26 -0
  293. package/utilities/internal/constants.js +26 -0
  294. package/utilities/internal/constants.js.map +1 -0
  295. package/utilities/internal/getStoreKeyName.js +1 -0
  296. package/utilities/internal/getStoreKeyName.js.map +1 -1
  297. package/utilities/internal/index.d.ts +4 -0
  298. package/utilities/internal/index.js +3 -0
  299. package/utilities/internal/index.js.map +1 -1
  300. package/utilities/internal/mapObservableFragment.d.ts +3 -0
  301. package/utilities/internal/mapObservableFragment.js +24 -0
  302. package/utilities/internal/mapObservableFragment.js.map +1 -0
  303. package/utilities/internal/memoize.d.ts +2 -1
  304. package/utilities/internal/memoize.js +2 -2
  305. package/utilities/internal/memoize.js.map +1 -1
  306. package/utilities/internal/ponyfills/FinalizationRegistry.d.ts +11 -0
  307. package/utilities/internal/ponyfills/FinalizationRegistry.js +57 -0
  308. package/utilities/internal/ponyfills/FinalizationRegistry.js.map +1 -0
  309. package/utilities/internal/ponyfills/index.d.ts +3 -0
  310. package/utilities/internal/ponyfills/index.js +3 -0
  311. package/utilities/internal/ponyfills/index.js.map +1 -0
  312. package/utilities/internal/ponyfills/index.react-native.d.ts +2 -0
  313. package/utilities/internal/ponyfills/index.react-native.js +2 -0
  314. package/utilities/internal/ponyfills/index.react-native.js.map +1 -0
  315. package/utilities/internal/types/ExtensionsWithStreamDetails.d.ts +24 -0
  316. package/utilities/internal/types/ExtensionsWithStreamDetails.js +2 -0
  317. package/utilities/internal/types/ExtensionsWithStreamDetails.js.map +1 -0
  318. package/version.js +1 -1
  319. package/version.js.map +1 -1
@@ -1,13 +1,13 @@
1
1
  import type { DocumentNode } from "graphql";
2
2
  import type { Observable } from "rxjs";
3
- import type { ApolloCache, IgnoreModifier, Reference } from "@apollo/client/cache";
3
+ import type { ApolloCache, Cache, IgnoreModifier, Reference } from "@apollo/client/cache";
4
4
  import type { Incremental } from "@apollo/client/incremental";
5
5
  import type { ApolloLink } from "@apollo/client/link";
6
6
  import type { ClientAwarenessLink } from "@apollo/client/link/client-awareness";
7
7
  import type { LocalState } from "@apollo/client/local-state";
8
8
  import type { MaybeMasked, Unmasked } from "@apollo/client/masking";
9
9
  import { DocumentTransform } from "@apollo/client/utilities";
10
- import type { VariablesOption } from "@apollo/client/utilities/internal";
10
+ import type { VariablesOption, variablesUnknownSymbol } from "@apollo/client/utilities/internal";
11
11
  import { getApolloClientMemoryInternals } from "@apollo/client/utilities/internal";
12
12
  import type { ObservableQuery } from "./ObservableQuery.js";
13
13
  import type { DefaultContext, ErrorLike, InternalRefetchQueriesInclude, InternalRefetchQueriesResult, MutationQueryReducersMap, MutationUpdaterFunction, NormalizedExecutionResult, OnQueryUpdated, OperationVariables, RefetchQueriesInclude, RefetchQueriesPromiseResults, SubscriptionObservable, TypedDocumentNode } from "./types.js";
@@ -87,6 +87,14 @@ export declare namespace ApolloClient {
87
87
  * queries.
88
88
  */
89
89
  incrementalHandler?: Incremental.Handler<any>;
90
+ /**
91
+ * @experimental
92
+ * Allows passing in "experiments", experimental features that might one day
93
+ * become part of Apollo Client's core functionality.
94
+ * Keep in mind that these features might change the core of Apollo Client.
95
+ * Do not pass in experiments that are not provided by Apollo.
96
+ */
97
+ experiments?: ApolloClient.Experiment[];
90
98
  }
91
99
  interface DevtoolsOptions {
92
100
  /**
@@ -376,7 +384,13 @@ export declare namespace ApolloClient {
376
384
  extensions?: Record<string, unknown>;
377
385
  }
378
386
  type WatchFragmentOptions<TData = unknown, TVariables extends OperationVariables = OperationVariables> = ApolloCache.WatchFragmentOptions<TData, TVariables>;
379
- type WatchFragmentResult<TData = unknown> = ApolloCache.WatchFragmentResult<TData>;
387
+ type WatchFragmentResult<TData = unknown> = ApolloCache.WatchFragmentResult<MaybeMasked<TData>>;
388
+ interface ObservableFragment<TData = unknown> extends Observable<ApolloClient.WatchFragmentResult<TData>> {
389
+ /**
390
+ * Return the current result for the fragment.
391
+ */
392
+ getCurrentResult: () => ApolloClient.WatchFragmentResult<TData>;
393
+ }
380
394
  /**
381
395
  * Watched query options.
382
396
  */
@@ -468,6 +482,21 @@ export declare namespace ApolloClient {
468
482
  * @docGroup 1. Operation options
469
483
  */
470
484
  query: DocumentNode | TypedDocumentNode<TData, TVariables>;
485
+ /**
486
+ * @internal This API is meant for framework integrations only.
487
+ * Do not use for everyday use.
488
+ *
489
+ * Indicates that the variables are unknown at the time of query creation.
490
+ * This option can only be set when `fetchPolicy` is `'standby'`.
491
+ * Setting this to `true` will prevent `client.refetchQueries` from refetching
492
+ * this query before it has left the `'standby'` state, either by setting a
493
+ * `fetchPolicy`, or by calling `observableQuery.refetch()` explicitly.
494
+ *
495
+ * Changing this option after the query has been created will have no effect.
496
+ *
497
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
498
+ */
499
+ [variablesUnknownSymbol]?: boolean;
471
500
  } & VariablesOption<NoInfer<TVariables>>;
472
501
  namespace Base {
473
502
  interface ReadQueryOptions<TData, TVariables extends OperationVariables> {
@@ -508,12 +537,6 @@ export declare namespace ApolloClient {
508
537
  }
509
538
  namespace Base {
510
539
  interface ReadFragmentOptions<TData, TVariables extends OperationVariables> {
511
- /**
512
- * The root id to be used. This id should take the same form as the
513
- * value returned by the `cache.identify` function. If a value with your
514
- * id does not exist in the store, `null` will be returned.
515
- */
516
- id?: string;
517
540
  /**
518
541
  * A GraphQL document created using the `gql` template string tag
519
542
  * with one or more fragments which will be used to determine
@@ -542,7 +565,27 @@ export declare namespace ApolloClient {
542
565
  optimistic?: boolean;
543
566
  }
544
567
  }
545
- type ReadFragmentOptions<TData, TVariables extends OperationVariables> = Base.ReadFragmentOptions<TData, TVariables> & VariablesOption<TVariables>;
568
+ namespace DocumentationTypes {
569
+ interface ReadFragmentOptions<TData, TVariables extends OperationVariables> extends Base.ReadFragmentOptions<TData, TVariables> {
570
+ /**
571
+ * The root id to be used. This id should take the same form as the
572
+ * value returned by the `cache.identify` function. If a value with your
573
+ * id does not exist in the store, `null` will be returned.
574
+ */
575
+ id?: string;
576
+ /**
577
+ * An object containing a `__typename` and primary key fields
578
+ * (such as `id`) identifying the entity object from which the fragment will
579
+ * be retrieved, or a `{ __ref: "..." }` reference, or a `string` ID
580
+ * (uncommon).
581
+ *
582
+ * @remarks
583
+ * `from` is given precedence over `id` when both are provided.
584
+ */
585
+ from?: ApolloCache.FromOptionValue<TData>;
586
+ }
587
+ }
588
+ type ReadFragmentOptions<TData, TVariables extends OperationVariables> = Base.ReadFragmentOptions<TData, TVariables> & VariablesOption<TVariables> & Cache.CacheIdentifierOption<TData>;
546
589
  namespace DocumentationTypes {
547
590
  interface WriteQueryOptions<TData, TVariables extends OperationVariables> extends Base.WriteQueryOptions<TData, TVariables> {
548
591
  /**
@@ -580,6 +623,11 @@ export declare namespace ApolloClient {
580
623
  * @defaultValue false
581
624
  */
582
625
  overwrite?: boolean;
626
+ /**
627
+ * GraphQL extensions for the write operation. Any provided `extensions`
628
+ * are available in `merge` functions.
629
+ */
630
+ extensions?: Record<string, unknown>;
583
631
  }
584
632
  }
585
633
  type WriteQueryOptions<TData, TVariables extends OperationVariables> = Base.WriteQueryOptions<TData, TVariables> & VariablesOption<TVariables>;
@@ -593,12 +641,6 @@ export declare namespace ApolloClient {
593
641
  }
594
642
  namespace Base {
595
643
  interface WriteFragmentOptions<TData, TVariables extends OperationVariables> {
596
- /**
597
- * The root id to be used. This id should take the same form as the
598
- * value returned by the `cache.identify` function. If a value with your
599
- * id does not exist in the store, `null` will be returned.
600
- */
601
- id?: string;
602
644
  /**
603
645
  * A GraphQL document created using the `gql` template string tag from
604
646
  * `graphql-tag` with one or more fragments which will be used to determine
@@ -630,15 +672,35 @@ export declare namespace ApolloClient {
630
672
  overwrite?: boolean;
631
673
  }
632
674
  }
633
- type WriteFragmentOptions<TData, TVariables extends OperationVariables> = Base.WriteFragmentOptions<TData, TVariables> & VariablesOption<TVariables>;
675
+ type WriteFragmentOptions<TData, TVariables extends OperationVariables> = Base.WriteFragmentOptions<TData, TVariables> & VariablesOption<TVariables> & Cache.CacheIdentifierOption<TData>;
634
676
  namespace DocumentationTypes {
635
677
  interface WriteFragmentOptions<TData, TVariables extends OperationVariables> extends Base.WriteFragmentOptions<TData, TVariables> {
678
+ /**
679
+ * The root id to be used. This id should take the same form as the
680
+ * value returned by the `cache.identify` function. If a value with your
681
+ * id does not exist in the store, `null` will be returned.
682
+ */
683
+ id?: string;
684
+ /**
685
+ * An object containing a `__typename` and primary key fields
686
+ * (such as `id`) identifying the entity object from which the fragment will
687
+ * be retrieved, or a `{ __ref: "..." }` reference, or a `string` ID
688
+ * (uncommon).
689
+ *
690
+ * @remarks
691
+ * `from` is given precedence over `id` when both are provided.
692
+ */
693
+ from?: ApolloCache.FromOptionValue<TData>;
636
694
  /**
637
695
  * Any variables that your GraphQL fragments depend on.
638
696
  */
639
697
  variables?: TVariables;
640
698
  }
641
699
  }
700
+ interface Experiment {
701
+ (this: ApolloClient, options: ApolloClient.Options): void;
702
+ v: 1;
703
+ }
642
704
  }
643
705
  /**
644
706
  * This is the primary Apollo Client class. It is used to send GraphQL documents (i.e. queries
@@ -811,7 +873,86 @@ export declare class ApolloClient {
811
873
  * the cache to identify the fragment and optionally specify whether to react
812
874
  * to optimistic updates.
813
875
  */
814
- watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables>): Observable<ApolloClient.WatchFragmentResult<MaybeMasked<TData>>>;
876
+ watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables> & {
877
+ from: Array<ApolloCache.FromOptionValue<TData>>;
878
+ }): ApolloClient.ObservableFragment<Array<TData>>;
879
+ /**
880
+ * Watches the cache store of the fragment according to the options specified
881
+ * and returns an `Observable`. We can subscribe to this
882
+ * `Observable` and receive updated results through an
883
+ * observer when the cache store changes.
884
+ *
885
+ * You must pass in a GraphQL document with a single fragment or a document
886
+ * with multiple fragments that represent what you are reading. If you pass
887
+ * in a document with multiple fragments then you must also specify a
888
+ * `fragmentName`.
889
+ *
890
+ * @since 3.10.0
891
+ * @param options - An object of type `WatchFragmentOptions` that allows
892
+ * the cache to identify the fragment and optionally specify whether to react
893
+ * to optimistic updates.
894
+ */
895
+ watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables> & {
896
+ from: Array<null>;
897
+ }): ApolloClient.ObservableFragment<Array<null>>;
898
+ watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables> & {
899
+ from: Array<ApolloCache.FromOptionValue<TData> | null>;
900
+ }): ApolloClient.ObservableFragment<Array<TData | null>>;
901
+ /**
902
+ * Watches the cache store of the fragment according to the options specified
903
+ * and returns an `Observable`. We can subscribe to this
904
+ * `Observable` and receive updated results through an
905
+ * observer when the cache store changes.
906
+ *
907
+ * You must pass in a GraphQL document with a single fragment or a document
908
+ * with multiple fragments that represent what you are reading. If you pass
909
+ * in a document with multiple fragments then you must also specify a
910
+ * `fragmentName`.
911
+ *
912
+ * @since 3.10.0
913
+ * @param options - An object of type `WatchFragmentOptions` that allows
914
+ * the cache to identify the fragment and optionally specify whether to react
915
+ * to optimistic updates.
916
+ */
917
+ watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables> & {
918
+ from: null;
919
+ }): ApolloClient.ObservableFragment<null>;
920
+ /**
921
+ * Watches the cache store of the fragment according to the options specified
922
+ * and returns an `Observable`. We can subscribe to this
923
+ * `Observable` and receive updated results through an
924
+ * observer when the cache store changes.
925
+ *
926
+ * You must pass in a GraphQL document with a single fragment or a document
927
+ * with multiple fragments that represent what you are reading. If you pass
928
+ * in a document with multiple fragments then you must also specify a
929
+ * `fragmentName`.
930
+ *
931
+ * @since 3.10.0
932
+ * @param options - An object of type `WatchFragmentOptions` that allows
933
+ * the cache to identify the fragment and optionally specify whether to react
934
+ * to optimistic updates.
935
+ */
936
+ watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables> & {
937
+ from: ApolloCache.FromOptionValue<TData>;
938
+ }): ApolloClient.ObservableFragment<TData>;
939
+ /**
940
+ * Watches the cache store of the fragment according to the options specified
941
+ * and returns an `Observable`. We can subscribe to this
942
+ * `Observable` and receive updated results through an
943
+ * observer when the cache store changes.
944
+ *
945
+ * You must pass in a GraphQL document with a single fragment or a document
946
+ * with multiple fragments that represent what you are reading. If you pass
947
+ * in a document with multiple fragments then you must also specify a
948
+ * `fragmentName`.
949
+ *
950
+ * @since 3.10.0
951
+ * @param options - An object of type `WatchFragmentOptions` that allows
952
+ * the cache to identify the fragment and optionally specify whether to react
953
+ * to optimistic updates.
954
+ */
955
+ watchFragment<TData = unknown, TVariables extends OperationVariables = OperationVariables>(options: ApolloClient.WatchFragmentOptions<TData, TVariables>): ApolloClient.ObservableFragment<TData | null>;
815
956
  /**
816
957
  * Tries to read some data from the store in the shape of the provided
817
958
  * GraphQL fragment without making a network request. This method will read a
@@ -4,7 +4,7 @@ import { NotImplementedHandler } from "@apollo/client/incremental";
4
4
  import { execute } from "@apollo/client/link";
5
5
  import { DocumentTransform } from "@apollo/client/utilities";
6
6
  import { __DEV__ } from "@apollo/client/utilities/environment";
7
- import { checkDocument, compact, getApolloClientMemoryInternals, mergeOptions, removeMaskedFragmentSpreads, } from "@apollo/client/utilities/internal";
7
+ import { checkDocument, compact, getApolloClientMemoryInternals, mapObservableFragmentMemoized, mergeOptions, removeMaskedFragmentSpreads, } from "@apollo/client/utilities/internal";
8
8
  import { invariant } from "@apollo/client/utilities/invariant";
9
9
  import { version } from "../version.js";
10
10
  import { QueryManager } from "./QueryManager.js";
@@ -72,10 +72,10 @@ export class ApolloClient {
72
72
  */
73
73
  constructor(options) {
74
74
  if (__DEV__) {
75
- invariant(options.cache, 65);
76
- invariant(options.link, 66);
75
+ invariant(options.cache, 68);
76
+ invariant(options.link, 69);
77
77
  }
78
- const { cache, documentTransform, ssrMode = false, ssrForceFetchDelay = 0, queryDeduplication = true, defaultOptions, defaultContext, assumeImmutableResults = cache.assumeImmutableResults, localState, devtools, dataMasking, link, incrementalHandler = new NotImplementedHandler(), } = options;
78
+ const { cache, documentTransform, ssrMode = false, ssrForceFetchDelay = 0, queryDeduplication = true, defaultOptions, defaultContext, assumeImmutableResults = cache.assumeImmutableResults, localState, devtools, dataMasking, link, incrementalHandler = new NotImplementedHandler(), experiments = [], } = options;
79
79
  this.link = link;
80
80
  this.cache = cache;
81
81
  this.queryDeduplication = queryDeduplication;
@@ -120,6 +120,7 @@ export class ApolloClient {
120
120
  }
121
121
  if (this.devtoolsConfig.enabled)
122
122
  this.connectToDevTools();
123
+ experiments.forEach((experiment) => experiment.call(this, options));
123
124
  }
124
125
  connectToDevTools() {
125
126
  if (typeof window === "undefined") {
@@ -233,13 +234,13 @@ export class ApolloClient {
233
234
  options = mergeOptions(this.defaultOptions.query, options);
234
235
  }
235
236
  if (__DEV__) {
236
- invariant(options.fetchPolicy !== "cache-and-network", 67);
237
- invariant(options.fetchPolicy !== "standby", 68);
238
- invariant(options.query, 69);
239
- invariant(options.query.kind === "Document", 70);
240
- invariant(!options.returnPartialData, 71);
241
- invariant(!options.pollInterval, 72);
242
- invariant(!options.notifyOnNetworkStatusChange, 73);
237
+ invariant(options.fetchPolicy !== "cache-and-network", 70);
238
+ invariant(options.fetchPolicy !== "standby", 71);
239
+ invariant(options.query, 72);
240
+ invariant(options.query.kind === "Document", 73);
241
+ invariant(!options.returnPartialData, 74);
242
+ invariant(!options.pollInterval, 75);
243
+ invariant(!options.notifyOnNetworkStatusChange, 76);
243
244
  }
244
245
  return this.queryManager.query(options);
245
246
  }
@@ -257,9 +258,9 @@ export class ApolloClient {
257
258
  errorPolicy: "none",
258
259
  }, this.defaultOptions.mutate), options);
259
260
  if (__DEV__) {
260
- invariant(optionsWithDefaults.mutation, 74);
261
+ invariant(optionsWithDefaults.mutation, 77);
261
262
  invariant(optionsWithDefaults.fetchPolicy === "network-only" ||
262
- optionsWithDefaults.fetchPolicy === "no-cache", 75);
263
+ optionsWithDefaults.fetchPolicy === "no-cache", 78);
263
264
  }
264
265
  checkDocument(optionsWithDefaults.mutation, OperationTypeNode.MUTATION);
265
266
  return this.queryManager.mutate(optionsWithDefaults);
@@ -285,46 +286,27 @@ export class ApolloClient {
285
286
  readQuery(options, optimistic = false) {
286
287
  return this.cache.readQuery({ ...options, query: this.transform(options.query) }, optimistic);
287
288
  }
288
- /**
289
- * Watches the cache store of the fragment according to the options specified
290
- * and returns an `Observable`. We can subscribe to this
291
- * `Observable` and receive updated results through an
292
- * observer when the cache store changes.
293
- *
294
- * You must pass in a GraphQL document with a single fragment or a document
295
- * with multiple fragments that represent what you are reading. If you pass
296
- * in a document with multiple fragments then you must also specify a
297
- * `fragmentName`.
298
- *
299
- * @since 3.10.0
300
- * @param options - An object of type `WatchFragmentOptions` that allows
301
- * the cache to identify the fragment and optionally specify whether to react
302
- * to optimistic updates.
303
- */
304
289
  watchFragment(options) {
305
290
  const dataMasking = this.queryManager.dataMasking;
306
- return this.cache
307
- .watchFragment({
291
+ const observable = this.cache.watchFragment({
308
292
  ...options,
309
293
  fragment: this.transform(options.fragment, dataMasking),
310
- })
311
- .pipe(map((result) => {
312
- // The transform will remove fragment spreads from the fragment
313
- // document when dataMasking is enabled. The `maskFragment` function
314
- // remains to apply warnings to fragments marked as
315
- // `@unmask(mode: "migrate")`. Since these warnings are only applied
316
- // in dev, we can skip the masking algorithm entirely for production.
317
- if (__DEV__) {
318
- if (dataMasking) {
319
- const data = this.queryManager.maskFragment({
320
- ...options,
321
- data: result.data,
322
- });
323
- return { ...result, data };
324
- }
325
- }
326
- return result;
327
- }));
294
+ });
295
+ if (__DEV__) {
296
+ return mapObservableFragmentMemoized(observable, Symbol.for("apollo.transform.dev.mask"), (result) => ({
297
+ ...result,
298
+ // The transform will remove fragment spreads from the fragment
299
+ // document when dataMasking is enabled. The `mask` function
300
+ // remains to apply warnings to fragments marked as
301
+ // `@unmask(mode: "migrate")`. Since these warnings are only applied
302
+ // in dev, we can skip the masking algorithm entirely for production.
303
+ data: this.queryManager.maskFragment({
304
+ ...options,
305
+ data: result.data,
306
+ }),
307
+ }));
308
+ }
309
+ return observable;
328
310
  }
329
311
  readFragment(options, optimistic = false) {
330
312
  return this.cache.readFragment({ ...options, fragment: this.transform(options.fragment) }, optimistic);
@@ -484,7 +466,7 @@ export class ApolloClient {
484
466
  // result.queries and result.results instead, you shouldn't have to worry
485
467
  // about preventing uncaught rejections for the Promise.all result.
486
468
  result.catch((error) => {
487
- __DEV__ && invariant.debug(76, error);
469
+ __DEV__ && invariant.debug(79, error);
488
470
  });
489
471
  return result;
490
472
  }