@apollo/client 4.0.0-alpha.12 → 4.0.0-alpha.14

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 (1096) hide show
  1. package/.changeset/curvy-flies-accept.md +5 -0
  2. package/.changeset/dirty-cobras-change.md +7 -0
  3. package/.changeset/few-crabs-move.md +6 -0
  4. package/.changeset/friendly-olives-refuse.md +5 -0
  5. package/.changeset/funny-boats-wink.md +35 -0
  6. package/.changeset/fuzzy-seahorses-hunt.md +5 -0
  7. package/.changeset/gold-oranges-double.md +5 -0
  8. package/.changeset/little-parrots-bow.md +14 -0
  9. package/.changeset/olive-cougars-ring.md +9 -0
  10. package/.changeset/pre.json +16 -0
  11. package/.changeset/serious-items-develop.md +17 -0
  12. package/.changeset/sixty-bats-cry.md +6 -0
  13. package/.changeset/spotty-mugs-poke.md +5 -0
  14. package/.changeset/strong-rivers-fry.md +34 -0
  15. package/.changeset/stupid-pumpkins-travel.md +13 -0
  16. package/.changeset/thirty-pens-jump.md +5 -0
  17. package/.changeset/wicked-kiwis-buy.md +5 -0
  18. package/CHANGELOG.md +148 -0
  19. package/__cjs/cache/core/cache.cjs +11 -9
  20. package/__cjs/cache/core/cache.cjs.map +1 -1
  21. package/__cjs/cache/core/cache.d.cts +11 -8
  22. package/__cjs/cache/core/types/DataProxy.d.cts +2 -1
  23. package/__cjs/cache/core/types/common.cjs.map +1 -1
  24. package/__cjs/cache/core/types/common.d.cts +2 -1
  25. package/__cjs/cache/index.cjs +1 -2
  26. package/__cjs/cache/index.cjs.map +1 -1
  27. package/__cjs/cache/index.d.cts +1 -1
  28. package/__cjs/cache/inmemory/entityStore.cjs +12 -11
  29. package/__cjs/cache/inmemory/entityStore.cjs.map +1 -1
  30. package/__cjs/cache/inmemory/fragmentRegistry.cjs +3 -2
  31. package/__cjs/cache/inmemory/fragmentRegistry.cjs.map +1 -1
  32. package/__cjs/cache/inmemory/helpers.cjs +10 -10
  33. package/__cjs/cache/inmemory/helpers.cjs.map +1 -1
  34. package/__cjs/cache/inmemory/helpers.d.cts +3 -3
  35. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  36. package/__cjs/cache/inmemory/inMemoryCache.d.cts +11 -8
  37. package/__cjs/cache/inmemory/key-extractor.cjs +10 -10
  38. package/__cjs/cache/inmemory/key-extractor.cjs.map +1 -1
  39. package/__cjs/cache/inmemory/policies.cjs +14 -13
  40. package/__cjs/cache/inmemory/policies.cjs.map +1 -1
  41. package/__cjs/cache/inmemory/policies.d.cts +2 -1
  42. package/__cjs/cache/inmemory/readFromStore.cjs +17 -16
  43. package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
  44. package/__cjs/cache/inmemory/writeToStore.cjs +50 -22
  45. package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  46. package/__cjs/cache/inmemory/writeToStore.d.cts +2 -1
  47. package/__cjs/core/ApolloClient.cjs +28 -52
  48. package/__cjs/core/ApolloClient.cjs.map +1 -1
  49. package/__cjs/core/ApolloClient.d.cts +10 -23
  50. package/__cjs/core/ObservableQuery.cjs +569 -352
  51. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  52. package/__cjs/core/ObservableQuery.d.cts +95 -33
  53. package/__cjs/core/QueryInfo.cjs +111 -183
  54. package/__cjs/core/QueryInfo.cjs.map +1 -1
  55. package/__cjs/core/QueryInfo.d.cts +9 -14
  56. package/__cjs/core/QueryManager.cjs +232 -138
  57. package/__cjs/core/QueryManager.cjs.map +1 -1
  58. package/__cjs/core/QueryManager.d.cts +12 -8
  59. package/__cjs/core/equalByQuery.cjs +7 -7
  60. package/__cjs/core/equalByQuery.cjs.map +1 -1
  61. package/__cjs/core/index.cjs +2 -3
  62. package/__cjs/core/index.cjs.map +1 -1
  63. package/__cjs/core/index.d.cts +4 -5
  64. package/__cjs/core/types.d.cts +20 -8
  65. package/__cjs/core/watchQueryOptions.d.cts +1 -1
  66. package/__cjs/dev/loadErrorMessageHandler.cjs +2 -3
  67. package/__cjs/dev/loadErrorMessageHandler.cjs.map +1 -1
  68. package/__cjs/dev/setErrorMessageHandler.cjs +2 -3
  69. package/__cjs/dev/setErrorMessageHandler.cjs.map +1 -1
  70. package/__cjs/errors/CombinedGraphQLErrors.cjs +2 -2
  71. package/__cjs/errors/CombinedGraphQLErrors.cjs.map +1 -1
  72. package/__cjs/errors/LinkError.cjs +5 -1
  73. package/__cjs/errors/LinkError.cjs.map +1 -1
  74. package/__cjs/errors/LinkError.d.cts +5 -1
  75. package/__cjs/errors/LocalStateError.cjs +27 -0
  76. package/__cjs/errors/LocalStateError.cjs.map +1 -0
  77. package/__cjs/errors/LocalStateError.d.cts +20 -0
  78. package/__cjs/errors/index.cjs +5 -1
  79. package/__cjs/errors/index.cjs.map +1 -1
  80. package/__cjs/errors/index.d.cts +2 -0
  81. package/__cjs/invariantErrorCodes.cjs +230 -164
  82. package/__cjs/link/batch-http/batchHttpLink.cjs +5 -16
  83. package/__cjs/link/batch-http/batchHttpLink.cjs.map +1 -1
  84. package/__cjs/link/core/ApolloLink.cjs +17 -11
  85. package/__cjs/link/core/ApolloLink.cjs.map +1 -1
  86. package/__cjs/link/core/ApolloLink.d.cts +15 -9
  87. package/__cjs/link/http/checkFetcher.cjs +1 -1
  88. package/__cjs/link/http/createHttpLink.cjs +7 -14
  89. package/__cjs/link/http/createHttpLink.cjs.map +1 -1
  90. package/__cjs/link/http/parseAndCheckHttpResponse.cjs +11 -3
  91. package/__cjs/link/http/parseAndCheckHttpResponse.cjs.map +1 -1
  92. package/__cjs/link/http/serializeFetchParameter.cjs +1 -1
  93. package/__cjs/link/persisted-queries/index.cjs +9 -9
  94. package/__cjs/link/persisted-queries/index.cjs.map +1 -1
  95. package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs +2 -1
  96. package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs.map +1 -1
  97. package/__cjs/link/subscriptions/index.cjs +3 -3
  98. package/__cjs/link/subscriptions/index.cjs.map +1 -1
  99. package/__cjs/link/utils/transformOperation.cjs +2 -2
  100. package/__cjs/link/utils/transformOperation.cjs.map +1 -1
  101. package/__cjs/link/utils/validateOperation.cjs +1 -1
  102. package/__cjs/local-state/LocalState.cjs +535 -0
  103. package/__cjs/local-state/LocalState.cjs.map +1 -0
  104. package/__cjs/local-state/LocalState.d.cts +89 -0
  105. package/__cjs/local-state/index.cjs +6 -0
  106. package/__cjs/local-state/index.cjs.map +1 -0
  107. package/__cjs/local-state/index.d.cts +2 -0
  108. package/__cjs/masking/__benches__/types.bench.cjs.map +1 -1
  109. package/__cjs/masking/internal/types.d.cts +1 -2
  110. package/__cjs/masking/maskDefinition.cjs +6 -6
  111. package/__cjs/masking/maskDefinition.cjs.map +1 -1
  112. package/__cjs/masking/maskDefinition.d.cts +1 -1
  113. package/__cjs/masking/maskFragment.cjs +9 -5
  114. package/__cjs/masking/maskFragment.cjs.map +1 -1
  115. package/__cjs/masking/maskFragment.d.cts +5 -1
  116. package/__cjs/masking/maskOperation.cjs +9 -5
  117. package/__cjs/masking/maskOperation.cjs.map +1 -1
  118. package/__cjs/masking/maskOperation.d.cts +5 -1
  119. package/__cjs/masking/types.d.cts +2 -2
  120. package/__cjs/masking/utils.cjs +35 -2
  121. package/__cjs/masking/utils.cjs.map +1 -1
  122. package/__cjs/masking/utils.d.cts +7 -1
  123. package/__cjs/react/context/ApolloConsumer.cjs +1 -1
  124. package/__cjs/react/context/ApolloContext.cjs +1 -1
  125. package/__cjs/react/context/ApolloProvider.cjs +1 -1
  126. package/__cjs/react/hooks/internal/__use.cjs +6 -6
  127. package/__cjs/react/hooks/internal/__use.cjs.map +1 -1
  128. package/__cjs/react/hooks/internal/useIsomorphicLayoutEffect.cjs +2 -2
  129. package/__cjs/react/hooks/internal/useIsomorphicLayoutEffect.cjs.map +1 -1
  130. package/__cjs/react/hooks/internal/validateSuspenseHookOptions.cjs +2 -2
  131. package/__cjs/react/hooks/internal/wrapHook.cjs +36 -34
  132. package/__cjs/react/hooks/internal/wrapHook.cjs.map +1 -1
  133. package/__cjs/react/hooks/internal/wrapHook.d.cts +42 -38
  134. package/__cjs/react/hooks/useApolloClient.cjs +1 -1
  135. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  136. package/__cjs/react/hooks/useBackgroundQuery.d.cts +1 -1
  137. package/__cjs/react/hooks/useFragment.cjs.map +1 -1
  138. package/__cjs/react/hooks/useFragment.d.cts +1 -1
  139. package/__cjs/react/hooks/useLazyQuery.cjs +4 -4
  140. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  141. package/__cjs/react/hooks/useLazyQuery.d.cts +1 -1
  142. package/__cjs/react/hooks/useLoadableQuery.cjs +2 -2
  143. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  144. package/__cjs/react/hooks/useLoadableQuery.d.cts +1 -1
  145. package/__cjs/react/hooks/useMutation.cjs +2 -2
  146. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  147. package/__cjs/react/hooks/useMutation.d.cts +1 -1
  148. package/__cjs/react/hooks/useQuery.cjs +4 -4
  149. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  150. package/__cjs/react/hooks/useQuery.d.cts +1 -1
  151. package/__cjs/react/hooks/useSubscription.cjs +1 -1
  152. package/__cjs/react/hooks/useSubscription.cjs.map +1 -1
  153. package/__cjs/react/hooks/useSubscription.d.cts +1 -1
  154. package/__cjs/react/hooks/useSuspenseFragment.cjs.map +1 -1
  155. package/__cjs/react/hooks/useSuspenseFragment.d.cts +1 -1
  156. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  157. package/__cjs/react/hooks/useSuspenseQuery.d.cts +1 -1
  158. package/__cjs/react/hooks/useSyncExternalStore.cjs +22 -3
  159. package/__cjs/react/hooks/useSyncExternalStore.cjs.map +1 -1
  160. package/__cjs/react/internal/cache/FragmentReference.cjs +4 -4
  161. package/__cjs/react/internal/cache/FragmentReference.cjs.map +1 -1
  162. package/__cjs/react/internal/cache/FragmentReference.d.cts +2 -2
  163. package/__cjs/react/internal/cache/QueryReference.cjs +12 -16
  164. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  165. package/__cjs/react/internal/cache/QueryReference.d.cts +27 -9
  166. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  167. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +1 -1
  168. package/__cjs/react/ssr/prerenderStatic.cjs +9 -2
  169. package/__cjs/react/ssr/prerenderStatic.cjs.map +1 -1
  170. package/__cjs/testing/core/mocking/mockLink.cjs +19 -14
  171. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  172. package/__cjs/testing/core/mocking/mockLink.d.cts +10 -2
  173. package/__cjs/testing/internal/ObservableStream.cjs +13 -1
  174. package/__cjs/testing/internal/ObservableStream.cjs.map +1 -1
  175. package/__cjs/testing/internal/ObservableStream.d.cts +12 -1
  176. package/__cjs/testing/internal/disposables/withCleanup.cjs +5 -1
  177. package/__cjs/testing/internal/disposables/withCleanup.cjs.map +1 -1
  178. package/__cjs/testing/internal/disposables/withCleanup.d.cts +5 -1
  179. package/__cjs/testing/matchers/index.cjs +3 -0
  180. package/__cjs/testing/matchers/index.cjs.map +1 -1
  181. package/__cjs/testing/matchers/toEmitTypedValue.cjs +1 -1
  182. package/__cjs/testing/matchers/toEmitTypedValue.cjs.map +1 -1
  183. package/__cjs/testing/matchers/toEmitTypedValue.d.cts +6 -1
  184. package/__cjs/testing/matchers/toMatchDocument.cjs +2 -1
  185. package/__cjs/testing/matchers/toMatchDocument.cjs.map +1 -1
  186. package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.cjs +65 -0
  187. package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.cjs.map +1 -0
  188. package/__cjs/testing/matchers/toRerenderWithSimilarSnapshot.d.cts +20 -0
  189. package/__cjs/testing/matchers/toStrictEqualTyped.cjs +1 -1
  190. package/__cjs/testing/matchers/toStrictEqualTyped.cjs.map +1 -1
  191. package/__cjs/testing/matchers/toStrictEqualTyped.d.cts +4 -0
  192. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs +16 -4
  193. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs.map +1 -1
  194. package/__cjs/testing/react/MockedProvider.cjs +2 -2
  195. package/__cjs/testing/react/MockedProvider.cjs.map +1 -1
  196. package/__cjs/testing/react/MockedProvider.d.cts +2 -2
  197. package/__cjs/utilities/caching/index.cjs +1 -4
  198. package/__cjs/utilities/caching/index.cjs.map +1 -1
  199. package/__cjs/utilities/caching/index.d.cts +0 -1
  200. package/__cjs/utilities/caching/sizes.cjs +1 -1
  201. package/__cjs/utilities/caching/sizes.cjs.map +1 -1
  202. package/__cjs/utilities/common/stripTypename.cjs +8 -2
  203. package/__cjs/utilities/common/stripTypename.cjs.map +1 -1
  204. package/__cjs/utilities/common/stripTypename.d.cts +7 -1
  205. package/__cjs/utilities/graphql/DocumentTransform.cjs +13 -9
  206. package/__cjs/utilities/graphql/DocumentTransform.cjs.map +1 -1
  207. package/__cjs/utilities/graphql/DocumentTransform.d.cts +10 -6
  208. package/__cjs/utilities/graphql/operations.cjs +23 -2
  209. package/__cjs/utilities/graphql/operations.cjs.map +1 -1
  210. package/__cjs/utilities/graphql/operations.d.cts +21 -0
  211. package/__cjs/utilities/graphql/print.cjs +9 -1
  212. package/__cjs/utilities/graphql/print.cjs.map +1 -1
  213. package/__cjs/utilities/graphql/print.d.cts +8 -0
  214. package/__cjs/utilities/graphql/storeUtils.cjs +5 -206
  215. package/__cjs/utilities/graphql/storeUtils.cjs.map +1 -1
  216. package/__cjs/utilities/graphql/storeUtils.d.cts +14 -22
  217. package/__cjs/utilities/graphql/transform.cjs +8 -454
  218. package/__cjs/utilities/graphql/transform.cjs.map +1 -1
  219. package/__cjs/utilities/graphql/transform.d.cts +6 -24
  220. package/__cjs/utilities/index.cjs +17 -90
  221. package/__cjs/utilities/index.cjs.map +1 -1
  222. package/__cjs/utilities/index.d.cts +18 -38
  223. package/__cjs/utilities/{common/mergeDeep.cjs → internal/DeepMerger.cjs} +10 -27
  224. package/__cjs/utilities/internal/DeepMerger.cjs.map +1 -0
  225. package/__cjs/utilities/internal/DeepMerger.d.cts +17 -0
  226. package/__cjs/utilities/internal/argumentsObjectFromField.cjs +18 -0
  227. package/__cjs/utilities/internal/argumentsObjectFromField.cjs.map +1 -0
  228. package/__cjs/utilities/internal/argumentsObjectFromField.d.cts +8 -0
  229. package/__cjs/utilities/{caching → internal}/caches.cjs +24 -20
  230. package/__cjs/utilities/internal/caches.cjs.map +1 -0
  231. package/__cjs/utilities/internal/caches.d.cts +42 -0
  232. package/__cjs/utilities/internal/canUseDOM.cjs +11 -0
  233. package/__cjs/utilities/internal/canUseDOM.cjs.map +1 -0
  234. package/__cjs/utilities/internal/canUseDOM.d.cts +7 -0
  235. package/__cjs/utilities/internal/checkDocument.cjs +35 -0
  236. package/__cjs/utilities/internal/checkDocument.cjs.map +1 -0
  237. package/__cjs/utilities/internal/checkDocument.d.cts +10 -0
  238. package/__cjs/utilities/{common → internal}/cloneDeep.cjs +10 -6
  239. package/__cjs/utilities/internal/cloneDeep.cjs.map +1 -0
  240. package/__cjs/utilities/internal/cloneDeep.d.cts +9 -0
  241. package/__cjs/utilities/{common → internal}/compact.cjs +7 -3
  242. package/__cjs/utilities/internal/compact.cjs.map +1 -0
  243. package/__cjs/utilities/internal/compact.d.cts +11 -0
  244. package/__cjs/utilities/internal/createFragmentMap.cjs +19 -0
  245. package/__cjs/utilities/internal/createFragmentMap.cjs.map +1 -0
  246. package/__cjs/utilities/internal/createFragmentMap.d.cts +12 -0
  247. package/__cjs/utilities/internal/createFulfilledPromise.cjs +15 -0
  248. package/__cjs/utilities/internal/createFulfilledPromise.cjs.map +1 -0
  249. package/__cjs/utilities/internal/createFulfilledPromise.d.cts +8 -0
  250. package/__cjs/utilities/internal/createRejectedPromise.cjs +17 -0
  251. package/__cjs/utilities/internal/createRejectedPromise.cjs.map +1 -0
  252. package/__cjs/utilities/internal/createRejectedPromise.d.cts +8 -0
  253. package/__cjs/utilities/internal/dealias.cjs +21 -0
  254. package/__cjs/utilities/internal/dealias.cjs.map +1 -0
  255. package/__cjs/utilities/internal/dealias.d.cts +5 -0
  256. package/{utilities/promises/decoration.js → __cjs/utilities/internal/decoratePromise.cjs} +12 -18
  257. package/__cjs/utilities/internal/decoratePromise.cjs.map +1 -0
  258. package/__cjs/utilities/internal/decoratePromise.d.cts +8 -0
  259. package/__cjs/utilities/{common/maybeDeepFreeze.cjs → internal/deepFreeze.cjs} +9 -12
  260. package/__cjs/utilities/internal/deepFreeze.cjs.map +1 -0
  261. package/__cjs/utilities/internal/deepFreeze.d.cts +7 -0
  262. package/__cjs/utilities/internal/filterMap.cjs +31 -0
  263. package/__cjs/utilities/internal/filterMap.cjs.map +1 -0
  264. package/__cjs/utilities/internal/filterMap.d.cts +4 -0
  265. package/__cjs/utilities/internal/getDefaultValues.cjs +22 -0
  266. package/__cjs/utilities/internal/getDefaultValues.cjs.map +1 -0
  267. package/__cjs/utilities/internal/getDefaultValues.d.cts +8 -0
  268. package/__cjs/utilities/internal/getFragmentDefinition.cjs +17 -0
  269. package/__cjs/utilities/internal/getFragmentDefinition.cjs.map +1 -0
  270. package/__cjs/utilities/internal/getFragmentDefinition.d.cts +8 -0
  271. package/__cjs/utilities/internal/getFragmentDefinitions.cjs +12 -0
  272. package/__cjs/utilities/internal/getFragmentDefinitions.cjs.map +1 -0
  273. package/__cjs/utilities/internal/getFragmentDefinitions.d.cts +8 -0
  274. package/__cjs/utilities/internal/getFragmentFromSelection.cjs +27 -0
  275. package/__cjs/utilities/internal/getFragmentFromSelection.cjs.map +1 -0
  276. package/__cjs/utilities/internal/getFragmentFromSelection.d.cts +10 -0
  277. package/__cjs/utilities/{graphql/fragments.cjs → internal/getFragmentQueryDocument.cjs} +26 -66
  278. package/__cjs/utilities/internal/getFragmentQueryDocument.cjs.map +1 -0
  279. package/__cjs/utilities/internal/getFragmentQueryDocument.d.cts +29 -0
  280. package/__cjs/utilities/internal/getGraphQLErrorsFromResult.cjs +23 -0
  281. package/__cjs/utilities/internal/getGraphQLErrorsFromResult.cjs.map +1 -0
  282. package/__cjs/utilities/internal/getGraphQLErrorsFromResult.d.cts +8 -0
  283. package/__cjs/utilities/internal/getMainDefinition.cjs +38 -0
  284. package/__cjs/utilities/internal/getMainDefinition.cjs.map +1 -0
  285. package/__cjs/utilities/internal/getMainDefinition.d.cts +12 -0
  286. package/__cjs/utilities/internal/getMemoryInternals.cjs +15 -9
  287. package/__cjs/utilities/internal/getMemoryInternals.cjs.map +1 -1
  288. package/__cjs/utilities/internal/getMemoryInternals.d.cts +15 -9
  289. package/__cjs/utilities/internal/getOperationDefinition.cjs +14 -0
  290. package/__cjs/utilities/internal/getOperationDefinition.cjs.map +1 -0
  291. package/__cjs/utilities/internal/getOperationDefinition.d.cts +8 -0
  292. package/__cjs/utilities/internal/getOperationName.cjs +12 -0
  293. package/__cjs/utilities/internal/getOperationName.cjs.map +1 -0
  294. package/__cjs/utilities/internal/getOperationName.d.cts +8 -0
  295. package/__cjs/utilities/internal/getQueryDefinition.cjs +16 -0
  296. package/__cjs/utilities/internal/getQueryDefinition.cjs.map +1 -0
  297. package/__cjs/utilities/internal/getQueryDefinition.d.cts +8 -0
  298. package/__cjs/utilities/internal/getStoreKeyName.cjs +73 -0
  299. package/__cjs/utilities/internal/getStoreKeyName.cjs.map +1 -0
  300. package/__cjs/utilities/internal/getStoreKeyName.d.cts +16 -0
  301. package/__cjs/utilities/internal/globals/global.cjs.map +1 -0
  302. package/__cjs/utilities/internal/globals/index.cjs.map +1 -0
  303. package/__cjs/utilities/internal/globals/maybe.cjs.map +1 -0
  304. package/__cjs/utilities/internal/graphQLResultHasError.cjs +15 -0
  305. package/__cjs/utilities/internal/graphQLResultHasError.cjs.map +1 -0
  306. package/__cjs/utilities/internal/graphQLResultHasError.d.cts +8 -0
  307. package/__cjs/utilities/internal/hasDirectives.cjs +24 -0
  308. package/__cjs/utilities/internal/hasDirectives.cjs.map +1 -0
  309. package/__cjs/utilities/internal/hasDirectives.d.cts +8 -0
  310. package/__cjs/utilities/internal/hasForcedResolvers.cjs +23 -0
  311. package/__cjs/utilities/internal/hasForcedResolvers.cjs.map +1 -0
  312. package/__cjs/utilities/internal/hasForcedResolvers.d.cts +3 -0
  313. package/__cjs/utilities/internal/index.cjs +107 -5
  314. package/__cjs/utilities/internal/index.cjs.map +1 -1
  315. package/__cjs/utilities/internal/index.d.cts +66 -2
  316. package/__cjs/utilities/internal/isArray.cjs +12 -0
  317. package/__cjs/utilities/internal/isArray.cjs.map +1 -0
  318. package/__cjs/utilities/internal/isArray.d.cts +9 -0
  319. package/__cjs/utilities/internal/isDocumentNode.cjs +15 -0
  320. package/__cjs/utilities/internal/isDocumentNode.cjs.map +1 -0
  321. package/__cjs/utilities/internal/isDocumentNode.d.cts +8 -0
  322. package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.cjs +12 -0
  323. package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.cjs.map +1 -0
  324. package/__cjs/utilities/internal/isExecutionPatchIncrementalResult.d.cts +8 -0
  325. package/__cjs/utilities/internal/isExecutionPatchIninitialResult.cjs +12 -0
  326. package/__cjs/utilities/internal/isExecutionPatchIninitialResult.cjs.map +1 -0
  327. package/__cjs/utilities/internal/isExecutionPatchIninitialResult.d.cts +8 -0
  328. package/__cjs/utilities/internal/isExecutionPatchResult.cjs +15 -0
  329. package/__cjs/utilities/internal/isExecutionPatchResult.cjs.map +1 -0
  330. package/__cjs/utilities/internal/isExecutionPatchResult.d.cts +8 -0
  331. package/__cjs/utilities/internal/isField.cjs +12 -0
  332. package/__cjs/utilities/internal/isField.cjs.map +1 -0
  333. package/__cjs/utilities/internal/isField.d.cts +8 -0
  334. package/__cjs/utilities/{common/arrays.cjs → internal/isNonEmptyArray.cjs} +6 -4
  335. package/__cjs/utilities/internal/isNonEmptyArray.cjs.map +1 -0
  336. package/__cjs/utilities/internal/isNonEmptyArray.d.cts +7 -0
  337. package/__cjs/utilities/internal/isNonNullObject.cjs +12 -0
  338. package/__cjs/utilities/internal/isNonNullObject.cjs.map +1 -0
  339. package/__cjs/utilities/internal/isNonNullObject.d.cts +7 -0
  340. package/__cjs/utilities/{common/objects.cjs → internal/isPlainObject.cjs} +6 -5
  341. package/__cjs/utilities/internal/isPlainObject.cjs.map +1 -0
  342. package/__cjs/utilities/internal/isPlainObject.d.cts +7 -0
  343. package/__cjs/utilities/internal/makeReference.cjs +12 -0
  344. package/__cjs/utilities/internal/makeReference.cjs.map +1 -0
  345. package/__cjs/utilities/internal/makeReference.d.cts +8 -0
  346. package/__cjs/utilities/{common → internal}/makeUniqueId.cjs +8 -2
  347. package/__cjs/utilities/internal/makeUniqueId.cjs.map +1 -0
  348. package/__cjs/utilities/internal/makeUniqueId.d.cts +10 -0
  349. package/__cjs/utilities/internal/maybeDeepFreeze.cjs +17 -0
  350. package/__cjs/utilities/internal/maybeDeepFreeze.cjs.map +1 -0
  351. package/__cjs/utilities/internal/maybeDeepFreeze.d.cts +7 -0
  352. package/__cjs/utilities/internal/mergeDeep.cjs +26 -0
  353. package/__cjs/utilities/internal/mergeDeep.cjs.map +1 -0
  354. package/__cjs/utilities/internal/mergeDeep.d.cts +8 -0
  355. package/__cjs/utilities/internal/mergeDeepArray.cjs +27 -0
  356. package/__cjs/utilities/internal/mergeDeepArray.cjs.map +1 -0
  357. package/__cjs/utilities/internal/mergeDeepArray.d.cts +7 -0
  358. package/__cjs/utilities/internal/mergeIncrementalData.cjs +30 -0
  359. package/__cjs/utilities/internal/mergeIncrementalData.cjs.map +1 -0
  360. package/__cjs/utilities/internal/mergeIncrementalData.d.cts +8 -0
  361. package/__cjs/utilities/{common → internal}/mergeOptions.cjs +5 -0
  362. package/__cjs/utilities/internal/mergeOptions.cjs.map +1 -0
  363. package/__cjs/utilities/{common → internal}/mergeOptions.d.cts +5 -0
  364. package/__cjs/utilities/{common → internal}/omitDeep.cjs +7 -2
  365. package/__cjs/utilities/internal/omitDeep.cjs.map +1 -0
  366. package/__cjs/utilities/internal/omitDeep.d.cts +8 -0
  367. package/__cjs/utilities/internal/{observables.cjs → onAnyEvent.cjs} +6 -2
  368. package/__cjs/utilities/internal/onAnyEvent.cjs.map +1 -0
  369. package/__cjs/utilities/internal/{observables.d.cts → onAnyEvent.d.cts} +6 -2
  370. package/__cjs/utilities/{promises → internal}/preventUnhandledRejection.cjs.map +1 -1
  371. package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs +306 -0
  372. package/__cjs/utilities/internal/removeDirectivesFromDocument.cjs.map +1 -0
  373. package/__cjs/utilities/internal/removeDirectivesFromDocument.d.cts +14 -0
  374. package/__cjs/utilities/internal/resultKeyNameFromField.cjs +12 -0
  375. package/__cjs/utilities/internal/resultKeyNameFromField.cjs.map +1 -0
  376. package/__cjs/utilities/internal/resultKeyNameFromField.d.cts +8 -0
  377. package/__cjs/utilities/internal/shouldInclude.cjs +50 -0
  378. package/__cjs/utilities/internal/shouldInclude.cjs.map +1 -0
  379. package/__cjs/utilities/internal/shouldInclude.d.cts +8 -0
  380. package/__cjs/utilities/internal/storeKeyNameFromField.cjs +29 -0
  381. package/__cjs/utilities/internal/storeKeyNameFromField.cjs.map +1 -0
  382. package/__cjs/utilities/internal/storeKeyNameFromField.d.cts +8 -0
  383. package/__cjs/utilities/{common → internal}/stringifyForDisplay.cjs +6 -1
  384. package/__cjs/utilities/internal/stringifyForDisplay.cjs.map +1 -0
  385. package/__cjs/utilities/internal/stringifyForDisplay.d.cts +7 -0
  386. package/__cjs/utilities/internal/toQueryResult.cjs +5 -0
  387. package/__cjs/utilities/internal/toQueryResult.cjs.map +1 -1
  388. package/__cjs/utilities/internal/toQueryResult.d.cts +5 -0
  389. package/__cjs/utilities/internal/types/DecoratedPromise.cjs +3 -0
  390. package/__cjs/utilities/internal/types/DecoratedPromise.cjs.map +1 -0
  391. package/__cjs/utilities/internal/types/DecoratedPromise.d.cts +10 -0
  392. package/__cjs/utilities/{types → internal/types}/DeepOmit.d.cts +5 -0
  393. package/__cjs/utilities/internal/types/DeepPartial.cjs.map +1 -0
  394. package/__cjs/utilities/{types → internal/types}/DeepPartial.d.cts +5 -0
  395. package/__cjs/utilities/internal/types/FragmentMap.cjs +3 -0
  396. package/__cjs/utilities/internal/types/FragmentMap.cjs.map +1 -0
  397. package/__cjs/utilities/internal/types/FragmentMap.d.cts +12 -0
  398. package/__cjs/utilities/internal/types/FragmentMapFunction.cjs +3 -0
  399. package/__cjs/utilities/internal/types/FragmentMapFunction.cjs.map +1 -0
  400. package/__cjs/utilities/internal/types/FragmentMapFunction.d.cts +8 -0
  401. package/__cjs/utilities/internal/types/FulfilledPromise.cjs +3 -0
  402. package/__cjs/utilities/internal/types/FulfilledPromise.cjs.map +1 -0
  403. package/__cjs/utilities/internal/types/FulfilledPromise.d.cts +10 -0
  404. package/__cjs/utilities/internal/types/IsAny.cjs +3 -0
  405. package/__cjs/utilities/internal/types/IsAny.cjs.map +1 -0
  406. package/__cjs/utilities/internal/types/IsAny.d.cts +7 -0
  407. package/__cjs/utilities/{types → internal/types}/NoInfer.d.cts +2 -0
  408. package/__cjs/utilities/{types/IsStrictlyAny.cjs → internal/types/PendingPromise.cjs} +1 -1
  409. package/__cjs/utilities/internal/types/PendingPromise.cjs.map +1 -0
  410. package/__cjs/utilities/internal/types/PendingPromise.d.cts +9 -0
  411. package/__cjs/utilities/internal/types/Prettify.d.cts +9 -0
  412. package/__cjs/utilities/internal/types/Primitive.d.cts +7 -0
  413. package/__cjs/utilities/internal/types/RejectedPromise.cjs +3 -0
  414. package/__cjs/utilities/internal/types/RejectedPromise.cjs.map +1 -0
  415. package/__cjs/utilities/internal/types/RejectedPromise.d.cts +10 -0
  416. package/__cjs/utilities/{types → internal/types}/RemoveIndexSignature.d.cts +5 -0
  417. package/__cjs/utilities/internal/types/TupleToIntersection.cjs +3 -0
  418. package/__cjs/utilities/internal/types/TupleToIntersection.cjs.map +1 -0
  419. package/__cjs/utilities/internal/types/TupleToIntersection.d.cts +2 -0
  420. package/__cjs/utilities/{types → internal/types}/VariablesOption.d.cts +5 -0
  421. package/__cjs/utilities/internal/valueToObjectRepresentation.cjs +44 -0
  422. package/__cjs/utilities/internal/valueToObjectRepresentation.cjs.map +1 -0
  423. package/__cjs/utilities/internal/valueToObjectRepresentation.d.cts +8 -0
  424. package/__cjs/utilities/invariant/index.cjs +3 -2
  425. package/__cjs/utilities/invariant/index.cjs.map +1 -1
  426. package/__cjs/utilities/policies/pagination.cjs +26 -9
  427. package/__cjs/utilities/policies/pagination.cjs.map +1 -1
  428. package/__cjs/utilities/policies/pagination.d.cts +23 -0
  429. package/__cjs/utilities/{common → shared}/canonicalStringify.cjs +7 -4
  430. package/__cjs/utilities/shared/canonicalStringify.cjs.map +1 -0
  431. package/__cjs/utilities/subscriptions/relay/index.cjs +3 -3
  432. package/__cjs/utilities/subscriptions/relay/index.cjs.map +1 -1
  433. package/__cjs/version.cjs +1 -1
  434. package/cache/core/cache.d.ts +11 -8
  435. package/cache/core/cache.js +11 -9
  436. package/cache/core/cache.js.map +1 -1
  437. package/cache/core/types/DataProxy.d.ts +2 -1
  438. package/cache/core/types/common.d.ts +2 -1
  439. package/cache/core/types/common.js.map +1 -1
  440. package/cache/index.d.ts +1 -1
  441. package/cache/index.js +1 -1
  442. package/cache/index.js.map +1 -1
  443. package/cache/inmemory/entityStore.js +5 -4
  444. package/cache/inmemory/entityStore.js.map +1 -1
  445. package/cache/inmemory/fragmentRegistry.js +2 -1
  446. package/cache/inmemory/fragmentRegistry.js.map +1 -1
  447. package/cache/inmemory/helpers.d.ts +3 -3
  448. package/cache/inmemory/helpers.js +2 -2
  449. package/cache/inmemory/helpers.js.map +1 -1
  450. package/cache/inmemory/inMemoryCache.d.ts +11 -8
  451. package/cache/inmemory/inMemoryCache.js.map +1 -1
  452. package/cache/inmemory/key-extractor.js +3 -3
  453. package/cache/inmemory/key-extractor.js.map +1 -1
  454. package/cache/inmemory/policies.d.ts +2 -1
  455. package/cache/inmemory/policies.js +7 -6
  456. package/cache/inmemory/policies.js.map +1 -1
  457. package/cache/inmemory/readFromStore.js +5 -4
  458. package/cache/inmemory/readFromStore.js.map +1 -1
  459. package/cache/inmemory/writeToStore.d.ts +2 -1
  460. package/cache/inmemory/writeToStore.js +34 -6
  461. package/cache/inmemory/writeToStore.js.map +1 -1
  462. package/core/ApolloClient.d.ts +10 -23
  463. package/core/ApolloClient.js +24 -52
  464. package/core/ApolloClient.js.map +1 -1
  465. package/core/ObservableQuery.d.ts +95 -33
  466. package/core/ObservableQuery.js +569 -352
  467. package/core/ObservableQuery.js.map +1 -1
  468. package/core/QueryInfo.d.ts +9 -14
  469. package/core/QueryInfo.js +110 -182
  470. package/core/QueryInfo.js.map +1 -1
  471. package/core/QueryManager.d.ts +12 -8
  472. package/core/QueryManager.js +192 -117
  473. package/core/QueryManager.js.map +1 -1
  474. package/core/equalByQuery.js +1 -1
  475. package/core/equalByQuery.js.map +1 -1
  476. package/core/index.d.ts +4 -5
  477. package/core/index.js +3 -3
  478. package/core/index.js.map +1 -1
  479. package/core/types.d.ts +20 -8
  480. package/core/watchQueryOptions.d.ts +1 -1
  481. package/dev/loadErrorMessageHandler.js +1 -1
  482. package/dev/loadErrorMessageHandler.js.map +1 -1
  483. package/dev/setErrorMessageHandler.js +1 -1
  484. package/dev/setErrorMessageHandler.js.map +1 -1
  485. package/errors/CombinedGraphQLErrors.js +1 -1
  486. package/errors/CombinedGraphQLErrors.js.map +1 -1
  487. package/errors/LinkError.d.ts +5 -1
  488. package/errors/LinkError.js +5 -1
  489. package/errors/LinkError.js.map +1 -1
  490. package/errors/LocalStateError.d.ts +20 -0
  491. package/errors/LocalStateError.js +23 -0
  492. package/errors/LocalStateError.js.map +1 -0
  493. package/errors/index.d.ts +2 -0
  494. package/errors/index.js +2 -0
  495. package/errors/index.js.map +1 -1
  496. package/invariantErrorCodes.js +230 -164
  497. package/legacyEntryPoints/local-state/index.d.ts +1 -0
  498. package/legacyEntryPoints/local-state/index.js +1 -0
  499. package/legacyEntryPoints/local-state/local-state.cjs +1 -0
  500. package/legacyEntryPoints/local-state/local-state.d.cts +1 -0
  501. package/legacyEntryPoints/utilities/internal/globals/globals.cjs +1 -0
  502. package/legacyEntryPoints/utilities/internal/globals/globals.d.cts +1 -0
  503. package/legacyEntryPoints/utilities/internal/globals/index.d.ts +1 -0
  504. package/legacyEntryPoints/utilities/internal/globals/index.js +1 -0
  505. package/link/batch-http/batchHttpLink.js +3 -14
  506. package/link/batch-http/batchHttpLink.js.map +1 -1
  507. package/link/core/ApolloLink.d.ts +15 -9
  508. package/link/core/ApolloLink.js +17 -11
  509. package/link/core/ApolloLink.js.map +1 -1
  510. package/link/http/checkFetcher.js +1 -1
  511. package/link/http/createHttpLink.js +4 -11
  512. package/link/http/createHttpLink.js.map +1 -1
  513. package/link/http/parseAndCheckHttpResponse.js +10 -2
  514. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  515. package/link/http/serializeFetchParameter.js +1 -1
  516. package/link/persisted-queries/index.js +4 -4
  517. package/link/persisted-queries/index.js.map +1 -1
  518. package/link/remove-typename/removeTypenameFromVariables.js +2 -1
  519. package/link/remove-typename/removeTypenameFromVariables.js.map +1 -1
  520. package/link/subscriptions/index.js +1 -1
  521. package/link/subscriptions/index.js.map +1 -1
  522. package/link/utils/transformOperation.js +2 -2
  523. package/link/utils/transformOperation.js.map +1 -1
  524. package/link/utils/validateOperation.js +1 -1
  525. package/local-state/LocalState.d.ts +89 -0
  526. package/local-state/LocalState.js +527 -0
  527. package/local-state/LocalState.js.map +1 -0
  528. package/local-state/index.d.ts +2 -0
  529. package/local-state/index.js +2 -0
  530. package/local-state/index.js.map +1 -0
  531. package/masking/__benches__/types.bench.js.map +1 -1
  532. package/masking/internal/types.d.ts +1 -2
  533. package/masking/maskDefinition.d.ts +1 -1
  534. package/masking/maskDefinition.js +4 -4
  535. package/masking/maskDefinition.js.map +1 -1
  536. package/masking/maskFragment.d.ts +5 -1
  537. package/masking/maskFragment.js +8 -4
  538. package/masking/maskFragment.js.map +1 -1
  539. package/masking/maskOperation.d.ts +5 -1
  540. package/masking/maskOperation.js +7 -3
  541. package/masking/maskOperation.js.map +1 -1
  542. package/masking/types.d.ts +2 -2
  543. package/masking/utils.d.ts +7 -1
  544. package/masking/utils.js +34 -3
  545. package/masking/utils.js.map +1 -1
  546. package/package.json +21 -21
  547. package/react/context/ApolloConsumer.js +1 -1
  548. package/react/context/ApolloContext.js +1 -1
  549. package/react/context/ApolloProvider.js +1 -1
  550. package/react/hooks/internal/__use.js +6 -6
  551. package/react/hooks/internal/__use.js.map +1 -1
  552. package/react/hooks/internal/useIsomorphicLayoutEffect.js +1 -1
  553. package/react/hooks/internal/useIsomorphicLayoutEffect.js.map +1 -1
  554. package/react/hooks/internal/validateSuspenseHookOptions.js +2 -2
  555. package/react/hooks/internal/wrapHook.d.ts +42 -38
  556. package/react/hooks/internal/wrapHook.js +36 -34
  557. package/react/hooks/internal/wrapHook.js.map +1 -1
  558. package/react/hooks/useApolloClient.js +1 -1
  559. package/react/hooks/useBackgroundQuery.d.ts +1 -1
  560. package/react/hooks/useBackgroundQuery.js.map +1 -1
  561. package/react/hooks/useFragment.d.ts +1 -1
  562. package/react/hooks/useFragment.js.map +1 -1
  563. package/react/hooks/useLazyQuery.d.ts +1 -1
  564. package/react/hooks/useLazyQuery.js +3 -3
  565. package/react/hooks/useLazyQuery.js.map +1 -1
  566. package/react/hooks/useLoadableQuery.d.ts +1 -1
  567. package/react/hooks/useLoadableQuery.js +2 -2
  568. package/react/hooks/useLoadableQuery.js.map +1 -1
  569. package/react/hooks/useMutation.d.ts +1 -1
  570. package/react/hooks/useMutation.js +1 -1
  571. package/react/hooks/useMutation.js.map +1 -1
  572. package/react/hooks/useQuery.d.ts +1 -1
  573. package/react/hooks/useQuery.js +1 -1
  574. package/react/hooks/useQuery.js.map +1 -1
  575. package/react/hooks/useSubscription.d.ts +1 -1
  576. package/react/hooks/useSubscription.js +1 -1
  577. package/react/hooks/useSubscription.js.map +1 -1
  578. package/react/hooks/useSuspenseFragment.d.ts +1 -1
  579. package/react/hooks/useSuspenseFragment.js.map +1 -1
  580. package/react/hooks/useSuspenseQuery.d.ts +1 -1
  581. package/react/hooks/useSuspenseQuery.js.map +1 -1
  582. package/react/hooks/useSyncExternalStore.js +21 -2
  583. package/react/hooks/useSyncExternalStore.js.map +1 -1
  584. package/react/internal/cache/FragmentReference.d.ts +2 -2
  585. package/react/internal/cache/FragmentReference.js +2 -2
  586. package/react/internal/cache/FragmentReference.js.map +1 -1
  587. package/react/internal/cache/QueryReference.d.ts +27 -9
  588. package/react/internal/cache/QueryReference.js +9 -13
  589. package/react/internal/cache/QueryReference.js.map +1 -1
  590. package/react/query-preloader/createQueryPreloader.d.ts +1 -1
  591. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  592. package/react/ssr/prerenderStatic.js +9 -2
  593. package/react/ssr/prerenderStatic.js.map +1 -1
  594. package/testing/core/mocking/mockLink.d.ts +10 -2
  595. package/testing/core/mocking/mockLink.js +14 -9
  596. package/testing/core/mocking/mockLink.js.map +1 -1
  597. package/testing/internal/ObservableStream.d.ts +12 -1
  598. package/testing/internal/ObservableStream.js +13 -1
  599. package/testing/internal/ObservableStream.js.map +1 -1
  600. package/testing/internal/disposables/withCleanup.d.ts +5 -1
  601. package/testing/internal/disposables/withCleanup.js +5 -1
  602. package/testing/internal/disposables/withCleanup.js.map +1 -1
  603. package/testing/matchers/index.js +3 -0
  604. package/testing/matchers/index.js.map +1 -1
  605. package/testing/matchers/toEmitTypedValue.d.ts +6 -1
  606. package/testing/matchers/toEmitTypedValue.js +1 -1
  607. package/testing/matchers/toEmitTypedValue.js.map +1 -1
  608. package/testing/matchers/toMatchDocument.js +2 -1
  609. package/testing/matchers/toMatchDocument.js.map +1 -1
  610. package/testing/matchers/toRerenderWithSimilarSnapshot.d.ts +20 -0
  611. package/testing/matchers/toRerenderWithSimilarSnapshot.js +62 -0
  612. package/testing/matchers/toRerenderWithSimilarSnapshot.js.map +1 -0
  613. package/testing/matchers/toStrictEqualTyped.d.ts +4 -0
  614. package/testing/matchers/toStrictEqualTyped.js +1 -1
  615. package/testing/matchers/toStrictEqualTyped.js.map +1 -1
  616. package/testing/matchers/utils/getSerializableProperties.js +15 -3
  617. package/testing/matchers/utils/getSerializableProperties.js.map +1 -1
  618. package/testing/react/MockedProvider.d.ts +2 -2
  619. package/testing/react/MockedProvider.js +2 -2
  620. package/testing/react/MockedProvider.js.map +1 -1
  621. package/utilities/caching/index.d.ts +0 -1
  622. package/utilities/caching/index.js +0 -1
  623. package/utilities/caching/index.js.map +1 -1
  624. package/utilities/caching/sizes.js +1 -1
  625. package/utilities/caching/sizes.js.map +1 -1
  626. package/utilities/common/stripTypename.d.ts +7 -1
  627. package/utilities/common/stripTypename.js +7 -1
  628. package/utilities/common/stripTypename.js.map +1 -1
  629. package/utilities/graphql/DocumentTransform.d.ts +10 -6
  630. package/utilities/graphql/DocumentTransform.js +12 -8
  631. package/utilities/graphql/DocumentTransform.js.map +1 -1
  632. package/utilities/graphql/operations.d.ts +21 -0
  633. package/utilities/graphql/operations.js +22 -1
  634. package/utilities/graphql/operations.js.map +1 -1
  635. package/utilities/graphql/print.d.ts +8 -0
  636. package/utilities/graphql/print.js +10 -2
  637. package/utilities/graphql/print.js.map +1 -1
  638. package/utilities/graphql/storeUtils.d.ts +14 -22
  639. package/utilities/graphql/storeUtils.js +5 -196
  640. package/utilities/graphql/storeUtils.js.map +1 -1
  641. package/utilities/graphql/transform.d.ts +6 -24
  642. package/utilities/graphql/transform.js +7 -443
  643. package/utilities/graphql/transform.js.map +1 -1
  644. package/utilities/index.d.ts +18 -38
  645. package/utilities/index.js +16 -23
  646. package/utilities/index.js.map +1 -1
  647. package/utilities/internal/DeepMerger.d.ts +17 -0
  648. package/utilities/{common/mergeDeep.js → internal/DeepMerger.js} +7 -22
  649. package/utilities/internal/DeepMerger.js.map +1 -0
  650. package/utilities/internal/argumentsObjectFromField.d.ts +8 -0
  651. package/utilities/internal/argumentsObjectFromField.js +15 -0
  652. package/utilities/internal/argumentsObjectFromField.js.map +1 -0
  653. package/utilities/internal/caches.d.ts +42 -0
  654. package/utilities/{caching → internal}/caches.js +24 -20
  655. package/utilities/internal/caches.js.map +1 -0
  656. package/utilities/internal/canUseDOM.d.ts +7 -0
  657. package/utilities/internal/canUseDOM.js +8 -0
  658. package/utilities/internal/canUseDOM.js.map +1 -0
  659. package/utilities/internal/checkDocument.d.ts +10 -0
  660. package/utilities/internal/checkDocument.js +32 -0
  661. package/utilities/internal/checkDocument.js.map +1 -0
  662. package/utilities/internal/cloneDeep.d.ts +9 -0
  663. package/utilities/{common → internal}/cloneDeep.js +10 -6
  664. package/utilities/internal/cloneDeep.js.map +1 -0
  665. package/utilities/internal/compact.d.ts +11 -0
  666. package/utilities/{common → internal}/compact.js +7 -3
  667. package/utilities/internal/compact.js.map +1 -0
  668. package/utilities/internal/createFragmentMap.d.ts +12 -0
  669. package/utilities/internal/createFragmentMap.js +16 -0
  670. package/utilities/internal/createFragmentMap.js.map +1 -0
  671. package/utilities/internal/createFulfilledPromise.d.ts +8 -0
  672. package/utilities/internal/createFulfilledPromise.js +12 -0
  673. package/utilities/internal/createFulfilledPromise.js.map +1 -0
  674. package/utilities/internal/createRejectedPromise.d.ts +8 -0
  675. package/utilities/internal/createRejectedPromise.js +14 -0
  676. package/utilities/internal/createRejectedPromise.js.map +1 -0
  677. package/utilities/internal/dealias.d.ts +5 -0
  678. package/utilities/internal/dealias.js +18 -0
  679. package/utilities/internal/dealias.js.map +1 -0
  680. package/utilities/internal/decoratePromise.d.ts +8 -0
  681. package/utilities/internal/decoratePromise.js +30 -0
  682. package/utilities/internal/decoratePromise.js.map +1 -0
  683. package/utilities/internal/deepFreeze.d.ts +7 -0
  684. package/utilities/{common/maybeDeepFreeze.js → internal/deepFreeze.js} +7 -9
  685. package/utilities/internal/deepFreeze.js.map +1 -0
  686. package/utilities/internal/filterMap.d.ts +4 -0
  687. package/utilities/internal/filterMap.js +28 -0
  688. package/utilities/internal/filterMap.js.map +1 -0
  689. package/utilities/internal/getDefaultValues.d.ts +8 -0
  690. package/utilities/internal/getDefaultValues.js +19 -0
  691. package/utilities/internal/getDefaultValues.js.map +1 -0
  692. package/utilities/internal/getFragmentDefinition.d.ts +8 -0
  693. package/utilities/internal/getFragmentDefinition.js +14 -0
  694. package/utilities/internal/getFragmentDefinition.js.map +1 -0
  695. package/utilities/internal/getFragmentDefinitions.d.ts +8 -0
  696. package/utilities/internal/getFragmentDefinitions.js +9 -0
  697. package/utilities/internal/getFragmentDefinitions.js.map +1 -0
  698. package/utilities/internal/getFragmentFromSelection.d.ts +10 -0
  699. package/utilities/internal/getFragmentFromSelection.js +24 -0
  700. package/utilities/internal/getFragmentFromSelection.js.map +1 -0
  701. package/utilities/internal/getFragmentQueryDocument.d.ts +29 -0
  702. package/utilities/{graphql/fragments.js → internal/getFragmentQueryDocument.js} +26 -63
  703. package/utilities/internal/getFragmentQueryDocument.js.map +1 -0
  704. package/utilities/internal/getGraphQLErrorsFromResult.d.ts +8 -0
  705. package/utilities/{common/errorHandling.js → internal/getGraphQLErrorsFromResult.js} +8 -7
  706. package/utilities/internal/getGraphQLErrorsFromResult.js.map +1 -0
  707. package/utilities/internal/getMainDefinition.d.ts +12 -0
  708. package/utilities/internal/getMainDefinition.js +35 -0
  709. package/utilities/internal/getMainDefinition.js.map +1 -0
  710. package/utilities/internal/getMemoryInternals.d.ts +15 -9
  711. package/utilities/internal/getMemoryInternals.js +15 -9
  712. package/utilities/internal/getMemoryInternals.js.map +1 -1
  713. package/utilities/internal/getOperationDefinition.d.ts +8 -0
  714. package/utilities/internal/getOperationDefinition.js +11 -0
  715. package/utilities/internal/getOperationDefinition.js.map +1 -0
  716. package/utilities/internal/getOperationName.d.ts +8 -0
  717. package/utilities/internal/getOperationName.js +9 -0
  718. package/utilities/internal/getOperationName.js.map +1 -0
  719. package/utilities/internal/getQueryDefinition.d.ts +8 -0
  720. package/utilities/internal/getQueryDefinition.js +13 -0
  721. package/utilities/internal/getQueryDefinition.js.map +1 -0
  722. package/utilities/internal/getStoreKeyName.d.ts +16 -0
  723. package/utilities/internal/getStoreKeyName.js +70 -0
  724. package/utilities/internal/getStoreKeyName.js.map +1 -0
  725. package/utilities/{globals → internal/globals}/global.js +2 -2
  726. package/utilities/internal/globals/global.js.map +1 -0
  727. package/utilities/internal/globals/index.js.map +1 -0
  728. package/utilities/internal/globals/maybe.js.map +1 -0
  729. package/utilities/internal/graphQLResultHasError.d.ts +8 -0
  730. package/utilities/internal/graphQLResultHasError.js +12 -0
  731. package/utilities/internal/graphQLResultHasError.js.map +1 -0
  732. package/utilities/internal/hasDirectives.d.ts +8 -0
  733. package/utilities/internal/hasDirectives.js +21 -0
  734. package/utilities/internal/hasDirectives.js.map +1 -0
  735. package/utilities/internal/hasForcedResolvers.d.ts +3 -0
  736. package/utilities/internal/hasForcedResolvers.js +20 -0
  737. package/utilities/internal/hasForcedResolvers.js.map +1 -0
  738. package/utilities/internal/index.d.ts +66 -2
  739. package/utilities/internal/index.js +52 -2
  740. package/utilities/internal/index.js.map +1 -1
  741. package/utilities/internal/isArray.d.ts +9 -0
  742. package/utilities/internal/isArray.js +9 -0
  743. package/utilities/internal/isArray.js.map +1 -0
  744. package/utilities/internal/isDocumentNode.d.ts +8 -0
  745. package/utilities/internal/isDocumentNode.js +12 -0
  746. package/utilities/internal/isDocumentNode.js.map +1 -0
  747. package/utilities/internal/isExecutionPatchIncrementalResult.d.ts +8 -0
  748. package/utilities/internal/isExecutionPatchIncrementalResult.js +9 -0
  749. package/utilities/internal/isExecutionPatchIncrementalResult.js.map +1 -0
  750. package/utilities/internal/isExecutionPatchIninitialResult.d.ts +8 -0
  751. package/utilities/internal/isExecutionPatchIninitialResult.js +9 -0
  752. package/utilities/internal/isExecutionPatchIninitialResult.js.map +1 -0
  753. package/utilities/internal/isExecutionPatchResult.d.ts +8 -0
  754. package/utilities/internal/isExecutionPatchResult.js +12 -0
  755. package/utilities/internal/isExecutionPatchResult.js.map +1 -0
  756. package/utilities/internal/isField.d.ts +8 -0
  757. package/utilities/internal/isField.js +9 -0
  758. package/utilities/internal/isField.js.map +1 -0
  759. package/utilities/internal/isNonEmptyArray.d.ts +7 -0
  760. package/utilities/internal/isNonEmptyArray.js +9 -0
  761. package/utilities/internal/isNonEmptyArray.js.map +1 -0
  762. package/utilities/internal/isNonNullObject.d.ts +7 -0
  763. package/utilities/internal/isNonNullObject.js +9 -0
  764. package/utilities/internal/isNonNullObject.js.map +1 -0
  765. package/utilities/internal/isPlainObject.d.ts +7 -0
  766. package/utilities/{common/objects.js → internal/isPlainObject.js} +6 -4
  767. package/utilities/internal/isPlainObject.js.map +1 -0
  768. package/utilities/internal/makeReference.d.ts +8 -0
  769. package/utilities/internal/makeReference.js +9 -0
  770. package/utilities/internal/makeReference.js.map +1 -0
  771. package/utilities/internal/makeUniqueId.d.ts +10 -0
  772. package/utilities/internal/makeUniqueId.js +15 -0
  773. package/utilities/internal/makeUniqueId.js.map +1 -0
  774. package/utilities/internal/maybeDeepFreeze.d.ts +7 -0
  775. package/utilities/internal/maybeDeepFreeze.js +14 -0
  776. package/utilities/internal/maybeDeepFreeze.js.map +1 -0
  777. package/utilities/internal/mergeDeep.d.ts +8 -0
  778. package/utilities/internal/mergeDeep.js +23 -0
  779. package/utilities/internal/mergeDeep.js.map +1 -0
  780. package/utilities/internal/mergeDeepArray.d.ts +7 -0
  781. package/utilities/internal/mergeDeepArray.js +24 -0
  782. package/utilities/internal/mergeDeepArray.js.map +1 -0
  783. package/utilities/internal/mergeIncrementalData.d.ts +8 -0
  784. package/utilities/internal/mergeIncrementalData.js +27 -0
  785. package/utilities/internal/mergeIncrementalData.js.map +1 -0
  786. package/utilities/{common → internal}/mergeOptions.d.ts +5 -0
  787. package/utilities/{common → internal}/mergeOptions.js +5 -0
  788. package/utilities/internal/mergeOptions.js.map +1 -0
  789. package/utilities/internal/omitDeep.d.ts +8 -0
  790. package/utilities/{common → internal}/omitDeep.js +6 -1
  791. package/utilities/internal/omitDeep.js.map +1 -0
  792. package/utilities/internal/{observables.d.ts → onAnyEvent.d.ts} +6 -2
  793. package/utilities/internal/{observables.js → onAnyEvent.js} +6 -2
  794. package/utilities/internal/onAnyEvent.js.map +1 -0
  795. package/utilities/{promises → internal}/preventUnhandledRejection.js.map +1 -1
  796. package/utilities/internal/removeDirectivesFromDocument.d.ts +14 -0
  797. package/utilities/internal/removeDirectivesFromDocument.js +300 -0
  798. package/utilities/internal/removeDirectivesFromDocument.js.map +1 -0
  799. package/utilities/internal/resultKeyNameFromField.d.ts +8 -0
  800. package/utilities/internal/resultKeyNameFromField.js +9 -0
  801. package/utilities/internal/resultKeyNameFromField.js.map +1 -0
  802. package/utilities/internal/shouldInclude.d.ts +8 -0
  803. package/utilities/internal/shouldInclude.js +47 -0
  804. package/utilities/internal/shouldInclude.js.map +1 -0
  805. package/utilities/internal/storeKeyNameFromField.d.ts +8 -0
  806. package/utilities/internal/storeKeyNameFromField.js +26 -0
  807. package/utilities/internal/storeKeyNameFromField.js.map +1 -0
  808. package/utilities/internal/stringifyForDisplay.d.ts +7 -0
  809. package/utilities/{common → internal}/stringifyForDisplay.js +6 -1
  810. package/utilities/internal/stringifyForDisplay.js.map +1 -0
  811. package/utilities/internal/toQueryResult.d.ts +5 -0
  812. package/utilities/internal/toQueryResult.js +5 -0
  813. package/utilities/internal/toQueryResult.js.map +1 -1
  814. package/utilities/internal/types/DecoratedPromise.d.ts +10 -0
  815. package/utilities/internal/types/DecoratedPromise.js +2 -0
  816. package/utilities/internal/types/DecoratedPromise.js.map +1 -0
  817. package/utilities/{types → internal/types}/DeepOmit.d.ts +5 -0
  818. package/utilities/{types → internal/types}/DeepPartial.d.ts +5 -0
  819. package/utilities/internal/types/DeepPartial.js.map +1 -0
  820. package/utilities/internal/types/FragmentMap.d.ts +12 -0
  821. package/utilities/internal/types/FragmentMap.js +2 -0
  822. package/utilities/internal/types/FragmentMap.js.map +1 -0
  823. package/utilities/internal/types/FragmentMapFunction.d.ts +8 -0
  824. package/utilities/internal/types/FragmentMapFunction.js +2 -0
  825. package/utilities/internal/types/FragmentMapFunction.js.map +1 -0
  826. package/utilities/internal/types/FulfilledPromise.d.ts +10 -0
  827. package/utilities/internal/types/FulfilledPromise.js +2 -0
  828. package/utilities/internal/types/FulfilledPromise.js.map +1 -0
  829. package/utilities/internal/types/IsAny.d.ts +7 -0
  830. package/utilities/internal/types/IsAny.js +2 -0
  831. package/utilities/internal/types/IsAny.js.map +1 -0
  832. package/utilities/{types → internal/types}/NoInfer.d.ts +2 -0
  833. package/utilities/internal/types/PendingPromise.d.ts +9 -0
  834. package/utilities/internal/types/PendingPromise.js +2 -0
  835. package/utilities/internal/types/PendingPromise.js.map +1 -0
  836. package/utilities/internal/types/Prettify.d.ts +9 -0
  837. package/utilities/internal/types/Primitive.d.ts +7 -0
  838. package/utilities/internal/types/RejectedPromise.d.ts +10 -0
  839. package/utilities/internal/types/RejectedPromise.js +2 -0
  840. package/utilities/internal/types/RejectedPromise.js.map +1 -0
  841. package/utilities/{types → internal/types}/RemoveIndexSignature.d.ts +5 -0
  842. package/utilities/internal/types/TupleToIntersection.d.ts +2 -0
  843. package/utilities/internal/types/TupleToIntersection.js +2 -0
  844. package/utilities/internal/types/TupleToIntersection.js.map +1 -0
  845. package/utilities/{types → internal/types}/VariablesOption.d.ts +5 -0
  846. package/utilities/internal/valueToObjectRepresentation.d.ts +8 -0
  847. package/utilities/internal/valueToObjectRepresentation.js +41 -0
  848. package/utilities/internal/valueToObjectRepresentation.js.map +1 -0
  849. package/utilities/invariant/index.js +3 -2
  850. package/utilities/invariant/index.js.map +1 -1
  851. package/utilities/policies/pagination.d.ts +23 -0
  852. package/utilities/policies/pagination.js +24 -7
  853. package/utilities/policies/pagination.js.map +1 -1
  854. package/utilities/{common → shared}/canonicalStringify.js +5 -2
  855. package/utilities/shared/canonicalStringify.js.map +1 -0
  856. package/utilities/subscriptions/relay/index.js +1 -1
  857. package/utilities/subscriptions/relay/index.js.map +1 -1
  858. package/version.js +1 -1
  859. package/__cjs/config/jest/areCombinedGraphQLErrorsEqual.cjs +0 -21
  860. package/__cjs/config/jest/areCombinedGraphQLErrorsEqual.cjs.map +0 -1
  861. package/__cjs/config/jest/areCombinedGraphQLErrorsEqual.d.cts +0 -3
  862. package/__cjs/config/jest/areCombinedProtocolErrorsEqual.cjs +0 -19
  863. package/__cjs/config/jest/areCombinedProtocolErrorsEqual.cjs.map +0 -1
  864. package/__cjs/config/jest/areCombinedProtocolErrorsEqual.d.cts +0 -3
  865. package/__cjs/config/jest/areGraphQlErrorsEqual.cjs +0 -11
  866. package/__cjs/config/jest/areGraphQlErrorsEqual.cjs.map +0 -1
  867. package/__cjs/config/jest/areGraphQlErrorsEqual.d.cts +0 -3
  868. package/__cjs/config/jest/areMissingFieldErrorsEqual.cjs +0 -20
  869. package/__cjs/config/jest/areMissingFieldErrorsEqual.cjs.map +0 -1
  870. package/__cjs/config/jest/areMissingFieldErrorsEqual.d.cts +0 -3
  871. package/__cjs/config/jest/areServerErrorsEqual.cjs +0 -22
  872. package/__cjs/config/jest/areServerErrorsEqual.cjs.map +0 -1
  873. package/__cjs/config/jest/areServerErrorsEqual.d.cts +0 -3
  874. package/__cjs/config/jest/resolver.cjs +0 -32
  875. package/__cjs/config/jest/resolver.cjs.map +0 -1
  876. package/__cjs/config/jest/resolver.d.cts +0 -3
  877. package/__cjs/config/jest/setup.cjs +0 -65
  878. package/__cjs/config/jest/setup.cjs.map +0 -1
  879. package/__cjs/config/jest/setup.d.cts +0 -3
  880. package/__cjs/core/LocalState.cjs +0 -332
  881. package/__cjs/core/LocalState.cjs.map +0 -1
  882. package/__cjs/core/LocalState.d.cts +0 -52
  883. package/__cjs/testing/experimental/createSchemaFetch.cjs +0 -92
  884. package/__cjs/testing/experimental/createSchemaFetch.cjs.map +0 -1
  885. package/__cjs/testing/experimental/createSchemaFetch.d.cts +0 -43
  886. package/__cjs/testing/experimental/createTestSchema.cjs +0 -110
  887. package/__cjs/testing/experimental/createTestSchema.cjs.map +0 -1
  888. package/__cjs/testing/experimental/createTestSchema.d.cts +0 -57
  889. package/__cjs/testing/experimental/graphql-tools/utils.cjs +0 -177
  890. package/__cjs/testing/experimental/graphql-tools/utils.cjs.map +0 -1
  891. package/__cjs/testing/experimental/graphql-tools/utils.d.cts +0 -26
  892. package/__cjs/testing/experimental/graphql-tools/utils.test.cjs +0 -200
  893. package/__cjs/testing/experimental/graphql-tools/utils.test.cjs.map +0 -1
  894. package/__cjs/testing/experimental/graphql-tools/utils.test.d.cts +0 -2
  895. package/__cjs/testing/experimental/index.cjs +0 -8
  896. package/__cjs/testing/experimental/index.cjs.map +0 -1
  897. package/__cjs/testing/experimental/index.d.cts +0 -3
  898. package/__cjs/utilities/caching/caches.cjs.map +0 -1
  899. package/__cjs/utilities/caching/caches.d.cts +0 -34
  900. package/__cjs/utilities/common/arrays.cjs.map +0 -1
  901. package/__cjs/utilities/common/arrays.d.cts +0 -3
  902. package/__cjs/utilities/common/canUse.cjs +0 -24
  903. package/__cjs/utilities/common/canUse.cjs.map +0 -1
  904. package/__cjs/utilities/common/canUse.d.cts +0 -3
  905. package/__cjs/utilities/common/canonicalStringify.cjs.map +0 -1
  906. package/__cjs/utilities/common/cloneDeep.cjs.map +0 -1
  907. package/__cjs/utilities/common/cloneDeep.d.cts +0 -5
  908. package/__cjs/utilities/common/compact.cjs.map +0 -1
  909. package/__cjs/utilities/common/compact.d.cts +0 -7
  910. package/__cjs/utilities/common/errorHandling.cjs +0 -23
  911. package/__cjs/utilities/common/errorHandling.cjs.map +0 -1
  912. package/__cjs/utilities/common/errorHandling.d.cts +0 -4
  913. package/__cjs/utilities/common/incrementalResult.cjs +0 -45
  914. package/__cjs/utilities/common/incrementalResult.cjs.map +0 -1
  915. package/__cjs/utilities/common/incrementalResult.d.cts +0 -7
  916. package/__cjs/utilities/common/makeUniqueId.cjs.map +0 -1
  917. package/__cjs/utilities/common/makeUniqueId.d.cts +0 -2
  918. package/__cjs/utilities/common/maybeDeepFreeze.cjs.map +0 -1
  919. package/__cjs/utilities/common/maybeDeepFreeze.d.cts +0 -4
  920. package/__cjs/utilities/common/mergeDeep.cjs.map +0 -1
  921. package/__cjs/utilities/common/mergeDeep.d.cts +0 -14
  922. package/__cjs/utilities/common/mergeOptions.cjs.map +0 -1
  923. package/__cjs/utilities/common/objects.cjs.map +0 -1
  924. package/__cjs/utilities/common/objects.d.cts +0 -3
  925. package/__cjs/utilities/common/omitDeep.cjs.map +0 -1
  926. package/__cjs/utilities/common/omitDeep.d.cts +0 -3
  927. package/__cjs/utilities/common/stringifyForDisplay.cjs.map +0 -1
  928. package/__cjs/utilities/common/stringifyForDisplay.d.cts +0 -2
  929. package/__cjs/utilities/globals/global.cjs.map +0 -1
  930. package/__cjs/utilities/globals/index.cjs.map +0 -1
  931. package/__cjs/utilities/globals/maybe.cjs.map +0 -1
  932. package/__cjs/utilities/graphql/directives.cjs +0 -114
  933. package/__cjs/utilities/graphql/directives.cjs.map +0 -1
  934. package/__cjs/utilities/graphql/directives.d.cts +0 -20
  935. package/__cjs/utilities/graphql/fragments.cjs.map +0 -1
  936. package/__cjs/utilities/graphql/fragments.d.cts +0 -35
  937. package/__cjs/utilities/graphql/getFromAST.cjs +0 -101
  938. package/__cjs/utilities/graphql/getFromAST.cjs.map +0 -1
  939. package/__cjs/utilities/graphql/getFromAST.d.cts +0 -15
  940. package/__cjs/utilities/internal/observables.cjs.map +0 -1
  941. package/__cjs/utilities/promises/decoration.cjs +0 -45
  942. package/__cjs/utilities/promises/decoration.cjs.map +0 -1
  943. package/__cjs/utilities/promises/decoration.d.cts +0 -18
  944. package/__cjs/utilities/types/DeepPartial.cjs.map +0 -1
  945. package/__cjs/utilities/types/IsStrictlyAny.cjs.map +0 -1
  946. package/__cjs/utilities/types/IsStrictlyAny.d.cts +0 -5
  947. package/__cjs/utilities/types/Prettify.d.cts +0 -4
  948. package/__cjs/utilities/types/Primitive.d.cts +0 -2
  949. package/__cjs/utilities/types/UnionToIntersection.cjs +0 -3
  950. package/__cjs/utilities/types/UnionToIntersection.cjs.map +0 -1
  951. package/__cjs/utilities/types/UnionToIntersection.d.cts +0 -2
  952. package/config/jest/areCombinedGraphQLErrorsEqual.d.ts +0 -3
  953. package/config/jest/areCombinedGraphQLErrorsEqual.js +0 -17
  954. package/config/jest/areCombinedGraphQLErrorsEqual.js.map +0 -1
  955. package/config/jest/areCombinedProtocolErrorsEqual.d.ts +0 -3
  956. package/config/jest/areCombinedProtocolErrorsEqual.js +0 -15
  957. package/config/jest/areCombinedProtocolErrorsEqual.js.map +0 -1
  958. package/config/jest/areGraphQlErrorsEqual.d.ts +0 -3
  959. package/config/jest/areGraphQlErrorsEqual.js +0 -7
  960. package/config/jest/areGraphQlErrorsEqual.js.map +0 -1
  961. package/config/jest/areMissingFieldErrorsEqual.d.ts +0 -3
  962. package/config/jest/areMissingFieldErrorsEqual.js +0 -16
  963. package/config/jest/areMissingFieldErrorsEqual.js.map +0 -1
  964. package/config/jest/areServerErrorsEqual.d.ts +0 -3
  965. package/config/jest/areServerErrorsEqual.js +0 -18
  966. package/config/jest/areServerErrorsEqual.js.map +0 -1
  967. package/config/jest/resolver.d.ts +0 -3
  968. package/config/jest/resolver.js +0 -29
  969. package/config/jest/resolver.js.map +0 -1
  970. package/config/jest/setup.d.ts +0 -3
  971. package/config/jest/setup.js +0 -62
  972. package/config/jest/setup.js.map +0 -1
  973. package/core/LocalState.d.ts +0 -52
  974. package/core/LocalState.js +0 -328
  975. package/core/LocalState.js.map +0 -1
  976. package/legacyEntryPoints/testing/experimental/experimental.cjs +0 -1
  977. package/legacyEntryPoints/testing/experimental/experimental.d.cts +0 -1
  978. package/legacyEntryPoints/testing/experimental/index.d.ts +0 -1
  979. package/legacyEntryPoints/testing/experimental/index.js +0 -1
  980. package/legacyEntryPoints/utilities/globals/globals.cjs +0 -1
  981. package/legacyEntryPoints/utilities/globals/globals.d.cts +0 -1
  982. package/legacyEntryPoints/utilities/globals/index.d.ts +0 -1
  983. package/legacyEntryPoints/utilities/globals/index.js +0 -1
  984. package/testing/experimental/createSchemaFetch.d.ts +0 -43
  985. package/testing/experimental/createSchemaFetch.js +0 -89
  986. package/testing/experimental/createSchemaFetch.js.map +0 -1
  987. package/testing/experimental/createTestSchema.d.ts +0 -57
  988. package/testing/experimental/createTestSchema.js +0 -107
  989. package/testing/experimental/createTestSchema.js.map +0 -1
  990. package/testing/experimental/graphql-tools/utils.d.ts +0 -26
  991. package/testing/experimental/graphql-tools/utils.js +0 -174
  992. package/testing/experimental/graphql-tools/utils.js.map +0 -1
  993. package/testing/experimental/graphql-tools/utils.test.d.ts +0 -2
  994. package/testing/experimental/graphql-tools/utils.test.js +0 -198
  995. package/testing/experimental/graphql-tools/utils.test.js.map +0 -1
  996. package/testing/experimental/index.d.ts +0 -3
  997. package/testing/experimental/index.js +0 -3
  998. package/testing/experimental/index.js.map +0 -1
  999. package/utilities/caching/caches.d.ts +0 -34
  1000. package/utilities/caching/caches.js.map +0 -1
  1001. package/utilities/common/arrays.d.ts +0 -3
  1002. package/utilities/common/arrays.js +0 -6
  1003. package/utilities/common/arrays.js.map +0 -1
  1004. package/utilities/common/canUse.d.ts +0 -3
  1005. package/utilities/common/canUse.js +0 -21
  1006. package/utilities/common/canUse.js.map +0 -1
  1007. package/utilities/common/canonicalStringify.js.map +0 -1
  1008. package/utilities/common/cloneDeep.d.ts +0 -5
  1009. package/utilities/common/cloneDeep.js.map +0 -1
  1010. package/utilities/common/compact.d.ts +0 -7
  1011. package/utilities/common/compact.js.map +0 -1
  1012. package/utilities/common/errorHandling.d.ts +0 -4
  1013. package/utilities/common/errorHandling.js.map +0 -1
  1014. package/utilities/common/incrementalResult.d.ts +0 -7
  1015. package/utilities/common/incrementalResult.js +0 -38
  1016. package/utilities/common/incrementalResult.js.map +0 -1
  1017. package/utilities/common/makeUniqueId.d.ts +0 -2
  1018. package/utilities/common/makeUniqueId.js +0 -9
  1019. package/utilities/common/makeUniqueId.js.map +0 -1
  1020. package/utilities/common/maybeDeepFreeze.d.ts +0 -4
  1021. package/utilities/common/maybeDeepFreeze.js.map +0 -1
  1022. package/utilities/common/mergeDeep.d.ts +0 -14
  1023. package/utilities/common/mergeDeep.js.map +0 -1
  1024. package/utilities/common/mergeOptions.js.map +0 -1
  1025. package/utilities/common/objects.d.ts +0 -3
  1026. package/utilities/common/objects.js.map +0 -1
  1027. package/utilities/common/omitDeep.d.ts +0 -3
  1028. package/utilities/common/omitDeep.js.map +0 -1
  1029. package/utilities/common/stringifyForDisplay.d.ts +0 -2
  1030. package/utilities/common/stringifyForDisplay.js.map +0 -1
  1031. package/utilities/globals/global.js.map +0 -1
  1032. package/utilities/globals/index.js.map +0 -1
  1033. package/utilities/globals/maybe.js.map +0 -1
  1034. package/utilities/graphql/directives.d.ts +0 -20
  1035. package/utilities/graphql/directives.js +0 -99
  1036. package/utilities/graphql/directives.js.map +0 -1
  1037. package/utilities/graphql/fragments.d.ts +0 -35
  1038. package/utilities/graphql/fragments.js.map +0 -1
  1039. package/utilities/graphql/getFromAST.d.ts +0 -15
  1040. package/utilities/graphql/getFromAST.js +0 -91
  1041. package/utilities/graphql/getFromAST.js.map +0 -1
  1042. package/utilities/internal/observables.js.map +0 -1
  1043. package/utilities/promises/decoration.d.ts +0 -18
  1044. package/utilities/promises/decoration.js.map +0 -1
  1045. package/utilities/types/DeepPartial.js.map +0 -1
  1046. package/utilities/types/IsStrictlyAny.d.ts +0 -5
  1047. package/utilities/types/IsStrictlyAny.js +0 -2
  1048. package/utilities/types/IsStrictlyAny.js.map +0 -1
  1049. package/utilities/types/Prettify.d.ts +0 -4
  1050. package/utilities/types/Primitive.d.ts +0 -2
  1051. package/utilities/types/UnionToIntersection.d.ts +0 -2
  1052. package/utilities/types/UnionToIntersection.js +0 -2
  1053. package/utilities/types/UnionToIntersection.js.map +0 -1
  1054. /package/__cjs/utilities/{globals → internal/globals}/global.cjs +0 -0
  1055. /package/__cjs/utilities/{globals → internal/globals}/global.d.cts +0 -0
  1056. /package/__cjs/utilities/{globals → internal/globals}/index.cjs +0 -0
  1057. /package/__cjs/utilities/{globals → internal/globals}/index.d.cts +0 -0
  1058. /package/__cjs/utilities/{globals → internal/globals}/maybe.cjs +0 -0
  1059. /package/__cjs/utilities/{globals → internal/globals}/maybe.d.cts +0 -0
  1060. /package/__cjs/utilities/{promises → internal}/preventUnhandledRejection.cjs +0 -0
  1061. /package/__cjs/utilities/{promises → internal}/preventUnhandledRejection.d.cts +0 -0
  1062. /package/__cjs/utilities/{types → internal/types}/DeepOmit.cjs +0 -0
  1063. /package/__cjs/utilities/{types → internal/types}/DeepOmit.cjs.map +0 -0
  1064. /package/__cjs/utilities/{types → internal/types}/DeepPartial.cjs +0 -0
  1065. /package/__cjs/utilities/{types → internal/types}/NoInfer.cjs +0 -0
  1066. /package/__cjs/utilities/{types → internal/types}/NoInfer.cjs.map +0 -0
  1067. /package/__cjs/utilities/{types → internal/types}/Prettify.cjs +0 -0
  1068. /package/__cjs/utilities/{types → internal/types}/Prettify.cjs.map +0 -0
  1069. /package/__cjs/utilities/{types → internal/types}/Primitive.cjs +0 -0
  1070. /package/__cjs/utilities/{types → internal/types}/Primitive.cjs.map +0 -0
  1071. /package/__cjs/utilities/{types → internal/types}/RemoveIndexSignature.cjs +0 -0
  1072. /package/__cjs/utilities/{types → internal/types}/RemoveIndexSignature.cjs.map +0 -0
  1073. /package/__cjs/utilities/{types → internal/types}/VariablesOption.cjs +0 -0
  1074. /package/__cjs/utilities/{types → internal/types}/VariablesOption.cjs.map +0 -0
  1075. /package/__cjs/utilities/{common → shared}/canonicalStringify.d.cts +0 -0
  1076. /package/utilities/{globals → internal/globals}/global.d.ts +0 -0
  1077. /package/utilities/{globals → internal/globals}/index.d.ts +0 -0
  1078. /package/utilities/{globals → internal/globals}/index.js +0 -0
  1079. /package/utilities/{globals → internal/globals}/maybe.d.ts +0 -0
  1080. /package/utilities/{globals → internal/globals}/maybe.js +0 -0
  1081. /package/utilities/{promises → internal}/preventUnhandledRejection.d.ts +0 -0
  1082. /package/utilities/{promises → internal}/preventUnhandledRejection.js +0 -0
  1083. /package/utilities/{types → internal/types}/DeepOmit.js +0 -0
  1084. /package/utilities/{types → internal/types}/DeepOmit.js.map +0 -0
  1085. /package/utilities/{types → internal/types}/DeepPartial.js +0 -0
  1086. /package/utilities/{types → internal/types}/NoInfer.js +0 -0
  1087. /package/utilities/{types → internal/types}/NoInfer.js.map +0 -0
  1088. /package/utilities/{types → internal/types}/Prettify.js +0 -0
  1089. /package/utilities/{types → internal/types}/Prettify.js.map +0 -0
  1090. /package/utilities/{types → internal/types}/Primitive.js +0 -0
  1091. /package/utilities/{types → internal/types}/Primitive.js.map +0 -0
  1092. /package/utilities/{types → internal/types}/RemoveIndexSignature.js +0 -0
  1093. /package/utilities/{types → internal/types}/RemoveIndexSignature.js.map +0 -0
  1094. /package/utilities/{types → internal/types}/VariablesOption.js +0 -0
  1095. /package/utilities/{types → internal/types}/VariablesOption.js.map +0 -0
  1096. /package/utilities/{common → shared}/canonicalStringify.d.ts +0 -0
