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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/apollo-client.cjs +1030 -673
  2. package/apollo-client.cjs.map +1 -1
  3. package/apollo-client.min.cjs +1 -1
  4. package/cache/cache.cjs +35 -31
  5. package/cache/cache.cjs.map +1 -1
  6. package/cache/cache.cjs.native.js +35 -31
  7. package/cache/core/cache.d.ts +5 -4
  8. package/cache/core/cache.d.ts.map +1 -1
  9. package/cache/core/cache.js +1 -0
  10. package/cache/core/cache.js.map +1 -1
  11. package/cache/core/types/Cache.d.ts +2 -2
  12. package/cache/core/types/Cache.d.ts.map +1 -1
  13. package/cache/core/types/Cache.js.map +1 -1
  14. package/cache/core/types/DataProxy.d.ts +4 -4
  15. package/cache/core/types/DataProxy.d.ts.map +1 -1
  16. package/cache/core/types/DataProxy.js.map +1 -1
  17. package/cache/core/types/common.d.ts +3 -3
  18. package/cache/core/types/common.d.ts.map +1 -1
  19. package/cache/core/types/common.js.map +1 -1
  20. package/cache/inmemory/entityStore.d.ts +5 -5
  21. package/cache/inmemory/entityStore.d.ts.map +1 -1
  22. package/cache/inmemory/entityStore.js +2 -2
  23. package/cache/inmemory/entityStore.js.map +1 -1
  24. package/cache/inmemory/fragmentRegistry.d.ts +1 -1
  25. package/cache/inmemory/fragmentRegistry.d.ts.map +1 -1
  26. package/cache/inmemory/fragmentRegistry.js.map +1 -1
  27. package/cache/inmemory/helpers.d.ts +6 -5
  28. package/cache/inmemory/helpers.d.ts.map +1 -1
  29. package/cache/inmemory/helpers.js.map +1 -1
  30. package/cache/inmemory/inMemoryCache.d.ts +9 -7
  31. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  32. package/cache/inmemory/inMemoryCache.js +14 -15
  33. package/cache/inmemory/inMemoryCache.js.map +1 -1
  34. package/cache/inmemory/key-extractor.d.ts +1 -1
  35. package/cache/inmemory/key-extractor.d.ts.map +1 -1
  36. package/cache/inmemory/key-extractor.js +2 -2
  37. package/cache/inmemory/key-extractor.js.map +1 -1
  38. package/cache/inmemory/policies.d.ts +7 -6
  39. package/cache/inmemory/policies.d.ts.map +1 -1
  40. package/cache/inmemory/policies.js +6 -6
  41. package/cache/inmemory/policies.js.map +1 -1
  42. package/cache/inmemory/reactiveVars.d.ts +1 -1
  43. package/cache/inmemory/reactiveVars.d.ts.map +1 -1
  44. package/cache/inmemory/reactiveVars.js.map +1 -1
  45. package/cache/inmemory/readFromStore.d.ts +6 -6
  46. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  47. package/cache/inmemory/readFromStore.js +10 -5
  48. package/cache/inmemory/readFromStore.js.map +1 -1
  49. package/cache/inmemory/types.d.ts +6 -6
  50. package/cache/inmemory/types.d.ts.map +1 -1
  51. package/cache/inmemory/types.js.map +1 -1
  52. package/cache/inmemory/writeToStore.d.ts +6 -6
  53. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  54. package/cache/inmemory/writeToStore.js +7 -8
  55. package/cache/inmemory/writeToStore.js.map +1 -1
  56. package/config/jest/setup.d.ts +1 -0
  57. package/config/jest/setup.d.ts.map +1 -1
  58. package/config/jest/setup.js +3 -0
  59. package/config/jest/setup.js.map +1 -1
  60. package/core/ApolloClient.d.ts +13 -10
  61. package/core/ApolloClient.d.ts.map +1 -1
  62. package/core/ApolloClient.js +18 -16
  63. package/core/ApolloClient.js.map +1 -1
  64. package/core/DocumentTransform.d.ts +24 -0
  65. package/core/DocumentTransform.d.ts.map +1 -0
  66. package/core/DocumentTransform.js +68 -0
  67. package/core/DocumentTransform.js.map +1 -0
  68. package/core/LocalState.d.ts +7 -9
  69. package/core/LocalState.d.ts.map +1 -1
  70. package/core/LocalState.js +6 -10
  71. package/core/LocalState.js.map +1 -1
  72. package/core/ObservableQuery.d.ts +11 -8
  73. package/core/ObservableQuery.d.ts.map +1 -1
  74. package/core/ObservableQuery.js +48 -28
  75. package/core/ObservableQuery.js.map +1 -1
  76. package/core/QueryInfo.d.ts +9 -9
  77. package/core/QueryInfo.d.ts.map +1 -1
  78. package/core/QueryInfo.js.map +1 -1
  79. package/core/QueryManager.d.ts +15 -11
  80. package/core/QueryManager.d.ts.map +1 -1
  81. package/core/QueryManager.js +115 -108
  82. package/core/QueryManager.js.map +1 -1
  83. package/core/core.cjs +332 -172
  84. package/core/core.cjs.map +1 -1
  85. package/core/core.cjs.native.js +332 -172
  86. package/core/equalByQuery.d.ts +4 -0
  87. package/core/equalByQuery.d.ts.map +1 -0
  88. package/{react/hooks/compareResults.js → core/equalByQuery.js} +14 -10
  89. package/core/equalByQuery.js.map +1 -0
  90. package/core/index.d.ts +2 -1
  91. package/core/index.d.ts.map +1 -1
  92. package/core/index.js +2 -1
  93. package/core/index.js.map +1 -1
  94. package/core/networkStatus.d.ts +1 -0
  95. package/core/networkStatus.d.ts.map +1 -1
  96. package/core/networkStatus.js +3 -0
  97. package/core/networkStatus.js.map +1 -1
  98. package/core/types.d.ts +14 -14
  99. package/core/types.d.ts.map +1 -1
  100. package/core/types.js.map +1 -1
  101. package/core/watchQueryOptions.d.ts +6 -7
  102. package/core/watchQueryOptions.d.ts.map +1 -1
  103. package/core/watchQueryOptions.js.map +1 -1
  104. package/dev/dev.cjs +642 -0
  105. package/dev/dev.cjs.map +1 -0
  106. package/dev/dev.cjs.native.js +642 -0
  107. package/dev/index.d.ts +4 -0
  108. package/dev/index.d.ts.map +1 -0
  109. package/dev/index.js +4 -0
  110. package/dev/index.js.map +1 -0
  111. package/dev/loadDevMessages.d.ts +2 -0
  112. package/dev/loadDevMessages.d.ts.map +1 -0
  113. package/dev/loadDevMessages.js +6 -0
  114. package/dev/loadDevMessages.js.map +1 -0
  115. package/dev/loadErrorMessageHandler.d.ts +3 -0
  116. package/dev/loadErrorMessageHandler.d.ts.map +1 -0
  117. package/dev/loadErrorMessageHandler.js +26 -0
  118. package/dev/loadErrorMessageHandler.js.map +1 -0
  119. package/dev/loadErrorMessages.d.ts +2 -0
  120. package/dev/loadErrorMessages.d.ts.map +1 -0
  121. package/dev/loadErrorMessages.js +6 -0
  122. package/dev/loadErrorMessages.js.map +1 -0
  123. package/dev/package.json +8 -0
  124. package/errors/errors.cjs +17 -17
  125. package/errors/errors.cjs.map +1 -1
  126. package/errors/errors.cjs.native.js +17 -17
  127. package/errors/index.d.ts +26 -10
  128. package/errors/index.d.ts.map +1 -1
  129. package/errors/index.js +17 -19
  130. package/errors/index.js.map +1 -1
  131. package/invariantErrorCodes.d.ts +13 -0
  132. package/invariantErrorCodes.d.ts.map +1 -0
  133. package/invariantErrorCodes.js +331 -144
  134. package/invariantErrorCodes.js.map +1 -0
  135. package/link/batch/batchLink.d.ts +4 -3
  136. package/link/batch/batchLink.d.ts.map +1 -1
  137. package/link/batch/batchLink.js.map +1 -1
  138. package/link/batch/batching.d.ts +1 -1
  139. package/link/batch/batching.d.ts.map +1 -1
  140. package/link/batch/batching.js.map +1 -1
  141. package/link/batch-http/batch-http.cjs +23 -2
  142. package/link/batch-http/batch-http.cjs.map +1 -1
  143. package/link/batch-http/batch-http.cjs.native.js +23 -2
  144. package/link/batch-http/batchHttpLink.d.ts +3 -2
  145. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  146. package/link/batch-http/batchHttpLink.js +7 -2
  147. package/link/batch-http/batchHttpLink.js.map +1 -1
  148. package/link/context/index.d.ts +3 -2
  149. package/link/context/index.d.ts.map +1 -1
  150. package/link/context/index.js.map +1 -1
  151. package/link/core/ApolloLink.d.ts +3 -2
  152. package/link/core/ApolloLink.d.ts.map +1 -1
  153. package/link/core/ApolloLink.js +3 -13
  154. package/link/core/ApolloLink.js.map +1 -1
  155. package/link/core/core.cjs +2 -12
  156. package/link/core/core.cjs.map +1 -1
  157. package/link/core/core.cjs.native.js +2 -12
  158. package/link/core/types.d.ts +8 -3
  159. package/link/core/types.d.ts.map +1 -1
  160. package/link/core/types.js.map +1 -1
  161. package/link/error/index.d.ts +4 -3
  162. package/link/error/index.d.ts.map +1 -1
  163. package/link/error/index.js.map +1 -1
  164. package/link/http/HttpLink.d.ts +3 -2
  165. package/link/http/HttpLink.d.ts.map +1 -1
  166. package/link/http/HttpLink.js.map +1 -1
  167. package/link/http/checkFetcher.js +2 -2
  168. package/link/http/checkFetcher.js.map +1 -1
  169. package/link/http/createHttpLink.d.ts +1 -1
  170. package/link/http/createHttpLink.d.ts.map +1 -1
  171. package/link/http/createHttpLink.js +21 -20
  172. package/link/http/createHttpLink.js.map +1 -1
  173. package/link/http/http.cjs +73 -43
  174. package/link/http/http.cjs.map +1 -1
  175. package/link/http/http.cjs.native.js +73 -43
  176. package/link/http/iterators/nodeStream.d.ts +1 -1
  177. package/link/http/iterators/nodeStream.d.ts.map +1 -1
  178. package/link/http/iterators/nodeStream.js.map +1 -1
  179. package/link/http/parseAndCheckHttpResponse.d.ts +2 -2
  180. package/link/http/parseAndCheckHttpResponse.d.ts.map +1 -1
  181. package/link/http/parseAndCheckHttpResponse.js +47 -26
  182. package/link/http/parseAndCheckHttpResponse.js.map +1 -1
  183. package/link/http/responseIterator.d.ts +1 -1
  184. package/link/http/responseIterator.d.ts.map +1 -1
  185. package/link/http/responseIterator.js.map +1 -1
  186. package/link/http/rewriteURIForGET.d.ts +1 -1
  187. package/link/http/rewriteURIForGET.d.ts.map +1 -1
  188. package/link/http/rewriteURIForGET.js.map +1 -1
  189. package/link/http/selectHttpOptionsAndBody.d.ts +3 -2
  190. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  191. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  192. package/link/http/selectURI.d.ts +1 -1
  193. package/link/http/selectURI.d.ts.map +1 -1
  194. package/link/http/selectURI.js.map +1 -1
  195. package/link/http/serializeFetchParameter.d.ts +1 -1
  196. package/link/http/serializeFetchParameter.d.ts.map +1 -1
  197. package/link/http/serializeFetchParameter.js +2 -2
  198. package/link/http/serializeFetchParameter.js.map +1 -1
  199. package/link/persisted-queries/index.d.ts +4 -3
  200. package/link/persisted-queries/index.d.ts.map +1 -1
  201. package/link/persisted-queries/index.js +16 -20
  202. package/link/persisted-queries/index.js.map +1 -1
  203. package/link/persisted-queries/persisted-queries.cjs +15 -19
  204. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  205. package/link/persisted-queries/persisted-queries.cjs.native.js +15 -19
  206. package/link/remove-typename/index.d.ts +2 -0
  207. package/link/remove-typename/index.d.ts.map +1 -0
  208. package/link/remove-typename/index.js +2 -0
  209. package/link/remove-typename/index.js.map +1 -0
  210. package/link/remove-typename/package.json +8 -0
  211. package/link/remove-typename/remove-typename.cjs +82 -0
  212. package/link/remove-typename/remove-typename.cjs.map +1 -0
  213. package/link/remove-typename/remove-typename.cjs.native.js +82 -0
  214. package/link/remove-typename/removeTypenameFromVariables.d.ts +11 -0
  215. package/link/remove-typename/removeTypenameFromVariables.d.ts.map +1 -0
  216. package/link/remove-typename/removeTypenameFromVariables.js +74 -0
  217. package/link/remove-typename/removeTypenameFromVariables.js.map +1 -0
  218. package/link/retry/delayFunction.d.ts +1 -1
  219. package/link/retry/delayFunction.d.ts.map +1 -1
  220. package/link/retry/delayFunction.js.map +1 -1
  221. package/link/retry/retryFunction.d.ts +1 -1
  222. package/link/retry/retryFunction.d.ts.map +1 -1
  223. package/link/retry/retryFunction.js.map +1 -1
  224. package/link/retry/retryLink.d.ts +4 -3
  225. package/link/retry/retryLink.d.ts.map +1 -1
  226. package/link/retry/retryLink.js.map +1 -1
  227. package/link/schema/index.d.ts +3 -2
  228. package/link/schema/index.d.ts.map +1 -1
  229. package/link/schema/index.js.map +1 -1
  230. package/link/subscriptions/index.d.ts +2 -1
  231. package/link/subscriptions/index.d.ts.map +1 -1
  232. package/link/subscriptions/index.js +8 -3
  233. package/link/subscriptions/index.js.map +1 -1
  234. package/link/subscriptions/subscriptions.cjs +8 -3
  235. package/link/subscriptions/subscriptions.cjs.map +1 -1
  236. package/link/subscriptions/subscriptions.cjs.native.js +8 -3
  237. package/link/utils/createOperation.d.ts +1 -1
  238. package/link/utils/createOperation.d.ts.map +1 -1
  239. package/link/utils/createOperation.js.map +1 -1
  240. package/link/utils/filterOperationVariables.d.ts +5 -0
  241. package/link/utils/filterOperationVariables.d.ts.map +1 -0
  242. package/link/utils/filterOperationVariables.js +18 -0
  243. package/link/utils/filterOperationVariables.js.map +1 -0
  244. package/link/utils/index.d.ts +1 -0
  245. package/link/utils/index.d.ts.map +1 -1
  246. package/link/utils/index.js +1 -0
  247. package/link/utils/index.js.map +1 -1
  248. package/link/utils/throwServerError.d.ts +1 -1
  249. package/link/utils/throwServerError.d.ts.map +1 -1
  250. package/link/utils/throwServerError.js.map +1 -1
  251. package/link/utils/toPromise.d.ts +1 -1
  252. package/link/utils/toPromise.d.ts.map +1 -1
  253. package/link/utils/toPromise.js +1 -1
  254. package/link/utils/toPromise.js.map +1 -1
  255. package/link/utils/transformOperation.d.ts +1 -1
  256. package/link/utils/transformOperation.d.ts.map +1 -1
  257. package/link/utils/transformOperation.js.map +1 -1
  258. package/link/utils/utils.cjs +20 -2
  259. package/link/utils/utils.cjs.map +1 -1
  260. package/link/utils/utils.cjs.native.js +20 -2
  261. package/link/utils/validateOperation.d.ts +1 -1
  262. package/link/utils/validateOperation.d.ts.map +1 -1
  263. package/link/utils/validateOperation.js +2 -2
  264. package/link/utils/validateOperation.js.map +1 -1
  265. package/link/ws/index.d.ts +5 -3
  266. package/link/ws/index.d.ts.map +1 -1
  267. package/link/ws/index.js.map +1 -1
  268. package/package.json +36 -32
  269. package/react/cache/QueryReference.d.ts +34 -0
  270. package/react/cache/QueryReference.d.ts.map +1 -0
  271. package/react/cache/QueryReference.js +107 -0
  272. package/react/cache/QueryReference.js.map +1 -0
  273. package/react/cache/SuspenseCache.d.ts +10 -13
  274. package/react/cache/SuspenseCache.d.ts.map +1 -1
  275. package/react/cache/SuspenseCache.js +18 -41
  276. package/react/cache/SuspenseCache.js.map +1 -1
  277. package/react/cache/types.d.ts +2 -0
  278. package/react/cache/types.d.ts.map +1 -0
  279. package/react/cache/types.js +2 -0
  280. package/react/cache/types.js.map +1 -0
  281. package/react/components/Mutation.d.ts +2 -2
  282. package/react/components/Mutation.d.ts.map +1 -1
  283. package/react/components/Mutation.js.map +1 -1
  284. package/react/components/Query.d.ts +2 -2
  285. package/react/components/Query.d.ts.map +1 -1
  286. package/react/components/Query.js.map +1 -1
  287. package/react/components/Subscription.d.ts +2 -2
  288. package/react/components/Subscription.d.ts.map +1 -1
  289. package/react/components/Subscription.js.map +1 -1
  290. package/react/components/types.d.ts +4 -4
  291. package/react/components/types.d.ts.map +1 -1
  292. package/react/components/types.js.map +1 -1
  293. package/react/context/ApolloConsumer.d.ts +1 -1
  294. package/react/context/ApolloConsumer.d.ts.map +1 -1
  295. package/react/context/ApolloConsumer.js +2 -3
  296. package/react/context/ApolloConsumer.js.map +1 -1
  297. package/react/context/ApolloContext.d.ts +10 -3
  298. package/react/context/ApolloContext.d.ts.map +1 -1
  299. package/react/context/ApolloContext.js +10 -8
  300. package/react/context/ApolloContext.js.map +1 -1
  301. package/react/context/ApolloProvider.d.ts +2 -2
  302. package/react/context/ApolloProvider.d.ts.map +1 -1
  303. package/react/context/ApolloProvider.js +8 -13
  304. package/react/context/ApolloProvider.js.map +1 -1
  305. package/react/context/context.cjs +18 -22
  306. package/react/context/context.cjs.map +1 -1
  307. package/react/context/context.cjs.native.js +18 -22
  308. package/react/context/index.d.ts +1 -1
  309. package/react/context/index.d.ts.map +1 -1
  310. package/react/context/index.js +1 -1
  311. package/react/context/index.js.map +1 -1
  312. package/react/hoc/graphql.d.ts +3 -3
  313. package/react/hoc/graphql.d.ts.map +1 -1
  314. package/react/hoc/graphql.js.map +1 -1
  315. package/react/hoc/hoc-utils.d.ts +2 -2
  316. package/react/hoc/hoc-utils.d.ts.map +1 -1
  317. package/react/hoc/hoc-utils.js +2 -3
  318. package/react/hoc/hoc-utils.js.map +1 -1
  319. package/react/hoc/hoc.cjs +2 -4
  320. package/react/hoc/hoc.cjs.map +1 -1
  321. package/react/hoc/hoc.cjs.native.js +2 -4
  322. package/react/hoc/mutation-hoc.d.ts +4 -4
  323. package/react/hoc/mutation-hoc.d.ts.map +1 -1
  324. package/react/hoc/mutation-hoc.js.map +1 -1
  325. package/react/hoc/query-hoc.d.ts +2 -2
  326. package/react/hoc/query-hoc.d.ts.map +1 -1
  327. package/react/hoc/query-hoc.js.map +1 -1
  328. package/react/hoc/subscription-hoc.d.ts +2 -2
  329. package/react/hoc/subscription-hoc.d.ts.map +1 -1
  330. package/react/hoc/subscription-hoc.js.map +1 -1
  331. package/react/hoc/types.d.ts +4 -4
  332. package/react/hoc/types.d.ts.map +1 -1
  333. package/react/hoc/types.js.map +1 -1
  334. package/react/hoc/withApollo.d.ts +1 -1
  335. package/react/hoc/withApollo.d.ts.map +1 -1
  336. package/react/hoc/withApollo.js +2 -3
  337. package/react/hoc/withApollo.js.map +1 -1
  338. package/react/hooks/hooks.cjs +223 -219
  339. package/react/hooks/hooks.cjs.map +1 -1
  340. package/react/hooks/hooks.cjs.native.js +223 -219
  341. package/react/hooks/index.d.ts +2 -1
  342. package/react/hooks/index.d.ts.map +1 -1
  343. package/react/hooks/index.js +2 -1
  344. package/react/hooks/index.js.map +1 -1
  345. package/react/hooks/internal/__use.d.ts +4 -0
  346. package/react/hooks/internal/__use.d.ts.map +1 -0
  347. package/react/hooks/internal/__use.js +17 -0
  348. package/react/hooks/internal/__use.js.map +1 -0
  349. package/react/hooks/internal/index.d.ts +2 -0
  350. package/react/hooks/internal/index.d.ts.map +1 -1
  351. package/react/hooks/internal/index.js +2 -0
  352. package/react/hooks/internal/index.js.map +1 -1
  353. package/react/hooks/internal/useDeepMemo.d.ts +1 -1
  354. package/react/hooks/internal/useDeepMemo.d.ts.map +1 -1
  355. package/react/hooks/internal/useDeepMemo.js.map +1 -1
  356. package/react/hooks/internal/useIsomorphicLayoutEffect.d.ts.map +1 -1
  357. package/react/hooks/internal/useIsomorphicLayoutEffect.js +2 -2
  358. package/react/hooks/internal/useIsomorphicLayoutEffect.js.map +1 -1
  359. package/react/hooks/internal/useStrictModeSafeCleanupEffect.d.ts +2 -0
  360. package/react/hooks/internal/useStrictModeSafeCleanupEffect.d.ts.map +1 -0
  361. package/react/hooks/internal/useStrictModeSafeCleanupEffect.js +11 -0
  362. package/react/hooks/internal/useStrictModeSafeCleanupEffect.js.map +1 -0
  363. package/react/hooks/useApolloClient.d.ts +1 -1
  364. package/react/hooks/useApolloClient.d.ts.map +1 -1
  365. package/react/hooks/useApolloClient.js +2 -4
  366. package/react/hooks/useApolloClient.js.map +1 -1
  367. package/react/hooks/useBackgroundQuery.d.ts +18 -0
  368. package/react/hooks/useBackgroundQuery.d.ts.map +1 -0
  369. package/react/hooks/useBackgroundQuery.js +69 -0
  370. package/react/hooks/useBackgroundQuery.js.map +1 -0
  371. package/react/hooks/useFragment.d.ts +14 -9
  372. package/react/hooks/useFragment.d.ts.map +1 -1
  373. package/react/hooks/useFragment.js +2 -2
  374. package/react/hooks/useFragment.js.map +1 -1
  375. package/react/hooks/useLazyQuery.d.ts +4 -4
  376. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  377. package/react/hooks/useLazyQuery.js +13 -22
  378. package/react/hooks/useLazyQuery.js.map +1 -1
  379. package/react/hooks/useMutation.d.ts +4 -4
  380. package/react/hooks/useMutation.d.ts.map +1 -1
  381. package/react/hooks/useMutation.js +1 -1
  382. package/react/hooks/useMutation.js.map +1 -1
  383. package/react/hooks/useQuery.d.ts +6 -6
  384. package/react/hooks/useQuery.d.ts.map +1 -1
  385. package/react/hooks/useQuery.js +29 -28
  386. package/react/hooks/useQuery.js.map +1 -1
  387. package/react/hooks/useReactiveVar.d.ts +1 -1
  388. package/react/hooks/useReactiveVar.d.ts.map +1 -1
  389. package/react/hooks/useReactiveVar.js.map +1 -1
  390. package/react/hooks/useSubscription.d.ts +4 -4
  391. package/react/hooks/useSubscription.d.ts.map +1 -1
  392. package/react/hooks/useSubscription.js +27 -19
  393. package/react/hooks/useSubscription.js.map +1 -1
  394. package/react/hooks/useSuspenseCache.d.ts +1 -1
  395. package/react/hooks/useSuspenseCache.d.ts.map +1 -1
  396. package/react/hooks/useSuspenseCache.js +2 -4
  397. package/react/hooks/useSuspenseCache.js.map +1 -1
  398. package/react/hooks/useSuspenseQuery.d.ts +39 -7
  399. package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
  400. package/react/hooks/useSuspenseQuery.js +68 -149
  401. package/react/hooks/useSuspenseQuery.js.map +1 -1
  402. package/react/hooks/useSyncExternalStore.js +1 -1
  403. package/react/index.d.ts +1 -1
  404. package/react/index.d.ts.map +1 -1
  405. package/react/index.js +1 -1
  406. package/react/index.js.map +1 -1
  407. package/react/parser/index.d.ts +1 -1
  408. package/react/parser/index.d.ts.map +1 -1
  409. package/react/parser/index.js +20 -17
  410. package/react/parser/index.js.map +1 -1
  411. package/react/parser/parser.cjs +19 -16
  412. package/react/parser/parser.cjs.map +1 -1
  413. package/react/parser/parser.cjs.native.js +19 -16
  414. package/react/react.cjs +116 -35
  415. package/react/react.cjs.map +1 -1
  416. package/react/react.cjs.native.js +116 -35
  417. package/react/ssr/RenderPromises.d.ts +2 -2
  418. package/react/ssr/RenderPromises.d.ts.map +1 -1
  419. package/react/ssr/RenderPromises.js.map +1 -1
  420. package/react/ssr/renderToStringWithData.d.ts +1 -1
  421. package/react/ssr/renderToStringWithData.d.ts.map +1 -1
  422. package/react/ssr/renderToStringWithData.js.map +1 -1
  423. package/react/types/types.d.ts +10 -13
  424. package/react/types/types.d.ts.map +1 -1
  425. package/react/types/types.js.map +1 -1
  426. package/testing/core/core.cjs +1 -1
  427. package/testing/core/core.cjs.map +1 -1
  428. package/testing/core/core.cjs.native.js +1 -1
  429. package/testing/core/mocking/mockClient.d.ts +2 -2
  430. package/testing/core/mocking/mockClient.d.ts.map +1 -1
  431. package/testing/core/mocking/mockClient.js.map +1 -1
  432. package/testing/core/mocking/mockLink.d.ts +2 -1
  433. package/testing/core/mocking/mockLink.d.ts.map +1 -1
  434. package/testing/core/mocking/mockLink.js +3 -3
  435. package/testing/core/mocking/mockLink.js.map +1 -1
  436. package/testing/core/mocking/mockQueryManager.d.ts +1 -1
  437. package/testing/core/mocking/mockQueryManager.d.ts.map +1 -1
  438. package/testing/core/mocking/mockQueryManager.js.map +1 -1
  439. package/testing/core/mocking/mockSubscriptionLink.d.ts +3 -2
  440. package/testing/core/mocking/mockSubscriptionLink.d.ts.map +1 -1
  441. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -1
  442. package/testing/core/mocking/mockWatchQuery.d.ts +2 -2
  443. package/testing/core/mocking/mockWatchQuery.d.ts.map +1 -1
  444. package/testing/core/mocking/mockWatchQuery.js.map +1 -1
  445. package/testing/core/observableToPromise.d.ts +2 -2
  446. package/testing/core/observableToPromise.d.ts.map +1 -1
  447. package/testing/core/observableToPromise.js.map +1 -1
  448. package/testing/core/subscribeAndCount.d.ts +1 -1
  449. package/testing/core/subscribeAndCount.d.ts.map +1 -1
  450. package/testing/core/subscribeAndCount.js.map +1 -1
  451. package/testing/matchers/index.d.ts +2 -0
  452. package/testing/matchers/index.d.ts.map +1 -0
  453. package/testing/matchers/index.js +6 -0
  454. package/testing/matchers/index.js.map +1 -0
  455. package/testing/matchers/toMatchDocument.d.ts +4 -0
  456. package/testing/matchers/toMatchDocument.d.ts.map +1 -0
  457. package/testing/matchers/toMatchDocument.js +34 -0
  458. package/testing/matchers/toMatchDocument.js.map +1 -0
  459. package/testing/react/MockedProvider.d.ts +8 -7
  460. package/testing/react/MockedProvider.d.ts.map +1 -1
  461. package/testing/react/MockedProvider.js +7 -6
  462. package/testing/react/MockedProvider.js.map +1 -1
  463. package/testing/testing.cjs +7 -51
  464. package/testing/testing.cjs.map +1 -1
  465. package/testing/testing.cjs.native.js +7 -51
  466. package/utilities/common/compact.d.ts +1 -1
  467. package/utilities/common/compact.d.ts.map +1 -1
  468. package/utilities/common/compact.js.map +1 -1
  469. package/utilities/common/errorHandling.d.ts +1 -1
  470. package/utilities/common/errorHandling.d.ts.map +1 -1
  471. package/utilities/common/errorHandling.js.map +1 -1
  472. package/utilities/common/incrementalResult.d.ts +2 -1
  473. package/utilities/common/incrementalResult.d.ts.map +1 -1
  474. package/utilities/common/incrementalResult.js +4 -0
  475. package/utilities/common/incrementalResult.js.map +1 -1
  476. package/utilities/common/mergeOptions.d.ts +1 -1
  477. package/utilities/common/mergeOptions.d.ts.map +1 -1
  478. package/utilities/common/mergeOptions.js +1 -1
  479. package/utilities/common/mergeOptions.js.map +1 -1
  480. package/utilities/common/objects.d.ts +1 -0
  481. package/utilities/common/objects.d.ts.map +1 -1
  482. package/utilities/common/objects.js +6 -0
  483. package/utilities/common/objects.js.map +1 -1
  484. package/utilities/common/omitDeep.d.ts +3 -0
  485. package/utilities/common/omitDeep.d.ts.map +1 -0
  486. package/utilities/common/omitDeep.js +41 -0
  487. package/utilities/common/omitDeep.js.map +1 -0
  488. package/utilities/common/responseIterator.d.ts +2 -2
  489. package/utilities/common/responseIterator.d.ts.map +1 -1
  490. package/utilities/common/responseIterator.js.map +1 -1
  491. package/utilities/common/stringifyForDisplay.d.ts +1 -1
  492. package/utilities/common/stringifyForDisplay.d.ts.map +1 -1
  493. package/utilities/common/stringifyForDisplay.js +3 -2
  494. package/utilities/common/stringifyForDisplay.js.map +1 -1
  495. package/utilities/common/stripTypename.d.ts +2 -0
  496. package/utilities/common/stripTypename.d.ts.map +1 -0
  497. package/utilities/common/stripTypename.js +5 -0
  498. package/utilities/common/stripTypename.js.map +1 -0
  499. package/utilities/globals/global.d.ts +6 -3
  500. package/utilities/globals/global.d.ts.map +1 -1
  501. package/utilities/globals/global.js.map +1 -1
  502. package/utilities/globals/globals.cjs +67 -1
  503. package/utilities/globals/globals.cjs.map +1 -1
  504. package/utilities/globals/globals.cjs.native.js +67 -1
  505. package/utilities/globals/index.d.ts +2 -2
  506. package/utilities/globals/index.d.ts.map +1 -1
  507. package/utilities/globals/index.js +2 -2
  508. package/utilities/globals/index.js.map +1 -1
  509. package/utilities/globals/invariantWrappers.d.ts +24 -0
  510. package/utilities/globals/invariantWrappers.d.ts.map +1 -0
  511. package/utilities/globals/invariantWrappers.js +53 -0
  512. package/utilities/globals/invariantWrappers.js.map +1 -0
  513. package/utilities/graphql/directives.d.ts +1 -1
  514. package/utilities/graphql/directives.d.ts.map +1 -1
  515. package/utilities/graphql/directives.js +6 -7
  516. package/utilities/graphql/directives.js.map +1 -1
  517. package/utilities/graphql/fragments.d.ts +1 -1
  518. package/utilities/graphql/fragments.d.ts.map +1 -1
  519. package/utilities/graphql/fragments.js +8 -5
  520. package/utilities/graphql/fragments.js.map +1 -1
  521. package/utilities/graphql/getFromAST.d.ts +1 -1
  522. package/utilities/graphql/getFromAST.d.ts.map +1 -1
  523. package/utilities/graphql/getFromAST.js +9 -9
  524. package/utilities/graphql/getFromAST.js.map +1 -1
  525. package/utilities/graphql/operations.d.ts +5 -0
  526. package/utilities/graphql/operations.d.ts.map +1 -0
  527. package/utilities/graphql/operations.js +16 -0
  528. package/utilities/graphql/operations.js.map +1 -0
  529. package/utilities/graphql/storeUtils.d.ts +2 -2
  530. package/utilities/graphql/storeUtils.d.ts.map +1 -1
  531. package/utilities/graphql/storeUtils.js +16 -7
  532. package/utilities/graphql/storeUtils.js.map +1 -1
  533. package/utilities/graphql/transform.d.ts +1 -1
  534. package/utilities/graphql/transform.d.ts.map +1 -1
  535. package/utilities/graphql/transform.js +30 -21
  536. package/utilities/graphql/transform.js.map +1 -1
  537. package/utilities/index.d.ts +6 -0
  538. package/utilities/index.d.ts.map +1 -1
  539. package/utilities/index.js +4 -0
  540. package/utilities/index.js.map +1 -1
  541. package/utilities/observables/Concast.d.ts +2 -1
  542. package/utilities/observables/Concast.d.ts.map +1 -1
  543. package/utilities/observables/Concast.js.map +1 -1
  544. package/utilities/observables/Observable.d.ts +2 -1
  545. package/utilities/observables/Observable.d.ts.map +1 -1
  546. package/utilities/observables/Observable.js +1 -1
  547. package/utilities/observables/Observable.js.map +1 -1
  548. package/utilities/observables/asyncMap.d.ts.map +1 -1
  549. package/utilities/observables/asyncMap.js.map +1 -1
  550. package/utilities/observables/iteration.d.ts +1 -1
  551. package/utilities/observables/iteration.d.ts.map +1 -1
  552. package/utilities/observables/iteration.js.map +1 -1
  553. package/utilities/policies/pagination.d.ts +1 -1
  554. package/utilities/policies/pagination.d.ts.map +1 -1
  555. package/utilities/policies/pagination.js.map +1 -1
  556. package/utilities/promises/decoration.d.ts +17 -0
  557. package/utilities/promises/decoration.d.ts.map +1 -0
  558. package/utilities/promises/decoration.js +37 -0
  559. package/utilities/promises/decoration.js.map +1 -0
  560. package/utilities/types/DeepOmit.d.ts +10 -0
  561. package/utilities/types/DeepOmit.d.ts.map +1 -0
  562. package/utilities/types/DeepOmit.js +2 -0
  563. package/utilities/types/DeepOmit.js.map +1 -0
  564. package/utilities/types/DeepPartial.d.ts +12 -0
  565. package/utilities/types/DeepPartial.d.ts.map +1 -0
  566. package/utilities/types/DeepPartial.js +2 -0
  567. package/utilities/types/DeepPartial.js.map +1 -0
  568. package/utilities/types/Primitive.d.ts +2 -0
  569. package/utilities/types/Primitive.d.ts.map +1 -0
  570. package/utilities/types/Primitive.js +2 -0
  571. package/utilities/types/Primitive.js.map +1 -0
  572. package/utilities/utilities.cjs +181 -45
  573. package/utilities/utilities.cjs.map +1 -1
  574. package/utilities/utilities.cjs.native.js +181 -45
  575. package/version.js +1 -1
  576. package/cache/inmemory/__mocks__/optimism.d.ts +0 -2
  577. package/cache/inmemory/__mocks__/optimism.d.ts.map +0 -1
  578. package/cache/inmemory/__mocks__/optimism.js +0 -14
  579. package/cache/inmemory/__mocks__/optimism.js.map +0 -1
  580. package/react/hooks/compareResults.d.ts +0 -3
  581. package/react/hooks/compareResults.d.ts.map +0 -1
  582. package/react/hooks/compareResults.js.map +0 -1
