@apollo/client 3.5.0-beta.9 → 3.5.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/README.md +10 -8
  2. package/apollo-client.cjs +875 -753
  3. package/apollo-client.cjs.map +1 -1
  4. package/apollo-client.min.cjs +1 -0
  5. package/cache/cache.cjs +715 -607
  6. package/cache/cache.cjs.map +1 -1
  7. package/cache/core/cache.d.ts +5 -5
  8. package/cache/core/cache.d.ts.map +1 -1
  9. package/cache/core/cache.js +24 -13
  10. package/cache/core/cache.js.map +1 -1
  11. package/cache/core/types/Cache.d.ts +13 -10
  12. package/cache/core/types/Cache.d.ts.map +1 -1
  13. package/cache/core/types/Cache.js.map +1 -1
  14. package/cache/core/types/DataProxy.js.map +1 -1
  15. package/cache/core/types/common.d.ts +8 -5
  16. package/cache/core/types/common.d.ts.map +1 -1
  17. package/cache/core/types/common.js +6 -11
  18. package/cache/core/types/common.js.map +1 -1
  19. package/cache/index.d.ts +4 -3
  20. package/cache/index.d.ts.map +1 -1
  21. package/cache/index.js +3 -4
  22. package/cache/index.js.map +1 -1
  23. package/cache/inmemory/entityStore.d.ts +1 -1
  24. package/cache/inmemory/entityStore.d.ts.map +1 -1
  25. package/cache/inmemory/entityStore.js +4 -4
  26. package/cache/inmemory/entityStore.js.map +1 -1
  27. package/cache/inmemory/helpers.d.ts +10 -1
  28. package/cache/inmemory/helpers.d.ts.map +1 -1
  29. package/cache/inmemory/helpers.js +31 -1
  30. package/cache/inmemory/helpers.js.map +1 -1
  31. package/cache/inmemory/inMemoryCache.d.ts +7 -13
  32. package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
  33. package/cache/inmemory/inMemoryCache.js +20 -19
  34. package/cache/inmemory/inMemoryCache.js.map +1 -1
  35. package/cache/inmemory/key-extractor.d.ts +9 -0
  36. package/cache/inmemory/key-extractor.d.ts.map +1 -0
  37. package/cache/inmemory/key-extractor.js +118 -0
  38. package/cache/inmemory/key-extractor.js.map +1 -0
  39. package/cache/inmemory/object-canon.d.ts +1 -0
  40. package/cache/inmemory/object-canon.d.ts.map +1 -1
  41. package/cache/inmemory/object-canon.js +1 -0
  42. package/cache/inmemory/object-canon.js.map +1 -1
  43. package/cache/inmemory/policies.d.ts +13 -10
  44. package/cache/inmemory/policies.d.ts.map +1 -1
  45. package/cache/inmemory/policies.js +48 -175
  46. package/cache/inmemory/policies.js.map +1 -1
  47. package/cache/inmemory/readFromStore.d.ts +3 -2
  48. package/cache/inmemory/readFromStore.d.ts.map +1 -1
  49. package/cache/inmemory/readFromStore.js +60 -45
  50. package/cache/inmemory/readFromStore.js.map +1 -1
  51. package/cache/inmemory/types.d.ts +8 -1
  52. package/cache/inmemory/types.d.ts.map +1 -1
  53. package/cache/inmemory/types.js.map +1 -1
  54. package/cache/inmemory/writeToStore.d.ts +8 -3
  55. package/cache/inmemory/writeToStore.d.ts.map +1 -1
  56. package/cache/inmemory/writeToStore.js +164 -93
  57. package/cache/inmemory/writeToStore.js.map +1 -1
  58. package/core/ApolloClient.d.ts.map +1 -1
  59. package/core/ApolloClient.js +9 -5
  60. package/core/ApolloClient.js.map +1 -1
  61. package/core/LocalState.d.ts.map +1 -1
  62. package/core/LocalState.js +2 -2
  63. package/core/LocalState.js.map +1 -1
  64. package/core/ObservableQuery.d.ts +2 -1
  65. package/core/ObservableQuery.d.ts.map +1 -1
  66. package/core/ObservableQuery.js +15 -9
  67. package/core/ObservableQuery.js.map +1 -1
  68. package/core/QueryInfo.d.ts.map +1 -1
  69. package/core/QueryInfo.js +2 -2
  70. package/core/QueryInfo.js.map +1 -1
  71. package/core/QueryManager.d.ts +2 -3
  72. package/core/QueryManager.d.ts.map +1 -1
  73. package/core/QueryManager.js +17 -19
  74. package/core/QueryManager.js.map +1 -1
  75. package/core/core.cjs +60 -53
  76. package/core/core.cjs.map +1 -1
  77. package/core/index.d.ts.map +1 -1
  78. package/core/index.js +1 -2
  79. package/core/index.js.map +1 -1
  80. package/core/watchQueryOptions.js.map +1 -1
  81. package/errors/errors.cjs +1 -1
  82. package/errors/errors.cjs.map +1 -1
  83. package/errors/index.d.ts +4 -1
  84. package/errors/index.d.ts.map +1 -1
  85. package/errors/index.js +1 -2
  86. package/errors/index.js.map +1 -1
  87. package/invariantErrorCodes.js +56 -69
  88. package/link/batch-http/batch-http.cjs +2 -2
  89. package/link/batch-http/batch-http.cjs.map +1 -1
  90. package/link/batch-http/batchHttpLink.d.ts.map +1 -1
  91. package/link/batch-http/batchHttpLink.js +3 -3
  92. package/link/batch-http/batchHttpLink.js.map +1 -1
  93. package/link/core/ApolloLink.js +2 -2
  94. package/link/core/ApolloLink.js.map +1 -1
  95. package/link/core/core.cjs +4 -6
  96. package/link/core/core.cjs.map +1 -1
  97. package/link/core/index.d.ts +1 -0
  98. package/link/core/index.d.ts.map +1 -1
  99. package/link/core/index.js +1 -2
  100. package/link/core/index.js.map +1 -1
  101. package/link/error/error.cjs +1 -1
  102. package/link/error/error.cjs.map +1 -1
  103. package/link/error/index.d.ts +5 -6
  104. package/link/error/index.d.ts.map +1 -1
  105. package/link/error/index.js +1 -1
  106. package/link/error/index.js.map +1 -1
  107. package/link/http/checkFetcher.js +2 -2
  108. package/link/http/checkFetcher.js.map +1 -1
  109. package/link/http/createHttpLink.d.ts +1 -0
  110. package/link/http/createHttpLink.d.ts.map +1 -1
  111. package/link/http/createHttpLink.js +4 -3
  112. package/link/http/createHttpLink.js.map +1 -1
  113. package/link/http/http.cjs +12 -12
  114. package/link/http/http.cjs.map +1 -1
  115. package/link/http/index.d.ts +2 -1
  116. package/link/http/index.d.ts.map +1 -1
  117. package/link/http/index.js +2 -3
  118. package/link/http/index.js.map +1 -1
  119. package/link/http/selectHttpOptionsAndBody.d.ts +7 -1
  120. package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
  121. package/link/http/selectHttpOptionsAndBody.js +6 -4
  122. package/link/http/selectHttpOptionsAndBody.js.map +1 -1
  123. package/link/http/serializeFetchParameter.d.ts +1 -1
  124. package/link/http/serializeFetchParameter.d.ts.map +1 -1
  125. package/link/http/serializeFetchParameter.js +2 -2
  126. package/link/http/serializeFetchParameter.js.map +1 -1
  127. package/link/persisted-queries/index.d.ts +1 -1
  128. package/link/persisted-queries/index.d.ts.map +1 -1
  129. package/link/persisted-queries/index.js +4 -6
  130. package/link/persisted-queries/index.js.map +1 -1
  131. package/link/persisted-queries/persisted-queries.cjs +9 -7
  132. package/link/persisted-queries/persisted-queries.cjs.map +1 -1
  133. package/link/utils/index.d.ts +1 -0
  134. package/link/utils/index.d.ts.map +1 -1
  135. package/link/utils/index.js +1 -2
  136. package/link/utils/index.js.map +1 -1
  137. package/link/utils/toPromise.d.ts.map +1 -1
  138. package/link/utils/toPromise.js +1 -1
  139. package/link/utils/toPromise.js.map +1 -1
  140. package/link/utils/utils.cjs +3 -5
  141. package/link/utils/utils.cjs.map +1 -1
  142. package/link/utils/validateOperation.d.ts.map +1 -1
  143. package/link/utils/validateOperation.js +2 -2
  144. package/link/utils/validateOperation.js.map +1 -1
  145. package/package.json +17 -18
  146. package/react/context/ApolloConsumer.d.ts.map +1 -1
  147. package/react/context/ApolloConsumer.js +2 -2
  148. package/react/context/ApolloConsumer.js.map +1 -1
  149. package/react/context/ApolloContext.d.ts.map +1 -1
  150. package/react/context/ApolloContext.js +11 -5
  151. package/react/context/ApolloContext.js.map +1 -1
  152. package/react/context/ApolloProvider.d.ts.map +1 -1
  153. package/react/context/ApolloProvider.js +2 -2
  154. package/react/context/ApolloProvider.js.map +1 -1
  155. package/react/context/context.cjs +16 -12
  156. package/react/context/context.cjs.map +1 -1
  157. package/react/context/index.d.ts +1 -0
  158. package/react/context/index.d.ts.map +1 -1
  159. package/react/context/index.js +1 -2
  160. package/react/context/index.js.map +1 -1
  161. package/react/hoc/hoc-utils.d.ts.map +1 -1
  162. package/react/hoc/hoc-utils.js +2 -2
  163. package/react/hoc/hoc-utils.js.map +1 -1
  164. package/react/hoc/hoc.cjs +13 -13
  165. package/react/hoc/hoc.cjs.map +1 -1
  166. package/react/hoc/index.d.ts +1 -0
  167. package/react/hoc/index.d.ts.map +1 -1
  168. package/react/hoc/index.js +1 -2
  169. package/react/hoc/index.js.map +1 -1
  170. package/react/hoc/subscription-hoc.d.ts.map +1 -1
  171. package/react/hoc/subscription-hoc.js +8 -5
  172. package/react/hoc/subscription-hoc.js.map +1 -1
  173. package/react/hoc/withApollo.d.ts.map +1 -1
  174. package/react/hoc/withApollo.js +2 -2
  175. package/react/hoc/withApollo.js.map +1 -1
  176. package/react/hooks/hooks.cjs +25 -10
  177. package/react/hooks/hooks.cjs.map +1 -1
  178. package/react/hooks/index.d.ts +1 -0
  179. package/react/hooks/index.d.ts.map +1 -1
  180. package/react/hooks/index.js +1 -2
  181. package/react/hooks/index.js.map +1 -1
  182. package/react/hooks/useApolloClient.js +2 -2
  183. package/react/hooks/useApolloClient.js.map +1 -1
  184. package/react/hooks/useLazyQuery.d.ts.map +1 -1
  185. package/react/hooks/useLazyQuery.js +19 -4
  186. package/react/hooks/useLazyQuery.js.map +1 -1
  187. package/react/hooks/useMutation.d.ts.map +1 -1
  188. package/react/hooks/useMutation.js +4 -1
  189. package/react/hooks/useMutation.js.map +1 -1
  190. package/react/hooks/useQuery.d.ts +1 -1
  191. package/react/hooks/useQuery.d.ts.map +1 -1
  192. package/react/hooks/useQuery.js +1 -1
  193. package/react/hooks/useQuery.js.map +1 -1
  194. package/react/hooks/useSubscription.d.ts +1 -0
  195. package/react/hooks/useSubscription.d.ts.map +1 -1
  196. package/react/hooks/useSubscription.js +1 -0
  197. package/react/hooks/useSubscription.js.map +1 -1
  198. package/react/index.d.ts +1 -0
  199. package/react/index.d.ts.map +1 -1
  200. package/react/index.js +1 -2
  201. package/react/index.js.map +1 -1
  202. package/react/parser/index.d.ts.map +1 -1
  203. package/react/parser/index.js +6 -8
  204. package/react/parser/index.js.map +1 -1
  205. package/react/parser/parser.cjs +12 -14
  206. package/react/parser/parser.cjs.map +1 -1
  207. package/react/react.cjs +2 -2
  208. package/react/react.cjs.map +1 -1
  209. package/react/types/types.d.ts +2 -1
  210. package/react/types/types.d.ts.map +1 -1
  211. package/react/types/types.js.map +1 -1
  212. package/testing/core/core.cjs +288 -0
  213. package/testing/core/core.cjs.map +1 -0
  214. package/{utilities/testing → testing/core}/index.d.ts +0 -1
  215. package/testing/core/index.d.ts.map +1 -0
  216. package/{utilities/testing → testing/core}/index.js +0 -1
  217. package/testing/core/index.js.map +1 -0
  218. package/{utilities/testing → testing/core}/itAsync.d.ts +0 -0
  219. package/testing/core/itAsync.d.ts.map +1 -0
  220. package/{utilities/testing → testing/core}/itAsync.js +0 -0
  221. package/testing/core/itAsync.js.map +1 -0
  222. package/{utilities/testing → testing/core}/mocking/mockClient.d.ts +0 -0
  223. package/testing/core/mocking/mockClient.d.ts.map +1 -0
  224. package/{utilities/testing → testing/core}/mocking/mockClient.js +0 -0
  225. package/testing/core/mocking/mockClient.js.map +1 -0
  226. package/{utilities/testing → testing/core}/mocking/mockFetch.d.ts +0 -0
  227. package/testing/core/mocking/mockFetch.d.ts.map +1 -0
  228. package/{utilities/testing → testing/core}/mocking/mockFetch.js +1 -1
  229. package/testing/core/mocking/mockFetch.js.map +1 -0
  230. package/{utilities/testing → testing/core}/mocking/mockLink.d.ts +0 -0
  231. package/testing/core/mocking/mockLink.d.ts.map +1 -0
  232. package/{utilities/testing → testing/core}/mocking/mockLink.js +3 -3
  233. package/testing/core/mocking/mockLink.js.map +1 -0
  234. package/{utilities/testing → testing/core}/mocking/mockQueryManager.d.ts +1 -1
  235. package/testing/core/mocking/mockQueryManager.d.ts.map +1 -0
  236. package/{utilities/testing → testing/core}/mocking/mockQueryManager.js +1 -1
  237. package/testing/core/mocking/mockQueryManager.js.map +1 -0
  238. package/{utilities/testing → testing/core}/mocking/mockSubscriptionLink.d.ts +0 -0
  239. package/testing/core/mocking/mockSubscriptionLink.d.ts.map +1 -0
  240. package/{utilities/testing → testing/core}/mocking/mockSubscriptionLink.js +1 -1
  241. package/testing/core/mocking/mockSubscriptionLink.js.map +1 -0
  242. package/{utilities/testing → testing/core}/mocking/mockWatchQuery.d.ts +1 -1
  243. package/testing/core/mocking/mockWatchQuery.d.ts.map +1 -0
  244. package/{utilities/testing → testing/core}/mocking/mockWatchQuery.js +1 -1
  245. package/testing/core/mocking/mockWatchQuery.js.map +1 -0
  246. package/{utilities/testing → testing/core}/observableToPromise.d.ts +2 -3
  247. package/testing/core/observableToPromise.d.ts.map +1 -0
  248. package/{utilities/testing → testing/core}/observableToPromise.js +1 -1
  249. package/testing/core/observableToPromise.js.map +1 -0
  250. package/testing/core/package.json +8 -0
  251. package/testing/core/subscribeAndCount.d.ts +4 -0
  252. package/testing/core/subscribeAndCount.d.ts.map +1 -0
  253. package/{utilities/testing → testing/core}/subscribeAndCount.js +1 -1
  254. package/testing/core/subscribeAndCount.js.map +1 -0
  255. package/{utilities/testing → testing/core}/withConsoleSpy.d.ts +0 -0
  256. package/testing/core/withConsoleSpy.d.ts.map +1 -0
  257. package/{utilities/testing → testing/core}/withConsoleSpy.js +0 -0
  258. package/testing/core/withConsoleSpy.js.map +1 -0
  259. package/{utilities/testing → testing/core}/wrap.d.ts +0 -0
  260. package/testing/core/wrap.d.ts.map +1 -0
  261. package/{utilities/testing → testing/core}/wrap.js +0 -0
  262. package/testing/core/wrap.js.map +1 -0
  263. package/testing/index.d.ts +3 -1
  264. package/testing/index.d.ts.map +1 -1
  265. package/testing/index.js +3 -3
  266. package/testing/index.js.map +1 -1
  267. package/{utilities/testing/mocking → testing/react}/MockedProvider.d.ts +5 -5
  268. package/testing/react/MockedProvider.d.ts.map +1 -0
  269. package/{utilities/testing/mocking → testing/react}/MockedProvider.js +4 -4
  270. package/testing/react/MockedProvider.js.map +1 -0
  271. package/testing/testing.cjs +6 -332
  272. package/testing/testing.cjs.map +1 -1
  273. package/utilities/common/canUse.d.ts +1 -0
  274. package/utilities/common/canUse.d.ts.map +1 -1
  275. package/utilities/common/canUse.js +2 -0
  276. package/utilities/common/canUse.js.map +1 -1
  277. package/utilities/common/maybeDeepFreeze.d.ts.map +1 -1
  278. package/utilities/common/maybeDeepFreeze.js +14 -3
  279. package/utilities/common/maybeDeepFreeze.js.map +1 -1
  280. package/utilities/common/mergeDeep.d.ts.map +1 -1
  281. package/utilities/common/mergeDeep.js +7 -2
  282. package/utilities/common/mergeDeep.js.map +1 -1
  283. package/utilities/globals/DEV.js +2 -2
  284. package/utilities/globals/DEV.js.map +1 -1
  285. package/utilities/globals/{graphql.d.ts → fix-graphql.d.ts} +1 -1
  286. package/utilities/globals/fix-graphql.d.ts.map +1 -0
  287. package/utilities/globals/fix-graphql.js +6 -0
  288. package/utilities/globals/fix-graphql.js.map +1 -0
  289. package/utilities/{common → globals}/global.d.ts +0 -0
  290. package/utilities/globals/global.d.ts.map +1 -0
  291. package/utilities/{common → globals}/global.js +0 -0
  292. package/utilities/globals/global.js.map +1 -0
  293. package/utilities/globals/globals.cjs +56 -0
  294. package/utilities/globals/globals.cjs.map +1 -0
  295. package/utilities/globals/index.d.ts +4 -2
  296. package/utilities/globals/index.d.ts.map +1 -1
  297. package/utilities/globals/index.js +7 -4
  298. package/utilities/globals/index.js.map +1 -1
  299. package/utilities/{common → globals}/maybe.d.ts +0 -0
  300. package/utilities/globals/maybe.d.ts.map +1 -0
  301. package/utilities/{common → globals}/maybe.js +0 -0
  302. package/utilities/globals/maybe.js.map +1 -0
  303. package/utilities/globals/package.json +8 -0
  304. package/utilities/graphql/directives.d.ts.map +1 -1
  305. package/utilities/graphql/directives.js +5 -5
  306. package/utilities/graphql/directives.js.map +1 -1
  307. package/utilities/graphql/fragments.d.ts.map +1 -1
  308. package/utilities/graphql/fragments.js +5 -5
  309. package/utilities/graphql/fragments.js.map +1 -1
  310. package/utilities/graphql/getFromAST.d.ts.map +1 -1
  311. package/utilities/graphql/getFromAST.js +9 -9
  312. package/utilities/graphql/getFromAST.js.map +1 -1
  313. package/utilities/graphql/storeUtils.d.ts.map +1 -1
  314. package/utilities/graphql/storeUtils.js +2 -2
  315. package/utilities/graphql/storeUtils.js.map +1 -1
  316. package/utilities/graphql/transform.d.ts.map +1 -1
  317. package/utilities/graphql/transform.js +2 -2
  318. package/utilities/graphql/transform.js.map +1 -1
  319. package/utilities/index.d.ts +1 -3
  320. package/utilities/index.d.ts.map +1 -1
  321. package/utilities/index.js +1 -4
  322. package/utilities/index.js.map +1 -1
  323. package/utilities/observables/subclassing.d.ts.map +1 -1
  324. package/utilities/observables/subclassing.js +2 -1
  325. package/utilities/observables/subclassing.js.map +1 -1
  326. package/utilities/package.json +1 -3
  327. package/utilities/policies/pagination.d.ts +1 -1
  328. package/utilities/policies/pagination.d.ts.map +1 -1
  329. package/utilities/policies/pagination.js +9 -4
  330. package/utilities/policies/pagination.js.map +1 -1
  331. package/utilities/utilities.cjs +64 -85
  332. package/utilities/utilities.cjs.map +1 -1
  333. package/version.js +1 -1
  334. package/utilities/common/global.d.ts.map +0 -1
  335. package/utilities/common/global.js.map +0 -1
  336. package/utilities/common/maybe.d.ts.map +0 -1
  337. package/utilities/common/maybe.js.map +0 -1
  338. package/utilities/globals/graphql.d.ts.map +0 -1
  339. package/utilities/globals/graphql.js +0 -7
  340. package/utilities/globals/graphql.js.map +0 -1
  341. package/utilities/testing/index.d.ts.map +0 -1
  342. package/utilities/testing/index.js.map +0 -1
  343. package/utilities/testing/itAsync.d.ts.map +0 -1
  344. package/utilities/testing/itAsync.js.map +0 -1
  345. package/utilities/testing/mocking/MockedProvider.d.ts.map +0 -1
  346. package/utilities/testing/mocking/MockedProvider.js.map +0 -1
  347. package/utilities/testing/mocking/mockClient.d.ts.map +0 -1
  348. package/utilities/testing/mocking/mockClient.js.map +0 -1
  349. package/utilities/testing/mocking/mockFetch.d.ts.map +0 -1
  350. package/utilities/testing/mocking/mockFetch.js.map +0 -1
  351. package/utilities/testing/mocking/mockLink.d.ts.map +0 -1
  352. package/utilities/testing/mocking/mockLink.js.map +0 -1
  353. package/utilities/testing/mocking/mockQueryManager.d.ts.map +0 -1
  354. package/utilities/testing/mocking/mockQueryManager.js.map +0 -1
  355. package/utilities/testing/mocking/mockSubscriptionLink.d.ts.map +0 -1
  356. package/utilities/testing/mocking/mockSubscriptionLink.js.map +0 -1
  357. package/utilities/testing/mocking/mockWatchQuery.d.ts.map +0 -1
  358. package/utilities/testing/mocking/mockWatchQuery.js.map +0 -1
  359. package/utilities/testing/observableToPromise.d.ts.map +0 -1
  360. package/utilities/testing/observableToPromise.js.map +0 -1
  361. package/utilities/testing/subscribeAndCount.d.ts +0 -5
  362. package/utilities/testing/subscribeAndCount.d.ts.map +0 -1
  363. package/utilities/testing/subscribeAndCount.js.map +0 -1
  364. package/utilities/testing/withConsoleSpy.d.ts.map +0 -1
  365. package/utilities/testing/withConsoleSpy.js.map +0 -1
  366. package/utilities/testing/wrap.d.ts.map +0 -1
  367. package/utilities/testing/wrap.js.map +0 -1
