From 0de1fcb4f6bbc4c4b88bf5fa0f88011d597cf130 Mon Sep 17 00:00:00 2001 From: Daniel K Date: Sat, 16 Mar 2019 16:58:51 +0100 Subject: [PATCH 01/13] Create useApolloClient.ts --- src/useApolloClient.ts | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/useApolloClient.ts diff --git a/src/useApolloClient.ts b/src/useApolloClient.ts new file mode 100644 index 0000000000..ab87699a15 --- /dev/null +++ b/src/useApolloClient.ts @@ -0,0 +1,5 @@ +import { ApolloContext } from './ApolloContext' + +export function useApolloClient() { + return React.useContext(ApolloContext) +} From d15775911efe3f354c6ffcf4b85d630aa5065a71 Mon Sep 17 00:00:00 2001 From: Daniel K Date: Sat, 16 Mar 2019 17:01:32 +0100 Subject: [PATCH 02/13] Update index.ts --- src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.ts b/src/index.ts index feebc688d7..d5636f9680 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,6 +18,8 @@ export { withQuery } from './query-hoc'; export { withMutation } from './mutation-hoc'; export { withSubscription } from './subscription-hoc'; +export { useApolloClient } from './useApolloClient'; + export { default as withApollo } from './withApollo'; export * from './withApollo'; From e15436d2cf8201f7788042e8934b50c05280cdc1 Mon Sep 17 00:00:00 2001 From: Daniel K Date: Sat, 16 Mar 2019 17:05:01 +0100 Subject: [PATCH 03/13] Import react, duh --- src/useApolloClient.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/useApolloClient.ts b/src/useApolloClient.ts index ab87699a15..b951e5f1de 100644 --- a/src/useApolloClient.ts +++ b/src/useApolloClient.ts @@ -1,3 +1,4 @@ +import React from 'react' import { ApolloContext } from './ApolloContext' export function useApolloClient() { From 131e3a4256a40bfb692c832c1cb82a06a2f0c738 Mon Sep 17 00:00:00 2001 From: Daniel K Date: Sat, 16 Mar 2019 17:06:13 +0100 Subject: [PATCH 04/13] =?UTF-8?q?Add=20semi=20(=F0=9F=91=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/useApolloClient.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/useApolloClient.ts b/src/useApolloClient.ts index b951e5f1de..3e74892159 100644 --- a/src/useApolloClient.ts +++ b/src/useApolloClient.ts @@ -1,6 +1,6 @@ -import React from 'react' -import { ApolloContext } from './ApolloContext' +import React from 'react'; +import { ApolloContext } from './ApolloContext'; export function useApolloClient() { - return React.useContext(ApolloContext) + return React.useContext(ApolloContext); } From 0aa1427a844e914c035a4226d753699ffc8f3ab9 Mon Sep 17 00:00:00 2001 From: Daniel K Date: Sat, 16 Mar 2019 17:08:41 +0100 Subject: [PATCH 05/13] Throw on old React --- src/useApolloClient.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/useApolloClient.ts b/src/useApolloClient.ts index 3e74892159..95cd142322 100644 --- a/src/useApolloClient.ts +++ b/src/useApolloClient.ts @@ -2,5 +2,8 @@ import React from 'react'; import { ApolloContext } from './ApolloContext'; export function useApolloClient() { + if (!React.useContext) { + throw new Error('The useApolloClient needs React version 16.8 or higher'); + } return React.useContext(ApolloContext); } From f8fd0bd2df1d4c46b915fa58fd03040693857a7c Mon Sep 17 00:00:00 2001 From: Daniel K Date: Thu, 21 Mar 2019 15:57:54 +0100 Subject: [PATCH 06/13] Fix typecheck --- src/useApolloClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/useApolloClient.ts b/src/useApolloClient.ts index 95cd142322..3d86c8faf7 100644 --- a/src/useApolloClient.ts +++ b/src/useApolloClient.ts @@ -2,7 +2,7 @@ import React from 'react'; import { ApolloContext } from './ApolloContext'; export function useApolloClient() { - if (!React.useContext) { + if (!ApolloContext) { throw new Error('The useApolloClient needs React version 16.8 or higher'); } return React.useContext(ApolloContext); From 6121d01c10e524aa6f488e5545d351ade1101b55 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 22 Mar 2019 05:25:35 +0000 Subject: [PATCH 07/13] chore(deps): update dependency @types/enzyme to v3.9.1 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b16342d9f..d15a00f221 100644 --- a/package-lock.json +++ b/package-lock.json @@ -742,9 +742,9 @@ } }, "@types/enzyme": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.9.0.tgz", - "integrity": "sha512-o0C7ooyBtj9NKyMzn2BWN53W4J21KPhO+/v+qqQX28Pcz0Z1B3DjL9bq2ZR4TN70PVw8O7gkhuFtC7VN3tausg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.9.1.tgz", + "integrity": "sha512-CasnOP73BFE3/5JvGkod+oQtGOD1+CVWz9BV2iAqDFJ+sofL5gTiizSr8ZM3lpDY27ptC8yjAdrUCdv8diKKqw==", "dev": true, "requires": { "@types/cheerio": "*", diff --git a/package.json b/package.json index 389661807f..88a9f7d6a1 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ }, "sideEffects": false, "devDependencies": { - "@types/enzyme": "3.9.0", + "@types/enzyme": "3.9.1", "@types/enzyme-adapter-react-16": "1.0.5", "@types/graphql": "14.0.7", "@types/hoist-non-react-statics": "3.3.0", From bcacb0001cc61cfbd6749f4840848634e5f55f4d Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 23 Mar 2019 07:23:38 +0000 Subject: [PATCH 08/13] chore(deps): update dependency react-testing-library to v6.0.2 --- examples/components/package.json | 2 +- examples/mutation/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/components/package.json b/examples/components/package.json index 325b5a5ea8..61acb2dac4 100644 --- a/examples/components/package.json +++ b/examples/components/package.json @@ -17,7 +17,7 @@ "eject": "react-scripts eject" }, "devDependencies": { - "react-testing-library": "6.0.0" + "react-testing-library": "6.0.2" }, "browserslist": [ ">0.2%", diff --git a/examples/mutation/package.json b/examples/mutation/package.json index 5e261a133c..4980f1181d 100644 --- a/examples/mutation/package.json +++ b/examples/mutation/package.json @@ -17,7 +17,7 @@ "eject": "react-scripts eject" }, "devDependencies": { - "react-testing-library": "6.0.0" + "react-testing-library": "6.0.2" }, "browserslist": [ ">0.2%", From 6f19af672e0dbad1643fdd2a32ca921abe30db7a Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 23 Mar 2019 08:24:31 +0000 Subject: [PATCH 09/13] chore(deps): update dependency rollup to v1.7.0 --- examples/rollup/package-lock.json | 12 ++++++------ examples/rollup/package.json | 2 +- package-lock.json | 6 +++--- package.json | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/rollup/package-lock.json b/examples/rollup/package-lock.json index edb7d02f9b..4eaeb89fef 100644 --- a/examples/rollup/package-lock.json +++ b/examples/rollup/package-lock.json @@ -128,9 +128,9 @@ "dev": true }, "@types/node": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.3.tgz", - "integrity": "sha512-wp6IOGu1lxsfnrD+5mX6qwSwWuqsdkKKxTN4aQc4wByHAKZJf9/D4KXPQ1POUjEbnCP5LMggB0OEFNY9OTsMqg==", + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", "dev": true }, "@types/zen-observable": { @@ -1896,9 +1896,9 @@ } }, "rollup": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.6.0.tgz", - "integrity": "sha512-qu9iWyuiOxAuBM8cAwLuqPclYdarIpayrkfQB7aTGTiyYPbvx+qVF33sIznfq4bxZCiytQux/FvZieUBAXivCw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.7.0.tgz", + "integrity": "sha512-hjuWSCgoQsFSTsmsNP4AH1l1kfkFqW82gW00V9nL81Zr3JtnKn3rvxh18jUAAEMb7qNoHj21PR5SqbK2mhBgMg==", "dev": true, "requires": { "@types/estree": "0.0.39", diff --git a/examples/rollup/package.json b/examples/rollup/package.json index a8d4371514..7feac47bbf 100644 --- a/examples/rollup/package.json +++ b/examples/rollup/package.json @@ -8,7 +8,7 @@ }, "devDependencies": { "@babel/preset-react": "7.0.0", - "rollup": "1.6.0", + "rollup": "1.7.0", "rollup-plugin-babel": "4.3.2", "rollup-plugin-commonjs": "9.2.1", "rollup-plugin-jsx": "1.0.3", diff --git a/package-lock.json b/package-lock.json index d15a00f221..982ca13700 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7977,9 +7977,9 @@ } }, "rollup": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.6.0.tgz", - "integrity": "sha512-qu9iWyuiOxAuBM8cAwLuqPclYdarIpayrkfQB7aTGTiyYPbvx+qVF33sIznfq4bxZCiytQux/FvZieUBAXivCw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.7.0.tgz", + "integrity": "sha512-hjuWSCgoQsFSTsmsNP4AH1l1kfkFqW82gW00V9nL81Zr3JtnKn3rvxh18jUAAEMb7qNoHj21PR5SqbK2mhBgMg==", "dev": true, "requires": { "@types/estree": "0.0.39", diff --git a/package.json b/package.json index 88a9f7d6a1..6398020af1 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "recompose": "0.30.0", "recursive-rename": "2.0.0", "rimraf": "2.6.3", - "rollup": "1.6.0", + "rollup": "1.7.0", "rollup-plugin-commonjs": "9.2.1", "rollup-plugin-filesize": "6.0.1", "rollup-plugin-invariant": "0.4.2", From 0d9ebd03cfa57ab3684e5de7ad4c5e16240fcb92 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 23 Mar 2019 09:21:55 +0000 Subject: [PATCH 10/13] chore(deps): update dependency rollup-plugin-replace to v2.1.1 --- examples/rollup/package-lock.json | 11 +++++------ examples/rollup/package.json | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/examples/rollup/package-lock.json b/examples/rollup/package-lock.json index 4eaeb89fef..1835e78ace 100644 --- a/examples/rollup/package-lock.json +++ b/examples/rollup/package-lock.json @@ -1986,14 +1986,13 @@ } }, "rollup-plugin-replace": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.1.0.tgz", - "integrity": "sha512-SxrAIgpH/B5/W4SeULgreOemxcpEgKs2gcD42zXw50bhqGWmcnlXneVInQpAqzA/cIly4bJrOpeelmB9p4YXSQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.1.1.tgz", + "integrity": "sha512-IS5ZYBb3px0UfbDCYzKaKxelLd5dbPHhfplEXbymfvGlz9Ok44At4AjTOWe2qEax73bE8+pnMZN9C7PcVpFNlw==", "dev": true, "requires": { - "magic-string": "^0.25.1", - "minimatch": "^3.0.2", - "rollup-pluginutils": "^2.0.1" + "magic-string": "^0.25.2", + "rollup-pluginutils": "^2.4.1" } }, "rollup-plugin-terser": { diff --git a/examples/rollup/package.json b/examples/rollup/package.json index 7feac47bbf..f02effb5fb 100644 --- a/examples/rollup/package.json +++ b/examples/rollup/package.json @@ -13,7 +13,7 @@ "rollup-plugin-commonjs": "9.2.1", "rollup-plugin-jsx": "1.0.3", "rollup-plugin-node-resolve": "4.0.1", - "rollup-plugin-replace": "2.1.0", + "rollup-plugin-replace": "2.1.1", "rollup-plugin-terser": "4.0.4", "source-map-explorer": "1.8.0" }, From 50f43dd0f84a4ff76a3d7941e8038f31911e7c33 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 23 Mar 2019 10:24:53 +0000 Subject: [PATCH 11/13] chore(deps): update dependency typescript to v3.3.4000 --- examples/typescript/package.json | 2 +- package-lock.json | 6 +++--- package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/typescript/package.json b/examples/typescript/package.json index e9d2f6f847..fd746c5350 100644 --- a/examples/typescript/package.json +++ b/examples/typescript/package.json @@ -22,7 +22,7 @@ "apollo-codegen": "0.20.2", "react-scripts-ts": "3.1.0", "react-test-renderer": "16.8.1", - "typescript": "3.1.6" + "typescript": "3.3.4000" }, "scripts": { "start": "react-scripts-ts start", diff --git a/package-lock.json b/package-lock.json index 982ca13700..7db0617816 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9209,9 +9209,9 @@ } }, "typescript": { - "version": "3.3.3333", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", - "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==", + "version": "3.3.4000", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.4000.tgz", + "integrity": "sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA==", "dev": true }, "typescript-require": { diff --git a/package.json b/package.json index 6398020af1..bd848b317e 100644 --- a/package.json +++ b/package.json @@ -159,7 +159,7 @@ "ts-jest": "24.0.0", "tsc-watch": "2.1.2", "tslint": "5.14.0", - "typescript": "3.3.3333", + "typescript": "3.3.4000", "typescript-require": "0.2.10", "zen-observable-ts": "0.8.18" }, From 2c3e96afdae1e1f8ee442a47e3e2156c6767cd8f Mon Sep 17 00:00:00 2001 From: Hugh Willson Date: Sun, 24 Mar 2019 17:26:05 -0400 Subject: [PATCH 12/13] Adjust `useApolloClient` to return the `client` only We don't necessarily want to expose the entire `ApolloContext`. --- src/ApolloContext.ts | 3 +-- src/useApolloClient.ts | 13 +++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/ApolloContext.ts b/src/ApolloContext.ts index 4e6cd314f6..9ae703c296 100644 --- a/src/ApolloContext.ts +++ b/src/ApolloContext.ts @@ -8,5 +8,4 @@ export interface ApolloContextValue { renderPromises?: RenderPromises; } -export const ApolloContext = - React.createContext({}); +export const ApolloContext = React.createContext({}); diff --git a/src/useApolloClient.ts b/src/useApolloClient.ts index 3d86c8faf7..3c9d747d3a 100644 --- a/src/useApolloClient.ts +++ b/src/useApolloClient.ts @@ -1,9 +1,14 @@ import React from 'react'; +import { invariant } from 'ts-invariant'; + import { ApolloContext } from './ApolloContext'; export function useApolloClient() { - if (!ApolloContext) { - throw new Error('The useApolloClient needs React version 16.8 or higher'); - } - return React.useContext(ApolloContext); + const { client } = React.useContext(ApolloContext); + invariant( + !client, + 'No Apollo Client instance can be found. Please ensure that you ' + + 'have called `ApolloProvider` higher up in your tree.', + ); + return client; } From 91638c2e99d535db6d67119409a370aef3de867c Mon Sep 17 00:00:00 2001 From: Hugh Willson Date: Sun, 24 Mar 2019 17:30:45 -0400 Subject: [PATCH 13/13] Changelog updates --- Changelog.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Changelog.md b/Changelog.md index eedb8e58c4..5eb02b5ce0 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,15 @@ # Change log +## 3.0.0 + +### Improvements + +- `useApolloClient` can be used to return an `ApolloClient` instance from + React Apollo's context, assuming it was previously set using + `ApolloProvider`.
+ [@FredyC](https://github.com/FredyC) in [#2872](https://github.com/apollographql/react-apollo/pull/2872) + + ## vNEXT ### Bug Fixes