@apollo/client 3.8.0-alpha.9 → 3.8.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/apollo-client.cjs +1030 -673
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs +35 -31
  5. package/cache/cache.cjs.map +1 -1
  6. package/cache/cache.cjs.native.js +35 -31
  7. package/cache/core/cache.d.ts +5 -4
  8. package/cache/core/cache.d.ts.map +1 -1
  9. package/cache/core/cache.js +1 -0
  10. package/cache/core/cache.js.map +1 -1
  11. package/cache/core/types/Cache.d.ts +2 -2
  12. package/cache/core/types/Cache.d.ts.map +1 -1
  13. package/cache/core/types/Cache.js.map +1 -1
  14. package/cache/core/types/DataProxy.d.ts +4 -4
  15. package/cache/core/types/DataProxy.d.ts.map +1 -1
  16. package/cache/core/types/DataProxy.js.map +1 -1
  17. package/cache/core/types/common.d.ts +3 -3
  18. package/cache/core/types/common.d.ts.map +1 -1
  19. package/cache/core/types/common.js.map +1 -1
  20. package/cache/inmemory/entityStore.d.ts +5 -5
  21. package/cache/inmemory/entityStore.d.ts.map +1 -1
  22. package/cache/inmemory/entityStore.js +2 -2
  23. package/cache/inmemory/entityStore.js.map +1 -1
  24. package/cache/inmemory/fragmentRegistry.d.ts +1 -1
  25. package/cache/inmemory/fragmentRegistry.d.ts.map +1 -1
  26. package/cache/inmemory/fragmentRegistry.js.map +1 -1
  27. package/cache/inmemory/helpers.d.ts +6 -5
  28. package/cache/inmemory/helpers.d.ts.map +1 -1
  29. package/cache/inmemory/helpers.js.map +1 -1
  30. package/cache/inmemory/inMemoryCache.d.ts +9 -7
  31. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  32. package/cache/inmemory/inMemoryCache.js +14 -15
  33. package/cache/inmemory/inMemoryCache.js.map +1 -1
  34. package/cache/inmemory/key-extractor.d.ts +1 -1
  35. package/cache/inmemory/key-extractor.d.ts.map +1 -1
  36. package/cache/inmemory/key-extractor.js +2 -2
  37. package/cache/inmemory/key-extractor.js.map +1 -1
  38. package/cache/inmemory/policies.d.ts +7 -6
  39. package/cache/inmemory/policies.d.ts.map +1 -1
  40. package/cache/inmemory/policies.js +6 -6
  41. package/cache/inmemory/policies.js.map +1 -1
  42. package/cache/inmemory/reactiveVars.d.ts +1 -1
  43. package/cache/inmemory/reactiveVars.d.ts.map +1 -1
  44. package/cache/inmemory/reactiveVars.js.map +1 -1
  45. package/cache/inmemory/readFromStore.d.ts +6 -6
  46. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  47. package/cache/inmemory/readFromStore.js +10 -5
  48. package/cache/inmemory/readFromStore.js.map +1 -1
  49. package/cache/inmemory/types.d.ts +6 -6
  50. package/cache/inmemory/types.d.ts.map +1 -1
  51. package/cache/inmemory/types.js.map +1 -1
  52. package/cache/inmemory/writeToStore.d.ts +6 -6
  53. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  54. package/cache/inmemory/writeToStore.js +7 -8
  55. package/cache/inmemory/writeToStore.js.map +1 -1
  56. package/config/jest/setup.d.ts +1 -0
  57. package/config/jest/setup.d.ts.map +1 -1
  58. package/config/jest/setup.js +3 -0
  59. package/config/jest/setup.js.map +1 -1
  60. package/core/ApolloClient.d.ts +13 -10
  61. package/core/ApolloClient.d.ts.map +1 -1
  62. package/core/ApolloClient.js +18 -16
  63. package/core/ApolloClient.js.map +1 -1
  64. package/core/DocumentTransform.d.ts +24 -0
  65. package/core/DocumentTransform.d.ts.map +1 -0
  66. package/core/DocumentTransform.js +68 -0
  67. package/core/DocumentTransform.js.map +1 -0
  68. package/core/LocalState.d.ts +7 -9
  69. package/core/LocalState.d.ts.map +1 -1
  70. package/core/LocalState.js +6 -10
  71. package/core/LocalState.js.map +1 -1
  72. package/core/ObservableQuery.d.ts +11 -8
  73. package/core/ObservableQuery.d.ts.map +1 -1
  74. package/core/ObservableQuery.js +48 -28
  75. package/core/ObservableQuery.js.map +1 -1
  76. package/core/QueryInfo.d.ts +9 -9
  77. package/core/QueryInfo.d.ts.map +1 -1
  78. package/core/QueryInfo.js.map +1 -1
  79. package/core/QueryManager.d.ts +15 -11
  80. package/core/QueryManager.d.ts.map +1 -1
  81. package/core/QueryManager.js +115 -108
  82. package/core/QueryManager.js.map +1 -1
  83. package/core/core.cjs +332 -172
  84. package/core/core.cjs.map +1 -1
  85. package/core/core.cjs.native.js +332 -172
  86. package/core/equalByQuery.d.ts +4 -0
  87. package/core/equalByQuery.d.ts.map +1 -0
  88. package/{react/hooks/compareResults.js → core/equalByQuery.js} +14 -10
  89. package/core/equalByQuery.js.map +1 -0
  90. package/core/index.d.ts +2 -1
  91. package/core/index.d.ts.map +1 -1
  92. package/core/index.js +2 -1
  93. package/core/index.js.map +1 -1
  94. package/core/networkStatus.d.ts +1 -0
  95. package/core/networkStatus.d.ts.map +1 -1
  96. package/core/networkStatus.js +3 -0
  97. package/core/networkStatus.js.map +1 -1
  98. package/core/types.d.ts +14 -14
  99. package/core/types.d.ts.map +1 -1
  100. package/core/types.js.map +1 -1
  101. package/core/watchQueryOptions.d.ts +6 -7
  102. package/core/watchQueryOptions.d.ts.map +1 -1
  103. package/core/watchQueryOptions.js.map +1 -1
  104. package/dev/dev.cjs +642 -0
  105. package/dev/dev.cjs.map +1 -0
  106. package/dev/dev.cjs.native.js +642 -0
  107. package/dev/index.d.ts +4 -0
  108. package/dev/index.d.ts.map +1 -0
  109. package/dev/index.js +4 -0
  110. package/dev/index.js.map +1 -0
  111. package/dev/loadDevMessages.d.ts +2 -0
  112. package/dev/loadDevMessages.d.ts.map +1 -0
  113. package/dev/loadDevMessages.js +6 -0
  114. package/dev/loadDevMessages.js.map +1 -0
  115. package/dev/loadErrorMessageHandler.d.ts +3 -0
  116. package/dev/loadErrorMessageHandler.d.ts.map +1 -0
  117. package/dev/loadErrorMessageHandler.js +26 -0
  118. package/dev/loadErrorMessageHandler.js.map +1 -0
  119. package/dev/loadErrorMessages.d.ts +2 -0
  120. package/dev/loadErrorMessages.d.ts.map +1 -0
  121. package/dev/loadErrorMessages.js +6 -0
  122. package/dev/loadErrorMessages.js.map +1 -0
  123. package/dev/package.json +8 -0
  124. package/errors/errors.cjs +17 -17
  125. package/errors/errors.cjs.map +1 -1
  126. package/errors/errors.cjs.native.js +17 -17
  127. package/errors/index.d.ts +26 -10
  128. package/errors/index.d.ts.map +1 -1
  129. package/errors/index.js +17 -19
  130. package/errors/index.js.map +1 -1
  131. package/invariantErrorCodes.d.ts +13 -0
  132. package/invariantErrorCodes.d.ts.map +1 -0
  133. package/invariantErrorCodes.js +331 -144
  134. package/invariantErrorCodes.js.map +1 -0
  135. package/link/batch/batchLink.d.ts +4 -3
  136. package/link/batch/batchLink.d.ts.map +1 -1
  137. package/link/batch/batchLink.js.map +1 -1
  138. package/link/batch/batching.d.ts +1 -1
  139. package/link/batch/batching.d.ts.map +1 -1
  140. package/link/batch/batching.js.map +1 -1
  141. package/link/batch-http/batch-http.cjs +23 -2
  142. package/link/batch-http/batch-http.cjs.map +1 -1
  143. package/link/batch-http/batch-http.cjs.native.js +23 -2
  144. package/link/batch-http/batchHttpLink.d.ts +3 -2
  145. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  146. package/link/batch-http/batchHttpLink.js +7 -2
  147. package/link/batch-http/batchHttpLink.js.map +1 -1
  148. package/link/context/index.d.ts +3 -2
  149. package/link/context/index.d.ts.map +1 -1
  150. package/link/context/index.js.map +1 -1
  151. package/link/core/ApolloLink.d.ts +3 -2
  152. package/link/core/ApolloLink.d.ts.map +1 -1
  153. package/link/core/ApolloLink.js +3 -13
  154. package/link/core/ApolloLink.js.map +1 -1
  155. package/link/core/core.cjs +2 -12
  156. package/link/core/core.cjs.map +1 -1
  157. package/link/core/core.cjs.native.js +2 -12
  158. package/link/core/types.d.ts +8 -3
  159. package/link/core/types.d.ts.map +1 -1
  160. package/link/core/types.js.map +1 -1
  161. package/link/error/index.d.ts +4 -3
  162. package/link/error/index.d.ts.map +1 -1
  163. package/link/error/index.js.map +1 -1
  164. package/link/http/HttpLink.d.ts +3 -2
  165. package/link/http/HttpLink.d.ts.map +1 -1
  166. package/link/http/HttpLink.js.map +1 -1
  167. package/link/http/checkFetcher.js +2 -2
  168. package/link/http/checkFetcher.js.map +1 -1
  169. package/link/http/createHttpLink.d.ts +1 -1
  170. package/link/http/createHttpLink.d.ts.map +1 -1
  171. package/link/http/createHttpLink.js +21 -20
  172. package/link/http/createHttpLink.js.map +1 -1
  173. package/link/http/http.cjs +73 -43
  174. package/link/http/http.cjs.map +1 -1
  175. package/link/http/http.cjs.native.js +73 -43
  176. package/link/http/iterators/nodeStream.d.ts +1 -1
  177. package/link/http/iterators/nodeStream.d.ts.map +1 -1
  178. package/link/http/iterators/nodeStream.js.map +1 -1
  179. package/link/http/parseAndCheckHttpResponse.d.ts +2 -2
  180. package/link/http/parseAndCheckHttpResponse.d.ts.map +1 -1
  181. package/link/http/parseAndCheckHttpResponse.js +47 -26
  182. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  183. package/link/http/responseIterator.d.ts +1 -1
  184. package/link/http/responseIterator.d.ts.map +1 -1
  185. package/link/http/responseIterator.js.map +1 -1
  186. package/link/http/rewriteURIForGET.d.ts +1 -1
  187. package/link/http/rewriteURIForGET.d.ts.map +1 -1
  188. package/link/http/rewriteURIForGET.js.map +1 -1
  189. package/link/http/selectHttpOptionsAndBody.d.ts +3 -2
  190. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  191. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  192. package/link/http/selectURI.d.ts +1 -1
  193. package/link/http/selectURI.d.ts.map +1 -1
  194. package/link/http/selectURI.js.map +1 -1
  195. package/link/http/serializeFetchParameter.d.ts +1 -1
  196. package/link/http/serializeFetchParameter.d.ts.map +1 -1
  197. package/link/http/serializeFetchParameter.js +2 -2
  198. package/link/http/serializeFetchParameter.js.map +1 -1
  199. package/link/persisted-queries/index.d.ts +4 -3
  200. package/link/persisted-queries/index.d.ts.map +1 -1
  201. package/link/persisted-queries/index.js +16 -20
  202. package/link/persisted-queries/index.js.map +1 -1
  203. package/link/persisted-queries/persisted-queries.cjs +15 -19
  204. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  205. package/link/persisted-queries/persisted-queries.cjs.native.js +15 -19
  206. package/link/remove-typename/index.d.ts +2 -0
  207. package/link/remove-typename/index.d.ts.map +1 -0
  208. package/link/remove-typename/index.js +2 -0
  209. package/link/remove-typename/index.js.map +1 -0
  210. package/link/remove-typename/package.json +8 -0
  211. package/link/remove-typename/remove-typename.cjs +82 -0
  212. package/link/remove-typename/remove-typename.cjs.map +1 -0
  213. package/link/remove-typename/remove-typename.cjs.native.js +82 -0
  214. package/link/remove-typename/removeTypenameFromVariables.d.ts +11 -0
  215. package/link/remove-typename/removeTypenameFromVariables.d.ts.map +1 -0
  216. package/link/remove-typename/removeTypenameFromVariables.js +74 -0
  217. package/link/remove-typename/removeTypenameFromVariables.js.map +1 -0
  218. package/link/retry/delayFunction.d.ts +1 -1
  219. package/link/retry/delayFunction.d.ts.map +1 -1
  220. package/link/retry/delayFunction.js.map +1 -1
  221. package/link/retry/retryFunction.d.ts +1 -1
  222. package/link/retry/retryFunction.d.ts.map +1 -1
  223. package/link/retry/retryFunction.js.map +1 -1
  224. package/link/retry/retryLink.d.ts +4 -3
  225. package/link/retry/retryLink.d.ts.map +1 -1
  226. package/link/retry/retryLink.js.map +1 -1
  227. package/link/schema/index.d.ts +3 -2
  228. package/link/schema/index.d.ts.map +1 -1
  229. package/link/schema/index.js.map +1 -1
  230. package/link/subscriptions/index.d.ts +2 -1
  231. package/link/subscriptions/index.d.ts.map +1 -1
  232. package/link/subscriptions/index.js +8 -3
  233. package/link/subscriptions/index.js.map +1 -1
  234. package/link/subscriptions/subscriptions.cjs +8 -3
  235. package/link/subscriptions/subscriptions.cjs.map +1 -1
  236. package/link/subscriptions/subscriptions.cjs.native.js +8 -3
  237. package/link/utils/createOperation.d.ts +1 -1
  238. package/link/utils/createOperation.d.ts.map +1 -1
  239. package/link/utils/createOperation.js.map +1 -1
  240. package/link/utils/filterOperationVariables.d.ts +5 -0
  241. package/link/utils/filterOperationVariables.d.ts.map +1 -0
  242. package/link/utils/filterOperationVariables.js +18 -0
  243. package/link/utils/filterOperationVariables.js.map +1 -0
  244. package/link/utils/index.d.ts +1 -0
  245. package/link/utils/index.d.ts.map +1 -1
  246. package/link/utils/index.js +1 -0
  247. package/link/utils/index.js.map +1 -1
  248. package/link/utils/throwServerError.d.ts +1 -1
  249. package/link/utils/throwServerError.d.ts.map +1 -1
  250. package/link/utils/throwServerError.js.map +1 -1
  251. package/link/utils/toPromise.d.ts +1 -1
  252. package/link/utils/toPromise.d.ts.map +1 -1
  253. package/link/utils/toPromise.js +1 -1
  254. package/link/utils/toPromise.js.map +1 -1
  255. package/link/utils/transformOperation.d.ts +1 -1
  256. package/link/utils/transformOperation.d.ts.map +1 -1
  257. package/link/utils/transformOperation.js.map +1 -1
  258. package/link/utils/utils.cjs +20 -2
  259. package/link/utils/utils.cjs.map +1 -1
  260. package/link/utils/utils.cjs.native.js +20 -2
  261. package/link/utils/validateOperation.d.ts +1 -1
  262. package/link/utils/validateOperation.d.ts.map +1 -1
  263. package/link/utils/validateOperation.js +2 -2
  264. package/link/utils/validateOperation.js.map +1 -1
  265. package/link/ws/index.d.ts +5 -3
  266. package/link/ws/index.d.ts.map +1 -1
  267. package/link/ws/index.js.map +1 -1
  268. package/package.json +36 -32
  269. package/react/cache/QueryReference.d.ts +34 -0
  270. package/react/cache/QueryReference.d.ts.map +1 -0
  271. package/react/cache/QueryReference.js +107 -0
  272. package/react/cache/QueryReference.js.map +1 -0
  273. package/react/cache/SuspenseCache.d.ts +10 -13
  274. package/react/cache/SuspenseCache.d.ts.map +1 -1
  275. package/react/cache/SuspenseCache.js +18 -41
  276. package/react/cache/SuspenseCache.js.map +1 -1
  277. package/react/cache/types.d.ts +2 -0
  278. package/react/cache/types.d.ts.map +1 -0
  279. package/react/cache/types.js +2 -0
  280. package/react/cache/types.js.map +1 -0
  281. package/react/components/Mutation.d.ts +2 -2
  282. package/react/components/Mutation.d.ts.map +1 -1
  283. package/react/components/Mutation.js.map +1 -1
  284. package/react/components/Query.d.ts +2 -2
  285. package/react/components/Query.d.ts.map +1 -1
  286. package/react/components/Query.js.map +1 -1
  287. package/react/components/Subscription.d.ts +2 -2
  288. package/react/components/Subscription.d.ts.map +1 -1
  289. package/react/components/Subscription.js.map +1 -1
  290. package/react/components/types.d.ts +4 -4
  291. package/react/components/types.d.ts.map +1 -1
  292. package/react/components/types.js.map +1 -1
  293. package/react/context/ApolloConsumer.d.ts +1 -1
  294. package/react/context/ApolloConsumer.d.ts.map +1 -1
  295. package/react/context/ApolloConsumer.js +2 -3
  296. package/react/context/ApolloConsumer.js.map +1 -1
  297. package/react/context/ApolloContext.d.ts +10 -3
  298. package/react/context/ApolloContext.d.ts.map +1 -1
  299. package/react/context/ApolloContext.js +10 -8
  300. package/react/context/ApolloContext.js.map +1 -1
  301. package/react/context/ApolloProvider.d.ts +2 -2
  302. package/react/context/ApolloProvider.d.ts.map +1 -1
  303. package/react/context/ApolloProvider.js +8 -13
  304. package/react/context/ApolloProvider.js.map +1 -1
  305. package/react/context/context.cjs +18 -22
  306. package/react/context/context.cjs.map +1 -1
  307. package/react/context/context.cjs.native.js +18 -22
  308. package/react/context/index.d.ts +1 -1
  309. package/react/context/index.d.ts.map +1 -1
  310. package/react/context/index.js +1 -1
  311. package/react/context/index.js.map +1 -1
  312. package/react/hoc/graphql.d.ts +3 -3
  313. package/react/hoc/graphql.d.ts.map +1 -1
  314. package/react/hoc/graphql.js.map +1 -1
  315. package/react/hoc/hoc-utils.d.ts +2 -2
  316. package/react/hoc/hoc-utils.d.ts.map +1 -1
  317. package/react/hoc/hoc-utils.js +2 -3
  318. package/react/hoc/hoc-utils.js.map +1 -1
  319. package/react/hoc/hoc.cjs +2 -4
  320. package/react/hoc/hoc.cjs.map +1 -1
  321. package/react/hoc/hoc.cjs.native.js +2 -4
  322. package/react/hoc/mutation-hoc.d.ts +4 -4
  323. package/react/hoc/mutation-hoc.d.ts.map +1 -1
  324. package/react/hoc/mutation-hoc.js.map +1 -1
  325. package/react/hoc/query-hoc.d.ts +2 -2
  326. package/react/hoc/query-hoc.d.ts.map +1 -1
  327. package/react/hoc/query-hoc.js.map +1 -1
  328. package/react/hoc/subscription-hoc.d.ts +2 -2
  329. package/react/hoc/subscription-hoc.d.ts.map +1 -1
  330. package/react/hoc/subscription-hoc.js.map +1 -1
  331. package/react/hoc/types.d.ts +4 -4
  332. package/react/hoc/types.d.ts.map +1 -1
  333. package/react/hoc/types.js.map +1 -1
  334. package/react/hoc/withApollo.d.ts +1 -1
  335. package/react/hoc/withApollo.d.ts.map +1 -1
  336. package/react/hoc/withApollo.js +2 -3
  337. package/react/hoc/withApollo.js.map +1 -1
  338. package/react/hooks/hooks.cjs +223 -219
  339. package/react/hooks/hooks.cjs.map +1 -1
  340. package/react/hooks/hooks.cjs.native.js +223 -219
  341. package/react/hooks/index.d.ts +2 -1
  342. package/react/hooks/index.d.ts.map +1 -1
  343. package/react/hooks/index.js +2 -1
  344. package/react/hooks/index.js.map +1 -1
  345. package/react/hooks/internal/__use.d.ts +4 -0
  346. package/react/hooks/internal/__use.d.ts.map +1 -0
  347. package/react/hooks/internal/__use.js +17 -0
  348. package/react/hooks/internal/__use.js.map +1 -0
  349. package/react/hooks/internal/index.d.ts +2 -0
  350. package/react/hooks/internal/index.d.ts.map +1 -1
  351. package/react/hooks/internal/index.js +2 -0
  352. package/react/hooks/internal/index.js.map +1 -1
  353. package/react/hooks/internal/useDeepMemo.d.ts +1 -1
  354. package/react/hooks/internal/useDeepMemo.d.ts.map +1 -1
  355. package/react/hooks/internal/useDeepMemo.js.map +1 -1
  356. package/react/hooks/internal/useIsomorphicLayoutEffect.d.ts.map +1 -1
  357. package/react/hooks/internal/useIsomorphicLayoutEffect.js +2 -2
  358. package/react/hooks/internal/useIsomorphicLayoutEffect.js.map +1 -1
  359. package/react/hooks/internal/useStrictModeSafeCleanupEffect.d.ts +2 -0
  360. package/react/hooks/internal/useStrictModeSafeCleanupEffect.d.ts.map +1 -0
  361. package/react/hooks/internal/useStrictModeSafeCleanupEffect.js +11 -0
  362. package/react/hooks/internal/useStrictModeSafeCleanupEffect.js.map +1 -0
  363. package/react/hooks/useApolloClient.d.ts +1 -1
  364. package/react/hooks/useApolloClient.d.ts.map +1 -1
  365. package/react/hooks/useApolloClient.js +2 -4
  366. package/react/hooks/useApolloClient.js.map +1 -1
  367. package/react/hooks/useBackgroundQuery.d.ts +18 -0
  368. package/react/hooks/useBackgroundQuery.d.ts.map +1 -0
  369. package/react/hooks/useBackgroundQuery.js +69 -0
  370. package/react/hooks/useBackgroundQuery.js.map +1 -0
  371. package/react/hooks/useFragment.d.ts +14 -9
  372. package/react/hooks/useFragment.d.ts.map +1 -1
  373. package/react/hooks/useFragment.js +2 -2
  374. package/react/hooks/useFragment.js.map +1 -1
  375. package/react/hooks/useLazyQuery.d.ts +4 -4
  376. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  377. package/react/hooks/useLazyQuery.js +13 -22
  378. package/react/hooks/useLazyQuery.js.map +1 -1
  379. package/react/hooks/useMutation.d.ts +4 -4
  380. package/react/hooks/useMutation.d.ts.map +1 -1
  381. package/react/hooks/useMutation.js +1 -1
  382. package/react/hooks/useMutation.js.map +1 -1
  383. package/react/hooks/useQuery.d.ts +6 -6
  384. package/react/hooks/useQuery.d.ts.map +1 -1
  385. package/react/hooks/useQuery.js +29 -28
  386. package/react/hooks/useQuery.js.map +1 -1
  387. package/react/hooks/useReactiveVar.d.ts +1 -1
  388. package/react/hooks/useReactiveVar.d.ts.map +1 -1
  389. package/react/hooks/useReactiveVar.js.map +1 -1
  390. package/react/hooks/useSubscription.d.ts +4 -4
  391. package/react/hooks/useSubscription.d.ts.map +1 -1
  392. package/react/hooks/useSubscription.js +27 -19
  393. package/react/hooks/useSubscription.js.map +1 -1
  394. package/react/hooks/useSuspenseCache.d.ts +1 -1
  395. package/react/hooks/useSuspenseCache.d.ts.map +1 -1
  396. package/react/hooks/useSuspenseCache.js +2 -4
  397. package/react/hooks/useSuspenseCache.js.map +1 -1
  398. package/react/hooks/useSuspenseQuery.d.ts +39 -7
  399. package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
  400. package/react/hooks/useSuspenseQuery.js +68 -149
  401. package/react/hooks/useSuspenseQuery.js.map +1 -1
  402. package/react/hooks/useSyncExternalStore.js +1 -1
  403. package/react/index.d.ts +1 -1
  404. package/react/index.d.ts.map +1 -1
  405. package/react/index.js +1 -1
  406. package/react/index.js.map +1 -1
  407. package/react/parser/index.d.ts +1 -1
  408. package/react/parser/index.d.ts.map +1 -1
  409. package/react/parser/index.js +20 -17
  410. package/react/parser/index.js.map +1 -1
  411. package/react/parser/parser.cjs +19 -16
  412. package/react/parser/parser.cjs.map +1 -1
  413. package/react/parser/parser.cjs.native.js +19 -16
  414. package/react/react.cjs +116 -35
  415. package/react/react.cjs.map +1 -1
  416. package/react/react.cjs.native.js +116 -35
  417. package/react/ssr/RenderPromises.d.ts +2 -2
  418. package/react/ssr/RenderPromises.d.ts.map +1 -1
  419. package/react/ssr/RenderPromises.js.map +1 -1
  420. package/react/ssr/renderToStringWithData.d.ts +1 -1
  421. package/react/ssr/renderToStringWithData.d.ts.map +1 -1
  422. package/react/ssr/renderToStringWithData.js.map +1 -1
  423. package/react/types/types.d.ts +10 -13
  424. package/react/types/types.d.ts.map +1 -1
  425. package/react/types/types.js.map +1 -1
  426. package/testing/core/core.cjs +1 -1
  427. package/testing/core/core.cjs.map +1 -1
  428. package/testing/core/core.cjs.native.js +1 -1
  429. package/testing/core/mocking/mockClient.d.ts +2 -2
  430. package/testing/core/mocking/mockClient.d.ts.map +1 -1
  431. package/testing/core/mocking/mockClient.js.map +1 -1
  432. package/testing/core/mocking/mockLink.d.ts +2 -1
  433. package/testing/core/mocking/mockLink.d.ts.map +1 -1
  434. package/testing/core/mocking/mockLink.js +3 -3
  435. package/testing/core/mocking/mockLink.js.map +1 -1
  436. package/testing/core/mocking/mockQueryManager.d.ts +1 -1
  437. package/testing/core/mocking/mockQueryManager.d.ts.map +1 -1
  438. package/testing/core/mocking/mockQueryManager.js.map +1 -1
  439. package/testing/core/mocking/mockSubscriptionLink.d.ts +3 -2
  440. package/testing/core/mocking/mockSubscriptionLink.d.ts.map +1 -1
  441. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -1
  442. package/testing/core/mocking/mockWatchQuery.d.ts +2 -2
  443. package/testing/core/mocking/mockWatchQuery.d.ts.map +1 -1
  444. package/testing/core/mocking/mockWatchQuery.js.map +1 -1
  445. package/testing/core/observableToPromise.d.ts +2 -2
  446. package/testing/core/observableToPromise.d.ts.map +1 -1
  447. package/testing/core/observableToPromise.js.map +1 -1
  448. package/testing/core/subscribeAndCount.d.ts +1 -1
  449. package/testing/core/subscribeAndCount.d.ts.map +1 -1
  450. package/testing/core/subscribeAndCount.js.map +1 -1
  451. package/testing/matchers/index.d.ts +2 -0
  452. package/testing/matchers/index.d.ts.map +1 -0
  453. package/testing/matchers/index.js +6 -0
  454. package/testing/matchers/index.js.map +1 -0
  455. package/testing/matchers/toMatchDocument.d.ts +4 -0
  456. package/testing/matchers/toMatchDocument.d.ts.map +1 -0
  457. package/testing/matchers/toMatchDocument.js +34 -0
  458. package/testing/matchers/toMatchDocument.js.map +1 -0
  459. package/testing/react/MockedProvider.d.ts +8 -7
  460. package/testing/react/MockedProvider.d.ts.map +1 -1
  461. package/testing/react/MockedProvider.js +7 -6
  462. package/testing/react/MockedProvider.js.map +1 -1
  463. package/testing/testing.cjs +7 -51
  464. package/testing/testing.cjs.map +1 -1
  465. package/testing/testing.cjs.native.js +7 -51
  466. package/utilities/common/compact.d.ts +1 -1
  467. package/utilities/common/compact.d.ts.map +1 -1
  468. package/utilities/common/compact.js.map +1 -1
  469. package/utilities/common/errorHandling.d.ts +1 -1
  470. package/utilities/common/errorHandling.d.ts.map +1 -1
  471. package/utilities/common/errorHandling.js.map +1 -1
  472. package/utilities/common/incrementalResult.d.ts +2 -1
  473. package/utilities/common/incrementalResult.d.ts.map +1 -1
  474. package/utilities/common/incrementalResult.js +4 -0
  475. package/utilities/common/incrementalResult.js.map +1 -1
  476. package/utilities/common/mergeOptions.d.ts +1 -1
  477. package/utilities/common/mergeOptions.d.ts.map +1 -1
  478. package/utilities/common/mergeOptions.js +1 -1
  479. package/utilities/common/mergeOptions.js.map +1 -1
  480. package/utilities/common/objects.d.ts +1 -0
  481. package/utilities/common/objects.d.ts.map +1 -1
  482. package/utilities/common/objects.js +6 -0
  483. package/utilities/common/objects.js.map +1 -1
  484. package/utilities/common/omitDeep.d.ts +3 -0
  485. package/utilities/common/omitDeep.d.ts.map +1 -0
  486. package/utilities/common/omitDeep.js +41 -0
  487. package/utilities/common/omitDeep.js.map +1 -0
  488. package/utilities/common/responseIterator.d.ts +2 -2
  489. package/utilities/common/responseIterator.d.ts.map +1 -1
  490. package/utilities/common/responseIterator.js.map +1 -1
  491. package/utilities/common/stringifyForDisplay.d.ts +1 -1
  492. package/utilities/common/stringifyForDisplay.d.ts.map +1 -1
  493. package/utilities/common/stringifyForDisplay.js +3 -2
  494. package/utilities/common/stringifyForDisplay.js.map +1 -1
  495. package/utilities/common/stripTypename.d.ts +2 -0
  496. package/utilities/common/stripTypename.d.ts.map +1 -0
  497. package/utilities/common/stripTypename.js +5 -0
  498. package/utilities/common/stripTypename.js.map +1 -0
  499. package/utilities/globals/global.d.ts +6 -3
  500. package/utilities/globals/global.d.ts.map +1 -1
  501. package/utilities/globals/global.js.map +1 -1
  502. package/utilities/globals/globals.cjs +67 -1
  503. package/utilities/globals/globals.cjs.map +1 -1
  504. package/utilities/globals/globals.cjs.native.js +67 -1
  505. package/utilities/globals/index.d.ts +2 -2
  506. package/utilities/globals/index.d.ts.map +1 -1
  507. package/utilities/globals/index.js +2 -2
  508. package/utilities/globals/index.js.map +1 -1
  509. package/utilities/globals/invariantWrappers.d.ts +24 -0
  510. package/utilities/globals/invariantWrappers.d.ts.map +1 -0
  511. package/utilities/globals/invariantWrappers.js +53 -0
  512. package/utilities/globals/invariantWrappers.js.map +1 -0
  513. package/utilities/graphql/directives.d.ts +1 -1
  514. package/utilities/graphql/directives.d.ts.map +1 -1
  515. package/utilities/graphql/directives.js +6 -7
  516. package/utilities/graphql/directives.js.map +1 -1
  517. package/utilities/graphql/fragments.d.ts +1 -1
  518. package/utilities/graphql/fragments.d.ts.map +1 -1
  519. package/utilities/graphql/fragments.js +8 -5
  520. package/utilities/graphql/fragments.js.map +1 -1
  521. package/utilities/graphql/getFromAST.d.ts +1 -1
  522. package/utilities/graphql/getFromAST.d.ts.map +1 -1
  523. package/utilities/graphql/getFromAST.js +9 -9
  524. package/utilities/graphql/getFromAST.js.map +1 -1
  525. package/utilities/graphql/operations.d.ts +5 -0
  526. package/utilities/graphql/operations.d.ts.map +1 -0
  527. package/utilities/graphql/operations.js +16 -0
  528. package/utilities/graphql/operations.js.map +1 -0
  529. package/utilities/graphql/storeUtils.d.ts +2 -2
  530. package/utilities/graphql/storeUtils.d.ts.map +1 -1
  531. package/utilities/graphql/storeUtils.js +16 -7
  532. package/utilities/graphql/storeUtils.js.map +1 -1
  533. package/utilities/graphql/transform.d.ts +1 -1
  534. package/utilities/graphql/transform.d.ts.map +1 -1
  535. package/utilities/graphql/transform.js +30 -21
  536. package/utilities/graphql/transform.js.map +1 -1
  537. package/utilities/index.d.ts +6 -0
  538. package/utilities/index.d.ts.map +1 -1
  539. package/utilities/index.js +4 -0
  540. package/utilities/index.js.map +1 -1
  541. package/utilities/observables/Concast.d.ts +2 -1
  542. package/utilities/observables/Concast.d.ts.map +1 -1
  543. package/utilities/observables/Concast.js.map +1 -1
  544. package/utilities/observables/Observable.d.ts +2 -1
  545. package/utilities/observables/Observable.d.ts.map +1 -1
  546. package/utilities/observables/Observable.js +1 -1
  547. package/utilities/observables/Observable.js.map +1 -1
  548. package/utilities/observables/asyncMap.d.ts.map +1 -1
  549. package/utilities/observables/asyncMap.js.map +1 -1
  550. package/utilities/observables/iteration.d.ts +1 -1
  551. package/utilities/observables/iteration.d.ts.map +1 -1
  552. package/utilities/observables/iteration.js.map +1 -1
  553. package/utilities/policies/pagination.d.ts +1 -1
  554. package/utilities/policies/pagination.d.ts.map +1 -1
  555. package/utilities/policies/pagination.js.map +1 -1
  556. package/utilities/promises/decoration.d.ts +17 -0
  557. package/utilities/promises/decoration.d.ts.map +1 -0
  558. package/utilities/promises/decoration.js +37 -0
  559. package/utilities/promises/decoration.js.map +1 -0
  560. package/utilities/types/DeepOmit.d.ts +10 -0
  561. package/utilities/types/DeepOmit.d.ts.map +1 -0
  562. package/utilities/types/DeepOmit.js +2 -0
  563. package/utilities/types/DeepOmit.js.map +1 -0
  564. package/utilities/types/DeepPartial.d.ts +12 -0
  565. package/utilities/types/DeepPartial.d.ts.map +1 -0
  566. package/utilities/types/DeepPartial.js +2 -0
  567. package/utilities/types/DeepPartial.js.map +1 -0
  568. package/utilities/types/Primitive.d.ts +2 -0
  569. package/utilities/types/Primitive.d.ts.map +1 -0
  570. package/utilities/types/Primitive.js +2 -0
  571. package/utilities/types/Primitive.js.map +1 -0
  572. package/utilities/utilities.cjs +181 -45
  573. package/utilities/utilities.cjs.map +1 -1
  574. package/utilities/utilities.cjs.native.js +181 -45
  575. package/version.js +1 -1
  576. package/cache/inmemory/__mocks__/optimism.d.ts +0 -2
  577. package/cache/inmemory/__mocks__/optimism.d.ts.map +0 -1
  578. package/cache/inmemory/__mocks__/optimism.js +0 -14
  579. package/cache/inmemory/__mocks__/optimism.js.map +0 -1
  580. package/react/hooks/compareResults.d.ts +0 -3
  581. package/react/hooks/compareResults.d.ts.map +0 -1
  582. package/react/hooks/compareResults.js.map +0 -1