@@ -1,186 +1,105 @@
1
- import { __assign, __rest } from "tslib";
1
+ import { __assign } from "tslib";
2
2
  import { invariant, __DEV__ } from "../../utilities/globals/index.js";
3
- import { useRef, useEffect, useCallback, useMemo, useState } from 'react';
4
- import { equal } from '@wry/equality';
5
- import { ApolloError, } from "../../core/index.js";
6
- import { compact, isNonEmptyArray, hasDirectives, } from "../../utilities/index.js";
3
+ import { useRef, useCallback, useMemo, useEffect, useState } from 'react';
4
+ import { ApolloError } from "../../core/index.js";
5
+ import { isNonEmptyArray } from "../../utilities/index.js";
7
6
  import { useApolloClient } from "./useApolloClient.js";
8
7
  import { DocumentType, verifyDocumentType } from "../parser/index.js";
9
- import { useDeepMemo, useIsomorphicLayoutEffect } from "./internal/index.js";
8
+ import { useDeepMemo, useStrictModeSafeCleanupEffect, __use } from "./internal/index.js";
10
9
  import { useSuspenseCache } from "./useSuspenseCache.js";
11
- import { useSyncExternalStore } from "./useSyncExternalStore.js";
12
- var SUPPORTED_FETCH_POLICIES = [
13
- 'cache-first',
14
- 'network-only',
15
- 'no-cache',
16
- 'cache-and-network',
17
- ];
18
- var DEFAULT_FETCH_POLICY = 'cache-first';
19
- var DEFAULT_SUSPENSE_POLICY = 'always';
20
- var DEFAULT_ERROR_POLICY = 'none';
21
- export function useSuspenseQuery_experimental(query, options) {
10
+ import { canonicalStringify } from "../../cache/index.js";
11
+ export function useSuspenseQuery(query, options) {
22
12
  if (options === void 0) { options = Object.create(null); }
23
- var suspenseCache = useSuspenseCache(options.suspenseCache);
24
13
  var client = useApolloClient(options.client);
25
- var watchQueryOptions = useWatchQueryOptions({ query: query, options: options, client: client });
26
- var previousWatchQueryOptionsRef = useRef(watchQueryOptions);
27
- var deferred = useIsDeferred(query);
28
- var fetchPolicy = watchQueryOptions.fetchPolicy, errorPolicy = watchQueryOptions.errorPolicy, returnPartialData = watchQueryOptions.returnPartialData, variables = watchQueryOptions.variables;
29
- var cacheEntry = suspenseCache.lookup(query, variables);
30
- var observable = useState(function () {
31
- return (cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.observable) || client.watchQuery(watchQueryOptions);
32
- })[0];
33
- var result = useObservableQueryResult(observable);
34
- var hasFullResult = result.data && !result.partial;
35
- var hasPartialResult = result.data && result.partial;
36
- var usePartialResult = returnPartialData && hasPartialResult;
37
- var allowsThrownErrors = errorPolicy === 'none' && (!deferred || !hasPartialResult);
38
- if (result.error &&
39
- (result.error.networkError || allowsThrownErrors)) {
40
- throw result.error;
41
- }
42
- if (result.loading) {
43
- if (!cacheEntry) {
44
- cacheEntry = suspenseCache.add(query, variables, {
45
- promise: maybeWrapConcastWithCustomPromise(observable.reobserveAsConcast(watchQueryOptions), { deferred: deferred }),
46
- observable: observable,
47
- });
48
- }
49
- var hasUsableResult = usePartialResult ||
50
- (fetchPolicy === 'cache-and-network' && hasFullResult);
51
- if (!hasUsableResult && !cacheEntry.fulfilled) {
52
- throw cacheEntry.promise;
53
- }
14
+ var suspenseCache = useSuspenseCache(options.suspenseCache);
15
+ var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
16
+ var variables = watchQueryOptions.variables;
17
+ var _a = options.queryKey, queryKey = _a === void 0 ? [] : _a;
18
+ var cacheKey = [client, query, canonicalStringify(variables)].concat(queryKey);
19
+ var queryRef = suspenseCache.getQueryRef(cacheKey, function () {
20
+ return client.watchQuery(watchQueryOptions);
21
+ });
22
+ var _b = useState(function () { return new Map([[queryRef.key, queryRef.promise]]); }), promiseCache = _b[0], setPromiseCache = _b[1];
23
+ var promise = promiseCache.get(queryRef.key);
24
+ if (!promise) {
25
+ promise = queryRef.promise;
26
+ promiseCache.set(queryRef.key, promise);
54
27
  }
28
+ useTrackedQueryRefs(queryRef);
55
29
  useEffect(function () {
56
- var variables = watchQueryOptions.variables, query = watchQueryOptions.query;
57
- var previousOpts = previousWatchQueryOptionsRef.current;
58
- if (variables !== previousOpts.variables || query !== previousOpts.query) {
59
- suspenseCache.remove(previousOpts.query, previousOpts.variables);
60
- suspenseCache.add(query, variables, {
61
- promise: observable.reobserve({ query: query, variables: variables }),
62
- observable: observable,
30
+ return queryRef.listen(function (promise) {
31
+ setPromiseCache(function (promiseCache) {
32
+ return new Map(promiseCache).set(queryRef.key, promise);
63
33
  });
64
- previousWatchQueryOptionsRef.current = watchQueryOptions;
65
- }
66
- }, [watchQueryOptions]);
67
- useEffect(function () {
68
- return function () {
69
- suspenseCache.remove(query, variables);
70
- };
71
- }, []);
34
+ });
35
+ }, [queryRef]);
36
+ var result = __use(promise);
37
+ var fetchMore = useCallback(function (options) {
38
+ var promise = queryRef.fetchMore(options);
39
+ setPromiseCache(function (previousPromiseCache) {
40
+ return new Map(previousPromiseCache).set(queryRef.key, promise);
41
+ });
42
+ return promise;
43
+ }, [queryRef]);
44
+ var refetch = useCallback(function (variables) {
45
+ var promise = queryRef.refetch(variables);
46
+ setPromiseCache(function (previousPromiseCache) {
47
+ return new Map(previousPromiseCache).set(queryRef.key, promise);
48
+ });
49
+ return promise;
50
+ }, [queryRef]);
51
+ var subscribeToMore = useCallback(function (options) { return queryRef.observable.subscribeToMore(options); }, [queryRef]);
72
52
  return useMemo(function () {
73
53
  return {
74
54
  client: client,
75
55
  data: result.data,
76
- error: errorPolicy === 'ignore' ? void 0 : toApolloError(result),
77
- fetchMore: function (options) {
78
- var promise = observable.fetchMore(options);
79
- suspenseCache.add(query, watchQueryOptions.variables, {
80
- promise: promise,
81
- observable: observable,
82
- });
83
- return promise;
84
- },
85
- refetch: function (variables) {
86
- var promise = observable.refetch(variables);
87
- suspenseCache.add(query, watchQueryOptions.variables, {
88
- promise: promise,
89
- observable: observable,
90
- });
91
- return promise;
92
- },
93
- subscribeToMore: function (options) { return observable.subscribeToMore(options); },
56
+ error: toApolloError(result),
57
+ networkStatus: result.networkStatus,
58
+ fetchMore: fetchMore,
59
+ refetch: refetch,
60
+ subscribeToMore: subscribeToMore,
94
61
  };
95
- }, [client, result, observable, errorPolicy]);
62
+ }, [client, fetchMore, refetch, result, subscribeToMore]);
96
63
  }