@@ -9,7 +9,6 @@ exports.logMissingFieldErrors = logMissingFieldErrors;
9
9
  const equality_1 = require("@wry/equality");
10
10
  const optimism_1 = require("optimism");
11
11
  const rxjs_1 = require("rxjs");
12
- const utilities_1 = require("@apollo/client/utilities");
13
12
  const environment_1 = require("@apollo/client/utilities/environment");
14
13
  const internal_1 = require("@apollo/client/utilities/internal");
15
14
  const invariant_1 = require("@apollo/client/utilities/invariant");
@@ -17,15 +16,28 @@ const equalByQuery_js_1 = require("./equalByQuery.cjs");
17
16
  const networkStatus_js_1 = require("./networkStatus.cjs");
18
17
  const { assign, hasOwnProperty } = Object;
19
18
  const newNetworkStatusSymbol = Symbol();
20
- const uninitialized = {};
19
+ const uninitialized = {
20
+ loading: true,
21
+ networkStatus: networkStatus_js_1.NetworkStatus.loading,
22
+ data: undefined,
23
+ partial: true,
24
+ };
25
+ const empty = {
26
+ loading: false,
27
+ networkStatus: networkStatus_js_1.NetworkStatus.ready,
28
+ data: undefined,
29
+ partial: true,
30
+ };
21
31
  class ObservableQuery {
22
32
  /**
23
- * @internal
24
- * A slot used by the `useQuery` hook to indicate that `client.watchQuery`
25
- * should not register the query immediately, but instead wait for the query to
26
- * be started registered with the `QueryManager` when `useSyncExternalStore`
27
- * actively subscribes to it.
28
- */
33
+ * @internal
34
+ * A slot used by the `useQuery` hook to indicate that `client.watchQuery`
35
+ * should not register the query immediately, but instead wait for the query to
36
+ * be started registered with the `QueryManager` when `useSyncExternalStore`
37
+ * actively subscribes to it.
38
+ *
39
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
40
+ */
29
41
  static inactiveOnCreation = new optimism_1.Slot();
30
42
  options;
31
43
  queryId;
@@ -43,23 +55,58 @@ class ObservableQuery {
43
55
  get variables() {
44
56
  return this.options.variables;
45
57
  }
58
+ unsubscribeFromCache;
59
+ input;
46
60
  subject;
47
61
  observable;
48
62
  isTornDown;
49
63
  queryManager;
50
64
  subscriptions = new Set();
51
- waitForOwnResult;
52
- last;
65
+ /**
66
+ * If an `ObservableQuery` is created with a `network-only` fetch policy,
67
+ * it should actually start receiving cache updates, but not before it has
68
+ * received the first result from the network.
69
+ */
70
+ waitForNetworkResult;
53
71
  lastQuery;
54
72
  queryInfo;
55
73
  linkSubscription;
56
- linkObservable;
57
74
  pollingInfo;
58
- networkStatus;
75
+ get networkStatus() {
76
+ return this.subject.getValue().result.networkStatus;
77
+ }
59
78
  constructor({ queryManager, queryInfo, options, }) {
60
- this.networkStatus = networkStatus_js_1.NetworkStatus.loading;
61
79
  let startedInactive = ObservableQuery.inactiveOnCreation.getValue();
62
- this.subject = new rxjs_1.BehaviorSubject(uninitialized);
80
+ // related classes
81
+ this.queryInfo = queryInfo;
82
+ this.queryManager = queryManager;
83
+ // active state
84
+ this.waitForNetworkResult = options.fetchPolicy === "network-only";
85
+ this.isTornDown = false;
86
+ this.subscribeToMore = this.subscribeToMore.bind(this);
87
+ this.maskResult = this.maskResult.bind(this);
88
+ const { watchQuery: { fetchPolicy: defaultFetchPolicy = "cache-first" } = {}, } = queryManager.defaultOptions;
89
+ const { fetchPolicy = defaultFetchPolicy,
90
+ // Make sure we don't store "standby" as the initialFetchPolicy.
91
+ initialFetchPolicy = fetchPolicy === "standby" ? defaultFetchPolicy : (fetchPolicy), } = options;
92
+ this.lastQuery = options.query;
93
+ this.options = {
94
+ ...options,
95
+ // Remember the initial options.fetchPolicy so we can revert back to this
96
+ // policy when variables change. This information can also be specified
97
+ // (or overridden) by providing options.initialFetchPolicy explicitly.
98
+ initialFetchPolicy,
99
+ // This ensures this.options.fetchPolicy always has a string value, in
100
+ // case options.fetchPolicy was not provided.
101
+ fetchPolicy,
102
+ variables: this.getVariablesWithDefaults(options.variables),
103
+ };
104
+ this.subject = new rxjs_1.BehaviorSubject({
105
+ query: this.query,
106
+ variables: this.variables,
107
+ result: uninitialized,
108
+ meta: {},
109
+ });
63
110
  this.observable = this.subject.pipe((0, rxjs_1.tap)({
64
111
  subscribe: () => {
65
112
  if (startedInactive) {
@@ -67,22 +114,6 @@ class ObservableQuery {
67
114
  startedInactive = false;
68
115
  }
69
116
  if (!this.subject.observed) {
70
- if (this.subject.value === uninitialized) {
71
- // Emitting a value in the `subscribe` callback of `tap` gives
72
- // the subject a chance to save this initial result without
73
- // emitting the placeholder value since this callback is executed
74
- // before `tap` subscribes to the source observable (the subject).
75
- // `reobserve` also has the chance to update this value if it
76
- // synchronously emits one (usually due to reporting a cache
77
- // value).
78
- //
79
- // We don't initialize the `BehaviorSubject` with
80
- // `getInitialResult` because its possible the cache might have
81
- // updated between when the `ObservableQuery` was instantiated and
82
- // when it is subscribed to. Updating the value here ensures we
83
- // report the most up-to-date result from the cache.
84
- this.subject.next(this.getInitialResult());
85
- }
86
117
  this.reobserve();
87
118
  // TODO: See if we can rework updatePolling to better handle this.
88
119
  // reobserve calls updatePolling but this `subscribe` callback is
@@ -97,47 +128,55 @@ class ObservableQuery {
97
128
  this.tearDownQuery();
98
129
  }
99
130
  },
100
- }), (0, rxjs_1.filter)((result) => {
101
- return (this.options.fetchPolicy !== "standby" &&
102
- (this.options.notifyOnNetworkStatusChange ||
103
- !result.loading ||
104
- // data could be defined for cache-and-network fetch policies
105
- // when emitting the cache result while loading the network result
106
- !!result.data));
107
- }));
131
+ }), (0, internal_1.filterMap)(({ query, variables, result: current, meta }, context) => {
132
+ const { shouldEmit } = meta;
133
+ if (current === uninitialized) {
134
+ // reset internal state after `ObservableQuery.reset()`
135
+ context.previous = undefined;
136
+ context.previousVariables = undefined;
137
+ }
138
+ if (this.options.fetchPolicy === "standby" ||
139
+ shouldEmit === 2 /* EmitBehavior.never */)
140
+ return;
141
+ if (shouldEmit === 1 /* EmitBehavior.force */)
142
+ return emit();
143
+ const { previous, previousVariables } = context;
144
+ if (previous) {
145
+ const documentInfo = this.queryManager.getDocumentInfo(query);
146
+ const dataMasking = this.queryManager.dataMasking;
147
+ const maskedQuery = dataMasking ? documentInfo.nonReactiveQuery : query;
148
+ const resultIsEqual = dataMasking || documentInfo.hasNonreactiveDirective ?
149
+ (0, equalByQuery_js_1.equalByQuery)(maskedQuery, previous, current, variables)
150
+ : (0, equality_1.equal)(previous, current);
151
+ if (resultIsEqual && (0, equality_1.equal)(previousVariables, variables)) {
152
+ return;
153
+ }
154
+ }
155
+ if (shouldEmit === 3 /* EmitBehavior.networkStatusChange */ &&
156
+ (!this.options.notifyOnNetworkStatusChange ||
157
+ (0, equality_1.equal)(previous, current))) {
158
+ return;
159
+ }
160
+ return emit();
161
+ function emit() {
162
+ context.previous = current;
163
+ context.previousVariables = variables;
164
+ return current;
165
+ }
166
+ }, () => ({})));
108
167
  this["@@observable"] = () => this;
109
168
  if (Symbol.observable) {
110
169
  this[Symbol.observable] = () => this;
111
170
  }
112
171
  this.pipe = this.observable.pipe.bind(this.observable);
113
172
  this.subscribe = this.observable.subscribe.bind(this.observable);
114
- // related classes
115
- this.queryInfo = queryInfo;
116
- this.queryManager = queryManager;
117
- // active state
118
- this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);
119
- this.isTornDown = false;
120
- this.subscribe = this.subscribe.bind(this);
121
- this.subscribeToMore = this.subscribeToMore.bind(this);
122
- this.maskResult = this.maskResult.bind(this);
123
- const { watchQuery: { fetchPolicy: defaultFetchPolicy = "cache-first" } = {}, } = queryManager.defaultOptions;
124
- const { fetchPolicy = defaultFetchPolicy,
125
- // Make sure we don't store "standby" as the initialFetchPolicy.
126
- initialFetchPolicy = fetchPolicy === "standby" ? defaultFetchPolicy : (fetchPolicy), } = options;
127
- this.lastQuery = options.query;
128
- this.options = {
129
- ...options,
130
- // Remember the initial options.fetchPolicy so we can revert back to this
131
- // policy when variables change. This information can also be specified
132
- // (or overridden) by providing options.initialFetchPolicy explicitly.
133
- initialFetchPolicy,
134
- // This ensures this.options.fetchPolicy always has a string value, in
135
- // case options.fetchPolicy was not provided.
136
- fetchPolicy,
137
- variables: this.getVariablesWithDefaults(options.variables),
138
- };
173
+ this.input = new rxjs_1.Subject();
174
+ // we want to feed many streams into `this.subject`, but none of them should
175
+ // be able to close `this.input`
176
+ this.input.complete = () => { };
177
+ this.input.pipe(this.operator).subscribe(this.subject);
139
178
  this.queryId = queryInfo.queryId || queryManager.generateQueryId();
140
- const opDef = (0, utilities_1.getOperationDefinition)(this.query);
179
+ const opDef = (0, internal_1.getOperationDefinition)(this.query);
141
180
  this.queryName = opDef && opDef.name && opDef.name.value;
142
181
  }
