@apollo/client 3.8.1 → 3.8.3

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 (432) hide show
  1. package/apollo-client.cjs +708 -575
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs +253 -191
  5. package/cache/cache.cjs.map +1 -1
  6. package/cache/cache.cjs.native.js +253 -191
  7. package/cache/core/cache.d.ts +4 -4
  8. package/cache/core/cache.d.ts.map +1 -1
  9. package/cache/core/cache.js +10 -7
  10. package/cache/core/cache.js.map +1 -1
  11. package/cache/core/types/Cache.d.ts +3 -3
  12. package/cache/core/types/Cache.d.ts.map +1 -1
  13. package/cache/core/types/Cache.js +0 -1
  14. package/cache/core/types/Cache.js.map +1 -1
  15. package/cache/core/types/DataProxy.d.ts +6 -6
  16. package/cache/core/types/DataProxy.d.ts.map +1 -1
  17. package/cache/core/types/DataProxy.js.map +1 -1
  18. package/cache/core/types/common.d.ts +3 -3
  19. package/cache/core/types/common.d.ts.map +1 -1
  20. package/cache/core/types/common.js.map +1 -1
  21. package/cache/index.d.ts +20 -20
  22. package/cache/index.d.ts.map +1 -1
  23. package/cache/index.js +13 -13
  24. package/cache/index.js.map +1 -1
  25. package/cache/inmemory/entityStore.d.ts +6 -6
  26. package/cache/inmemory/entityStore.d.ts.map +1 -1
  27. package/cache/inmemory/entityStore.js +38 -30
  28. package/cache/inmemory/entityStore.js.map +1 -1
  29. package/cache/inmemory/fixPolyfills.native.d.ts.map +1 -1
  30. package/cache/inmemory/fixPolyfills.native.js +10 -9
  31. package/cache/inmemory/fixPolyfills.native.js.map +1 -1
  32. package/cache/inmemory/fragmentRegistry.d.ts.map +1 -1
  33. package/cache/inmemory/fragmentRegistry.js +6 -4
  34. package/cache/inmemory/fragmentRegistry.js.map +1 -1
  35. package/cache/inmemory/helpers.d.ts +6 -6
  36. package/cache/inmemory/helpers.d.ts.map +1 -1
  37. package/cache/inmemory/helpers.js +16 -14
  38. package/cache/inmemory/helpers.js.map +1 -1
  39. package/cache/inmemory/inMemoryCache.d.ts +9 -9
  40. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  41. package/cache/inmemory/inMemoryCache.js +29 -33
  42. package/cache/inmemory/inMemoryCache.js.map +1 -1
  43. package/cache/inmemory/key-extractor.d.ts.map +1 -1
  44. package/cache/inmemory/key-extractor.js +55 -49
  45. package/cache/inmemory/key-extractor.js.map +1 -1
  46. package/cache/inmemory/object-canon.d.ts.map +1 -1
  47. package/cache/inmemory/object-canon.js +5 -5
  48. package/cache/inmemory/object-canon.js.map +1 -1
  49. package/cache/inmemory/policies.d.ts +6 -6
  50. package/cache/inmemory/policies.d.ts.map +1 -1
  51. package/cache/inmemory/policies.js +74 -45
  52. package/cache/inmemory/policies.js.map +1 -1
  53. package/cache/inmemory/reactiveVars.d.ts +1 -1
  54. package/cache/inmemory/reactiveVars.d.ts.map +1 -1
  55. package/cache/inmemory/reactiveVars.js +5 -5
  56. package/cache/inmemory/reactiveVars.js.map +1 -1
  57. package/cache/inmemory/readFromStore.d.ts +7 -7
  58. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  59. package/cache/inmemory/readFromStore.js +21 -17
  60. package/cache/inmemory/readFromStore.js.map +1 -1
  61. package/cache/inmemory/types.d.ts +7 -7
  62. package/cache/inmemory/types.d.ts.map +1 -1
  63. package/cache/inmemory/types.js +0 -2
  64. package/cache/inmemory/types.js.map +1 -1
  65. package/cache/inmemory/writeToStore.d.ts +7 -7
  66. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  67. package/cache/inmemory/writeToStore.js +40 -30
  68. package/cache/inmemory/writeToStore.js.map +1 -1
  69. package/config/jest/setup.d.ts +2 -2
  70. package/config/jest/setup.js +5 -5
  71. package/config/jest/setup.js.map +1 -1
  72. package/core/ApolloClient.d.ts +12 -11
  73. package/core/ApolloClient.d.ts.map +1 -1
  74. package/core/ApolloClient.js +75 -57
  75. package/core/ApolloClient.js.map +1 -1
  76. package/core/LocalState.d.ts +6 -6
  77. package/core/LocalState.d.ts.map +1 -1
  78. package/core/LocalState.js +17 -16
  79. package/core/LocalState.js.map +1 -1
  80. package/core/ObservableQuery.d.ts +12 -10
  81. package/core/ObservableQuery.d.ts.map +1 -1
  82. package/core/ObservableQuery.js +57 -38
  83. package/core/ObservableQuery.js.map +1 -1
  84. package/core/QueryInfo.d.ts +11 -11
  85. package/core/QueryInfo.d.ts.map +1 -1
  86. package/core/QueryInfo.js +28 -34
  87. package/core/QueryInfo.js.map +1 -1
  88. package/core/QueryManager.d.ts +10 -10
  89. package/core/QueryManager.d.ts.map +1 -1
  90. package/core/QueryManager.js +117 -93
  91. package/core/QueryManager.js.map +1 -1
  92. package/core/core.cjs +266 -206
  93. package/core/core.cjs.map +1 -1
  94. package/core/core.cjs.native.js +266 -206
  95. package/core/networkStatus.js.map +1 -1
  96. package/core/types.d.ts +13 -13
  97. package/core/types.d.ts.map +1 -1
  98. package/core/types.js +0 -1
  99. package/core/types.js.map +1 -1
  100. package/core/watchQueryOptions.d.ts +11 -11
  101. package/core/watchQueryOptions.d.ts.map +1 -1
  102. package/core/watchQueryOptions.js.map +1 -1
  103. package/dev/dev.cjs +44 -40
  104. package/dev/dev.cjs.map +1 -1
  105. package/dev/dev.cjs.native.js +44 -40
  106. package/errors/errors.cjs +7 -5
  107. package/errors/errors.cjs.map +1 -1
  108. package/errors/errors.cjs.native.js +7 -5
  109. package/errors/index.d.ts +4 -4
  110. package/errors/index.d.ts.map +1 -1
  111. package/errors/index.js +9 -7
  112. package/errors/index.js.map +1 -1
  113. package/index.d.ts +2 -2
  114. package/index.js +2 -2
  115. package/index.js.map +1 -1
  116. package/invariantErrorCodes.d.ts.map +1 -1
  117. package/invariantErrorCodes.js +36 -36
  118. package/invariantErrorCodes.js.map +1 -1
  119. package/link/batch/batch.cjs +4 -4
  120. package/link/batch/batch.cjs.map +1 -1
  121. package/link/batch/batch.cjs.native.js +4 -4
  122. package/link/batch/batchLink.d.ts +6 -6
  123. package/link/batch/batchLink.d.ts.map +1 -1
  124. package/link/batch/batchLink.js +4 -4
  125. package/link/batch/batchLink.js.map +1 -1
  126. package/link/batch/batching.d.ts +2 -2
  127. package/link/batch/batching.d.ts.map +1 -1
  128. package/link/batch/batching.js +4 -4
  129. package/link/batch/batching.js.map +1 -1
  130. package/link/batch/index.d.ts +1 -1
  131. package/link/batch/index.js +1 -1
  132. package/link/batch/index.js.map +1 -1
  133. package/link/batch-http/batch-http.cjs +13 -11
  134. package/link/batch-http/batch-http.cjs.map +1 -1
  135. package/link/batch-http/batch-http.cjs.native.js +13 -11
  136. package/link/batch-http/batchHttpLink.d.ts +6 -6
  137. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  138. package/link/batch-http/batchHttpLink.js +17 -15
  139. package/link/batch-http/batchHttpLink.js.map +1 -1
  140. package/link/batch-http/index.d.ts +1 -1
  141. package/link/batch-http/index.js +1 -1
  142. package/link/batch-http/index.js.map +1 -1
  143. package/link/context/context.cjs.map +1 -1
  144. package/link/context/index.d.ts +3 -3
  145. package/link/context/index.js +2 -2
  146. package/link/context/index.js.map +1 -1
  147. package/link/core/ApolloLink.d.ts +3 -3
  148. package/link/core/ApolloLink.js +4 -4
  149. package/link/core/ApolloLink.js.map +1 -1
  150. package/link/core/concat.d.ts +1 -1
  151. package/link/core/concat.js +1 -1
  152. package/link/core/concat.js.map +1 -1
  153. package/link/core/core.cjs +1 -1
  154. package/link/core/core.cjs.map +1 -1
  155. package/link/core/core.cjs.native.js +1 -1
  156. package/link/core/empty.d.ts +1 -1
  157. package/link/core/empty.js +1 -1
  158. package/link/core/empty.js.map +1 -1
  159. package/link/core/execute.d.ts +1 -1
  160. package/link/core/execute.js +1 -1
  161. package/link/core/execute.js.map +1 -1
  162. package/link/core/from.d.ts +1 -1
  163. package/link/core/from.js +1 -1
  164. package/link/core/from.js.map +1 -1
  165. package/link/core/index.d.ts +8 -8
  166. package/link/core/index.js +8 -8
  167. package/link/core/index.js.map +1 -1
  168. package/link/core/split.d.ts +1 -1
  169. package/link/core/split.js +1 -1
  170. package/link/core/split.js.map +1 -1
  171. package/link/core/types.js.map +1 -1
  172. package/link/error/error.cjs.map +1 -1
  173. package/link/error/index.d.ts +5 -5
  174. package/link/error/index.js +2 -2
  175. package/link/error/index.js.map +1 -1
  176. package/link/http/HttpLink.d.ts +3 -3
  177. package/link/http/HttpLink.js +2 -2
  178. package/link/http/HttpLink.js.map +1 -1
  179. package/link/http/checkFetcher.d.ts +1 -1
  180. package/link/http/checkFetcher.d.ts.map +1 -1
  181. package/link/http/checkFetcher.js +2 -2
  182. package/link/http/checkFetcher.js.map +1 -1
  183. package/link/http/createHttpLink.d.ts +2 -2
  184. package/link/http/createHttpLink.d.ts.map +1 -1
  185. package/link/http/createHttpLink.js +27 -26
  186. package/link/http/createHttpLink.js.map +1 -1
  187. package/link/http/createSignalIfSupported.js +1 -1
  188. package/link/http/createSignalIfSupported.js.map +1 -1
  189. package/link/http/http.cjs +39 -35
  190. package/link/http/http.cjs.map +1 -1
  191. package/link/http/http.cjs.native.js +39 -35
  192. package/link/http/index.d.ts +13 -13
  193. package/link/http/index.js +10 -10
  194. package/link/http/index.js.map +1 -1
  195. package/link/http/iterators/nodeStream.d.ts.map +1 -1
  196. package/link/http/iterators/nodeStream.js.map +1 -1
  197. package/link/http/parseAndCheckHttpResponse.d.ts.map +1 -1
  198. package/link/http/parseAndCheckHttpResponse.js +2 -2
  199. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  200. package/link/http/rewriteURIForGET.d.ts +1 -1
  201. package/link/http/rewriteURIForGET.js +12 -12
  202. package/link/http/rewriteURIForGET.js.map +1 -1
  203. package/link/http/selectHttpOptionsAndBody.d.ts +5 -5
  204. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  205. package/link/http/selectHttpOptionsAndBody.js +8 -7
  206. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  207. package/link/http/selectURI.d.ts +1 -1
  208. package/link/http/selectURI.js +2 -2
  209. package/link/http/selectURI.js.map +1 -1
  210. package/link/http/serializeFetchParameter.d.ts +1 -1
  211. package/link/http/serializeFetchParameter.js +1 -1
  212. package/link/http/serializeFetchParameter.js.map +1 -1
  213. package/link/persisted-queries/index.d.ts +4 -4
  214. package/link/persisted-queries/index.d.ts.map +1 -1
  215. package/link/persisted-queries/index.js +26 -25
  216. package/link/persisted-queries/index.js.map +1 -1
  217. package/link/persisted-queries/persisted-queries.cjs +22 -17
  218. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  219. package/link/persisted-queries/persisted-queries.cjs.native.js +22 -17
  220. package/link/retry/delayFunction.d.ts +1 -1
  221. package/link/retry/delayFunction.js.map +1 -1
  222. package/link/retry/index.d.ts +1 -1
  223. package/link/retry/index.js +1 -1
  224. package/link/retry/index.js.map +1 -1
  225. package/link/retry/retry.cjs +2 -2
  226. package/link/retry/retry.cjs.map +1 -1
  227. package/link/retry/retry.cjs.native.js +2 -2
  228. package/link/retry/retryFunction.d.ts +1 -1
  229. package/link/retry/retryFunction.js.map +1 -1
  230. package/link/retry/retryLink.d.ts +5 -5
  231. package/link/retry/retryLink.d.ts.map +1 -1
  232. package/link/retry/retryLink.js +6 -6
  233. package/link/retry/retryLink.js.map +1 -1
  234. package/link/schema/index.d.ts +4 -4
  235. package/link/schema/index.d.ts.map +1 -1
  236. package/link/schema/index.js +13 -8
  237. package/link/schema/index.js.map +1 -1
  238. package/link/schema/schema.cjs +10 -5
  239. package/link/schema/schema.cjs.map +1 -1
  240. package/link/schema/schema.cjs.native.js +10 -5
  241. package/link/subscriptions/index.js +1 -1
  242. package/link/subscriptions/index.js.map +1 -1
  243. package/link/subscriptions/subscriptions.cjs.map +1 -1
  244. package/link/utils/createOperation.d.ts +1 -1
  245. package/link/utils/createOperation.js +3 -3
  246. package/link/utils/createOperation.js.map +1 -1
  247. package/link/utils/filterOperationVariables.d.ts +1 -1
  248. package/link/utils/filterOperationVariables.js +2 -2
  249. package/link/utils/filterOperationVariables.js.map +1 -1
  250. package/link/utils/fromError.d.ts +1 -1
  251. package/link/utils/fromError.js +1 -1
  252. package/link/utils/fromError.js.map +1 -1
  253. package/link/utils/fromPromise.d.ts +1 -1
  254. package/link/utils/fromPromise.js +1 -1
  255. package/link/utils/fromPromise.js.map +1 -1
  256. package/link/utils/index.d.ts +10 -10
  257. package/link/utils/index.js +9 -9
  258. package/link/utils/index.js.map +1 -1
  259. package/link/utils/throwServerError.js +1 -1
  260. package/link/utils/throwServerError.js.map +1 -1
  261. package/link/utils/toPromise.d.ts +1 -1
  262. package/link/utils/toPromise.js +1 -1
  263. package/link/utils/toPromise.js.map +1 -1
  264. package/link/utils/transformOperation.d.ts +1 -1
  265. package/link/utils/transformOperation.js +3 -3
  266. package/link/utils/transformOperation.js.map +1 -1
  267. package/link/utils/utils.cjs +12 -12
  268. package/link/utils/utils.cjs.map +1 -1
  269. package/link/utils/utils.cjs.native.js +12 -12
  270. package/link/utils/validateOperation.d.ts +1 -1
  271. package/link/utils/validateOperation.js +6 -6
  272. package/link/utils/validateOperation.js.map +1 -1
  273. package/link/ws/index.d.ts +5 -5
  274. package/link/ws/index.js +2 -2
  275. package/link/ws/index.js.map +1 -1
  276. package/link/ws/ws.cjs.map +1 -1
  277. package/package.json +22 -22
  278. package/react/cache/QueryReference.d.ts +1 -1
  279. package/react/cache/QueryReference.d.ts.map +1 -1
  280. package/react/cache/QueryReference.js +2 -0
  281. package/react/cache/QueryReference.js.map +1 -1
  282. package/react/hooks/constants.js +1 -1
  283. package/react/hooks/constants.js.map +1 -1
  284. package/react/hooks/hooks.cjs +10 -21
  285. package/react/hooks/hooks.cjs.map +1 -1
  286. package/react/hooks/hooks.cjs.native.js +10 -21
  287. package/react/hooks/useBackgroundQuery.d.ts +1 -1
  288. package/react/hooks/useBackgroundQuery.d.ts.map +1 -1
  289. package/react/hooks/useBackgroundQuery.js.map +1 -1
  290. package/react/hooks/useQuery.d.ts.map +1 -1
  291. package/react/hooks/useQuery.js +1 -8
  292. package/react/hooks/useQuery.js.map +1 -1
  293. package/react/hooks/useReactiveVar.d.ts.map +1 -1
  294. package/react/hooks/useReactiveVar.js +7 -12
  295. package/react/hooks/useReactiveVar.js.map +1 -1
  296. package/react/hooks/useReadQuery.d.ts +1 -1
  297. package/react/hooks/useReadQuery.d.ts.map +1 -1
  298. package/react/hooks/useReadQuery.js +1 -1
  299. package/react/hooks/useReadQuery.js.map +1 -1
  300. package/react/hooks/useSuspenseQuery.d.ts +1 -1
  301. package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
  302. package/react/hooks/useSuspenseQuery.js.map +1 -1
  303. package/react/react.cjs +2 -0
  304. package/react/react.cjs.map +1 -1
  305. package/react/react.cjs.native.js +2 -0
  306. package/react/types/types.js.map +1 -1
  307. package/testing/core/core.cjs +37 -28
  308. package/testing/core/core.cjs.map +1 -1
  309. package/testing/core/core.cjs.native.js +37 -28
  310. package/testing/core/itAsync.d.ts.map +1 -1
  311. package/testing/core/itAsync.js +8 -4
  312. package/testing/core/itAsync.js.map +1 -1
  313. package/testing/core/mocking/mockClient.d.ts +3 -3
  314. package/testing/core/mocking/mockClient.d.ts.map +1 -1
  315. package/testing/core/mocking/mockClient.js +6 -4
  316. package/testing/core/mocking/mockClient.js.map +1 -1
  317. package/testing/core/mocking/mockFetch.d.ts +1 -1
  318. package/testing/core/mocking/mockFetch.d.ts.map +1 -1
  319. package/testing/core/mocking/mockFetch.js +3 -3
  320. package/testing/core/mocking/mockFetch.js.map +1 -1
  321. package/testing/core/mocking/mockLink.d.ts +3 -3
  322. package/testing/core/mocking/mockLink.d.ts.map +1 -1
  323. package/testing/core/mocking/mockLink.js +24 -23
  324. package/testing/core/mocking/mockLink.js.map +1 -1
  325. package/testing/core/mocking/mockQueryManager.d.ts +2 -2
  326. package/testing/core/mocking/mockQueryManager.js +3 -3
  327. package/testing/core/mocking/mockQueryManager.js.map +1 -1
  328. package/testing/core/mocking/mockSubscriptionLink.d.ts +3 -3
  329. package/testing/core/mocking/mockSubscriptionLink.js +4 -4
  330. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -1
  331. package/testing/core/mocking/mockWatchQuery.d.ts +2 -2
  332. package/testing/core/mocking/mockWatchQuery.js +2 -2
  333. package/testing/core/mocking/mockWatchQuery.js.map +1 -1
  334. package/testing/core/observableToPromise.d.ts +3 -3
  335. package/testing/core/observableToPromise.d.ts.map +1 -1
  336. package/testing/core/observableToPromise.js +8 -4
  337. package/testing/core/observableToPromise.js.map +1 -1
  338. package/testing/core/subscribeAndCount.d.ts +1 -1
  339. package/testing/core/subscribeAndCount.d.ts.map +1 -1
  340. package/testing/core/subscribeAndCount.js +5 -3
  341. package/testing/core/subscribeAndCount.js.map +1 -1
  342. package/testing/core/wait.js.map +1 -1
  343. package/testing/core/withConsoleSpy.d.ts.map +1 -1
  344. package/testing/core/withConsoleSpy.js.map +1 -1
  345. package/testing/core/wrap.d.ts.map +1 -1
  346. package/testing/core/wrap.js +14 -12
  347. package/testing/core/wrap.js.map +1 -1
  348. package/testing/index.d.ts +4 -4
  349. package/testing/index.js +3 -3
  350. package/testing/index.js.map +1 -1
  351. package/testing/react/MockedProvider.d.ts +7 -7
  352. package/testing/react/MockedProvider.d.ts.map +1 -1
  353. package/testing/react/MockedProvider.js +10 -11
  354. package/testing/react/MockedProvider.js.map +1 -1
  355. package/testing/testing.cjs +3 -5
  356. package/testing/testing.cjs.map +1 -1
  357. package/testing/testing.cjs.native.js +3 -5
  358. package/utilities/common/canUse.d.ts.map +1 -1
  359. package/utilities/common/canUse.js +4 -5
  360. package/utilities/common/canUse.js.map +1 -1
  361. package/utilities/common/cloneDeep.js +2 -2
  362. package/utilities/common/cloneDeep.js.map +1 -1
  363. package/utilities/common/compact.d.ts +1 -1
  364. package/utilities/common/compact.js.map +1 -1
  365. package/utilities/common/filterInPlace.js.map +1 -1
  366. package/utilities/common/maybeDeepFreeze.js +1 -1
  367. package/utilities/common/maybeDeepFreeze.js.map +1 -1
  368. package/utilities/common/mergeDeep.d.ts.map +1 -1
  369. package/utilities/common/mergeDeep.js +3 -1
  370. package/utilities/common/mergeDeep.js.map +1 -1
  371. package/utilities/common/mergeOptions.d.ts.map +1 -1
  372. package/utilities/common/mergeOptions.js.map +1 -1
  373. package/utilities/common/objects.js +2 -2
  374. package/utilities/common/objects.js.map +1 -1
  375. package/utilities/common/stringifyForDisplay.d.ts.map +1 -1
  376. package/utilities/common/stringifyForDisplay.js +3 -1
  377. package/utilities/common/stringifyForDisplay.js.map +1 -1
  378. package/utilities/globals/global.d.ts.map +1 -1
  379. package/utilities/globals/global.js +3 -1
  380. package/utilities/globals/global.js.map +1 -1
  381. package/utilities/globals/globals.cjs +8 -4
  382. package/utilities/globals/globals.cjs.map +1 -1
  383. package/utilities/globals/globals.cjs.native.js +8 -4
  384. package/utilities/globals/index.d.ts.map +1 -1
  385. package/utilities/globals/index.js +1 -1
  386. package/utilities/globals/index.js.map +1 -1
  387. package/utilities/globals/invariantWrappers.js +1 -1
  388. package/utilities/globals/invariantWrappers.js.map +1 -1
  389. package/utilities/globals/maybe.d.ts.map +1 -1
  390. package/utilities/globals/maybe.js.map +1 -1
  391. package/utilities/graphql/directives.d.ts +1 -1
  392. package/utilities/graphql/directives.d.ts.map +1 -1
  393. package/utilities/graphql/directives.js +17 -13
  394. package/utilities/graphql/directives.js.map +1 -1
  395. package/utilities/graphql/fragments.d.ts +1 -1
  396. package/utilities/graphql/fragments.d.ts.map +1 -1
  397. package/utilities/graphql/fragments.js +12 -12
  398. package/utilities/graphql/fragments.js.map +1 -1
  399. package/utilities/graphql/getFromAST.d.ts +1 -1
  400. package/utilities/graphql/getFromAST.js +16 -16
  401. package/utilities/graphql/getFromAST.js.map +1 -1
  402. package/utilities/graphql/storeUtils.d.ts +2 -2
  403. package/utilities/graphql/storeUtils.d.ts.map +1 -1
  404. package/utilities/graphql/storeUtils.js +36 -34
  405. package/utilities/graphql/storeUtils.js.map +1 -1
  406. package/utilities/graphql/transform.d.ts +1 -1
  407. package/utilities/graphql/transform.d.ts.map +1 -1
  408. package/utilities/graphql/transform.js +48 -32
  409. package/utilities/graphql/transform.js.map +1 -1
  410. package/utilities/observables/Concast.d.ts.map +1 -1
  411. package/utilities/observables/Concast.js +5 -9
  412. package/utilities/observables/Concast.js.map +1 -1
  413. package/utilities/observables/Observable.d.ts +4 -4
  414. package/utilities/observables/Observable.d.ts.map +1 -1
  415. package/utilities/observables/Observable.js +6 -4
  416. package/utilities/observables/Observable.js.map +1 -1
  417. package/utilities/observables/asyncMap.d.ts.map +1 -1
  418. package/utilities/observables/asyncMap.js +5 -2
  419. package/utilities/observables/asyncMap.js.map +1 -1
  420. package/utilities/observables/iteration.js.map +1 -1
  421. package/utilities/policies/pagination.d.ts +1 -1
  422. package/utilities/policies/pagination.d.ts.map +1 -1
  423. package/utilities/policies/pagination.js +9 -7
  424. package/utilities/policies/pagination.js.map +1 -1
  425. package/utilities/types/IsStrictlyAny.d.ts +2 -2
  426. package/utilities/types/IsStrictlyAny.d.ts.map +1 -1
  427. package/utilities/types/IsStrictlyAny.js.map +1 -1
  428. package/utilities/utilities.cjs +147 -121
  429. package/utilities/utilities.cjs.map +1 -1
  430. package/utilities/utilities.cjs.native.js +147 -121
  431. package/version.js +1 -1
  432. package/version.js.map +1 -1