@@ -8,9 +8,12 @@ var context = require('../context');
8
8
  var tslib = require('tslib');
9
9
  var utilities = require('../../utilities');
10
10
  var equality = require('@wry/equality');
11
- var core = require('../../core');
12
11
  var errors = require('../../errors');
12
+ var core = require('../../core');
13
13
  var parser = require('../parser');
14
+ var cache = require('../../cache');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
14
17
 
15
18
  function _interopNamespace(e) {
16
19
  if (e && e.__esModule) return e;
@@ -25,26 +28,25 @@ function _interopNamespace(e) {
25
28
  }
26
29
 
27
30
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
32
 
29
33
  function useApolloClient(override) {
30
34
  var context$1 = React.useContext(context.getApolloContext());
31
35
  var client = override || context$1.client;
32
- globals.__DEV__ ? globals.invariant(!!client, 'Could not find "client" in the context or passed in as an option. ' +
33
- 'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +
34
- 'instance in via options.') : globals.invariant(!!client, 32);
36
+ globals.invariant(!!client, 49);
35
37
  return client;
36
38
  }
37
39
 
38
40
  var didWarnUncachedGetSnapshot = false;
39
41
  var uSESKey = "useSyncExternalStore";
40
- var realHook = React__namespace[uSESKey];
41
- var useSyncExternalStore = realHook || (function (subscribe, getSnapshot, getServerSnapshot) {
42
+ var realHook$1 = React__namespace[uSESKey];
43
+ var useSyncExternalStore = realHook$1 || (function (subscribe, getSnapshot, getServerSnapshot) {
42
44
  var value = getSnapshot();
43
45
  if (globals.__DEV__ &&
44
46
  !didWarnUncachedGetSnapshot &&
45
47
  value !== getSnapshot()) {
46
48
  didWarnUncachedGetSnapshot = true;
47
- globals.__DEV__ && globals.invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');
49
+ globals.__DEV__ && globals.invariant.error(59);
48
50
  }
49
51
  var _a = React__namespace.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];
50
52
  if (utilities.canUseLayoutEffect) {
@@ -103,8 +105,6 @@ var InternalState = (function () {
103
105
  function InternalState(client, query, previous) {
104
106
  this.client = client;
105
107
  this.query = query;
106
- this.asyncResolveFns = new Set();
107
- this.optionsToIgnoreOnce = new (utilities.canUseWeakSet ? WeakSet : Set)();
108
108
  this.ssrDisabledResult = utilities.maybeDeepFreeze({
109
109
  loading: true,
110
110
  data: void 0,
@@ -126,22 +126,32 @@ var InternalState = (function () {
126
126
  }
127
127
  }
128
128
  InternalState.prototype.forceUpdate = function () {
129
- globals.__DEV__ && globals.invariant.warn("Calling default no-op implementation of InternalState#forceUpdate");
129
+ globals.__DEV__ && globals.invariant.warn(51);
130
130
  };
131
- InternalState.prototype.asyncUpdate = function (signal) {
131
+ InternalState.prototype.executeQuery = function (options) {
132
132
  var _this = this;
133
- return new Promise(function (resolve, reject) {
134
- var watchQueryOptions = _this.watchQueryOptions;
135
- var handleAborted = function () {
136
- _this.asyncResolveFns.delete(resolve);
137
- _this.optionsToIgnoreOnce.delete(watchQueryOptions);
138
- signal.removeEventListener('abort', handleAborted);
139
- reject(signal.reason);
140
- };
141
- _this.asyncResolveFns.add(resolve);
142
- _this.optionsToIgnoreOnce.add(watchQueryOptions);
143
- signal.addEventListener('abort', handleAborted);
144
- _this.forceUpdate();
133
+ var _a;
134
+ if (options.query) {
135
+ Object.assign(this, { query: options.query });
136
+ }
137
+ this.watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
138
+ var concast = this.observable.reobserveAsConcast(this.getObsQueryOptions());
139
+ this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
140
+ this.result = void 0;
141
+ this.forceUpdate();
142
+ return new Promise(function (resolve) {
143
+ var result;
144
+ concast.subscribe({
145
+ next: function (value) {
146
+ result = value;
147
+ },
148
+ error: function () {
149
+ resolve(_this.toQueryResult(_this.observable.getCurrentResult()));
150
+ },
151
+ complete: function () {
152
+ resolve(_this.toQueryResult(result));
153
+ }
154
+ });
145
155
  });
146
156
  };
147
157
  InternalState.prototype.useQuery = function (options) {
@@ -197,22 +207,15 @@ var InternalState = (function () {
197
207
  this.client.disableNetworkFetches,
198
208
  ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });
199
209
  this.unsafeHandlePartialRefetch(result);
200
- var queryResult = this.toQueryResult(result);
201
- if (!queryResult.loading && this.asyncResolveFns.size) {
202
- this.asyncResolveFns.forEach(function (resolve) { return resolve(queryResult); });
203
- this.asyncResolveFns.clear();
204
- }
205
- return queryResult;
210
+ return this.toQueryResult(result);
206
211
  };
207
212
  InternalState.prototype.useOptions = function (options) {
208
213
  var _a;
209
214
  var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
210
215
  var currentWatchQueryOptions = this.watchQueryOptions;
211
- if (this.optionsToIgnoreOnce.has(currentWatchQueryOptions) ||
212
- !equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
216
+ if (!equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
213
217
  this.watchQueryOptions = watchQueryOptions;
214
218
  if (currentWatchQueryOptions && this.observable) {
215
- this.optionsToIgnoreOnce.delete(currentWatchQueryOptions);
216
219
  this.observable.reobserve(this.getObsQueryOptions());
217
220
  this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
218
221
  this.result = void 0;
@@ -243,7 +246,7 @@ var InternalState = (function () {
243
246
  toMerge.push(this.queryHookOptions.defaultOptions);
244
247
  }
245
248
  toMerge.push(utilities.compact(this.observable && this.observable.options, this.watchQueryOptions));
246
- return toMerge.reduce(core.mergeOptions);
249
+ return toMerge.reduce(utilities.mergeOptions);
247
250
  };
248
251
  InternalState.prototype.createWatchQueryOptions = function (_a) {
249
252
  var _b;
@@ -379,11 +382,15 @@ var EAGER_METHODS = [
379
382
  'subscribeToMore',
380
383
  ];
381
384
  function useLazyQuery(query, options) {
382
- var _a, _b;
383
- var abortControllersRef = React.useRef(new Set());
385
+ var _a;
384
386
  var execOptionsRef = React.useRef();
385
- var merged = execOptionsRef.current ? utilities.mergeOptions(options, execOptionsRef.current) : options;
386
- var internalState = useInternalState(useApolloClient(options && options.client), (_b = (_a = execOptionsRef.current) === null || _a === void 0 ? void 0 : _a.query) !== null && _b !== void 0 ? _b : query);
387
+ var optionsRef = React.useRef();
388
+ var queryRef = React.useRef();
389
+ var merged = utilities.mergeOptions(options, execOptionsRef.current || {});
390
+ var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;
391
+ optionsRef.current = merged;
392
+ queryRef.current = document;
393
+ var internalState = useInternalState(useApolloClient(options && options.client), document);
387
394
  var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current }));
388
395
  var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
389
396
  internalState.getDefaultFetchPolicy();
@@ -409,28 +416,15 @@ function useLazyQuery(query, options) {
409
416
  return eagerMethods;
410
417
  }, []);
411
418
  Object.assign(result, eagerMethods);
412
- React.useEffect(function () {
413
- return function () {
414
- abortControllersRef.current.forEach(function (controller) {
415
- controller.abort();
416
- });
417
- };
418
- }, []);
419
419
  var execute = React.useCallback(function (executeOptions) {
420
- var controller = new AbortController();
421
- abortControllersRef.current.add(controller);
422
420
  execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
423
421
  fetchPolicy: initialFetchPolicy,
424
422
  };
423
+ var options = utilities.mergeOptions(optionsRef.current, tslib.__assign({ query: queryRef.current }, execOptionsRef.current));
425
424
  var promise = internalState
426
- .asyncUpdate(controller.signal)
427
- .then(function (queryResult) {
428
- abortControllersRef.current.delete(controller);
429
- return Object.assign(queryResult, eagerMethods);
430
- });
431
- promise.catch(function () {
432
- abortControllersRef.current.delete(controller);
433
- });
425
+ .executeQuery(tslib.__assign(tslib.__assign({}, options), { skip: false }))
426
+ .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
427
+ promise.catch(function () { });
434
428
  return promise;
435
429
  }, []);
436
430
  return [execute, result];
@@ -470,7 +464,7 @@ function useMutation(mutation, options) {
470
464
  });
471
465
  }
472
466
  var mutationId = ++ref.current.mutationId;
473
- var clientOptions = core.mergeOptions(baseOptions, executeOptions);
467
+ var clientOptions = utilities.mergeOptions(baseOptions, executeOptions);
474
468
  return client.mutate(clientOptions).then(function (response) {
475
469
  var _a;
476
470
  var data = response.data, errors$1 = response.errors;
@@ -543,14 +537,10 @@ function useSubscription(subscription, options) {
543
537
  if (!hasIssuedDeprecationWarningRef.current) {
544
538
  hasIssuedDeprecationWarningRef.current = true;
545
539
  if (options === null || options === void 0 ? void 0 : options.onSubscriptionData) {
546
- globals.__DEV__ && globals.invariant.warn(options.onData
547
- ? "'useSubscription' supports only the 'onSubscriptionData' or 'onData' option, but not both. Only the 'onData' option will be used."
548
- : "'onSubscriptionData' is deprecated and will be removed in a future major version. Please use the 'onData' option instead.");
540
+ globals.__DEV__ && globals.invariant.warn(options.onData ? 52 : 53);
549
541
  }
550
542
  if (options === null || options === void 0 ? void 0 : options.onSubscriptionComplete) {
551
- globals.__DEV__ && globals.invariant.warn(options.onComplete
552
- ? "'useSubscription' supports only the 'onSubscriptionComplete' or 'onComplete' option, but not both. Only the 'onComplete' option will be used."
553
- : "'onSubscriptionComplete' is deprecated and will be removed in a future major version. Please use the 'onComplete' option instead.");
543
+ globals.__DEV__ && globals.invariant.warn(options.onComplete ? 54 : 55);
554
544
  }
555
545
  }
556
546
  var _b = React.useState(function () {
@@ -616,9 +606,13 @@ function useSubscription(subscription, options) {
616
606
  if (!observable) {
617
607
  return;
618
608
  }
609
+ var subscriptionStopped = false;
619
610
  var subscription = observable.subscribe({
620
611
  next: function (fetchResult) {
621
612
  var _a, _b;
613
+ if (subscriptionStopped) {
614
+ return;
615
+ }
622
616
  var result = {
623
617
  loading: false,
624
618
  data: fetchResult.data,
@@ -641,26 +635,33 @@ function useSubscription(subscription, options) {
641
635
  },
642
636
  error: function (error) {
643
637
  var _a, _b;
644
- setResult({
645
- loading: false,
646
- data: void 0,
647
- error: error,
648
- variables: options === null || options === void 0 ? void 0 : options.variables,
649
- });
650
- (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
638
+ if (!subscriptionStopped) {
639
+ setResult({
640
+ loading: false,
641
+ data: void 0,
642
+ error: error,
643
+ variables: options === null || options === void 0 ? void 0 : options.variables,
644
+ });
645
+ (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
646
+ }
651
647
  },
652
648
  complete: function () {
653
649
  var _a, _b;
654
- if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onComplete) {
655
- ref.current.options.onComplete();
656
- }
657
- else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionComplete) {
658
- ref.current.options.onSubscriptionComplete();
650
+ if (!subscriptionStopped) {
651
+ if ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onComplete) {
652
+ ref.current.options.onComplete();
653
+ }
654
+ else if ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onSubscriptionComplete) {
655
+ ref.current.options.onSubscriptionComplete();
656
+ }
659
657
  }
660
658
  },
661
659
  });
662
660
  return function () {
663
- subscription.unsubscribe();
661
+ subscriptionStopped = true;
662
+ setTimeout(function () {
663
+ subscription.unsubscribe();
664
+ });
664
665
  };
665
666
  }, [observable]);
666
667
  return result;
@@ -681,10 +682,10 @@ function useReactiveVar(rv) {
681
682
  return value;
682
683
  }
683
684
 
684
- function useFragment_experimental(options) {
685
+ function useFragment(options) {
685
686
  var cache = useApolloClient().cache;
686
687
  var fragment = options.fragment, fragmentName = options.fragmentName, from = options.from, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, rest = tslib.__rest(options, ["fragment", "fragmentName", "from", "optimistic"]);
687
- var diffOptions = tslib.__assign(tslib.__assign({}, rest), { id: typeof from === "string" ? from : cache.identify(from), query: cache["getFragmentDoc"](fragment, fragmentName), optimistic: optimistic });
688
+ var diffOptions = tslib.__assign(tslib.__assign({}, rest), { returnPartialData: true, id: typeof from === "string" ? from : cache.identify(from), query: cache["getFragmentDoc"](fragment, fragmentName), optimistic: optimistic });
688
689
  var resultRef = React.useRef();
689
690
  var latestDiff = cache.diff(diffOptions);
690
691
  var getSnapshot = function () {
@@ -722,116 +723,110 @@ function useDeepMemo(memoFn, deps) {
722
723
  return ref.current.value;
723
724
  }
724
725
 
725
- var useIsomorphicLayoutEffect = utilities.canUseLayoutEffect
726
- ? React.useLayoutEffect
727
- : React.useEffect;
726
+ function useStrictModeSafeCleanupEffect(cleanup) {
727
+ var timeout;
728
+ React.useEffect(function () {
729
+ clearTimeout(timeout);
730
+ return function () {
731
+ timeout = setTimeout(cleanup);
732
+ };
733
+ }, []);
734
+ }
735
+
736
+ var useKey = 'use';
737
+ var realHook = React__default[useKey];
738
+ var __use = realHook ||
739
+ function __use(promise) {
740
+ var statefulPromise = utilities.wrapPromiseWithState(promise);
741
+ switch (statefulPromise.status) {
742
+ case 'pending':
743
+ throw statefulPromise;
744
+ case 'rejected':
745
+ throw statefulPromise.reason;
746
+ case 'fulfilled':
747
+ return statefulPromise.value;
748
+ }
749
+ };
728
750
 
729
751
  function useSuspenseCache(override) {
730
752
  var context$1 = React.useContext(context.getApolloContext());
731
753
  var suspenseCache = override || context$1.suspenseCache;
732
- globals.__DEV__ ? globals.invariant(suspenseCache, 'Could not find a "suspenseCache" in the context or passed in as an option. ' +
733
- 'Wrap the root component in an <ApolloProvider> and provide a suspenseCache, ' +
734
- 'or pass a SuspenseCache instance in via options.') : globals.invariant(suspenseCache, 33);
754
+ globals.invariant(suspenseCache, 56);
735
755
  return suspenseCache;
736
756
  }
737
757
 
738
- var SUPPORTED_FETCH_POLICIES = [
739
- 'cache-first',
740
- 'network-only',
741
- 'no-cache',
742
- 'cache-and-network',
743
- ];
744
- var DEFAULT_FETCH_POLICY = 'cache-first';
745
- var DEFAULT_SUSPENSE_POLICY = 'always';
746
- var DEFAULT_ERROR_POLICY = 'none';
747
- function useSuspenseQuery_experimental(query, options) {
758
+ function useSuspenseQuery(query, options) {
748
759
  if (options === void 0) { options = Object.create(null); }
749
- var suspenseCache = useSuspenseCache(options.suspenseCache);
750
760
  var client = useApolloClient(options.client);
751
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options, client: client });
752
- var previousWatchQueryOptionsRef = React.useRef(watchQueryOptions);
753
- var deferred = useIsDeferred(query);
754
- var fetchPolicy = watchQueryOptions.fetchPolicy, errorPolicy = watchQueryOptions.errorPolicy, returnPartialData = watchQueryOptions.returnPartialData, variables = watchQueryOptions.variables;
755
- var cacheEntry = suspenseCache.lookup(query, variables);
756
- var observable = React.useState(function () {
757
- return (cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.observable) || client.watchQuery(watchQueryOptions);
758
- })[0];
759
- var result = useObservableQueryResult(observable);
760
- var hasFullResult = result.data && !result.partial;
761
- var hasPartialResult = result.data && result.partial;
762
- var usePartialResult = returnPartialData && hasPartialResult;
763
- var allowsThrownErrors = errorPolicy === 'none' && (!deferred || !hasPartialResult);
764
- if (result.error &&
765
- (result.error.networkError || allowsThrownErrors)) {
766
- throw result.error;
767
- }
768
- if (result.loading) {
769
- if (!cacheEntry) {
770
- cacheEntry = suspenseCache.add(query, variables, {
771
- promise: maybeWrapConcastWithCustomPromise(observable.reobserveAsConcast(watchQueryOptions), { deferred: deferred }),
772
- observable: observable,
773
- });
774
- }
775
- var hasUsableResult = usePartialResult ||
776
- (fetchPolicy === 'cache-and-network' && hasFullResult);
777
- if (!hasUsableResult && !cacheEntry.fulfilled) {
778
- throw cacheEntry.promise;
779
- }
761
+ var suspenseCache = useSuspenseCache(options.suspenseCache);
762
+ var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
763
+ var variables = watchQueryOptions.variables;
764
+ var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
765
+ var cacheKey = [client, query, cache.canonicalStringify(variables)].concat(queryKey);
766
+ var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
767
+ return client.watchQuery(watchQueryOptions);
768
+ });
769
+ var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
770
+ var promise = promiseCache.get(queryRef.key);
771
+ if (!promise) {
772
+ promise = queryRef.promise;
773
+ promiseCache.set(queryRef.key, promise);
780
774
  }
775
+ useTrackedQueryRefs(queryRef);
781
776
  React.useEffect(function () {
782
- var variables = watchQueryOptions.variables, query = watchQueryOptions.query;
783
- var previousOpts = previousWatchQueryOptionsRef.current;
784
- if (variables !== previousOpts.variables || query !== previousOpts.query) {
785
- suspenseCache.remove(previousOpts.query, previousOpts.variables);
786
- suspenseCache.add(query, variables, {
787
- promise: observable.reobserve({ query: query, variables: variables }),
788
- observable: observable,
777
+ return queryRef.listen(function (promise) {
778
+ setPromiseCache(function (promiseCache) {
779
+ return new Map(promiseCache).set(queryRef.key, promise);
789
780
  });
790
- previousWatchQueryOptionsRef.current = watchQueryOptions;
791
- }
792
- }, [watchQueryOptions]);
793
- React.useEffect(function () {
794
- return function () {
795
- suspenseCache.remove(query, variables);
796
- };
797
- }, []);
781
+ });
782
+ }, [queryRef]);
783
+ var result = __use(promise);
784
+ var fetchMore = React.useCallback(function (options) {
785
+ var promise = queryRef.fetchMore(options);
786
+ setPromiseCache(function (previousPromiseCache) {
787
+ return new Map(previousPromiseCache).set(queryRef.key, promise);
788
+ });
789
+ return promise;
790
+ }, [queryRef]);
791
+ var refetch = React.useCallback(function (variables) {
792
+ var promise = queryRef.refetch(variables);
793
+ setPromiseCache(function (previousPromiseCache) {
794
+ return new Map(previousPromiseCache).set(queryRef.key, promise);
795
+ });
796
+ return promise;
797
+ }, [queryRef]);
798
+ var subscribeToMore = React.useCallback(function (options) { return queryRef.observable.subscribeToMore(options); }, [queryRef]);
798
799
  return React.useMemo(function () {
799
800
  return {
800
801
  client: client,
801
802
  data: result.data,
802
- error: errorPolicy === 'ignore' ? void 0 : toApolloError(result),
803
- fetchMore: function (options) {
804
- var promise = observable.fetchMore(options);
805
- suspenseCache.add(query, watchQueryOptions.variables, {
806
- promise: promise,
807
- observable: observable,
808
- });
809
- return promise;
810
- },
811
- refetch: function (variables) {
812
- var promise = observable.refetch(variables);
813
- suspenseCache.add(query, watchQueryOptions.variables, {
814
- promise: promise,
815
- observable: observable,
816
- });
817
- return promise;
818
- },
819
- subscribeToMore: function (options) { return observable.subscribeToMore(options); },
803
+ error: toApolloError(result),
804
+ networkStatus: result.networkStatus,
805
+ fetchMore: fetchMore,
806
+ refetch: refetch,
807
+ subscribeToMore: subscribeToMore,
820
808
  };
821
- }, [client, result, observable, errorPolicy]);
809
+ }, [client, fetchMore, refetch, result, subscribeToMore]);
822
810
  }
823
811
  function validateOptions(options) {
824
- var query = options.query, _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? DEFAULT_FETCH_POLICY : _a, returnPartialData = options.returnPartialData;
812
+ var query = options.query, fetchPolicy = options.fetchPolicy, returnPartialData = options.returnPartialData;
825
813
  parser.verifyDocumentType(query, parser.DocumentType.Query);
826
814
  validateFetchPolicy(fetchPolicy);
827
815
  validatePartialDataReturn(fetchPolicy, returnPartialData);
828
816
  }
829
817
  function validateFetchPolicy(fetchPolicy) {
830
- globals.__DEV__ ? globals.invariant(SUPPORTED_FETCH_POLICIES.includes(fetchPolicy), "The fetch policy `".concat(fetchPolicy, "` is not supported with suspense.")) : globals.invariant(SUPPORTED_FETCH_POLICIES.includes(fetchPolicy), 34);
818
+ if (fetchPolicy === void 0) { fetchPolicy = 'cache-first'; }
819
+ var supportedFetchPolicies = [
820
+ 'cache-first',
821
+ 'network-only',
822
+ 'no-cache',
823
+ 'cache-and-network',
824
+ ];
825
+ globals.invariant(supportedFetchPolicies.includes(fetchPolicy), 57, fetchPolicy);
831
826
  }
832
827
  function validatePartialDataReturn(fetchPolicy, returnPartialData) {
833
828
  if (fetchPolicy === 'no-cache' && returnPartialData) {
834
- globals.__DEV__ && globals.invariant.warn('Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.');
829
+ globals.__DEV__ && globals.invariant.warn(58);
835
830
  }
836
831
  }
837
832
  function toApolloError(result) {
@@ -839,83 +834,92 @@ function toApolloError(result) {
839
834
  ? new core.ApolloError({ graphQLErrors: result.errors })
840
835
  : result.error;
841
836
  }
842
- function maybeWrapConcastWithCustomPromise(concast, _a) {
843
- var deferred = _a.deferred;
844
- if (deferred) {
845
- return new Promise(function (resolve, reject) {
846
- var subscription = concast.subscribe({
847
- next: function (value) {
848
- resolve(value);
849
- subscription.unsubscribe();
850
- },
851
- error: reject,
852
- });
853
- });
854
- }
855
- return concast.promise;
837
+ function useTrackedQueryRefs(queryRef) {
838
+ var trackedQueryRefs = React.useRef(new Set());
839
+ trackedQueryRefs.current.add(queryRef);
840
+ useStrictModeSafeCleanupEffect(function () {
841
+ trackedQueryRefs.current.forEach(function (sub) { return sub.dispose(); });
842
+ });
856
843
  }
857
844
  function useWatchQueryOptions(_a) {
858
- var query = _a.query, options = _a.options, client = _a.client;
859
- var defaultOptions = client.defaultOptions.watchQuery;
860
- var watchQueryOptions = useDeepMemo(function () {
861
- var errorPolicy = options.errorPolicy, fetchPolicy = options.fetchPolicy, _a = options.suspensePolicy, suspensePolicy = _a === void 0 ? DEFAULT_SUSPENSE_POLICY : _a, variables = options.variables, watchQueryOptions = tslib.__rest(options, ["errorPolicy", "fetchPolicy", "suspensePolicy", "variables"]);
862
- return tslib.__assign(tslib.__assign({}, watchQueryOptions), { query: query, errorPolicy: errorPolicy || (defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.errorPolicy) || DEFAULT_ERROR_POLICY, fetchPolicy: fetchPolicy || (defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.fetchPolicy) || DEFAULT_FETCH_POLICY, notifyOnNetworkStatusChange: suspensePolicy === 'always', fetchOnFirstSubscribe: false, variables: utilities.compact(tslib.__assign(tslib.__assign({}, defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.variables), variables)) });
863
- }, [options, query, defaultOptions]);
845
+ var query = _a.query, options = _a.options;
846
+ var watchQueryOptions = useDeepMemo(function () { return (tslib.__assign(tslib.__assign({}, options), { query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 })); }, [options, query]);
864
847
  if (globals.__DEV__) {
865
848
  validateOptions(watchQueryOptions);
866
849
  }
867
850
  return watchQueryOptions;
868
851
  }
869
- function useIsDeferred(query) {
870
- return React.useMemo(function () { return utilities.hasDirectives(['defer'], query); }, [query]);
852
+
853
+ function useBackgroundQuery(query, options) {
854
+ if (options === void 0) { options = Object.create(null); }
855
+ var suspenseCache = useSuspenseCache(options.suspenseCache);
856
+ var client = useApolloClient(options.client);
857
+ var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
858
+ var variables = watchQueryOptions.variables;
859
+ var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
860
+ var cacheKey = [client, query, cache.canonicalStringify(variables)].concat(queryKey);
861
+ var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
862
+ return client.watchQuery(watchQueryOptions);
863
+ });
864
+ var _b = React.useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
865
+ useTrackedQueryRefs(queryRef);
866
+ var fetchMore = React.useCallback(function (options) {
867
+ var promise = queryRef.fetchMore(options);
868
+ setPromiseCache(function (promiseCache) {
869
+ return new Map(promiseCache).set(queryRef.key, promise);
870
+ });
871
+ return promise;
872
+ }, [queryRef]);
873
+ var refetch = React.useCallback(function (variables) {
874
+ var promise = queryRef.refetch(variables);
875
+ setPromiseCache(function (promiseCache) {
876
+ return new Map(promiseCache).set(queryRef.key, promise);
877
+ });
878
+ return promise;
879
+ }, [queryRef]);
880
+ queryRef.promiseCache = promiseCache;
881
+ return React.useMemo(function () {
882
+ return [
883
+ queryRef,
884
+ {
885
+ fetchMore: fetchMore,
886
+ refetch: refetch,
887
+ },
888
+ ];
889
+ }, [queryRef, fetchMore, refetch]);
871
890
  }
872
- function useObservableQueryResult(observable) {
873
- var resultRef = React.useRef();
874
- var isMountedRef = React.useRef(false);
875
- var subscribeTimeoutRef = React.useRef();
876
- if (!resultRef.current) {
877
- resultRef.current = observable.getCurrentResult();
891
+ function useReadQuery(queryRef) {
892
+ var _a = React.useState(0), forceUpdate = _a[1];
893
+ globals.invariant(queryRef.promiseCache, 50);
894
+ var promise = queryRef.promiseCache.get(queryRef.key);
895
+ if (!promise) {
896
+ promise = queryRef.promise;
897
+ queryRef.promiseCache.set(queryRef.key, promise);
878
898
  }
879
- useIsomorphicLayoutEffect(function () {
880
- isMountedRef.current = true;
881
- return function () {
882
- isMountedRef.current = false;
883
- };
884
- }, []);
885
- return useSyncExternalStore(React.useCallback(function (forceUpdate) {
886
- clearTimeout(subscribeTimeoutRef.current);
887
- function handleUpdate() {
888
- var previousResult = resultRef.current;
889
- var result = observable.getCurrentResult();
890
- if (previousResult.loading === result.loading &&
891
- previousResult.networkStatus === result.networkStatus &&
892
- equality.equal(previousResult.data, result.data)) {
893
- return;
894
- }
895
- resultRef.current = result;
896
- if (isMountedRef.current) {
897
- forceUpdate();
898
- }
899
- }
900
- var subscription;
901
- subscribeTimeoutRef.current = setTimeout(function () {
902
- subscription = observable.subscribe({
903
- next: handleUpdate,
904
- error: handleUpdate,
905
- });
899
+ React.useEffect(function () {
900
+ return queryRef.listen(function (promise) {
901
+ queryRef.promiseCache.set(queryRef.key, promise);
902
+ forceUpdate(function (prevState) { return prevState + 1; });
906
903
  });
907
- return function () {
908
- subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();
904
+ }, [queryRef]);
905
+ var result = __use(promise);
906
+ return React.useMemo(function () {
907
+ return {
908
+ data: result.data,
909
+ networkStatus: result.networkStatus,
910
+ error: toApolloError(result),
909
911
  };
910
- }, [observable]), function () { return resultRef.current; }, function () { return resultRef.current; });
912
+ }, [result]);
911
913
  }
912
914
 
913
915
  exports.useApolloClient = useApolloClient;
914
- exports.useFragment_experimental = useFragment_experimental;
916
+ exports.useBackgroundQuery = useBackgroundQuery;
917
+ exports.useFragment = useFragment;
915
918
  exports.useLazyQuery = useLazyQuery;
916
919
  exports.useMutation = useMutation;
917
920
  exports.useQuery = useQuery;
918
921
  exports.useReactiveVar = useReactiveVar;
922
+ exports.useReadQuery = useReadQuery;
919
923
  exports.useSubscription = useSubscription;
920
- exports.useSuspenseQuery_experimental = useSuspenseQuery_experimental;
924
+ exports.useSuspenseQuery = useSuspenseQuery;
921
925
  //# sourceMappingURL=hooks.cjs.map