@apollo/client 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (893) hide show
  1. package/.changeset/afraid-grapes-call.md +5 -0
  2. package/.changeset/afraid-moons-arrive.md +5 -0
  3. package/.changeset/beige-mirrors-talk.md +15 -0
  4. package/.changeset/cool-kiwis-hunt.md +15 -0
  5. package/.changeset/cuddly-spiders-tie.md +5 -0
  6. package/.changeset/dirty-eagles-poke.md +5 -0
  7. package/.changeset/early-eggs-develop.md +22 -0
  8. package/.changeset/eighty-squids-fix.md +15 -0
  9. package/.changeset/eleven-kangaroos-jump.md +5 -0
  10. package/.changeset/forty-shrimps-fry.md +5 -0
  11. package/.changeset/forty-tomatoes-punch.md +5 -0
  12. package/.changeset/four-countries-clean.md +24 -0
  13. package/.changeset/four-ghosts-watch.md +5 -0
  14. package/.changeset/funny-jeans-invent.md +16 -0
  15. package/.changeset/funny-terms-deny.md +5 -0
  16. package/.changeset/fuzzy-tips-sit.md +5 -0
  17. package/.changeset/gentle-badgers-train.md +5 -0
  18. package/.changeset/gentle-waves-cough.md +5 -0
  19. package/.changeset/giant-apes-thank.md +5 -0
  20. package/.changeset/giant-bags-share.md +5 -0
  21. package/.changeset/gorgeous-chefs-tap.md +5 -0
  22. package/.changeset/great-roses-jog.md +15 -0
  23. package/.changeset/grumpy-vans-type.md +5 -0
  24. package/.changeset/hip-vans-act.md +5 -0
  25. package/.changeset/hungry-bikes-cough.md +5 -0
  26. package/.changeset/itchy-chefs-run.md +23 -0
  27. package/.changeset/khaki-keys-deliver.md +5 -0
  28. package/.changeset/khaki-spies-work.md +11 -0
  29. package/.changeset/large-plants-know.md +5 -0
  30. package/.changeset/light-apes-rescue.md +5 -0
  31. package/.changeset/little-spoons-kick.md +7 -0
  32. package/.changeset/loud-cows-raise.md +7 -0
  33. package/.changeset/lucky-sheep-explain.md +34 -0
  34. package/.changeset/many-buses-allow.md +5 -0
  35. package/.changeset/mean-lizards-think.md +5 -0
  36. package/.changeset/nervous-fireants-bow.md +5 -0
  37. package/.changeset/nervous-goats-allow.md +5 -0
  38. package/.changeset/nice-dots-matter.md +5 -0
  39. package/.changeset/ninety-bags-bake.md +17 -0
  40. package/.changeset/odd-chicken-hide.md +17 -0
  41. package/.changeset/odd-lemons-relax.md +5 -0
  42. package/.changeset/orange-suits-laugh.md +5 -0
  43. package/.changeset/perfect-ducks-reflect.md +12 -0
  44. package/.changeset/perfect-vans-give.md +7 -0
  45. package/.changeset/poor-eels-punch.md +5 -0
  46. package/.changeset/pre.json +70 -0
  47. package/.changeset/purple-bears-flash.md +5 -0
  48. package/.changeset/real-teachers-peel.md +5 -0
  49. package/.changeset/serious-moons-juggle.md +5 -0
  50. package/.changeset/seven-dragons-repair.md +14 -0
  51. package/.changeset/seven-schools-carry.md +5 -0
  52. package/.changeset/shaggy-pugs-add.md +52 -0
  53. package/.changeset/short-months-complain.md +5 -0
  54. package/.changeset/slimy-chicken-melt.md +5 -0
  55. package/.changeset/slimy-maps-press.md +5 -0
  56. package/.changeset/small-buttons-rhyme.md +5 -0
  57. package/.changeset/small-poems-rest.md +5 -0
  58. package/.changeset/swift-rivers-share.md +13 -0
  59. package/.changeset/tall-bikes-develop.md +5 -0
  60. package/.changeset/tame-points-work.md +11 -0
  61. package/.changeset/tender-swans-flash.md +16 -0
  62. package/.changeset/thick-books-grin.md +5 -0
  63. package/.changeset/thin-peas-hear.md +16 -0
  64. package/.changeset/tidy-pandas-punch.md +5 -0
  65. package/.changeset/tough-rockets-allow.md +5 -0
  66. package/.changeset/tricky-tables-shave.md +5 -0
  67. package/.changeset/unlucky-kiwis-sell.md +5 -0
  68. package/.changeset/warm-ties-sit.md +7 -0
  69. package/.changeset/wicked-forks-double.md +33 -0
  70. package/.changeset/young-phones-fold.md +5 -0
  71. package/.changeset/young-snails-grin.md +5 -0
  72. package/CHANGELOG.md +535 -0
  73. package/__cjs/cache/core/cache.cjs +2 -2
  74. package/__cjs/cache/core/cache.cjs.map +1 -1
  75. package/__cjs/cache/core/cache.d.cts +18 -18
  76. package/__cjs/cache/core/types/Cache.cjs.map +1 -1
  77. package/__cjs/cache/core/types/Cache.d.cts +9 -16
  78. package/__cjs/cache/core/types/DataProxy.d.cts +8 -23
  79. package/__cjs/cache/core/types/common.cjs +1 -0
  80. package/__cjs/cache/core/types/common.cjs.map +1 -1
  81. package/__cjs/cache/index.cjs +4 -4
  82. package/__cjs/cache/index.cjs.map +1 -1
  83. package/__cjs/cache/index.d.cts +3 -3
  84. package/__cjs/cache/inmemory/entityStore.cjs +9 -8
  85. package/__cjs/cache/inmemory/entityStore.cjs.map +1 -1
  86. package/__cjs/cache/inmemory/entityStore.d.cts +3 -2
  87. package/__cjs/cache/inmemory/fragmentRegistry.cjs +3 -3
  88. package/__cjs/cache/inmemory/fragmentRegistry.cjs.map +1 -1
  89. package/__cjs/cache/inmemory/helpers.cjs +0 -8
  90. package/__cjs/cache/inmemory/helpers.cjs.map +1 -1
  91. package/__cjs/cache/inmemory/helpers.d.cts +3 -4
  92. package/__cjs/cache/inmemory/inMemoryCache.cjs +4 -12
  93. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  94. package/__cjs/cache/inmemory/inMemoryCache.d.cts +8 -9
  95. package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
  96. package/__cjs/cache/inmemory/policies.cjs +9 -9
  97. package/__cjs/cache/inmemory/policies.cjs.map +1 -1
  98. package/__cjs/cache/inmemory/policies.d.cts +1 -1
  99. package/__cjs/cache/inmemory/reactiveVars.cjs.map +1 -1
  100. package/__cjs/cache/inmemory/reactiveVars.d.cts +7 -7
  101. package/__cjs/cache/inmemory/readFromStore.cjs +14 -56
  102. package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
  103. package/__cjs/cache/inmemory/readFromStore.d.cts +1 -6
  104. package/__cjs/cache/inmemory/types.d.cts +3 -17
  105. package/__cjs/cache/inmemory/writeToStore.cjs +8 -8
  106. package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  107. package/__cjs/cache/inmemory/writeToStore.d.cts +2 -2
  108. package/__cjs/config/jest/areCombinedGraphQLErrorsEqual.cjs +6 -4
  109. package/__cjs/config/jest/areCombinedGraphQLErrorsEqual.cjs.map +1 -1
  110. package/__cjs/config/jest/areCombinedProtocolErrorsEqual.cjs +3 -3
  111. package/__cjs/config/jest/areCombinedProtocolErrorsEqual.cjs.map +1 -1
  112. package/__cjs/config/jest/areMissingFieldErrorsEqual.cjs +2 -3
  113. package/__cjs/config/jest/areMissingFieldErrorsEqual.cjs.map +1 -1
  114. package/__cjs/config/jest/areServerErrorsEqual.cjs +22 -0
  115. package/__cjs/config/jest/areServerErrorsEqual.cjs.map +1 -0
  116. package/__cjs/config/jest/areServerErrorsEqual.d.cts +3 -0
  117. package/__cjs/config/jest/resolver.cjs +11 -0
  118. package/__cjs/config/jest/resolver.cjs.map +1 -1
  119. package/__cjs/config/jest/setup.cjs +18 -1
  120. package/__cjs/config/jest/setup.cjs.map +1 -1
  121. package/__cjs/core/ApolloClient.cjs +37 -21
  122. package/__cjs/core/ApolloClient.cjs.map +1 -1
  123. package/__cjs/core/ApolloClient.d.cts +37 -27
  124. package/__cjs/core/LocalState.cjs +2 -3
  125. package/__cjs/core/LocalState.cjs.map +1 -1
  126. package/__cjs/core/LocalState.d.cts +7 -8
  127. package/__cjs/core/ObservableQuery.cjs +267 -103
  128. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  129. package/__cjs/core/ObservableQuery.d.cts +156 -17
  130. package/__cjs/core/QueryInfo.cjs +12 -86
  131. package/__cjs/core/QueryInfo.cjs.map +1 -1
  132. package/__cjs/core/QueryInfo.d.cts +2 -11
  133. package/__cjs/core/QueryManager.cjs +173 -128
  134. package/__cjs/core/QueryManager.cjs.map +1 -1
  135. package/__cjs/core/QueryManager.d.cts +51 -32
  136. package/__cjs/core/index.cjs +42 -21
  137. package/__cjs/core/index.cjs.map +1 -1
  138. package/__cjs/core/index.d.cts +12 -11
  139. package/__cjs/core/types.d.cts +65 -7
  140. package/__cjs/core/watchQueryOptions.d.cts +32 -119
  141. package/__cjs/errors/CombinedGraphQLErrors.cjs +30 -11
  142. package/__cjs/errors/CombinedGraphQLErrors.cjs.map +1 -1
  143. package/__cjs/errors/CombinedGraphQLErrors.d.cts +21 -2
  144. package/__cjs/errors/CombinedProtocolErrors.cjs +13 -6
  145. package/__cjs/errors/CombinedProtocolErrors.cjs.map +1 -1
  146. package/__cjs/errors/CombinedProtocolErrors.d.cts +9 -0
  147. package/__cjs/errors/LinkError.cjs +20 -0
  148. package/__cjs/errors/LinkError.cjs.map +1 -0
  149. package/__cjs/errors/LinkError.d.cts +14 -0
  150. package/__cjs/errors/ServerError.cjs +6 -0
  151. package/__cjs/errors/ServerError.cjs.map +1 -1
  152. package/__cjs/errors/ServerError.d.cts +2 -0
  153. package/__cjs/errors/ServerParseError.cjs +6 -0
  154. package/__cjs/errors/ServerParseError.cjs.map +1 -1
  155. package/__cjs/errors/ServerParseError.d.cts +2 -0
  156. package/__cjs/errors/UnconventionalError.cjs +6 -0
  157. package/__cjs/errors/UnconventionalError.cjs.map +1 -1
  158. package/__cjs/errors/UnconventionalError.d.cts +2 -0
  159. package/__cjs/errors/index.cjs +19 -4
  160. package/__cjs/errors/index.cjs.map +1 -1
  161. package/__cjs/errors/index.d.cts +2 -3
  162. package/__cjs/errors/isErrorLike.cjs +12 -0
  163. package/__cjs/errors/isErrorLike.cjs.map +1 -0
  164. package/__cjs/errors/isErrorLike.d.cts +3 -0
  165. package/__cjs/errors/utils.cjs +18 -0
  166. package/__cjs/errors/utils.cjs.map +1 -0
  167. package/__cjs/errors/utils.d.cts +3 -0
  168. package/__cjs/invariantErrorCodes.cjs +131 -138
  169. package/__cjs/link/batch/index.cjs +4 -2
  170. package/__cjs/link/batch/index.cjs.map +1 -1
  171. package/__cjs/link/batch/index.d.cts +2 -1
  172. package/__cjs/link/batch-http/batchHttpLink.cjs.map +1 -1
  173. package/__cjs/link/batch-http/batchHttpLink.d.cts +3 -2
  174. package/__cjs/link/batch-http/index.cjs +3 -2
  175. package/__cjs/link/batch-http/index.cjs.map +1 -1
  176. package/__cjs/link/batch-http/index.d.cts +1 -1
  177. package/__cjs/link/context/index.cjs.map +1 -1
  178. package/__cjs/link/context/index.d.cts +2 -3
  179. package/__cjs/link/core/ApolloLink.cjs +4 -22
  180. package/__cjs/link/core/ApolloLink.cjs.map +1 -1
  181. package/__cjs/link/core/ApolloLink.d.cts +3 -5
  182. package/__cjs/link/core/index.cjs.map +1 -1
  183. package/__cjs/link/core/index.d.cts +1 -1
  184. package/__cjs/link/core/types.d.cts +15 -4
  185. package/__cjs/link/error/index.cjs +13 -28
  186. package/__cjs/link/error/index.cjs.map +1 -1
  187. package/__cjs/link/error/index.d.cts +4 -15
  188. package/__cjs/link/http/HttpLink.cjs.map +1 -1
  189. package/__cjs/link/http/HttpLink.d.cts +128 -3
  190. package/__cjs/link/http/checkFetcher.cjs +1 -1
  191. package/__cjs/link/http/createHttpLink.cjs +1 -1
  192. package/__cjs/link/http/createHttpLink.cjs.map +1 -1
  193. package/__cjs/link/http/createHttpLink.d.cts +3 -2
  194. package/__cjs/link/http/index.cjs.map +1 -1
  195. package/__cjs/link/http/index.d.cts +0 -1
  196. package/__cjs/link/http/parseAndCheckHttpResponse.cjs +1 -1
  197. package/__cjs/link/http/rewriteURIForGET.cjs.map +1 -1
  198. package/__cjs/link/http/rewriteURIForGET.d.cts +2 -2
  199. package/__cjs/link/http/selectHttpOptionsAndBody.cjs.map +1 -1
  200. package/__cjs/link/http/selectHttpOptionsAndBody.d.cts +7 -82
  201. package/__cjs/link/http/serializeFetchParameter.cjs +1 -1
  202. package/__cjs/link/persisted-queries/index.cjs +3 -3
  203. package/__cjs/link/persisted-queries/index.cjs.map +1 -1
  204. package/__cjs/link/persisted-queries/index.d.cts +14 -3
  205. package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs +1 -1
  206. package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs.map +1 -1
  207. package/__cjs/link/remove-typename/removeTypenameFromVariables.d.cts +10 -1
  208. package/__cjs/link/retry/index.cjs +3 -2
  209. package/__cjs/link/retry/index.cjs.map +1 -1
  210. package/__cjs/link/retry/index.d.cts +1 -1
  211. package/__cjs/link/subscriptions/index.cjs +3 -1
  212. package/__cjs/link/subscriptions/index.cjs.map +1 -1
  213. package/__cjs/link/utils/createOperation.cjs +5 -1
  214. package/__cjs/link/utils/createOperation.cjs.map +1 -1
  215. package/__cjs/link/utils/createOperation.d.cts +2 -2
  216. package/__cjs/link/utils/validateOperation.cjs +1 -1
  217. package/__cjs/masking/maskDefinition.cjs +2 -2
  218. package/__cjs/masking/maskDefinition.cjs.map +1 -1
  219. package/__cjs/masking/maskDefinition.d.cts +1 -1
  220. package/__cjs/masking/maskFragment.cjs +2 -2
  221. package/__cjs/masking/maskFragment.cjs.map +1 -1
  222. package/__cjs/masking/maskFragment.d.cts +2 -2
  223. package/__cjs/masking/maskOperation.cjs +1 -1
  224. package/__cjs/masking/maskOperation.cjs.map +1 -1
  225. package/__cjs/masking/maskOperation.d.cts +2 -2
  226. package/__cjs/masking/utils.cjs +1 -1
  227. package/__cjs/react/context/ApolloConsumer.cjs +1 -1
  228. package/__cjs/react/context/ApolloConsumer.cjs.map +1 -1
  229. package/__cjs/react/context/ApolloConsumer.d.cts +7 -4
  230. package/__cjs/react/context/ApolloContext.cjs +1 -1
  231. package/__cjs/react/context/ApolloContext.cjs.map +1 -1
  232. package/__cjs/react/context/ApolloContext.d.cts +4 -4
  233. package/__cjs/react/context/ApolloProvider.cjs +1 -1
  234. package/__cjs/react/context/ApolloProvider.cjs.map +1 -1
  235. package/__cjs/react/context/ApolloProvider.d.cts +7 -5
  236. package/__cjs/react/hooks/internal/__use.d.cts +3 -1
  237. package/__cjs/react/hooks/internal/useIsomorphicLayoutEffect.d.cts +1 -1
  238. package/__cjs/react/hooks/internal/validateSuspenseHookOptions.cjs +28 -0
  239. package/__cjs/react/hooks/internal/validateSuspenseHookOptions.cjs.map +1 -0
  240. package/__cjs/react/hooks/internal/validateSuspenseHookOptions.d.cts +3 -0
  241. package/__cjs/react/hooks/internal/wrapHook.cjs +26 -5
  242. package/__cjs/react/hooks/internal/wrapHook.cjs.map +1 -1
  243. package/__cjs/react/hooks/internal/wrapHook.d.cts +7 -5
  244. package/__cjs/react/hooks/useApolloClient.cjs +2 -2
  245. package/__cjs/react/hooks/useApolloClient.cjs.map +1 -1
  246. package/__cjs/react/hooks/useApolloClient.d.cts +2 -2
  247. package/__cjs/react/hooks/useBackgroundQuery.cjs +2 -2
  248. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  249. package/__cjs/react/hooks/useBackgroundQuery.d.cts +143 -46
  250. package/__cjs/react/hooks/useFragment.cjs.map +1 -1
  251. package/__cjs/react/hooks/useFragment.d.cts +51 -26
  252. package/__cjs/react/hooks/useLazyQuery.cjs +31 -32
  253. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  254. package/__cjs/react/hooks/useLazyQuery.d.cts +278 -276
  255. package/__cjs/react/hooks/useLoadableQuery.cjs +21 -2
  256. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  257. package/__cjs/react/hooks/useLoadableQuery.d.cts +106 -34
  258. package/__cjs/react/hooks/useMutation.cjs +14 -21
  259. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  260. package/__cjs/react/hooks/useMutation.d.cts +231 -4
  261. package/__cjs/react/hooks/useQuery.cjs +87 -206
  262. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  263. package/__cjs/react/hooks/useQuery.d.cts +274 -4
  264. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  265. package/__cjs/react/hooks/useQueryRefHandlers.d.cts +23 -22
  266. package/__cjs/react/hooks/useReactiveVar.cjs.map +1 -1
  267. package/__cjs/react/hooks/useReactiveVar.d.cts +1 -1
  268. package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
  269. package/__cjs/react/hooks/useReadQuery.d.cts +27 -25
  270. package/__cjs/react/hooks/useSubscription.cjs +9 -60
  271. package/__cjs/react/hooks/useSubscription.cjs.map +1 -1
  272. package/__cjs/react/hooks/useSubscription.d.cts +94 -3
  273. package/__cjs/react/hooks/useSuspenseFragment.cjs.map +1 -1
  274. package/__cjs/react/hooks/useSuspenseFragment.d.cts +40 -38
  275. package/__cjs/react/hooks/useSuspenseQuery.cjs +7 -32
  276. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  277. package/__cjs/react/hooks/useSuspenseQuery.d.cts +199 -38
  278. package/__cjs/react/hooks/useSyncExternalStore.cjs +1 -1
  279. package/__cjs/react/index.cjs +37 -11
  280. package/__cjs/react/index.cjs.map +1 -1
  281. package/__cjs/react/index.d.cts +22 -6
  282. package/__cjs/react/index.react-server.cjs +1 -5
  283. package/__cjs/react/index.react-server.cjs.map +1 -1
  284. package/__cjs/react/index.react-server.d.cts +0 -1
  285. package/__cjs/react/internal/cache/FragmentReference.cjs.map +1 -1
  286. package/__cjs/react/internal/cache/FragmentReference.d.cts +3 -3
  287. package/__cjs/react/internal/cache/QueryReference.cjs +3 -14
  288. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  289. package/__cjs/react/internal/cache/QueryReference.d.cts +7 -7
  290. package/__cjs/react/internal/cache/SuspenseCache.cjs.map +1 -1
  291. package/__cjs/react/internal/cache/SuspenseCache.d.cts +3 -3
  292. package/__cjs/react/internal/cache/getSuspenseCache.cjs.map +1 -1
  293. package/__cjs/react/internal/cache/getSuspenseCache.d.cts +4 -4
  294. package/__cjs/react/internal/index.cjs +3 -1
  295. package/__cjs/react/internal/index.cjs.map +1 -1
  296. package/__cjs/react/internal/index.d.cts +2 -0
  297. package/__cjs/react/internal/types.d.cts +9 -0
  298. package/__cjs/react/query-preloader/createQueryPreloader.cjs +1 -0
  299. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  300. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +6 -45
  301. package/__cjs/react/ssr/getDataFromTree.cjs +24 -30
  302. package/__cjs/react/ssr/getDataFromTree.cjs.map +1 -1
  303. package/__cjs/react/ssr/getDataFromTree.d.cts +12 -1
  304. package/__cjs/react/ssr/index.cjs +3 -3
  305. package/__cjs/react/ssr/index.cjs.map +1 -1
  306. package/__cjs/react/ssr/index.d.cts +1 -1
  307. package/__cjs/react/ssr/prerenderStatic.cjs +151 -0
  308. package/__cjs/react/ssr/prerenderStatic.cjs.map +1 -0
  309. package/__cjs/react/ssr/prerenderStatic.d.cts +122 -0
  310. package/__cjs/react/ssr/renderToStringWithData.cjs +11 -5
  311. package/__cjs/react/ssr/renderToStringWithData.cjs.map +1 -1
  312. package/__cjs/react/ssr/renderToStringWithData.d.cts +5 -0
  313. package/__cjs/react/ssr/useSSRQuery.cjs +60 -0
  314. package/__cjs/react/ssr/useSSRQuery.cjs.map +1 -0
  315. package/__cjs/react/ssr/useSSRQuery.d.cts +5 -0
  316. package/__cjs/{utilities/types/TODO.cjs → react/types/deprecated.cjs} +1 -1
  317. package/__cjs/react/types/deprecated.cjs.map +1 -0
  318. package/__cjs/react/types/deprecated.d.cts +75 -0
  319. package/__cjs/react/types/types.documentation.d.cts +6 -34
  320. package/__cjs/testing/core/index.cjs +6 -3
  321. package/__cjs/testing/core/index.cjs.map +1 -1
  322. package/__cjs/testing/core/index.d.cts +3 -3
  323. package/__cjs/testing/core/mocking/mockClient.cjs +3 -4
  324. package/__cjs/testing/core/mocking/mockClient.cjs.map +1 -1
  325. package/__cjs/testing/core/mocking/mockClient.d.cts +2 -3
  326. package/__cjs/testing/core/mocking/mockLink.cjs +118 -112
  327. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  328. package/__cjs/testing/core/mocking/mockLink.d.cts +26 -7
  329. package/__cjs/testing/experimental/createSchemaFetch.cjs +4 -4
  330. package/__cjs/testing/experimental/createSchemaFetch.cjs.map +1 -1
  331. package/__cjs/testing/experimental/createTestSchema.cjs.map +1 -1
  332. package/__cjs/testing/experimental/createTestSchema.d.cts +1 -1
  333. package/__cjs/testing/index.cjs +13 -2
  334. package/__cjs/testing/index.cjs.map +1 -1
  335. package/__cjs/testing/index.d.cts +2 -1
  336. package/__cjs/testing/internal/disposables/spyOnConsole.cjs +0 -1
  337. package/__cjs/testing/internal/disposables/spyOnConsole.cjs.map +1 -1
  338. package/__cjs/testing/internal/disposables/spyOnConsole.d.cts +0 -1
  339. package/__cjs/testing/internal/disposables/withProdMode.d.cts +1 -1
  340. package/__cjs/testing/internal/incremental.cjs.map +1 -1
  341. package/__cjs/testing/internal/incremental.d.cts +4 -3
  342. package/__cjs/testing/internal/index.cjs +17 -8
  343. package/__cjs/testing/internal/index.cjs.map +1 -1
  344. package/__cjs/testing/internal/index.d.cts +5 -3
  345. package/__cjs/testing/internal/link.cjs +16 -0
  346. package/__cjs/testing/internal/link.cjs.map +1 -0
  347. package/__cjs/testing/internal/link.d.cts +5 -0
  348. package/__cjs/testing/internal/renderHelpers.cjs.map +1 -1
  349. package/__cjs/testing/internal/renderHelpers.d.cts +3 -3
  350. package/__cjs/testing/internal/resetApolloContext.cjs +24 -0
  351. package/__cjs/testing/internal/resetApolloContext.cjs.map +1 -0
  352. package/__cjs/testing/internal/resetApolloContext.d.cts +10 -0
  353. package/__cjs/testing/internal/scenarios/index.cjs +9 -7
  354. package/__cjs/testing/internal/scenarios/index.cjs.map +1 -1
  355. package/__cjs/testing/internal/scenarios/index.d.cts +14 -5
  356. package/__cjs/testing/matchers/arrayWithLength.cjs +15 -0
  357. package/__cjs/testing/matchers/arrayWithLength.cjs.map +1 -0
  358. package/__cjs/testing/matchers/arrayWithLength.d.cts +3 -0
  359. package/__cjs/testing/matchers/index.cjs +6 -18
  360. package/__cjs/testing/matchers/index.cjs.map +1 -1
  361. package/__cjs/testing/matchers/isSameClient.cjs +19 -0
  362. package/__cjs/testing/matchers/isSameClient.cjs.map +1 -0
  363. package/__cjs/testing/matchers/isSameClient.d.cts +3 -0
  364. package/__cjs/testing/matchers/isSameObservableQuery.cjs +19 -0
  365. package/__cjs/testing/matchers/isSameObservableQuery.cjs.map +1 -0
  366. package/__cjs/testing/matchers/isSameObservableQuery.d.cts +3 -0
  367. package/__cjs/testing/matchers/toComplete.cjs.map +1 -1
  368. package/__cjs/testing/matchers/toEmitAnything.cjs.map +1 -1
  369. package/__cjs/testing/matchers/toEmitError.cjs.map +1 -1
  370. package/__cjs/testing/matchers/toEmitNext.cjs.map +1 -1
  371. package/__cjs/testing/matchers/{toEmitFetchResult.cjs → toEmitTypedValue.cjs} +9 -7
  372. package/__cjs/testing/matchers/toEmitTypedValue.cjs.map +1 -0
  373. package/__cjs/testing/matchers/{toEmitValueStrict.d.cts → toEmitTypedValue.d.cts} +2 -2
  374. package/__cjs/testing/matchers/toHaveSuspenseCacheEntryUsing.cjs +2 -2
  375. package/__cjs/testing/matchers/toHaveSuspenseCacheEntryUsing.cjs.map +1 -1
  376. package/__cjs/testing/matchers/toHaveSuspenseCacheEntryUsing.d.cts +1 -1
  377. package/__cjs/testing/matchers/toMatchDocument.cjs.map +1 -1
  378. package/__cjs/testing/matchers/toMatchDocument.d.cts +1 -1
  379. package/__cjs/testing/matchers/toStrictEqualTyped.cjs +32 -0
  380. package/__cjs/testing/matchers/toStrictEqualTyped.cjs.map +1 -0
  381. package/__cjs/testing/matchers/toStrictEqualTyped.d.cts +8 -0
  382. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs +24 -0
  383. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs.map +1 -0
  384. package/__cjs/testing/matchers/utils/getSerializableProperties.d.cts +4 -0
  385. package/__cjs/testing/react/MockedProvider.cjs +11 -7
  386. package/__cjs/testing/react/MockedProvider.cjs.map +1 -1
  387. package/__cjs/testing/react/MockedProvider.d.cts +8 -6
  388. package/__cjs/utilities/caching/sizes.cjs +2 -2
  389. package/__cjs/utilities/caching/sizes.cjs.map +1 -1
  390. package/__cjs/utilities/caching/sizes.d.cts +2 -20
  391. package/__cjs/utilities/common/errorHandling.d.cts +1 -1
  392. package/__cjs/utilities/common/mergeOptions.cjs.map +1 -1
  393. package/__cjs/utilities/common/mergeOptions.d.cts +1 -1
  394. package/__cjs/utilities/graphql/getFromAST.cjs +15 -6
  395. package/__cjs/utilities/graphql/getFromAST.cjs.map +1 -1
  396. package/__cjs/utilities/graphql/getFromAST.d.cts +2 -2
  397. package/__cjs/utilities/graphql/operations.cjs.map +1 -1
  398. package/__cjs/utilities/graphql/operations.d.cts +1 -1
  399. package/__cjs/utilities/graphql/storeUtils.cjs +1 -1
  400. package/__cjs/utilities/graphql/transform.cjs +2 -2
  401. package/__cjs/utilities/index.cjs +39 -19
  402. package/__cjs/utilities/index.cjs.map +1 -1
  403. package/__cjs/utilities/index.d.cts +16 -15
  404. package/__cjs/utilities/internal/getMemoryInternals.cjs +0 -2
  405. package/__cjs/utilities/internal/getMemoryInternals.cjs.map +1 -1
  406. package/__cjs/utilities/internal/getMemoryInternals.d.cts +1 -2
  407. package/__cjs/utilities/internal/index.cjs +3 -1
  408. package/__cjs/utilities/internal/index.cjs.map +1 -1
  409. package/__cjs/utilities/internal/index.d.cts +1 -0
  410. package/__cjs/utilities/internal/index.production.cjs +1 -0
  411. package/__cjs/utilities/internal/index.production.cjs.map +1 -1
  412. package/__cjs/utilities/internal/toQueryResult.cjs +13 -0
  413. package/__cjs/utilities/internal/toQueryResult.cjs.map +1 -0
  414. package/__cjs/utilities/internal/toQueryResult.d.cts +3 -0
  415. package/__cjs/utilities/invariant/index.development.cjs +1 -0
  416. package/__cjs/utilities/invariant/index.development.cjs.map +1 -1
  417. package/__cjs/utilities/subscriptions/relay/index.cjs +2 -2
  418. package/__cjs/utilities/subscriptions/relay/index.cjs.map +1 -1
  419. package/__cjs/utilities/subscriptions/relay/index.d.cts +1 -1
  420. package/__cjs/utilities/types/NoInfer.d.cts +1 -1
  421. package/__cjs/utilities/types/{OnlyRequiredProperties.cjs → VariablesOption.cjs} +1 -1
  422. package/__cjs/utilities/types/VariablesOption.cjs.map +1 -0
  423. package/__cjs/utilities/types/VariablesOption.d.cts +25 -0
  424. package/__cjs/version.cjs +1 -1
  425. package/__cjs/version.cjs.map +1 -1
  426. package/__cjs/version.d.cts +1 -1
  427. package/cache/core/cache.d.ts +18 -18
  428. package/cache/core/cache.js +1 -1
  429. package/cache/core/cache.js.map +1 -1
  430. package/cache/core/types/Cache.d.ts +9 -16
  431. package/cache/core/types/Cache.js.map +1 -1
  432. package/cache/core/types/DataProxy.d.ts +8 -23
  433. package/cache/core/types/common.js +1 -0
  434. package/cache/core/types/common.js.map +1 -1
  435. package/cache/index.d.ts +3 -3
  436. package/cache/index.js +1 -1
  437. package/cache/index.js.map +1 -1
  438. package/cache/inmemory/entityStore.d.ts +3 -2
  439. package/cache/inmemory/entityStore.js +9 -8
  440. package/cache/inmemory/entityStore.js.map +1 -1
  441. package/cache/inmemory/fragmentRegistry.js +1 -1
  442. package/cache/inmemory/fragmentRegistry.js.map +1 -1
  443. package/cache/inmemory/helpers.d.ts +0 -1
  444. package/cache/inmemory/helpers.js +0 -7
  445. package/cache/inmemory/helpers.js.map +1 -1
  446. package/cache/inmemory/inMemoryCache.d.ts +8 -9
  447. package/cache/inmemory/inMemoryCache.js +4 -12
  448. package/cache/inmemory/inMemoryCache.js.map +1 -1
  449. package/cache/inmemory/key-extractor.js +1 -1
  450. package/cache/inmemory/policies.d.ts +1 -1
  451. package/cache/inmemory/policies.js +9 -9
  452. package/cache/inmemory/policies.js.map +1 -1
  453. package/cache/inmemory/reactiveVars.d.ts +7 -7
  454. package/cache/inmemory/reactiveVars.js.map +1 -1
  455. package/cache/inmemory/readFromStore.d.ts +1 -6
  456. package/cache/inmemory/readFromStore.js +14 -56
  457. package/cache/inmemory/readFromStore.js.map +1 -1
  458. package/cache/inmemory/types.d.ts +3 -17
  459. package/cache/inmemory/writeToStore.d.ts +2 -2
  460. package/cache/inmemory/writeToStore.js +8 -8
  461. package/cache/inmemory/writeToStore.js.map +1 -1
  462. package/config/jest/areCombinedGraphQLErrorsEqual.js +6 -4
  463. package/config/jest/areCombinedGraphQLErrorsEqual.js.map +1 -1
  464. package/config/jest/areCombinedProtocolErrorsEqual.js +3 -3
  465. package/config/jest/areCombinedProtocolErrorsEqual.js.map +1 -1
  466. package/config/jest/areMissingFieldErrorsEqual.js +2 -3
  467. package/config/jest/areMissingFieldErrorsEqual.js.map +1 -1
  468. package/config/jest/areServerErrorsEqual.d.ts +3 -0
  469. package/config/jest/areServerErrorsEqual.js +18 -0
  470. package/config/jest/areServerErrorsEqual.js.map +1 -0
  471. package/config/jest/resolver.js +12 -1
  472. package/config/jest/resolver.js.map +1 -1
  473. package/config/jest/setup.js +19 -2
  474. package/config/jest/setup.js.map +1 -1
  475. package/core/ApolloClient.d.ts +37 -27
  476. package/core/ApolloClient.js +38 -22
  477. package/core/ApolloClient.js.map +1 -1
  478. package/core/LocalState.d.ts +5 -6
  479. package/core/LocalState.js +2 -3
  480. package/core/LocalState.js.map +1 -1
  481. package/core/ObservableQuery.d.ts +156 -17
  482. package/core/ObservableQuery.js +266 -101
  483. package/core/ObservableQuery.js.map +1 -1
  484. package/core/QueryInfo.d.ts +2 -11
  485. package/core/QueryInfo.js +12 -86
  486. package/core/QueryInfo.js.map +1 -1
  487. package/core/QueryManager.d.ts +38 -29
  488. package/core/QueryManager.js +176 -131
  489. package/core/QueryManager.js.map +1 -1
  490. package/core/index.d.ts +12 -11
  491. package/core/index.js +9 -6
  492. package/core/index.js.map +1 -1
  493. package/core/types.d.ts +65 -7
  494. package/core/watchQueryOptions.d.ts +32 -119
  495. package/errors/CombinedGraphQLErrors.d.ts +21 -2
  496. package/errors/CombinedGraphQLErrors.js +30 -11
  497. package/errors/CombinedGraphQLErrors.js.map +1 -1
  498. package/errors/CombinedProtocolErrors.d.ts +9 -0
  499. package/errors/CombinedProtocolErrors.js +13 -6
  500. package/errors/CombinedProtocolErrors.js.map +1 -1
  501. package/errors/LinkError.d.ts +14 -0
  502. package/errors/LinkError.js +16 -0
  503. package/errors/LinkError.js.map +1 -0
  504. package/errors/ServerError.d.ts +2 -0
  505. package/errors/ServerError.js +6 -0
  506. package/errors/ServerError.js.map +1 -1
  507. package/errors/ServerParseError.d.ts +2 -0
  508. package/errors/ServerParseError.js +6 -0
  509. package/errors/ServerParseError.js.map +1 -1
  510. package/errors/UnconventionalError.d.ts +2 -0
  511. package/errors/UnconventionalError.js +6 -0
  512. package/errors/UnconventionalError.js.map +1 -1
  513. package/errors/index.d.ts +2 -3
  514. package/errors/index.js +13 -1
  515. package/errors/index.js.map +1 -1
  516. package/errors/isErrorLike.d.ts +3 -0
  517. package/errors/isErrorLike.js +9 -0
  518. package/errors/isErrorLike.js.map +1 -0
  519. package/errors/utils.d.ts +3 -0
  520. package/errors/utils.js +14 -0
  521. package/errors/utils.js.map +1 -0
  522. package/invariantErrorCodes.js +131 -138
  523. package/legacyEntryPoints/testing/internal/index.d.ts +1 -0
  524. package/legacyEntryPoints/testing/internal/index.js +1 -0
  525. package/legacyEntryPoints/testing/internal/internal.cjs +1 -0
  526. package/legacyEntryPoints/testing/internal/internal.d.cts +1 -0
  527. package/link/batch/index.d.ts +2 -1
  528. package/link/batch/index.js +1 -1
  529. package/link/batch/index.js.map +1 -1
  530. package/link/batch-http/batchHttpLink.d.ts +3 -2
  531. package/link/batch-http/batchHttpLink.js.map +1 -1
  532. package/link/batch-http/index.d.ts +1 -1
  533. package/link/batch-http/index.js +1 -1
  534. package/link/batch-http/index.js.map +1 -1
  535. package/link/context/index.d.ts +2 -3
  536. package/link/context/index.js.map +1 -1
  537. package/link/core/ApolloLink.d.ts +3 -5
  538. package/link/core/ApolloLink.js +4 -22
  539. package/link/core/ApolloLink.js.map +1 -1
  540. package/link/core/index.d.ts +1 -1
  541. package/link/core/index.js.map +1 -1
  542. package/link/core/types.d.ts +15 -4
  543. package/link/error/index.d.ts +4 -15
  544. package/link/error/index.js +14 -29
  545. package/link/error/index.js.map +1 -1
  546. package/link/http/HttpLink.d.ts +128 -3
  547. package/link/http/HttpLink.js.map +1 -1
  548. package/link/http/checkFetcher.js +1 -1
  549. package/link/http/createHttpLink.d.ts +2 -2
  550. package/link/http/createHttpLink.js +1 -1
  551. package/link/http/createHttpLink.js.map +1 -1
  552. package/link/http/index.d.ts +0 -1
  553. package/link/http/index.js.map +1 -1
  554. package/link/http/parseAndCheckHttpResponse.js +1 -1
  555. package/link/http/rewriteURIForGET.d.ts +2 -2
  556. package/link/http/rewriteURIForGET.js.map +1 -1
  557. package/link/http/selectHttpOptionsAndBody.d.ts +7 -82
  558. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  559. package/link/http/serializeFetchParameter.js +1 -1
  560. package/link/persisted-queries/index.d.ts +2 -2
  561. package/link/persisted-queries/index.js +3 -3
  562. package/link/persisted-queries/index.js.map +1 -1
  563. package/link/remove-typename/removeTypenameFromVariables.js.map +1 -1
  564. package/link/retry/index.d.ts +1 -1
  565. package/link/retry/index.js +1 -1
  566. package/link/retry/index.js.map +1 -1
  567. package/link/subscriptions/index.js +3 -1
  568. package/link/subscriptions/index.js.map +1 -1
  569. package/link/utils/createOperation.d.ts +2 -2
  570. package/link/utils/createOperation.js +5 -1
  571. package/link/utils/createOperation.js.map +1 -1
  572. package/link/utils/validateOperation.js +1 -1
  573. package/masking/maskDefinition.d.ts +1 -1
  574. package/masking/maskDefinition.js +2 -2
  575. package/masking/maskDefinition.js.map +1 -1
  576. package/masking/maskFragment.d.ts +2 -2
  577. package/masking/maskFragment.js +2 -2
  578. package/masking/maskFragment.js.map +1 -1
  579. package/masking/maskOperation.d.ts +2 -2
  580. package/masking/maskOperation.js +1 -1
  581. package/masking/maskOperation.js.map +1 -1
  582. package/masking/utils.js +1 -1
  583. package/package.json +20 -40
  584. package/react/context/ApolloConsumer.d.ts +7 -4
  585. package/react/context/ApolloConsumer.js +1 -1
  586. package/react/context/ApolloConsumer.js.map +1 -1
  587. package/react/context/ApolloContext.d.ts +4 -4
  588. package/react/context/ApolloContext.js +1 -1
  589. package/react/context/ApolloContext.js.map +1 -1
  590. package/react/context/ApolloProvider.d.ts +7 -5
  591. package/react/context/ApolloProvider.js +1 -1
  592. package/react/context/ApolloProvider.js.map +1 -1
  593. package/react/hooks/internal/validateSuspenseHookOptions.d.ts +3 -0
  594. package/react/hooks/internal/validateSuspenseHookOptions.js +22 -0
  595. package/react/hooks/internal/validateSuspenseHookOptions.js.map +1 -0
  596. package/react/hooks/internal/wrapHook.d.ts +7 -5
  597. package/react/hooks/internal/wrapHook.js +24 -5
  598. package/react/hooks/internal/wrapHook.js.map +1 -1
  599. package/react/hooks/useApolloClient.d.ts +2 -2
  600. package/react/hooks/useApolloClient.js +1 -1
  601. package/react/hooks/useApolloClient.js.map +1 -1
  602. package/react/hooks/useBackgroundQuery.d.ts +143 -46
  603. package/react/hooks/useBackgroundQuery.js +2 -2
  604. package/react/hooks/useBackgroundQuery.js.map +1 -1
  605. package/react/hooks/useFragment.d.ts +51 -26
  606. package/react/hooks/useFragment.js.map +1 -1
  607. package/react/hooks/useLazyQuery.d.ts +278 -276
  608. package/react/hooks/useLazyQuery.js +30 -31
  609. package/react/hooks/useLazyQuery.js.map +1 -1
  610. package/react/hooks/useLoadableQuery.d.ts +106 -34
  611. package/react/hooks/useLoadableQuery.js +21 -2
  612. package/react/hooks/useLoadableQuery.js.map +1 -1
  613. package/react/hooks/useMutation.d.ts +231 -4
  614. package/react/hooks/useMutation.js +14 -21
  615. package/react/hooks/useMutation.js.map +1 -1
  616. package/react/hooks/useQuery.d.ts +274 -4
  617. package/react/hooks/useQuery.js +86 -205
  618. package/react/hooks/useQuery.js.map +1 -1
  619. package/react/hooks/useQueryRefHandlers.d.ts +23 -22
  620. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  621. package/react/hooks/useReactiveVar.d.ts +1 -1
  622. package/react/hooks/useReactiveVar.js.map +1 -1
  623. package/react/hooks/useReadQuery.d.ts +27 -25
  624. package/react/hooks/useReadQuery.js.map +1 -1
  625. package/react/hooks/useSubscription.d.ts +94 -9
  626. package/react/hooks/useSubscription.js +8 -56
  627. package/react/hooks/useSubscription.js.map +1 -1
  628. package/react/hooks/useSuspenseFragment.d.ts +40 -38
  629. package/react/hooks/useSuspenseFragment.js.map +1 -1
  630. package/react/hooks/useSuspenseQuery.d.ts +199 -38
  631. package/react/hooks/useSuspenseQuery.js +5 -26
  632. package/react/hooks/useSuspenseQuery.js.map +1 -1
  633. package/react/hooks/useSyncExternalStore.js +1 -1
  634. package/react/index.d.ts +22 -6
  635. package/react/index.js +18 -3
  636. package/react/index.js.map +1 -1
  637. package/react/index.react-server.d.ts +0 -1
  638. package/react/index.react-server.js +0 -1
  639. package/react/index.react-server.js.map +1 -1
  640. package/react/internal/cache/FragmentReference.d.ts +3 -3
  641. package/react/internal/cache/FragmentReference.js.map +1 -1
  642. package/react/internal/cache/QueryReference.d.ts +5 -5
  643. package/react/internal/cache/QueryReference.js +3 -14
  644. package/react/internal/cache/QueryReference.js.map +1 -1
  645. package/react/internal/cache/SuspenseCache.d.ts +3 -3
  646. package/react/internal/cache/SuspenseCache.js.map +1 -1
  647. package/react/internal/cache/getSuspenseCache.d.ts +3 -3
  648. package/react/internal/cache/getSuspenseCache.js.map +1 -1
  649. package/react/internal/index.d.ts +2 -0
  650. package/react/internal/index.js +2 -1
  651. package/react/internal/index.js.map +1 -1
  652. package/react/internal/types.d.ts +9 -0
  653. package/react/query-preloader/createQueryPreloader.d.ts +6 -45
  654. package/react/query-preloader/createQueryPreloader.js +1 -0
  655. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  656. package/react/ssr/getDataFromTree.d.ts +12 -1
  657. package/react/ssr/getDataFromTree.js +24 -29
  658. package/react/ssr/getDataFromTree.js.map +1 -1
  659. package/react/ssr/index.d.ts +1 -1
  660. package/react/ssr/index.js +1 -1
  661. package/react/ssr/index.js.map +1 -1
  662. package/react/ssr/prerenderStatic.d.ts +122 -0
  663. package/react/ssr/prerenderStatic.js +147 -0
  664. package/react/ssr/prerenderStatic.js.map +1 -0
  665. package/react/ssr/renderToStringWithData.d.ts +5 -0
  666. package/react/ssr/renderToStringWithData.js +11 -5
  667. package/react/ssr/renderToStringWithData.js.map +1 -1
  668. package/react/ssr/useSSRQuery.d.ts +5 -0
  669. package/react/ssr/useSSRQuery.js +56 -0
  670. package/react/ssr/useSSRQuery.js.map +1 -0
  671. package/react/types/deprecated.d.ts +75 -0
  672. package/react/types/deprecated.js +2 -0
  673. package/react/types/deprecated.js.map +1 -0
  674. package/react/types/types.documentation.d.ts +6 -34
  675. package/testing/core/index.d.ts +3 -3
  676. package/testing/core/index.js +2 -2
  677. package/testing/core/index.js.map +1 -1
  678. package/testing/core/mocking/mockClient.d.ts +2 -3
  679. package/testing/core/mocking/mockClient.js +2 -3
  680. package/testing/core/mocking/mockClient.js.map +1 -1
  681. package/testing/core/mocking/mockLink.d.ts +26 -7
  682. package/testing/core/mocking/mockLink.js +117 -113
  683. package/testing/core/mocking/mockLink.js.map +1 -1
  684. package/testing/experimental/createSchemaFetch.js +2 -2
  685. package/testing/experimental/createSchemaFetch.js.map +1 -1
  686. package/testing/experimental/createTestSchema.d.ts +1 -1
  687. package/testing/experimental/createTestSchema.js.map +1 -1
  688. package/testing/index.d.ts +2 -1
  689. package/testing/index.js +1 -1
  690. package/testing/index.js.map +1 -1
  691. package/testing/internal/disposables/spyOnConsole.d.ts +0 -1
  692. package/testing/internal/disposables/spyOnConsole.js +0 -1
  693. package/testing/internal/disposables/spyOnConsole.js.map +1 -1
  694. package/testing/internal/incremental.d.ts +1 -1
  695. package/testing/internal/incremental.js.map +1 -1
  696. package/testing/internal/index.d.ts +5 -3
  697. package/testing/internal/index.js +5 -3
  698. package/testing/internal/index.js.map +1 -1
  699. package/testing/internal/link.d.ts +5 -0
  700. package/testing/internal/link.js +12 -0
  701. package/testing/internal/link.js.map +1 -0
  702. package/testing/internal/renderHelpers.d.ts +3 -3
  703. package/testing/internal/renderHelpers.js.map +1 -1
  704. package/testing/internal/resetApolloContext.d.ts +10 -0
  705. package/testing/internal/resetApolloContext.js +20 -0
  706. package/testing/internal/resetApolloContext.js.map +1 -0
  707. package/testing/internal/scenarios/index.d.ts +6 -8
  708. package/testing/internal/scenarios/index.js +4 -2
  709. package/testing/internal/scenarios/index.js.map +1 -1
  710. package/testing/matchers/arrayWithLength.d.ts +3 -0
  711. package/testing/matchers/arrayWithLength.js +11 -0
  712. package/testing/matchers/arrayWithLength.js.map +1 -0
  713. package/testing/matchers/index.js +6 -18
  714. package/testing/matchers/index.js.map +1 -1
  715. package/testing/matchers/isSameClient.d.ts +3 -0
  716. package/testing/matchers/isSameClient.js +15 -0
  717. package/testing/matchers/isSameClient.js.map +1 -0
  718. package/testing/matchers/isSameObservableQuery.d.ts +3 -0
  719. package/testing/matchers/isSameObservableQuery.js +15 -0
  720. package/testing/matchers/isSameObservableQuery.js.map +1 -0
  721. package/testing/matchers/toComplete.js.map +1 -1
  722. package/testing/matchers/toEmitAnything.js.map +1 -1
  723. package/testing/matchers/toEmitError.js.map +1 -1
  724. package/testing/matchers/toEmitNext.js.map +1 -1
  725. package/testing/matchers/{toEmitValueStrict.d.ts → toEmitTypedValue.d.ts} +2 -2
  726. package/testing/matchers/{toEmitFetchResult.js → toEmitTypedValue.js} +7 -5
  727. package/testing/matchers/toEmitTypedValue.js.map +1 -0
  728. package/testing/matchers/toHaveSuspenseCacheEntryUsing.d.ts +1 -1
  729. package/testing/matchers/toHaveSuspenseCacheEntryUsing.js +1 -1
  730. package/testing/matchers/toHaveSuspenseCacheEntryUsing.js.map +1 -1
  731. package/testing/matchers/toMatchDocument.d.ts +1 -1
  732. package/testing/matchers/toMatchDocument.js.map +1 -1
  733. package/testing/matchers/toStrictEqualTyped.d.ts +8 -0
  734. package/testing/matchers/toStrictEqualTyped.js +28 -0
  735. package/testing/matchers/toStrictEqualTyped.js.map +1 -0
  736. package/testing/matchers/utils/getSerializableProperties.d.ts +4 -0
  737. package/testing/matchers/utils/getSerializableProperties.js +21 -0
  738. package/testing/matchers/utils/getSerializableProperties.js.map +1 -0
  739. package/testing/react/MockedProvider.d.ts +8 -6
  740. package/testing/react/MockedProvider.js +8 -4
  741. package/testing/react/MockedProvider.js.map +1 -1
  742. package/utilities/caching/sizes.d.ts +2 -20
  743. package/utilities/caching/sizes.js +2 -2
  744. package/utilities/caching/sizes.js.map +1 -1
  745. package/utilities/common/mergeOptions.d.ts +1 -1
  746. package/utilities/common/mergeOptions.js.map +1 -1
  747. package/utilities/graphql/getFromAST.d.ts +2 -2
  748. package/utilities/graphql/getFromAST.js +15 -6
  749. package/utilities/graphql/getFromAST.js.map +1 -1
  750. package/utilities/graphql/operations.d.ts +1 -1
  751. package/utilities/graphql/operations.js.map +1 -1
  752. package/utilities/graphql/storeUtils.js +1 -1
  753. package/utilities/graphql/transform.js +2 -2
  754. package/utilities/index.d.ts +16 -15
  755. package/utilities/index.js +12 -12
  756. package/utilities/index.js.map +1 -1
  757. package/utilities/internal/getMemoryInternals.d.ts +0 -1
  758. package/utilities/internal/getMemoryInternals.js +0 -2
  759. package/utilities/internal/getMemoryInternals.js.map +1 -1
  760. package/utilities/internal/index.d.ts +1 -0
  761. package/utilities/internal/index.js +2 -1
  762. package/utilities/internal/index.js.map +1 -1
  763. package/utilities/internal/index.production.js +1 -0
  764. package/utilities/internal/index.production.js.map +1 -1
  765. package/utilities/internal/toQueryResult.d.ts +3 -0
  766. package/utilities/internal/toQueryResult.js +10 -0
  767. package/utilities/internal/toQueryResult.js.map +1 -0
  768. package/utilities/invariant/index.development.js +1 -0
  769. package/utilities/invariant/index.development.js.map +1 -1
  770. package/utilities/subscriptions/relay/index.d.ts +1 -1
  771. package/utilities/subscriptions/relay/index.js +1 -1
  772. package/utilities/subscriptions/relay/index.js.map +1 -1
  773. package/utilities/types/NoInfer.d.ts +1 -1
  774. package/utilities/types/VariablesOption.d.ts +25 -0
  775. package/utilities/types/VariablesOption.js +2 -0
  776. package/utilities/types/VariablesOption.js.map +1 -0
  777. package/version.d.ts +1 -1
  778. package/version.js +1 -1
  779. package/version.js.map +1 -1
  780. package/__cjs/cache/inmemory/object-canon.cjs +0 -180
  781. package/__cjs/cache/inmemory/object-canon.cjs.map +0 -1
  782. package/__cjs/cache/inmemory/object-canon.d.cts +0 -12
  783. package/__cjs/index.cjs +0 -8
  784. package/__cjs/index.cjs.map +0 -1
  785. package/__cjs/index.d.cts +0 -3
  786. package/__cjs/react/context/index.cjs +0 -10
  787. package/__cjs/react/context/index.cjs.map +0 -1
  788. package/__cjs/react/context/index.d.cts +0 -7
  789. package/__cjs/react/hooks/index.cjs +0 -27
  790. package/__cjs/react/hooks/index.cjs.map +0 -1
  791. package/__cjs/react/hooks/index.d.cts +0 -22
  792. package/__cjs/react/parser/index.cjs +0 -115
  793. package/__cjs/react/parser/index.cjs.map +0 -1
  794. package/__cjs/react/parser/index.d.cts +0 -18
  795. package/__cjs/react/ssr/RenderPromises.cjs +0 -104
  796. package/__cjs/react/ssr/RenderPromises.cjs.map +0 -1
  797. package/__cjs/react/ssr/RenderPromises.d.cts +0 -22
  798. package/__cjs/react/types/types.d.cts +0 -689
  799. package/__cjs/testing/matchers/toEmitApolloQueryResult.cjs +0 -40
  800. package/__cjs/testing/matchers/toEmitApolloQueryResult.cjs.map +0 -1
  801. package/__cjs/testing/matchers/toEmitApolloQueryResult.d.cts +0 -8
  802. package/__cjs/testing/matchers/toEmitFetchResult.cjs.map +0 -1
  803. package/__cjs/testing/matchers/toEmitFetchResult.d.cts +0 -8
  804. package/__cjs/testing/matchers/toEmitMatchedValue.cjs +0 -40
  805. package/__cjs/testing/matchers/toEmitMatchedValue.cjs.map +0 -1
  806. package/__cjs/testing/matchers/toEmitMatchedValue.d.cts +0 -7
  807. package/__cjs/testing/matchers/toEmitValue.cjs +0 -41
  808. package/__cjs/testing/matchers/toEmitValue.cjs.map +0 -1
  809. package/__cjs/testing/matchers/toEmitValue.d.cts +0 -4
  810. package/__cjs/testing/matchers/toEmitValueStrict.cjs +0 -46
  811. package/__cjs/testing/matchers/toEmitValueStrict.cjs.map +0 -1
  812. package/__cjs/testing/matchers/toEqualApolloQueryResult.cjs +0 -24
  813. package/__cjs/testing/matchers/toEqualApolloQueryResult.cjs.map +0 -1
  814. package/__cjs/testing/matchers/toEqualApolloQueryResult.d.cts +0 -6
  815. package/__cjs/testing/matchers/toEqualFetchResult.cjs +0 -24
  816. package/__cjs/testing/matchers/toEqualFetchResult.cjs.map +0 -1
  817. package/__cjs/testing/matchers/toEqualFetchResult.d.cts +0 -4
  818. package/__cjs/testing/matchers/toEqualLazyQueryResult.cjs +0 -40
  819. package/__cjs/testing/matchers/toEqualLazyQueryResult.cjs.map +0 -1
  820. package/__cjs/testing/matchers/toEqualLazyQueryResult.d.cts +0 -10
  821. package/__cjs/testing/matchers/toEqualQueryResult.cjs +0 -40
  822. package/__cjs/testing/matchers/toEqualQueryResult.cjs.map +0 -1
  823. package/__cjs/testing/matchers/toEqualQueryResult.d.cts +0 -9
  824. package/__cjs/utilities/types/OnlyRequiredProperties.cjs.map +0 -1
  825. package/__cjs/utilities/types/OnlyRequiredProperties.d.cts +0 -7
  826. package/__cjs/utilities/types/TODO.cjs.map +0 -1
  827. package/__cjs/utilities/types/TODO.d.cts +0 -3
  828. package/cache/inmemory/object-canon.d.ts +0 -12
  829. package/cache/inmemory/object-canon.js +0 -176
  830. package/cache/inmemory/object-canon.js.map +0 -1
  831. package/index.d.ts +0 -3
  832. package/index.js +0 -3
  833. package/index.js.map +0 -1
  834. package/legacyEntryPoints/react/context/context.cjs +0 -1
  835. package/legacyEntryPoints/react/context/context.d.cts +0 -1
  836. package/legacyEntryPoints/react/context/index.d.ts +0 -1
  837. package/legacyEntryPoints/react/context/index.js +0 -1
  838. package/legacyEntryPoints/react/hooks/hooks.cjs +0 -1
  839. package/legacyEntryPoints/react/hooks/hooks.d.cts +0 -1
  840. package/legacyEntryPoints/react/hooks/index.d.ts +0 -1
  841. package/legacyEntryPoints/react/hooks/index.js +0 -1
  842. package/legacyEntryPoints/react/parser/index.d.ts +0 -1
  843. package/legacyEntryPoints/react/parser/index.js +0 -1
  844. package/legacyEntryPoints/react/parser/parser.cjs +0 -1
  845. package/legacyEntryPoints/react/parser/parser.d.cts +0 -1
  846. package/react/context/index.d.ts +0 -7
  847. package/react/context/index.js +0 -4
  848. package/react/context/index.js.map +0 -1
  849. package/react/hooks/index.d.ts +0 -22
  850. package/react/hooks/index.js +0 -15
  851. package/react/hooks/index.js.map +0 -1
  852. package/react/parser/index.d.ts +0 -18
  853. package/react/parser/index.js +0 -109
  854. package/react/parser/index.js.map +0 -1
  855. package/react/ssr/RenderPromises.d.ts +0 -22
  856. package/react/ssr/RenderPromises.js +0 -100
  857. package/react/ssr/RenderPromises.js.map +0 -1
  858. package/react/types/types.d.ts +0 -689
  859. package/testing/matchers/toEmitApolloQueryResult.d.ts +0 -8
  860. package/testing/matchers/toEmitApolloQueryResult.js +0 -36
  861. package/testing/matchers/toEmitApolloQueryResult.js.map +0 -1
  862. package/testing/matchers/toEmitFetchResult.d.ts +0 -8
  863. package/testing/matchers/toEmitFetchResult.js.map +0 -1
  864. package/testing/matchers/toEmitMatchedValue.d.ts +0 -7
  865. package/testing/matchers/toEmitMatchedValue.js +0 -36
  866. package/testing/matchers/toEmitMatchedValue.js.map +0 -1
  867. package/testing/matchers/toEmitValue.d.ts +0 -4
  868. package/testing/matchers/toEmitValue.js +0 -37
  869. package/testing/matchers/toEmitValue.js.map +0 -1
  870. package/testing/matchers/toEmitValueStrict.js +0 -42
  871. package/testing/matchers/toEmitValueStrict.js.map +0 -1
  872. package/testing/matchers/toEqualApolloQueryResult.d.ts +0 -6
  873. package/testing/matchers/toEqualApolloQueryResult.js +0 -20
  874. package/testing/matchers/toEqualApolloQueryResult.js.map +0 -1
  875. package/testing/matchers/toEqualFetchResult.d.ts +0 -4
  876. package/testing/matchers/toEqualFetchResult.js +0 -20
  877. package/testing/matchers/toEqualFetchResult.js.map +0 -1
  878. package/testing/matchers/toEqualLazyQueryResult.d.ts +0 -10
  879. package/testing/matchers/toEqualLazyQueryResult.js +0 -36
  880. package/testing/matchers/toEqualLazyQueryResult.js.map +0 -1
  881. package/testing/matchers/toEqualQueryResult.d.ts +0 -9
  882. package/testing/matchers/toEqualQueryResult.js +0 -36
  883. package/testing/matchers/toEqualQueryResult.js.map +0 -1
  884. package/utilities/types/OnlyRequiredProperties.d.ts +0 -7
  885. package/utilities/types/OnlyRequiredProperties.js +0 -2
  886. package/utilities/types/OnlyRequiredProperties.js.map +0 -1
  887. package/utilities/types/TODO.d.ts +0 -3
  888. package/utilities/types/TODO.js +0 -2
  889. package/utilities/types/TODO.js.map +0 -1
  890. /package/__cjs/react/{types → internal}/types.cjs +0 -0
  891. /package/__cjs/react/{types → internal}/types.cjs.map +0 -0
  892. /package/react/{types → internal}/types.js +0 -0
  893. /package/react/{types → internal}/types.js.map +0 -0