143
182
  // We can't use Observable['subscribe'] here as the type as it conflicts with
@@ -147,14 +186,26 @@ class ObservableQuery {
147
186
  pipe;
148
187
  [Symbol.observable];
149
188
  ["@@observable"];
150
- /** @internal */
189
+ /**
190
+ * @internal
191
+ *
192
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
193
+ */
151
194
  resetDiff() {
152
195
  this.queryInfo.resetDiff();
153
196
  }
154
- getInitialResult() {
197
+ getCacheDiff({ optimistic = true } = {}) {
198
+ return this.queryManager.cache.diff({
199
+ query: this.query,
200
+ variables: this.variables,
201
+ returnPartialData: true,
202
+ optimistic,
203
+ });
204
+ }
205
+ getInitialResult(initialFetchPolicy) {
155
206
  const fetchPolicy = this.queryManager.prioritizeCacheValues ?
156
207
  "cache-first"
157
- : this.options.fetchPolicy;
208
+ : initialFetchPolicy || this.options.fetchPolicy;
158
209
  const defaultResult = {
159
210
  data: undefined,
160
211
  loading: true,
@@ -162,7 +213,7 @@ class ObservableQuery {
162
213
  partial: true,
163
214
  };
164
215
  const cacheResult = () => {
165
- const diff = this.queryInfo.getDiff();
216
+ const diff = this.getCacheDiff();
166
217
  return this.maskResult({
167
218
  data:
168
219
  // TODO: queryInfo.getDiff should handle this since cache.diff returns a
@@ -185,128 +236,101 @@ class ObservableQuery {
185
236
  loading: true,
186
237
  networkStatus: networkStatus_js_1.NetworkStatus.loading,
187
238
  };
188
- case "standby":
189
- return {
190
- ...defaultResult,
191
- loading: false,
192
- networkStatus: networkStatus_js_1.NetworkStatus.ready,
193
- };
194
239
  default:
195
240
  return defaultResult;
196
241
  }
197
242
  }
198
- getCurrentFullResult(saveAsLastResult = true) {
199
- // Use the last result as long as the variables match this.variables.
200
- const lastResult = this.getLastResult(true);
201
- const networkStatus = this.networkStatus;
202
- const result = {
203
- data: undefined,
204
- partial: true,
205
- ...lastResult,
206
- loading: (0, networkStatus_js_1.isNetworkRequestInFlight)(networkStatus),
207
- networkStatus,
208
- };
209
- let { fetchPolicy = "cache-first" } = this.options;
210
- const { prioritizeCacheValues } = this.queryManager;
211
- if (prioritizeCacheValues) {
212
- fetchPolicy = "cache-first";
213
- }
214
- if (
215
- // These fetch policies should never deliver data from the cache, unless
216
- // redelivering a previously delivered result.
217
- skipCacheDataFor(fetchPolicy) ||
218
- // If this.options.query has @client(always: true) fields, we cannot
219
- // trust diff.result, since it was read from the cache without running
220
- // local resolvers (and it's too late to run resolvers now, since we must
221
- // return a result synchronously).
222
- this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) {
223
- // Fall through.
243
+ resubscribeCache() {
244
+ const { variables, fetchPolicy } = this.options;
245
+ const query = this.query;
246
+ const shouldUnsubscribe = fetchPolicy === "standby" ||
247
+ fetchPolicy === "no-cache" ||
248
+ this.waitForNetworkResult;
249
+ const shouldResubscribe = !isEqualQuery({ query, variables }, this.unsubscribeFromCache) &&
250
+ !this.waitForNetworkResult;
251
+ if (shouldUnsubscribe || shouldResubscribe) {
252
+ this.unsubscribeFromCache?.();
224
253
  }
225
- else if (this.waitForOwnResult && !prioritizeCacheValues) {
226
- // This would usually be a part of `QueryInfo.getDiff()`.
227
- // which we skip in the waitForOwnResult case since we are not
228
- // interested in the diff.
229
- this.queryInfo["updateWatch"]();
254
+ if (shouldUnsubscribe || !shouldResubscribe) {
255
+ return;
230
256
  }
231
- else {
232
- const diff = this.queryInfo.getDiff();
233
- result.partial = !diff.complete;
234
- if (diff.complete || this.options.returnPartialData) {
235
- result.data = diff.result;
236
- }
237
- if (result.data === null) {
238
- result.data = void 0;
239
- }
240
- if (diff.complete) {
241
- // If the diff is complete, and we're using a FetchPolicy that
242
- // terminates after a complete cache read, we can assume the next result
243
- // we receive will have NetworkStatus.ready and !loading.
244
- if (diff.complete &&
245
- result.networkStatus === networkStatus_js_1.NetworkStatus.loading &&
246
- (fetchPolicy === "cache-first" || fetchPolicy === "cache-only")) {
247
- result.networkStatus = networkStatus_js_1.NetworkStatus.ready;
248
- result.loading = false;
257
+ const watch = {
258
+ query,
259
+ variables,
260
+ optimistic: true,
261
+ watcher: this,
262
+ callback: (diff) => {
263
+ const info = this.queryManager.getDocumentInfo(query);
264
+ if (info.hasClientExports || info.hasForcedResolvers) {
265
+ // If this is not set to something different than `diff`, we will
266
+ // not be notified about future cache changes with an equal `diff`.
267
+ // That would be the case if we are working with client-only fields
268
+ // that are forced or with `exports` fields that might change, causing
269
+ // local resovlers to return a new result.
270
+ // This is based on an implementation detail of `InMemoryCache`, which
271
+ // is not optimal - but the only alternative to this would be to
272
+ // resubscribe to the cache asynchonouly, which would bear the risk of
273
+ // missing further synchronous updates.
274
+ watch.lastDiff = undefined;
249
275
  }
250
- }
251
- // We need to check for both both `error` and `errors` field because there
252
- // are cases where sometimes `error` is set, but not `errors` and
253
- // vice-versa. This will be updated in the next major version when
254
- // `errors` is deprecated in favor of `error`.
255
- if (result.networkStatus === networkStatus_js_1.NetworkStatus.ready && result.error) {
256
- result.networkStatus = networkStatus_js_1.NetworkStatus.error;
257
- }
258
- if (environment_1.__DEV__ &&
259
- !diff.complete &&
260
- !result.loading &&
261
- !result.data &&
262
- !result.error) {
263
- logMissingFieldErrors(diff.missing);
264
- }
265
- }
266
- if (saveAsLastResult) {
267
- this.updateLastResult(result);
268
- }
269
- return result;
270
- }
271
- getCurrentResult(saveAsLastResult = true) {
272
- return this.maskResult(this.getCurrentFullResult(saveAsLastResult));
276
+ if (watch.lastOwnDiff === diff) {
277
+ // skip cache updates that were caused by our own writes
278
+ return;
279
+ }
280
+ const { result: previousResult } = this.subject.getValue();
281
+ if (!diff.complete &&
282
+ // If we are trying to deliver an incomplete cache result, we avoid
283
+ // reporting it if the query has errored, otherwise we let the broadcast try
284
+ // and repair the partial result by refetching the query. This check avoids
285
+ // a situation where a query that errors and another succeeds with
286
+ // overlapping data does not report the partial data result to the errored
287
+ // query.
288
+ //
289
+ // See https://github.com/apollographql/apollo-client/issues/11400 for more
290
+ // information on this issue.
291
+ (previousResult.error ||
292
+ // Prevent to schedule a notify directly after the `ObservableQuery`
293
+ // has been `reset` (which will set the `previousResult` to `uninitialized` or `empty`)
294
+ // as in those cases, `resetCache` will manually call `refetch` with more intentional timing.
295
+ previousResult === uninitialized ||
296
+ previousResult === empty)) {
297
+ return;
298
+ }
299
+ if (!(0, equality_1.equal)(previousResult.data, diff.result)) {
300
+ this.scheduleNotify();
301
+ }
302
+ },
303
+ };
304
+ const cancelWatch = this.queryManager.cache.watch(watch);
305
+ this.unsubscribeFromCache = Object.assign(() => {
306
+ this.unsubscribeFromCache = undefined;
307
+ cancelWatch();
308
+ }, { query, variables });
273
309
  }
274
- // Compares newResult to the snapshot we took of this.lastResult when it was
275
- // first received.
276
- isDifferentFromLastResult(newResult, variables) {
277
- if (!this.last) {
278
- return true;
310
+ stableLastResult;
311
+ getCurrentResult() {
312
+ const { result: current } = this.subject.getValue();
313
+ let value = (
314
+ // if the `current` result is in an error state, we will always return that
315
+ // error state, even if we have no observers
316
+ (current.networkStatus === networkStatus_js_1.NetworkStatus.error ||
317
+ // if we have observers, we are watching the cache and
318
+ // this.subject.getValue() will always be up to date
319
+ this.hasObservers() || // if we are using a `no-cache` fetch policy in which case this
320
+ // `ObservableQuery` cannot have been updated from the outside - in
321
+ // that case, we prefer to keep the current value
322
+ this.options.fetchPolicy === "no-cache")) ?
323
+ current
324
+ // otherwise, the `current` value might be outdated due to missed
325
+ // external updates - calculate it again
326
+ : this.getInitialResult();
327
+ if (value === uninitialized) {
328
+ value = this.getInitialResult();
279
329
  }
280
- const documentInfo = this.queryManager.getDocumentInfo(this.query);
281
- const dataMasking = this.queryManager.dataMasking;
282
- const query = dataMasking ? documentInfo.nonReactiveQuery : this.query;
283
- const resultIsDifferent = dataMasking || documentInfo.hasNonreactiveDirective ?
284
- !(0, equalByQuery_js_1.equalByQuery)(query, this.last.result, newResult, this.variables)
285
- : !(0, equality_1.equal)(this.last.result, newResult);
286
- return (resultIsDifferent || (variables && !(0, equality_1.equal)(this.last.variables, variables)));
287
- }
288
- getLast(key, variablesMustMatch) {
289
- const last = this.last;
290
- if (last &&
291
- last[key] &&
292
- (!variablesMustMatch || (0, equality_1.equal)(last.variables, this.variables))) {
293
- return last[key];
330
+ if (!(0, equality_1.equal)(this.stableLastResult, value)) {
331
+ this.stableLastResult = value;
294
332
  }
295
- }
296
- // TODO: Consider deprecating this function
297
- getLastResult(variablesMustMatch) {
298
- return this.getLast("result", variablesMustMatch);
299
- }
300
- // TODO: Consider deprecating this function
301
- getLastError(variablesMustMatch) {
302
- return this.getLast("error", variablesMustMatch);
303
- }
304
- // TODO: Consider deprecating this function
305
- resetLastResults() {
306
- delete this.last;
307
- // TODO: This will need to be removed when tearing down an ObservableQuery
308
- // since the observable will terminate.
309
- this.isTornDown = false;
333
+ return this.stableLastResult;
310
334
  }
311
335
  /**
312
336
  * Update the variables of this observable query, and fetch the new results.
@@ -331,10 +355,10 @@ class ObservableQuery {
331
355
  reobserveOptions.fetchPolicy = "network-only";
332
356
  }
333
357
  if (environment_1.__DEV__ && variables && hasOwnProperty.call(variables, "variables")) {
334
- const queryDef = (0, utilities_1.getQueryDefinition)(this.query);
358
+ const queryDef = (0, internal_1.getQueryDefinition)(this.query);
335
359
  const vars = queryDef.variableDefinitions;
336
360
  if (!vars || !vars.some((v) => v.variable.name.value === "variables")) {
337
- __DEV__ && invariant_1.invariant.warn(70, variables, queryDef.name?.value || queryDef);
361
+ __DEV__ && invariant_1.invariant.warn(77, variables, queryDef.name?.value || queryDef);
338
362
  }
339
363
  }
340
364
  if (variables && !(0, equality_1.equal)(this.variables, variables)) {
@@ -381,26 +405,27 @@ class ObservableQuery {
381
405
  fetchMoreOptions.query ?
382
406
  this.transformDocument(this.options.query)
383
407
  : combinedOptions.query;
384
- // Simulate a loading result for the original query with
385
- // result.networkStatus === NetworkStatus.fetchMore.
386
- const originalNetworkStatus = this.networkStatus;
387
- this.networkStatus = networkStatus_js_1.NetworkStatus.fetchMore;
388
- if (combinedOptions.notifyOnNetworkStatusChange) {
389
- this.observe();
390
- }
391
- const updatedQuerySet = new Set();
408
+ let wasUpdated = false;
392
409
  const updateQuery = fetchMoreOptions?.updateQuery;
393
410
  const isCached = this.options.fetchPolicy !== "no-cache";
394
411
  if (!isCached) {
395
- (0, invariant_1.invariant)(updateQuery, 71);
412
+ (0, invariant_1.invariant)(updateQuery, 78);
396
413
  }
414
+ const { finalize, pushNotification } = this.pushOperation(networkStatus_js_1.NetworkStatus.fetchMore);
415
+ pushNotification({
416
+ source: "newNetworkStatus",
417
+ kind: "N",
418
+ value: {},
419
+ }, { shouldEmit: 3 /* EmitBehavior.networkStatusChange */ });
397
420
  return this.queryManager
398
421
  .fetchQuery(qid, combinedOptions, networkStatus_js_1.NetworkStatus.fetchMore)
399
422
  .then((fetchMoreResult) => {
400
423
  this.queryManager.removeQuery(qid);
401
- if (this.networkStatus === networkStatus_js_1.NetworkStatus.fetchMore) {
402
- this.networkStatus = originalNetworkStatus;
403
- }
424
+ // disable the `fetchMore` override that is currently active
425
+ // the next updates caused by this should not be `fetchMore` anymore,
426
+ // but `ready` or whatever other calculated loading state is currently
427
+ // appropriate
428
+ finalize();
404
429
  if (isCached) {
405
430
  // Performing this cache update inside a cache.batch transaction ensures
406
431
  // any affected cache.watch watchers are notified at most once about any
@@ -435,9 +460,9 @@ class ObservableQuery {
435
460
  }
436
461
  },
437
462
  onWatchUpdated: (watch) => {
438
- // Record the DocumentNode associated with any watched query whose
439
- // data were updated by the cache writes above.
440
- updatedQuerySet.add(watch.query);
463
+ if (watch.watcher === this) {
464
+ wasUpdated = true;
465
+ }
441
466
  },
442
467
  });
443
468
  }
@@ -456,28 +481,40 @@ class ObservableQuery {
456
481
  // adjustment to the types on `updateQuery` since that function
457
482
  // expects that the first argument always contains previous result
458
483
  // data, but not `undefined`.
459
- const lastResult = this.getLast("result");
484
+ const lastResult = this.getCurrentResult();
460
485
  const data = updateQuery(lastResult.data, {
461
486
  fetchMoreResult: fetchMoreResult.data,
462
487
  variables: combinedOptions.variables,
463
488
  });
464
- this.reportResult({
465
- ...lastResult,
466
- networkStatus: originalNetworkStatus,
467
- loading: (0, networkStatus_js_1.isNetworkRequestInFlight)(originalNetworkStatus),
468
- data: data,
469
- }, this.variables);
489
+ // was reportResult
490
+ pushNotification({
491
+ kind: "N",
492
+ value: {
493
+ ...lastResult,
494
+ networkStatus: networkStatus_js_1.NetworkStatus.ready,
495
+ // will be overwritten anyways, just here for types sake
496
+ loading: false,
497
+ data: data,
498
+ },
499
+ source: "network",
500
+ });
470
501
  }
471
502
  return this.maskResult(fetchMoreResult);
472
503
  })
473
504
  .finally(() => {
505
+ // call `finalize` a second time in case the `.then` case above was not reached
506
+ finalize();
474
507
  // In case the cache writes above did not generate a broadcast
475
508
  // notification (which would have been intercepted by onWatchUpdated),
476
509
  // likely because the written data were the same as what was already in
477
510
  // the cache, we still want fetchMore to deliver its final loading:false
478
511
  // result with the unchanged data.
479
- if (isCached && !updatedQuerySet.has(this.query)) {
480
- this.reobserveCacheFirst();
512
+ if (isCached && !wasUpdated) {
513
+ pushNotification({
514
+ kind: "N",
515
+ source: "newNetworkStatus",
516
+ value: {},
517
+ }, { shouldEmit: 1 /* EmitBehavior.force */ });
481
518
  }
482
519
  });
483
520
  }
@@ -505,7 +542,7 @@ class ObservableQuery {
505
542
  onError(error);
506
543
  }
507
544
  else {
508
- __DEV__ && invariant_1.invariant.error(72, error);
545
+ __DEV__ && invariant_1.invariant.error(79, error);
509
546
  }
510
547
  return;
511
548
  }
@@ -524,9 +561,13 @@ class ObservableQuery {
524
561
  }
525
562
  };
526
563
  }
527
- /** @internal */
564
+ /**
565
+ * @internal
566
+ *
567
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
568
+ */
528
569
  silentSetOptions(newOptions) {
529
- const mergedOptions = (0, utilities_1.compact)(this.options, newOptions || {});
570
+ const mergedOptions = (0, internal_1.compact)(this.options, newOptions || {});
530
571
  assign(this.options, mergedOptions);
531
572
  }
532
573
  /**
@@ -553,12 +594,12 @@ class ObservableQuery {
553
594
  // If we have no observers, then we don't actually want to make a network
554
595
  // request. As soon as someone observes the query, the request will kick
555
596
  // off. For now, we just store any changes. (See #1077)
556
- return (0, internal_1.toQueryResult)(this.subject.getValue());
597
+ return (0, internal_1.toQueryResult)(this.getCurrentResult());
557
598
  }
558
599
  this.options.variables = variables;
559
600
  // See comment above
560
601
  if (!this.hasObservers()) {
561
- return (0, internal_1.toQueryResult)(this.subject.getValue());
602
+ return (0, internal_1.toQueryResult)(this.getCurrentResult());
562
603
  }
563
604
  return this.reobserve({
564
605
  // Reset options.fetchPolicy to its original value.
@@ -574,12 +615,7 @@ class ObservableQuery {
574
615
  */
575
616
  updateQuery(mapFn) {
576
617
  const { queryManager } = this;
577
- const { result, complete } = queryManager.cache.diff({
578
- query: this.options.query,
579
- variables: this.variables,
580
- returnPartialData: true,
581
- optimistic: false,
582
- });
618
+ const { result, complete } = this.getCacheDiff({ optimistic: false });
583
619
  const newResult = mapFn(result, {
584
620
  variables: this.variables,
585
621
  complete: !!complete,
@@ -642,12 +678,95 @@ class ObservableQuery {
642
678
  }
643
679
  return options.fetchPolicy;
644
680
  }
645
- fetch(options, newNetworkStatus, emitLoadingState, query) {
681
+ fetch(options, networkStatus, fetchQuery) {
646
682
  // TODO Make sure we update the networkStatus (and infer fetchVariables)
647
683
  // before actually committing to the fetch.
684
+ const initialFetchPolicy = this.options.fetchPolicy;
648
685
  const queryInfo = this.queryManager.getOrCreateQuery(this.queryId);
649
686
  queryInfo.setObservableQuery(this);
650
- return this.queryManager.fetchObservableWithInfo(queryInfo, options, newNetworkStatus, query, emitLoadingState);
687
+ options.context ??= {};
688
+ let synchronouslyEmitted = false;
689
+ const onCacheHit = () => {
690
+ synchronouslyEmitted = true;
691
+ };
692
+ const fetchQueryOperator = // we cannot use `tap` here, since it allows only for a "before subscription"
693
+
694
+ // hook with `subscribe` and we care for "directly before and after subscription"
695
+ (source) => new rxjs_1.Observable((subscriber) => {
696
+ try {
697
+ return source.subscribe({
698
+ next(value) {
699
+ synchronouslyEmitted = true;
700
+ subscriber.next(value);
701
+ },
702
+ error: (error) => subscriber.error(error),
703
+ complete: () => subscriber.complete(),
704
+ });
705
+ }
706
+ finally {
707
+ if (!synchronouslyEmitted && this.activeOperations.has(operation)) {
708
+ operation.override = networkStatus;
709
+ this.input.next({
710
+ kind: "N",
711
+ source: "newNetworkStatus",
712
+ value: {
713
+ resetError: true,
714
+ },
715
+ query,
716
+ variables,
717
+ meta: {
718
+ shouldEmit: 3 /* EmitBehavior.networkStatusChange */,
719
+ /*
720
+ * The moment this notification is emitted, `nextFetchPolicy`
721
+ * might already have switched from a `network-only` to a
722
+ * `cache-something` policy, so we want to ensure that the
723
+ * loading state emit doesn't accidentally read from the cache
724
+ * in those cases.
725
+ */
726
+ fetchPolicy: initialFetchPolicy,
727
+ },
728
+ });
729
+ }
730
+ }
731
+ });
732
+ const { observable, fromLink } = this.queryManager.fetchObservableWithInfo(queryInfo, options, { networkStatus, query: fetchQuery, onCacheHit, fetchQueryOperator });
733
+ // track query and variables from the start of the operation
734
+ const { query, variables } = this;
735
+ const operation = {
736
+ abort: () => subscription.unsubscribe(),
737
+ query,
738
+ variables,
739
+ };
740
+ this.activeOperations.add(operation);
741
+ let forceFirstValueEmit = networkStatus == networkStatus_js_1.NetworkStatus.refetch ||
742
+ networkStatus == networkStatus_js_1.NetworkStatus.setVariables;
743
+ const subscription = observable
744
+ .pipe((0, rxjs_1.tap)({
745
+ next: (notification) => {
746
+ if (notification.source === "newNetworkStatus" ||
747
+ (notification.kind === "N" && notification.value.loading)) {
748
+ operation.override = networkStatus;
749
+ }
750
+ else {
751
+ delete operation.override;
752
+ }
753
+ },
754
+ finalize: () => this.activeOperations.delete(operation),
755
+ }))
756
+ .subscribe({
757
+ next: (value) => {
758
+ const meta = {};
759
+ if (forceFirstValueEmit &&
760
+ value.kind === "N" &&
761
+ "loading" in value.value &&
762
+ !value.value.loading) {
763
+ forceFirstValueEmit = false;
764
+ meta.shouldEmit = 1 /* EmitBehavior.force */;
765
+ }
766
+ this.input.next({ ...value, query, variables, meta });
767
+ },
768
+ });
769
+ return { fromLink, subscription, observable };
651
770
  }
652
771
  // Turns polling on or off based on this.options.pollInterval.
653
772
  updatePolling() {
@@ -663,7 +782,7 @@ class ObservableQuery {
663
782
  if (pollingInfo && pollingInfo.interval === pollInterval) {
664
783
  return;
665
784
  }
666
- (0, invariant_1.invariant)(pollInterval, 73);
785
+ (0, invariant_1.invariant)(pollInterval, 80);
667
786
  const info = pollingInfo || (this.pollingInfo = {});
668
787
  info.interval = pollInterval;
669
788
  const maybeFetch = () => {
@@ -702,20 +821,6 @@ class ObservableQuery {
702
821
  delete this.pollingInfo;
703
822
  }
704
823
  }
705
- updateLastResult(newResult, variables = this.variables) {
706
- let error = this.getLastError();
707
- // Preserve this.last.error unless the variables have changed.
708
- if (error && this.last && !(0, equality_1.equal)(variables, this.last.variables)) {
709
- error = void 0;
710
- }
711
- return (this.last = {
712
- result: this.queryManager.assumeImmutableResults ?
713
- newResult
714
- : (0, utilities_1.cloneDeep)(newResult),
715
- variables,
716
- ...(error ? { error } : null),
717
- });
718
- }
719
824
  /**
720
825
  * Reevaluate the query, optionally against new options. New options will be
721
826
  * merged with the current options when given.
@@ -730,19 +835,16 @@ class ObservableQuery {
730
835
  }
731
836
  const useDisposableObservable =
732
837
  // Refetching uses a disposable Observable to allow refetches using different
733
- // options/variables, without permanently altering the options of the
838
+ // options, without permanently altering the options of the
734
839
  // original ObservableQuery.
735
840
  newNetworkStatus === networkStatus_js_1.NetworkStatus.refetch ||
736
- // The fetchMore method does not actually call the reobserve method, but,
737
- // if it did, it would definitely use a disposable Observable.
738
- newNetworkStatus === networkStatus_js_1.NetworkStatus.fetchMore ||
739
841
  // Polling uses a disposable Observable so the polling options (which force
740
842
  // fetchPolicy to be "network-only" or "no-cache") won't override the original options.
741
843
  newNetworkStatus === networkStatus_js_1.NetworkStatus.poll;
742
844
  // Save the old variables, since Object.assign may modify them below.
743
845
  const oldVariables = this.variables;
744
846
  const oldFetchPolicy = this.options.fetchPolicy;
745
- const mergedOptions = (0, utilities_1.compact)(this.options, newOptions || {});
847
+ const mergedOptions = (0, internal_1.compact)(this.options, newOptions || {});
746
848
  const options = useDisposableObservable ?
747
849
  // Disposable Observable fetches receive a shallow copy of this.options
748
850
  // (merged with newOptions), leaving this.options unmodified.
@@ -804,47 +906,27 @@ class ObservableQuery {
804
906
  if (options.fetchPolicy === "standby") {
805
907
  this.cancelPolling();
806
908
  }
807
- this.networkStatus = newNetworkStatus;
808
- this.waitForOwnResult &&= skipCacheDataFor(options.fetchPolicy);
809
- const finishWaitingForOwnResult = () => {
810
- if (this.linkObservable === observable) {
811
- this.waitForOwnResult = false;
812
- }
813
- };
814
- const variables = { ...options.variables };
815
- const { notifyOnNetworkStatusChange = true } = options;
816
- const { observable, fromLink } = this.fetch(options, newNetworkStatus, notifyOnNetworkStatusChange &&
817
- oldNetworkStatus !== newNetworkStatus &&
818
- (0, networkStatus_js_1.isNetworkRequestInFlight)(newNetworkStatus), query);
819
- const observer = {
820
- next: (result) => {
821
- if ((0, equality_1.equal)(this.variables, variables)) {
822
- finishWaitingForOwnResult();
823
- this.reportResult(result, variables);
824
- }
825
- },
826
- error: (error) => {
827
- if ((0, equality_1.equal)(this.variables, variables)) {
828
- finishWaitingForOwnResult();
829
- this.reportError(error, variables);
830
- }
831
- },
832
- };
909
+ this.resubscribeCache();
910
+ const { subscription, observable, fromLink } = this.fetch(options, newNetworkStatus, query);
833
911
  if (!useDisposableObservable && (fromLink || !this.linkSubscription)) {
834
912
  if (this.linkSubscription) {
835
913
  this.linkSubscription.unsubscribe();
836
914
  }
837
- this.linkObservable = observable;
838
- this.linkSubscription = observable.subscribe(observer);
915
+ this.linkSubscription = subscription;
839
916
  }
840
- else {
841
- observable.subscribe(observer);
842
- }
843
- return (0, utilities_1.preventUnhandledRejection)(
917
+ return (0, internal_1.preventUnhandledRejection)(
844
918
  // Note: lastValueFrom will create a separate subscription to the
845
919
  // observable which means that terminating this ObservableQuery will not
846
920
  // cancel the request from the link chain.
847
- (0, rxjs_1.lastValueFrom)(observable, {
921
+ (0, rxjs_1.lastValueFrom)(observable.pipe((0, internal_1.filterMap)((value) => {
922
+ switch (value.kind) {
923
+ case "E":
924
+ throw value.error;
925
+ case "N":
926
+ if (value.source !== "newNetworkStatus")
927
+ return value.value;
928
+ }
929
+ })), {
848
930
  // This default value should only be used when using a `fetchPolicy` of
849
931
  // `standby` since that fetch policy completes without emitting a
850
932
  // result. Since we are converting this to a QueryResult type, we
@@ -852,54 +934,16 @@ class ObservableQuery {
852
934
  defaultValue: { data: undefined },
853
935
  }).then((result) => (0, internal_1.toQueryResult)(this.maskResult(result))));
854
936
  }
855
- // (Re)deliver the current result to this.observers without applying fetch
856
- // policies or making network requests.
857
- observe() {
858
- this.reportResult(
859
- // Passing false is important so that this.getCurrentResult doesn't
860
- // save the fetchMore result as this.lastResult, causing it to be
861
- // ignored due to the this.isDifferentFromLastResult check in
862
- // this.reportResult.
863
- this.getCurrentFullResult(false), this.variables);
864
- }
865
- reportResult(result, variables) {
866
- const lastError = this.getLastError();
867
- const isDifferent = this.isDifferentFromLastResult(result, variables);
868
- // Update the last result even when isDifferentFromLastResult returns false,
869
- // because the query may be using the @nonreactive directive, and we want to
870
- // save the the latest version of any nonreactive subtrees (in case
871
- // getCurrentResult is called), even though we skip broadcasting changes.
872
- this.updateLastResult(result, variables);
873
- this.networkStatus = result.networkStatus;
874
- if (lastError || isDifferent) {
875
- this.subject.next(this.maskResult(result));
876
- }
877
- }
878
- reportError(error, variables) {
879
- // Since we don't get the current result on errors, only the error, we
880
- // must mirror the updates that occur in QueryStore.markQueryError here
881
- const errorResult = {
882
- data: undefined,
883
- partial: true,
884
- ...this.getLastResult(),
885
- error,
886
- networkStatus: networkStatus_js_1.NetworkStatus.error,
887
- loading: false,
888
- };
889
- this.updateLastResult(errorResult, variables);
890
- this.networkStatus = networkStatus_js_1.NetworkStatus.error;
891
- this.last.error = error;
892
- this.subject.next(errorResult);
893
- }
894
937
  hasObservers() {
895
938
  return this.subject.observed;
896
939
  }
897
940
  tearDownQuery() {
898
941
  if (this.isTornDown)
899
942
  return;
900
- if (this.linkObservable && this.linkSubscription) {
943
+ this.resetNotifications();
944
+ this.unsubscribeFromCache?.();
945
+ if (this.linkSubscription) {
901
946
  this.linkSubscription.unsubscribe();
902
- delete this.linkObservable;
903
947
  delete this.linkSubscription;
904
948
  }
905
949
  this.stopPolling();
@@ -908,6 +952,7 @@ class ObservableQuery {
908
952
  this.subscriptions.clear();
909
953
  this.queryManager.removeQuery(this.queryId);
910
954
  this.isTornDown = true;
955
+ this.abortActiveOperations();
911
956
  }
912
957
  transformDocument(document) {
913
958
  return this.queryManager.transform(document);
@@ -927,57 +972,231 @@ class ObservableQuery {
927
972
  }
928
973
  dirty = false;
929
974
  notifyTimeout;
930
- /** @internal */
975
+ /**
976
+ * @internal
977
+ *
978
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
979
+ */
931
980
  resetNotifications() {
932
- this.cancelNotifyTimeout();
933
- this.dirty = false;
934
- }
935
- cancelNotifyTimeout() {
936
981
  if (this.notifyTimeout) {
937
982
  clearTimeout(this.notifyTimeout);
938
983
  this.notifyTimeout = void 0;
939
984
  }
985
+ this.dirty = false;
940
986
  }
941
- /** @internal */
987
+ /**
988
+ * @internal
989
+ *
990
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
991
+ */
942
992
  scheduleNotify() {
943
993
  if (this.dirty)
944
994
  return;
945
995
  this.dirty = true;
946
996
  if (!this.notifyTimeout) {
947
- this.notifyTimeout = setTimeout(() => this.notify(), 0);
997
+ this.notifyTimeout = setTimeout(() => this.notify(true), 0);
948
998
  }
949
999
  }
950
- /** @internal */
951
- notify() {
952
- this.cancelNotifyTimeout();
953
- if (this.dirty) {
954
- if (this.options.fetchPolicy == "cache-only" ||
1000
+ /**
1001
+ * @internal
1002
+ *
1003
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
1004
+ */
1005
+ notify(scheduled = false) {
1006
+ if (!scheduled) {
1007
+ // For queries with client exports or forced resolvers, we don't want to
1008
+ // synchronously reobserve the cache on broadcast,
1009
+ // but actually wait for the `scheduleNotify` timeout triggered by the
1010
+ // `cache.watch` callback from `resubscribeCache`.
1011
+ const info = this.queryManager.getDocumentInfo(this.query);
1012
+ if (info.hasClientExports || info.hasForcedResolvers) {
1013
+ return;
1014
+ }
1015
+ }
1016
+ const { dirty } = this;
1017
+ this.resetNotifications();
1018
+ if (dirty &&
1019
+ (this.options.fetchPolicy == "cache-only" ||
955
1020
  this.options.fetchPolicy == "cache-and-network" ||
956
- !(0, networkStatus_js_1.isNetworkRequestInFlight)(this.networkStatus)) {
957
- const diff = this.queryInfo.getDiff();
958
- if (diff.fromOptimisticTransaction) {
959
- // If this diff came from an optimistic transaction, deliver the
960
- // current cache data to the ObservableQuery, but don't perform a
961
- // reobservation, since oq.reobserveCacheFirst might make a network
962
- // request, and we never want to trigger network requests in the
963
- // middle of optimistic updates.
964
- this.observe();
965
- }
966
- else {
967
- // Otherwise, make the ObservableQuery "reobserve" the latest data
968
- // using a temporary fetch policy of "cache-first", so complete cache
969
- // results have a chance to be delivered without triggering additional
970
- // network requests, even when options.fetchPolicy is "network-only"
971
- // or "cache-and-network". All other fetch policies are preserved by
972
- // this method, and are handled by calling oq.reobserve(). If this
973
- // reobservation is spurious, isDifferentFromLastResult still has a
974
- // chance to catch it before delivery to ObservableQuery subscribers.
975
- this.reobserveCacheFirst();
976
- }
1021
+ !this.activeOperations.size)) {
1022
+ const diff = this.getCacheDiff();
1023
+ if (
1024
+ // `fromOptimisticTransaction` is not avaiable through the `cache.diff`
1025
+ // code path, so we need to check it this way
1026
+ (0, equality_1.equal)(diff.result, this.getCacheDiff({ optimistic: false }).result)) {
1027
+ //If this diff did not come from an optimistic transaction
1028
+ // make the ObservableQuery "reobserve" the latest data
1029
+ // using a temporary fetch policy of "cache-first", so complete cache
1030
+ // results have a chance to be delivered without triggering additional
1031
+ // network requests, even when options.fetchPolicy is "network-only"
1032
+ // or "cache-and-network". All other fetch policies are preserved by
1033
+ // this method, and are handled by calling oq.reobserve(). If this
1034
+ // reobservation is spurious, distinctUntilChanged still has a
1035
+ // chance to catch it before delivery to ObservableQuery subscribers.
1036
+ this.reobserveCacheFirst();
1037
+ }
1038
+ else {
1039
+ // If this diff came from an optimistic transaction, deliver the
1040
+ // current cache data to the ObservableQuery, but don't perform a
1041
+ // reobservation, since oq.reobserveCacheFirst might make a network
1042
+ // request, and we never want to trigger network requests in the
1043
+ // middle of optimistic updates.
1044
+ this.input.next({
1045
+ kind: "N",
1046
+ value: {
1047
+ data: diff.result,
1048
+ networkStatus: networkStatus_js_1.NetworkStatus.ready,
1049
+ loading: false,
1050
+ error: undefined,
1051
+ partial: !diff.complete,
1052
+ },
1053
+ source: "cache",
1054
+ query: this.query,
1055
+ variables: this.variables,
1056
+ meta: {},
1057
+ });
977
1058
  }
978
1059
  }
979
- this.dirty = false;
980
1060
  }
1061
+ activeOperations = new Set();
1062
+ pushOperation(networkStatus) {
1063
+ let aborted = false;
1064
+ // track query and variables from the start of the operation
1065
+ const { query, variables } = this;
1066
+ const finalize = () => {
1067
+ this.activeOperations.delete(operation);
1068
+ };
1069
+ const operation = {
1070
+ override: networkStatus,
1071
+ abort: () => {
1072
+ aborted = true;
1073
+ finalize();
1074
+ },
1075
+ query,
1076
+ variables,
1077
+ };
1078
+ this.activeOperations.add(operation);
1079
+ return {
1080
+ finalize,
1081
+ pushNotification: (notification, additionalMeta) => {
1082
+ if (!aborted) {
1083
+ this.input.next({
1084
+ ...notification,
1085
+ query,
1086
+ variables,
1087
+ meta: { ...additionalMeta },
1088
+ });
1089
+ }
1090
+ },
1091
+ };
1092
+ }
1093
+ calculateNetworkStatus(baseNetworkStatus) {
1094
+ // in the future, this could be more complex logic, e.g. "refetch" and
1095
+ // "fetchMore" having priority over "polling" or "loading" network statuses
1096
+ // as for now we just take the "latest" operation that is still active,
1097
+ // as that lines up best with previous behavior[]
1098
+ const operation = Array.from(this.activeOperations.values()).findLast((operation) => isEqualQuery(operation, this) && operation.override !== undefined);
1099
+ return operation?.override ?? baseNetworkStatus;
1100
+ }
1101
+ abortActiveOperations() {
1102
+ this.activeOperations.forEach((operation) => operation.abort());
1103
+ }
1104
+ /**
1105
+ * @internal
1106
+ * Called from `clearStore`.
1107
+ * * resets the query to its initial state
1108
+ * * cancels all active operations and their subscriptions
1109
+ *
1110
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
1111
+ */
1112
+ reset() {
1113
+ // exception for cache-only queries - we reset them into a "ready" state
1114
+ // as we won't trigger a refetch for them
1115
+ const resetToEmpty = this.options.fetchPolicy === "cache-only";
1116
+ this.setResult(resetToEmpty ? empty : uninitialized, {
1117
+ shouldEmit: resetToEmpty ? 1 /* EmitBehavior.force */ : 2 /* EmitBehavior.never */,
1118
+ });
1119
+ this.abortActiveOperations();
1120
+ }
1121
+ /**
1122
+ * @internal
1123
+ *
1124
+ * @deprecated This is an internal API and should not be used directly. This can be removed or changed at any time.
1125
+ */
1126
+ setResult(result, additionalMeta) {
1127
+ this.input.next({
1128
+ source: "setResult",
1129
+ kind: "N",
1130
+ value: result,
1131
+ query: this.query,
1132
+ variables: this.variables,
1133
+ meta: { ...additionalMeta },
1134
+ });
1135
+ }
1136
+ operator = (0, internal_1.filterMap)((notification) => {
1137
+ const { query, variables, meta } = notification;
1138
+ if (notification.source === "setResult") {
1139
+ return { query, variables, result: notification.value, meta };
1140
+ }
1141
+ if (notification.kind === "C" || !isEqualQuery(notification, this)) {
1142
+ return;
1143
+ }
1144
+ let result;
1145
+ const previous = this.subject.getValue();
1146
+ if (notification.source === "cache") {
1147
+ result = notification.value;
1148
+ if (result.networkStatus === networkStatus_js_1.NetworkStatus.ready &&
1149
+ result.partial &&
1150
+ (!this.options.returnPartialData ||
1151
+ previous.result.networkStatus === networkStatus_js_1.NetworkStatus.error) &&
1152
+ this.options.fetchPolicy !== "cache-only") {
1153
+ return;
1154
+ }
1155
+ }
1156
+ else if (notification.source === "network") {
1157
+ if (this.waitForNetworkResult) {
1158
+ this.waitForNetworkResult = false;
1159
+ this.resubscribeCache();
1160
+ }
1161
+ result =
1162
+ notification.kind === "E" ?
1163
+ {
1164
+ data: undefined,
1165
+ partial: true,
1166
+ ...(isEqualQuery(previous, notification) ? previous.result : {}),
1167
+ error: notification.error,
1168
+ networkStatus: networkStatus_js_1.NetworkStatus.error,
1169
+ loading: false,
1170
+ }
1171
+ : notification.value;
1172
+ if (result.error) {
1173
+ meta.shouldEmit = 1 /* EmitBehavior.force */;
1174
+ }
1175
+ }
1176
+ else if (notification.source === "newNetworkStatus") {
1177
+ const baseResult = isEqualQuery(previous, notification) ?
1178
+ previous.result
1179
+ : this.getInitialResult(meta.fetchPolicy);
1180
+ const { resetError } = notification.value;
1181
+ const error = resetError ? undefined : baseResult.error;
1182
+ const networkStatus = error ? networkStatus_js_1.NetworkStatus.error : networkStatus_js_1.NetworkStatus.ready;
1183
+ result = {
1184
+ ...baseResult,
1185
+ error,
1186
+ networkStatus,
1187
+ };
1188
+ }
1189
+ // every code path until here should have either returned or set a result,
1190
+ // but typescript needs a little help
1191
+ (0, invariant_1.invariant)(result);
1192
+ // normalize result shape
1193
+ if (!result.error)
1194
+ delete result.error;
1195
+ result.networkStatus = this.calculateNetworkStatus(result.networkStatus);
1196
+ result.loading = (0, networkStatus_js_1.isNetworkRequestInFlight)(result.networkStatus);
1197
+ result = this.maskResult(result);
1198
+ return { query, variables, result, meta };
1199
+ });
981
1200
  // Reobserve with fetchPolicy effectively set to "cache-first", triggering
982
1201
  // delivery of any new data from the cache, possibly falling back to the network
983
1202
  // if any cache data are missing. This allows _complete_ cache results to be
@@ -1015,12 +1234,10 @@ class ObservableQuery {
1015
1234
  exports.ObservableQuery = ObservableQuery;
1016
1235
  function logMissingFieldErrors(missing) {
1017
1236
  if (environment_1.__DEV__ && missing) {
1018
- __DEV__ && invariant_1.invariant.debug(74, missing);
1237
+ __DEV__ && invariant_1.invariant.debug(81, missing);
1019
1238
  }
1020
1239
  }
1021
- function skipCacheDataFor(fetchPolicy /* `undefined` would mean `"cache-first"` */) {
1022
- return (fetchPolicy === "network-only" ||
1023
- fetchPolicy === "no-cache" ||
1024
- fetchPolicy === "standby");
1240
+ function isEqualQuery(a, b) {
1241
+ return !!(a && b && a.query === b.query && (0, equality_1.equal)(a.variables, b.variables));
1025
1242
  }
1026
1243
  //# sourceMappingURL=ObservableQuery.cjs.map