97
64
  function validateOptions(options) {
98
- var query = options.query, _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? DEFAULT_FETCH_POLICY : _a, returnPartialData = options.returnPartialData;
65
+ var query = options.query, fetchPolicy = options.fetchPolicy, returnPartialData = options.returnPartialData;
99
66
  verifyDocumentType(query, DocumentType.Query);
100
67
  validateFetchPolicy(fetchPolicy);
101
68
  validatePartialDataReturn(fetchPolicy, returnPartialData);
102
69
  }
103
70
  function validateFetchPolicy(fetchPolicy) {
104
- __DEV__ ? invariant(SUPPORTED_FETCH_POLICIES.includes(fetchPolicy), "The fetch policy `".concat(fetchPolicy, "` is not supported with suspense.")) : invariant(SUPPORTED_FETCH_POLICIES.includes(fetchPolicy), 34);
71
+ if (fetchPolicy === void 0) { fetchPolicy = 'cache-first'; }
72
+ var supportedFetchPolicies = [
73
+ 'cache-first',
74
+ 'network-only',
75
+ 'no-cache',
76
+ 'cache-and-network',
77
+ ];
78
+ invariant(supportedFetchPolicies.includes(fetchPolicy), 57, fetchPolicy);
105
79
  }
106
80
  function validatePartialDataReturn(fetchPolicy, returnPartialData) {
107
81
  if (fetchPolicy === 'no-cache' && returnPartialData) {
108
- __DEV__ && invariant.warn('Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.');
82
+ __DEV__ && invariant.warn(58);
109
83
  }
110
84
  }