@@ -1,12 +1,24 @@
1
1
  import { equal } from "@wry/equality";
2
+ import { Slot } from "optimism";
2
3
  import { BehaviorSubject, filter, lastValueFrom, tap } from "rxjs";
3
4
  import { cloneDeep, compact, getOperationDefinition, getQueryDefinition, preventUnhandledRejection, } from "@apollo/client/utilities";
4
5
  import { __DEV__ } from "@apollo/client/utilities/environment";
6
+ import { toQueryResult } from "@apollo/client/utilities/internal";
5
7
  import { invariant } from "@apollo/client/utilities/invariant";
6
8
  import { equalByQuery } from "./equalByQuery.js";
7
9
  import { isNetworkRequestInFlight, NetworkStatus } from "./networkStatus.js";
8
10
  const { assign, hasOwnProperty } = Object;
11
+ const newNetworkStatusSymbol = Symbol();
12
+ const uninitialized = {};
9
13
  export class ObservableQuery {
14
+ /**
15
+ * @internal
16
+ * A slot used by the `useQuery` hook to indicate that `client.watchQuery`
17
+ * should not register the query immediately, but instead wait for the query to
18
+ * be started registered with the `QueryManager` when `useSyncExternalStore`
19
+ * actively subscribes to it.
20
+ */
21
+ static inactiveOnCreation = new Slot();
10
22
  options;
11
23
  queryId;
12
24
  queryName;
@@ -15,10 +27,8 @@ export class ObservableQuery {
15
27
  // untransformed query to ensure document transforms with runtime conditionals
16
28
  // are run on the original document.
17
29
  get query() {
18
- return this.lastQuery || this.options.query;
30
+ return this.lastQuery;
19
31
  }
20
- // Computed shorthand for this.options.variables, preserved for
21
- // backwards compatibility.
22
32
  /**
23
33
  * An object containing the variables that were provided for the query.
24
34
  */
@@ -27,7 +37,6 @@ export class ObservableQuery {
27
37
  }
28
38
  subject;
29
39
  observable;
30
- initialResult;
31
40
  isTornDown;
32
41
  queryManager;
33
42
  subscriptions = new Set();
@@ -41,16 +50,31 @@ export class ObservableQuery {
41
50
  networkStatus;
42
51
  constructor({ queryManager, queryInfo, options, }) {
43
52
  this.networkStatus = NetworkStatus.loading;
44
- this.initialResult = {
45
- data: undefined,
46
- loading: true,
47
- networkStatus: this.networkStatus,
48
- partial: true,
49
- };
50
- this.subject = new BehaviorSubject(this.initialResult);
53
+ let startedInactive = ObservableQuery.inactiveOnCreation.getValue();
54
+ this.subject = new BehaviorSubject(uninitialized);
51
55
  this.observable = this.subject.pipe(tap({
52
56
  subscribe: () => {
57
+ if (startedInactive) {
58
+ queryManager["queries"].set(this.queryId, queryInfo);
59
+ startedInactive = false;
60
+ }
53
61
  if (!this.subject.observed) {
62
+ if (this.subject.value === uninitialized) {
63
+ // Emitting a value in the `subscribe` callback of `tap` gives
64
+ // the subject a chance to save this initial result without
65
+ // emitting the placeholder value since this callback is executed
66
+ // before `tap` subscribes to the source observable (the subject).
67
+ // `reobserve` also has the chance to update this value if it
68
+ // synchronously emits one (usually due to reporting a cache
69
+ // value).
70
+ //
71
+ // We don't initialize the `BehaviorSubject` with
72
+ // `getInitialResult` because its possible the cache might have
73
+ // updated between when the `ObservableQuery` was instantiated and
74
+ // when it is subscribed to. Updating the value here ensures we
75
+ // report the most up-to-date result from the cache.
76
+ this.subject.next(this.getInitialResult());
77
+ }
54
78
  this.reobserve();
55
79
  // TODO: See if we can rework updatePolling to better handle this.
56
80
  // reobserve calls updatePolling but this `subscribe` callback is
@@ -65,18 +89,14 @@ export class ObservableQuery {
65
89
  this.tearDownQuery();
66
90
  }
67
91
  },
68
- }),
69
- // TODO: Conditionally filter when notifyOnNetworkStatusChange is true or
70
- // not. We want to emit the loading result if notifyOnNetworkStatusChange
71
- // is true.
72
- filter((result) =>
73
- // TODO: Remove this behavior when unifying loading state for notifyOnNetworkStatusChange
74
- (this.options.fetchPolicy === "no-cache" &&
75
- this.options.notifyOnNetworkStatusChange) ||
76
- // TODO: Remove this behavior when unifying loading state for notifyOnNetworkStatusChange
77
- (this.options.fetchPolicy === "network-only" &&
78
- this.queryInfo.getDiff().complete) ||
79
- result !== this.initialResult));
92
+ }), filter((result) => {
93
+ return (this.options.fetchPolicy !== "standby" &&
94
+ (this.options.notifyOnNetworkStatusChange ||
95
+ !result.loading ||
96
+ // data could be defined for cache-and-network fetch policies
97
+ // when emitting the cache result while loading the network result
98
+ !!result.data));
99
+ }));
80
100
  this["@@observable"] = () => this;
81
101
  if (Symbol.observable) {
82
102
  this[Symbol.observable] = () => this;
@@ -96,6 +116,7 @@ export class ObservableQuery {
96
116
  const { fetchPolicy = defaultFetchPolicy,
97
117
  // Make sure we don't store "standby" as the initialFetchPolicy.
98
118
  initialFetchPolicy = fetchPolicy === "standby" ? defaultFetchPolicy : (fetchPolicy), } = options;
119
+ this.lastQuery = options.query;
99
120
  this.options = {
100
121
  ...options,
101
122
  // Remember the initial options.fetchPolicy so we can revert back to this
@@ -105,6 +126,7 @@ export class ObservableQuery {
105
126
  // This ensures this.options.fetchPolicy always has a string value, in
106
127
  // case options.fetchPolicy was not provided.
107
128
  fetchPolicy,
129
+ variables: this.getVariablesWithDefaults(options.variables),
108
130
  };
109
131
  this.queryId = queryInfo.queryId || queryManager.generateQueryId();
110
132
  const opDef = getOperationDefinition(this.query);
@@ -121,6 +143,50 @@ export class ObservableQuery {
121
143
  resetDiff() {
122
144
  this.queryInfo.resetDiff();
123
145
  }
146
+ getInitialResult() {
147
+ const fetchPolicy = this.queryManager.prioritizeCacheValues ?
148
+ "cache-first"
149
+ : this.options.fetchPolicy;
150
+ const defaultResult = {
151
+ data: undefined,
152
+ loading: true,
153
+ networkStatus: NetworkStatus.loading,
154
+ partial: true,
155
+ };
156
+ const cacheResult = () => {
157
+ const diff = this.queryInfo.getDiff();
158
+ return this.maskResult({
159
+ data:
160
+ // TODO: queryInfo.getDiff should handle this since cache.diff returns a
161
+ // null when returnPartialData is false
162
+ this.options.returnPartialData || diff.complete ?
163
+ diff.result ?? undefined
164
+ : undefined,
165
+ loading: !diff.complete,
166
+ networkStatus: diff.complete ? NetworkStatus.ready : NetworkStatus.loading,
167
+ partial: !diff.complete,
168
+ });
169
+ };
170
+ switch (fetchPolicy) {
171
+ case "cache-only":
172
+ case "cache-first":
173
+ return cacheResult();
174
+ case "cache-and-network":
175
+ return {
176
+ ...cacheResult(),
177
+ loading: true,
178
+ networkStatus: NetworkStatus.loading,
179
+ };
180
+ case "standby":
181
+ return {
182
+ ...defaultResult,
183
+ loading: false,
184
+ networkStatus: NetworkStatus.ready,
185
+ };
186
+ default:
187
+ return defaultResult;
188
+ }
189
+ }
124
190
  getCurrentFullResult(saveAsLastResult = true) {
125
191
  // Use the last result as long as the variables match this.variables.
126
192
  const lastResult = this.getLastResult(true);
@@ -132,7 +198,11 @@ export class ObservableQuery {
132
198
  loading: isNetworkRequestInFlight(networkStatus),
133
199
  networkStatus,
134
200
  };
135
- const { fetchPolicy = "cache-first" } = this.options;
201
+ let { fetchPolicy = "cache-first" } = this.options;
202
+ const { prioritizeCacheValues } = this.queryManager;
203
+ if (prioritizeCacheValues) {
204
+ fetchPolicy = "cache-first";
205
+ }
136
206
  if (
137
207
  // These fetch policies should never deliver data from the cache, unless
138
208
  // redelivering a previously delivered result.
@@ -144,7 +214,7 @@ export class ObservableQuery {
144
214
  this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) {
145
215
  // Fall through.
146
216
  }
147
- else if (this.waitForOwnResult) {
217
+ else if (this.waitForOwnResult && !prioritizeCacheValues) {
148
218
  // This would usually be a part of `QueryInfo.getDiff()`.
149
219
  // which we skip in the waitForOwnResult case since we are not
150
220
  // interested in the diff.
@@ -256,18 +326,19 @@ export class ObservableQuery {
256
326
  const queryDef = getQueryDefinition(this.query);
257
327
  const vars = queryDef.variableDefinitions;
258
328
  if (!vars || !vars.some((v) => v.variable.name.value === "variables")) {
259
- __DEV__ && invariant.warn(67, variables, queryDef.name?.value || queryDef);
329
+ __DEV__ && invariant.warn(69, variables, queryDef.name?.value || queryDef);
260
330
  }
261
331
  }
262
- if (variables && !equal(this.options.variables, variables)) {
332
+ if (variables && !equal(this.variables, variables)) {
263
333
  // Update the existing options with new variables
264
- reobserveOptions.variables = this.options.variables = {
265
- ...this.options.variables,
266
- ...variables,
267
- };
334
+ reobserveOptions.variables = this.options.variables =
335
+ this.getVariablesWithDefaults({ ...this.variables, ...variables });
268
336
  }
269
337
  this.queryInfo.resetLastWrite();
270
- return this.reobserve(reobserveOptions, NetworkStatus.refetch);
338
+ return this.reobserve({
339
+ ...reobserveOptions,
340
+ [newNetworkStatusSymbol]: NetworkStatus.refetch,
341
+ });
271
342
  }
272
343
  /**
273
344
  * A function that helps you fetch the next set of results for a [paginated list field](https://www.apollographql.com/docs/react/pagination/core-api/).
@@ -279,7 +350,7 @@ export class ObservableQuery {
279
350
  query: this.options.query,
280
351
  ...fetchMoreOptions,
281
352
  variables: {
282
- ...this.options.variables,
353
+ ...this.variables,
283
354
  ...fetchMoreOptions.variables,
284
355
  },
285
356
  })),
@@ -289,6 +360,7 @@ export class ObservableQuery {
289
360
  // fetchMore to provide an updateQuery callback that determines how
290
361
  // the data gets written to the cache.
291
362
  fetchPolicy: "no-cache",
363
+ notifyOnNetworkStatusChange: this.options.notifyOnNetworkStatusChange,
292
364
  };
293
365
  combinedOptions.query = this.transformDocument(combinedOptions.query);
294
366
  const qid = this.queryManager.generateQueryId();
@@ -312,7 +384,7 @@ export class ObservableQuery {
312
384
  const updateQuery = fetchMoreOptions?.updateQuery;
313
385
  const isCached = this.options.fetchPolicy !== "no-cache";
314
386
  if (!isCached) {
315
- invariant(updateQuery, 68);
387
+ invariant(updateQuery, 70);
316
388
  }
317
389
  return this.queryManager
318
390
  .fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore)
@@ -397,7 +469,7 @@ export class ObservableQuery {
397
469
  // the cache, we still want fetchMore to deliver its final loading:false
398
470
  // result with the unchanged data.
399
471
  if (isCached && !updatedQuerySet.has(this.query)) {
400
- reobserveCacheFirst(this);
472
+ this.reobserveCacheFirst();
401
473
  }
402
474
  });
403
475
  }
@@ -418,7 +490,17 @@ export class ObservableQuery {
418
490
  })
419
491
  .subscribe({
420
492
  next: (subscriptionData) => {
421
- const { updateQuery } = options;
493
+ const { updateQuery, onError } = options;
494
+ const { error } = subscriptionData;
495
+ if (error) {
496
+ if (onError) {
497
+ onError(error);
498
+ }
499
+ else {
500
+ __DEV__ && invariant.error(71, error);
501
+ }
502
+ return;
503
+ }
422
504
  if (updateQuery) {
423
505
  this.updateQuery((previous, updateOptions) => updateQuery(previous, {
424
506
  subscriptionData: subscriptionData,
@@ -426,13 +508,6 @@ export class ObservableQuery {
426
508
  }));
427
509
  }
428
510
  },
429
- error: (err) => {
430
- if (options.onError) {
431
- options.onError(err);
432
- return;
433
- }
434
- __DEV__ && invariant.error(69, err);
435
- },
436
511
  });
437
512
  this.subscriptions.add(subscription);
438
513
  return () => {
@@ -441,9 +516,7 @@ export class ObservableQuery {
441
516
  }
442
517
  };
443
518
  }
444
- setOptions(newOptions) {
445
- return this.reobserve(newOptions);
446
- }
519
+ /** @internal */
447
520
  silentSetOptions(newOptions) {
448
521
  const mergedOptions = compact(this.options, newOptions || {});
449
522
  assign(this.options, mergedOptions);
@@ -467,22 +540,24 @@ export class ObservableQuery {
467
540
  * the previous values of those variables will be used.
468
541
  */
469
542
  async setVariables(variables) {
543
+ variables = this.getVariablesWithDefaults(variables);
470
544
  if (equal(this.variables, variables)) {
471
545
  // If we have no observers, then we don't actually want to make a network
472
546
  // request. As soon as someone observes the query, the request will kick
473
547
  // off. For now, we just store any changes. (See #1077)
474
- return this.subject.getValue();
548
+ return toQueryResult(this.subject.getValue());
475
549
  }
476
550
  this.options.variables = variables;
477
551
  // See comment above
478
552
  if (!this.hasObservers()) {
479
- return this.subject.getValue();
553
+ return toQueryResult(this.subject.getValue());
480
554
  }
481
555
  return this.reobserve({
482
556
  // Reset options.fetchPolicy to its original value.
483
557
  fetchPolicy: this.options.initialFetchPolicy,
484
558
  variables,
485
- }, NetworkStatus.setVariables);
559
+ [newNetworkStatusSymbol]: NetworkStatus.setVariables,
560
+ });
486
561
  }
487
562
  /**
488
563
  * A function that enables you to update the query's cached result without executing a followup GraphQL operation.
@@ -547,13 +622,8 @@ export class ObservableQuery {
547
622
  // requests to be triggered only if the cache result is incomplete. To
548
623
  // that end, the options.nextFetchPolicy option provides an easy way to
549
624
  // update options.fetchPolicy after the initial network request, without
550
- // having to call observableQuery.setOptions.
551
- options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {
552
- reason,
553
- options,
554
- observable: this,
555
- initialFetchPolicy,
556
- });
625
+ // having to call observableQuery.reobserve.
626
+ options.fetchPolicy = options.nextFetchPolicy.call(options, fetchPolicy, { reason, options, observable: this, initialFetchPolicy });
557
627
  }
558
628
  else if (reason === "variables-changed") {
559
629
  options.fetchPolicy = initialFetchPolicy;
@@ -567,8 +637,9 @@ export class ObservableQuery {
567
637
  fetch(options, newNetworkStatus, emitLoadingState, query) {
568
638
  // TODO Make sure we update the networkStatus (and infer fetchVariables)
569
639
  // before actually committing to the fetch.
570
- this.queryManager.setObservableQuery(this);
571
- return this.queryManager.fetchObservableWithInfo(this.queryId, options, newNetworkStatus, query, emitLoadingState);
640
+ const queryInfo = this.queryManager.getOrCreateQuery(this.queryId);
641
+ queryInfo.setObservableQuery(this);
642
+ return this.queryManager.fetchObservableWithInfo(queryInfo, options, newNetworkStatus, query, emitLoadingState);
572
643
  }
573
644
  // Turns polling on or off based on this.options.pollInterval.
574
645
  updatePolling() {
@@ -578,16 +649,13 @@ export class ObservableQuery {
578
649
  }
579
650
  const { pollingInfo, options: { pollInterval }, } = this;
580
651
  if (!pollInterval || !this.hasObservers()) {
581
- if (pollingInfo) {
582
- clearTimeout(pollingInfo.timeout);
583
- delete this.pollingInfo;
584
- }
652
+ this.cancelPolling();
585
653
  return;
586
654
  }
587
655
  if (pollingInfo && pollingInfo.interval === pollInterval) {
588
656
  return;
589
657
  }
590
- invariant(pollInterval, 70);
658
+ invariant(pollInterval, 72);
591
659
  const info = pollingInfo || (this.pollingInfo = {});
592
660
  info.interval = pollInterval;
593
661
  const maybeFetch = () => {
@@ -602,7 +670,8 @@ export class ObservableQuery {
602
670
  fetchPolicy: this.options.initialFetchPolicy === "no-cache" ?
603
671
  "no-cache"
604
672
  : "network-only",
605
- }, NetworkStatus.poll).then(poll, poll);
673
+ [newNetworkStatusSymbol]: NetworkStatus.poll,
674
+ }).then(poll, poll);
606
675
  }
607
676
  else {
608
677
  poll();
@@ -618,6 +687,13 @@ export class ObservableQuery {
618
687
  };
619
688
  poll();
620
689
  }
690
+ // This differs from stopPolling in that it does not set pollInterval to 0
691
+ cancelPolling() {
692
+ if (this.pollingInfo) {
693
+ clearTimeout(this.pollingInfo.timeout);
694
+ delete this.pollingInfo;
695
+ }
696
+ }
621
697
  updateLastResult(newResult, variables = this.variables) {
622
698
  let error = this.getLastError();
623
699
  // Preserve this.last.error unless the variables have changed.
@@ -632,10 +708,18 @@ export class ObservableQuery {
632
708
  ...(error ? { error } : null),
633
709
  });
634
710
  }
635
- // TODO: catch `EmptyError` and rethrow as network error if `complete`
636
- // notification is emitted without a value.
637
- reobserve(newOptions, newNetworkStatus) {
711
+ /**
712
+ * Reevaluate the query, optionally against new options. New options will be
713
+ * merged with the current options when given.
714
+ */
715
+ reobserve(newOptions) {
638
716
  this.isTornDown = false;
717
+ let newNetworkStatus;
718
+ if (newOptions) {
719
+ newNetworkStatus = newOptions[newNetworkStatusSymbol];
720
+ // Avoid setting the symbol option in this.options
721
+ delete newOptions[newNetworkStatusSymbol];
722
+ }
639
723
  const useDisposableObservable =
640
724
  // Refetching uses a disposable Observable to allow refetches using different
641
725
  // options/variables, without permanently altering the options of the
@@ -648,7 +732,7 @@ export class ObservableQuery {
648
732
  // fetchPolicy to be "network-only" or "no-cache") won't override the original options.
649
733
  newNetworkStatus === NetworkStatus.poll;
650
734
  // Save the old variables, since Object.assign may modify them below.
651
- const oldVariables = this.options.variables;
735
+ const oldVariables = this.variables;
652
736
  const oldFetchPolicy = this.options.fetchPolicy;
653
737
  const mergedOptions = compact(this.options, newOptions || {});
654
738
  const options = useDisposableObservable ?
@@ -662,6 +746,16 @@ export class ObservableQuery {
662
746
  // time a request is made against the original query.
663
747
  const query = this.transformDocument(options.query);
664
748
  this.lastQuery = query;
749
+ // Reevaluate variables to allow resetting variables with variables: undefined,
750
+ // otherwise `compact` will ignore the `variables` key in `newOptions`. We
751
+ // do this after we run the query transform to ensure we get default
752
+ // variables from the transformed query.
753
+ //
754
+ // Note: updating options.variables may mutate this.options.variables
755
+ // in the case of a non-disposable query. This is intentional.
756
+ if (newOptions && "variables" in newOptions) {
757
+ options.variables = this.getVariablesWithDefaults(newOptions.variables);
758
+ }
665
759
  if (!useDisposableObservable) {
666
760
  // We can skip calling updatePolling if we're not changing this.options.
667
761
  this.updatePolling();
@@ -678,6 +772,7 @@ export class ObservableQuery {
678
772
  // A `nextFetchPolicy` function has even higher priority, though,
679
773
  // so in that case `applyNextFetchPolicy` must be called.
680
774
  typeof options.nextFetchPolicy === "function")) {
775
+ // This might mutate options.fetchPolicy
681
776
  this.applyNextFetchPolicy("variables-changed", options);
682
777
  if (newNetworkStatus === void 0) {
683
778
  newNetworkStatus = NetworkStatus.setVariables;
@@ -692,6 +787,14 @@ export class ObservableQuery {
692
787
  !equal(newOptions.variables, oldVariables)) {
693
788
  newNetworkStatus = NetworkStatus.setVariables;
694
789
  }
790
+ // QueryManager does not emit any values for standby fetch policies so we
791
+ // want ensure that the networkStatus remains ready.
792
+ if (options.fetchPolicy === "standby") {
793
+ newNetworkStatus = NetworkStatus.ready;
794
+ }
795
+ }
796
+ if (options.fetchPolicy === "standby") {
797
+ this.cancelPolling();
695
798
  }
696
799
  this.networkStatus = newNetworkStatus;
697
800
  this.waitForOwnResult &&= skipCacheDataFor(options.fetchPolicy);
@@ -700,8 +803,8 @@ export class ObservableQuery {
700
803
  this.waitForOwnResult = false;
701
804
  }
702
805
  };
703
- const variables = options.variables && { ...options.variables };
704
- const { notifyOnNetworkStatusChange = false } = options;
806
+ const variables = { ...options.variables };
807
+ const { notifyOnNetworkStatusChange = true } = options;
705
808
  const { observable, fromLink } = this.fetch(options, newNetworkStatus, notifyOnNetworkStatusChange &&
706
809
  oldNetworkStatus !== newNetworkStatus &&
707
810
  isNetworkRequestInFlight(newNetworkStatus), query);
@@ -733,7 +836,13 @@ export class ObservableQuery {
733
836
  // Note: lastValueFrom will create a separate subscription to the
734
837
  // observable which means that terminating this ObservableQuery will not
735
838
  // cancel the request from the link chain.
736
- lastValueFrom(observable).then(this.maskResult));
839
+ lastValueFrom(observable, {
840
+ // This default value should only be used when using a `fetchPolicy` of
841
+ // `standby` since that fetch policy completes without emitting a
842
+ // result. Since we are converting this to a QueryResult type, we
843
+ // omit the extra fields from ApolloQueryResult in the default value.
844
+ defaultValue: { data: undefined },
845
+ }).then((result) => toQueryResult(this.maskResult(result))));
737
846
  }
738
847
  // (Re)deliver the current result to this.observers without applying fetch
739
848
  // policies or making network requests.
@@ -789,7 +898,7 @@ export class ObservableQuery {
789
898
  // stop all active GraphQL subscriptions
790
899
  this.subscriptions.forEach((sub) => sub.unsubscribe());
791
900
  this.subscriptions.clear();
792
- this.queryManager.stopQuery(this.queryId);
901
+ this.queryManager.removeQuery(this.queryId);
793
902
  this.isTornDown = true;
794
903
  }
795
904
  transformDocument(document) {
@@ -808,40 +917,96 @@ export class ObservableQuery {
808
917
  }
809
918
  : result;
810
919
  }
811
- }
812
- // Reobserve with fetchPolicy effectively set to "cache-first", triggering
813
- // delivery of any new data from the cache, possibly falling back to the network
814
- // if any cache data are missing. This allows _complete_ cache results to be
815
- // delivered without also kicking off unnecessary network requests when
816
- // this.options.fetchPolicy is "cache-and-network" or "network-only". When
817
- // this.options.fetchPolicy is any other policy ("cache-first", "cache-only",
818
- // "standby", or "no-cache"), we call this.reobserve() as usual.
819
- export function reobserveCacheFirst(obsQuery) {
820
- const { fetchPolicy, nextFetchPolicy } = obsQuery.options;
821
- if (fetchPolicy === "cache-and-network" || fetchPolicy === "network-only") {
822
- return obsQuery.reobserve({
823
- fetchPolicy: "cache-first",
824
- // Use a temporary nextFetchPolicy function that replaces itself with the
825
- // previous nextFetchPolicy value and returns the original fetchPolicy.
826
- nextFetchPolicy(currentFetchPolicy, context) {
827
- // Replace this nextFetchPolicy function in the options object with the
828
- // original this.options.nextFetchPolicy value.
829
- this.nextFetchPolicy = nextFetchPolicy;
830
- // If the original nextFetchPolicy value was a function, give it a
831
- // chance to decide what happens here.
832
- if (typeof this.nextFetchPolicy === "function") {
833
- return this.nextFetchPolicy(currentFetchPolicy, context);
920
+ dirty = false;
921
+ notifyTimeout;
922
+ /** @internal */
923
+ resetNotifications() {
924
+ this.cancelNotifyTimeout();
925
+ this.dirty = false;
926
+ }
927
+ cancelNotifyTimeout() {
928
+ if (this.notifyTimeout) {
929
+ clearTimeout(this.notifyTimeout);
930
+ this.notifyTimeout = void 0;
931
+ }
932
+ }
933
+ /** @internal */
934
+ scheduleNotify() {
935
+ if (this.dirty)
936
+ return;
937
+ this.dirty = true;
938
+ if (!this.notifyTimeout) {
939
+ this.notifyTimeout = setTimeout(() => this.notify(), 0);
940
+ }
941
+ }
942
+ /** @internal */
943
+ notify() {
944
+ this.cancelNotifyTimeout();
945
+ if (this.dirty) {
946
+ if (this.options.fetchPolicy == "cache-only" ||
947
+ this.options.fetchPolicy == "cache-and-network" ||
948
+ !isNetworkRequestInFlight(this.networkStatus)) {
949
+ const diff = this.queryInfo.getDiff();
950
+ if (diff.fromOptimisticTransaction) {
951
+ // If this diff came from an optimistic transaction, deliver the
952
+ // current cache data to the ObservableQuery, but don't perform a
953
+ // reobservation, since oq.reobserveCacheFirst might make a network
954
+ // request, and we never want to trigger network requests in the
955
+ // middle of optimistic updates.
956
+ this.observe();
834
957
  }
835
- // Otherwise go back to the original this.options.fetchPolicy.
836
- return fetchPolicy;
837
- },
838
- });
958
+ else {
959
+ // Otherwise, make the ObservableQuery "reobserve" the latest data
960
+ // using a temporary fetch policy of "cache-first", so complete cache
961
+ // results have a chance to be delivered without triggering additional
962
+ // network requests, even when options.fetchPolicy is "network-only"
963
+ // or "cache-and-network". All other fetch policies are preserved by
964
+ // this method, and are handled by calling oq.reobserve(). If this
965
+ // reobservation is spurious, isDifferentFromLastResult still has a
966
+ // chance to catch it before delivery to ObservableQuery subscribers.
967
+ this.reobserveCacheFirst();
968
+ }
969
+ }
970
+ }
971
+ this.dirty = false;
972
+ }
973
+ // Reobserve with fetchPolicy effectively set to "cache-first", triggering
974
+ // delivery of any new data from the cache, possibly falling back to the network
975
+ // if any cache data are missing. This allows _complete_ cache results to be
976
+ // delivered without also kicking off unnecessary network requests when
977
+ // this.options.fetchPolicy is "cache-and-network" or "network-only". When
978
+ // this.options.fetchPolicy is any other policy ("cache-first", "cache-only",
979
+ // "standby", or "no-cache"), we call this.reobserve() as usual.
980
+ reobserveCacheFirst() {
981
+ const { fetchPolicy, nextFetchPolicy } = this.options;
982
+ if (fetchPolicy === "cache-and-network" || fetchPolicy === "network-only") {
983
+ return this.reobserve({
984
+ fetchPolicy: "cache-first",
985
+ // Use a temporary nextFetchPolicy function that replaces itself with the
986
+ // previous nextFetchPolicy value and returns the original fetchPolicy.
987
+ nextFetchPolicy(currentFetchPolicy, context) {
988
+ // Replace this nextFetchPolicy function in the options object with the
989
+ // original this.options.nextFetchPolicy value.
990
+ this.nextFetchPolicy = nextFetchPolicy;
991
+ // If the original nextFetchPolicy value was a function, give it a
992
+ // chance to decide what happens here.
993
+ if (typeof this.nextFetchPolicy === "function") {
994
+ return this.nextFetchPolicy(currentFetchPolicy, context);
995
+ }
996
+ // Otherwise go back to the original this.options.fetchPolicy.
997
+ return fetchPolicy;
998
+ },
999
+ });
1000
+ }
1001
+ return this.reobserve();
1002
+ }
1003
+ getVariablesWithDefaults(variables) {
1004
+ return this.queryManager.getVariables(this.query, variables);
839
1005
  }
840
- return obsQuery.reobserve();
841
1006
  }
842
1007
  export function logMissingFieldErrors(missing) {
843
1008
  if (__DEV__ && missing) {
844
- __DEV__ && invariant.debug(71, missing);
1009
+ __DEV__ && invariant.debug(73, missing);
845
1010
  }
846
1011
  }
847
1012
  function skipCacheDataFor(fetchPolicy /* `undefined` would mean `"cache-first"` */) {