@apollo/client 4.0.0-alpha.6 → 4.0.0-alpha.8

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 (609) hide show
  1. package/.changeset/afraid-moons-arrive.md +5 -0
  2. package/.changeset/beige-mirrors-talk.md +15 -0
  3. package/.changeset/dirty-eagles-poke.md +5 -0
  4. package/.changeset/early-eggs-develop.md +22 -0
  5. package/.changeset/giant-apes-thank.md +5 -0
  6. package/.changeset/nice-dots-matter.md +5 -0
  7. package/.changeset/ninety-bags-bake.md +17 -0
  8. package/.changeset/perfect-vans-give.md +7 -0
  9. package/.changeset/pre.json +13 -0
  10. package/.changeset/purple-bears-flash.md +5 -0
  11. package/.changeset/shaggy-pugs-add.md +52 -0
  12. package/.changeset/short-months-complain.md +5 -0
  13. package/.changeset/swift-rivers-share.md +13 -0
  14. package/.changeset/wicked-forks-double.md +33 -0
  15. package/CHANGELOG.md +178 -0
  16. package/__cjs/cache/core/cache.cjs +1 -1
  17. package/__cjs/cache/core/cache.cjs.map +1 -1
  18. package/__cjs/cache/core/cache.d.cts +1 -1
  19. package/__cjs/cache/core/types/Cache.cjs.map +1 -1
  20. package/__cjs/cache/core/types/Cache.d.cts +1 -1
  21. package/__cjs/cache/core/types/DataProxy.d.cts +1 -1
  22. package/__cjs/cache/core/types/common.cjs +1 -0
  23. package/__cjs/cache/core/types/common.cjs.map +1 -1
  24. package/__cjs/cache/index.cjs +4 -4
  25. package/__cjs/cache/index.cjs.map +1 -1
  26. package/__cjs/cache/index.d.cts +3 -3
  27. package/__cjs/cache/inmemory/entityStore.cjs +7 -4
  28. package/__cjs/cache/inmemory/entityStore.cjs.map +1 -1
  29. package/__cjs/cache/inmemory/entityStore.d.cts +1 -0
  30. package/__cjs/cache/inmemory/fragmentRegistry.cjs.map +1 -1
  31. package/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  32. package/__cjs/cache/inmemory/inMemoryCache.d.cts +1 -1
  33. package/__cjs/cache/inmemory/key-extractor.cjs +1 -1
  34. package/__cjs/cache/inmemory/policies.cjs +4 -4
  35. package/__cjs/cache/inmemory/reactiveVars.cjs.map +1 -1
  36. package/__cjs/cache/inmemory/reactiveVars.d.cts +1 -1
  37. package/__cjs/cache/inmemory/readFromStore.cjs +2 -2
  38. package/__cjs/cache/inmemory/readFromStore.cjs.map +1 -1
  39. package/__cjs/cache/inmemory/types.d.cts +1 -1
  40. package/__cjs/cache/inmemory/writeToStore.cjs +4 -4
  41. package/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  42. package/__cjs/cache/inmemory/writeToStore.d.cts +1 -1
  43. package/__cjs/config/jest/areCombinedGraphQLErrorsEqual.cjs +2 -3
  44. package/__cjs/config/jest/areCombinedGraphQLErrorsEqual.cjs.map +1 -1
  45. package/__cjs/config/jest/areCombinedProtocolErrorsEqual.cjs +2 -3
  46. package/__cjs/config/jest/areCombinedProtocolErrorsEqual.cjs.map +1 -1
  47. package/__cjs/config/jest/areMissingFieldErrorsEqual.cjs +2 -3
  48. package/__cjs/config/jest/areMissingFieldErrorsEqual.cjs.map +1 -1
  49. package/__cjs/config/jest/areServerErrorsEqual.cjs +21 -0
  50. package/__cjs/config/jest/areServerErrorsEqual.cjs.map +1 -0
  51. package/__cjs/config/jest/areServerErrorsEqual.d.cts +3 -0
  52. package/__cjs/config/jest/resolver.cjs +11 -0
  53. package/__cjs/config/jest/resolver.cjs.map +1 -1
  54. package/__cjs/config/jest/setup.cjs +12 -1
  55. package/__cjs/config/jest/setup.cjs.map +1 -1
  56. package/__cjs/core/ApolloClient.cjs +7 -9
  57. package/__cjs/core/ApolloClient.cjs.map +1 -1
  58. package/__cjs/core/ApolloClient.d.cts +0 -2
  59. package/__cjs/core/LocalState.cjs +2 -2
  60. package/__cjs/core/ObservableQuery.cjs +105 -38
  61. package/__cjs/core/ObservableQuery.cjs.map +1 -1
  62. package/__cjs/core/ObservableQuery.d.cts +18 -1
  63. package/__cjs/core/QueryInfo.cjs +4 -78
  64. package/__cjs/core/QueryInfo.cjs.map +1 -1
  65. package/__cjs/core/QueryInfo.d.cts +0 -10
  66. package/__cjs/core/QueryManager.cjs +34 -53
  67. package/__cjs/core/QueryManager.cjs.map +1 -1
  68. package/__cjs/core/QueryManager.d.cts +3 -3
  69. package/__cjs/core/index.cjs +41 -21
  70. package/__cjs/core/index.cjs.map +1 -1
  71. package/__cjs/core/index.d.cts +13 -11
  72. package/__cjs/errors/CombinedGraphQLErrors.cjs.map +1 -1
  73. package/__cjs/errors/CombinedGraphQLErrors.d.cts +1 -1
  74. package/__cjs/errors/index.cjs +21 -2
  75. package/__cjs/errors/index.cjs.map +1 -1
  76. package/__cjs/errors/index.d.cts +2 -0
  77. package/__cjs/invariantErrorCodes.cjs +95 -119
  78. package/__cjs/link/batch/index.cjs +4 -2
  79. package/__cjs/link/batch/index.cjs.map +1 -1
  80. package/__cjs/link/batch/index.d.cts +2 -1
  81. package/__cjs/link/batch-http/index.cjs +3 -2
  82. package/__cjs/link/batch-http/index.cjs.map +1 -1
  83. package/__cjs/link/batch-http/index.d.cts +1 -1
  84. package/__cjs/link/context/index.cjs.map +1 -1
  85. package/__cjs/link/context/index.d.cts +1 -1
  86. package/__cjs/link/core/ApolloLink.cjs +2 -20
  87. package/__cjs/link/core/ApolloLink.cjs.map +1 -1
  88. package/__cjs/link/core/ApolloLink.d.cts +1 -3
  89. package/__cjs/link/core/index.cjs.map +1 -1
  90. package/__cjs/link/core/index.d.cts +1 -1
  91. package/__cjs/link/core/types.d.cts +1 -1
  92. package/__cjs/link/error/index.cjs +13 -28
  93. package/__cjs/link/error/index.cjs.map +1 -1
  94. package/__cjs/link/error/index.d.cts +4 -15
  95. package/__cjs/link/http/checkFetcher.cjs +1 -1
  96. package/__cjs/link/http/createHttpLink.cjs +1 -1
  97. package/__cjs/link/http/parseAndCheckHttpResponse.cjs +1 -1
  98. package/__cjs/link/http/serializeFetchParameter.cjs +1 -1
  99. package/__cjs/link/persisted-queries/index.cjs +2 -2
  100. package/__cjs/link/persisted-queries/index.cjs.map +1 -1
  101. package/__cjs/link/remove-typename/removeTypenameFromVariables.cjs.map +1 -1
  102. package/__cjs/link/retry/index.cjs +3 -2
  103. package/__cjs/link/retry/index.cjs.map +1 -1
  104. package/__cjs/link/retry/index.d.cts +1 -1
  105. package/__cjs/link/utils/validateOperation.cjs +1 -1
  106. package/__cjs/masking/maskDefinition.cjs +2 -2
  107. package/__cjs/masking/maskFragment.cjs +2 -2
  108. package/__cjs/masking/maskFragment.cjs.map +1 -1
  109. package/__cjs/masking/maskFragment.d.cts +1 -1
  110. package/__cjs/masking/maskOperation.cjs +1 -1
  111. package/__cjs/masking/maskOperation.cjs.map +1 -1
  112. package/__cjs/masking/maskOperation.d.cts +1 -1
  113. package/__cjs/masking/utils.cjs +1 -1
  114. package/__cjs/react/context/ApolloConsumer.cjs +1 -1
  115. package/__cjs/react/context/ApolloConsumer.cjs.map +1 -1
  116. package/__cjs/react/context/ApolloConsumer.d.cts +7 -4
  117. package/__cjs/react/context/ApolloContext.cjs +1 -1
  118. package/__cjs/react/context/ApolloContext.cjs.map +1 -1
  119. package/__cjs/react/context/ApolloContext.d.cts +1 -1
  120. package/__cjs/react/context/ApolloProvider.cjs +1 -1
  121. package/__cjs/react/context/ApolloProvider.cjs.map +1 -1
  122. package/__cjs/react/context/ApolloProvider.d.cts +7 -5
  123. package/__cjs/react/hooks/internal/wrapHook.cjs.map +1 -1
  124. package/__cjs/react/hooks/internal/wrapHook.d.cts +3 -3
  125. package/__cjs/react/hooks/useApolloClient.cjs +3 -3
  126. package/__cjs/react/hooks/useApolloClient.cjs.map +1 -1
  127. package/__cjs/react/hooks/useApolloClient.d.cts +1 -1
  128. package/__cjs/react/hooks/useBackgroundQuery.cjs.map +1 -1
  129. package/__cjs/react/hooks/useBackgroundQuery.d.cts +2 -2
  130. package/__cjs/react/hooks/useFragment.cjs.map +1 -1
  131. package/__cjs/react/hooks/useFragment.d.cts +1 -1
  132. package/__cjs/react/hooks/useLazyQuery.cjs +4 -4
  133. package/__cjs/react/hooks/useLazyQuery.cjs.map +1 -1
  134. package/__cjs/react/hooks/useLazyQuery.d.cts +2 -2
  135. package/__cjs/react/hooks/useLoadableQuery.cjs +2 -2
  136. package/__cjs/react/hooks/useLoadableQuery.cjs.map +1 -1
  137. package/__cjs/react/hooks/useLoadableQuery.d.cts +2 -2
  138. package/__cjs/react/hooks/useMutation.cjs +0 -2
  139. package/__cjs/react/hooks/useMutation.cjs.map +1 -1
  140. package/__cjs/react/hooks/useMutation.d.cts +1 -2
  141. package/__cjs/react/hooks/useQuery.cjs +4 -6
  142. package/__cjs/react/hooks/useQuery.cjs.map +1 -1
  143. package/__cjs/react/hooks/useQuery.d.cts +2 -3
  144. package/__cjs/react/hooks/useQueryRefHandlers.cjs.map +1 -1
  145. package/__cjs/react/hooks/useQueryRefHandlers.d.cts +2 -2
  146. package/__cjs/react/hooks/useReactiveVar.cjs.map +1 -1
  147. package/__cjs/react/hooks/useReactiveVar.d.cts +1 -1
  148. package/__cjs/react/hooks/useReadQuery.cjs.map +1 -1
  149. package/__cjs/react/hooks/useReadQuery.d.cts +1 -1
  150. package/__cjs/react/hooks/useSubscription.cjs +1 -3
  151. package/__cjs/react/hooks/useSubscription.cjs.map +1 -1
  152. package/__cjs/react/hooks/useSubscription.d.cts +1 -1
  153. package/__cjs/react/hooks/useSuspenseFragment.cjs.map +1 -1
  154. package/__cjs/react/hooks/useSuspenseFragment.d.cts +1 -1
  155. package/__cjs/react/hooks/useSuspenseQuery.cjs +5 -7
  156. package/__cjs/react/hooks/useSuspenseQuery.cjs.map +1 -1
  157. package/__cjs/react/hooks/useSuspenseQuery.d.cts +3 -3
  158. package/__cjs/react/hooks/useSyncExternalStore.cjs +1 -1
  159. package/__cjs/react/index.cjs +35 -11
  160. package/__cjs/react/index.cjs.map +1 -1
  161. package/__cjs/react/index.d.cts +21 -7
  162. package/__cjs/react/index.react-server.cjs +1 -5
  163. package/__cjs/react/index.react-server.cjs.map +1 -1
  164. package/__cjs/react/index.react-server.d.cts +0 -1
  165. package/__cjs/react/internal/cache/FragmentReference.cjs.map +1 -1
  166. package/__cjs/react/internal/cache/FragmentReference.d.cts +1 -1
  167. package/__cjs/react/internal/cache/QueryReference.cjs +1 -1
  168. package/__cjs/react/internal/cache/QueryReference.cjs.map +1 -1
  169. package/__cjs/react/internal/cache/QueryReference.d.cts +1 -1
  170. package/__cjs/react/internal/cache/SuspenseCache.cjs.map +1 -1
  171. package/__cjs/react/internal/cache/SuspenseCache.d.cts +1 -1
  172. package/__cjs/react/internal/cache/getSuspenseCache.cjs.map +1 -1
  173. package/__cjs/react/internal/cache/getSuspenseCache.d.cts +2 -2
  174. package/__cjs/react/internal/types.d.cts +1 -1
  175. package/__cjs/react/query-preloader/createQueryPreloader.cjs.map +1 -1
  176. package/__cjs/react/query-preloader/createQueryPreloader.d.cts +1 -1
  177. package/__cjs/react/ssr/prerenderStatic.cjs +4 -4
  178. package/__cjs/react/ssr/prerenderStatic.cjs.map +1 -1
  179. package/__cjs/react/ssr/prerenderStatic.d.cts +1 -1
  180. package/__cjs/react/ssr/useSSRQuery.cjs.map +1 -1
  181. package/__cjs/react/types/deprecated.d.cts +12 -2
  182. package/__cjs/testing/core/index.cjs +6 -3
  183. package/__cjs/testing/core/index.cjs.map +1 -1
  184. package/__cjs/testing/core/index.d.cts +3 -3
  185. package/__cjs/testing/core/mocking/mockClient.cjs +3 -4
  186. package/__cjs/testing/core/mocking/mockClient.cjs.map +1 -1
  187. package/__cjs/testing/core/mocking/mockClient.d.cts +1 -1
  188. package/__cjs/testing/core/mocking/mockLink.cjs +118 -112
  189. package/__cjs/testing/core/mocking/mockLink.cjs.map +1 -1
  190. package/__cjs/testing/core/mocking/mockLink.d.cts +26 -7
  191. package/__cjs/testing/experimental/createSchemaFetch.cjs +4 -4
  192. package/__cjs/testing/experimental/createSchemaFetch.cjs.map +1 -1
  193. package/__cjs/testing/experimental/createTestSchema.cjs.map +1 -1
  194. package/__cjs/testing/experimental/createTestSchema.d.cts +1 -1
  195. package/__cjs/testing/index.cjs +13 -2
  196. package/__cjs/testing/index.cjs.map +1 -1
  197. package/__cjs/testing/index.d.cts +2 -1
  198. package/__cjs/testing/internal/disposables/spyOnConsole.cjs +0 -1
  199. package/__cjs/testing/internal/disposables/spyOnConsole.cjs.map +1 -1
  200. package/__cjs/testing/internal/disposables/spyOnConsole.d.cts +0 -1
  201. package/__cjs/testing/internal/incremental.cjs.map +1 -1
  202. package/__cjs/testing/internal/incremental.d.cts +1 -1
  203. package/__cjs/testing/internal/index.cjs +12 -8
  204. package/__cjs/testing/internal/index.cjs.map +1 -1
  205. package/__cjs/testing/internal/index.d.cts +3 -3
  206. package/__cjs/testing/internal/renderHelpers.cjs.map +1 -1
  207. package/__cjs/testing/internal/renderHelpers.d.cts +1 -1
  208. package/__cjs/testing/internal/scenarios/index.cjs +9 -7
  209. package/__cjs/testing/internal/scenarios/index.cjs.map +1 -1
  210. package/__cjs/testing/internal/scenarios/index.d.cts +6 -8
  211. package/__cjs/testing/matchers/index.cjs +4 -22
  212. package/__cjs/testing/matchers/index.cjs.map +1 -1
  213. package/__cjs/testing/matchers/toComplete.cjs.map +1 -1
  214. package/__cjs/testing/matchers/toEmitAnything.cjs.map +1 -1
  215. package/__cjs/testing/matchers/toEmitError.cjs.map +1 -1
  216. package/__cjs/testing/matchers/toEmitNext.cjs.map +1 -1
  217. package/__cjs/testing/matchers/{toEmitStrictTyped.cjs → toEmitTypedValue.cjs} +5 -5
  218. package/__cjs/testing/matchers/toEmitTypedValue.cjs.map +1 -0
  219. package/__cjs/testing/matchers/{toEmitValueStrict.d.cts → toEmitTypedValue.d.cts} +2 -2
  220. package/__cjs/testing/matchers/toHaveSuspenseCacheEntryUsing.cjs +2 -2
  221. package/__cjs/testing/matchers/toHaveSuspenseCacheEntryUsing.cjs.map +1 -1
  222. package/__cjs/testing/matchers/toHaveSuspenseCacheEntryUsing.d.cts +1 -1
  223. package/__cjs/testing/matchers/toMatchDocument.cjs.map +1 -1
  224. package/__cjs/testing/matchers/toMatchDocument.d.cts +1 -1
  225. package/__cjs/testing/matchers/{toEqualStrictTyped.cjs → toStrictEqualTyped.cjs} +5 -5
  226. package/__cjs/testing/matchers/{toEqualStrictTyped.cjs.map → toStrictEqualTyped.cjs.map} +1 -1
  227. package/__cjs/testing/matchers/toStrictEqualTyped.d.cts +3 -0
  228. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs +2 -2
  229. package/__cjs/testing/matchers/utils/getSerializableProperties.cjs.map +1 -1
  230. package/__cjs/testing/react/MockedProvider.cjs +11 -7
  231. package/__cjs/testing/react/MockedProvider.cjs.map +1 -1
  232. package/__cjs/testing/react/MockedProvider.d.cts +5 -3
  233. package/__cjs/utilities/caching/sizes.cjs +2 -2
  234. package/__cjs/utilities/caching/sizes.cjs.map +1 -1
  235. package/__cjs/utilities/caching/sizes.d.cts +2 -20
  236. package/__cjs/utilities/common/mergeOptions.cjs.map +1 -1
  237. package/__cjs/utilities/common/mergeOptions.d.cts +1 -1
  238. package/__cjs/utilities/graphql/getFromAST.cjs +15 -6
  239. package/__cjs/utilities/graphql/getFromAST.cjs.map +1 -1
  240. package/__cjs/utilities/graphql/getFromAST.d.cts +2 -2
  241. package/__cjs/utilities/graphql/operations.cjs.map +1 -1
  242. package/__cjs/utilities/graphql/operations.d.cts +1 -1
  243. package/__cjs/utilities/graphql/storeUtils.cjs +1 -1
  244. package/__cjs/utilities/graphql/transform.cjs +2 -2
  245. package/__cjs/utilities/index.cjs +39 -19
  246. package/__cjs/utilities/index.cjs.map +1 -1
  247. package/__cjs/utilities/index.d.cts +15 -14
  248. package/__cjs/utilities/internal/getMemoryInternals.cjs +0 -2
  249. package/__cjs/utilities/internal/getMemoryInternals.cjs.map +1 -1
  250. package/__cjs/utilities/internal/getMemoryInternals.d.cts +0 -1
  251. package/__cjs/utilities/internal/index.production.cjs +1 -0
  252. package/__cjs/utilities/internal/index.production.cjs.map +1 -1
  253. package/__cjs/utilities/internal/toQueryResult.cjs.map +1 -1
  254. package/__cjs/utilities/internal/toQueryResult.d.cts +1 -1
  255. package/__cjs/utilities/invariant/index.development.cjs +1 -0
  256. package/__cjs/utilities/invariant/index.development.cjs.map +1 -1
  257. package/__cjs/utilities/subscriptions/relay/index.cjs +2 -2
  258. package/__cjs/utilities/subscriptions/relay/index.cjs.map +1 -1
  259. package/__cjs/utilities/subscriptions/relay/index.d.cts +1 -1
  260. package/__cjs/version.cjs +1 -1
  261. package/__cjs/version.cjs.map +1 -1
  262. package/__cjs/version.d.cts +1 -1
  263. package/cache/core/cache.d.ts +1 -1
  264. package/cache/core/cache.js +1 -1
  265. package/cache/core/cache.js.map +1 -1
  266. package/cache/core/types/Cache.d.ts +1 -1
  267. package/cache/core/types/Cache.js.map +1 -1
  268. package/cache/core/types/DataProxy.d.ts +1 -1
  269. package/cache/core/types/common.js +1 -0
  270. package/cache/core/types/common.js.map +1 -1
  271. package/cache/index.d.ts +3 -3
  272. package/cache/index.js +1 -1
  273. package/cache/index.js.map +1 -1
  274. package/cache/inmemory/entityStore.d.ts +1 -0
  275. package/cache/inmemory/entityStore.js +7 -4
  276. package/cache/inmemory/entityStore.js.map +1 -1
  277. package/cache/inmemory/fragmentRegistry.js +1 -1
  278. package/cache/inmemory/fragmentRegistry.js.map +1 -1
  279. package/cache/inmemory/inMemoryCache.d.ts +1 -1
  280. package/cache/inmemory/inMemoryCache.js.map +1 -1
  281. package/cache/inmemory/key-extractor.js +1 -1
  282. package/cache/inmemory/policies.js +4 -4
  283. package/cache/inmemory/reactiveVars.d.ts +1 -1
  284. package/cache/inmemory/reactiveVars.js.map +1 -1
  285. package/cache/inmemory/readFromStore.js +2 -2
  286. package/cache/inmemory/readFromStore.js.map +1 -1
  287. package/cache/inmemory/types.d.ts +1 -1
  288. package/cache/inmemory/writeToStore.d.ts +1 -1
  289. package/cache/inmemory/writeToStore.js +4 -4
  290. package/cache/inmemory/writeToStore.js.map +1 -1
  291. package/config/jest/areCombinedGraphQLErrorsEqual.js +2 -3
  292. package/config/jest/areCombinedGraphQLErrorsEqual.js.map +1 -1
  293. package/config/jest/areCombinedProtocolErrorsEqual.js +2 -3
  294. package/config/jest/areCombinedProtocolErrorsEqual.js.map +1 -1
  295. package/config/jest/areMissingFieldErrorsEqual.js +2 -3
  296. package/config/jest/areMissingFieldErrorsEqual.js.map +1 -1
  297. package/config/jest/areServerErrorsEqual.d.ts +3 -0
  298. package/config/jest/areServerErrorsEqual.js +17 -0
  299. package/config/jest/areServerErrorsEqual.js.map +1 -0
  300. package/config/jest/resolver.js +12 -1
  301. package/config/jest/resolver.js.map +1 -1
  302. package/config/jest/setup.js +13 -2
  303. package/config/jest/setup.js.map +1 -1
  304. package/core/ApolloClient.d.ts +0 -2
  305. package/core/ApolloClient.js +7 -9
  306. package/core/ApolloClient.js.map +1 -1
  307. package/core/LocalState.js +2 -2
  308. package/core/ObservableQuery.d.ts +18 -1
  309. package/core/ObservableQuery.js +104 -36
  310. package/core/ObservableQuery.js.map +1 -1
  311. package/core/QueryInfo.d.ts +0 -10
  312. package/core/QueryInfo.js +4 -78
  313. package/core/QueryInfo.js.map +1 -1
  314. package/core/QueryManager.d.ts +3 -3
  315. package/core/QueryManager.js +36 -55
  316. package/core/QueryManager.js.map +1 -1
  317. package/core/index.d.ts +13 -11
  318. package/core/index.js +9 -6
  319. package/core/index.js.map +1 -1
  320. package/errors/CombinedGraphQLErrors.d.ts +1 -1
  321. package/errors/CombinedGraphQLErrors.js.map +1 -1
  322. package/errors/index.d.ts +2 -0
  323. package/errors/index.js +18 -0
  324. package/errors/index.js.map +1 -1
  325. package/invariantErrorCodes.js +95 -119
  326. package/legacyEntryPoints/testing/internal/index.d.ts +1 -0
  327. package/legacyEntryPoints/testing/internal/index.js +1 -0
  328. package/legacyEntryPoints/testing/internal/internal.cjs +1 -0
  329. package/legacyEntryPoints/testing/internal/internal.d.cts +1 -0
  330. package/link/batch/index.d.ts +2 -1
  331. package/link/batch/index.js +1 -1
  332. package/link/batch/index.js.map +1 -1
  333. package/link/batch-http/index.d.ts +1 -1
  334. package/link/batch-http/index.js +1 -1
  335. package/link/batch-http/index.js.map +1 -1
  336. package/link/context/index.d.ts +1 -1
  337. package/link/context/index.js.map +1 -1
  338. package/link/core/ApolloLink.d.ts +1 -3
  339. package/link/core/ApolloLink.js +2 -20
  340. package/link/core/ApolloLink.js.map +1 -1
  341. package/link/core/index.d.ts +1 -1
  342. package/link/core/index.js.map +1 -1
  343. package/link/core/types.d.ts +1 -1
  344. package/link/error/index.d.ts +4 -15
  345. package/link/error/index.js +14 -29
  346. package/link/error/index.js.map +1 -1
  347. package/link/http/checkFetcher.js +1 -1
  348. package/link/http/createHttpLink.js +1 -1
  349. package/link/http/parseAndCheckHttpResponse.js +1 -1
  350. package/link/http/serializeFetchParameter.js +1 -1
  351. package/link/persisted-queries/index.js +3 -3
  352. package/link/persisted-queries/index.js.map +1 -1
  353. package/link/remove-typename/removeTypenameFromVariables.js.map +1 -1
  354. package/link/retry/index.d.ts +1 -1
  355. package/link/retry/index.js +1 -1
  356. package/link/retry/index.js.map +1 -1
  357. package/link/utils/validateOperation.js +1 -1
  358. package/masking/maskDefinition.js +2 -2
  359. package/masking/maskFragment.d.ts +1 -1
  360. package/masking/maskFragment.js +2 -2
  361. package/masking/maskFragment.js.map +1 -1
  362. package/masking/maskOperation.d.ts +1 -1
  363. package/masking/maskOperation.js +1 -1
  364. package/masking/maskOperation.js.map +1 -1
  365. package/masking/utils.js +1 -1
  366. package/package.json +20 -40
  367. package/react/context/ApolloConsumer.d.ts +7 -4
  368. package/react/context/ApolloConsumer.js +1 -1
  369. package/react/context/ApolloConsumer.js.map +1 -1
  370. package/react/context/ApolloContext.d.ts +1 -1
  371. package/react/context/ApolloContext.js +1 -1
  372. package/react/context/ApolloContext.js.map +1 -1
  373. package/react/context/ApolloProvider.d.ts +7 -5
  374. package/react/context/ApolloProvider.js +1 -1
  375. package/react/context/ApolloProvider.js.map +1 -1
  376. package/react/hooks/internal/wrapHook.d.ts +3 -3
  377. package/react/hooks/internal/wrapHook.js.map +1 -1
  378. package/react/hooks/useApolloClient.d.ts +1 -1
  379. package/react/hooks/useApolloClient.js +2 -2
  380. package/react/hooks/useApolloClient.js.map +1 -1
  381. package/react/hooks/useBackgroundQuery.d.ts +2 -2
  382. package/react/hooks/useBackgroundQuery.js.map +1 -1
  383. package/react/hooks/useFragment.d.ts +1 -1
  384. package/react/hooks/useFragment.js.map +1 -1
  385. package/react/hooks/useLazyQuery.d.ts +2 -2
  386. package/react/hooks/useLazyQuery.js +3 -3
  387. package/react/hooks/useLazyQuery.js.map +1 -1
  388. package/react/hooks/useLoadableQuery.d.ts +2 -2
  389. package/react/hooks/useLoadableQuery.js +2 -2
  390. package/react/hooks/useLoadableQuery.js.map +1 -1
  391. package/react/hooks/useMutation.d.ts +1 -2
  392. package/react/hooks/useMutation.js +0 -2
  393. package/react/hooks/useMutation.js.map +1 -1
  394. package/react/hooks/useQuery.d.ts +2 -3
  395. package/react/hooks/useQuery.js +2 -4
  396. package/react/hooks/useQuery.js.map +1 -1
  397. package/react/hooks/useQueryRefHandlers.d.ts +2 -2
  398. package/react/hooks/useQueryRefHandlers.js.map +1 -1
  399. package/react/hooks/useReactiveVar.d.ts +1 -1
  400. package/react/hooks/useReactiveVar.js.map +1 -1
  401. package/react/hooks/useReadQuery.d.ts +1 -1
  402. package/react/hooks/useReadQuery.js.map +1 -1
  403. package/react/hooks/useSubscription.d.ts +1 -1
  404. package/react/hooks/useSubscription.js +1 -3
  405. package/react/hooks/useSubscription.js.map +1 -1
  406. package/react/hooks/useSuspenseFragment.d.ts +1 -1
  407. package/react/hooks/useSuspenseFragment.js.map +1 -1
  408. package/react/hooks/useSuspenseQuery.d.ts +3 -3
  409. package/react/hooks/useSuspenseQuery.js +4 -6
  410. package/react/hooks/useSuspenseQuery.js.map +1 -1
  411. package/react/hooks/useSyncExternalStore.js +1 -1
  412. package/react/index.d.ts +21 -7
  413. package/react/index.js +17 -3
  414. package/react/index.js.map +1 -1
  415. package/react/index.react-server.d.ts +0 -1
  416. package/react/index.react-server.js +0 -1
  417. package/react/index.react-server.js.map +1 -1
  418. package/react/internal/cache/FragmentReference.d.ts +1 -1
  419. package/react/internal/cache/FragmentReference.js.map +1 -1
  420. package/react/internal/cache/QueryReference.d.ts +1 -1
  421. package/react/internal/cache/QueryReference.js +1 -1
  422. package/react/internal/cache/QueryReference.js.map +1 -1
  423. package/react/internal/cache/SuspenseCache.d.ts +1 -1
  424. package/react/internal/cache/SuspenseCache.js.map +1 -1
  425. package/react/internal/cache/getSuspenseCache.d.ts +2 -2
  426. package/react/internal/cache/getSuspenseCache.js.map +1 -1
  427. package/react/internal/types.d.ts +1 -1
  428. package/react/query-preloader/createQueryPreloader.d.ts +1 -1
  429. package/react/query-preloader/createQueryPreloader.js.map +1 -1
  430. package/react/ssr/prerenderStatic.d.ts +1 -1
  431. package/react/ssr/prerenderStatic.js +3 -3
  432. package/react/ssr/prerenderStatic.js.map +1 -1
  433. package/react/ssr/useSSRQuery.js.map +1 -1
  434. package/react/types/deprecated.d.ts +12 -2
  435. package/testing/core/index.d.ts +3 -3
  436. package/testing/core/index.js +2 -2
  437. package/testing/core/index.js.map +1 -1
  438. package/testing/core/mocking/mockClient.d.ts +1 -1
  439. package/testing/core/mocking/mockClient.js +2 -3
  440. package/testing/core/mocking/mockClient.js.map +1 -1
  441. package/testing/core/mocking/mockLink.d.ts +26 -7
  442. package/testing/core/mocking/mockLink.js +117 -113
  443. package/testing/core/mocking/mockLink.js.map +1 -1
  444. package/testing/experimental/createSchemaFetch.js +2 -2
  445. package/testing/experimental/createSchemaFetch.js.map +1 -1
  446. package/testing/experimental/createTestSchema.d.ts +1 -1
  447. package/testing/experimental/createTestSchema.js.map +1 -1
  448. package/testing/index.d.ts +2 -1
  449. package/testing/index.js +1 -1
  450. package/testing/index.js.map +1 -1
  451. package/testing/internal/disposables/spyOnConsole.d.ts +0 -1
  452. package/testing/internal/disposables/spyOnConsole.js +0 -1
  453. package/testing/internal/disposables/spyOnConsole.js.map +1 -1
  454. package/testing/internal/incremental.d.ts +1 -1
  455. package/testing/internal/incremental.js.map +1 -1
  456. package/testing/internal/index.d.ts +3 -3
  457. package/testing/internal/index.js +2 -2
  458. package/testing/internal/index.js.map +1 -1
  459. package/testing/internal/renderHelpers.d.ts +1 -1
  460. package/testing/internal/renderHelpers.js.map +1 -1
  461. package/testing/internal/scenarios/index.d.ts +6 -8
  462. package/testing/internal/scenarios/index.js +4 -2
  463. package/testing/internal/scenarios/index.js.map +1 -1
  464. package/testing/matchers/index.js +4 -22
  465. package/testing/matchers/index.js.map +1 -1
  466. package/testing/matchers/toComplete.js.map +1 -1
  467. package/testing/matchers/toEmitAnything.js.map +1 -1
  468. package/testing/matchers/toEmitError.js.map +1 -1
  469. package/testing/matchers/toEmitNext.js.map +1 -1
  470. package/testing/matchers/{toEmitValueStrict.d.ts → toEmitTypedValue.d.ts} +2 -2
  471. package/testing/matchers/{toEmitStrictTyped.js → toEmitTypedValue.js} +3 -3
  472. package/testing/matchers/toEmitTypedValue.js.map +1 -0
  473. package/testing/matchers/toHaveSuspenseCacheEntryUsing.d.ts +1 -1
  474. package/testing/matchers/toHaveSuspenseCacheEntryUsing.js +1 -1
  475. package/testing/matchers/toHaveSuspenseCacheEntryUsing.js.map +1 -1
  476. package/testing/matchers/toMatchDocument.d.ts +1 -1
  477. package/testing/matchers/toMatchDocument.js.map +1 -1
  478. package/testing/matchers/toStrictEqualTyped.d.ts +3 -0
  479. package/testing/matchers/{toEqualStrictTyped.js → toStrictEqualTyped.js} +3 -3
  480. package/testing/matchers/{toEqualStrictTyped.js.map → toStrictEqualTyped.js.map} +1 -1
  481. package/testing/matchers/utils/getSerializableProperties.js +1 -1
  482. package/testing/matchers/utils/getSerializableProperties.js.map +1 -1
  483. package/testing/react/MockedProvider.d.ts +5 -3
  484. package/testing/react/MockedProvider.js +8 -4
  485. package/testing/react/MockedProvider.js.map +1 -1
  486. package/utilities/caching/sizes.d.ts +2 -20
  487. package/utilities/caching/sizes.js +2 -2
  488. package/utilities/caching/sizes.js.map +1 -1
  489. package/utilities/common/mergeOptions.d.ts +1 -1
  490. package/utilities/common/mergeOptions.js.map +1 -1
  491. package/utilities/graphql/getFromAST.d.ts +2 -2
  492. package/utilities/graphql/getFromAST.js +15 -6
  493. package/utilities/graphql/getFromAST.js.map +1 -1
  494. package/utilities/graphql/operations.d.ts +1 -1
  495. package/utilities/graphql/operations.js.map +1 -1
  496. package/utilities/graphql/storeUtils.js +1 -1
  497. package/utilities/graphql/transform.js +2 -2
  498. package/utilities/index.d.ts +15 -14
  499. package/utilities/index.js +12 -12
  500. package/utilities/index.js.map +1 -1
  501. package/utilities/internal/getMemoryInternals.d.ts +0 -1
  502. package/utilities/internal/getMemoryInternals.js +0 -2
  503. package/utilities/internal/getMemoryInternals.js.map +1 -1
  504. package/utilities/internal/index.production.js +1 -0
  505. package/utilities/internal/index.production.js.map +1 -1
  506. package/utilities/internal/toQueryResult.d.ts +1 -1
  507. package/utilities/internal/toQueryResult.js.map +1 -1
  508. package/utilities/invariant/index.development.js +1 -0
  509. package/utilities/invariant/index.development.js.map +1 -1
  510. package/utilities/subscriptions/relay/index.d.ts +1 -1
  511. package/utilities/subscriptions/relay/index.js +1 -1
  512. package/utilities/subscriptions/relay/index.js.map +1 -1
  513. package/version.d.ts +1 -1
  514. package/version.js +1 -1
  515. package/version.js.map +1 -1
  516. package/__cjs/index.cjs +0 -8
  517. package/__cjs/index.cjs.map +0 -1
  518. package/__cjs/index.d.cts +0 -3
  519. package/__cjs/react/context/index.cjs +0 -10
  520. package/__cjs/react/context/index.cjs.map +0 -1
  521. package/__cjs/react/context/index.d.cts +0 -7
  522. package/__cjs/react/hooks/index.cjs +0 -32
  523. package/__cjs/react/hooks/index.cjs.map +0 -1
  524. package/__cjs/react/hooks/index.d.cts +0 -16
  525. package/__cjs/react/parser/index.cjs +0 -115
  526. package/__cjs/react/parser/index.cjs.map +0 -1
  527. package/__cjs/react/parser/index.d.cts +0 -18
  528. package/__cjs/testing/matchers/toEmitApolloQueryResult.cjs +0 -40
  529. package/__cjs/testing/matchers/toEmitApolloQueryResult.cjs.map +0 -1
  530. package/__cjs/testing/matchers/toEmitApolloQueryResult.d.cts +0 -8
  531. package/__cjs/testing/matchers/toEmitFetchResult.cjs +0 -40
  532. package/__cjs/testing/matchers/toEmitFetchResult.cjs.map +0 -1
  533. package/__cjs/testing/matchers/toEmitFetchResult.d.cts +0 -8
  534. package/__cjs/testing/matchers/toEmitMatchedValue.cjs +0 -40
  535. package/__cjs/testing/matchers/toEmitMatchedValue.cjs.map +0 -1
  536. package/__cjs/testing/matchers/toEmitMatchedValue.d.cts +0 -7
  537. package/__cjs/testing/matchers/toEmitStrictTyped.cjs.map +0 -1
  538. package/__cjs/testing/matchers/toEmitStrictTyped.d.cts +0 -7
  539. package/__cjs/testing/matchers/toEmitValue.cjs +0 -41
  540. package/__cjs/testing/matchers/toEmitValue.cjs.map +0 -1
  541. package/__cjs/testing/matchers/toEmitValue.d.cts +0 -4
  542. package/__cjs/testing/matchers/toEmitValueStrict.cjs +0 -46
  543. package/__cjs/testing/matchers/toEmitValueStrict.cjs.map +0 -1
  544. package/__cjs/testing/matchers/toEqualApolloQueryResult.cjs +0 -24
  545. package/__cjs/testing/matchers/toEqualApolloQueryResult.cjs.map +0 -1
  546. package/__cjs/testing/matchers/toEqualApolloQueryResult.d.cts +0 -6
  547. package/__cjs/testing/matchers/toEqualFetchResult.cjs +0 -24
  548. package/__cjs/testing/matchers/toEqualFetchResult.cjs.map +0 -1
  549. package/__cjs/testing/matchers/toEqualFetchResult.d.cts +0 -4
  550. package/__cjs/testing/matchers/toEqualLazyQueryResult.cjs +0 -40
  551. package/__cjs/testing/matchers/toEqualLazyQueryResult.cjs.map +0 -1
  552. package/__cjs/testing/matchers/toEqualLazyQueryResult.d.cts +0 -10
  553. package/__cjs/testing/matchers/toEqualQueryResult.cjs +0 -39
  554. package/__cjs/testing/matchers/toEqualQueryResult.cjs.map +0 -1
  555. package/__cjs/testing/matchers/toEqualQueryResult.d.cts +0 -9
  556. package/__cjs/testing/matchers/toEqualStrictTyped.d.cts +0 -3
  557. package/index.d.ts +0 -3
  558. package/index.js +0 -3
  559. package/index.js.map +0 -1
  560. package/legacyEntryPoints/react/context/context.cjs +0 -1
  561. package/legacyEntryPoints/react/context/context.d.cts +0 -1
  562. package/legacyEntryPoints/react/context/index.d.ts +0 -1
  563. package/legacyEntryPoints/react/context/index.js +0 -1
  564. package/legacyEntryPoints/react/hooks/hooks.cjs +0 -1
  565. package/legacyEntryPoints/react/hooks/hooks.d.cts +0 -1
  566. package/legacyEntryPoints/react/hooks/index.d.ts +0 -1
  567. package/legacyEntryPoints/react/hooks/index.js +0 -1
  568. package/legacyEntryPoints/react/parser/index.d.ts +0 -1
  569. package/legacyEntryPoints/react/parser/index.js +0 -1
  570. package/legacyEntryPoints/react/parser/parser.cjs +0 -1
  571. package/legacyEntryPoints/react/parser/parser.d.cts +0 -1
  572. package/react/context/index.d.ts +0 -7
  573. package/react/context/index.js +0 -4
  574. package/react/context/index.js.map +0 -1
  575. package/react/hooks/index.d.ts +0 -16
  576. package/react/hooks/index.js +0 -15
  577. package/react/hooks/index.js.map +0 -1
  578. package/react/parser/index.d.ts +0 -18
  579. package/react/parser/index.js +0 -109
  580. package/react/parser/index.js.map +0 -1
  581. package/testing/matchers/toEmitApolloQueryResult.d.ts +0 -8
  582. package/testing/matchers/toEmitApolloQueryResult.js +0 -36
  583. package/testing/matchers/toEmitApolloQueryResult.js.map +0 -1
  584. package/testing/matchers/toEmitFetchResult.d.ts +0 -8
  585. package/testing/matchers/toEmitFetchResult.js +0 -36
  586. package/testing/matchers/toEmitFetchResult.js.map +0 -1
  587. package/testing/matchers/toEmitMatchedValue.d.ts +0 -7
  588. package/testing/matchers/toEmitMatchedValue.js +0 -36
  589. package/testing/matchers/toEmitMatchedValue.js.map +0 -1
  590. package/testing/matchers/toEmitStrictTyped.d.ts +0 -7
  591. package/testing/matchers/toEmitStrictTyped.js.map +0 -1
  592. package/testing/matchers/toEmitValue.d.ts +0 -4
  593. package/testing/matchers/toEmitValue.js +0 -37
  594. package/testing/matchers/toEmitValue.js.map +0 -1
  595. package/testing/matchers/toEmitValueStrict.js +0 -42
  596. package/testing/matchers/toEmitValueStrict.js.map +0 -1
  597. package/testing/matchers/toEqualApolloQueryResult.d.ts +0 -6
  598. package/testing/matchers/toEqualApolloQueryResult.js +0 -20
  599. package/testing/matchers/toEqualApolloQueryResult.js.map +0 -1
  600. package/testing/matchers/toEqualFetchResult.d.ts +0 -4
  601. package/testing/matchers/toEqualFetchResult.js +0 -20
  602. package/testing/matchers/toEqualFetchResult.js.map +0 -1
  603. package/testing/matchers/toEqualLazyQueryResult.d.ts +0 -10
  604. package/testing/matchers/toEqualLazyQueryResult.js +0 -36
  605. package/testing/matchers/toEqualLazyQueryResult.js.map +0 -1
  606. package/testing/matchers/toEqualQueryResult.d.ts +0 -9
  607. package/testing/matchers/toEqualQueryResult.js +0 -35
  608. package/testing/matchers/toEqualQueryResult.js.map +0 -1
  609. package/testing/matchers/toEqualStrictTyped.d.ts +0 -3