@@ -1,9 +1,9 @@
1
1
  import { __assign, __extends } from "tslib";
2
- import { invariant } from '../utilities/globals/index.js';
3
- import { equal } from '@wry/equality';
4
- import { NetworkStatus, isNetworkRequestInFlight } from './networkStatus.js';
5
- import { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, fixObservableSubclass, getQueryDefinition, } from '../utilities/index.js';
6
- import { equalByQuery } from './equalByQuery.js';
2
+ import { invariant } from "../utilities/globals/index.js";
3
+ import { equal } from "@wry/equality";
4
+ import { NetworkStatus, isNetworkRequestInFlight } from "./networkStatus.js";
5
+ import { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, fixObservableSubclass, getQueryDefinition, } from "../utilities/index.js";
6
+ import { equalByQuery } from "./equalByQuery.js";
7
7
  var assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;
8
8
  var ObservableQuery = (function (_super) {
9
9
  __extends(ObservableQuery, _super);
@@ -42,7 +42,9 @@ var ObservableQuery = (function (_super) {
42
42
  _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);
43
43
  _this.isTornDown = false;
44
44
  var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? "cache-first" : _d;
45
- var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? (fetchPolicy === "standby" ? defaultFetchPolicy : fetchPolicy) : _f;
45
+ var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? fetchPolicy === "standby"
46
+ ? defaultFetchPolicy
47
+ : fetchPolicy : _f;
46
48
  _this.options = __assign(__assign({}, options), { initialFetchPolicy: initialFetchPolicy, fetchPolicy: fetchPolicy });
47
49
  _this.queryId = queryInfo.queryId || queryManager.generateQueryId();
48
50
  var opDef = getOperationDefinition(_this.query);
@@ -94,7 +96,7 @@ var ObservableQuery = (function (_super) {
94
96
  this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) {
95
97
  }
96
98
  else if (this.waitForOwnResult) {
97
- this.queryInfo['updateWatch']();
99
+ this.queryInfo["updateWatch"]();
98
100
  }
99
101
  else {
100
102
  var diff = this.queryInfo.getDiff();
@@ -108,8 +110,7 @@ var ObservableQuery = (function (_super) {
108
110
  delete result.partial;
109
111
  if (diff.complete &&
110
112
  result.networkStatus === NetworkStatus.loading &&
111
- (fetchPolicy === 'cache-first' ||
112
- fetchPolicy === 'cache-only')) {
113
+ (fetchPolicy === "cache-first" || fetchPolicy === "cache-only")) {
113
114
  result.networkStatus = NetworkStatus.ready;
114
115
  result.loading = false;
115
116
  }
@@ -135,11 +136,11 @@ var ObservableQuery = (function (_super) {
135
136
  if (!this.last) {
136
137
  return true;
137
138
  }
138
- var resultIsDifferent = this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective
139
+ var resultIsDifferent = this.queryManager.getDocumentInfo(this.query)
140
+ .hasNonreactiveDirective
139
141
  ? !equalByQuery(this.query, this.last.result, newResult, this.variables)
140
142
  : !equal(this.last.result, newResult);
141
- return (resultIsDifferent ||
142
- (variables && !equal(this.last.variables, variables)));
143
+ return (resultIsDifferent || (variables && !equal(this.last.variables, variables)));
143
144
  };
144
145
  ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {
145
146
  var last = this.last;
@@ -168,14 +169,14 @@ var ObservableQuery = (function (_super) {
168
169
  pollInterval: 0,
169
170
  };
170
171
  var fetchPolicy = this.options.fetchPolicy;
171
- if (fetchPolicy === 'cache-and-network') {
172
+ if (fetchPolicy === "cache-and-network") {
172
173
  reobserveOptions.fetchPolicy = fetchPolicy;
173
174
  }
174
- else if (fetchPolicy === 'no-cache') {
175
- reobserveOptions.fetchPolicy = 'no-cache';
175
+ else if (fetchPolicy === "no-cache") {
176
+ reobserveOptions.fetchPolicy = "no-cache";
176
177
  }
177
178
  else {
178
- reobserveOptions.fetchPolicy = 'network-only';
179
+ reobserveOptions.fetchPolicy = "network-only";
179
180
  }
180
181
  if (globalThis.__DEV__ !== false && variables && hasOwnProperty.call(variables, "variables")) {
181
182
  var queryDef = getQueryDefinition(this.query);
@@ -196,7 +197,9 @@ var ObservableQuery = (function (_super) {
196
197
  };
197
198
  ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {
198
199
  var _this = this;
199
- var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : __assign(__assign(__assign(__assign({}, this.options), { query: this.options.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: "no-cache" });
200
+ var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query
201
+ ? fetchMoreOptions
202
+ : __assign(__assign(__assign(__assign({}, this.options), { query: this.options.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: "no-cache" });
200
203
  combinedOptions.query = this.transformDocument(combinedOptions.query);
201
204
  var qid = this.queryManager.generateQueryId();
202
205
  this.lastQuery = fetchMoreOptions.query
@@ -209,7 +212,9 @@ var ObservableQuery = (function (_super) {
209
212
  this.observe();
210
213
  }
211
214
  var updatedQuerySet = new Set();
212
- return this.queryManager.fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore).then(function (fetchMoreResult) {
215
+ return this.queryManager
216
+ .fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore)
217
+ .then(function (fetchMoreResult) {
213
218
  _this.queryManager.removeQuery(qid);
214
219
  if (queryInfo.networkStatus === NetworkStatus.fetchMore) {
215
220
  queryInfo.networkStatus = originalNetworkStatus;
@@ -223,10 +228,12 @@ var ObservableQuery = (function (_super) {
223
228
  variables: _this.variables,
224
229
  returnPartialData: true,
225
230
  optimistic: false,
226
- }, function (previous) { return updateQuery(previous, {
227
- fetchMoreResult: fetchMoreResult.data,
228
- variables: combinedOptions.variables,
229
- }); });
231
+ }, function (previous) {
232
+ return updateQuery(previous, {
233
+ fetchMoreResult: fetchMoreResult.data,
234
+ variables: combinedOptions.variables,
235
+ });
236
+ });
230
237
  }
231
238
  else {
232
239
  cache.writeQuery({
@@ -241,7 +248,8 @@ var ObservableQuery = (function (_super) {
241
248
  },
242
249
  });
243
250
  return fetchMoreResult;
244
- }).finally(function () {
251
+ })
252
+ .finally(function () {
245
253
  if (!updatedQuerySet.has(_this.query)) {
246
254
  reobserveCacheFirst(_this);
247
255
  }
@@ -292,9 +300,7 @@ var ObservableQuery = (function (_super) {
292
300
  };
293
301
  ObservableQuery.prototype.setVariables = function (variables) {
294
302
  if (equal(this.variables, variables)) {
295
- return this.observers.size
296
- ? this.result()
297
- : Promise.resolve();
303
+ return this.observers.size ? this.result() : Promise.resolve();
298
304
  }
299
305
  this.options.variables = variables;
300
306
  if (!this.observers.size) {
@@ -357,7 +363,7 @@ var ObservableQuery = (function (_super) {
357
363
  };
358
364
  ObservableQuery.prototype.fetch = function (options, newNetworkStatus) {
359
365
  this.queryManager.setObservableQuery(this);
360
- return this.queryManager['fetchConcastWithInfo'](this.queryId, options, newNetworkStatus);
366
+ return this.queryManager["fetchConcastWithInfo"](this.queryId, options, newNetworkStatus);
361
367
  };
362
368
  ObservableQuery.prototype.updatePolling = function () {
363
369
  var _this = this;
@@ -372,8 +378,7 @@ var ObservableQuery = (function (_super) {
372
378
  }
373
379
  return;
374
380
  }
375
- if (pollingInfo &&
376
- pollingInfo.interval === pollInterval) {
381
+ if (pollingInfo && pollingInfo.interval === pollInterval) {
377
382
  return;
378
383
  }
379
384
  invariant(pollInterval, 20);
@@ -383,14 +388,15 @@ var ObservableQuery = (function (_super) {
383
388
  if (_this.pollingInfo) {
384
389
  if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus)) {
385
390
  _this.reobserve({
386
- fetchPolicy: _this.options.initialFetchPolicy === 'no-cache' ? 'no-cache' : 'network-only',
391
+ fetchPolicy: _this.options.initialFetchPolicy === "no-cache"
392
+ ? "no-cache"
393
+ : "network-only",
387
394
  }, NetworkStatus.poll).then(poll, poll);
388
395
  }
389
396
  else {
390
397
  poll();
391
398
  }
392
399
  }
393
- ;
394
400
  };
395
401
  var poll = function () {
396
402
  var info = _this.pollingInfo;
@@ -407,9 +413,9 @@ var ObservableQuery = (function (_super) {
407
413
  if (error && this.last && !equal(variables, this.last.variables)) {
408
414
  error = void 0;
409
415
  }
410
- return this.last = __assign({ result: this.queryManager.assumeImmutableResults
416
+ return (this.last = __assign({ result: this.queryManager.assumeImmutableResults
411
417
  ? newResult
412
- : cloneDeep(newResult), variables: variables }, (error ? { error: error } : null));
418
+ : cloneDeep(newResult), variables: variables }, (error ? { error: error } : null)));
413
419
  };
414
420
  ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {
415
421
  var _this = this;
@@ -421,7 +427,8 @@ var ObservableQuery = (function (_super) {
421
427
  var oldFetchPolicy = this.options.fetchPolicy;
422
428
  var mergedOptions = compact(this.options, newOptions || {});
423
429
  var options = useDisposableConcast
424
- ? mergedOptions
430
+ ?
431
+ mergedOptions
425
432
  : assign(this.options, mergedOptions);
426
433
  var query = this.transformDocument(options.query);
427
434
  this.lastQuery = query;
@@ -470,6 +477,17 @@ var ObservableQuery = (function (_super) {
470
477
  ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {
471
478
  return this.reobserveAsConcast(newOptions, newNetworkStatus).promise;
472
479
  };
480
+ ObservableQuery.prototype.resubscribeAfterError = function () {
481
+ var args = [];
482
+ for (var _i = 0; _i < arguments.length; _i++) {
483
+ args[_i] = arguments[_i];
484
+ }
485
+ var last = this.last;
486
+ this.resetLastResults();
487
+ var subscription = this.subscribe.apply(this, args);
488
+ this.last = last;
489
+ return subscription;
490
+ };
473
491
  ObservableQuery.prototype.observe = function () {
474
492
  this.reportResult(this.getCurrentResult(false), this.variables);
475
493
  };
@@ -486,7 +504,7 @@ var ObservableQuery = (function (_super) {
486
504
  ObservableQuery.prototype.reportError = function (error, variables) {
487
505
  var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });
488
506
  this.updateLastResult(errorResult, variables);
489
- iterateObserversSafely(this.observers, 'error', this.last.error = error);
507
+ iterateObserversSafely(this.observers, "error", (this.last.error = error));
490
508
  };
491
509
  ObservableQuery.prototype.hasObservers = function () {
492
510
  return this.observers.size > 0;
@@ -515,8 +533,7 @@ export { ObservableQuery };
515
533
  fixObservableSubclass(ObservableQuery);
516
534
  export function reobserveCacheFirst(obsQuery) {
517
535
  var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;
518
- if (fetchPolicy === "cache-and-network" ||
519
- fetchPolicy === "network-only") {
536
+ if (fetchPolicy === "cache-and-network" || fetchPolicy === "network-only") {
520
537
  return obsQuery.reobserve({
521
538
  fetchPolicy: "cache-first",
522
539
  nextFetchPolicy: function () {
@@ -539,6 +556,8 @@ export function logMissingFieldErrors(missing) {
539
556
  }
540
557
  }
541
558
  function skipCacheDataFor(fetchPolicy) {
542
- return fetchPolicy === "network-only" || fetchPolicy === "no-cache" || fetchPolicy === "standby";
559
+ return (fetchPolicy === "network-only" ||
560
+ fetchPolicy === "no-cache" ||
561
+ fetchPolicy === "standby");
543
562
  }
544
563
  //# sourceMappingURL=ObservableQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableQuery.js","sourceRoot":"","sources":["../../src/core/ObservableQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../utilities/globals/index.js';\nimport type { DocumentNode } from 'graphql';\nimport { equal } from '@wry/equality';\n\nimport { NetworkStatus, isNetworkRequestInFlight } from './networkStatus.js';\nimport type {\n Concast,\n Observer,\n ObservableSubscription} from '../utilities/index.js';\nimport {\n cloneDeep,\n compact,\n getOperationDefinition,\n Observable,\n iterateObserversSafely,\n fixObservableSubclass,\n getQueryDefinition,\n} from '../utilities/index.js';\nimport type { ApolloError } from '../errors/index.js';\nimport type { QueryManager } from './QueryManager.js';\nimport type {\n ApolloQueryResult,\n OperationVariables,\n TypedDocumentNode,\n} from './types.js';\nimport type {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n NextFetchPolicyContext,\n WatchQueryFetchPolicy,\n} from './watchQueryOptions.js';\nimport type { QueryInfo } from './QueryInfo.js';\nimport type { MissingFieldError } from '../cache/index.js';\nimport type { MissingTree } from '../cache/core/types/common.js';\nimport { equalByQuery } from './equalByQuery.js';\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\ninterface Last<TData, TVariables> {\n result: ApolloQueryResult<TData>;\n variables?: TVariables;\n error?: ApolloError;\n}\n\nexport class ObservableQuery<\n TData = any,\n TVariables extends OperationVariables = 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 // The `query` computed property will always reflect the document transformed\n // by the last run query. `this.options.query` will always reflect the raw\n // untransformed query to ensure document transforms with runtime conditionals\n // are run on the original document.\n public get query(): TypedDocumentNode<TData, TVariables> {\n return this.lastQuery || this.options.query;\n }\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 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 waitForOwnResult: boolean;\n private last?: Last<TData, TVariables>;\n private lastQuery?: DocumentNode;\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 // related classes\n this.queryInfo = queryInfo;\n this.queryManager = queryManager;\n\n // active state\n this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);\n this.isTornDown = false;\n\n const {\n watchQuery: {\n fetchPolicy: defaultFetchPolicy = \"cache-first\",\n } = {},\n } = queryManager.defaultOptions;\n\n const {\n fetchPolicy = defaultFetchPolicy,\n initialFetchPolicy = (\n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n fetchPolicy === \"standby\" ? defaultFetchPolicy : fetchPolicy\n ),\n } = options;\n\n this.options = {\n ...options,\n\n // Remember the initial options.fetchPolicy so we can revert back to this\n // policy when variables change. This information can also be specified\n // (or overridden) by providing options.initialFetchPolicy explicitly.\n initialFetchPolicy,\n\n // This ensures this.options.fetchPolicy always has a string value, in\n // case options.fetchPolicy was not provided.\n fetchPolicy,\n };\n\n this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n\n const opDef = getOperationDefinition(this.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\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 skipCacheDataFor(fetchPolicy) ||\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.getDocumentInfo(this.query).hasForcedResolvers\n ) {\n // Fall through. \n } else if (this.waitForOwnResult) {\n // This would usually be a part of `QueryInfo.getDiff()`. \n // which we skip in the waitForOwnResult case since we are not\n // interested in the diff.\n this.queryInfo['updateWatch']();\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(\n newResult: ApolloQueryResult<TData>,\n variables?: TVariables\n ) {\n if (!this.last) {\n return true;\n }\n\n const resultIsDifferent =\n this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective\n ? !equalByQuery(\n this.query,\n this.last.result,\n newResult,\n this.variables,\n )\n : !equal(this.last.result, newResult);\n\n return (\n resultIsDifferent ||\n (variables && !equal(this.last.variables, variables))\n );\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 (\n last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))\n ) {\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 === '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.query);\n const vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(v => v.variable.name.value === \"variables\")) {\n invariant.warn(`Called refetch(%o) for query %o, which does not declare a $variables variable.\nDid you mean to call refetch(variables) instead of refetch({ variables })?`,\n variables,\n queryDef.name?.value || queryDef\n );\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 TFetchData = TData,\n TFetchVars extends OperationVariables = TVariables,\n >(fetchMoreOptions: FetchMoreQueryOptions<TFetchVars, TFetchData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TFetchData;\n variables: TFetchVars;\n },\n ) => TData;\n }): Promise<ApolloQueryResult<TFetchData>> {\n const combinedOptions = {\n ...(fetchMoreOptions.query ? fetchMoreOptions : {\n ...this.options,\n query: this.options.query,\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<TFetchVars, TFetchData>;\n\n combinedOptions.query = this.transformDocument(combinedOptions.query);\n\n const qid = this.queryManager.generateQueryId();\n\n // If a temporary query is passed to `fetchMore`, we don't want to store\n // it as the last query result since it may be an optimized query for\n // pagination. We will however run the transforms on the original document\n // as well as the document passed in `fetchMoreOptions` to ensure the cache\n // uses the most up-to-date document which may rely on runtime conditionals.\n this.lastQuery = fetchMoreOptions.query\n ? this.transformDocument(this.options.query)\n : combinedOptions.query;\n\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n const { queryInfo } = this;\n const originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n\n const updatedQuerySet = new Set<DocumentNode>();\n\n return this.queryManager.fetchQuery(\n qid,\n combinedOptions,\n NetworkStatus.fetchMore,\n ).then(fetchMoreResult => {\n this.queryManager.removeQuery(qid);\n\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n\n // Performing this cache update inside a cache.batch transaction ensures\n // any affected cache.watch watchers are notified at most once about any\n // updates. Most watchers will be using the QueryInfo class, which\n // responds to notifications by calling reobserveCacheFirst to deliver\n // fetchMore cache results back to this ObservableQuery.\n this.queryManager.cache.batch({\n update: cache => {\n const { updateQuery } = fetchMoreOptions;\n if (updateQuery) {\n cache.updateQuery({\n query: this.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }, previous => updateQuery(previous!, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables as TFetchVars,\n }));\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 cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n\n onWatchUpdated: watch => {\n // Record the DocumentNode associated with any watched query whose\n // data were updated by the cache writes above.\n updatedQuerySet.add(watch.query);\n },\n });\n\n return fetchMoreResult;\n\n }).finally(() => {\n // In case the cache writes above did not generate a broadcast\n // notification (which would have been intercepted by onWatchUpdated),\n // likely because the written data were the same as what was already in\n // the cache, we still want fetchMore to deliver its final loading:false\n // result with the unchanged data.\n if (!updatedQuerySet.has(this.query)) {\n reobserveCacheFirst(this);\n }\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 extends OperationVariables = 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 public silentSetOptions(\n newOptions: Partial<WatchQueryOptions<TVariables, TData>>,\n ) {\n const mergedOptions = compact(this.options, newOptions || {});\n assign(this.options, mergedOptions);\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. Most users should prefer `refetch` instead of\n * `setVariables` in order to to be properly notified of results even when\n * they come from the cache.\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.options.initialFetchPolicy,\n variables,\n }, NetworkStatus.setVariables);\n }\n\n public updateQuery<TVars extends OperationVariables = 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 // Update options.fetchPolicy according to options.nextFetchPolicy.\n private applyNextFetchPolicy(\n reason: NextFetchPolicyContext<TData, TVariables>[\"reason\"],\n // It's possible to use this method to apply options.nextFetchPolicy to\n // options.fetchPolicy even if options !== this.options, though that happens\n // most often when the options are temporary, used for only one request and\n // then thrown away, so nextFetchPolicy may not end up mattering.\n options: WatchQueryOptions<TVariables, TData>,\n ) {\n if (options.nextFetchPolicy) {\n const {\n fetchPolicy = \"cache-first\",\n initialFetchPolicy = fetchPolicy,\n } = options;\n\n if (fetchPolicy === \"standby\") {\n // Do nothing, leaving options.fetchPolicy unchanged.\n } else if (typeof options.nextFetchPolicy === \"function\") {\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\n // seem to imply. Instead, when the cache reports an update after the\n // initial network request, it may be desirable for subsequent network\n // requests to be triggered only if the cache result is incomplete. To\n // that end, the options.nextFetchPolicy option provides an easy way to\n // update options.fetchPolicy after the initial network request, without\n // having to call observableQuery.setOptions.\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason,\n options,\n observable: this,\n initialFetchPolicy,\n });\n } else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n } else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n\n return options.fetchPolicy;\n }\n\n private fetch(\n options: WatchQueryOptions<TVariables, TData>,\n newNetworkStatus?: NetworkStatus,\n ) {\n // TODO Make sure we update the networkStatus (and infer fetchVariables)\n // before actually committing to the fetch.\n this.queryManager.setObservableQuery(this);\n return this.queryManager['fetchConcastWithInfo'](\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 // Most fetchPolicy options don't make sense to use in a polling context, as\n // users wouldn't want to be polling the cache directly. However, network-only and\n // no-cache are both useful for when the user wants to control whether or not the\n // polled results are written to the cache.\n fetchPolicy: this.options.initialFetchPolicy === 'no-cache' ? 'no-cache' : '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 let error: ApolloError | undefined = this.getLastError();\n // Preserve this.last.error unless the variables have changed.\n if (error && this.last && !equal(variables, this.last.variables)) {\n error = void 0;\n }\n return this.last = {\n result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult),\n variables,\n ...(error ? { error } : null),\n };\n }\n\n public reobserveAsConcast(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus,\n ): Concast<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\" or \"no-cache\") 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 const oldFetchPolicy = this.options.fetchPolicy;\n\n const mergedOptions = compact(this.options, newOptions || {});\n const options = useDisposableConcast\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n ? mergedOptions\n : assign(this.options, mergedOptions);\n\n // Don't update options.query with the transformed query to avoid\n // overwriting this.options.query when we aren't using a disposable concast.\n // We want to ensure we can re-run the custom document transforms the next\n // time a request is made against the original query.\n const query = this.transformDocument(options.query);\n\n this.lastQuery = query;\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 !equal(newOptions.variables, oldVariables) &&\n // Don't mess with the fetchPolicy if it's currently \"standby\".\n options.fetchPolicy !== \"standby\" &&\n // If we're changing the fetchPolicy anyway, don't try to change it here\n // using applyNextFetchPolicy. The explicit options.fetchPolicy wins.\n options.fetchPolicy === oldFetchPolicy\n ) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n\n // If the transform doesn't change the document, leave `options` alone and\n // use the original object.\n const fetchOptions = query === options.query ? options : { ...options, query };\n\n this.waitForOwnResult &&= skipCacheDataFor(fetchOptions.fetchPolicy);\n const finishWaitingForOwnResult = () => {\n if (this.concast === concast) {\n this.waitForOwnResult = false;\n }\n };\n \n const variables = fetchOptions.variables && { ...fetchOptions.variables };\n const { concast, fromLink } = this.fetch(fetchOptions, newNetworkStatus);\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: result => {\n finishWaitingForOwnResult();\n this.reportResult(result, variables);\n },\n error: error => {\n finishWaitingForOwnResult();\n this.reportError(error, variables);\n },\n };\n\n if (!useDisposableConcast && (fromLink || !this.concast)) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n\n this.concast = concast;\n this.observer = observer;\n }\n\n concast.addObserver(observer);\n\n return concast;\n }\n\n public reobserve(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus,\n ) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus).promise;\n }\n\n // (Re)deliver the current result to this.observers without applying fetch\n // policies or making network requests.\n private observe() {\n this.reportResult(\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.reportResult.\n this.getCurrentResult(false),\n this.variables,\n );\n }\n\n private reportResult(\n result: ApolloQueryResult<TData>,\n variables: TVariables | undefined,\n ) {\n const lastError = this.getLastError();\n const isDifferent = this.isDifferentFromLastResult(result, variables);\n // Update the last result even when isDifferentFromLastResult returns false,\n // because the query may be using the @nonreactive directive, and we want to\n // save the the latest version of any nonreactive subtrees (in case\n // getCurrentResult is called), even though we skip broadcasting changes.\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n if (lastError || isDifferent) {\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 private transformDocument(document: DocumentNode) {\n return this.queryManager.transform(document);\n }\n}\n\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n\n// Reobserve with fetchPolicy effectively set to \"cache-first\", triggering\n// delivery of any new data from the cache, possibly falling back to the network\n// if any cache data are missing. This allows _complete_ cache results to be\n// delivered without also kicking off unnecessary network requests when\n// this.options.fetchPolicy is \"cache-and-network\" or \"network-only\". When\n// this.options.fetchPolicy is any other policy (\"cache-first\", \"cache-only\",\n// \"standby\", or \"no-cache\"), we call this.reobserve() as usual.\nexport function reobserveCacheFirst<TData, TVars extends OperationVariables>(\n obsQuery: ObservableQuery<TData, TVars>,\n) {\n const { fetchPolicy, nextFetchPolicy } = obsQuery.options;\n\n if (\n fetchPolicy === \"cache-and-network\" ||\n fetchPolicy === \"network-only\"\n ) {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n // Use a temporary nextFetchPolicy function that replaces itself with the\n // previous nextFetchPolicy value and returns the original fetchPolicy.\n nextFetchPolicy(this: WatchQueryOptions<TVars, TData>) {\n // Replace this nextFetchPolicy function in the options object with the\n // original this.options.nextFetchPolicy value.\n this.nextFetchPolicy = nextFetchPolicy;\n // If the original nextFetchPolicy value was a function, give it a\n // chance to decide what happens here.\n if (typeof nextFetchPolicy === \"function\") {\n return nextFetchPolicy.apply(this, arguments);\n }\n // Otherwise go back to the original this.options.fetchPolicy.\n return fetchPolicy!;\n },\n });\n }\n\n return obsQuery.reobserve();\n}\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: %o`, missing);\n }\n}\n\nfunction skipCacheDataFor(fetchPolicy?: WatchQueryFetchPolicy /* `undefined` would mean `\"cache-first\"` */) {\n return fetchPolicy === \"network-only\" || fetchPolicy === \"no-cache\" || fetchPolicy === \"standby\";\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/index.js\";\nimport type { DocumentNode } from \"graphql\";\nimport { equal } from \"@wry/equality\";\n\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport type {\n Concast,\n Observer,\n ObservableSubscription,\n} from \"../utilities/index.js\";\nimport {\n cloneDeep,\n compact,\n getOperationDefinition,\n Observable,\n iterateObserversSafely,\n fixObservableSubclass,\n getQueryDefinition,\n} from \"../utilities/index.js\";\nimport type { ApolloError } from \"../errors/index.js\";\nimport type { QueryManager } from \"./QueryManager.js\";\nimport type {\n ApolloQueryResult,\n OperationVariables,\n TypedDocumentNode,\n} from \"./types.js\";\nimport type {\n WatchQueryOptions,\n FetchMoreQueryOptions,\n SubscribeToMoreOptions,\n NextFetchPolicyContext,\n WatchQueryFetchPolicy,\n} from \"./watchQueryOptions.js\";\nimport type { QueryInfo } from \"./QueryInfo.js\";\nimport type { MissingFieldError } from \"../cache/index.js\";\nimport type { MissingTree } from \"../cache/core/types/common.js\";\nimport { equalByQuery } from \"./equalByQuery.js\";\n\nconst { assign, hasOwnProperty } = 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\ninterface Last<TData, TVariables> {\n result: ApolloQueryResult<TData>;\n variables?: TVariables;\n error?: ApolloError;\n}\n\nexport class ObservableQuery<\n TData = any,\n TVariables extends OperationVariables = 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 // The `query` computed property will always reflect the document transformed\n // by the last run query. `this.options.query` will always reflect the raw\n // untransformed query to ensure document transforms with runtime conditionals\n // are run on the original document.\n public get query(): TypedDocumentNode<TData, TVariables> {\n return this.lastQuery || this.options.query;\n }\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 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 waitForOwnResult: boolean;\n private last?: Last<TData, TVariables>;\n private lastQuery?: DocumentNode;\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 // related classes\n this.queryInfo = queryInfo;\n this.queryManager = queryManager;\n\n // active state\n this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);\n this.isTornDown = false;\n\n const {\n watchQuery: { fetchPolicy: defaultFetchPolicy = \"cache-first\" } = {},\n } = queryManager.defaultOptions;\n\n const {\n fetchPolicy = defaultFetchPolicy,\n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n initialFetchPolicy = fetchPolicy === \"standby\"\n ? defaultFetchPolicy\n : fetchPolicy,\n } = options;\n\n this.options = {\n ...options,\n\n // Remember the initial options.fetchPolicy so we can revert back to this\n // policy when variables change. This information can also be specified\n // (or overridden) by providing options.initialFetchPolicy explicitly.\n initialFetchPolicy,\n\n // This ensures this.options.fetchPolicy always has a string value, in\n // case options.fetchPolicy was not provided.\n fetchPolicy,\n };\n\n this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n\n const opDef = getOperationDefinition(this.query);\n this.queryName = opDef && opDef.name && opDef.name.value;\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 skipCacheDataFor(fetchPolicy) ||\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.getDocumentInfo(this.query).hasForcedResolvers\n ) {\n // Fall through.\n } else if (this.waitForOwnResult) {\n // This would usually be a part of `QueryInfo.getDiff()`.\n // which we skip in the waitForOwnResult case since we are not\n // interested in the diff.\n this.queryInfo[\"updateWatch\"]();\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\" || 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(\n newResult: ApolloQueryResult<TData>,\n variables?: TVariables\n ) {\n if (!this.last) {\n return true;\n }\n\n const resultIsDifferent = this.queryManager.getDocumentInfo(this.query)\n .hasNonreactiveDirective\n ? !equalByQuery(this.query, this.last.result, newResult, this.variables)\n : !equal(this.last.result, newResult);\n\n return (\n resultIsDifferent || (variables && !equal(this.last.variables, variables))\n );\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 (\n last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))\n ) {\n return last[key];\n }\n }\n\n public getLastResult(\n variablesMustMatch?: boolean\n ): 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(\n variables?: Partial<TVariables>\n ): 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 === \"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.query);\n const vars = queryDef.variableDefinitions;\n if (!vars || !vars.some((v) => v.variable.name.value === \"variables\")) {\n invariant.warn(\n `Called refetch(%o) for query %o, which does not declare a $variables variable.\nDid you mean to call refetch(variables) instead of refetch({ variables })?`,\n variables,\n queryDef.name?.value || queryDef\n );\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 TFetchData = TData,\n TFetchVars extends OperationVariables = TVariables,\n >(\n fetchMoreOptions: FetchMoreQueryOptions<TFetchVars, TFetchData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TFetchData;\n variables: TFetchVars;\n }\n ) => TData;\n }\n ): Promise<ApolloQueryResult<TFetchData>> {\n const combinedOptions = {\n ...(fetchMoreOptions.query\n ? fetchMoreOptions\n : {\n ...this.options,\n query: this.options.query,\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<TFetchVars, TFetchData>;\n\n combinedOptions.query = this.transformDocument(combinedOptions.query);\n\n const qid = this.queryManager.generateQueryId();\n\n // If a temporary query is passed to `fetchMore`, we don't want to store\n // it as the last query result since it may be an optimized query for\n // pagination. We will however run the transforms on the original document\n // as well as the document passed in `fetchMoreOptions` to ensure the cache\n // uses the most up-to-date document which may rely on runtime conditionals.\n this.lastQuery = fetchMoreOptions.query\n ? this.transformDocument(this.options.query)\n : combinedOptions.query;\n\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n const { queryInfo } = this;\n const originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n\n const updatedQuerySet = new Set<DocumentNode>();\n\n return this.queryManager\n .fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore)\n .then((fetchMoreResult) => {\n this.queryManager.removeQuery(qid);\n\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n\n // Performing this cache update inside a cache.batch transaction ensures\n // any affected cache.watch watchers are notified at most once about any\n // updates. Most watchers will be using the QueryInfo class, which\n // responds to notifications by calling reobserveCacheFirst to deliver\n // fetchMore cache results back to this ObservableQuery.\n this.queryManager.cache.batch({\n update: (cache) => {\n const { updateQuery } = fetchMoreOptions;\n if (updateQuery) {\n cache.updateQuery(\n {\n query: this.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n },\n (previous) =>\n updateQuery(previous!, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables as TFetchVars,\n })\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 cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n\n onWatchUpdated: (watch) => {\n // Record the DocumentNode associated with any watched query whose\n // data were updated by the cache writes above.\n updatedQuerySet.add(watch.query);\n },\n });\n\n return fetchMoreResult;\n })\n .finally(() => {\n // In case the cache writes above did not generate a broadcast\n // notification (which would have been intercepted by onWatchUpdated),\n // likely because the written data were the same as what was already in\n // the cache, we still want fetchMore to deliver its final loading:false\n // result with the unchanged data.\n if (!updatedQuerySet.has(this.query)) {\n reobserveCacheFirst(this);\n }\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 extends OperationVariables = 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 public silentSetOptions(\n newOptions: Partial<WatchQueryOptions<TVariables, TData>>\n ) {\n const mergedOptions = compact(this.options, newOptions || {});\n assign(this.options, mergedOptions);\n }\n\n /**\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. Most users should prefer `refetch` instead of\n * `setVariables` in order to to be properly notified of results even when\n * they come from the cache.\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 ? this.result() : 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 {\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.options.initialFetchPolicy,\n variables,\n },\n NetworkStatus.setVariables\n );\n }\n\n public updateQuery<TVars extends OperationVariables = 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 // Update options.fetchPolicy according to options.nextFetchPolicy.\n private applyNextFetchPolicy(\n reason: NextFetchPolicyContext<TData, TVariables>[\"reason\"],\n // It's possible to use this method to apply options.nextFetchPolicy to\n // options.fetchPolicy even if options !== this.options, though that happens\n // most often when the options are temporary, used for only one request and\n // then thrown away, so nextFetchPolicy may not end up mattering.\n options: WatchQueryOptions<TVariables, TData>\n ) {\n if (options.nextFetchPolicy) {\n const { fetchPolicy = \"cache-first\", initialFetchPolicy = fetchPolicy } =\n options;\n\n if (fetchPolicy === \"standby\") {\n // Do nothing, leaving options.fetchPolicy unchanged.\n } else if (typeof options.nextFetchPolicy === \"function\") {\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\n // seem to imply. Instead, when the cache reports an update after the\n // initial network request, it may be desirable for subsequent network\n // requests to be triggered only if the cache result is incomplete. To\n // that end, the options.nextFetchPolicy option provides an easy way to\n // update options.fetchPolicy after the initial network request, without\n // having to call observableQuery.setOptions.\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason,\n options,\n observable: this,\n initialFetchPolicy,\n });\n } else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n } else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n\n return options.fetchPolicy;\n }\n\n private fetch(\n options: WatchQueryOptions<TVariables, TData>,\n newNetworkStatus?: NetworkStatus\n ) {\n // TODO Make sure we update the networkStatus (and infer fetchVariables)\n // before actually committing to the fetch.\n this.queryManager.setObservableQuery(this);\n return this.queryManager[\"fetchConcastWithInfo\"](\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: { pollInterval },\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 && 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 {\n // Most fetchPolicy options don't make sense to use in a polling context, as\n // users wouldn't want to be polling the cache directly. However, network-only and\n // no-cache are both useful for when the user wants to control whether or not the\n // polled results are written to the cache.\n fetchPolicy:\n this.options.initialFetchPolicy === \"no-cache\"\n ? \"no-cache\"\n : \"network-only\",\n },\n NetworkStatus.poll\n ).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 let error: ApolloError | undefined = this.getLastError();\n // Preserve this.last.error unless the variables have changed.\n if (error && this.last && !equal(variables, this.last.variables)) {\n error = void 0;\n }\n return (this.last = {\n result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult),\n variables,\n ...(error ? { error } : null),\n });\n }\n\n public reobserveAsConcast(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus\n ): Concast<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\" or \"no-cache\") 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 const oldFetchPolicy = this.options.fetchPolicy;\n\n const mergedOptions = compact(this.options, newOptions || {});\n const options = useDisposableConcast\n ? // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n mergedOptions\n : assign(this.options, mergedOptions);\n\n // Don't update options.query with the transformed query to avoid\n // overwriting this.options.query when we aren't using a disposable concast.\n // We want to ensure we can re-run the custom document transforms the next\n // time a request is made against the original query.\n const query = this.transformDocument(options.query);\n\n this.lastQuery = query;\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 !equal(newOptions.variables, oldVariables) &&\n // Don't mess with the fetchPolicy if it's currently \"standby\".\n options.fetchPolicy !== \"standby\" &&\n // If we're changing the fetchPolicy anyway, don't try to change it here\n // using applyNextFetchPolicy. The explicit options.fetchPolicy wins.\n options.fetchPolicy === oldFetchPolicy\n ) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n\n // If the transform doesn't change the document, leave `options` alone and\n // use the original object.\n const fetchOptions =\n query === options.query ? options : { ...options, query };\n\n this.waitForOwnResult &&= skipCacheDataFor(fetchOptions.fetchPolicy);\n const finishWaitingForOwnResult = () => {\n if (this.concast === concast) {\n this.waitForOwnResult = false;\n }\n };\n\n const variables = fetchOptions.variables && { ...fetchOptions.variables };\n const { concast, fromLink } = this.fetch(fetchOptions, newNetworkStatus);\n const observer: Observer<ApolloQueryResult<TData>> = {\n next: (result) => {\n finishWaitingForOwnResult();\n this.reportResult(result, variables);\n },\n error: (error) => {\n finishWaitingForOwnResult();\n this.reportError(error, variables);\n },\n };\n\n if (!useDisposableConcast && (fromLink || !this.concast)) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n\n this.concast = concast;\n this.observer = observer;\n }\n\n concast.addObserver(observer);\n\n return concast;\n }\n\n public reobserve(\n newOptions?: Partial<WatchQueryOptions<TVariables, TData>>,\n newNetworkStatus?: NetworkStatus\n ) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus).promise;\n }\n\n public resubscribeAfterError(\n onNext: (value: ApolloQueryResult<TData>) => void,\n onError?: (error: any) => void,\n onComplete?: () => void\n ): ObservableSubscription;\n\n public resubscribeAfterError(\n observer: Observer<ApolloQueryResult<TData>>\n ): ObservableSubscription;\n\n public resubscribeAfterError(...args: [any, any?, any?]) {\n // If `lastError` is set in the current when the subscription is re-created,\n // the subscription will immediately receive the error, which will\n // cause it to terminate again. To avoid this, we first clear\n // the last error/result from the `observableQuery` before re-starting\n // the subscription, and restore the last value afterwards so that the\n // subscription has a chance to stay open.\n const last = this.last;\n this.resetLastResults();\n\n const subscription = this.subscribe(...args);\n this.last = last;\n\n return subscription;\n }\n\n // (Re)deliver the current result to this.observers without applying fetch\n // policies or making network requests.\n private observe() {\n this.reportResult(\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.reportResult.\n this.getCurrentResult(false),\n this.variables\n );\n }\n\n private reportResult(\n result: ApolloQueryResult<TData>,\n variables: TVariables | undefined\n ) {\n const lastError = this.getLastError();\n const isDifferent = this.isDifferentFromLastResult(result, variables);\n // Update the last result even when isDifferentFromLastResult returns false,\n // because the query may be using the @nonreactive directive, and we want to\n // save the the latest version of any nonreactive subtrees (in case\n // getCurrentResult is called), even though we skip broadcasting changes.\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n if (lastError || isDifferent) {\n iterateObserversSafely(this.observers, \"next\", result);\n }\n }\n\n private reportError(error: ApolloError, variables: TVariables | undefined) {\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 private transformDocument(document: DocumentNode) {\n return this.queryManager.transform(document);\n }\n}\n\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n\n// Reobserve with fetchPolicy effectively set to \"cache-first\", triggering\n// delivery of any new data from the cache, possibly falling back to the network\n// if any cache data are missing. This allows _complete_ cache results to be\n// delivered without also kicking off unnecessary network requests when\n// this.options.fetchPolicy is \"cache-and-network\" or \"network-only\". When\n// this.options.fetchPolicy is any other policy (\"cache-first\", \"cache-only\",\n// \"standby\", or \"no-cache\"), we call this.reobserve() as usual.\nexport function reobserveCacheFirst<TData, TVars extends OperationVariables>(\n obsQuery: ObservableQuery<TData, TVars>\n) {\n const { fetchPolicy, nextFetchPolicy } = obsQuery.options;\n\n if (fetchPolicy === \"cache-and-network\" || fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n // Use a temporary nextFetchPolicy function that replaces itself with the\n // previous nextFetchPolicy value and returns the original fetchPolicy.\n nextFetchPolicy(this: WatchQueryOptions<TVars, TData>) {\n // Replace this nextFetchPolicy function in the options object with the\n // original this.options.nextFetchPolicy value.\n this.nextFetchPolicy = nextFetchPolicy;\n // If the original nextFetchPolicy value was a function, give it a\n // chance to decide what happens here.\n if (typeof nextFetchPolicy === \"function\") {\n return nextFetchPolicy.apply(this, arguments);\n }\n // Otherwise go back to the original this.options.fetchPolicy.\n return fetchPolicy!;\n },\n });\n }\n\n return obsQuery.reobserve();\n}\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: %o`, missing);\n }\n}\n\nfunction skipCacheDataFor(\n fetchPolicy?: WatchQueryFetchPolicy /* `undefined` would mean `\"cache-first\"` */\n) {\n return (\n fetchPolicy === \"network-only\" ||\n fetchPolicy === \"no-cache\" ||\n fetchPolicy === \"standby\"\n );\n}\n"]}
@@ -1,13 +1,13 @@
1
- import type { DocumentNode, GraphQLError } from 'graphql';
2
- import type { Cache } from '../cache/index.js';
3
- import type { WatchQueryOptions, ErrorPolicy } from './watchQueryOptions.js';
4
- import type { ObservableQuery } from './ObservableQuery.js';
5
- import type { QueryListener } from './types.js';
6
- import type { FetchResult } from '../link/core/index.js';
7
- import type { ObservableSubscription } from '../utilities/index.js';
8
- import { NetworkStatus } from './networkStatus.js';
9
- import type { ApolloError } from '../errors/index.js';
10
- import type { QueryManager } from './QueryManager.js';
1
+ import type { DocumentNode, GraphQLError } from "graphql";
2
+ import type { Cache } from "../cache/index.js";
3
+ import type { WatchQueryOptions, ErrorPolicy } from "./watchQueryOptions.js";
4
+ import type { ObservableQuery } from "./ObservableQuery.js";
5
+ import type { QueryListener } from "./types.js";
6
+ import type { FetchResult } from "../link/core/index.js";
7
+ import type { ObservableSubscription } from "../utilities/index.js";
8
+ import { NetworkStatus } from "./networkStatus.js";
9
+ import type { ApolloError } from "../errors/index.js";
10
+ import type { QueryManager } from "./QueryManager.js";
11
11
  export type QueryStoreValue = Pick<QueryInfo, "variables" | "networkStatus" | "networkError" | "graphQLErrors">;
12
12
  export declare const enum CacheWriteBehavior {
13
13
  FORBID = 0,
@@ -37,7 +37,7 @@ export declare class QueryInfo {
37
37
  private dirty;
38
38
  private notifyTimeout?;
39
39
  reset(): void;
40
- getDiff(variables?: Record<string, any> | undefined): Cache.DiffResult<any>;
40
+ getDiff(): Cache.DiffResult<any>;
41
41
  private lastDiff?;
42
42
  private updateLastDiff;
43
43
  private getDiffOptions;
@@ -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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"}