package/README.md CHANGED
@@ -22,17 +22,19 @@ Learn how to use Apollo Client with self-paced hands-on training on Odyssey, Apo
22
22
  ## Maintainers
23
23
 
24
24
  - [@benjamn](https://github.com/benjamn) (Apollo)
25
- - [@hwillson](https://github.com/hwillson) (Apollo)
26
- - [@jcreighton](https://github.com/jcreighton) (Apollo)
27
25
  - [@brainkim](https://github.com/brainkim) (Apollo)
26
+ - [@jcreighton](https://github.com/jcreighton) (Netflix)
27
+ - [@hwillson](https://github.com/hwillson) (Apollo)
28
28
 
29
29
  ## Who is Apollo?
30
30
 
31
- [Apollo Graph, Inc.](https://apollographql.com/) creates industry-leading tools for building applications with GraphQL:
31
+ [Apollo](https://apollographql.com/) builds open-source software and a graph platform to unify GraphQL across your apps and services. We help you ship faster with:
32
+
33
+ * [Apollo Studio](https://www.apollographql.com/studio/develop/) – A free, end-to-end platform for managing your GraphQL lifecycle. Track your GraphQL schemas in a hosted registry to create a source of truth for everything in your graph. Studio provides an IDE (Apollo Explorer) so you can explore data, collaborate on queries, observe usage, and safely make schema changes.
34
+ * [Apollo Federation](https://www.apollographql.com/apollo-federation) – The industry-standard open architecture for building a distributed graph. Use Apollo’s open-source gateway to compose a unified graph from multiple subgraphs, determine a query plan, and route requests across your services.
35
+ * [Apollo Client](https://www.apollographql.com/apollo-client/) – The most popular GraphQL client for the web. Apollo also builds and maintains [Apollo iOS](https://github.com/apollographql/apollo-ios) and [Apollo Android](https://github.com/apollographql/apollo-android).
36
+ * [Apollo Server](https://www.apollographql.com/docs/apollo-server/) – A production-ready JavaScript GraphQL server that connects to any microservice, API, or database. Compatible with all popular JavaScript frameworks and deployable in serverless environments.
32
37
 
33
- - [Apollo Client](https://www.apollographql.com/apollo-client/) The most popular GraphQL client for the web. Apollo also builds and maintains [Apollo iOS](https://github.com/apollographql/apollo-ios) and [Apollo Android](https://github.com/apollographql/apollo-android).
34
- - [Apollo Server](https://www.apollographql.com/docs/apollo-server/) – Build a production-ready JavaScript GraphQL server with a schema-first approach.
35
- - [Apollo Studio](https://www.apollographql.com/studio/develop/) – A turnkey portal for GraphQL developers, featuring a powerful GraphQL IDE (the [Apollo Explorer](https://www.apollographql.com/docs/studio/explorer/)), metrics reporting, schema search, and documentation.
36
- - [Apollo Federation](https://www.apollographql.com/apollo-federation) – Create and manage a single data graph composed of subgraphs that can be developed independently.
38
+ ## Learn how to build with Apollo
37
39
 
38
- We are fully committed to advancing the frontier of graph development with open-source libraries, hosted software tooling, developer extensions, and community contributions.
40
+ Check out the [Odyssey](https://odyssey.apollographql.com/) learning platform, the perfect place to start your GraphQL journey with videos and interactive code challenges. Join the [Apollo Community](https://community.apollographql.com/) to interact with and get technical help from the GraphQL community.