@@ -1,20 +1,25 @@
1
1
  import { equal } from "@wry/equality";
2
- import { Observable } from "rxjs";
2
+ import { Observable, throwError } from "rxjs";
3
3
  import { ApolloLink } from "@apollo/client/link/core";
4
- import { addTypenameToDocument, checkDocument, cloneDeep, getDefaultValues, getOperationDefinition, makeUniqueId, print, removeClientSetsFromDocument, removeDirectivesFromDocument, } from "@apollo/client/utilities";
4
+ import { addTypenameToDocument, checkDocument, cloneDeep, getDefaultValues, getOperationDefinition, isDocumentNode, makeUniqueId, print, removeClientSetsFromDocument, removeDirectivesFromDocument, } from "@apollo/client/utilities";
5
5
  import { invariant } from "@apollo/client/utilities/invariant";
6
- function requestToKey(request) {
7
- const queryString = request.query && print(addTypenameToDocument(request.query));
8
- const requestKey = { query: queryString };
9
- return JSON.stringify(requestKey);
6
+ export function realisticDelay({ min = 20, max = 50, } = {}) {
7
+ invariant(max > min, 24);
8
+ return () => Math.floor(Math.random() * (max - min) + min);
10
9
  }
11
10
  export class MockLink extends ApolloLink {
12
11
  operation;
13
12
  showWarnings = true;
13
+ defaultDelay;
14
14
  mockedResponsesByKey = {};
15
+ static defaultOptions = {
16
+ delay: realisticDelay(),
17
+ };
15
18
  constructor(mockedResponses, options = {}) {
16
19
  super();
20
+ const defaultOptions = options.defaultOptions ?? MockLink.defaultOptions;
17
21
  this.showWarnings = options.showWarnings ?? true;
22
+ this.defaultDelay = defaultOptions?.delay ?? realisticDelay();
18
23
  if (mockedResponses) {
19
24
  mockedResponses.forEach((mockedResponse) => {
20
25
  this.addMockedResponse(mockedResponse);
@@ -22,139 +27,135 @@ export class MockLink extends ApolloLink {
22
27
  }
23
28
  }
24
29
  addMockedResponse(mockedResponse) {
25
- const normalizedMockedResponse = this.normalizeMockedResponse(mockedResponse);
26
- const key = requestToKey(normalizedMockedResponse.request);
27
- let mockedResponses = this.mockedResponsesByKey[key];
28
- if (!mockedResponses) {
29
- mockedResponses = [];
30
- this.mockedResponsesByKey[key] = mockedResponses;
31
- }
32
- mockedResponses.push(normalizedMockedResponse);
30
+ validateMockedResponse(mockedResponse);
31
+ const normalized = this.normalizeMockedResponse(mockedResponse);
32
+ this.getMockedResponses(normalized.request).push(normalized);
33
33
  }
34
34
  request(operation) {
35
35
  this.operation = operation;
36
- const key = requestToKey(operation);
37
36
  const unmatchedVars = [];
38
- const requestVariables = operation.variables || {};
39
- const mockedResponses = this.mockedResponsesByKey[key];
40
- const responseIndex = mockedResponses ?
41
- mockedResponses.findIndex((res, index) => {
42
- const mockedResponseVars = res.request.variables || {};
43
- if (equal(requestVariables, mockedResponseVars)) {
44
- return true;
37
+ const mocks = this.getMockedResponses(operation);
38
+ const index = mocks.findIndex((mock) => {
39
+ const { variables } = mock.request;
40
+ if (typeof variables === "function") {
41
+ const matched = variables(operation.variables);
42
+ if (!matched) {
43
+ unmatchedVars.push(`<function ${variables.name}>`);
45
44
  }
46
- if (res.variableMatcher && res.variableMatcher(operation.variables)) {
47
- return true;
48
- }
49
- unmatchedVars.push(mockedResponseVars);
50
- return false;
51
- })
52
- : -1;
53
- const response = responseIndex >= 0 ? mockedResponses[responseIndex] : void 0;
54
- // There have been platform- and engine-dependent differences with
55
- // setInterval(fn, Infinity), so we pass 0 instead (but detect
56
- // Infinity where we call observer.error or observer.next to pend
57
- // indefinitely in those cases.)
58
- const delay = response?.delay === Infinity ? 0 : response?.delay ?? 0;
59
- let configError;
60
- if (!response) {
61
- configError = new Error(`No more mocked responses for the query: ${print(operation.query)}
62
- Expected variables: ${stringifyForDebugging(operation.variables)}
63
- ${unmatchedVars.length > 0 ?
64
- `
65
- Failed to match ${unmatchedVars.length} mock${unmatchedVars.length === 1 ? "" : "s"} for this query. The mocked response had the following variables:
66
- ${unmatchedVars.map((d) => ` ${stringifyForDebugging(d)}`).join("\n")}
67
- `
68
- : ""}`);
45
+ return matched;
46
+ }
47
+ const withDefaults = mock.variablesWithDefaults;
48
+ if (equal(withDefaults, operation.variables)) {
49
+ return true;
50
+ }
51
+ unmatchedVars.push(
52
+ // Include default variables from the query in unmatched variables
53
+ // output
54
+ Object.keys(withDefaults).length > 0 ?
55
+ withDefaults
56
+ : variables || "<undefined>");
57
+ return false;
58
+ });
59
+ const matched = index >= 0 ? mocks[index] : void 0;
60
+ if (!matched) {
61
+ const message = getErrorMessage(operation, unmatchedVars);
69
62
  if (this.showWarnings) {
70
- console.warn(configError.message +
63
+ console.warn(message +
71
64
  "\nThis typically indicates a configuration error in your mocks " +
72
65
  "setup, usually due to a typo or mismatched variable.");
73
66
  }
67
+ return throwError(() => new Error(message));
68
+ }
69
+ if (matched.maxUsageCount > 1) {
70
+ matched.maxUsageCount--;
74
71
  }
75
72
  else {
76
- if (response.maxUsageCount && response.maxUsageCount > 1) {
77
- response.maxUsageCount--;
78
- }
79
- else {
80
- mockedResponses.splice(responseIndex, 1);
81
- }
82
- const { newData } = response;
83
- if (newData) {
84
- response.result = newData(operation.variables);
85
- mockedResponses.push(response);
86
- }
87
- if (!response.result && !response.error && response.delay !== Infinity) {
88
- configError = new Error(`Mocked response should contain either \`result\`, \`error\` or a \`delay\` of \`Infinity\`: ${key}`);
89
- }
73
+ mocks.splice(index, 1);
74
+ }
75
+ const delay = typeof matched.delay === "function" ?
76
+ matched.delay(operation)
77
+ : matched.delay;
78
+ if (!matched.result && !matched.error && delay !== Infinity) {
79
+ return throwError(() => new Error(`Mocked response should contain either \`result\`, \`error\` or a \`delay\` of \`Infinity\`:\n${stringifyMockedResponse(matched.original)}`));
80
+ }
81
+ if (matched.delay === Infinity) {
82
+ return new Observable();
90
83
  }
91
84
  return new Observable((observer) => {
92
85
  const timer = setTimeout(() => {
93
- if (configError) {
94
- try {
95
- // The onError function can return false to indicate that
96
- // configError need not be passed to observer.error. For
97
- // example, the default implementation of onError calls
98
- // observer.error(configError) and then returns false to
99
- // prevent this extra (harmless) observer.error call.
100
- if (this.onError(configError, observer) !== false) {
101
- throw configError;
102
- }
103
- }
104
- catch (error) {
105
- observer.error(error);
106
- }
86
+ if (matched.error) {
87
+ return observer.error(matched.error);
107
88
  }
108
- else if (response && response.delay !== Infinity) {
109
- if (response.error) {
110
- observer.error(response.error);
111
- }
112
- else {
113
- if (response.result) {
114
- observer.next(typeof response.result === "function" ?
115
- response.result(operation.variables)
116
- : response.result);
117
- }
118
- observer.complete();
119
- }
89
+ if (matched.result) {
90
+ observer.next(typeof matched.result === "function" ?
91
+ matched.result(operation.variables)
92
+ : matched.result);
120
93
  }
94
+ observer.complete();
121
95
  }, delay);
122
96
  return () => {
123
97
  clearTimeout(timer);
124
98
  };
125
99
  });
126
100
  }
127
- normalizeMockedResponse(mockedResponse) {
128
- const newMockedResponse = cloneDeep(mockedResponse);
129
- const queryWithoutClientOnlyDirectives = removeDirectivesFromDocument([{ name: "connection" }, { name: "nonreactive" }, { name: "unmask" }], checkDocument(newMockedResponse.request.query));
130
- invariant(queryWithoutClientOnlyDirectives, 23);
131
- newMockedResponse.request.query = queryWithoutClientOnlyDirectives;
132
- const query = removeClientSetsFromDocument(newMockedResponse.request.query);
133
- if (query) {
134
- newMockedResponse.request.query = query;
101
+ getMockedResponses(request) {
102
+ const key = JSON.stringify({
103
+ query: print(addTypenameToDocument(request.query)),
104
+ });
105
+ let mockedResponses = this.mockedResponsesByKey[key];
106
+ if (!mockedResponses) {
107
+ mockedResponses = this.mockedResponsesByKey[key] = [];
135
108
  }
136
- mockedResponse.maxUsageCount = mockedResponse.maxUsageCount ?? 1;
137
- invariant(mockedResponse.maxUsageCount > 0, 24, mockedResponse.maxUsageCount);
138
- this.normalizeVariableMatching(newMockedResponse);
139
- return newMockedResponse;
109
+ return mockedResponses;
110
+ }
111
+ normalizeMockedResponse(mockedResponse) {
112
+ const { request } = mockedResponse;
113
+ const response = cloneDeep(mockedResponse);
114
+ response.original = mockedResponse;
115
+ response.request.query = getServerQuery(request.query);
116
+ response.maxUsageCount ??= 1;
117
+ response.variablesWithDefaults = {
118
+ ...getDefaultValues(getOperationDefinition(request.query)),
119
+ ...request.variables,
120
+ };
121
+ response.delay ??= this.defaultDelay;
122
+ return response;
140
123
  }
141
- normalizeVariableMatching(mockedResponse) {
142
- const request = mockedResponse.request;
143
- if (mockedResponse.variableMatcher && request.variables) {
144
- throw new Error("Mocked response should contain either variableMatcher or request.variables");
124
+ }
125
+ function getErrorMessage(operation, unmatchedVars) {
126
+ return `No more mocked responses for the query:
127
+ ${print(operation.query)}
128
+
129
+ Request variables: ${stringifyForDebugging(operation.variables)}
130
+ ${unmatchedVars.length > 0 ?
131
+ `
132
+ Failed to match variables against ${unmatchedVars.length} mock${unmatchedVars.length === 1 ? "" : "s"} for this query. The available mocks had the following variables:
133
+ ${unmatchedVars.map((d) => ` ${stringifyForDebugging(d)}`).join("\n")}
134
+ `
135
+ : ""}`;
136
+ }
137
+ function getServerQuery(query) {
138
+ const queryWithoutClientOnlyDirectives = removeDirectivesFromDocument([{ name: "connection" }, { name: "nonreactive" }, { name: "unmask" }], query);
139
+ invariant(queryWithoutClientOnlyDirectives, 25);
140
+ const serverQuery = removeClientSetsFromDocument(queryWithoutClientOnlyDirectives);
141
+ invariant(serverQuery, 26);
142
+ return serverQuery;
143
+ }
144
+ function validateMockedResponse(mock) {
145
+ checkDocument(mock.request.query);
146
+ invariant((mock.maxUsageCount ?? 1) > 0, 27, mock.maxUsageCount);
147
+ }
148
+ /** @internal */
149
+ export function stringifyMockedResponse(mockedResponse) {
150
+ return JSON.stringify(mockedResponse, (_, value) => {
151
+ if (isDocumentNode(value)) {
152
+ return print(value);
145
153
  }
146
- if (!mockedResponse.variableMatcher) {
147
- request.variables = {
148
- ...getDefaultValues(getOperationDefinition(request.query)),
149
- ...request.variables,
150
- };
151
- mockedResponse.variableMatcher = (vars) => {
152
- const requestVariables = vars || {};
153
- const mockedResponseVariables = request.variables || {};
154
- return equal(requestVariables, mockedResponseVariables);
155
- };
154
+ if (typeof value === "function") {
155
+ return "<function>";
156
156
  }
157
- }
157
+ return value;
158
+ }, 2);
158
159
  }
159
160
  // Pass in multiple mocked responses, so that you can test flows that end up
160
161
  // making multiple queries to the server.
@@ -166,6 +167,9 @@ export function mockSingleLink(...mockedResponses) {
166
167
  // future. This is not added to the primary stringifyForDisplay helper since it
167
168
  // is used for the cache and other purposes. We need this for debuggging only.
168
169
  function stringifyForDebugging(value, space = 0) {
170
+ if (typeof value === "string") {
171
+ return value;
172
+ }
169
173
  const undefId = makeUniqueId("undefined");
170
174
  const nanId = makeUniqueId("NaN");
171
175
  return JSON.stringify(value, (_, value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"mockLink.js","sources":["../../../../src/testing/core/mocking/mockLink.ts"],"sourcesContent":["import { equal } from \"@wry/equality\";\nimport { Observable } from \"rxjs\";\n\nimport type {\n FetchResult,\n GraphQLRequest,\n Operation,\n} from \"@apollo/client/link/core\";\nimport { ApolloLink } from \"@apollo/client/link/core\";\nimport type { Unmasked } from \"@apollo/client/masking\";\nimport {\n addTypenameToDocument,\n checkDocument,\n cloneDeep,\n getDefaultValues,\n getOperationDefinition,\n makeUniqueId,\n print,\n removeClientSetsFromDocument,\n removeDirectivesFromDocument,\n} from \"@apollo/client/utilities\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\n/** @internal */\ntype CovariantUnaryFunction<out Arg, out Ret> = { fn(arg: Arg): Ret }[\"fn\"];\n\nexport type ResultFunction<T, V = Record<string, any>> = CovariantUnaryFunction<\n V,\n T\n>;\n\ntype VariableMatcher<V = Record<string, any>> = CovariantUnaryFunction<\n V,\n boolean\n>;\n\nexport interface MockedResponse<\n // @ts-ignore\n out TData = Record<string, any>,\n out TVariables = Record<string, any>,\n> {\n request: GraphQLRequest<TVariables>;\n maxUsageCount?: number;\n result?:\n | FetchResult<Unmasked<TData>>\n | ResultFunction<FetchResult<Unmasked<TData>>, TVariables>;\n error?: Error;\n delay?: number;\n variableMatcher?: VariableMatcher<TVariables>;\n newData?: ResultFunction<FetchResult<Unmasked<TData>>, TVariables>;\n}\n\nexport interface MockLinkOptions {\n showWarnings?: boolean;\n}\n\nfunction requestToKey(request: GraphQLRequest): string {\n const queryString =\n request.query && print(addTypenameToDocument(request.query));\n const requestKey = { query: queryString };\n return JSON.stringify(requestKey);\n}\n\nexport class MockLink extends ApolloLink {\n public operation!: Operation;\n public showWarnings: boolean = true;\n private mockedResponsesByKey: { [key: string]: MockedResponse[] } = {};\n\n constructor(\n mockedResponses: ReadonlyArray<MockedResponse<any, any>>,\n options: MockLinkOptions = {}\n ) {\n super();\n this.showWarnings = options.showWarnings ?? true;\n\n if (mockedResponses) {\n mockedResponses.forEach((mockedResponse) => {\n this.addMockedResponse(mockedResponse);\n });\n }\n }\n\n public addMockedResponse(mockedResponse: MockedResponse) {\n const normalizedMockedResponse =\n this.normalizeMockedResponse(mockedResponse);\n const key = requestToKey(normalizedMockedResponse.request);\n let mockedResponses = this.mockedResponsesByKey[key];\n if (!mockedResponses) {\n mockedResponses = [];\n this.mockedResponsesByKey[key] = mockedResponses;\n }\n mockedResponses.push(normalizedMockedResponse);\n }\n\n public request(operation: Operation): Observable<FetchResult> | null {\n this.operation = operation;\n const key = requestToKey(operation);\n const unmatchedVars: Array<Record<string, any>> = [];\n const requestVariables = operation.variables || {};\n const mockedResponses = this.mockedResponsesByKey[key];\n const responseIndex =\n mockedResponses ?\n mockedResponses.findIndex((res, index) => {\n const mockedResponseVars = res.request.variables || {};\n if (equal(requestVariables, mockedResponseVars)) {\n return true;\n }\n if (res.variableMatcher && res.variableMatcher(operation.variables)) {\n return true;\n }\n unmatchedVars.push(mockedResponseVars);\n return false;\n })\n : -1;\n\n const response =\n responseIndex >= 0 ? mockedResponses[responseIndex] : void 0;\n\n // There have been platform- and engine-dependent differences with\n // setInterval(fn, Infinity), so we pass 0 instead (but detect\n // Infinity where we call observer.error or observer.next to pend\n // indefinitely in those cases.)\n const delay = response?.delay === Infinity ? 0 : response?.delay ?? 0;\n\n let configError: Error;\n\n if (!response) {\n configError = new Error(\n `No more mocked responses for the query: ${print(operation.query)}\nExpected variables: ${stringifyForDebugging(operation.variables)}\n${\n unmatchedVars.length > 0 ?\n `\nFailed to match ${unmatchedVars.length} mock${\n unmatchedVars.length === 1 ? \"\" : \"s\"\n } for this query. The mocked response had the following variables:\n${unmatchedVars.map((d) => ` ${stringifyForDebugging(d)}`).join(\"\\n\")}\n`\n : \"\"\n}`\n );\n\n if (this.showWarnings) {\n console.warn(\n configError.message +\n \"\\nThis typically indicates a configuration error in your mocks \" +\n \"setup, usually due to a typo or mismatched variable.\"\n );\n }\n } else {\n if (response.maxUsageCount && response.maxUsageCount > 1) {\n response.maxUsageCount--;\n } else {\n mockedResponses.splice(responseIndex, 1);\n }\n const { newData } = response;\n if (newData) {\n response.result = newData(operation.variables);\n mockedResponses.push(response);\n }\n\n if (!response.result && !response.error && response.delay !== Infinity) {\n configError = new Error(\n `Mocked response should contain either \\`result\\`, \\`error\\` or a \\`delay\\` of \\`Infinity\\`: ${key}`\n );\n }\n }\n\n return new Observable((observer) => {\n const timer = setTimeout(() => {\n if (configError) {\n try {\n // The onError function can return false to indicate that\n // configError need not be passed to observer.error. For\n // example, the default implementation of onError calls\n // observer.error(configError) and then returns false to\n // prevent this extra (harmless) observer.error call.\n if (this.onError(configError, observer) !== false) {\n throw configError;\n }\n } catch (error) {\n observer.error(error);\n }\n } else if (response && response.delay !== Infinity) {\n if (response.error) {\n observer.error(response.error);\n } else {\n if (response.result) {\n observer.next(\n typeof response.result === \"function\" ?\n response.result(operation.variables)\n : response.result\n );\n }\n observer.complete();\n }\n }\n }, delay);\n\n return () => {\n clearTimeout(timer);\n };\n });\n }\n\n private normalizeMockedResponse(\n mockedResponse: MockedResponse\n ): MockedResponse {\n const newMockedResponse = cloneDeep(mockedResponse);\n const queryWithoutClientOnlyDirectives = removeDirectivesFromDocument(\n [{ name: \"connection\" }, { name: \"nonreactive\" }, { name: \"unmask\" }],\n checkDocument(newMockedResponse.request.query)\n );\n invariant(queryWithoutClientOnlyDirectives, \"query is required\");\n newMockedResponse.request.query = queryWithoutClientOnlyDirectives!;\n const query = removeClientSetsFromDocument(newMockedResponse.request.query);\n if (query) {\n newMockedResponse.request.query = query;\n }\n\n mockedResponse.maxUsageCount = mockedResponse.maxUsageCount ?? 1;\n invariant(\n mockedResponse.maxUsageCount > 0,\n `Mock response maxUsageCount must be greater than 0, %s given`,\n mockedResponse.maxUsageCount\n );\n\n this.normalizeVariableMatching(newMockedResponse);\n return newMockedResponse;\n }\n\n private normalizeVariableMatching(mockedResponse: MockedResponse) {\n const request = mockedResponse.request;\n if (mockedResponse.variableMatcher && request.variables) {\n throw new Error(\n \"Mocked response should contain either variableMatcher or request.variables\"\n );\n }\n\n if (!mockedResponse.variableMatcher) {\n request.variables = {\n ...getDefaultValues(getOperationDefinition(request.query)),\n ...request.variables,\n };\n mockedResponse.variableMatcher = (vars) => {\n const requestVariables = vars || {};\n const mockedResponseVariables = request.variables || {};\n return equal(requestVariables, mockedResponseVariables);\n };\n }\n }\n}\n\nexport interface MockApolloLink extends ApolloLink {\n operation?: Operation;\n}\n\n// Pass in multiple mocked responses, so that you can test flows that end up\n// making multiple queries to the server.\nexport function mockSingleLink(\n ...mockedResponses: Array<MockedResponse<any, any>>\n): MockApolloLink {\n return new MockLink(mockedResponses);\n}\n\n// This is similiar to the stringifyForDisplay utility we ship, but includes\n// support for NaN in addition to undefined. More values may be handled in the\n// future. This is not added to the primary stringifyForDisplay helper since it\n// is used for the cache and other purposes. We need this for debuggging only.\nfunction stringifyForDebugging(value: any, space = 0): string {\n const undefId = makeUniqueId(\"undefined\");\n const nanId = makeUniqueId(\"NaN\");\n\n return JSON.stringify(\n value,\n (_, value) => {\n if (value === void 0) {\n return undefId;\n }\n\n if (Number.isNaN(value)) {\n return nanId;\n }\n\n return value;\n },\n space\n )\n .replace(new RegExp(JSON.stringify(undefId), \"g\"), \"<undefined>\")\n .replace(new RegExp(JSON.stringify(nanId), \"g\"), \"NaN\");\n}\n"],"names":[],"mappings":"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A,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AACA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+B,CAA/B,CAAA,CAAA,CAAA,CAAA,EAA2C,CAA3C,CAAA,CAAA,CAAA,EAAA,EAAmD,CAAnD,EAAA;IACE,CAAF,CAAA,CAAA,CAAA,EAAQ,CAAR,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAkB,CAAlB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAC,CAA/B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0C,CAAC;IACzC,CAAF,CAAA,CAAA,CAAA,EAAQ,CAAR,CAAA,CAAA,CAAA,EAAA,EAAgB,CAAhB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA4B,CAAC,CAA7B,CAAA,CAAA,CAAA,CAAkC,CAAC;IAEjC,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAa,CAAC,CAAd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CACnB,CADJ,CAAA,CAAA,CAAA,CACS,EACL,CAAC,CAAC,EAAE,CAFR,CAAA,CAAA,CAAA,CAEa,EAAE,CAFf,EAAA;QAGM,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAoB,CAApB,CAAA,CAAA,EAAyB,CAAC,EAAE;YACpB,CAAR,CAAA,CAAA,CAAA,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsB;QAChB;QAEA,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAC,CAAjB,CAAA,CAAA,CAAA,CAAsB,CAAC,CAAvB,CAAA,CAAA,CAAA,CAA4B,CAAC,EAAE;YACvB,CAAR,CAAA,CAAA,CAAA,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAoB;QACd;QAEA,CAAN,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAkB;IACd,CAAC,EACD,CADJ,CAAA,CAAA,CAAA,CACS;QAET,CAAK,CAAL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAC,CAAxB,CAAA,CAAA,CAA4B,CAAC,CAA7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsC,CAAC,CAAvC,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8C,CAAC,EAAE,CAAjD,CAAA,CAAoD,CAAC,EAAE,CAAvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAoE;QACpE,CAAK,CAAL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAb,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAC,CAAxB,CAAA,CAAA,CAA4B,CAAC,CAA7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAsC,CAAC,CAAvC,CAAA,CAAA,CAAA,CAA4C,CAAC,EAAE,CAA/C,CAAA,CAAkD,CAAC,EAAE,CAArD,CAAA,CAAA,CAAA,CAA0D,CAAC;AAC3D;"}
1
+ {"version":3,"file":"mockLink.js","sources":["../../../../src/testing/core/mocking/mockLink.ts"],"sourcesContent":["import { equal } from \"@wry/equality\";\nimport type { DocumentNode } from \"graphql\";\nimport { Observable, throwError } from \"rxjs\";\n\nimport type { FetchResult, Operation } from \"@apollo/client/link/core\";\nimport { ApolloLink } from \"@apollo/client/link/core\";\nimport type { Unmasked } from \"@apollo/client/masking\";\nimport {\n addTypenameToDocument,\n checkDocument,\n cloneDeep,\n getDefaultValues,\n getOperationDefinition,\n isDocumentNode,\n makeUniqueId,\n print,\n removeClientSetsFromDocument,\n removeDirectivesFromDocument,\n} from \"@apollo/client/utilities\";\nimport { invariant } from \"@apollo/client/utilities/invariant\";\n\n/** @internal */\ntype CovariantUnaryFunction<out Arg, out Ret> = { fn(arg: Arg): Ret }[\"fn\"];\n\nexport type ResultFunction<T, V = Record<string, any>> = CovariantUnaryFunction<\n V,\n T\n>;\n\ntype VariableMatcher<V = Record<string, any>> = CovariantUnaryFunction<\n V,\n boolean\n>;\n\nexport interface MockedRequest<TVariables = Record<string, any>> {\n query: DocumentNode;\n variables?: TVariables | VariableMatcher<TVariables>;\n}\n\nexport interface MockedResponse<\n // @ts-ignore\n out TData = Record<string, any>,\n out TVariables = Record<string, any>,\n> {\n request: MockedRequest<TVariables>;\n maxUsageCount?: number;\n result?:\n | FetchResult<Unmasked<TData>>\n | ResultFunction<FetchResult<Unmasked<TData>>, TVariables>;\n error?: Error;\n delay?: number | MockLink.DelayFunction;\n}\n\ninterface NormalizedMockedResponse {\n original: MockedResponse;\n request: MockedRequest;\n variablesWithDefaults: Record<string, any>;\n maxUsageCount: number;\n result?: FetchResult | ResultFunction<FetchResult, any>;\n error?: Error;\n delay: number | MockLink.DelayFunction;\n}\n\ntype UnmatchedVariables = Array<\n Record<string, any> | \"<undefined>\" | `<function ${string}>`\n>;\n\nexport interface MockLinkOptions {\n showWarnings?: boolean;\n defaultOptions?: MockLink.DefaultOptions;\n}\n\nexport declare namespace MockLink {\n export type DelayFunction = (operation: Operation) => number;\n export type Delay = number | DelayFunction;\n export interface DefaultOptions {\n delay?: MockLink.Delay;\n }\n}\n\nexport function realisticDelay({\n min = 20,\n max = 50,\n}: { min?: number; max?: number } = {}): MockLink.DelayFunction {\n invariant(max > min, \"realisticDelay: `min` must be less than `max`\");\n\n return () => Math.floor(Math.random() * (max - min) + min);\n}\n\nexport class MockLink extends ApolloLink {\n public operation!: Operation;\n public showWarnings: boolean = true;\n\n private defaultDelay: MockLink.Delay;\n private mockedResponsesByKey: { [key: string]: NormalizedMockedResponse[] } =\n {};\n\n public static defaultOptions: MockLink.DefaultOptions = {\n delay: realisticDelay(),\n };\n\n constructor(\n mockedResponses: ReadonlyArray<\n MockedResponse<Record<string, any>, Record<string, any>>\n >,\n options: MockLinkOptions = {}\n ) {\n super();\n const defaultOptions = options.defaultOptions ?? MockLink.defaultOptions;\n\n this.showWarnings = options.showWarnings ?? true;\n this.defaultDelay = defaultOptions?.delay ?? realisticDelay();\n\n if (mockedResponses) {\n mockedResponses.forEach((mockedResponse) => {\n this.addMockedResponse(mockedResponse);\n });\n }\n }\n\n public addMockedResponse(mockedResponse: MockedResponse) {\n validateMockedResponse(mockedResponse);\n\n const normalized = this.normalizeMockedResponse(mockedResponse);\n this.getMockedResponses(normalized.request).push(normalized);\n }\n\n public request(operation: Operation): Observable<FetchResult> | null {\n this.operation = operation;\n const unmatchedVars: UnmatchedVariables = [];\n const mocks = this.getMockedResponses(operation);\n\n const index = mocks.findIndex((mock) => {\n const { variables } = mock.request;\n\n if (typeof variables === \"function\") {\n const matched = variables(operation.variables);\n\n if (!matched) {\n unmatchedVars.push(`<function ${variables.name}>`);\n }\n\n return matched;\n }\n\n const withDefaults = mock.variablesWithDefaults;\n\n if (equal(withDefaults, operation.variables)) {\n return true;\n }\n\n unmatchedVars.push(\n // Include default variables from the query in unmatched variables\n // output\n Object.keys(withDefaults).length > 0 ?\n withDefaults\n : variables || \"<undefined>\"\n );\n return false;\n });\n\n const matched = index >= 0 ? mocks[index] : void 0;\n\n if (!matched) {\n const message = getErrorMessage(operation, unmatchedVars);\n\n if (this.showWarnings) {\n console.warn(\n message +\n \"\\nThis typically indicates a configuration error in your mocks \" +\n \"setup, usually due to a typo or mismatched variable.\"\n );\n }\n\n return throwError(() => new Error(message));\n }\n\n if (matched.maxUsageCount > 1) {\n matched.maxUsageCount--;\n } else {\n mocks.splice(index, 1);\n }\n\n const delay =\n typeof matched.delay === \"function\" ?\n matched.delay(operation)\n : matched.delay;\n\n if (!matched.result && !matched.error && delay !== Infinity) {\n return throwError(\n () =>\n new Error(\n `Mocked response should contain either \\`result\\`, \\`error\\` or a \\`delay\\` of \\`Infinity\\`:\\n${stringifyMockedResponse(\n matched.original\n )}`\n )\n );\n }\n\n if (matched.delay === Infinity) {\n return new Observable();\n }\n\n return new Observable((observer) => {\n const timer = setTimeout(() => {\n if (matched.error) {\n return observer.error(matched.error);\n }\n\n if (matched.result) {\n observer.next(\n typeof matched.result === \"function\" ?\n matched.result(operation.variables)\n : matched.result\n );\n }\n observer.complete();\n }, delay);\n\n return () => {\n clearTimeout(timer);\n };\n });\n }\n\n private getMockedResponses(request: MockedRequest) {\n const key = JSON.stringify({\n query: print(addTypenameToDocument(request.query)),\n });\n\n let mockedResponses = this.mockedResponsesByKey[key];\n\n if (!mockedResponses) {\n mockedResponses = this.mockedResponsesByKey[key] = [];\n }\n\n return mockedResponses;\n }\n\n private normalizeMockedResponse(\n mockedResponse: MockedResponse\n ): NormalizedMockedResponse {\n const { request } = mockedResponse;\n const response = cloneDeep(mockedResponse) as NormalizedMockedResponse;\n\n response.original = mockedResponse;\n response.request.query = getServerQuery(request.query);\n response.maxUsageCount ??= 1;\n response.variablesWithDefaults = {\n ...getDefaultValues(getOperationDefinition(request.query)),\n ...request.variables,\n };\n response.delay ??= this.defaultDelay;\n\n return response;\n }\n}\n\nfunction getErrorMessage(\n operation: Operation,\n unmatchedVars: UnmatchedVariables\n) {\n return `No more mocked responses for the query:\n${print(operation.query)}\n\nRequest variables: ${stringifyForDebugging(operation.variables)}\n${\n unmatchedVars.length > 0 ?\n `\nFailed to match variables against ${unmatchedVars.length} mock${\n unmatchedVars.length === 1 ? \"\" : \"s\"\n } for this query. The available mocks had the following variables:\n${unmatchedVars.map((d) => ` ${stringifyForDebugging(d)}`).join(\"\\n\")}\n`\n : \"\"\n}`;\n}\n\nfunction getServerQuery(query: DocumentNode) {\n const queryWithoutClientOnlyDirectives = removeDirectivesFromDocument(\n [{ name: \"connection\" }, { name: \"nonreactive\" }, { name: \"unmask\" }],\n query\n );\n\n invariant(queryWithoutClientOnlyDirectives, \"query is required\");\n\n const serverQuery = removeClientSetsFromDocument(\n queryWithoutClientOnlyDirectives\n );\n\n invariant(\n serverQuery,\n \"Cannot mock a client-only query. Mocked responses should contain at least one non-client field.\"\n );\n\n return serverQuery;\n}\n\nfunction validateMockedResponse(mock: MockedResponse) {\n checkDocument(mock.request.query);\n\n invariant(\n (mock.maxUsageCount ?? 1) > 0,\n \"Mocked response `maxUsageCount` must be greater than 0. Given %s\",\n mock.maxUsageCount\n );\n}\n\n/** @internal */\nexport function stringifyMockedResponse(mockedResponse: MockedResponse) {\n return JSON.stringify(\n mockedResponse,\n (_, value) => {\n if (isDocumentNode(value)) {\n return print(value);\n }\n\n if (typeof value === \"function\") {\n return \"<function>\";\n }\n\n return value;\n },\n 2\n );\n}\n\nexport interface MockApolloLink extends ApolloLink {\n operation?: Operation;\n}\n\n// Pass in multiple mocked responses, so that you can test flows that end up\n// making multiple queries to the server.\nexport function mockSingleLink(\n ...mockedResponses: Array<MockedResponse<any, any>>\n): MockApolloLink {\n return new MockLink(mockedResponses);\n}\n\n// This is similiar to the stringifyForDisplay utility we ship, but includes\n// support for NaN in addition to undefined. More values may be handled in the\n// future. This is not added to the primary stringifyForDisplay helper since it\n// is used for the cache and other purposes. We need this for debuggging only.\nfunction stringifyForDebugging(value: any, space = 0): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n const undefId = makeUniqueId(\"undefined\");\n const nanId = makeUniqueId(\"NaN\");\n\n return JSON.stringify(\n value,\n (_, value) => {\n if (value === void 0) {\n return undefId;\n }\n\n if (Number.isNaN(value)) {\n return nanId;\n }\n\n return value;\n },\n space\n )\n .replace(new RegExp(JSON.stringify(undefId), \"g\"), \"<undefined>\")\n .replace(new RegExp(JSON.stringify(nanId), \"g\"), \"NaN\");\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { execute, GraphQLError, validate } from "graphql";
2
- import { gql } from "@apollo/client/core";
2
+ import { gql } from "@apollo/client";
3
3
  import { wait } from "@apollo/client/testing";
4
- import { withCleanup } from "../internal/index.js";
4
+ import { withCleanup } from "@apollo/client/testing/internal";
5
5
  /**
6
6
  * A function that accepts a static `schema` and a `mockFetchOpts` object and
7
7
  * returns a disposable object with `mock` and `restore` functions.
@@ -1 +1 @@
1
- {"version":3,"file":"createSchemaFetch.js","sources":["../../../src/testing/experimental/createSchemaFetch.ts"],"sourcesContent":["import type { GraphQLFormattedError, GraphQLSchema } from \"graphql\";\nimport { execute, GraphQLError, validate } from \"graphql\";\n\nimport { gql } from \"@apollo/client/core\";\nimport { wait } from \"@apollo/client/testing\";\n\nimport { withCleanup } from \"../internal/index.js\";\n\n/**\n * A function that accepts a static `schema` and a `mockFetchOpts` object and\n * returns a disposable object with `mock` and `restore` functions.\n *\n * The `mock` function is a mock fetch function that is set on the global\n * `window` object. This function intercepts any fetch requests and\n * returns a response by executing the operation against the provided schema.\n *\n * The `restore` function is a cleanup function that will restore the previous\n * `fetch`. It is automatically called if the function's return value is\n * declared with `using`. If your environment does not support the language\n * feature `using`, you should manually invoke the `restore` function.\n *\n * @param schema - A `GraphQLSchema`.\n * @param mockFetchOpts - Configuration options.\n * @returns An object with both `mock` and `restore` functions.\n *\n * @example\n * ```js\n * using _fetch = createSchemaFetch(schema); // automatically restores fetch after exiting the block\n *\n * const { restore } = createSchemaFetch(schema);\n * restore(); // manually restore fetch if `using` is not supported\n * ```\n * @since 3.10.0\n * @alpha\n * @deprecated `createSchemaFetch` is deprecated and will be removed in 3.12.0.\n * Please migrate to [`@apollo/graphql-testing-library`](https://github.com/apollographql/graphql-testing-library).\n */\nconst createSchemaFetch = (\n schema: GraphQLSchema,\n mockFetchOpts: {\n validate?: boolean;\n delay?: { min: number; max: number };\n } = { validate: true }\n) => {\n const prevFetch = window.fetch;\n const delayMin = mockFetchOpts.delay?.min ?? 3;\n const delayMax = mockFetchOpts.delay?.max ?? delayMin + 2;\n\n if (delayMin > delayMax) {\n throw new Error(\n \"Please configure a minimum delay that is less than the maximum delay. The default minimum delay is 3ms.\"\n );\n }\n\n const mockFetch: (uri?: any, options?: any) => Promise<Response> = async (\n _uri,\n options\n ) => {\n if (delayMin > 0) {\n const randomDelay = Math.random() * (delayMax - delayMin) + delayMin;\n await wait(randomDelay);\n }\n\n const body = JSON.parse(options.body);\n const document = gql(body.query);\n\n if (mockFetchOpts.validate) {\n let validationErrors: readonly GraphQLFormattedError[] = [];\n\n try {\n validationErrors = validate(schema, document);\n } catch (e) {\n validationErrors = [\n e instanceof Error ?\n GraphQLError.prototype.toJSON.apply(e)\n : (e as any),\n ];\n }\n\n if (validationErrors?.length > 0) {\n return new Response(JSON.stringify({ errors: validationErrors }));\n }\n }\n\n const result = await execute({\n schema,\n document,\n variableValues: body.variables,\n operationName: body.operationName,\n });\n\n const stringifiedResult = JSON.stringify(result);\n\n return new Response(stringifiedResult);\n };\n\n function mockGlobal() {\n window.fetch = mockFetch;\n\n const restore = () => {\n if (window.fetch === mockFetch) {\n window.fetch = prevFetch;\n }\n };\n\n return withCleanup({ restore }, restore);\n }\n\n return Object.assign(mockFetch, {\n mockGlobal,\n // if https://github.com/rbuckton/proposal-using-enforcement lands\n // [Symbol.enter]: mockGlobal\n });\n};\n\nexport { createSchemaFetch };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createSchemaFetch.js","sources":["../../../src/testing/experimental/createSchemaFetch.ts"],"sourcesContent":["import type { GraphQLFormattedError, GraphQLSchema } from \"graphql\";\nimport { execute, GraphQLError, validate } from \"graphql\";\n\nimport { gql } from \"@apollo/client\";\nimport { wait } from \"@apollo/client/testing\";\nimport { withCleanup } from \"@apollo/client/testing/internal\";\n\n/**\n * A function that accepts a static `schema` and a `mockFetchOpts` object and\n * returns a disposable object with `mock` and `restore` functions.\n *\n * The `mock` function is a mock fetch function that is set on the global\n * `window` object. This function intercepts any fetch requests and\n * returns a response by executing the operation against the provided schema.\n *\n * The `restore` function is a cleanup function that will restore the previous\n * `fetch`. It is automatically called if the function's return value is\n * declared with `using`. If your environment does not support the language\n * feature `using`, you should manually invoke the `restore` function.\n *\n * @param schema - A `GraphQLSchema`.\n * @param mockFetchOpts - Configuration options.\n * @returns An object with both `mock` and `restore` functions.\n *\n * @example\n * ```js\n * using _fetch = createSchemaFetch(schema); // automatically restores fetch after exiting the block\n *\n * const { restore } = createSchemaFetch(schema);\n * restore(); // manually restore fetch if `using` is not supported\n * ```\n * @since 3.10.0\n * @alpha\n * @deprecated `createSchemaFetch` is deprecated and will be removed in 3.12.0.\n * Please migrate to [`@apollo/graphql-testing-library`](https://github.com/apollographql/graphql-testing-library).\n */\nconst createSchemaFetch = (\n schema: GraphQLSchema,\n mockFetchOpts: {\n validate?: boolean;\n delay?: { min: number; max: number };\n } = { validate: true }\n) => {\n const prevFetch = window.fetch;\n const delayMin = mockFetchOpts.delay?.min ?? 3;\n const delayMax = mockFetchOpts.delay?.max ?? delayMin + 2;\n\n if (delayMin > delayMax) {\n throw new Error(\n \"Please configure a minimum delay that is less than the maximum delay. The default minimum delay is 3ms.\"\n );\n }\n\n const mockFetch: (uri?: any, options?: any) => Promise<Response> = async (\n _uri,\n options\n ) => {\n if (delayMin > 0) {\n const randomDelay = Math.random() * (delayMax - delayMin) + delayMin;\n await wait(randomDelay);\n }\n\n const body = JSON.parse(options.body);\n const document = gql(body.query);\n\n if (mockFetchOpts.validate) {\n let validationErrors: readonly GraphQLFormattedError[] = [];\n\n try {\n validationErrors = validate(schema, document);\n } catch (e) {\n validationErrors = [\n e instanceof Error ?\n GraphQLError.prototype.toJSON.apply(e)\n : (e as any),\n ];\n }\n\n if (validationErrors?.length > 0) {\n return new Response(JSON.stringify({ errors: validationErrors }));\n }\n }\n\n const result = await execute({\n schema,\n document,\n variableValues: body.variables,\n operationName: body.operationName,\n });\n\n const stringifiedResult = JSON.stringify(result);\n\n return new Response(stringifiedResult);\n };\n\n function mockGlobal() {\n window.fetch = mockFetch;\n\n const restore = () => {\n if (window.fetch === mockFetch) {\n window.fetch = prevFetch;\n }\n };\n\n return withCleanup({ restore }, restore);\n }\n\n return Object.assign(mockFetch, {\n mockGlobal,\n // if https://github.com/rbuckton/proposal-using-enforcement lands\n // [Symbol.enter]: mockGlobal\n });\n};\n\nexport { createSchemaFetch };\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { GraphQLSchema } from "graphql";
2
- import type { Resolvers } from "@apollo/client/core";
2
+ import type { Resolvers } from "@apollo/client";
3
3
  type ProxiedSchema = GraphQLSchema & TestSchemaFns;
4
4
  interface TestSchemaFns {
5
5
  add: (addOptions: {
@@ -1 +1 @@
1
- {"version":3,"file":"createTestSchema.js","sources":["../../../src/testing/experimental/createTestSchema.ts"],"sourcesContent":["import { mergeResolvers } from \"@graphql-tools/merge\";\nimport { addResolversToSchema } from \"@graphql-tools/schema\";\nimport type { GraphQLSchema } from \"graphql\";\n\nimport type { Resolvers } from \"@apollo/client/core\";\n\nimport { createMockSchema } from \"./graphql-tools/utils.js\";\n\ntype ProxiedSchema = GraphQLSchema & TestSchemaFns;\n\ninterface TestSchemaFns {\n add: (addOptions: { resolvers: Resolvers }) => ProxiedSchema;\n fork: (forkOptions?: { resolvers?: Resolvers }) => ProxiedSchema;\n reset: () => void;\n}\n\ninterface TestSchemaOptions {\n resolvers: Resolvers;\n scalars?: { [key: string]: any };\n}\n\n/**\n * A function that creates a [Proxy object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy)\n * around a given `schema` with `resolvers`. This proxied schema can be used to\n * progressively layer resolvers on top of the original schema using the `add`\n * method. The `fork` method can be used to create a new proxied schema which\n * can be modified independently of the original schema. `reset` will restore\n * resolvers to the original proxied schema.\n *\n * @param schema - A `GraphQLSchema`.\n * @param options - An `options` object that accepts `scalars` and `resolvers` objects.\n * @returns A `ProxiedSchema` with `add`, `fork` and `reset` methods.\n *\n * @example\n * ```js\n *\n * const schema = createTestSchema(schemaWithTypeDefs, {\n * resolvers: {\n Query: {\n writer: () => ({\n name: \"Ada Lovelace\",\n }),\n }\n },\n scalars: {\n ID: () => \"1\",\n Int: () => 36,\n String: () => \"String\",\n Date: () => new Date(\"December 10, 1815 01:00:00\").toJSON().split(\"T\")[0],\n }\n });\n * ```\n * @since 3.9.0\n * @alpha\n * @deprecated `createTestSchema` is deprecated and will be removed in 3.12.0.\n * Please migrate to [`@apollo/graphql-testing-library`](https://github.com/apollographql/graphql-testing-library).\n */\nconst createTestSchema = (\n schemaWithTypeDefs: GraphQLSchema,\n options: TestSchemaOptions\n): ProxiedSchema => {\n let targetResolvers = { ...options.resolvers };\n let targetSchema = addResolversToSchema({\n schema: createMockSchema(schemaWithTypeDefs, options.scalars ?? {}),\n resolvers: targetResolvers,\n });\n\n const fns: TestSchemaFns = {\n add: ({ resolvers: newResolvers }) => {\n // @ts-ignore TODO(fixme): IResolvers type does not play well with our Resolvers\n targetResolvers = mergeResolvers([targetResolvers, newResolvers]);\n\n targetSchema = addResolversToSchema({\n schema: targetSchema,\n resolvers: targetResolvers,\n });\n\n return targetSchema as ProxiedSchema;\n },\n\n fork: ({ resolvers: newResolvers } = {}) => {\n return createTestSchema(targetSchema, {\n // @ts-ignore TODO(fixme): IResolvers type does not play well with our Resolvers\n resolvers:\n mergeResolvers([targetResolvers, newResolvers]) ?? targetResolvers,\n scalars: options.scalars,\n });\n },\n\n reset: () => {\n targetSchema = addResolversToSchema({\n schema: schemaWithTypeDefs,\n resolvers: options.resolvers,\n });\n },\n };\n\n const schema = new Proxy(targetSchema, {\n get(_target, p) {\n if (p in fns) {\n return Reflect.get(fns, p);\n }\n\n // An optimization that eliminates round-trips through the proxy\n // on class methods invoked via `this` on a base class instance wrapped by\n // the proxy.\n //\n // For example, consider the following class:\n //\n // class Base {\n // foo(){\n // this.bar()\n // }\n // bar(){\n // ...\n // }\n // }\n //\n // Calling `proxy.foo()` would call `foo` with `this` being the proxy.\n // This would result in calling `proxy.bar()` which would again invoke\n // the proxy to resolve `bar` and call that method.\n //\n // Instead, calls to `proxy.foo()` should result in a call to\n // `innerObject.foo()` with a `this` of `innerObject`, and that call\n // should directly call `innerObject.bar()`.\n\n const property = Reflect.get(targetSchema, p);\n if (typeof property === \"function\") {\n return property.bind(targetSchema);\n }\n return property;\n },\n });\n\n return schema as ProxiedSchema;\n};\n\nexport { createTestSchema };\n"],"names":[],"mappings":"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A;YACM,CAAN,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA;YACM,CAAN,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,IAAA;YACM,CAAN,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,MAAA,CAAA,CAAA;YACM,CAAN,IAAA;YACM,CAAN,EAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEM,CAAN,CAAA,CAAA,CAAA,EAAY,CAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAuB,CAAvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAC,CAA/B,CAAA,CAAkC,CAAC,CAAnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+C,EAAE,CAAC,CAAC;YAC7C,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAA8B,CAA9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC,EAAE;gBAClC,CAAR,CAAA,CAAA,CAAA,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAC,CAAxB,CAAA,CAAA,CAA4B,CAAC,CAA7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyC,CAAC;YACpC;YACA,CAAN,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB;QACjB,CAAC;IACL,CAAG,CAAC;IAEF,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAgC;AAChC,CAAC;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;"}
1
+ {"version":3,"file":"createTestSchema.js","sources":["../../../src/testing/experimental/createTestSchema.ts"],"sourcesContent":["import { mergeResolvers } from \"@graphql-tools/merge\";\nimport { addResolversToSchema } from \"@graphql-tools/schema\";\nimport type { GraphQLSchema } from \"graphql\";\n\nimport type { Resolvers } from \"@apollo/client\";\n\nimport { createMockSchema } from \"./graphql-tools/utils.js\";\n\ntype ProxiedSchema = GraphQLSchema & TestSchemaFns;\n\ninterface TestSchemaFns {\n add: (addOptions: { resolvers: Resolvers }) => ProxiedSchema;\n fork: (forkOptions?: { resolvers?: Resolvers }) => ProxiedSchema;\n reset: () => void;\n}\n\ninterface TestSchemaOptions {\n resolvers: Resolvers;\n scalars?: { [key: string]: any };\n}\n\n/**\n * A function that creates a [Proxy object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy)\n * around a given `schema` with `resolvers`. This proxied schema can be used to\n * progressively layer resolvers on top of the original schema using the `add`\n * method. The `fork` method can be used to create a new proxied schema which\n * can be modified independently of the original schema. `reset` will restore\n * resolvers to the original proxied schema.\n *\n * @param schema - A `GraphQLSchema`.\n * @param options - An `options` object that accepts `scalars` and `resolvers` objects.\n * @returns A `ProxiedSchema` with `add`, `fork` and `reset` methods.\n *\n * @example\n * ```js\n *\n * const schema = createTestSchema(schemaWithTypeDefs, {\n * resolvers: {\n Query: {\n writer: () => ({\n name: \"Ada Lovelace\",\n }),\n }\n },\n scalars: {\n ID: () => \"1\",\n Int: () => 36,\n String: () => \"String\",\n Date: () => new Date(\"December 10, 1815 01:00:00\").toJSON().split(\"T\")[0],\n }\n });\n * ```\n * @since 3.9.0\n * @alpha\n * @deprecated `createTestSchema` is deprecated and will be removed in 3.12.0.\n * Please migrate to [`@apollo/graphql-testing-library`](https://github.com/apollographql/graphql-testing-library).\n */\nconst createTestSchema = (\n schemaWithTypeDefs: GraphQLSchema,\n options: TestSchemaOptions\n): ProxiedSchema => {\n let targetResolvers = { ...options.resolvers };\n let targetSchema = addResolversToSchema({\n schema: createMockSchema(schemaWithTypeDefs, options.scalars ?? {}),\n resolvers: targetResolvers,\n });\n\n const fns: TestSchemaFns = {\n add: ({ resolvers: newResolvers }) => {\n // @ts-ignore TODO(fixme): IResolvers type does not play well with our Resolvers\n targetResolvers = mergeResolvers([targetResolvers, newResolvers]);\n\n targetSchema = addResolversToSchema({\n schema: targetSchema,\n resolvers: targetResolvers,\n });\n\n return targetSchema as ProxiedSchema;\n },\n\n fork: ({ resolvers: newResolvers } = {}) => {\n return createTestSchema(targetSchema, {\n // @ts-ignore TODO(fixme): IResolvers type does not play well with our Resolvers\n resolvers:\n mergeResolvers([targetResolvers, newResolvers]) ?? targetResolvers,\n scalars: options.scalars,\n });\n },\n\n reset: () => {\n targetSchema = addResolversToSchema({\n schema: schemaWithTypeDefs,\n resolvers: options.resolvers,\n });\n },\n };\n\n const schema = new Proxy(targetSchema, {\n get(_target, p) {\n if (p in fns) {\n return Reflect.get(fns, p);\n }\n\n // An optimization that eliminates round-trips through the proxy\n // on class methods invoked via `this` on a base class instance wrapped by\n // the proxy.\n //\n // For example, consider the following class:\n //\n // class Base {\n // foo(){\n // this.bar()\n // }\n // bar(){\n // ...\n // }\n // }\n //\n // Calling `proxy.foo()` would call `foo` with `this` being the proxy.\n // This would result in calling `proxy.bar()` which would again invoke\n // the proxy to resolve `bar` and call that method.\n //\n // Instead, calls to `proxy.foo()` should result in a call to\n // `innerObject.foo()` with a `this` of `innerObject`, and that call\n // should directly call `innerObject.bar()`.\n\n const property = Reflect.get(targetSchema, p);\n if (typeof property === \"function\") {\n return property.bind(targetSchema);\n }\n return property;\n },\n });\n\n return schema as ProxiedSchema;\n};\n\nexport { createTestSchema };\n"],"names":[],"mappings":"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A;YACM,CAAN,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA;YACM,CAAN,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,IAAA;YACM,CAAN,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,MAAA,CAAA,CAAA;YACM,CAAN,IAAA;YACM,CAAN,EAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACM,CAAN;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;YACM,CAAN,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YAEM,CAAN,CAAA,CAAA,CAAA,EAAY,CAAZ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAuB,CAAvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAA8B,CAAC,CAA/B,CAAA,CAAkC,CAAC,CAAnC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+C,EAAE,CAAC,CAAC;YAC7C,CAAN,EAAA,CAAU,CAAV,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAA8B,CAA9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAwC,EAAE;gBAClC,CAAR,CAAA,CAAA,CAAA,CAAA,EAAe,CAAf,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuB,CAAC,CAAxB,CAAA,CAAA,CAA4B,CAAC,CAA7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAyC,CAAC;YACpC;YACA,CAAN,CAAA,CAAA,CAAA,CAAA,EAAa,CAAb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqB;QACjB,CAAC;IACL,CAAG,CAAC;IAEF,CAAF,CAAA,CAAA,CAAA,CAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAgC;AAChC,CAAC;AAED,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;"}