@apollo/client 3.4.17 → 3.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/README.md +1 -1
  2. package/{apollo-client.cjs.js → apollo-client.cjs} +1219 -1280
  3. package/apollo-client.cjs.map +1 -0
  4. package/apollo-client.min.cjs +1 -0
  5. package/cache/{cache.cjs.js → cache.cjs} +757 -601
  6. package/cache/cache.cjs.map +1 -0
  7. package/cache/core/cache.d.ts +6 -4
  8. package/cache/core/cache.d.ts.map +1 -1
  9. package/cache/core/cache.js +28 -1
  10. package/cache/core/cache.js.map +1 -1
  11. package/cache/core/types/Cache.d.ts +12 -10
  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 -0
  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 +8 -5
  18. package/cache/core/types/common.d.ts.map +1 -1
  19. package/cache/core/types/common.js +6 -11
  20. package/cache/core/types/common.js.map +1 -1
  21. package/cache/inmemory/helpers.js +1 -1
  22. package/cache/inmemory/helpers.js.map +1 -1
  23. package/cache/inmemory/inMemoryCache.d.ts +4 -4
  24. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  25. package/cache/inmemory/inMemoryCache.js +12 -3
  26. package/cache/inmemory/inMemoryCache.js.map +1 -1
  27. package/cache/inmemory/key-extractor.d.ts +9 -0
  28. package/cache/inmemory/key-extractor.d.ts.map +1 -0
  29. package/cache/inmemory/key-extractor.js +118 -0
  30. package/cache/inmemory/key-extractor.js.map +1 -0
  31. package/cache/inmemory/policies.d.ts +7 -3
  32. package/cache/inmemory/policies.d.ts.map +1 -1
  33. package/cache/inmemory/policies.js +47 -118
  34. package/cache/inmemory/policies.js.map +1 -1
  35. package/cache/inmemory/readFromStore.d.ts +2 -2
  36. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  37. package/cache/inmemory/readFromStore.js +54 -42
  38. package/cache/inmemory/readFromStore.js.map +1 -1
  39. package/cache/inmemory/writeToStore.d.ts +8 -3
  40. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  41. package/cache/inmemory/writeToStore.js +166 -95
  42. package/cache/inmemory/writeToStore.js.map +1 -1
  43. package/cache/package.json +2 -1
  44. package/core/ApolloClient.d.ts +0 -1
  45. package/core/ApolloClient.d.ts.map +1 -1
  46. package/core/ApolloClient.js +3 -3
  47. package/core/ApolloClient.js.map +1 -1
  48. package/core/LocalState.js +1 -1
  49. package/core/LocalState.js.map +1 -1
  50. package/core/ObservableQuery.d.ts +2 -2
  51. package/core/ObservableQuery.d.ts.map +1 -1
  52. package/core/ObservableQuery.js +19 -14
  53. package/core/ObservableQuery.js.map +1 -1
  54. package/core/QueryInfo.d.ts +2 -2
  55. package/core/QueryInfo.d.ts.map +1 -1
  56. package/core/QueryInfo.js.map +1 -1
  57. package/core/QueryManager.d.ts +0 -1
  58. package/core/QueryManager.d.ts.map +1 -1
  59. package/core/QueryManager.js +10 -10
  60. package/core/QueryManager.js.map +1 -1
  61. package/core/{core.cjs.js → core.cjs} +38 -34
  62. package/core/core.cjs.map +1 -0
  63. package/core/package.json +2 -1
  64. package/errors/{errors.cjs.js → errors.cjs} +3 -3
  65. package/errors/errors.cjs.map +1 -0
  66. package/errors/index.d.ts +3 -1
  67. package/errors/index.d.ts.map +1 -1
  68. package/errors/index.js +2 -2
  69. package/errors/index.js.map +1 -1
  70. package/errors/package.json +2 -1
  71. package/invariantErrorCodes.js +84 -104
  72. package/link/batch/{batch.cjs.js → batch.cjs} +2 -2
  73. package/link/batch/batch.cjs.map +1 -0
  74. package/link/batch/batchLink.d.ts +0 -1
  75. package/link/batch/batchLink.d.ts.map +1 -1
  76. package/link/batch/batching.d.ts +0 -1
  77. package/link/batch/batching.d.ts.map +1 -1
  78. package/link/batch/batching.js +1 -1
  79. package/link/batch/batching.js.map +1 -1
  80. package/link/batch/package.json +2 -1
  81. package/link/batch-http/{batch-http.cjs.js → batch-http.cjs} +3 -3
  82. package/link/batch-http/batch-http.cjs.map +1 -0
  83. package/link/batch-http/batchHttpLink.d.ts +0 -1
  84. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  85. package/link/batch-http/batchHttpLink.js +3 -3
  86. package/link/batch-http/batchHttpLink.js.map +1 -1
  87. package/link/batch-http/package.json +2 -1
  88. package/link/context/{context.cjs.js → context.cjs} +1 -1
  89. package/link/context/context.cjs.map +1 -0
  90. package/link/context/index.js.map +1 -1
  91. package/link/context/package.json +2 -1
  92. package/link/core/ApolloLink.d.ts +2 -3
  93. package/link/core/ApolloLink.d.ts.map +1 -1
  94. package/link/core/ApolloLink.js +1 -1
  95. package/link/core/ApolloLink.js.map +1 -1
  96. package/link/core/{core.cjs.js → core.cjs} +2 -2
  97. package/link/core/core.cjs.map +1 -0
  98. package/link/core/package.json +2 -1
  99. package/link/core/types.d.ts +4 -7
  100. package/link/core/types.d.ts.map +1 -1
  101. package/link/core/types.js.map +1 -1
  102. package/link/error/{error.cjs.js → error.cjs} +2 -2
  103. package/link/error/error.cjs.map +1 -0
  104. package/link/error/index.d.ts +5 -7
  105. package/link/error/index.d.ts.map +1 -1
  106. package/link/error/index.js +1 -1
  107. package/link/error/index.js.map +1 -1
  108. package/link/error/package.json +2 -1
  109. package/link/http/checkFetcher.js +1 -1
  110. package/link/http/createHttpLink.d.ts.map +1 -1
  111. package/link/http/createHttpLink.js +3 -3
  112. package/link/http/createHttpLink.js.map +1 -1
  113. package/link/http/{http.cjs.js → http.cjs} +28 -15
  114. package/link/http/http.cjs.map +1 -0
  115. package/link/http/index.d.ts +1 -1
  116. package/link/http/index.d.ts.map +1 -1
  117. package/link/http/index.js +1 -1
  118. package/link/http/index.js.map +1 -1
  119. package/link/http/package.json +2 -1
  120. package/link/http/parseAndCheckHttpResponse.js +3 -3
  121. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  122. package/link/http/rewriteURIForGET.js +1 -1
  123. package/link/http/rewriteURIForGET.js.map +1 -1
  124. package/link/http/selectHttpOptionsAndBody.d.ts +11 -1
  125. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  126. package/link/http/selectHttpOptionsAndBody.js +20 -7
  127. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  128. package/link/http/serializeFetchParameter.js +1 -1
  129. package/link/http/serializeFetchParameter.js.map +1 -1
  130. package/link/persisted-queries/index.d.ts.map +1 -1
  131. package/link/persisted-queries/index.js +3 -3
  132. package/link/persisted-queries/index.js.map +1 -1
  133. package/link/persisted-queries/package.json +2 -1
  134. package/link/persisted-queries/{persisted-queries.cjs.js → persisted-queries.cjs} +3 -3
  135. package/link/persisted-queries/persisted-queries.cjs.map +1 -0
  136. package/link/retry/package.json +2 -1
  137. package/link/retry/{retry.cjs.js → retry.cjs} +1 -1
  138. package/link/retry/retry.cjs.map +1 -0
  139. package/link/retry/retryLink.d.ts +0 -1
  140. package/link/retry/retryLink.d.ts.map +1 -1
  141. package/link/retry/retryLink.js.map +1 -1
  142. package/link/schema/index.d.ts +0 -1
  143. package/link/schema/index.d.ts.map +1 -1
  144. package/link/schema/index.js +8 -1
  145. package/link/schema/index.js.map +1 -1
  146. package/link/schema/package.json +2 -1
  147. package/link/schema/{schema.cjs.js → schema.cjs} +9 -2
  148. package/link/schema/schema.cjs.map +1 -0
  149. package/link/utils/fromError.d.ts +0 -1
  150. package/link/utils/fromError.d.ts.map +1 -1
  151. package/link/utils/fromPromise.d.ts +0 -1
  152. package/link/utils/fromPromise.d.ts.map +1 -1
  153. package/link/utils/package.json +2 -1
  154. package/link/utils/toPromise.d.ts +0 -1
  155. package/link/utils/toPromise.d.ts.map +1 -1
  156. package/link/utils/{utils.cjs.js → utils.cjs} +2 -2
  157. package/link/utils/utils.cjs.map +1 -0
  158. package/link/utils/validateOperation.js +1 -1
  159. package/link/utils/validateOperation.js.map +1 -1
  160. package/link/ws/index.d.ts +0 -1
  161. package/link/ws/index.d.ts.map +1 -1
  162. package/link/ws/package.json +2 -1
  163. package/link/ws/{ws.cjs.js → ws.cjs} +1 -1
  164. package/link/ws/ws.cjs.map +1 -0
  165. package/{main.cjs.js → main.cjs} +5 -5
  166. package/main.cjs.map +1 -0
  167. package/package.json +20 -19
  168. package/react/components/Query.js.map +1 -1
  169. package/react/components/{components.cjs.js → components.cjs} +4 -4
  170. package/react/components/components.cjs.map +1 -0
  171. package/react/components/package.json +2 -1
  172. package/react/context/ApolloConsumer.js +1 -1
  173. package/react/context/ApolloProvider.js +1 -1
  174. package/react/context/{context.cjs.js → context.cjs} +6 -6
  175. package/react/context/context.cjs.map +1 -0
  176. package/react/context/index.d.ts +3 -3
  177. package/react/context/index.d.ts.map +1 -1
  178. package/react/context/index.js +3 -3
  179. package/react/context/index.js.map +1 -1
  180. package/react/context/package.json +2 -1
  181. package/react/hoc/hoc-utils.js +1 -1
  182. package/react/hoc/{hoc.cjs.js → hoc.cjs} +12 -12
  183. package/react/hoc/hoc.cjs.map +1 -0
  184. package/react/hoc/mutation-hoc.js +2 -2
  185. package/react/hoc/mutation-hoc.js.map +1 -1
  186. package/react/hoc/package.json +2 -1
  187. package/react/hoc/query-hoc.js +1 -1
  188. package/react/hoc/query-hoc.js.map +1 -1
  189. package/react/hoc/subscription-hoc.js +1 -1
  190. package/react/hoc/subscription-hoc.js.map +1 -1
  191. package/react/hoc/withApollo.js +2 -2
  192. package/react/hoc/withApollo.js.map +1 -1
  193. package/react/hooks/hooks.cjs +502 -0
  194. package/react/hooks/hooks.cjs.map +1 -0
  195. package/react/hooks/package.json +2 -1
  196. package/react/hooks/useApolloClient.d.ts +1 -1
  197. package/react/hooks/useApolloClient.d.ts.map +1 -1
  198. package/react/hooks/useApolloClient.js +7 -5
  199. package/react/hooks/useApolloClient.js.map +1 -1
  200. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  201. package/react/hooks/useLazyQuery.js +56 -2
  202. package/react/hooks/useLazyQuery.js.map +1 -1
  203. package/react/hooks/useMutation.d.ts.map +1 -1
  204. package/react/hooks/useMutation.js +89 -21
  205. package/react/hooks/useMutation.js.map +1 -1
  206. package/react/hooks/useQuery.d.ts +2 -3
  207. package/react/hooks/useQuery.d.ts.map +1 -1
  208. package/react/hooks/useQuery.js +224 -2
  209. package/react/hooks/useQuery.js.map +1 -1
  210. package/react/hooks/useSubscription.d.ts +2 -7
  211. package/react/hooks/useSubscription.d.ts.map +1 -1
  212. package/react/hooks/useSubscription.js +89 -32
  213. package/react/hooks/useSubscription.js.map +1 -1
  214. package/react/package.json +2 -1
  215. package/react/parser/index.d.ts +1 -0
  216. package/react/parser/index.d.ts.map +1 -1
  217. package/react/parser/index.js +16 -9
  218. package/react/parser/index.js.map +1 -1
  219. package/react/parser/package.json +2 -1
  220. package/react/parser/{parser.cjs.js → parser.cjs} +18 -10
  221. package/react/parser/parser.cjs.map +1 -0
  222. package/react/{react.cjs.js → react.cjs} +3 -3
  223. package/react/react.cjs.map +1 -0
  224. package/react/ssr/RenderPromises.d.ts +7 -3
  225. package/react/ssr/RenderPromises.d.ts.map +1 -1
  226. package/react/ssr/RenderPromises.js.map +1 -1
  227. package/react/ssr/package.json +2 -1
  228. package/react/ssr/{ssr.cjs.js → ssr.cjs} +4 -4
  229. package/react/ssr/ssr.cjs.map +1 -0
  230. package/react/types/types.d.ts +7 -18
  231. package/react/types/types.d.ts.map +1 -1
  232. package/react/types/types.js.map +1 -1
  233. package/testing/{testing.cjs.js → core/core.cjs} +10 -104
  234. package/testing/core/core.cjs.map +1 -0
  235. package/{utilities/testing → testing/core}/index.d.ts +0 -1
  236. package/testing/core/index.d.ts.map +1 -0
  237. package/{utilities/testing → testing/core}/index.js +0 -1
  238. package/testing/core/index.js.map +1 -0
  239. package/{utilities/testing → testing/core}/itAsync.d.ts +0 -0
  240. package/testing/core/itAsync.d.ts.map +1 -0
  241. package/{utilities/testing → testing/core}/itAsync.js +0 -0
  242. package/testing/core/itAsync.js.map +1 -0
  243. package/{utilities/testing → testing/core}/mocking/mockClient.d.ts +0 -0
  244. package/testing/core/mocking/mockClient.d.ts.map +1 -0
  245. package/{utilities/testing → testing/core}/mocking/mockClient.js +0 -0
  246. package/testing/core/mocking/mockClient.js.map +1 -0
  247. package/{utilities/testing → testing/core}/mocking/mockFetch.d.ts +0 -0
  248. package/testing/core/mocking/mockFetch.d.ts.map +1 -0
  249. package/{utilities/testing → testing/core}/mocking/mockFetch.js +1 -1
  250. package/testing/core/mocking/mockFetch.js.map +1 -0
  251. package/{utilities/testing → testing/core}/mocking/mockLink.d.ts +0 -1
  252. package/testing/core/mocking/mockLink.d.ts.map +1 -0
  253. package/{utilities/testing → testing/core}/mocking/mockLink.js +5 -5
  254. package/testing/core/mocking/mockLink.js.map +1 -0
  255. package/{utilities/testing → testing/core}/mocking/mockQueryManager.d.ts +1 -1
  256. package/testing/core/mocking/mockQueryManager.d.ts.map +1 -0
  257. package/{utilities/testing → testing/core}/mocking/mockQueryManager.js +1 -1
  258. package/testing/core/mocking/mockQueryManager.js.map +1 -0
  259. package/{utilities/testing → testing/core}/mocking/mockSubscriptionLink.d.ts +1 -4
  260. package/testing/core/mocking/mockSubscriptionLink.d.ts.map +1 -0
  261. package/{utilities/testing → testing/core}/mocking/mockSubscriptionLink.js +1 -1
  262. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -0
  263. package/{utilities/testing → testing/core}/mocking/mockWatchQuery.d.ts +1 -1
  264. package/testing/core/mocking/mockWatchQuery.d.ts.map +1 -0
  265. package/{utilities/testing → testing/core}/mocking/mockWatchQuery.js +0 -0
  266. package/testing/core/mocking/mockWatchQuery.js.map +1 -0
  267. package/{utilities/testing → testing/core}/observableToPromise.d.ts +2 -3
  268. package/testing/core/observableToPromise.d.ts.map +1 -0
  269. package/{utilities/testing → testing/core}/observableToPromise.js +1 -1
  270. package/testing/core/observableToPromise.js.map +1 -0
  271. package/testing/core/package.json +8 -0
  272. package/testing/core/subscribeAndCount.d.ts +4 -0
  273. package/testing/core/subscribeAndCount.d.ts.map +1 -0
  274. package/{utilities/testing → testing/core}/subscribeAndCount.js +1 -1
  275. package/testing/core/subscribeAndCount.js.map +1 -0
  276. package/{utilities/testing → testing/core}/withConsoleSpy.d.ts +0 -0
  277. package/testing/core/withConsoleSpy.d.ts.map +1 -0
  278. package/{utilities/testing → testing/core}/withConsoleSpy.js +0 -0
  279. package/testing/core/withConsoleSpy.js.map +1 -0
  280. package/{utilities/testing → testing/core}/wrap.d.ts +0 -0
  281. package/testing/core/wrap.d.ts.map +1 -0
  282. package/{utilities/testing → testing/core}/wrap.js +0 -0
  283. package/testing/core/wrap.js.map +1 -0
  284. package/testing/index.d.ts +2 -1
  285. package/testing/index.d.ts.map +1 -1
  286. package/testing/index.js +2 -1
  287. package/testing/index.js.map +1 -1
  288. package/testing/package.json +2 -1
  289. package/{utilities/testing/mocking → testing/react}/MockedProvider.d.ts +5 -5
  290. package/testing/react/MockedProvider.d.ts.map +1 -0
  291. package/{utilities/testing/mocking → testing/react}/MockedProvider.js +4 -4
  292. package/testing/react/MockedProvider.js.map +1 -0
  293. package/testing/testing.cjs +58 -0
  294. package/testing/testing.cjs.map +1 -0
  295. package/utilities/common/errorHandling.d.ts +1 -1
  296. package/utilities/common/errorHandling.d.ts.map +1 -1
  297. package/utilities/common/errorHandling.js.map +1 -1
  298. package/utilities/common/makeUniqueId.js +1 -1
  299. package/utilities/common/makeUniqueId.js.map +1 -1
  300. package/utilities/common/mergeDeep.d.ts.map +1 -1
  301. package/utilities/common/mergeDeep.js +6 -1
  302. package/utilities/common/mergeDeep.js.map +1 -1
  303. package/utilities/globals/fix-graphql.js +1 -1
  304. package/utilities/globals/global.d.ts.map +1 -1
  305. package/utilities/globals/global.js +1 -1
  306. package/utilities/globals/global.js.map +1 -1
  307. package/utilities/globals/{globals.cjs.js → globals.cjs} +3 -3
  308. package/utilities/globals/globals.cjs.map +1 -0
  309. package/utilities/globals/index.js +1 -1
  310. package/utilities/globals/package.json +2 -1
  311. package/utilities/graphql/directives.js +5 -5
  312. package/utilities/graphql/directives.js.map +1 -1
  313. package/utilities/graphql/fragments.d.ts.map +1 -1
  314. package/utilities/graphql/fragments.js +4 -4
  315. package/utilities/graphql/fragments.js.map +1 -1
  316. package/utilities/graphql/getFromAST.js +8 -8
  317. package/utilities/graphql/getFromAST.js.map +1 -1
  318. package/utilities/graphql/storeUtils.js +6 -6
  319. package/utilities/graphql/storeUtils.js.map +1 -1
  320. package/utilities/graphql/transform.d.ts.map +1 -1
  321. package/utilities/graphql/transform.js.map +1 -1
  322. package/utilities/observables/Concast.d.ts +0 -1
  323. package/utilities/observables/Concast.d.ts.map +1 -1
  324. package/utilities/observables/asyncMap.d.ts +0 -1
  325. package/utilities/observables/asyncMap.d.ts.map +1 -1
  326. package/utilities/observables/subclassing.d.ts +0 -1
  327. package/utilities/observables/subclassing.d.ts.map +1 -1
  328. package/utilities/package.json +2 -1
  329. package/utilities/{utilities.cjs.js → utilities.cjs} +31 -26
  330. package/utilities/utilities.cjs.map +1 -0
  331. package/version.js +1 -1
  332. package/apollo-client.cjs.js.map +0 -1
  333. package/apollo-client.cjs.min.js +0 -1
  334. package/cache/cache.cjs.js.map +0 -1
  335. package/core/core.cjs.js.map +0 -1
  336. package/errors/errors.cjs.js.map +0 -1
  337. package/link/batch/batch.cjs.js.map +0 -1
  338. package/link/batch-http/batch-http.cjs.js.map +0 -1
  339. package/link/context/context.cjs.js.map +0 -1
  340. package/link/core/core.cjs.js.map +0 -1
  341. package/link/error/error.cjs.js.map +0 -1
  342. package/link/http/http.cjs.js.map +0 -1
  343. package/link/persisted-queries/persisted-queries.cjs.js.map +0 -1
  344. package/link/retry/retry.cjs.js.map +0 -1
  345. package/link/schema/schema.cjs.js.map +0 -1
  346. package/link/utils/utils.cjs.js.map +0 -1
  347. package/link/ws/ws.cjs.js.map +0 -1
  348. package/main.cjs.js.map +0 -1
  349. package/react/components/components.cjs.js.map +0 -1
  350. package/react/context/context.cjs.js.map +0 -1
  351. package/react/data/MutationData.d.ts +0 -29
  352. package/react/data/MutationData.d.ts.map +0 -1
  353. package/react/data/MutationData.js +0 -115
  354. package/react/data/MutationData.js.map +0 -1
  355. package/react/data/OperationData.d.ts +0 -24
  356. package/react/data/OperationData.d.ts.map +0 -1
  357. package/react/data/OperationData.js +0 -53
  358. package/react/data/OperationData.js.map +0 -1
  359. package/react/data/QueryData.d.ts +0 -44
  360. package/react/data/QueryData.d.ts.map +0 -1
  361. package/react/data/QueryData.js +0 -298
  362. package/react/data/QueryData.js.map +0 -1
  363. package/react/data/SubscriptionData.d.ts +0 -28
  364. package/react/data/SubscriptionData.d.ts.map +0 -1
  365. package/react/data/SubscriptionData.js +0 -122
  366. package/react/data/SubscriptionData.js.map +0 -1
  367. package/react/data/data.cjs.js +0 -581
  368. package/react/data/data.cjs.js.map +0 -1
  369. package/react/data/index.d.ts +0 -6
  370. package/react/data/index.d.ts.map +0 -1
  371. package/react/data/index.js +0 -6
  372. package/react/data/index.js.map +0 -1
  373. package/react/data/package.json +0 -7
  374. package/react/hoc/hoc.cjs.js.map +0 -1
  375. package/react/hooks/hooks.cjs.js +0 -195
  376. package/react/hooks/hooks.cjs.js.map +0 -1
  377. package/react/hooks/utils/useAfterFastRefresh.d.ts +0 -3
  378. package/react/hooks/utils/useAfterFastRefresh.d.ts.map +0 -1
  379. package/react/hooks/utils/useAfterFastRefresh.js +0 -19
  380. package/react/hooks/utils/useAfterFastRefresh.js.map +0 -1
  381. package/react/hooks/utils/useBaseQuery.d.ts +0 -7
  382. package/react/hooks/utils/useBaseQuery.d.ts.map +0 -1
  383. package/react/hooks/utils/useBaseQuery.js +0 -55
  384. package/react/hooks/utils/useBaseQuery.js.map +0 -1
  385. package/react/hooks/utils/useDeepMemo.d.ts +0 -2
  386. package/react/hooks/utils/useDeepMemo.d.ts.map +0 -1
  387. package/react/hooks/utils/useDeepMemo.js +0 -10
  388. package/react/hooks/utils/useDeepMemo.js.map +0 -1
  389. package/react/parser/parser.cjs.js.map +0 -1
  390. package/react/react.cjs.js.map +0 -1
  391. package/react/ssr/ssr.cjs.js.map +0 -1
  392. package/testing/testing.cjs.js.map +0 -1
  393. package/utilities/globals/globals.cjs.js.map +0 -1
  394. package/utilities/testing/index.d.ts.map +0 -1
  395. package/utilities/testing/index.js.map +0 -1
  396. package/utilities/testing/itAsync.d.ts.map +0 -1
  397. package/utilities/testing/itAsync.js.map +0 -1
  398. package/utilities/testing/mocking/MockedProvider.d.ts.map +0 -1
  399. package/utilities/testing/mocking/MockedProvider.js.map +0 -1
  400. package/utilities/testing/mocking/mockClient.d.ts.map +0 -1
  401. package/utilities/testing/mocking/mockClient.js.map +0 -1
  402. package/utilities/testing/mocking/mockFetch.d.ts.map +0 -1
  403. package/utilities/testing/mocking/mockFetch.js.map +0 -1
  404. package/utilities/testing/mocking/mockLink.d.ts.map +0 -1
  405. package/utilities/testing/mocking/mockLink.js.map +0 -1
  406. package/utilities/testing/mocking/mockQueryManager.d.ts.map +0 -1
  407. package/utilities/testing/mocking/mockQueryManager.js.map +0 -1
  408. package/utilities/testing/mocking/mockSubscriptionLink.d.ts.map +0 -1
  409. package/utilities/testing/mocking/mockSubscriptionLink.js.map +0 -1
  410. package/utilities/testing/mocking/mockWatchQuery.d.ts.map +0 -1
  411. package/utilities/testing/mocking/mockWatchQuery.js.map +0 -1
  412. package/utilities/testing/observableToPromise.d.ts.map +0 -1
  413. package/utilities/testing/observableToPromise.js.map +0 -1
  414. package/utilities/testing/subscribeAndCount.d.ts +0 -5
  415. package/utilities/testing/subscribeAndCount.d.ts.map +0 -1
  416. package/utilities/testing/subscribeAndCount.js.map +0 -1
  417. package/utilities/testing/withConsoleSpy.d.ts.map +0 -1
  418. package/utilities/testing/withConsoleSpy.js.map +0 -1
  419. package/utilities/testing/wrap.d.ts.map +0 -1
  420. package/utilities/testing/wrap.js.map +0 -1
  421. package/utilities/utilities.cjs.js.map +0 -1