111
- function toApolloError(result) {
85
+ export function toApolloError(result) {
112
86
  return isNonEmptyArray(result.errors)
113
87
  ? new ApolloError({ graphQLErrors: result.errors })
114
88
  : result.error;
115
89
  }
116
- function maybeWrapConcastWithCustomPromise(concast, _a) {
117
- var deferred = _a.deferred;
118
- if (deferred) {
119
- return new Promise(function (resolve, reject) {
120
- var subscription = concast.subscribe({
121
- next: function (value) {
122
- resolve(value);
123
- subscription.unsubscribe();
124
- },
125
- error: reject,
126
- });
127
- });
128
- }
129
- return concast.promise;
90
+ export function useTrackedQueryRefs(queryRef) {
91
+ var trackedQueryRefs = useRef(new Set());
92
+ trackedQueryRefs.current.add(queryRef);
93
+ useStrictModeSafeCleanupEffect(function () {
94
+ trackedQueryRefs.current.forEach(function (sub) { return sub.dispose(); });
95
+ });
130
96
  }
131
- function useWatchQueryOptions(_a) {
132
- var query = _a.query, options = _a.options, client = _a.client;
133
- var defaultOptions = client.defaultOptions.watchQuery;
134
- var watchQueryOptions = useDeepMemo(function () {
135
- var errorPolicy = options.errorPolicy, fetchPolicy = options.fetchPolicy, _a = options.suspensePolicy, suspensePolicy = _a === void 0 ? DEFAULT_SUSPENSE_POLICY : _a, variables = options.variables, watchQueryOptions = __rest(options, ["errorPolicy", "fetchPolicy", "suspensePolicy", "variables"]);
136
- return __assign(__assign({}, watchQueryOptions), { query: query, errorPolicy: errorPolicy || (defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.errorPolicy) || DEFAULT_ERROR_POLICY, fetchPolicy: fetchPolicy || (defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.fetchPolicy) || DEFAULT_FETCH_POLICY, notifyOnNetworkStatusChange: suspensePolicy === 'always', fetchOnFirstSubscribe: false, variables: compact(__assign(__assign({}, defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.variables), variables)) });
137
- }, [options, query, defaultOptions]);
97
+ export function useWatchQueryOptions(_a) {
98
+ var query = _a.query, options = _a.options;
99
+ var watchQueryOptions = useDeepMemo(function () { return (__assign(__assign({}, options), { query: query, notifyOnNetworkStatusChange: false, nextFetchPolicy: void 0 })); }, [options, query]);
138
100
  if (__DEV__) {
139
101
  validateOptions(watchQueryOptions);
140
102
  }
141
103
  return watchQueryOptions;
142
104
  }
143
- function useIsDeferred(query) {
144
- return useMemo(function () { return hasDirectives(['defer'], query); }, [query]);
145
- }
146
- function useObservableQueryResult(observable) {
147
- var resultRef = useRef();
148
- var isMountedRef = useRef(false);
149
- var subscribeTimeoutRef = useRef();
150
- if (!resultRef.current) {
151
- resultRef.current = observable.getCurrentResult();
152
- }
153
- useIsomorphicLayoutEffect(function () {
154
- isMountedRef.current = true;
155
- return function () {
156
- isMountedRef.current = false;
157
- };
158
- }, []);
159
- return useSyncExternalStore(useCallback(function (forceUpdate) {
160
- clearTimeout(subscribeTimeoutRef.current);
161
- function handleUpdate() {
162
- var previousResult = resultRef.current;
163
- var result = observable.getCurrentResult();
164
- if (previousResult.loading === result.loading &&
165
- previousResult.networkStatus === result.networkStatus &&
166
- equal(previousResult.data, result.data)) {
167
- return;
168
- }
169
- resultRef.current = result;
170
- if (isMountedRef.current) {
171
- forceUpdate();
172
- }
173
- }
174
- var subscription;
175
- subscribeTimeoutRef.current = setTimeout(function () {
176
- subscription = observable.subscribe({
177
- next: handleUpdate,
178
- error: handleUpdate,
179
- });
180
- });
181
- return function () {
182
- subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();
183
- };
184
- }, [observable]), function () { return resultRef.current; }, function () { return resultRef.current; });
185
- }
186
105
  //# sourceMappingURL=useSuspenseQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nimport { useRef, useEffect, useCallback, useMemo, useState } from 'react';\nimport { equal } from '@wry/equality';\nimport {\n ApolloClient,\n ApolloError,\n ApolloQueryResult,\n DocumentNode,\n ObservableQuery,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryOptions,\n WatchQueryFetchPolicy,\n} from '../../core';\nimport {\n compact,\n Concast,\n isNonEmptyArray,\n hasDirectives,\n} from '../../utilities';\nimport { useApolloClient } from './useApolloClient';\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n} from '../types/types';\nimport { useDeepMemo, useIsomorphicLayoutEffect } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport { useSyncExternalStore } from './useSyncExternalStore';\nimport { Subscription } from 'zen-observable-ts';\n\nexport interface UseSuspenseQueryResult<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: ObservableQueryFields<TData, TVariables>['fetchMore'];\n refetch: ObservableQueryFields<TData, TVariables>['refetch'];\n subscribeToMore: ObservableQueryFields<TData, TVariables>['subscribeToMore'];\n}\n\nconst SUPPORTED_FETCH_POLICIES: WatchQueryFetchPolicy[] = [\n 'cache-first',\n 'network-only',\n 'no-cache',\n 'cache-and-network',\n];\n\nconst DEFAULT_FETCH_POLICY = 'cache-first';\nconst DEFAULT_SUSPENSE_POLICY = 'always';\nconst DEFAULT_ERROR_POLICY = 'none';\n\nexport function useSuspenseQuery_experimental<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<TData, TVariables> = Object.create(null)\n): UseSuspenseQueryResult<TData, TVariables> {\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const client = useApolloClient(options.client);\n const watchQueryOptions = useWatchQueryOptions({ query, options, client });\n const previousWatchQueryOptionsRef = useRef(watchQueryOptions);\n const deferred = useIsDeferred(query);\n\n const { fetchPolicy, errorPolicy, returnPartialData, variables } =\n watchQueryOptions;\n\n let cacheEntry = suspenseCache.lookup(query, variables);\n\n const [observable] = useState(() => {\n return cacheEntry?.observable || client.watchQuery(watchQueryOptions);\n });\n\n const result = useObservableQueryResult(observable);\n\n const hasFullResult = result.data && !result.partial;\n const hasPartialResult = result.data && result.partial;\n const usePartialResult = returnPartialData && hasPartialResult;\n\n const allowsThrownErrors =\n // If we've got a deferred query that errors on an incremental chunk, we\n // will have a partial result before the error is collected. We do not want\n // to throw errors that have been returned from incremental chunks. Instead\n // we offload those errors to the `error` property.\n errorPolicy === 'none' && (!deferred || !hasPartialResult);\n\n if (\n result.error &&\n // Always throw network errors regardless of the error policy\n (result.error.networkError || allowsThrownErrors)\n ) {\n throw result.error;\n }\n\n if (result.loading) {\n // If we don't have a cache entry, but we are in a loading state, we are on\n // the first run of the hook. Kick off a network request so we can suspend\n // immediately\n if (!cacheEntry) {\n cacheEntry = suspenseCache.add(query, variables, {\n promise: maybeWrapConcastWithCustomPromise(\n observable.reobserveAsConcast(watchQueryOptions),\n { deferred }\n ),\n observable,\n });\n }\n\n const hasUsableResult =\n // When we have partial data in the cache, a network request will be kicked\n // off to load the full set of data. Avoid suspending when the request is\n // in flight to return the partial data immediately.\n usePartialResult ||\n // `cache-and-network` kicks off a network request even with a full set of\n // data in the cache, which means the loading state will be set to `true`.\n // Avoid suspending in this case.\n (fetchPolicy === 'cache-and-network' && hasFullResult);\n\n if (!hasUsableResult && !cacheEntry.fulfilled) {\n throw cacheEntry.promise;\n }\n }\n\n useEffect(() => {\n const { variables, query } = watchQueryOptions;\n const previousOpts = previousWatchQueryOptionsRef.current;\n\n if (variables !== previousOpts.variables || query !== previousOpts.query) {\n suspenseCache.remove(previousOpts.query, previousOpts.variables);\n\n suspenseCache.add(query, variables, {\n promise: observable.reobserve({ query, variables }),\n observable,\n });\n\n previousWatchQueryOptionsRef.current = watchQueryOptions;\n }\n }, [watchQueryOptions]);\n\n useEffect(() => {\n return () => {\n suspenseCache.remove(query, variables);\n };\n }, []);\n\n return useMemo(() => {\n return {\n client,\n data: result.data,\n error: errorPolicy === 'ignore' ? void 0 : toApolloError(result),\n fetchMore: (options) => {\n const promise = observable.fetchMore(options);\n\n suspenseCache.add(query, watchQueryOptions.variables, {\n promise,\n observable,\n });\n\n return promise;\n },\n refetch: (variables?: Partial<TVariables>) => {\n const promise = observable.refetch(variables);\n\n suspenseCache.add(query, watchQueryOptions.variables, {\n promise,\n observable,\n });\n\n return promise;\n },\n subscribeToMore: (options) => observable.subscribeToMore(options),\n };\n }, [client, result, observable, errorPolicy]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const {\n query,\n fetchPolicy = DEFAULT_FETCH_POLICY,\n returnPartialData,\n } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(fetchPolicy: WatchQueryFetchPolicy) {\n invariant(\n SUPPORTED_FETCH_POLICIES.includes(fetchPolicy),\n `The fetch policy \\`${fetchPolicy}\\` is not supported with suspense.`\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === 'no-cache' && returnPartialData) {\n invariant.warn(\n 'Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.'\n );\n }\n}\n\nfunction toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\nfunction maybeWrapConcastWithCustomPromise<TData>(\n concast: Concast<ApolloQueryResult<TData>>,\n { deferred }: { deferred: boolean }\n): Promise<ApolloQueryResult<TData>> {\n if (deferred) {\n return new Promise((resolve, reject) => {\n // Unlike `concast.promise`, we want to resolve the promise on the initial\n // chunk of the deferred query. This allows the component to unsuspend\n // when we get the initial set of data, rather than waiting until all\n // chunks have been loaded.\n const subscription = concast.subscribe({\n next: (value) => {\n resolve(value);\n subscription.unsubscribe();\n },\n error: reject,\n });\n });\n }\n\n return concast.promise;\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables\n> {\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SuspenseQueryHookOptions<TData, TVariables>;\n client: ApolloClient<any>;\n}\n\nfunction useWatchQueryOptions<TData, TVariables extends OperationVariables>({\n query,\n options,\n client,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n const { watchQuery: defaultOptions } = client.defaultOptions;\n\n const watchQueryOptions = useDeepMemo<\n WatchQueryOptions<TVariables, TData>\n >(() => {\n const {\n errorPolicy,\n fetchPolicy,\n suspensePolicy = DEFAULT_SUSPENSE_POLICY,\n variables,\n ...watchQueryOptions\n } = options;\n\n return {\n ...watchQueryOptions,\n query,\n errorPolicy:\n errorPolicy || defaultOptions?.errorPolicy || DEFAULT_ERROR_POLICY,\n fetchPolicy:\n fetchPolicy || defaultOptions?.fetchPolicy || DEFAULT_FETCH_POLICY,\n notifyOnNetworkStatusChange: suspensePolicy === 'always',\n // By default, `ObservableQuery` will run `reobserve` the first time\n // something `subscribe`s to the observable, which kicks off a network\n // request. This creates a problem for suspense because we need to begin\n // fetching the data immediately so we can throw the promise on the first\n // render. Since we don't subscribe until after we've unsuspended, we need\n // to avoid kicking off another network request for the same data we just\n // fetched. This option toggles that behavior off to avoid the `reobserve`\n // when the observable is first subscribed to.\n fetchOnFirstSubscribe: false,\n variables: compact({ ...defaultOptions?.variables, ...variables }),\n };\n }, [options, query, defaultOptions]);\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n return watchQueryOptions;\n}\n\nfunction useIsDeferred(query: DocumentNode) {\n return useMemo(() => hasDirectives(['defer'], query), [query]);\n}\n\nfunction useObservableQueryResult<TData>(observable: ObservableQuery<TData>) {\n const resultRef = useRef<ApolloQueryResult<TData>>();\n const isMountedRef = useRef(false);\n const subscribeTimeoutRef = useRef<NodeJS.Timeout>();\n\n if (!resultRef.current) {\n resultRef.current = observable.getCurrentResult();\n }\n\n // React keeps refs and effects from useSyncExternalStore around after the\n // component initially mounts even if the component re-suspends. We need to\n // track when the component suspends/unsuspends to ensure we don't try and\n // update the component while its suspended since the observable's\n // `next` function is called before the promise resolved.\n //\n // Unlike useEffect, useLayoutEffect will run its cleanup and initialization\n // functions each time a component is suspended.\n useIsomorphicLayoutEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n return useSyncExternalStore(\n useCallback(\n (forceUpdate) => {\n clearTimeout(subscribeTimeoutRef.current);\n\n function handleUpdate() {\n const previousResult = resultRef.current!;\n const result = observable.getCurrentResult();\n\n if (\n previousResult.loading === result.loading &&\n previousResult.networkStatus === result.networkStatus &&\n equal(previousResult.data, result.data)\n ) {\n return;\n }\n\n resultRef.current = result;\n\n if (isMountedRef.current) {\n forceUpdate();\n }\n }\n\n let subscription: Subscription;\n\n // We use a `setTimeout` here to avoid issues in React's strict mode\n // where the subscription would be torn down, but resubscribing would\n // be stuck in the torn down state, therefore updates to the cache would\n // not trigger the observable's subscription. This occurs due to the new\n // `fetchOnFirstSubscribe` option introduced with `useSuspenseQuery`,\n // which avoids issuing a network request (via `reobserve`) when calling\n // `subscribe` on the observable. Unfortunately `reobserve` is required\n // to put the observable back into a non-torn-down state, which is not\n // called due to this option. Instead we try delaying calling subscribe\n // for the first time by allowing React to run this effect, tear it down,\n // then set it back up again before we resubscribe.\n //\n // Authors note (Jerel): This feels super hacky and I hate it, but this\n // seems like the best approach to avoid completely changing around the\n // internals of ObservableQuery, which could introduce new bugs if I'm\n // not careful. Ideally we could call `subscribe()`, `unsubscribe()`,\n // then `subscribe()` again and be back into a normal state, but this\n // might require a sizable refactor to accomplish.\n //\n // Related to https://github.com/apollographql/apollo-client/issues/10428\n subscribeTimeoutRef.current = setTimeout(() => {\n subscription = observable.subscribe({\n next: handleUpdate,\n error: handleUpdate,\n });\n });\n\n return () => {\n subscription?.unsubscribe();\n };\n },\n [observable]\n ),\n () => resultRef.current!,\n () => resultRef.current!\n );\n}\n"]}
1
+ {"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nimport { useRef, useCallback, useMemo, useEffect, useState } from 'react';\nimport type {\n ApolloClient,\n ApolloQueryResult,\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryOptions,\n WatchQueryFetchPolicy,\n NetworkStatus,\n FetchMoreQueryOptions,\n} from '../../core';\nimport { ApolloError } from '../../core';\nimport type { DeepPartial } from '../../utilities';\nimport { isNonEmptyArray } from '../../utilities';\nimport { useApolloClient } from './useApolloClient';\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport type {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n NoInfer,\n} from '../types/types';\nimport { useDeepMemo, useStrictModeSafeCleanupEffect, __use } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport type { QueryReference } from '../cache/QueryReference';\nimport { canonicalStringify } from '../../cache';\n\nexport interface UseSuspenseQueryResult<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: FetchMoreFunction<TData, TVariables>;\n networkStatus: NetworkStatus;\n refetch: RefetchFunction<TData, TVariables>;\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n}\n\nexport type FetchMoreFunction<TData, TVariables extends OperationVariables> = (\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TData;\n variables: TVariables;\n }\n ) => TData;\n }\n) => Promise<ApolloQueryResult<TData>>;\n\nexport type RefetchFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['refetch'];\n\nexport type SubscribeToMoreFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['subscribeToMore'];\n\nexport type Version = 'main' | 'network';\n\nexport function useSuspenseQuery<\n TData,\n TVariables extends OperationVariables,\n TOptions extends Omit<SuspenseQueryHookOptions<TData>, 'variables'>\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> &\n TOptions\n): UseSuspenseQueryResult<\n TOptions['errorPolicy'] extends 'ignore' | 'all'\n ? TOptions['returnPartialData'] extends true\n ? DeepPartial<TData> | undefined\n : TData | undefined\n : TOptions['returnPartialData'] extends true\n ? DeepPartial<TData>\n : TData,\n TVariables\n>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n errorPolicy: 'ignore' | 'all';\n }\n): UseSuspenseQueryResult<DeepPartial<TData> | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n errorPolicy: 'ignore' | 'all';\n }\n): UseSuspenseQueryResult<TData | undefined, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>> & {\n returnPartialData: true;\n }\n): UseSuspenseQueryResult<DeepPartial<TData>, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options?: SuspenseQueryHookOptions<NoInfer<TData>, NoInfer<TVariables>>\n): UseSuspenseQueryResult<TData, TVariables>;\n\nexport function useSuspenseQuery<\n TData = unknown,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<\n NoInfer<TData>,\n NoInfer<TVariables>\n > = Object.create(null)\n): UseSuspenseQueryResult<TData, TVariables> {\n const client = useApolloClient(options.client);\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const watchQueryOptions = useWatchQueryOptions({ query, options });\n const { variables } = watchQueryOptions;\n const { queryKey = [] } = options;\n\n const cacheKey = (\n [client, query, canonicalStringify(variables)] as any[]\n ).concat(queryKey);\n\n const queryRef = suspenseCache.getQueryRef(cacheKey, () =>\n client.watchQuery(watchQueryOptions)\n );\n\n const [promiseCache, setPromiseCache] = useState(\n () => new Map([[queryRef.key, queryRef.promise]])\n );\n\n let promise = promiseCache.get(queryRef.key);\n\n if (!promise) {\n promise = queryRef.promise;\n promiseCache.set(queryRef.key, promise);\n }\n\n useTrackedQueryRefs(queryRef);\n\n useEffect(() => {\n return queryRef.listen((promise) => {\n setPromiseCache((promiseCache) =>\n new Map(promiseCache).set(queryRef.key, promise)\n );\n });\n }, [queryRef]);\n\n const result = __use(promise);\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = useCallback(\n (options) => {\n const promise = queryRef.fetchMore(options);\n\n setPromiseCache((previousPromiseCache) =>\n new Map(previousPromiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = useCallback(\n (variables) => {\n const promise = queryRef.refetch(variables);\n\n setPromiseCache((previousPromiseCache) =>\n new Map(previousPromiseCache).set(queryRef.key, promise)\n );\n\n return promise;\n },\n [queryRef]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<TData, TVariables> =\n useCallback(\n (options) => queryRef.observable.subscribeToMore(options),\n [queryRef]\n );\n\n return useMemo(() => {\n return {\n client,\n data: result.data,\n error: toApolloError(result),\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n };\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const { query, fetchPolicy, returnPartialData } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(\n fetchPolicy: WatchQueryFetchPolicy = 'cache-first'\n) {\n const supportedFetchPolicies: WatchQueryFetchPolicy[] = [\n 'cache-first',\n 'network-only',\n 'no-cache',\n 'cache-and-network',\n ];\n\n invariant(\n supportedFetchPolicies.includes(fetchPolicy),\n `The fetch policy \\`%s\\` is not supported with suspense.`,\n fetchPolicy\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy | undefined,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === 'no-cache' && returnPartialData) {\n invariant.warn(\n 'Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.'\n );\n }\n}\n\nexport function toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\nexport function useTrackedQueryRefs(queryRef: QueryReference) {\n const trackedQueryRefs = useRef(new Set<QueryReference>());\n\n trackedQueryRefs.current.add(queryRef);\n\n useStrictModeSafeCleanupEffect(() => {\n trackedQueryRefs.current.forEach((sub) => sub.dispose());\n });\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables\n> {\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SuspenseQueryHookOptions<TData, TVariables>;\n}\n\nexport function useWatchQueryOptions<\n TData,\n TVariables extends OperationVariables\n>({\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n const watchQueryOptions = useDeepMemo<WatchQueryOptions<TVariables, TData>>(\n () => ({\n ...options,\n query,\n notifyOnNetworkStatusChange: false,\n nextFetchPolicy: void 0,\n }),\n [options, query]\n );\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n return watchQueryOptions;\n}\n"]}
@@ -10,7 +10,7 @@ export var useSyncExternalStore = realHook || (function (subscribe, getSnapshot,
10
10
  !didWarnUncachedGetSnapshot &&
11
11
  value !== getSnapshot()) {
12
12
  didWarnUncachedGetSnapshot = true;
13
- __DEV__ && invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');
13
+ __DEV__ && invariant.error(59);
14
14
  }
15
15
  var _a = React.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];
16
16
  if (canUseLayoutEffect) {
package/react/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import '../utilities/globals';
2
2
  export { ApolloProvider, ApolloConsumer, getApolloContext, resetApolloContext, ApolloContextValue } from './context';
3
3
  export * from './hooks';
4
- export * from './cache';
4
+ export { SuspenseCache } from './cache';
5
5
  export { DocumentType, IDocumentDefinition, operationName, parser } from './parser';
6
6
  export * from './types/types';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,cAAc,eAAe,CAAC"}
package/react/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "../utilities/globals/index.js";
2
2
  export { ApolloProvider, ApolloConsumer, getApolloContext, resetApolloContext } from "./context/index.js";
3
3
  export * from "./hooks/index.js";
4
- export * from "./cache/index.js";
4
+ export { SuspenseCache } from "./cache/index.js";
5
5
  export { DocumentType, operationName, parser } from "./parser/index.js";
6
6
  export * from "./types/types.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,WAAW,CAAC;AAEnB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,OAAO,EACL,YAAY,EAEZ,aAAa,EACb,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,cAAc,eAAe,CAAC","sourcesContent":["import '../utilities/globals';\n\nexport {\n ApolloProvider,\n ApolloConsumer,\n getApolloContext,\n resetApolloContext,\n ApolloContextValue\n} from './context';\n\nexport * from './hooks';\nexport * from './cache';\n\nexport {\n DocumentType,\n IDocumentDefinition,\n operationName,\n parser\n} from './parser';\n\nexport * from './types/types';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,WAAW,CAAC;AAEnB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EACL,YAAY,EAEZ,aAAa,EACb,MAAM,EACP,MAAM,UAAU,CAAC;AAElB,cAAc,eAAe,CAAC","sourcesContent":["import '../utilities/globals';\n\nexport {\n ApolloProvider,\n ApolloConsumer,\n getApolloContext,\n resetApolloContext,\n ApolloContextValue\n} from './context';\n\nexport * from './hooks';\nexport { SuspenseCache } from './cache';\n\nexport {\n DocumentType,\n IDocumentDefinition,\n operationName,\n parser\n} from './parser';\n\nexport * from './types/types';\n"]}
@@ -1,4 +1,4 @@
1
- import { DocumentNode, VariableDefinitionNode } from 'graphql';
1
+ import type { DocumentNode, VariableDefinitionNode } from 'graphql';
2
2
  export declare enum DocumentType {
3
3
  Query = 0,
4
4
  Mutation = 1,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/parser/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAEZ,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB,oBAAY,YAAY;IACtB,KAAK,IAAA;IACL,QAAQ,IAAA;IACR,YAAY,IAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CAClD;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,UAc/C;AAGD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAkFlE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,QAS5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/parser/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EAEZ,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAEjB,oBAAY,YAAY;IACtB,KAAK,IAAA;IACL,QAAQ,IAAA;IACR,YAAY,IAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CAClD;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,UAc/C;AAGD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAyFlE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,QAY5E"}
@@ -1,4 +1,4 @@
1
- import { invariant, __DEV__ } from "../../utilities/globals/index.js";
1
+ import { invariant } from "../../utilities/globals/index.js";
2
2
  export var DocumentType;
3
3
  (function (DocumentType) {
4
4
  DocumentType[DocumentType["Query"] = 0] = "Query";
@@ -26,9 +26,7 @@ export function parser(document) {
26
26
  if (cached)
27
27
  return cached;
28
28
  var variables, type, name;
29
- __DEV__ ? invariant(!!document && !!document.kind, "Argument of ".concat(document, " passed to parser was not a valid GraphQL ") +
30
- "DocumentNode. You may need to use 'graphql-tag' or another method " +
31
- "to convert your operation into a document") : invariant(!!document && !!document.kind, 35);
29
+ invariant(!!document && !!document.kind, 60, document);
32
30
  var fragments = [];
33
31
  var queries = [];
34
32
  var mutations = [];
@@ -53,14 +51,16 @@ export function parser(document) {
53
51
  }
54
52
  }
55
53
  }
56
- __DEV__ ? invariant(!fragments.length ||
57
- (queries.length || mutations.length || subscriptions.length), "Passing only a fragment to 'graphql' is not yet supported. " +
58
- "You must include a query, subscription or mutation as well") : invariant(!fragments.length ||
59
- (queries.length || mutations.length || subscriptions.length), 36);
60
- __DEV__ ? invariant(queries.length + mutations.length + subscriptions.length <= 1, "react-apollo only supports a query, subscription, or a mutation per HOC. " +
61
- "".concat(document, " had ").concat(queries.length, " queries, ").concat(subscriptions.length, " ") +
62
- "subscriptions and ".concat(mutations.length, " mutations. ") +
63
- "You can use 'compose' to join multiple operation types to a component") : invariant(queries.length + mutations.length + subscriptions.length <= 1, 37);
54
+ invariant(!fragments.length ||
55
+ (queries.length || mutations.length || subscriptions.length), 61);
56
+ invariant(
57
+ queries.length + mutations.length + subscriptions.length <= 1,
58
+ 62,
59
+ document,
60
+ queries.length,
61
+ subscriptions.length,
62
+ mutations.length
63
+ );
64
64
  type = queries.length ? DocumentType.Query : DocumentType.Mutation;
65
65
  if (!queries.length && !mutations.length)
66
66
  type = DocumentType.Subscription;
@@ -69,9 +69,7 @@ export function parser(document) {
69
69
  : mutations.length
70
70
  ? mutations
71
71
  : subscriptions;
72
- __DEV__ ? invariant(definitions.length === 1, "react-apollo only supports one definition per HOC. ".concat(document, " had ") +
73
- "".concat(definitions.length, " definitions. ") +
74
- "You can use 'compose' to join multiple operation types to a component") : invariant(definitions.length === 1, 38);
72
+ invariant(definitions.length === 1, 63, document, definitions.length);
75
73
  var definition = definitions[0];
76
74
  variables = definition.variableDefinitions || [];
77
75
  if (definition.name && definition.name.kind === 'Name') {
@@ -88,7 +86,12 @@ export function verifyDocumentType(document, type) {
88
86
  var operation = parser(document);
89
87
  var requiredOperationName = operationName(type);
90
88
  var usedOperationName = operationName(operation.type);
91
- __DEV__ ? invariant(operation.type === type, "Running a ".concat(requiredOperationName, " requires a graphql ") +
92
- "".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : invariant(operation.type === type, 39);
89
+ invariant(
90
+ operation.type === type,
91
+ 64,
92
+ requiredOperationName,
93
+ requiredOperationName,
94
+ usedOperationName
95
+ );
93
96
  }
94
97
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/parser/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../utilities/globals';\n\nimport {\n DocumentNode,\n DefinitionNode,\n VariableDefinitionNode,\n OperationDefinitionNode\n} from 'graphql';\n\nexport enum DocumentType {\n Query,\n Mutation,\n Subscription\n}\n\nexport interface IDocumentDefinition {\n type: DocumentType;\n name: string;\n variables: ReadonlyArray<VariableDefinitionNode>;\n}\n\nconst cache = new Map();\n\nexport function operationName(type: DocumentType) {\n let name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\n\n// This parser is mostly used to safety check incoming documents.\nexport function parser(document: DocumentNode): IDocumentDefinition {\n const cached = cache.get(document);\n if (cached) return cached;\n\n let variables, type, name;\n\n invariant(\n !!document && !!document.kind,\n `Argument of ${document} passed to parser was not a valid GraphQL ` +\n `DocumentNode. You may need to use 'graphql-tag' or another method ` +\n `to convert your operation into a document`\n );\n\n const fragments: DefinitionNode[] = []\n const queries: DefinitionNode[] = []\n const mutations: DefinitionNode[] = []\n const subscriptions: DefinitionNode[] = []\n\n for (const x of document.definitions) {\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue\n }\n\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n\n invariant(\n !fragments.length ||\n (queries.length || mutations.length || subscriptions.length),\n `Passing only a fragment to 'graphql' is not yet supported. ` +\n `You must include a query, subscription or mutation as well`\n );\n\n invariant(\n queries.length + mutations.length + subscriptions.length <= 1,\n `react-apollo only supports a query, subscription, or a mutation per HOC. ` +\n `${document} had ${queries.length} queries, ${subscriptions.length} ` +\n `subscriptions and ${mutations.length} mutations. ` +\n `You can use 'compose' to join multiple operation types to a component`\n );\n\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length) type = DocumentType.Subscription;\n\n const definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n\n invariant(\n definitions.length === 1,\n `react-apollo only supports one definition per HOC. ${document} had ` +\n `${definitions.length} definitions. ` +\n `You can use 'compose' to join multiple operation types to a component`\n );\n\n const definition = definitions[0] as OperationDefinitionNode;\n variables = definition.variableDefinitions || [];\n\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n } else {\n name = 'data'; // fallback to using data if no name\n }\n\n const payload = { name, type, variables };\n cache.set(document, payload);\n return payload;\n}\n\nexport function verifyDocumentType(document: DocumentNode, type: DocumentType) {\n const operation = parser(document);\n const requiredOperationName = operationName(type);\n const usedOperationName = operationName(operation.type);\n invariant(\n operation.type === type,\n `Running a ${requiredOperationName} requires a graphql ` +\n `${requiredOperationName}, but a ${usedOperationName} was used instead.`\n );\n}\n\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/parser/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant } from '../../utilities/globals';\n\nimport type {\n DocumentNode,\n DefinitionNode,\n VariableDefinitionNode,\n OperationDefinitionNode\n} from 'graphql';\n\nexport enum DocumentType {\n Query,\n Mutation,\n Subscription\n}\n\nexport interface IDocumentDefinition {\n type: DocumentType;\n name: string;\n variables: ReadonlyArray<VariableDefinitionNode>;\n}\n\nconst cache = new Map();\n\nexport function operationName(type: DocumentType) {\n let name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\n\n// This parser is mostly used to safety check incoming documents.\nexport function parser(document: DocumentNode): IDocumentDefinition {\n const cached = cache.get(document);\n if (cached) return cached;\n\n let variables, type, name;\n\n invariant(\n !!document && !!document.kind,\n `Argument of %s passed to parser was not a valid GraphQL ` +\n `DocumentNode. You may need to use 'graphql-tag' or another method ` +\n `to convert your operation into a document`,\n document\n );\n\n const fragments: DefinitionNode[] = []\n const queries: DefinitionNode[] = []\n const mutations: DefinitionNode[] = []\n const subscriptions: DefinitionNode[] = []\n\n for (const x of document.definitions) {\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue\n }\n\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n\n invariant(\n !fragments.length ||\n (queries.length || mutations.length || subscriptions.length),\n `Passing only a fragment to 'graphql' is not yet supported. ` +\n `You must include a query, subscription or mutation as well`\n );\n\n invariant(\n queries.length + mutations.length + subscriptions.length <= 1,\n `react-apollo only supports a query, subscription, or a mutation per HOC. ` +\n `%s had %s queries, %s ` +\n `subscriptions and %s mutations. ` +\n `You can use 'compose' to join multiple operation types to a component`,\n document,\n queries.length,\n subscriptions.length,\n mutations.length\n );\n\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length) type = DocumentType.Subscription;\n\n const definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n\n invariant(\n definitions.length === 1,\n `react-apollo only supports one definition per HOC. %s had ` +\n `%s definitions. ` +\n `You can use 'compose' to join multiple operation types to a component`,\n document,\n definitions.length\n );\n\n const definition = definitions[0] as OperationDefinitionNode;\n variables = definition.variableDefinitions || [];\n\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n } else {\n name = 'data'; // fallback to using data if no name\n }\n\n const payload = { name, type, variables };\n cache.set(document, payload);\n return payload;\n}\n\nexport function verifyDocumentType(document: DocumentNode, type: DocumentType) {\n const operation = parser(document);\n const requiredOperationName = operationName(type);\n const usedOperationName = operationName(operation.type);\n invariant(\n operation.type === type,\n `Running a %s requires a graphql ` +\n `%s, but a %s was used instead.`,\n requiredOperationName,\n requiredOperationName,\n usedOperationName\n );\n}\n\n"]}
@@ -31,9 +31,7 @@ function parser(document) {
31
31
  if (cached)
32
32
  return cached;
33
33
  var variables, type, name;
34
- globals.__DEV__ ? globals.invariant(!!document && !!document.kind, "Argument of ".concat(document, " passed to parser was not a valid GraphQL ") +
35
- "DocumentNode. You may need to use 'graphql-tag' or another method " +
36
- "to convert your operation into a document") : globals.invariant(!!document && !!document.kind, 35);
34
+ globals.invariant(!!document && !!document.kind, 60, document);
37
35
  var fragments = [];
38
36
  var queries = [];
39
37
  var mutations = [];
@@ -58,14 +56,16 @@ function parser(document) {
58
56
  }
59
57
  }
60
58
  }
61
- globals.__DEV__ ? globals.invariant(!fragments.length ||
62
- (queries.length || mutations.length || subscriptions.length), "Passing only a fragment to 'graphql' is not yet supported. " +
63
- "You must include a query, subscription or mutation as well") : globals.invariant(!fragments.length ||
64
- (queries.length || mutations.length || subscriptions.length), 36);
65
- globals.__DEV__ ? globals.invariant(queries.length + mutations.length + subscriptions.length <= 1, "react-apollo only supports a query, subscription, or a mutation per HOC. " +
66
- "".concat(document, " had ").concat(queries.length, " queries, ").concat(subscriptions.length, " ") +
67
- "subscriptions and ".concat(mutations.length, " mutations. ") +
68
- "You can use 'compose' to join multiple operation types to a component") : globals.invariant(queries.length + mutations.length + subscriptions.length <= 1, 37);
59
+ globals.invariant(!fragments.length ||
60
+ (queries.length || mutations.length || subscriptions.length), 61);
61
+ globals.invariant(
62
+ queries.length + mutations.length + subscriptions.length <= 1,
63
+ 62,
64
+ document,
65
+ queries.length,
66
+ subscriptions.length,
67
+ mutations.length
68
+ );
69
69
  type = queries.length ? exports.DocumentType.Query : exports.DocumentType.Mutation;
70
70
  if (!queries.length && !mutations.length)
71
71
  type = exports.DocumentType.Subscription;
@@ -74,9 +74,7 @@ function parser(document) {
74
74
  : mutations.length
75
75
  ? mutations
76
76
  : subscriptions;
77
- globals.__DEV__ ? globals.invariant(definitions.length === 1, "react-apollo only supports one definition per HOC. ".concat(document, " had ") +
78
- "".concat(definitions.length, " definitions. ") +
79
- "You can use 'compose' to join multiple operation types to a component") : globals.invariant(definitions.length === 1, 38);
77
+ globals.invariant(definitions.length === 1, 63, document, definitions.length);
80
78
  var definition = definitions[0];
81
79
  variables = definition.variableDefinitions || [];
82
80
  if (definition.name && definition.name.kind === 'Name') {
@@ -93,8 +91,13 @@ function verifyDocumentType(document, type) {
93
91
  var operation = parser(document);
94
92
  var requiredOperationName = operationName(type);
95
93
  var usedOperationName = operationName(operation.type);
96
- globals.__DEV__ ? globals.invariant(operation.type === type, "Running a ".concat(requiredOperationName, " requires a graphql ") +
97
- "".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : globals.invariant(operation.type === type, 39);
94
+ globals.invariant(
95
+ operation.type === type,
96
+ 64,
97
+ requiredOperationName,
98
+ requiredOperationName,
99
+ usedOperationName
100
+ );
98
101
  }
99
102
 
100
103
  exports.operationName = operationName;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.cjs","sources":["index.js"],"sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n __DEV__ ? invariant(!!document && !!document.kind, \"Argument of \".concat(document, \" passed to parser was not a valid GraphQL \") +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\") : invariant(!!document && !!document.kind, 35);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue;\n }\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n __DEV__ ? invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n \"You must include a query, subscription or mutation as well\") : invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), 36);\n __DEV__ ? invariant(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n \"\".concat(document, \" had \").concat(queries.length, \" queries, \").concat(subscriptions.length, \" \") +\n \"subscriptions and \".concat(mutations.length, \" mutations. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(queries.length + mutations.length + subscriptions.length <= 1, 37);\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length)\n type = DocumentType.Subscription;\n var definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n __DEV__ ? invariant(definitions.length === 1, \"react-apollo only supports one definition per HOC. \".concat(document, \" had \") +\n \"\".concat(definitions.length, \" definitions. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(definitions.length === 1, 38);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n }\n else {\n name = 'data';\n }\n var payload = { name: name, type: type, variables: variables };\n cache.set(document, payload);\n return payload;\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n __DEV__ ? invariant(operation.type === type, \"Running a \".concat(requiredOperationName, \" requires a graphql \") +\n \"\".concat(requiredOperationName, \", but a \").concat(usedOperationName, \" was used instead.\")) : invariant(operation.type === type, 39);\n}\n//# sourceMappingURL=index.js.map"],"names":["DocumentType","__DEV__","invariant"],"mappings":"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"}
1
+ {"version":3,"file":"parser.cjs","sources":["index.js"],"sourcesContent":["import { invariant } from '../../utilities/globals';\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n invariant(!!document && !!document.kind, 60, document);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue;\n }\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), 61);\n invariant(\n queries.length + mutations.length + subscriptions.length <= 1,\n 62,\n document,\n queries.length,\n subscriptions.length,\n mutations.length\n );\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length)\n type = DocumentType.Subscription;\n var definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n invariant(definitions.length === 1, 63, document, definitions.length);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n }\n else {\n name = 'data';\n }\n var payload = { name: name, type: type, variables: variables };\n cache.set(document, payload);\n return payload;\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n invariant(\n operation.type === type,\n 64,\n requiredOperationName,\n requiredOperationName,\n usedOperationName\n );\n}\n//# sourceMappingURL=index.js.map"],"names":["DocumentType","invariant"],"mappings":"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"}