@@ -81,11 +81,12 @@ var ObservableQuery = (function (_super) {
81
81
  NetworkStatus.ready;
82
82
  var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });
83
83
  var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? "cache-first" : _a;
84
- var shouldReturnCachedData = lastResult || (fetchPolicy !== 'network-only' &&
85
- fetchPolicy !== 'no-cache' &&
86
- fetchPolicy !== 'standby');
87
- if (shouldReturnCachedData &&
88
- !this.queryManager.transform(this.options.query).hasForcedResolvers) {
84
+ if (fetchPolicy === 'network-only' ||
85
+ fetchPolicy === 'no-cache' ||
86
+ fetchPolicy === 'standby' ||
87
+ this.queryManager.transform(this.options.query).hasForcedResolvers) {
88
+ }
89
+ else {
89
90
  var diff = this.queryInfo.getDiff();
90
91
  if (diff.complete || this.options.returnPartialData) {
91
92
  result.data = diff.result;
@@ -94,15 +95,16 @@ var ObservableQuery = (function (_super) {
94
95
  result.data = void 0;
95
96
  }
96
97
  if (diff.complete) {
97
- if (result.networkStatus === NetworkStatus.loading &&
98
+ delete result.partial;
99
+ if (diff.complete &&
100
+ result.networkStatus === NetworkStatus.loading &&
98
101
  (fetchPolicy === 'cache-first' ||
99
102
  fetchPolicy === 'cache-only')) {
100
103
  result.networkStatus = NetworkStatus.ready;
101
104
  result.loading = false;
102
105
  }
103
- delete result.partial;
104
106
  }
105
- else if (fetchPolicy !== "no-cache") {
107
+ else {
106
108
  result.partial = true;
107
109
  }
108
110
  if (__DEV__ &&
@@ -149,17 +151,20 @@ var ObservableQuery = (function (_super) {
149
151
  pollInterval: 0,
150
152
  };
151
153
  var fetchPolicy = this.options.fetchPolicy;
152
- if (fetchPolicy === 'no-cache') {
154
+ if (fetchPolicy === 'standby' || fetchPolicy === 'cache-and-network') {
155
+ reobserveOptions.fetchPolicy = fetchPolicy;
156
+ }
157
+ else if (fetchPolicy === 'no-cache') {
153
158
  reobserveOptions.fetchPolicy = 'no-cache';
154
159
  }
155
- else if (fetchPolicy !== 'cache-and-network') {
160
+ else {
156
161
  reobserveOptions.fetchPolicy = 'network-only';
157
162
  }
158
163
  if (__DEV__ && variables && hasOwnProperty.call(variables, "variables")) {
159
164
  var queryDef = getQueryDefinition(this.options.query);
160
165
  var vars = queryDef.variableDefinitions;
161
166
  if (!vars || !vars.some(function (v) { return v.variable.name.value === "variables"; })) {
162
- __DEV__ && invariant.warn("Called refetch(" + JSON.stringify(variables) + ") for query " + (((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || JSON.stringify(queryDef)) + ", which does not declare a $variables variable.\nDid you mean to call refetch(variables) instead of refetch({ variables })?");
167
+ __DEV__ && invariant.warn("Called refetch(".concat(JSON.stringify(variables), ") for query ").concat(((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || JSON.stringify(queryDef), ", which does not declare a $variables variable.\nDid you mean to call refetch(variables) instead of refetch({ variables })?"));
163
168
  }
164
169
  }
165
170
  if (variables && !equal(this.options.variables, variables)) {
@@ -306,7 +311,7 @@ var ObservableQuery = (function (_super) {
306
311
  pollingInfo.interval === pollInterval) {
307
312
  return;
308
313
  }
309
- __DEV__ ? invariant(pollInterval, 'Attempted to start a polling query without a polling interval.') : invariant(pollInterval, 12);
314
+ __DEV__ ? invariant(pollInterval, 'Attempted to start a polling query without a polling interval.') : invariant(pollInterval, 10);
310
315
  var info = pollingInfo || (this.pollingInfo = {});
311
316
  info.interval = pollInterval;
312
317
  var maybeFetch = function () {
@@ -423,8 +428,8 @@ function defaultSubscriptionObserverErrorCallback(error) {
423
428
  __DEV__ && invariant.error('Unhandled error', error.message, error.stack);
424
429
  }
425
430
  export function logMissingFieldErrors(missing) {
426
- if (__DEV__ && isNonEmptyArray(missing)) {
427
- __DEV__ && invariant.debug("Missing cache result fields: " + missing.map(function (m) { return m.path.join('.'); }).join(', '), missing);
431
+ if (__DEV__ && missing) {
432
+ __DEV__ && invariant.debug("Missing cache result fields: ".concat(JSON.stringify(missing)), missing);
428
433
  }
429
434
  }
430
435
  export function applyNextFetchPolicy(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQuery.js","sourceRoot":"","sources":["../../src/core/ObservableQuery.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAEL,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,UAAU,EAGV,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAcpB,IAAA,MAAM,GAEJ,MAAM,OAFF,EACN,cAAc,GACZ,MAAM,eADM,CACL;AAmBX,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAQnC;IAGU,mCAAoC;IAkC5C,yBAAY,EAQX;YAPC,YAAY,kBAAA,EACZ,SAAS,eAAA,EACT,OAAO,aAAA;QAHT,YASE,kBAAM,UAAC,QAA4C;YAGjD,IAAI;gBACF,IAAI,WAAW,GAAI,QAAgB,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC5D,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBACrC,WAAW,CAAC,KAAK,GAAG,wCAAwC,CAAC;iBAC9D;aACF;YAAC,WAAM,GAAE;YAEV,IAAM,KAAK,GAAG,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACnC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAG7B,IAAM,IAAI,GAAG,KAAI,CAAC,IAAI,CAAC;YACvB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gBACtB,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9C;iBAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC9B,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC7C;YAID,IAAI,KAAK,EAAE;gBAKT,KAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;aAClC;YAED,OAAO;gBACL,IAAI,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE;oBAC3D,KAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;YACH,CAAC,CAAC;QACJ,CAAC,CAAC,SAiBH;QA/EO,eAAS,GAAG,IAAI,GAAG,EAAsC,CAAC;QAC1D,mBAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;QAgExD,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAGxB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;QAEnE,IAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,KAAI,CAAC,SAAS,GAAG,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAEzD,KAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC;QAG/D,KAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;IAC7B,CAAC;IAzFD,sBAAW,sCAAS;aAApB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAChC,CAAC;;;OAAA;IAyFM,gCAAM,GAAb;QAAA,iBAgCC;QA/BC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAIjC,IAAM,QAAQ,GAAuC;gBACnD,IAAI,EAAE,UAAC,MAAgC;oBACrC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAYhB,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE;wBACxB,KAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;qBAC7C;oBAED,UAAU,CAAC;wBACT,YAAY,CAAC,WAAW,EAAE,CAAC;oBAC7B,CAAC,EAAE,CAAC,CAAC,CAAC;gBACR,CAAC;gBACD,KAAK,EAAE,MAAM;aACd,CAAC;YACF,IAAM,YAAY,GAAG,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,0CAAgB,GAAvB,UAAwB,gBAAuB;QAAvB,iCAAA,EAAA,uBAAuB;QAE7C,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAM,aAAa,GACjB,IAAI,CAAC,SAAS,CAAC,aAAa;YAC5B,CAAC,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC;YACxC,aAAa,CAAC,KAAK,CAAC;QAEtB,IAAM,MAAM,GAAG,sBACV,UAAU,KACb,OAAO,EAAE,wBAAwB,CAAC,aAAa,CAAC,EAChD,aAAa,eAAA,GACc,CAAC;QAEtB,IAAA,KAAgC,IAAI,CAAC,OAAO,YAAjB,EAA3B,WAAW,mBAAG,aAAa,KAAA,CAAkB;QAMrD,IAAM,sBAAsB,GAAG,UAAU,IAAI,CAC3C,WAAW,KAAK,cAAc;YAC9B,WAAW,KAAK,UAAU;YAC1B,WAAW,KAAK,SAAS,CAC1B,CAAC;QACF,IACE,sBAAsB;YAKtB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,kBAAkB,EACnE;YACA,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAEtC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;gBACnD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;aAC3B;YAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;gBAC1B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAQ,CAAC;aAC7B;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAIjB,IAAI,MAAM,CAAC,aAAa,KAAK,aAAa,CAAC,OAAO;oBAC9C,CAAC,WAAW,KAAK,aAAa;wBAC7B,WAAW,KAAK,YAAY,CAAC,EAAE;oBAClC,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;oBAC3C,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;iBACxB;gBACD,OAAO,MAAM,CAAC,OAAO,CAAC;aACvB;iBAAM,IAAI,WAAW,KAAK,UAAU,EAAE;gBAIrC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;YAED,IACE,OAAO;gBACP,CAAC,IAAI,CAAC,QAAQ;gBACd,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc;gBAC5B,CAAC,MAAM,CAAC,OAAO;gBACf,CAAC,MAAM,CAAC,IAAI;gBACZ,CAAC,MAAM,CAAC,KAAK,EACb;gBACA,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrC;SACF;QAED,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC/B;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAIM,mDAAyB,GAAhC,UAAiC,SAAmC;QAClE,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAEO,iCAAO,GAAf,UACE,GAAM,EACN,kBAA4B;QAE5B,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI;YACJ,IAAI,CAAC,GAAG,CAAC;YACT,CAAC,CAAC,kBAAkB,IAAI,KAAK,CAAC,IAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;YACnE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;IACH,CAAC;IAEM,uCAAa,GAApB,UAAqB,kBAA4B;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACpD,CAAC;IAEM,sCAAY,GAAnB,UAAoB,kBAA4B;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnD,CAAC;IAEM,0CAAgB,GAAvB;QACE,OAAO,IAAI,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,+CAAqB,GAA5B;QACE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IASM,iCAAO,GAAd,UAAe,SAA+B;;QAC5C,IAAM,gBAAgB,GAAkD;YAEtE,YAAY,EAAE,CAAC;SAChB,CAAC;QAKM,IAAA,WAAW,GAAK,IAAI,CAAC,OAAO,YAAjB,CAAkB;QACrC,IAAI,WAAW,KAAK,UAAU,EAAE;YAC9B,gBAAgB,CAAC,WAAW,GAAG,UAAU,CAAC;SAC3C;aAAM,IAAI,WAAW,KAAK,mBAAmB,EAAE;YAC9C,gBAAgB,CAAC,WAAW,GAAG,cAAc,CAAC;SAC/C;QAED,IAAI,OAAO,IAAI,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;YACvE,IAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxD,IAAM,IAAI,GAAG,QAAQ,CAAC,mBAAmB,CAAC;YAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,EAArC,CAAqC,CAAC,EAAE;gBACnE,SAAS,CAAC,IAAI,CAAC,oBACb,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,qBAEzB,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,KAAK,KAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iIAEiB,CAAC,CAAC;aACtE;SACF;QAED,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;YAE1D,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,sBACjD,IAAI,CAAC,OAAO,CAAC,SAAS,GACtB,SAAS,CACC,CAAC;SACjB;QAED,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAEM,mCAAS,GAAhB,UACE,gBACqC;QAFvC,iBA8EC;QA1EC,IAAM,eAAe,GAAG,sBACnB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,gCAC1C,IAAI,CAAC,OAAO,GACZ,gBAAgB,KACnB,SAAS,wBACJ,IAAI,CAAC,OAAO,CAAC,SAAS,GACtB,gBAAgB,CAAC,SAAS,IAEhC,CAAC,KAMF,WAAW,EAAE,UAAU,GACH,CAAC;QAEvB,IAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;QAIhD,IAAI,eAAe,CAAC,2BAA2B,EAAE;YAC/C,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CACjC,GAAG,EACH,eAAe,EACf,aAAa,CAAC,SAAS,CACxB,CAAC,IAAI,CAAC,UAAA,eAAe;YACpB,IAAM,IAAI,GAAG,eAAe,CAAC,IAAa,CAAC;YACnC,IAAA,WAAW,GAAK,gBAAgB,YAArB,CAAsB;YAEzC,IAAI,WAAW,EAAE;gBACf,IAAI,OAAO;oBACP,CAAC,sBAAsB,EAAE;oBAC3B,SAAS,CAAC,IAAI,CACxB,4iBAUiD,CAAC,CAAC;oBACzC,sBAAsB,GAAG,IAAI,CAAC;iBAC/B;gBACD,KAAI,CAAC,WAAW,CAAC,UAAA,QAAQ,IAAI,OAAA,WAAW,CAAC,QAAQ,EAAE;oBACjD,eAAe,EAAE,IAAI;oBACrB,SAAS,EAAE,eAAe,CAAC,SAAuB;iBACnD,CAAC,EAH2B,CAG3B,CAAC,CAAC;aACL;iBAAM;gBAML,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;oBACjC,KAAK,EAAE,eAAe,CAAC,KAAK;oBAC5B,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,IAAI,MAAA;iBACL,CAAC,CAAC;aACJ;YAED,OAAO,eAA2C,CAAC;QAErD,CAAC,CAAC,CAAC,OAAO,CAAC;YACT,KAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACjC,KAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAKM,yCAAe,GAAtB,UAIE,OAIC;QARH,iBA6CC;QAnCC,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY;aACnC,wBAAwB,CAAC;YACxB,KAAK,EAAE,OAAO,CAAC,QAAQ;YACvB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;aACD,SAAS,CAAC;YACT,IAAI,EAAE,UAAC,gBAA6C;gBAC1C,IAAA,WAAW,GAAK,OAAO,YAAZ,CAAa;gBAChC,IAAI,WAAW,EAAE;oBACf,KAAI,CAAC,WAAW,CACd,UAAC,QAAQ,EAAE,EAAa;4BAAX,SAAS,eAAA;wBACpB,OAAA,WAAW,CAAC,QAAQ,EAAE;4BACpB,gBAAgB,kBAAA;4BAChB,SAAS,WAAA;yBACV,CAAC;oBAHF,CAGE,CACL,CAAC;iBACH;YACH,CAAC;YACD,KAAK,EAAE,UAAC,GAAQ;gBACd,IAAI,OAAO,CAAC,OAAO,EAAE;oBACnB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACrB,OAAO;iBACR;gBACD,SAAS,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;YAC/D,CAAC;SACF,CAAC,CAAC;QAEL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAErC,OAAO;YACL,IAAI,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;gBAC3C,YAAY,CAAC,WAAW,EAAE,CAAC;aAC5B;QACH,CAAC,CAAC;IACJ,CAAC;IAEM,oCAAU,GAAjB,UACE,UAAyD;QAEzD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAuBM,sCAAY,GAAnB,UACE,SAAqB;QAErB,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;YAIpC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI;gBACxB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;gBACf,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACvB;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QAGnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YAEpB,WAAW,EAAE,IAAI,CAAC,kBAAkB;YACpC,SAAS,WAAA;SACV,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAEM,qCAAW,GAAlB,UACE,KAGU;QAEF,IAAA,YAAY,GAAK,IAAI,aAAT,CAAU;QACtB,IAAA,MAAM,GAAK,YAAY,CAAC,KAAK,CAAC,IAAI,CAAQ;YAChD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,KAAK;SAClB,CAAC,OALY,CAKX;QAEH,IAAM,SAAS,GAAG,KAAK,CAAC,MAAO,EAAE;YAC/B,SAAS,EAAG,IAAY,CAAC,SAAS;SACnC,CAAC,CAAC;QAEH,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC5B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,gBAAgB,EAAE,CAAC;SACjC;IACH,CAAC;IAEM,sCAAY,GAAnB,UAAoB,YAAoB;QACtC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEM,qCAAW,GAAlB;QACE,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,+BAAK,GAAb,UACE,OAA6C,EAC7C,gBAAgC;QAEhC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAC3C,IAAI,CAAC,OAAO,EACZ,OAAO,EACP,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAGO,uCAAa,GAArB;QAAA,iBAuDC;QArDC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAC7B,OAAO;SACR;QAEK,IAAA,KAKF,IAAI,EAJN,WAAW,iBAAA,EAET,YAAY,0BAER,CAAC;QAET,IAAI,CAAC,YAAY,EAAE;YACjB,IAAI,WAAW,EAAE;gBACf,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC,WAAW,CAAC;aACzB;YACD,OAAO;SACR;QAED,IAAI,WAAW;YACX,WAAW,CAAC,QAAQ,KAAK,YAAY,EAAE;YACzC,OAAO;SACR;QAED,SAAS,CACP,YAAY,EACZ,gEAAgE,CACjE,CAAC;QAEF,IAAM,IAAI,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAS,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;QAE7B,IAAM,UAAU,GAAG;YACjB,IAAI,KAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,wBAAwB,CAAC,KAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;oBAC3D,KAAI,CAAC,SAAS,CAAC;wBACb,WAAW,EAAE,cAAc;qBAC5B,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBACzC;qBAAM;oBACL,IAAI,EAAE,CAAC;iBACR;aACF;YAAA,CAAC;QACJ,CAAC,CAAC;QAEF,IAAM,IAAI,GAAG;YACX,IAAM,IAAI,GAAG,KAAI,CAAC,WAAW,CAAC;YAC9B,IAAI,IAAI,EAAE;gBACR,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtD;QACH,CAAC,CAAC;QAEF,IAAI,EAAE,CAAC;IACT,CAAC;IAEO,0CAAgB,GAAxB,UACE,SAAmC,EACnC,SAA0B;QAA1B,0BAAA,EAAA,YAAY,IAAI,CAAC,SAAS;QAE1B,IAAI,CAAC,IAAI,yBACJ,IAAI,CAAC,IAAI,KACZ,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,sBAAsB;gBAC9C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EACxB,SAAS,WAAA,GACV,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,mCAAS,GAAhB,UACE,UAA0D,EAC1D,gBAAgC;QAFlC,iBA0EC;QAtEC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAM,oBAAoB,GAIxB,gBAAgB,KAAK,aAAa,CAAC,OAAO;YAG1C,gBAAgB,KAAK,aAAa,CAAC,SAAS;YAG5C,gBAAgB,KAAK,aAAa,CAAC,IAAI,CAAC;QAG1C,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAE5C,IAAM,OAAO,GAAG,oBAAoB;YAGlC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;YACnC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,oBAAoB,EAAE;YAEzB,IAAI,CAAC,aAAa,EAAE,CAAC;YAIrB,IACE,UAAU;gBACV,UAAU,CAAC,SAAS;gBACpB,CAAC,UAAU,CAAC,WAAW;gBACvB,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,EAC1C;gBACA,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAC9C,IAAI,gBAAgB,KAAK,KAAK,CAAC,EAAE;oBAC/B,gBAAgB,GAAG,aAAa,CAAC,YAAY,CAAC;iBAC/C;aACF;SACF;QAED,IAAM,SAAS,GAAG,OAAO,CAAC,SAAS,iBAAS,OAAO,CAAC,SAAS,CAAE,CAAC;QAChE,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACtD,IAAM,QAAQ,GAAuC;YACnD,IAAI,EAAE,UAAA,MAAM;gBACV,KAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YACD,KAAK,EAAE,UAAA,KAAK;gBACV,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE;YAMzB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;aAClD;YAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;QAED,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE9B,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAIO,iCAAO,GAAf;QAKE,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAC5B,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAEO,sCAAY,GAApB,UACE,MAAgC,EAChC,SAAiC;QAEjC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE;YACjE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACzC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SACxD;IACH,CAAC;IAEO,qCAAW,GAAnB,UACE,KAAkB,EAClB,SAAiC;QAIjC,IAAM,WAAW,GAAG,sBACf,IAAI,CAAC,aAAa,EAAE,KACvB,KAAK,OAAA,EACL,MAAM,EAAE,KAAK,CAAC,aAAa,EAC3B,aAAa,EAAE,aAAa,CAAC,KAAK,EAClC,OAAO,EAAE,KAAK,GACa,CAAC;QAE9B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAE9C,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,IAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IAC5E,CAAC;IAEM,sCAAY,GAAnB;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;IACjC,CAAC;IAEO,uCAAa,GAArB;QACE,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,OAAO,CAAC;YACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,WAAW,EAAE,EAAjB,CAAiB,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IACH,sBAAC;AAAD,CAAC,AA1uBD,CAGU,UAAU,GAuuBnB;;AAID,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAEvC,SAAS,wCAAwC,CAAC,KAAkB;IAClE,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAwC;IAExC,IAAI,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE;QACvC,SAAS,CAAC,KAAK,CAAC,kCACd,OAAO,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAhB,CAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAC5C,EAAE,OAAO,CAAC,CAAC;KACd;AACH,CAAC;AAMD,MAAM,UAAU,oBAAoB,CAClC,OAIC;IAGC,IAAA,KAEE,OAAO,YAFkB,EAA3B,WAAW,mBAAG,aAAa,KAAA,EAC3B,eAAe,GACb,OAAO,gBADM,CACL;IAEZ,IAAI,eAAe,EAAE;QAWnB,OAAO,CAAC,WAAW,GAAG,OAAO,eAAe,KAAK,UAAU;YACzD,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YAC5C,CAAC,CAAC,eAAe,CAAC;KACrB;AACH,CAAC","sourcesContent":["import { invariant } from '../utilities/globals';\n\nimport { equal } from '@wry/equality';\n\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport {\n Concast,\n compact,\n cloneDeep,\n getOperationDefinition,\n Observable,\n Observer,\n ObservableSubscription,\n iterateObserversSafely,\n isNonEmptyArray,\n fixObservableSubclass,\n getQueryDefinition,\n} from '../utilities';\nimport { ApolloError } from '../errors';\nimport { QueryManager } from './QueryManager';\nimport { ApolloQueryResult, OperationVariables } from './types';\nimport {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n WatchQueryFetchPolicy,\n} from './watchQueryOptions';\nimport { QueryInfo } from './QueryInfo';\nimport { MissingFieldError } from '../cache';\n\nconst {\n assign,\n hasOwnProperty,\n} = Object;\n\nexport interface FetchMoreOptions<\n TData = any,\n TVariables = OperationVariables\n> {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult?: TData;\n variables?: TVariables;\n },\n ) => TData;\n}\n\nexport interface UpdateQueryOptions<TVariables> {\n variables?: TVariables;\n}\n\nlet warnedAboutUpdateQuery = false;\n\ninterface Last<TData, TVariables> {\n result: ApolloQueryResult<TData>;\n variables?: TVariables;\n error?: ApolloError;\n}\n\nexport class ObservableQuery<\n TData = any,\n TVariables = OperationVariables\n> extends Observable<ApolloQueryResult<TData>> {\n public readonly options: WatchQueryOptions<TVariables, TData>;\n public readonly queryId: string;\n public readonly queryName?: string;\n\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n public get variables(): TVariables | undefined {\n return this.options.variables;\n }\n\n // Original value of this.options.fetchPolicy (defaulting to \"cache-first\"),\n // from whenever the ObservableQuery was first created.\n private initialFetchPolicy: WatchQueryFetchPolicy;\n\n private isTornDown: boolean;\n private queryManager: QueryManager<any>;\n private observers = new Set<Observer<ApolloQueryResult<TData>>>();\n private subscriptions = new Set<ObservableSubscription>();\n\n private last?: Last<TData, TVariables>;\n\n private queryInfo: QueryInfo;\n\n // When this.concast is defined, this.observer is the Observer currently\n // subscribed to that Concast.\n private concast?: Concast<ApolloQueryResult<TData>>;\n private observer?: Observer<ApolloQueryResult<TData>>;\n\n private pollingInfo?: {\n interval: number;\n timeout: ReturnType<typeof setTimeout>;\n };\n\n constructor({\n queryManager,\n queryInfo,\n options,\n }: {\n queryManager: QueryManager<any>;\n queryInfo: QueryInfo;\n options: WatchQueryOptions<TVariables, TData>;\n }) {\n super((observer: Observer<ApolloQueryResult<TData>>) => {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = (observer as any)._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n } catch {}\n\n const first = !this.observers.size;\n this.observers.add(observer);\n\n // Deliver most recent error or result.\n const last = this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n } else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n this.reobserve().catch(() => {});\n }\n\n return () => {\n if (this.observers.delete(observer) && !this.observers.size) {\n this.tearDownQuery();\n }\n };\n });\n\n // active state\n this.isTornDown = false;\n\n // query information\n this.options = options;\n this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n\n const opDef = getOperationDefinition(options.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\n\n this.initialFetchPolicy = options.fetchPolicy || \"cache-first\";\n\n // related classes\n this.queryManager = queryManager;\n this.queryInfo = queryInfo;\n }\n\n public result(): Promise<ApolloQueryResult<TData>> {\n return new Promise((resolve, reject) => {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: (result: ApolloQueryResult<TData>) => {\n resolve(result);\n\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n this.observers.delete(observer);\n if (!this.observers.size) {\n this.queryManager.removeQuery(this.queryId);\n }\n\n setTimeout(() => {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n const subscription = this.subscribe(observer);\n });\n }\n\n public getCurrentResult(saveAsLastResult = true): ApolloQueryResult<TData> {\n // Use the last result as long as the variables match this.variables.\n const lastResult = this.getLastResult(true);\n\n const networkStatus =\n this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n\n const result = {\n ...lastResult,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus,\n } as ApolloQueryResult<TData>;\n\n const { fetchPolicy = \"cache-first\" } = this.options;\n // The presence of lastResult means a result has been received and\n // this.options.variables haven't changed since then, so its absence means\n // either there hasn't been a result yet (so these policies definitely\n // should skip the cache) or there's been a result but it was for different\n // variables (again, skipping the cache seems right).\n const shouldReturnCachedData = lastResult || (\n fetchPolicy !== 'network-only' &&\n fetchPolicy !== 'no-cache' &&\n fetchPolicy !== 'standby'\n );\n if (\n shouldReturnCachedData &&\n // If this.options.query has @client(always: true) fields, we cannot\n // trust diff.result, since it was read from the cache without running\n // local resolvers (and it's too late to run resolvers now, since we must\n // return a result synchronously).\n !this.queryManager.transform(this.options.query).hasForcedResolvers\n ) {\n const diff = this.queryInfo.getDiff();\n\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n\n if (equal(result.data, {})) {\n result.data = void 0 as any;\n }\n\n if (diff.complete) {\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next\n // result we receive will have NetworkStatus.ready and !loading.\n if (result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n delete result.partial;\n } else if (fetchPolicy !== \"no-cache\") {\n // Since result.partial comes from diff.complete, and we shouldn't be\n // using cache data to provide a DiffResult when the fetchPolicy is\n // \"no-cache\", avoid annotating result.partial for \"no-cache\" results.\n result.partial = true;\n }\n\n if (\n __DEV__ &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error\n ) {\n logMissingFieldErrors(diff.missing);\n }\n }\n\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n\n return result;\n }\n\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n public isDifferentFromLastResult(newResult: ApolloQueryResult<TData>) {\n return !this.last || !equal(this.last.result, newResult);\n }\n\n private getLast<K extends keyof Last<TData, TVariables>>(\n key: K,\n variablesMustMatch?: boolean,\n ) {\n const last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last!.variables, this.variables))) {\n return last[key];\n }\n }\n\n public getLastResult(variablesMustMatch?: boolean): ApolloQueryResult<TData> | undefined {\n return this.getLast(\"result\", variablesMustMatch);\n }\n\n public getLastError(variablesMustMatch?: boolean): ApolloError | undefined {\n return this.getLast(\"error\", variablesMustMatch);\n }\n\n public resetLastResults(): void {\n delete this.last;\n this.isTornDown = false;\n }\n\n public resetQueryStoreErrors() {\n this.queryManager.resetErrors(this.queryId);\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public refetch(variables?: Partial<TVariables>): Promise<ApolloQueryResult<TData>> {\n const reobserveOptions: Partial<WatchQueryOptions<TVariables, TData>> = {\n // Always disable polling for refetches.\n pollInterval: 0,\n };\n\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n const { fetchPolicy } = this.options;\n if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n } else if (fetchPolicy !== 'cache-and-network') {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n\n if (__DEV__ && variables && hasOwnProperty.call(variables, \"variables\")) {\n const queryDef = getQueryDefinition(this.options.query);\n const vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(v => v.variable.name.value === \"variables\")) {\n invariant.warn(`Called refetch(${\n JSON.stringify(variables)\n }) for query ${\n queryDef.name?.value || JSON.stringify(queryDef)\n }, which does not declare a $variables variable.\nDid you mean to call refetch(variables) instead of refetch({ variables })?`);\n }\n }\n\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = {\n ...this.options.variables,\n ...variables,\n } as TVariables;\n }\n\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n }\n\n public fetchMore(\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> &\n FetchMoreOptions<TData, TVariables>,\n ): Promise<ApolloQueryResult<TData>> {\n const combinedOptions = {\n ...(fetchMoreOptions.query ? fetchMoreOptions : {\n ...this.options,\n ...fetchMoreOptions,\n variables: {\n ...this.options.variables,\n ...fetchMoreOptions.variables,\n },\n }),\n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\",\n } as WatchQueryOptions;\n\n const qid = this.queryManager.generateQueryId();\n\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.queryInfo.networkStatus = NetworkStatus.fetchMore;\n this.observe();\n }\n\n return this.queryManager.fetchQuery(\n qid,\n combinedOptions,\n NetworkStatus.fetchMore,\n ).then(fetchMoreResult => {\n const data = fetchMoreResult.data as TData;\n const { updateQuery } = fetchMoreOptions;\n\n if (updateQuery) {\n if (__DEV__ &&\n !warnedAboutUpdateQuery) {\n invariant.warn(\n`The updateQuery callback for fetchMore is deprecated, and will be removed\nin the next major version of Apollo Client.\n\nPlease convert updateQuery functions to field policies with appropriate\nread and merge functions, or use/adapt a helper function (such as\nconcatPagination, offsetLimitPagination, or relayStylePagination) from\n@apollo/client/utilities.\n\nThe field policy system handles pagination more effectively than a\nhand-written updateQuery function, and you only need to define the policy\nonce, rather than every time you call fetchMore.`);\n warnedAboutUpdateQuery = true;\n }\n this.updateQuery(previous => updateQuery(previous, {\n fetchMoreResult: data,\n variables: combinedOptions.variables as TVariables,\n }));\n } else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n this.queryManager.cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data,\n });\n }\n\n return fetchMoreResult as ApolloQueryResult<TData>;\n\n }).finally(() => {\n this.queryManager.stopQuery(qid);\n this.reobserve();\n });\n }\n\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n public subscribeToMore<\n TSubscriptionData = TData,\n TSubscriptionVariables = TVariables\n >(\n options: SubscribeToMoreOptions<\n TData,\n TSubscriptionVariables,\n TSubscriptionData\n >,\n ) {\n const subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: (subscriptionData: { data: TSubscriptionData }) => {\n const { updateQuery } = options;\n if (updateQuery) {\n this.updateQuery<TSubscriptionVariables>(\n (previous, { variables }) =>\n updateQuery(previous, {\n subscriptionData,\n variables,\n }),\n );\n }\n },\n error: (err: any) => {\n if (options.onError) {\n options.onError(err);\n return;\n }\n invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n\n this.subscriptions.add(subscription);\n\n return () => {\n if (this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n }\n\n public setOptions(\n newOptions: Partial<WatchQueryOptions<TVariables, TData>>,\n ): Promise<ApolloQueryResult<TData>> {\n return this.reobserve(newOptions);\n }\n\n /**\n * This is for *internal* use only. Most users should instead use `refetch`\n * in order to be properly notified of results even when they come from cache.\n *\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. If you want to force new results, use `refetch`.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @private\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public setVariables(\n variables: TVariables,\n ): Promise<ApolloQueryResult<TData> | void> {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n\n this.options.variables = variables;\n\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.initialFetchPolicy,\n variables,\n }, NetworkStatus.setVariables);\n }\n\n public updateQuery<TVars = TVariables>(\n mapFn: (\n previousQueryResult: TData,\n options: Pick<WatchQueryOptions<TVars, TData>, \"variables\">,\n ) => TData,\n ): void {\n const { queryManager } = this;\n const { result } = queryManager.cache.diff<TData>({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n });\n\n const newResult = mapFn(result!, {\n variables: (this as any).variables,\n });\n\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n\n queryManager.broadcastQueries();\n }\n }\n\n public startPolling(pollInterval: number) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n }\n\n public stopPolling() {\n this.options.pollInterval = 0;\n this.updatePolling();\n }\n\n private fetch(\n options: WatchQueryOptions<TVariables, TData>,\n newNetworkStatus?: NetworkStatus,\n ): Concast<ApolloQueryResult<TData>> {\n this.queryManager.setObservableQuery(this);\n return this.queryManager.fetchQueryObservable(\n this.queryId,\n options,\n newNetworkStatus,\n );\n }\n\n // Turns polling on or off based on this.options.pollInterval.\n private updatePolling() {\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n\n const {\n pollingInfo,\n options: {\n pollInterval,\n },\n } = this;\n\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n\n invariant(\n pollInterval,\n 'Attempted to start a polling query without a polling interval.',\n );\n\n const info = pollingInfo || (this.pollingInfo = {} as any);\n info.interval = pollInterval;\n\n const maybeFetch = () => {\n if (this.pollingInfo) {\n if (!isNetworkRequestInFlight(this.queryInfo.networkStatus)) {\n this.reobserve({\n fetchPolicy: \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n } else {\n poll();\n }\n };\n };\n\n const poll = () => {\n const info = this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n\n poll();\n }\n\n private updateLastResult(\n newResult: ApolloQueryResult<TData>,\n variables = this.variables,\n ) {\n this.last = {\n ...this.last,\n result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult),\n variables,\n };\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.last.error;\n }\n return this.last;\n }\n\n public reobserve(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus,\n ): Promise<ApolloQueryResult<TData>> {\n this.isTornDown = false;\n\n const useDisposableConcast =\n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n\n // Save the old variables, since Object.assign may modify them below.\n const oldVariables = this.options.variables;\n\n const options = useDisposableConcast\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n ? compact(this.options, newOptions)\n : assign(this.options, compact(newOptions));\n\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (\n newOptions &&\n newOptions.variables &&\n !newOptions.fetchPolicy &&\n !equal(newOptions.variables, oldVariables)\n ) {\n options.fetchPolicy = this.initialFetchPolicy;\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n\n const variables = options.variables && { ...options.variables };\n const concast = this.fetch(options, newNetworkStatus);\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: result => {\n this.reportResult(result, variables);\n },\n error: error => {\n this.reportError(error, variables);\n },\n };\n\n if (!useDisposableConcast) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object, in part so\n // that we can remove it here without triggering any unsubscriptions,\n // because we just want to ignore the old observable, not prematurely shut\n // it down, since other consumers may be awaiting this.concast.promise.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer, true);\n }\n\n this.concast = concast;\n this.observer = observer;\n }\n\n concast.addObserver(observer);\n\n return concast.promise;\n }\n\n // Pass the current result to this.observer.next without applying any\n // fetch policies.\n private observe() {\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.observer.next.\n this.reportResult(\n this.getCurrentResult(false),\n this.variables,\n );\n }\n\n private reportResult(\n result: ApolloQueryResult<TData>,\n variables: TVariables | undefined,\n ) {\n if (this.getLastError() || this.isDifferentFromLastResult(result)) {\n this.updateLastResult(result, variables);\n iterateObserversSafely(this.observers, 'next', result);\n }\n }\n\n private reportError(\n error: ApolloError,\n variables: TVariables | undefined,\n ) {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n const errorResult = {\n ...this.getLastResult(),\n error,\n errors: error.graphQLErrors,\n networkStatus: NetworkStatus.error,\n loading: false,\n } as ApolloQueryResult<TData>;\n\n this.updateLastResult(errorResult, variables);\n\n iterateObserversSafely(this.observers, 'error', this.last!.error = error);\n }\n\n public hasObservers() {\n return this.observers.size > 0;\n }\n\n private tearDownQuery() {\n if (this.isTornDown) return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n }\n}\n\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n\nfunction defaultSubscriptionObserverErrorCallback(error: ApolloError) {\n invariant.error('Unhandled error', error.message, error.stack);\n}\n\nexport function logMissingFieldErrors(\n missing: MissingFieldError[] | undefined,\n) {\n if (__DEV__ && isNonEmptyArray(missing)) {\n invariant.debug(`Missing cache result fields: ${\n missing.map(m => m.path.join('.')).join(', ')\n }`, missing);\n }\n}\n\n// Adopt options.nextFetchPolicy (if defined) as a replacement for\n// options.fetchPolicy. Since this method also removes options.nextFetchPolicy\n// from options, the adoption tends to be idempotent, unless nextFetchPolicy\n// is a function that keeps setting options.nextFetchPolicy (uncommon).\nexport function applyNextFetchPolicy<TData, TVars>(\n options: Pick<\n WatchQueryOptions<TVars, TData>,\n | \"fetchPolicy\"\n | \"nextFetchPolicy\"\n >,\n) {\n const {\n fetchPolicy = \"cache-first\",\n nextFetchPolicy,\n } = options;\n\n if (nextFetchPolicy) {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would seem\n // to imply. Instead, when the cache reports an update after the initial\n // network request, it may be desirable for subsequent network requests to\n // be triggered only if the cache result is incomplete. To that end, the\n // options.nextFetchPolicy option provides an easy way to update\n // options.fetchPolicy after the initial network request, without having to\n // call observableQuery.setOptions.\n options.fetchPolicy = typeof nextFetchPolicy === \"function\"\n ? nextFetchPolicy.call(options, fetchPolicy)\n : nextFetchPolicy;\n }\n}\n"]}
1
+ {"version":3,"file":"ObservableQuery.js","sourceRoot":"","sources":["../../src/core/ObservableQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../utilities/globals';\n\nimport { equal } from '@wry/equality';\n\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';\nimport {\n Concast,\n compact,\n cloneDeep,\n getOperationDefinition,\n Observable,\n Observer,\n ObservableSubscription,\n iterateObserversSafely,\n isNonEmptyArray,\n fixObservableSubclass,\n getQueryDefinition,\n} from '../utilities';\nimport { ApolloError } from '../errors';\nimport { QueryManager } from './QueryManager';\nimport { ApolloQueryResult, OperationVariables } from './types';\nimport {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n WatchQueryFetchPolicy,\n} from './watchQueryOptions';\nimport { QueryInfo } from './QueryInfo';\nimport { MissingFieldError } from '../cache';\nimport { MissingTree } from '../cache/core/types/common';\n\nconst {\n assign,\n hasOwnProperty,\n} = Object;\n\nexport interface FetchMoreOptions<\n TData = any,\n TVariables = OperationVariables\n> {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult?: TData;\n variables?: TVariables;\n },\n ) => TData;\n}\n\nexport interface UpdateQueryOptions<TVariables> {\n variables?: TVariables;\n}\n\nlet warnedAboutUpdateQuery = false;\n\ninterface Last<TData, TVariables> {\n result: ApolloQueryResult<TData>;\n variables?: TVariables;\n error?: ApolloError;\n}\n\nexport class ObservableQuery<\n TData = any,\n TVariables = OperationVariables\n> extends Observable<ApolloQueryResult<TData>> {\n public readonly options: WatchQueryOptions<TVariables, TData>;\n public readonly queryId: string;\n public readonly queryName?: string;\n\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n public get variables(): TVariables | undefined {\n return this.options.variables;\n }\n\n // Original value of this.options.fetchPolicy (defaulting to \"cache-first\"),\n // from whenever the ObservableQuery was first created.\n private initialFetchPolicy: WatchQueryFetchPolicy;\n\n private isTornDown: boolean;\n private queryManager: QueryManager<any>;\n private observers = new Set<Observer<ApolloQueryResult<TData>>>();\n private subscriptions = new Set<ObservableSubscription>();\n\n private last?: Last<TData, TVariables>;\n\n private queryInfo: QueryInfo;\n\n // When this.concast is defined, this.observer is the Observer currently\n // subscribed to that Concast.\n private concast?: Concast<ApolloQueryResult<TData>>;\n private observer?: Observer<ApolloQueryResult<TData>>;\n\n private pollingInfo?: {\n interval: number;\n timeout: ReturnType<typeof setTimeout>;\n };\n\n constructor({\n queryManager,\n queryInfo,\n options,\n }: {\n queryManager: QueryManager<any>;\n queryInfo: QueryInfo;\n options: WatchQueryOptions<TVariables, TData>;\n }) {\n super((observer: Observer<ApolloQueryResult<TData>>) => {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = (observer as any)._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n } catch {}\n\n const first = !this.observers.size;\n this.observers.add(observer);\n\n // Deliver most recent error or result.\n const last = this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n } else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n this.reobserve().catch(() => {});\n }\n\n return () => {\n if (this.observers.delete(observer) && !this.observers.size) {\n this.tearDownQuery();\n }\n };\n });\n\n // active state\n this.isTornDown = false;\n\n // query information\n this.options = options;\n this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n\n const opDef = getOperationDefinition(options.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\n\n this.initialFetchPolicy = options.fetchPolicy || \"cache-first\";\n\n // related classes\n this.queryManager = queryManager;\n this.queryInfo = queryInfo;\n }\n\n public result(): Promise<ApolloQueryResult<TData>> {\n return new Promise((resolve, reject) => {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: (result: ApolloQueryResult<TData>) => {\n resolve(result);\n\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n this.observers.delete(observer);\n if (!this.observers.size) {\n this.queryManager.removeQuery(this.queryId);\n }\n\n setTimeout(() => {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n const subscription = this.subscribe(observer);\n });\n }\n\n public getCurrentResult(saveAsLastResult = true): ApolloQueryResult<TData> {\n // Use the last result as long as the variables match this.variables.\n const lastResult = this.getLastResult(true);\n\n const networkStatus =\n this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n\n const result = {\n ...lastResult,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus,\n } as ApolloQueryResult<TData>;\n\n const { fetchPolicy = \"cache-first\" } = this.options;\n if (\n // These fetch policies should never deliver data from the cache, unless\n // redelivering a previously delivered result.\n fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache' ||\n fetchPolicy === 'standby' ||\n // If this.options.query has @client(always: true) fields, we cannot\n // trust diff.result, since it was read from the cache without running\n // local resolvers (and it's too late to run resolvers now, since we must\n // return a result synchronously).\n this.queryManager.transform(this.options.query).hasForcedResolvers\n ) {\n // Fall through.\n } else {\n const diff = this.queryInfo.getDiff();\n\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n\n if (equal(result.data, {})) {\n result.data = void 0 as any;\n }\n\n if (diff.complete) {\n // Similar to setting result.partial to false, but taking advantage of the\n // falsiness of missing fields.\n delete result.partial;\n\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next result\n // we receive will have NetworkStatus.ready and !loading.\n if (\n diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')\n ) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n } else {\n result.partial = true;\n }\n\n if (\n __DEV__ &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error\n ) {\n logMissingFieldErrors(diff.missing);\n }\n }\n\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n\n return result;\n }\n\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n public isDifferentFromLastResult(newResult: ApolloQueryResult<TData>) {\n return !this.last || !equal(this.last.result, newResult);\n }\n\n private getLast<K extends keyof Last<TData, TVariables>>(\n key: K,\n variablesMustMatch?: boolean,\n ) {\n const last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last!.variables, this.variables))) {\n return last[key];\n }\n }\n\n public getLastResult(variablesMustMatch?: boolean): ApolloQueryResult<TData> | undefined {\n return this.getLast(\"result\", variablesMustMatch);\n }\n\n public getLastError(variablesMustMatch?: boolean): ApolloError | undefined {\n return this.getLast(\"error\", variablesMustMatch);\n }\n\n public resetLastResults(): void {\n delete this.last;\n this.isTornDown = false;\n }\n\n public resetQueryStoreErrors() {\n this.queryManager.resetErrors(this.queryId);\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public refetch(variables?: Partial<TVariables>): Promise<ApolloQueryResult<TData>> {\n const reobserveOptions: Partial<WatchQueryOptions<TVariables, TData>> = {\n // Always disable polling for refetches.\n pollInterval: 0,\n };\n\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n const { fetchPolicy } = this.options;\n if (fetchPolicy === 'standby' || fetchPolicy === 'cache-and-network') {\n reobserveOptions.fetchPolicy = fetchPolicy;\n } else if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n } else {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n\n if (__DEV__ && variables && hasOwnProperty.call(variables, \"variables\")) {\n const queryDef = getQueryDefinition(this.options.query);\n const vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(v => v.variable.name.value === \"variables\")) {\n invariant.warn(`Called refetch(${\n JSON.stringify(variables)\n }) for query ${\n queryDef.name?.value || JSON.stringify(queryDef)\n }, which does not declare a $variables variable.\nDid you mean to call refetch(variables) instead of refetch({ variables })?`);\n }\n }\n\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = {\n ...this.options.variables,\n ...variables,\n } as TVariables;\n }\n\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n }\n\n public fetchMore(\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> &\n FetchMoreOptions<TData, TVariables>,\n ): Promise<ApolloQueryResult<TData>> {\n const combinedOptions = {\n ...(fetchMoreOptions.query ? fetchMoreOptions : {\n ...this.options,\n ...fetchMoreOptions,\n variables: {\n ...this.options.variables,\n ...fetchMoreOptions.variables,\n },\n }),\n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\",\n } as WatchQueryOptions;\n\n const qid = this.queryManager.generateQueryId();\n\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.queryInfo.networkStatus = NetworkStatus.fetchMore;\n this.observe();\n }\n\n return this.queryManager.fetchQuery(\n qid,\n combinedOptions,\n NetworkStatus.fetchMore,\n ).then(fetchMoreResult => {\n const data = fetchMoreResult.data as TData;\n const { updateQuery } = fetchMoreOptions;\n\n if (updateQuery) {\n if (__DEV__ &&\n !warnedAboutUpdateQuery) {\n invariant.warn(\n`The updateQuery callback for fetchMore is deprecated, and will be removed\nin the next major version of Apollo Client.\n\nPlease convert updateQuery functions to field policies with appropriate\nread and merge functions, or use/adapt a helper function (such as\nconcatPagination, offsetLimitPagination, or relayStylePagination) from\n@apollo/client/utilities.\n\nThe field policy system handles pagination more effectively than a\nhand-written updateQuery function, and you only need to define the policy\nonce, rather than every time you call fetchMore.`);\n warnedAboutUpdateQuery = true;\n }\n this.updateQuery(previous => updateQuery(previous, {\n fetchMoreResult: data,\n variables: combinedOptions.variables as TVariables,\n }));\n } else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n this.queryManager.cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data,\n });\n }\n\n return fetchMoreResult as ApolloQueryResult<TData>;\n\n }).finally(() => {\n this.queryManager.stopQuery(qid);\n this.reobserve();\n });\n }\n\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n public subscribeToMore<\n TSubscriptionData = TData,\n TSubscriptionVariables = TVariables\n >(\n options: SubscribeToMoreOptions<\n TData,\n TSubscriptionVariables,\n TSubscriptionData\n >,\n ) {\n const subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: (subscriptionData: { data: TSubscriptionData }) => {\n const { updateQuery } = options;\n if (updateQuery) {\n this.updateQuery<TSubscriptionVariables>(\n (previous, { variables }) =>\n updateQuery(previous, {\n subscriptionData,\n variables,\n }),\n );\n }\n },\n error: (err: any) => {\n if (options.onError) {\n options.onError(err);\n return;\n }\n invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n\n this.subscriptions.add(subscription);\n\n return () => {\n if (this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n }\n\n public setOptions(\n newOptions: Partial<WatchQueryOptions<TVariables, TData>>,\n ): Promise<ApolloQueryResult<TData>> {\n return this.reobserve(newOptions);\n }\n\n /**\n * This is for *internal* use only. Most users should instead use `refetch`\n * in order to be properly notified of results even when they come from cache.\n *\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. If you want to force new results, use `refetch`.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @private\n *\n * @param variables: The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n public setVariables(\n variables: TVariables,\n ): Promise<ApolloQueryResult<TData> | void> {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n\n this.options.variables = variables;\n\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.initialFetchPolicy,\n variables,\n }, NetworkStatus.setVariables);\n }\n\n public updateQuery<TVars = TVariables>(\n mapFn: (\n previousQueryResult: TData,\n options: Pick<WatchQueryOptions<TVars, TData>, \"variables\">,\n ) => TData,\n ): void {\n const { queryManager } = this;\n const { result } = queryManager.cache.diff<TData>({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n });\n\n const newResult = mapFn(result!, {\n variables: (this as any).variables,\n });\n\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n\n queryManager.broadcastQueries();\n }\n }\n\n public startPolling(pollInterval: number) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n }\n\n public stopPolling() {\n this.options.pollInterval = 0;\n this.updatePolling();\n }\n\n private fetch(\n options: WatchQueryOptions<TVariables, TData>,\n newNetworkStatus?: NetworkStatus,\n ): Concast<ApolloQueryResult<TData>> {\n this.queryManager.setObservableQuery(this);\n return this.queryManager.fetchQueryObservable(\n this.queryId,\n options,\n newNetworkStatus,\n );\n }\n\n // Turns polling on or off based on this.options.pollInterval.\n private updatePolling() {\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n\n const {\n pollingInfo,\n options: {\n pollInterval,\n },\n } = this;\n\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n\n invariant(\n pollInterval,\n 'Attempted to start a polling query without a polling interval.',\n );\n\n const info = pollingInfo || (this.pollingInfo = {} as any);\n info.interval = pollInterval;\n\n const maybeFetch = () => {\n if (this.pollingInfo) {\n if (!isNetworkRequestInFlight(this.queryInfo.networkStatus)) {\n this.reobserve({\n fetchPolicy: \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n } else {\n poll();\n }\n };\n };\n\n const poll = () => {\n const info = this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n\n poll();\n }\n\n private updateLastResult(\n newResult: ApolloQueryResult<TData>,\n variables = this.variables,\n ) {\n this.last = {\n ...this.last,\n result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult),\n variables,\n };\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.last.error;\n }\n return this.last;\n }\n\n public reobserve(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus,\n ): Promise<ApolloQueryResult<TData>> {\n this.isTornDown = false;\n\n const useDisposableConcast =\n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n\n // Save the old variables, since Object.assign may modify them below.\n const oldVariables = this.options.variables;\n\n const options = useDisposableConcast\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n ? compact(this.options, newOptions)\n : assign(this.options, compact(newOptions));\n\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (\n newOptions &&\n newOptions.variables &&\n !newOptions.fetchPolicy &&\n !equal(newOptions.variables, oldVariables)\n ) {\n options.fetchPolicy = this.initialFetchPolicy;\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n\n const variables = options.variables && { ...options.variables };\n const concast = this.fetch(options, newNetworkStatus);\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: result => {\n this.reportResult(result, variables);\n },\n error: error => {\n this.reportError(error, variables);\n },\n };\n\n if (!useDisposableConcast) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object, in part so\n // that we can remove it here without triggering any unsubscriptions,\n // because we just want to ignore the old observable, not prematurely shut\n // it down, since other consumers may be awaiting this.concast.promise.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer, true);\n }\n\n this.concast = concast;\n this.observer = observer;\n }\n\n concast.addObserver(observer);\n\n return concast.promise;\n }\n\n // Pass the current result to this.observer.next without applying any\n // fetch policies.\n private observe() {\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.observer.next.\n this.reportResult(\n this.getCurrentResult(false),\n this.variables,\n );\n }\n\n private reportResult(\n result: ApolloQueryResult<TData>,\n variables: TVariables | undefined,\n ) {\n if (this.getLastError() || this.isDifferentFromLastResult(result)) {\n this.updateLastResult(result, variables);\n iterateObserversSafely(this.observers, 'next', result);\n }\n }\n\n private reportError(\n error: ApolloError,\n variables: TVariables | undefined,\n ) {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n const errorResult = {\n ...this.getLastResult(),\n error,\n errors: error.graphQLErrors,\n networkStatus: NetworkStatus.error,\n loading: false,\n } as ApolloQueryResult<TData>;\n\n this.updateLastResult(errorResult, variables);\n\n iterateObserversSafely(this.observers, 'error', this.last!.error = error);\n }\n\n public hasObservers() {\n return this.observers.size > 0;\n }\n\n private tearDownQuery() {\n if (this.isTornDown) return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n }\n}\n\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n\nfunction defaultSubscriptionObserverErrorCallback(error: ApolloError) {\n invariant.error('Unhandled error', error.message, error.stack);\n}\n\nexport function logMissingFieldErrors(\n missing: MissingFieldError[] | MissingTree | undefined,\n) {\n if (__DEV__ && missing) {\n invariant.debug(`Missing cache result fields: ${\n JSON.stringify(missing)\n }`, missing);\n }\n}\n\n// Adopt options.nextFetchPolicy (if defined) as a replacement for\n// options.fetchPolicy. Since this method also removes options.nextFetchPolicy\n// from options, the adoption tends to be idempotent, unless nextFetchPolicy\n// is a function that keeps setting options.nextFetchPolicy (uncommon).\nexport function applyNextFetchPolicy<TData, TVars>(\n options: Pick<\n WatchQueryOptions<TVars, TData>,\n | \"fetchPolicy\"\n | \"nextFetchPolicy\"\n >,\n) {\n const {\n fetchPolicy = \"cache-first\",\n nextFetchPolicy,\n } = options;\n\n if (nextFetchPolicy) {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would seem\n // to imply. Instead, when the cache reports an update after the initial\n // network request, it may be desirable for subsequent network requests to\n // be triggered only if the cache result is incomplete. To that end, the\n // options.nextFetchPolicy option provides an easy way to update\n // options.fetchPolicy after the initial network request, without having to\n // call observableQuery.setOptions.\n options.fetchPolicy = typeof nextFetchPolicy === \"function\"\n ? nextFetchPolicy.call(options, fetchPolicy)\n : nextFetchPolicy;\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
- /// <reference types="zen-observable" />
2
1
  import { DocumentNode, GraphQLError } from 'graphql';
3
2
  import { Cache } from '../cache';
4
3
  import { WatchQueryOptions, ErrorPolicy } from './watchQueryOptions';
5
4
  import { ObservableQuery } from './ObservableQuery';
6
5
  import { QueryListener } from './types';
7
6
  import { FetchResult } from '../link/core';
7
+ import { ObservableSubscription } from '../utilities';
8
8
  import { NetworkStatus } from './networkStatus';
9
9
  import { ApolloError } from '../errors';
10
10
  import { QueryManager } from './QueryManager';
@@ -19,7 +19,7 @@ export declare class QueryInfo {
19
19
  listeners: Set<QueryListener>;
20
20
  document: DocumentNode | null;
21
21
  lastRequestId: number;
22
- subscriptions: Set<ZenObservable.Subscription>;
22
+ subscriptions: Set<ObservableSubscription>;
23
23
  variables?: Record<string, any>;
24
24
  networkStatus?: NetworkStatus;
25
25
  networkError?: Error | null;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryInfo.d.ts","sourceRoot":"","sources":["../../src/core/QueryInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryInfo.d.ts","sourceRoot":"","sources":["../../src/core/QueryInfo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryInfo.js","sourceRoot":"","sources":["../../src/core/QueryInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { DocumentNode, GraphQLError } from 'graphql';\nimport { equal } from \"@wry/equality\";\n\nimport { Cache, ApolloCache } from '../cache';\nimport { WatchQueryOptions, ErrorPolicy } from './watchQueryOptions';\nimport { ObservableQuery } from './ObservableQuery';\nimport { QueryListener } from './types';\nimport { FetchResult } from '../link/core';\nimport {\n ObservableSubscription,\n isNonEmptyArray,\n graphQLResultHasError,\n canUseWeakMap,\n} from '../utilities';\nimport {\n NetworkStatus,\n isNetworkRequestInFlight,\n} from './networkStatus';\nimport { ApolloError } from '../errors';\nimport { QueryManager } from './QueryManager';\n\nexport type QueryStoreValue = Pick<QueryInfo,\n | \"variables\"\n | \"networkStatus\"\n | \"networkError\"\n | \"graphQLErrors\"\n >;\n\nexport const enum CacheWriteBehavior {\n FORBID,\n OVERWRITE,\n MERGE,\n};\n\nconst destructiveMethodCounts = new (\n canUseWeakMap ? WeakMap : Map\n)<ApolloCache<any>, number>();\n\nfunction wrapDestructiveCacheMethod(\n cache: ApolloCache<any>,\n methodName: keyof ApolloCache<any>,\n) {\n const original = cache[methodName];\n if (typeof original === \"function\") {\n cache[methodName] = function () {\n destructiveMethodCounts.set(\n cache,\n // The %1e15 allows the count to wrap around to 0 safely every\n // quadrillion evictions, so there's no risk of overflow. To be\n // clear, this is more of a pedantic principle than something\n // that matters in any conceivable practical scenario.\n (destructiveMethodCounts.get(cache)! + 1) % 1e15,\n );\n return original.apply(this, arguments);\n };\n }\n}\n\nfunction cancelNotifyTimeout(info: QueryInfo) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\n\n// A QueryInfo object represents a single query managed by the\n// QueryManager, which tracks all QueryInfo objects by queryId in its\n// this.queries Map. QueryInfo objects store the latest results and errors\n// for the given query, and are responsible for reporting those results to\n// the corresponding ObservableQuery, via the QueryInfo.notify method.\n// Results are reported asynchronously whenever setDiff marks the\n// QueryInfo object as dirty, though a call to the QueryManager's\n// broadcastQueries method may trigger the notification before it happens\n// automatically. This class used to be a simple interface type without\n// any field privacy or meaningful methods, which is why it still has so\n// many public fields. The effort to lock down and simplify the QueryInfo\n// interface is ongoing, and further improvements are welcome.\nexport class QueryInfo {\n listeners = new Set<QueryListener>();\n document: DocumentNode | null = null;\n lastRequestId = 1;\n subscriptions = new Set<ObservableSubscription>();\n variables?: Record<string, any>;\n networkStatus?: NetworkStatus;\n networkError?: Error | null;\n graphQLErrors?: ReadonlyArray<GraphQLError>;\n stopped = false;\n\n private cache: ApolloCache<any>;\n\n constructor(\n queryManager: QueryManager<any>,\n public readonly queryId = queryManager.generateQueryId(),\n ) {\n const cache = this.cache = queryManager.cache;\n\n // Track how often cache.evict is called, since we want eviction to\n // override the feud-stopping logic in the markResult method, by\n // causing shouldWrite to return true. Wrapping the cache.evict method\n // is a bit of a hack, but it saves us from having to make eviction\n // counting an official part of the ApolloCache API.\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n\n public init(query: {\n document: DocumentNode;\n variables: Record<string, any> | undefined,\n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus?: NetworkStatus,\n observableQuery?: ObservableQuery<any>;\n lastRequestId?: number;\n }): this {\n let networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus,\n });\n\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n\n return this;\n }\n\n private dirty: boolean = false;\n\n private notifyTimeout?: ReturnType<typeof setTimeout>;\n\n reset() {\n cancelNotifyTimeout(this);\n this.lastDiff = void 0;\n this.dirty = false;\n }\n\n getDiff(variables = this.variables): Cache.DiffResult<any> {\n const options = this.getDiffOptions(variables);\n\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n\n this.updateWatch(this.variables = variables);\n\n const oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n\n const diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n }\n\n private lastDiff?: {\n diff: Cache.DiffResult<any>,\n options: Cache.DiffOptions,\n };\n\n private updateLastDiff(\n diff: Cache.DiffResult<any> | null,\n options?: Cache.DiffOptions,\n ) {\n this.lastDiff = diff ? {\n diff,\n options: options || this.getDiffOptions(),\n } : void 0;\n }\n\n private getDiffOptions(variables = this.variables): Cache.DiffOptions {\n return {\n query: this.document!,\n variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: this.observableQuery?.options.canonizeResults,\n };\n }\n\n setDiff(diff: Cache.DiffResult<any> | null) {\n const oldDiff = this.lastDiff && this.lastDiff.diff;\n this.updateLastDiff(diff);\n if (!this.dirty &&\n !equal(oldDiff && oldDiff.result,\n diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(() => this.notify(), 0);\n }\n }\n }\n\n public readonly observableQuery: ObservableQuery<any> | null = null;\n private oqListener?: QueryListener;\n\n setObservableQuery(oq: ObservableQuery<any> | null) {\n if (oq === this.observableQuery) return;\n\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n\n (this as any).observableQuery = oq;\n\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = () => {\n // If this.diff came from an optimistic transaction, deliver the\n // current cache data to the ObservableQuery, but don't perform a\n // full reobservation, since oq.reobserve might make a network\n // request, and we don't want to trigger network requests for\n // optimistic updates.\n if (this.getDiff().fromOptimisticTransaction) {\n oq[\"observe\"]();\n } else {\n oq.reobserve();\n }\n });\n } else {\n delete this.oqListener;\n }\n }\n\n notify() {\n cancelNotifyTimeout(this);\n\n if (this.shouldNotify()) {\n this.listeners.forEach(listener => listener(this));\n }\n\n this.dirty = false;\n }\n\n private shouldNotify() {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n\n if (isNetworkRequestInFlight(this.networkStatus) &&\n this.observableQuery) {\n const { fetchPolicy } = this.observableQuery.options;\n if (fetchPolicy !== \"cache-only\" &&\n fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n\n return true;\n }\n\n public stop() {\n if (!this.stopped) {\n this.stopped = true;\n\n // Cancel the pending notify timeout\n this.reset();\n\n this.cancel();\n // Revert back to the no-op version of cancel inherited from\n // QueryInfo.prototype.\n this.cancel = QueryInfo.prototype.cancel;\n\n this.subscriptions.forEach(sub => sub.unsubscribe());\n\n const oq = this.observableQuery;\n if (oq) oq.stopPolling();\n }\n }\n\n // This method is a no-op by default, until/unless overridden by the\n // updateWatch method.\n private cancel() {}\n\n private lastWatch?: Cache.WatchOptions<QueryInfo>;\n\n private updateWatch(variables = this.variables) {\n const oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n\n const watchOptions: Cache.WatchOptions<QueryInfo> = {\n // Although this.getDiffOptions returns Cache.DiffOptions instead of\n // Cache.WatchOptions, all the overlapping options should be the same, so\n // we can reuse getDiffOptions here, for consistency.\n ...this.getDiffOptions(variables),\n watcher: this,\n callback: diff => this.setDiff(diff),\n };\n\n if (!this.lastWatch ||\n !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n }\n }\n\n private lastWrite?: {\n result: FetchResult<any>;\n variables: WatchQueryOptions[\"variables\"];\n dmCount: number | undefined;\n };\n\n public resetLastWrite() {\n this.lastWrite = void 0;\n }\n\n private shouldWrite(\n result: FetchResult<any>,\n variables: WatchQueryOptions[\"variables\"],\n ) {\n const { lastWrite } = this;\n return !(\n lastWrite &&\n // If cache.evict has been called since the last time we wrote this\n // data into the cache, there's a chance writing this result into\n // the cache will repair what was evicted.\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data)\n );\n }\n\n public markResult<T>(\n result: FetchResult<T>,\n options: Pick<WatchQueryOptions,\n | \"variables\"\n | \"fetchPolicy\"\n | \"errorPolicy\">,\n cacheWriteBehavior: CacheWriteBehavior,\n ) {\n this.graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];\n\n // Cancel the pending notify timeout (if it exists) to prevent extraneous network\n // requests. To allow future notify timeouts, diff and dirty are reset as well.\n this.reset();\n\n if (options.fetchPolicy === 'no-cache') {\n this.updateLastDiff(\n { result: result.data, complete: true },\n this.getDiffOptions(options.variables),\n );\n\n } else if (cacheWriteBehavior !== CacheWriteBehavior.FORBID) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n // Using a transaction here so we have a chance to read the result\n // back from the cache before the watch callback fires as a result\n // of writeQuery, so we can store the new diff quietly and ignore\n // it when we receive it redundantly from the watch callback.\n this.cache.performTransaction(cache => {\n if (this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: this.document!,\n data: result.data as T,\n variables: options.variables,\n overwrite: cacheWriteBehavior === CacheWriteBehavior.OVERWRITE,\n });\n\n this.lastWrite = {\n result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(this.cache),\n };\n } else {\n // If result is the same as the last result we received from\n // the network (and the variables match too), avoid writing\n // result into the cache again. The wisdom of skipping this\n // cache write is far from obvious, since any cache write\n // could be the one that puts the cache back into a desired\n // state, fixing corruption or missing data. However, if we\n // always write every network result into the cache, we enable\n // feuds between queries competing to update the same data in\n // incompatible ways, which can lead to an endless cycle of\n // cache broadcasts and useless network requests. As with any\n // feud, eventually one side must step back from the brink,\n // letting the other side(s) have the last word(s). There may\n // be other points where we could break this cycle, such as\n // silencing the broadcast for cache.writeQuery (not a good\n // idea, since it just delays the feud a bit) or somehow\n // avoiding the network request that just happened (also bad,\n // because the server could return useful new data). All\n // options considered, skipping this cache write seems to be\n // the least damaging place to break the cycle, because it\n // reflects the intuition that we recently wrote this exact\n // result into the cache, so the cache *should* already/still\n // contain this data. If some other query has clobbered that\n // data in the meantime, that's too bad, but there will be no\n // winners if every query blindly reverts to its own version\n // of the data. This approach also gives the network a chance\n // to return new data, which will be written into the cache as\n // usual, notifying only those queries that are directly\n // affected by the cache updates, as usual. In the future, an\n // even more sophisticated cache could perhaps prevent or\n // mitigate the clobbering somehow, but that would make this\n // particular cache write even less important, and thus\n // skipping it would be even safer than it is today.\n if (this.lastDiff &&\n this.lastDiff.diff.complete) {\n // Reuse data from the last good (complete) diff that we\n // received, when possible.\n result.data = this.lastDiff.diff.result;\n return;\n }\n // If the previous this.diff was incomplete, fall through to\n // re-reading the latest data with cache.diff, below.\n }\n\n const diffOptions = this.getDiffOptions(options.variables);\n const diff = cache.diff<T>(diffOptions);\n\n // In case the QueryManager stops this QueryInfo before its\n // results are delivered, it's important to avoid restarting the\n // cache watch when markResult is called.\n if (!this.stopped) {\n // Any time we're about to update this.diff, we need to make\n // sure we've started watching the cache.\n this.updateWatch(options.variables);\n }\n\n // If we're allowed to write to the cache, and we can read a\n // complete result from the cache, update result.data to be the\n // result from the cache, rather than the raw network result.\n // Set without setDiff to avoid triggering a notify call, since\n // we have other ways of notifying for this result.\n this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n } else {\n this.lastWrite = void 0;\n }\n }\n }\n\n public markReady() {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n }\n\n public markError(error: ApolloError) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n\n this.reset();\n\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n\n return error;\n }\n}\n\nexport function shouldWriteResult<T>(\n result: FetchResult<T>,\n errorPolicy: ErrorPolicy = \"none\",\n) {\n const ignoreErrors =\n errorPolicy === \"ignore\" ||\n errorPolicy === \"all\";\n let writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n"]}
1
+ {"version":3,"file":"QueryInfo.js","sourceRoot":"","sources":["../../src/core/QueryInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { DocumentNode, GraphQLError } from 'graphql';\nimport { equal } from \"@wry/equality\";\n\nimport { Cache, ApolloCache } from '../cache';\nimport { WatchQueryOptions, ErrorPolicy } from './watchQueryOptions';\nimport { ObservableQuery } from './ObservableQuery';\nimport { QueryListener } from './types';\nimport { FetchResult } from '../link/core';\nimport {\n ObservableSubscription,\n isNonEmptyArray,\n graphQLResultHasError,\n canUseWeakMap,\n} from '../utilities';\nimport {\n NetworkStatus,\n isNetworkRequestInFlight,\n} from './networkStatus';\nimport { ApolloError } from '../errors';\nimport { QueryManager } from './QueryManager';\n\nexport type QueryStoreValue = Pick<QueryInfo,\n | \"variables\"\n | \"networkStatus\"\n | \"networkError\"\n | \"graphQLErrors\"\n >;\n\nexport const enum CacheWriteBehavior {\n FORBID,\n OVERWRITE,\n MERGE,\n};\n\nconst destructiveMethodCounts = new (\n canUseWeakMap ? WeakMap : Map\n)<ApolloCache<any>, number>();\n\nfunction wrapDestructiveCacheMethod(\n cache: ApolloCache<any>,\n methodName: keyof ApolloCache<any>,\n) {\n const original = cache[methodName];\n if (typeof original === \"function\") {\n cache[methodName] = function () {\n destructiveMethodCounts.set(\n cache,\n // The %1e15 allows the count to wrap around to 0 safely every\n // quadrillion evictions, so there's no risk of overflow. To be\n // clear, this is more of a pedantic principle than something\n // that matters in any conceivable practical scenario.\n (destructiveMethodCounts.get(cache)! + 1) % 1e15,\n );\n return original.apply(this, arguments);\n };\n }\n}\n\nfunction cancelNotifyTimeout(info: QueryInfo) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\n\n// A QueryInfo object represents a single query managed by the\n// QueryManager, which tracks all QueryInfo objects by queryId in its\n// this.queries Map. QueryInfo objects store the latest results and errors\n// for the given query, and are responsible for reporting those results to\n// the corresponding ObservableQuery, via the QueryInfo.notify method.\n// Results are reported asynchronously whenever setDiff marks the\n// QueryInfo object as dirty, though a call to the QueryManager's\n// broadcastQueries method may trigger the notification before it happens\n// automatically. This class used to be a simple interface type without\n// any field privacy or meaningful methods, which is why it still has so\n// many public fields. The effort to lock down and simplify the QueryInfo\n// interface is ongoing, and further improvements are welcome.\nexport class QueryInfo {\n listeners = new Set<QueryListener>();\n document: DocumentNode | null = null;\n lastRequestId = 1;\n subscriptions = new Set<ObservableSubscription>();\n variables?: Record<string, any>;\n networkStatus?: NetworkStatus;\n networkError?: Error | null;\n graphQLErrors?: ReadonlyArray<GraphQLError>;\n stopped = false;\n\n private cache: ApolloCache<any>;\n\n constructor(\n queryManager: QueryManager<any>,\n public readonly queryId = queryManager.generateQueryId(),\n ) {\n const cache = this.cache = queryManager.cache;\n\n // Track how often cache.evict is called, since we want eviction to\n // override the feud-stopping logic in the markResult method, by\n // causing shouldWrite to return true. Wrapping the cache.evict method\n // is a bit of a hack, but it saves us from having to make eviction\n // counting an official part of the ApolloCache API.\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n\n public init(query: {\n document: DocumentNode;\n variables: Record<string, any> | undefined,\n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus?: NetworkStatus,\n observableQuery?: ObservableQuery<any>;\n lastRequestId?: number;\n }): this {\n let networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus,\n });\n\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n\n return this;\n }\n\n private dirty: boolean = false;\n\n private notifyTimeout?: ReturnType<typeof setTimeout>;\n\n reset() {\n cancelNotifyTimeout(this);\n this.lastDiff = void 0;\n this.dirty = false;\n }\n\n getDiff(variables = this.variables): Cache.DiffResult<any> {\n const options = this.getDiffOptions(variables);\n\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n\n this.updateWatch(this.variables = variables);\n\n const oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n\n const diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n }\n\n private lastDiff?: {\n diff: Cache.DiffResult<any>,\n options: Cache.DiffOptions,\n };\n\n private updateLastDiff(\n diff: Cache.DiffResult<any> | null,\n options?: Cache.DiffOptions,\n ) {\n this.lastDiff = diff ? {\n diff,\n options: options || this.getDiffOptions(),\n } : void 0;\n }\n\n private getDiffOptions(variables = this.variables): Cache.DiffOptions {\n return {\n query: this.document!,\n variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: this.observableQuery?.options.canonizeResults,\n };\n }\n\n setDiff(diff: Cache.DiffResult<any> | null) {\n const oldDiff = this.lastDiff && this.lastDiff.diff;\n this.updateLastDiff(diff);\n if (!this.dirty &&\n !equal(oldDiff && oldDiff.result,\n diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(() => this.notify(), 0);\n }\n }\n }\n\n public readonly observableQuery: ObservableQuery<any> | null = null;\n private oqListener?: QueryListener;\n\n setObservableQuery(oq: ObservableQuery<any> | null) {\n if (oq === this.observableQuery) return;\n\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n\n (this as any).observableQuery = oq;\n\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = () => {\n // If this.diff came from an optimistic transaction, deliver the\n // current cache data to the ObservableQuery, but don't perform a\n // full reobservation, since oq.reobserve might make a network\n // request, and we don't want to trigger network requests for\n // optimistic updates.\n if (this.getDiff().fromOptimisticTransaction) {\n oq[\"observe\"]();\n } else {\n oq.reobserve();\n }\n });\n } else {\n delete this.oqListener;\n }\n }\n\n notify() {\n cancelNotifyTimeout(this);\n\n if (this.shouldNotify()) {\n this.listeners.forEach(listener => listener(this));\n }\n\n this.dirty = false;\n }\n\n private shouldNotify() {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n\n if (isNetworkRequestInFlight(this.networkStatus) &&\n this.observableQuery) {\n const { fetchPolicy } = this.observableQuery.options;\n if (fetchPolicy !== \"cache-only\" &&\n fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n\n return true;\n }\n\n public stop() {\n if (!this.stopped) {\n this.stopped = true;\n\n // Cancel the pending notify timeout\n this.reset();\n\n this.cancel();\n // Revert back to the no-op version of cancel inherited from\n // QueryInfo.prototype.\n this.cancel = QueryInfo.prototype.cancel;\n\n this.subscriptions.forEach(sub => sub.unsubscribe());\n\n const oq = this.observableQuery;\n if (oq) oq.stopPolling();\n }\n }\n\n // This method is a no-op by default, until/unless overridden by the\n // updateWatch method.\n private cancel() {}\n\n private lastWatch?: Cache.WatchOptions;\n\n private updateWatch(variables = this.variables) {\n const oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n\n const watchOptions: Cache.WatchOptions = {\n // Although this.getDiffOptions returns Cache.DiffOptions instead of\n // Cache.WatchOptions, all the overlapping options should be the same, so\n // we can reuse getDiffOptions here, for consistency.\n ...this.getDiffOptions(variables),\n watcher: this,\n callback: diff => this.setDiff(diff),\n };\n\n if (!this.lastWatch ||\n !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n }\n }\n\n private lastWrite?: {\n result: FetchResult<any>;\n variables: WatchQueryOptions[\"variables\"];\n dmCount: number | undefined;\n };\n\n public resetLastWrite() {\n this.lastWrite = void 0;\n }\n\n private shouldWrite(\n result: FetchResult<any>,\n variables: WatchQueryOptions[\"variables\"],\n ) {\n const { lastWrite } = this;\n return !(\n lastWrite &&\n // If cache.evict has been called since the last time we wrote this\n // data into the cache, there's a chance writing this result into\n // the cache will repair what was evicted.\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data)\n );\n }\n\n public markResult<T>(\n result: FetchResult<T>,\n options: Pick<WatchQueryOptions,\n | \"variables\"\n | \"fetchPolicy\"\n | \"errorPolicy\">,\n cacheWriteBehavior: CacheWriteBehavior,\n ) {\n this.graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];\n\n // Cancel the pending notify timeout (if it exists) to prevent extraneous network\n // requests. To allow future notify timeouts, diff and dirty are reset as well.\n this.reset();\n\n if (options.fetchPolicy === 'no-cache') {\n this.updateLastDiff(\n { result: result.data, complete: true },\n this.getDiffOptions(options.variables),\n );\n\n } else if (cacheWriteBehavior !== CacheWriteBehavior.FORBID) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n // Using a transaction here so we have a chance to read the result\n // back from the cache before the watch callback fires as a result\n // of writeQuery, so we can store the new diff quietly and ignore\n // it when we receive it redundantly from the watch callback.\n this.cache.performTransaction(cache => {\n if (this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: this.document!,\n data: result.data as T,\n variables: options.variables,\n overwrite: cacheWriteBehavior === CacheWriteBehavior.OVERWRITE,\n });\n\n this.lastWrite = {\n result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(this.cache),\n };\n } else {\n // If result is the same as the last result we received from\n // the network (and the variables match too), avoid writing\n // result into the cache again. The wisdom of skipping this\n // cache write is far from obvious, since any cache write\n // could be the one that puts the cache back into a desired\n // state, fixing corruption or missing data. However, if we\n // always write every network result into the cache, we enable\n // feuds between queries competing to update the same data in\n // incompatible ways, which can lead to an endless cycle of\n // cache broadcasts and useless network requests. As with any\n // feud, eventually one side must step back from the brink,\n // letting the other side(s) have the last word(s). There may\n // be other points where we could break this cycle, such as\n // silencing the broadcast for cache.writeQuery (not a good\n // idea, since it just delays the feud a bit) or somehow\n // avoiding the network request that just happened (also bad,\n // because the server could return useful new data). All\n // options considered, skipping this cache write seems to be\n // the least damaging place to break the cycle, because it\n // reflects the intuition that we recently wrote this exact\n // result into the cache, so the cache *should* already/still\n // contain this data. If some other query has clobbered that\n // data in the meantime, that's too bad, but there will be no\n // winners if every query blindly reverts to its own version\n // of the data. This approach also gives the network a chance\n // to return new data, which will be written into the cache as\n // usual, notifying only those queries that are directly\n // affected by the cache updates, as usual. In the future, an\n // even more sophisticated cache could perhaps prevent or\n // mitigate the clobbering somehow, but that would make this\n // particular cache write even less important, and thus\n // skipping it would be even safer than it is today.\n if (this.lastDiff &&\n this.lastDiff.diff.complete) {\n // Reuse data from the last good (complete) diff that we\n // received, when possible.\n result.data = this.lastDiff.diff.result;\n return;\n }\n // If the previous this.diff was incomplete, fall through to\n // re-reading the latest data with cache.diff, below.\n }\n\n const diffOptions = this.getDiffOptions(options.variables);\n const diff = cache.diff<T>(diffOptions);\n\n // In case the QueryManager stops this QueryInfo before its\n // results are delivered, it's important to avoid restarting the\n // cache watch when markResult is called.\n if (!this.stopped) {\n // Any time we're about to update this.diff, we need to make\n // sure we've started watching the cache.\n this.updateWatch(options.variables);\n }\n\n // If we're allowed to write to the cache, and we can read a\n // complete result from the cache, update result.data to be the\n // result from the cache, rather than the raw network result.\n // Set without setDiff to avoid triggering a notify call, since\n // we have other ways of notifying for this result.\n this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n } else {\n this.lastWrite = void 0;\n }\n }\n }\n\n public markReady() {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n }\n\n public markError(error: ApolloError) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n\n this.reset();\n\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n\n return error;\n }\n}\n\nexport function shouldWriteResult<T>(\n result: FetchResult<T>,\n errorPolicy: ErrorPolicy = \"none\",\n) {\n const ignoreErrors =\n errorPolicy === \"ignore\" ||\n errorPolicy === \"all\";\n let writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="zen-observable" />
2
1
  import { DocumentNode } from 'graphql';
3
2
  import { ApolloLink, FetchResult } from '../link/core';
4
3
  import { Cache, ApolloCache } from '../cache';
@@ -1 +1 @@
1
- {"version":3,"file":"QueryManager.d.ts","sourceRoot":"","sources":["../../src/core/QueryManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryManager.d.ts","sourceRoot":"","sources":["../../src/core/QueryManager.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ var QueryManager = (function () {
37
37
  this.queries.forEach(function (_info, queryId) {
38
38
  _this.stopQueryNoBroadcast(queryId);
39
39
  });
40
- this.cancelPendingFetches(__DEV__ ? new InvariantError('QueryManager stopped while query was in flight') : new InvariantError(13));
40
+ this.cancelPendingFetches(__DEV__ ? new InvariantError('QueryManager stopped while query was in flight') : new InvariantError(11));
41
41
  };
42
42
  QueryManager.prototype.cancelPendingFetches = function (error) {
43
43
  this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });
@@ -50,10 +50,10 @@ var QueryManager = (function () {
50
50
  return __generator(this, function (_f) {
51
51
  switch (_f.label) {
52
52
  case 0:
53
- __DEV__ ? invariant(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.') : invariant(mutation, 14);
53
+ __DEV__ ? invariant(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.') : invariant(mutation, 12);
54
54
  __DEV__ ? invariant(fetchPolicy === 'network-only' ||
55
55
  fetchPolicy === 'no-cache', "Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.") : invariant(fetchPolicy === 'network-only' ||
56
- fetchPolicy === 'no-cache', 15);
56
+ fetchPolicy === 'no-cache', 13);
57
57
  mutationId = this.generateMutationId();
58
58
  mutation = this.transform(mutation).document;
59
59
  variables = this.getVariables(mutation, variables);
@@ -338,10 +338,10 @@ var QueryManager = (function () {
338
338
  var _this = this;
339
339
  if (queryId === void 0) { queryId = this.generateQueryId(); }
340
340
  __DEV__ ? invariant(options.query, 'query option is required. You must specify your GraphQL document ' +
341
- 'in the query option.') : invariant(options.query, 16);
342
- __DEV__ ? invariant(options.query.kind === 'Document', 'You must wrap the query string in a "gql" tag.') : invariant(options.query.kind === 'Document', 17);
343
- __DEV__ ? invariant(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.') : invariant(!options.returnPartialData, 18);
344
- __DEV__ ? invariant(!options.pollInterval, 'pollInterval option only supported on watchQuery.') : invariant(!options.pollInterval, 19);
341
+ 'in the query option.') : invariant(options.query, 14);
342
+ __DEV__ ? invariant(options.query.kind === 'Document', 'You must wrap the query string in a "gql" tag.') : invariant(options.query.kind === 'Document', 15);
343
+ __DEV__ ? invariant(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.') : invariant(!options.returnPartialData, 16);
344
+ __DEV__ ? invariant(!options.pollInterval, 'pollInterval option only supported on watchQuery.') : invariant(!options.pollInterval, 17);
345
345
  return this.fetchQuery(queryId, options).finally(function () { return _this.stopQuery(queryId); });
346
346
  };
347
347
  QueryManager.prototype.generateQueryId = function () {
@@ -366,7 +366,7 @@ var QueryManager = (function () {
366
366
  if (options === void 0) { options = {
367
367
  discardWatches: true,
368
368
  }; }
369
- this.cancelPendingFetches(__DEV__ ? new InvariantError('Store reset while query was in flight (not completed in link chain)') : new InvariantError(20));
369
+ this.cancelPendingFetches(__DEV__ ? new InvariantError('Store reset while query was in flight (not completed in link chain)') : new InvariantError(18));
370
370
  this.queries.forEach(function (queryInfo) {
371
371
  if (queryInfo.observableQuery) {
372
372
  queryInfo.networkStatus = NetworkStatus.loading;
@@ -442,7 +442,7 @@ var QueryManager = (function () {
442
442
  if (__DEV__ && queryNamesAndDocs.size) {
443
443
  queryNamesAndDocs.forEach(function (included, nameOrDoc) {
444
444
  if (!included) {
445
- __DEV__ && invariant.warn("Unknown query " + (typeof nameOrDoc === "string" ? "named " : "") + JSON.stringify(nameOrDoc, null, 2) + " requested in refetchQueries options.include array");
445
+ __DEV__ && invariant.warn("Unknown query ".concat(typeof nameOrDoc === "string" ? "named " : "").concat(JSON.stringify(nameOrDoc, null, 2), " requested in refetchQueries options.include array"));
446
446
  }
447
447
  });
448
448
  }
@@ -678,7 +678,7 @@ var QueryManager = (function () {
678
678
  if (result !== false) {
679
679
  results.set(oq, result);
680
680
  }
681
- return false;
681
+ return result;
682
682
  }
683
683
  if (onQueryUpdated !== null) {
684
684
  includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });