From 63bfebec5649bcfb0e19cdd94437a8e7afc1e6dc Mon Sep 17 00:00:00 2001 From: Lenz Weber Date: Fri, 9 Aug 2019 11:43:09 +0200 Subject: [PATCH 01/10] allow passing a callback to useFetch's `run` to modify init --- README.md | 9 +++++++++ packages/react-async/src/useAsync.js | 15 +++++++++------ packages/react-async/src/useAsync.spec.js | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a2869f1b..dd95ddc3 100644 --- a/README.md +++ b/README.md @@ -251,6 +251,15 @@ const MyComponent = () => { const headers = { Accept: "application/json" } const { data, error, isLoading, run } = useFetch("/api/example", { headers }, options) // This will setup a promiseFn with a fetch request and JSON deserialization. + + // you can later call `run` with an optional callback argument to + // last-minute modify the `init` parameter that is passed to `fetch` + function clickHandler() { + run(init => ({ + ...init, + body: JSON.stringify(formValues) + })) + } } ``` diff --git a/packages/react-async/src/useAsync.js b/packages/react-async/src/useAsync.js index b2281aac..5e54b09c 100644 --- a/packages/react-async/src/useAsync.js +++ b/packages/react-async/src/useAsync.js @@ -126,8 +126,7 @@ const useAsync = (arg1, arg2) => { const parseResponse = (accept, json) => res => { if (!res.ok) return Promise.reject(res) - if (json === false) return res - if (json === true || accept === "application/json") return res.json() + if (json === true || (json !== false && accept === "application/json")) return res.json() return res } @@ -136,13 +135,17 @@ const useAsyncFetch = (input, init, { defer, json, ...options } = {}) => { const headers = input.headers || (init && init.headers) || {} const accept = headers["Accept"] || headers["accept"] || (headers.get && headers.get("accept")) const doFetch = (input, init) => globalScope.fetch(input, init).then(parseResponse(accept, json)) - const isDefer = defer === true || ~["POST", "PUT", "PATCH", "DELETE"].indexOf(method) - const fn = defer === false || !isDefer ? "promiseFn" : "deferFn" + const isDefer = + defer === true || (defer !== false && ~["POST", "PUT", "PATCH", "DELETE"].indexOf(method)) + const fn = isDefer ? "deferFn" : "promiseFn" const state = useAsync({ ...options, [fn]: useCallback( - (_, props, ctrl) => doFetch(input, { signal: ctrl ? ctrl.signal : props.signal, ...init }), - [JSON.stringify(input), JSON.stringify(init)] + isDefer + ? ([override], _, { signal }) => + doFetch(input, { signal, ...(typeof override === "function" ? override(init) : init) }) + : (_, { signal }) => doFetch(input, { signal, ...init }), + [isDefer, JSON.stringify(input), JSON.stringify(init)] ), }) useDebugValue(state, ({ counter, status }) => `[${counter}] ${status}`) diff --git a/packages/react-async/src/useAsync.spec.js b/packages/react-async/src/useAsync.spec.js index 54eefd9c..8e733989 100644 --- a/packages/react-async/src/useAsync.spec.js +++ b/packages/react-async/src/useAsync.spec.js @@ -161,4 +161,21 @@ describe("useFetch", () => { await Promise.resolve() expect(json).toHaveBeenCalled() }) + + test("calling `run` with an argument allows to override `init` parameters", () => { + const component = ( + + {({ run }) => ( + + )} + + ) + const { getByText } = render(component) + expect(globalScope.fetch).not.toHaveBeenCalled() + fireEvent.click(getByText("run")) + expect(globalScope.fetch).toHaveBeenCalledWith( + "/test", + expect.objectContaining({ method: "POST", signal: abortCtrl.signal, body: '{"name":"test"}' }) + ) + }) }) From 3e6c98445b47a25503be7cf3ccbf12c9414894c6 Mon Sep 17 00:00:00 2001 From: Lenz Weber Date: Thu, 15 Aug 2019 15:59:51 +0200 Subject: [PATCH 02/10] useFetch: allow passing an object to `run` to be spread over `init` --- README.md | 12 ++++++++- packages/react-async/src/useAsync.js | 12 ++++++++- packages/react-async/src/useAsync.spec.js | 33 ++++++++++++++++++++++- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index dd95ddc3..9ddcd2cb 100644 --- a/README.md +++ b/README.md @@ -257,9 +257,19 @@ const MyComponent = () => { function clickHandler() { run(init => ({ ...init, - body: JSON.stringify(formValues) + headers: { + ...init.headers, + authentication: "..." + } })) } + + // alternatively, you can also just use an object that will be spread over `init`. + // please note that this is not deep-merged, so you might override properties present in the + // original `init` parameter + function clickHandler2() { + run({ body: JSON.stringify(formValues) }) + } } ``` diff --git a/packages/react-async/src/useAsync.js b/packages/react-async/src/useAsync.js index 5e54b09c..2665e443 100644 --- a/packages/react-async/src/useAsync.js +++ b/packages/react-async/src/useAsync.js @@ -143,7 +143,17 @@ const useAsyncFetch = (input, init, { defer, json, ...options } = {}) => { [fn]: useCallback( isDefer ? ([override], _, { signal }) => - doFetch(input, { signal, ...(typeof override === "function" ? override(init) : init) }) + doFetch(input, { + signal, + ...// override is a function, call it with init + (typeof override === "function" + ? override(init) + : // override is an Event or SyntheticEvent - do not spread + "preventDefault" in override + ? init + : // otherwise, spread override over init + { ...init, ...override }), + }) : (_, { signal }) => doFetch(input, { signal, ...init }), [isDefer, JSON.stringify(input), JSON.stringify(init)] ), diff --git a/packages/react-async/src/useAsync.spec.js b/packages/react-async/src/useAsync.spec.js index 8e733989..7342a90f 100644 --- a/packages/react-async/src/useAsync.spec.js +++ b/packages/react-async/src/useAsync.spec.js @@ -162,7 +162,7 @@ describe("useFetch", () => { expect(json).toHaveBeenCalled() }) - test("calling `run` with an argument allows to override `init` parameters", () => { + test("calling `run` with a method argument allows to override `init` parameters", () => { const component = ( {({ run }) => ( @@ -178,4 +178,35 @@ describe("useFetch", () => { expect.objectContaining({ method: "POST", signal: abortCtrl.signal, body: '{"name":"test"}' }) ) }) + + test("calling `run` with an object as argument allows to override `init` parameters", () => { + const component = ( + + {({ run }) => } + + ) + const { getByText } = render(component) + expect(globalScope.fetch).not.toHaveBeenCalled() + fireEvent.click(getByText("run")) + expect(globalScope.fetch).toHaveBeenCalledWith( + "/test", + expect.objectContaining({ method: "POST", signal: abortCtrl.signal, body: '{"name":"test"}' }) + ) + }) + + test("passing `run` directly as a click handler will not spread the event over init", () => { + const component = ( + + {({ run }) => } + + ) + const { getByText } = render(component) + expect(globalScope.fetch).not.toHaveBeenCalled() + fireEvent.click(getByText("run")) + expect(globalScope.fetch).toHaveBeenCalledWith("/test", expect.any(Object)) + expect(globalScope.fetch).not.toHaveBeenCalledWith( + "/test", + expect.objectContaining({ preventDefault: expect.any(Function) }) + ) + }) }) From 55d0dfb83e883136cbc4b806b22395c8f03ba6ca Mon Sep 17 00:00:00 2001 From: Lenz Weber Date: Thu, 15 Aug 2019 16:48:43 +0200 Subject: [PATCH 03/10] better typings for `run`, add example --- examples/with-typescript/src/App.tsx | 2 + .../with-typescript/src/FetchHookExample.tsx | 40 +++++++++++++++++++ packages/react-async/src/index.d.ts | 17 ++++++-- 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 examples/with-typescript/src/FetchHookExample.tsx diff --git a/examples/with-typescript/src/App.tsx b/examples/with-typescript/src/App.tsx index 4205a66d..9688dfb3 100644 --- a/examples/with-typescript/src/App.tsx +++ b/examples/with-typescript/src/App.tsx @@ -9,6 +9,7 @@ import Async, { } from "react-async" import DevTools from "react-async-devtools" import "./App.css" +import { FetchHookExample } from "./FetchHookExample"; const loadFirstName: PromiseFn = ({ userId }) => fetch(`https://reqres.in/api/users/${userId}`) @@ -50,6 +51,7 @@ class App extends Component { {data => <>{data}} + ) diff --git a/examples/with-typescript/src/FetchHookExample.tsx b/examples/with-typescript/src/FetchHookExample.tsx new file mode 100644 index 00000000..e08b17b4 --- /dev/null +++ b/examples/with-typescript/src/FetchHookExample.tsx @@ -0,0 +1,40 @@ +import * as React from 'react'; +import { useFetch } from 'react-async'; + +export function FetchHookExample() { + const result = useFetch<{ token: string }>( + 'https://reqres.in/api/login', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json' + + } + }); + const { run } = result; + + return (<> +

with fetch hook:

+ + + + +
+ Status:
+ {result.isInitial && "initial"} + {result.isLoading && "loading"} + {result.isRejected && "rejected"} + {result.isResolved && `token: ${result.data.token}`} + ) +} \ No newline at end of file diff --git a/packages/react-async/src/index.d.ts b/packages/react-async/src/index.d.ts index 6db286d7..71245d65 100644 --- a/packages/react-async/src/index.d.ts +++ b/packages/react-async/src/index.d.ts @@ -22,7 +22,7 @@ export type DeferFn = ( interface AbstractAction { type: string - meta: { counter: number; [meta: string]: any } + meta: { counter: number;[meta: string]: any } } export type Start = AbstractAction & { type: "start"; payload: () => Promise } export type Cancel = AbstractAction & { type: "cancel" } @@ -130,7 +130,7 @@ export type AsyncRejected = AbstractState & { } export type AsyncState = AsyncInitial | AsyncPending | AsyncFulfilled | AsyncRejected -export class Async extends React.Component, AsyncState> {} +export class Async extends React.Component, AsyncState> { } export namespace Async { export function Initial(props: { @@ -225,6 +225,17 @@ export function useFetch( input: RequestInfo, init?: RequestInit, options?: FetchOptions -): AsyncState +): AsyncInitialWithout<'run', T> & FetchRun; + +// unfortunately, we cannot just omit K from AsyncInitial as that would unbox the Discriminated Union +type AsyncInitialWithout, T> = (Omit, K> | Omit, K> | Omit, K> | Omit, K>); + +type FetchRun = { + run(overrideInit: Partial): Promise + run(overrideInit: (init: RequestInit) => RequestInit): Promise + run(ignoredEvent: React.SyntheticEvent): Promise; + run(ignoredEvent: Event): Promise; + run(): Promise; +}; export default Async From 1647484d2a0e06d25a1321a98f771f2996a943f1 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 22 Aug 2019 10:38:01 +0200 Subject: [PATCH 04/10] Upgrade storybook. --- package.json | 5 +- yarn.lock | 559 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 350 insertions(+), 214 deletions(-) diff --git a/package.json b/package.json index 32032563..a2bc6751 100644 --- a/package.json +++ b/package.json @@ -44,10 +44,7 @@ "@pika/plugin-build-types": "^0.3.16", "@pika/plugin-build-web": "^0.3.15", "@pika/plugin-standard-pkg": "^0.3.15", - "@storybook/addon-actions": "^5.1.9", - "@storybook/addon-links": "^5.1.9", - "@storybook/addons": "^5.1.9", - "@storybook/react": "^5.1.9", + "@storybook/react": "5.2.0-beta.39", "@testing-library/jest-dom": "^4.0.0", "@testing-library/react": "^8.0.8", "babel-eslint": "^10.0.2", diff --git a/yarn.lock b/yarn.lock index 74d5fa71..830ecce6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1373,7 +1373,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@7.5.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.3", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5": +"@babel/runtime@7.5.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.3", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== @@ -1495,7 +1495,7 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== -"@emotion/cache@^10.0.15": +"@emotion/cache@^10.0.15", "@emotion/cache@^10.0.9": version "10.0.15" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.15.tgz#b81767b48015aae2689c60373992145c67b8de02" integrity sha512-8VthgeKhlGeTXSW1JN7I14AnAaiFPbOrqNqg3dPoGCZ3bnMjkrmRU0zrx0BtBw9esBaPaQgDB9y0tVgAGT2Mrg== @@ -1505,6 +1505,18 @@ "@emotion/utils" "0.11.2" "@emotion/weak-memoize" "0.2.3" +"@emotion/core@^10.0.14": + version "10.0.16" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.16.tgz#e43630b65c84e31e81f34db3286eab584b08cfaa" + integrity sha512-whbiiA7FfPreBY4BqWky2qRfAZvq+4dKQ1WNJuiYQwPCNmb0pEYDgNheSbZoNKtGTtfPaM28hBbZAKWD5EZXmQ== + dependencies: + "@babel/runtime" "^7.4.3" + "@emotion/cache" "^10.0.15" + "@emotion/css" "^10.0.14" + "@emotion/serialize" "^0.11.9" + "@emotion/sheet" "0.9.3" + "@emotion/utils" "0.11.2" + "@emotion/core@^10.0.9": version "10.0.15" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.15.tgz#b8489d85d64b45bd03abdb8a3d9639ba8a0328d0" @@ -1517,7 +1529,7 @@ "@emotion/sheet" "0.9.3" "@emotion/utils" "0.11.2" -"@emotion/css@^10.0.14": +"@emotion/css@^10.0.14", "@emotion/css@^10.0.9": version "10.0.14" resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.14.tgz#95dacabdd0e22845d1a1b0b5968d9afa34011139" integrity sha512-MozgPkBEWvorcdpqHZE5x1D/PLEHUitALQCQYt2wayf4UNhpgQs2tN0UwHYS4FMy5ROBH+0ALyCFVYJ/ywmwlg== @@ -1569,7 +1581,7 @@ "@emotion/serialize" "^0.11.9" "@emotion/utils" "0.11.2" -"@emotion/styled@^10.0.7": +"@emotion/styled@^10.0.14": version "10.0.15" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.15.tgz#bc99b968bdbf491db7bc474bb90c8fcdbe0f2f87" integrity sha512-vIKDo/hG741PNRpMnrJ6R8NnnjYfOBw3d6cb3yNckpjcp0NNq3ugE8/EjcYBU1Ke44nx2p00h5uzE396xOLJIg== @@ -1729,6 +1741,11 @@ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.3.tgz#f060bf6eaafae4d56a7dac618980838b0696e2ab" integrity sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg== +"@icons/material@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== + "@jest/console@^24.7.1": version "24.7.1" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" @@ -2811,62 +2828,71 @@ resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== -"@storybook/addon-actions@^5.1.9": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.1.10.tgz#8ed4272a6afc68f4a30372da2eeff414f0fe6ecd" - integrity sha512-njl2AHBGi27NvisOB8LFnWH/3RcyJT/CW7tl1cvV2j5FH2oBjq5MsjxKyJIcKwC677k1Wr8G8fw/zSEHrPpmgA== - dependencies: - "@storybook/addons" "5.1.10" - "@storybook/api" "5.1.10" - "@storybook/components" "5.1.10" - "@storybook/core-events" "5.1.10" - "@storybook/theming" "5.1.10" +"@storybook/addon-actions@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.2.0-beta.39.tgz#29484c7aed968e5137f00c39c13149d8bbb847cd" + integrity sha512-xtj7dIqK/y1k/gC0WpLeKNQYIL85sA0N7kTQcjLzxR2KQEnCsTlZ+/hydoroZfb9cMQ4wNo21O8fyWYlQliuug== + dependencies: + "@storybook/addons" "5.2.0-beta.39" + "@storybook/api" "5.2.0-beta.39" + "@storybook/client-api" "5.2.0-beta.39" + "@storybook/components" "5.2.0-beta.39" + "@storybook/core-events" "5.2.0-beta.39" + "@storybook/theming" "5.2.0-beta.39" core-js "^3.0.1" fast-deep-equal "^2.0.1" global "^4.3.2" - lodash "^4.17.11" polished "^3.3.1" prop-types "^15.7.2" react "^16.8.3" react-inspector "^3.0.2" uuid "^3.3.2" -"@storybook/addon-links@^5.1.9": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-5.1.10.tgz#bb9e6a30f1cddddabd755cfad689477d755ae804" - integrity sha512-LDDcIU4ae76063baWuoi7dWI8YeSCq595siUlxM+aNydxHsIdQhi7vH1GRJL1oqCvvYLykdopcjKofO5EiTVdw== - dependencies: - "@storybook/addons" "5.1.10" - "@storybook/core-events" "5.1.10" - "@storybook/router" "5.1.10" - common-tags "^1.8.0" +"@storybook/addon-knobs@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-5.2.0-beta.39.tgz#8228db003f46ba711e03eb1075e94c88843e584d" + integrity sha512-VdfGXYw0iYj7ro5zoBl4GVi8E5ivQrEsjj49qUfMwwxV2ENrEtJG1jKwm9bx6Xbp0WU3RnEfEvnsQPUTXJXM2Q== + dependencies: + "@storybook/addons" "5.2.0-beta.39" + "@storybook/api" "5.2.0-beta.39" + "@storybook/client-api" "5.2.0-beta.39" + "@storybook/components" "5.2.0-beta.39" + "@storybook/core-events" "5.2.0-beta.39" + "@storybook/theming" "5.2.0-beta.39" + copy-to-clipboard "^3.0.8" core-js "^3.0.1" + escape-html "^1.0.3" + fast-deep-equal "^2.0.1" global "^4.3.2" + lodash "^4.17.11" prop-types "^15.7.2" qs "^6.6.0" + react-color "^2.17.0" + react-lifecycles-compat "^3.0.4" + react-select "^3.0.0" -"@storybook/addons@5.1.10", "@storybook/addons@^5.1.9": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.1.10.tgz#2d8d8ca20b6d9b4652744f5fc00ead483f705435" - integrity sha512-M9b2PCp9RZxDC6wL7vVt2SCKCGXrrEAOsdpMvU569yB1zoUPEiiqElVDwb91O2eAGPnmd2yjImp90kOpKUW0EA== +"@storybook/addons@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.2.0-beta.39.tgz#330fc74bc1e8e03e3ad59291719f6d0c59a5c702" + integrity sha512-6B1fBbLF3Q1X/OB3HsKEn+p7EVqrDuWMtTe45b29fIgKZAtFDH3uk0l6COdA9K0uvmil2B1gXXdSLApK0th/AQ== dependencies: - "@storybook/api" "5.1.10" - "@storybook/channels" "5.1.10" - "@storybook/client-logger" "5.1.10" + "@storybook/api" "5.2.0-beta.39" + "@storybook/channels" "5.2.0-beta.39" + "@storybook/client-logger" "5.2.0-beta.39" core-js "^3.0.1" global "^4.3.2" util-deprecate "^1.0.2" -"@storybook/api@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-5.1.10.tgz#5eeb5d9a7c268e5c89bd40c9a80293a7c72343b8" - integrity sha512-YeZe/71zLMmgT95IMAEZOc9AwL6Y23mWvkZMwFbkokxS9+bU/qmVlQ0B9c3JBzO3OSs7sXaRqyP1o3QkQgVsiw== +"@storybook/api@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-5.2.0-beta.39.tgz#509f9c17ced4facec76ed6f71640c2a75f83fa21" + integrity sha512-NCm77IrgZns1zOAnh+aJOb356+E2KpLMbFnyVZH7+uIBLhAd6SdE5wIHU6oo8Lz/YIHkU+C2p+3KyQj4T4YlGA== dependencies: - "@storybook/channels" "5.1.10" - "@storybook/client-logger" "5.1.10" - "@storybook/core-events" "5.1.10" - "@storybook/router" "5.1.10" - "@storybook/theming" "5.1.10" + "@storybook/channels" "5.2.0-beta.39" + "@storybook/client-logger" "5.2.0-beta.39" + "@storybook/core-events" "5.2.0-beta.39" + "@storybook/router" "5.2.0-beta.39" + "@storybook/theming" "5.2.0-beta.39" core-js "^3.0.1" fast-deep-equal "^2.0.1" global "^4.3.2" @@ -2877,59 +2903,63 @@ semver "^6.0.0" shallow-equal "^1.1.0" store2 "^2.7.1" - telejson "^2.2.1" + telejson "^2.2.2" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-5.1.10.tgz#e0a58461d56ef20a87d8bc4df1067e7afc76950e" - integrity sha512-kQZIwltN2cWDXluhCfdModFDK1LHV9ZhNQ1b/uD9vn1c65rQ9u7r4lRajCfS0X1dmAWqz48cBcEurAubNgmswg== +"@storybook/channel-postmessage@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-5.2.0-beta.39.tgz#1b3d0f9f3b23588bdc184ed59f2ac7c2456da11f" + integrity sha512-oiNuS1DAk8PWTisjNjTFwnXqdkp0ic5ZTk7plzqazgZpabRtyIoF9m3FwwxNJ4tYNw2sGv9eaSL0pBO9gcM9mQ== dependencies: - "@storybook/channels" "5.1.10" - "@storybook/client-logger" "5.1.10" + "@storybook/channels" "5.2.0-beta.39" + "@storybook/client-logger" "5.2.0-beta.39" core-js "^3.0.1" global "^4.3.2" - telejson "^2.2.1" + telejson "^2.2.2" -"@storybook/channels@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-5.1.10.tgz#04fd35c05032c675f7816ea1ca873c1a0415c6d9" - integrity sha512-w7n/bV1BLu51KI1eLc75lN9H1ssBc3PZMXk88GkMiKyBVRzPlJA5ixnzH86qwYGReE0dhRpsgHXZ5XmoKaVmPA== +"@storybook/channels@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-5.2.0-beta.39.tgz#eb255712fdcfb246d60f573bddc341d0a5cd0bf1" + integrity sha512-LtJ6CPRgauw5ShOvFIghxUTGtHzQ8IzjbzNOOlCxUP216m1ekYKtu/mGFhD7lq6uj3r0iwkBbcucdVkKp41E0A== dependencies: core-js "^3.0.1" -"@storybook/client-api@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-5.1.10.tgz#a10f028f2d33d044e5c3b3daea5d8375323e6a66" - integrity sha512-v2PqiNUhwDlVDLYL94f6LFjdYMToTpuwWh9aeqzt/4PAJUnIcA+2P8+qXiYdJTqQy/u7P72HFMlc9Ru4tl3QFg== - dependencies: - "@storybook/addons" "5.1.10" - "@storybook/client-logger" "5.1.10" - "@storybook/core-events" "5.1.10" - "@storybook/router" "5.1.10" +"@storybook/client-api@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-5.2.0-beta.39.tgz#a04e5670465b523fef46836d278cf552195ab0f3" + integrity sha512-dGbnv85/8TFjBMeMHyNecA4MJ/vEZMScQmkOFTWN/BIQYYkE+ZByrANvoR1ckywDlcbWToa01H3Nf78k0m7LHw== + dependencies: + "@storybook/addons" "5.2.0-beta.39" + "@storybook/channel-postmessage" "5.2.0-beta.39" + "@storybook/channels" "5.2.0-beta.39" + "@storybook/client-logger" "5.2.0-beta.39" + "@storybook/core-events" "5.2.0-beta.39" + "@storybook/router" "5.2.0-beta.39" common-tags "^1.8.0" core-js "^3.0.1" - eventemitter3 "^3.1.0" + eventemitter3 "^4.0.0" global "^4.3.2" is-plain-object "^3.0.0" lodash "^4.17.11" memoizerific "^1.11.3" qs "^6.6.0" + util-deprecate "^1.0.2" -"@storybook/client-logger@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-5.1.10.tgz#f83a8717924dd222e0a6df82ae74701f27e0bb35" - integrity sha512-vB1NoFWRTgcERwodhbgoDwI00eqU8++nXI7GhMS1CY8haZaSp3gyKfHRWyfH+M+YjQuGBRUcvIk4gK6OtSrDOw== +"@storybook/client-logger@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-5.2.0-beta.39.tgz#3569c1c506eb12f8e05b7d3929f32e3e4e5a8986" + integrity sha512-lmp4MoPshn28XmBLmsfdxRF8t8bNrc+iprZETKSHHrRVgT3T86FO3Zi4OnPs7fGxAz/zPjVRpIAmvky9SyiG7Q== dependencies: core-js "^3.0.1" -"@storybook/components@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-5.1.10.tgz#4b6436f0b5bb2483fb231bee263d173a9ed7d241" - integrity sha512-QUQeeQp1xNWiL4VlxFAea0kqn2zvBfmfPlUddOFO9lBhT6pVy0xYPjXjbTVWjVcYzZpyUNWw5GplqrR5jhlaCA== +"@storybook/components@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-5.2.0-beta.39.tgz#5a8c53906954b6a1c4a3fa62a8cd0a83e91e3ec6" + integrity sha512-Ub02KJKty+jNk1j8r0LDkMnIb8MpGABI8PblzBfNsCrS4d9vYi1FQOxLVxFNFFsUDPtGoIrtAfZJ4ATwhJ5t9Q== dependencies: - "@storybook/client-logger" "5.1.10" - "@storybook/theming" "5.1.10" + "@storybook/client-logger" "5.2.0-beta.39" + "@storybook/theming" "5.2.0-beta.39" + "@types/react-syntax-highlighter" "10.1.0" core-js "^3.0.1" global "^4.3.2" markdown-to-jsx "^6.9.1" @@ -2944,39 +2974,39 @@ react-popper-tooltip "^2.8.3" react-syntax-highlighter "^8.0.1" react-textarea-autosize "^7.1.0" - recompose "^0.30.0" simplebar-react "^1.0.0-alpha.6" -"@storybook/core-events@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-5.1.10.tgz#5aed88c572036b6bd6dfff28976ee96e6e175d7a" - integrity sha512-Lvu/rNcgS+XCkQKSGdNpUSWjpFF9AOSHPXsvkwHbRwJYdMDn3FznlXfDUiubOWtsziXHB6vl3wkKDlH+ckb32Q== +"@storybook/core-events@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-5.2.0-beta.39.tgz#b96361867aa5de678f153c09f198d6c63e81ba0e" + integrity sha512-qrCzOVR7yTQ+Koj71pdpbtJl7myOjVcEICU07x1zrEX2fjeIeHx8yqGQIrcrhH3yicCkTcUnCvvWpBQAqWlS4w== dependencies: core-js "^3.0.1" -"@storybook/core@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-5.1.10.tgz#53d23d07716aa2721e1572d44a7f05967d7da39e" - integrity sha512-zkNjufOFrLpFpmr73F/gaJh0W0vWqXIo5zrKvQt1LqmMeCU/v8MstHi4XidlK43UpeogfaXl5tjNCQDO/bd0Dw== +"@storybook/core@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-5.2.0-beta.39.tgz#e6c71e8e2c061ea2130b0fa4740bec6d9f8f4d1a" + integrity sha512-iqLMquAAHBrJB6oBMcAvUnl2qPR+2KG9nPzozH6ssS4wWkgCyvToa5ytzVVLl/T24M6yyHOeWn24M1+7vNup7Q== dependencies: "@babel/plugin-proposal-class-properties" "^7.3.3" "@babel/plugin-proposal-object-rest-spread" "^7.3.2" "@babel/plugin-syntax-dynamic-import" "^7.2.0" "@babel/plugin-transform-react-constant-elements" "^7.2.0" "@babel/preset-env" "^7.4.5" - "@storybook/addons" "5.1.10" - "@storybook/channel-postmessage" "5.1.10" - "@storybook/client-api" "5.1.10" - "@storybook/client-logger" "5.1.10" - "@storybook/core-events" "5.1.10" - "@storybook/node-logger" "5.1.10" - "@storybook/router" "5.1.10" - "@storybook/theming" "5.1.10" - "@storybook/ui" "5.1.10" + "@storybook/addons" "5.2.0-beta.39" + "@storybook/channel-postmessage" "5.2.0-beta.39" + "@storybook/client-api" "5.2.0-beta.39" + "@storybook/client-logger" "5.2.0-beta.39" + "@storybook/core-events" "5.2.0-beta.39" + "@storybook/node-logger" "5.2.0-beta.39" + "@storybook/router" "5.2.0-beta.39" + "@storybook/theming" "5.2.0-beta.39" + "@storybook/ui" "5.2.0-beta.39" airbnb-js-shims "^1 || ^2" + ansi-to-html "^0.6.11" autoprefixer "^9.4.9" babel-plugin-add-react-displayname "^0.0.5" - babel-plugin-emotion "^10.0.9" + babel-plugin-emotion "^10.0.14" babel-plugin-macros "^2.4.5" babel-preset-minify "^0.5.0 || 0.6.0-alpha.5" boxen "^3.0.0" @@ -2986,8 +3016,8 @@ commander "^2.19.0" common-tags "^1.8.0" core-js "^3.0.1" - corejs-upgrade-webpack-plugin "^2.0.0" - css-loader "^2.1.1" + corejs-upgrade-webpack-plugin "^2.2.0" + css-loader "^3.0.0" detect-port "^1.3.0" dotenv-webpack "^1.7.0" ejs "^2.6.1" @@ -3002,7 +3032,7 @@ interpret "^1.2.0" ip "^1.1.5" json5 "^2.1.0" - lazy-universal-dotenv "^3.0.0" + lazy-universal-dotenv "^3.0.1" node-fetch "^2.6.0" open "^6.1.0" pnp-webpack-plugin "1.4.3" @@ -3020,16 +3050,17 @@ shelljs "^0.8.3" style-loader "^0.23.1" terser-webpack-plugin "^1.2.4" - url-loader "^1.1.2" + unfetch "^4.1.0" + url-loader "^2.0.1" util-deprecate "^1.0.2" webpack "^4.33.0" webpack-dev-middleware "^3.7.0" webpack-hot-middleware "^2.25.0" -"@storybook/node-logger@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-5.1.10.tgz#92c80b46177687cd8fda1f93a055c22711984154" - integrity sha512-Z4UKh7QBOboQhUF5S/dKOx3OWWCNZGwYu8HZa/O+P68+XnQDhuZCYwqWG49xFhZd0Jb0W9gdUL2mWJw5POG9PA== +"@storybook/node-logger@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-5.2.0-beta.39.tgz#cbfc1d412ea101084c633131024e936404353516" + integrity sha512-WduasAZ8s/W59+dXpjbOtFX1dM/AhsJLLZw34uTN5O76I53IJl8k0GEczIh7aemjzN/NG+N42XbPpIjT4URHXw== dependencies: chalk "^2.4.2" core-js "^3.0.1" @@ -3037,16 +3068,17 @@ pretty-hrtime "^1.0.3" regenerator-runtime "^0.12.1" -"@storybook/react@^5.1.9": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-5.1.10.tgz#a5cf2b7d086e121c969d34100fb03fcfdc74cbed" - integrity sha512-wWy9l83KgbP8P2A8AbkwExEAdA0iznb4jEnCGzP1hAv8Q5LmL3MLPb1dIZqhWrg+E2m3tZei+7A7qu2Q8/cLLw== +"@storybook/react@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-5.2.0-beta.39.tgz#92d216636124639380297c921dd789f8b2388da8" + integrity sha512-KiljGRxAND7d+x0bG5Zn7WE2FQU4hnM3sAeEbdq2s18C2LVuUKidoUc7hR2oGDLyLTOqz6jaa0/NGhiyqUyslQ== dependencies: "@babel/plugin-transform-react-constant-elements" "^7.2.0" "@babel/preset-flow" "^7.0.0" "@babel/preset-react" "^7.0.0" - "@storybook/core" "5.1.10" - "@storybook/node-logger" "5.1.10" + "@storybook/addons" "5.2.0-beta.39" + "@storybook/core" "5.2.0-beta.39" + "@storybook/node-logger" "5.2.0-beta.39" "@svgr/webpack" "^4.0.3" babel-plugin-add-react-displayname "^0.0.5" babel-plugin-named-asset-import "^0.3.1" @@ -3063,52 +3095,55 @@ semver "^6.0.0" webpack "^4.33.0" -"@storybook/router@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-5.1.10.tgz#d3cffd3f1105eb665882f389746ccabbb98c3c16" - integrity sha512-BdG6/essPZFHCP2ewCG0gYFQfmuuTSHXAB5fd/rwxLSYj1IzNznC5OxkvnSaTr4rgoxxaW/z1hbN1NuA0ivlFA== +"@storybook/router@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-5.2.0-beta.39.tgz#6d7e9e032176c7fbdd7d7605db3cb7d0bca44ff1" + integrity sha512-EIjYyg7rycKnFoPD9V3vOkNFCDFNQW8o6CAQd04FBKx6NoFySxWJ33oahEBBPAXFHmjt0nQqoUl037ReWoNf2A== dependencies: "@reach/router" "^1.2.1" + "@types/reach__router" "^1.2.3" core-js "^3.0.1" global "^4.3.2" memoizerific "^1.11.3" qs "^6.6.0" -"@storybook/theming@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-5.1.10.tgz#f9bd519cdf9cccf730656e3f5fd56a339dd07c9f" - integrity sha512-5cN1lmdVUwAR8U3T49Lfb8JW5RBvxBSPGZpUmbLGz1zi0tWBJgYXoGtw4RbTBjV9kCQOXkHGH12AsdDxHh931w== +"@storybook/theming@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-5.2.0-beta.39.tgz#cba8916f081344694d1ccd746b6fd3a814f9ad30" + integrity sha512-6aEb9X7IxEIqTVZKcc3ONJIyY+c965X8s4A9kyH4TTCoOYax6zMkJ2TRz9RMQFQlngBOPoCaRHv3KZ0LgYLdOw== dependencies: - "@emotion/core" "^10.0.9" - "@emotion/styled" "^10.0.7" - "@storybook/client-logger" "5.1.10" + "@emotion/core" "^10.0.14" + "@emotion/styled" "^10.0.14" + "@storybook/client-logger" "5.2.0-beta.39" common-tags "^1.8.0" core-js "^3.0.1" deep-object-diff "^1.1.0" - emotion-theming "^10.0.9" + emotion-theming "^10.0.14" global "^4.3.2" memoizerific "^1.11.3" polished "^3.3.1" prop-types "^15.7.2" resolve-from "^5.0.0" -"@storybook/ui@5.1.10": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-5.1.10.tgz#4262b1b09efa43d125d694452ae879b89071edd1" - integrity sha512-ezkoVtzoKh93z2wzkqVIqyrIzTkj8tizgAkoPa7mUAbLCxu6LErHITODQoyEiJWI4Epy3yU9GYXFWwT71hdwsA== - dependencies: - "@storybook/addons" "5.1.10" - "@storybook/api" "5.1.10" - "@storybook/channels" "5.1.10" - "@storybook/client-logger" "5.1.10" - "@storybook/components" "5.1.10" - "@storybook/core-events" "5.1.10" - "@storybook/router" "5.1.10" - "@storybook/theming" "5.1.10" +"@storybook/ui@5.2.0-beta.39": + version "5.2.0-beta.39" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-5.2.0-beta.39.tgz#9b2ab1b1f211590a727cae500bf1b1f4b9097743" + integrity sha512-/KPXi3jHwhBinY8NWKVBdyp0V1Jsq2feR0AKQq4jq4dROpyPa6KBEAn4mzbGcAxnZY731/quSWYOjuo9/DoLZA== + dependencies: + "@storybook/addon-actions" "5.2.0-beta.39" + "@storybook/addon-knobs" "5.2.0-beta.39" + "@storybook/addons" "5.2.0-beta.39" + "@storybook/api" "5.2.0-beta.39" + "@storybook/channels" "5.2.0-beta.39" + "@storybook/client-logger" "5.2.0-beta.39" + "@storybook/components" "5.2.0-beta.39" + "@storybook/core-events" "5.2.0-beta.39" + "@storybook/router" "5.2.0-beta.39" + "@storybook/theming" "5.2.0-beta.39" copy-to-clipboard "^3.0.8" core-js "^3.0.1" core-js-pure "^3.0.1" - emotion-theming "^10.0.10" + emotion-theming "^10.0.14" fast-deep-equal "^2.0.1" fuse.js "^3.4.4" global "^4.3.2" @@ -3123,13 +3158,12 @@ react-draggable "^3.1.1" react-helmet-async "^1.0.2" react-hotkeys "2.0.0-pre4" - react-resize-detector "^4.0.5" - recompose "^0.30.0" + react-sizeme "^2.6.7" regenerator-runtime "^0.13.2" resolve-from "^5.0.0" semver "^6.0.0" store2 "^2.7.1" - telejson "^2.2.1" + telejson "^2.2.2" util-deprecate "^1.0.2" "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": @@ -3331,6 +3365,11 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/history@*": + version "4.7.3" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.3.tgz#856c99cdc1551d22c22b18b5402719affec9839a" + integrity sha512-cS5owqtwzLN5kY+l+KgKdRJ/Cee8tlmQoGQuIE9tWnSmS3JMKzmxo2HIAk2wODMifGwO20d62xZQLYz+RLfXmw== + "@types/invariant@^2.2.29": version "2.2.30" resolved "https://registry.yarnpkg.com/@types/invariant/-/invariant-2.2.30.tgz#20efa342807606ada5483731a8137cb1561e5fe9" @@ -3430,6 +3469,14 @@ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.5.3.tgz#1c3b71b091eaeaf5924538006b7f70603ce63d38" integrity sha512-Jugo5V/1bS0fRhy2z8+cUAHEyWOATaz4rbyLVvcFs7+dXp5HfwpEwzF1Q11bB10ApUqHf+yTauxI0UXQDwGrbA== +"@types/reach__router@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.2.4.tgz#44a701fdf15934880f6dfdef38ca49bc30e2d372" + integrity sha512-a+MFhebeSGi0LwHZ0UhH/ke77rWtNQnt8YmaHnquSaY3HmyEi+BPQi3GhPcUPnC9X5BLw/qORw3BPxGb1mCtEw== + dependencies: + "@types/history" "*" + "@types/react" "*" + "@types/react-dom@^16.8.5": version "16.8.5" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.5.tgz#3e3f4d99199391a7fb40aa3a155c8dd99b899cbd" @@ -3437,6 +3484,13 @@ dependencies: "@types/react" "*" +"@types/react-syntax-highlighter@10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-10.1.0.tgz#9c534e29bbe05dba9beae1234f3ae944836685d4" + integrity sha512-dF49hC4FZp1dIKyzacOrHvqMUe8U2IXyQCQXOcT1e6n64gLBp+xM6qGtPsThIT9XjiIHSg2W5Jc2V5IqekBfnA== + dependencies: + "@types/react" "*" + "@types/react@*": version "16.8.23" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.23.tgz#ec6be3ceed6353a20948169b6cb4c97b65b97ad2" @@ -3957,7 +4011,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-to-html@^0.6.4: +ansi-to-html@^0.6.11, ansi-to-html@^0.6.4: version "0.6.11" resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.11.tgz#5093fc4962186c0e9343dec572a4f71abdc93439" integrity sha512-88XZtrcwrfkyn6fGstHnkaF1kl7hGtNCYh4vSmItgEV+6JnQHryDBf7udF4f2RhTRQmYvJvPcTtqgaqrxzc9oA== @@ -4449,7 +4503,7 @@ babel-plugin-dynamic-import-node@2.3.0, babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" -babel-plugin-emotion@^10.0.14, babel-plugin-emotion@^10.0.15, babel-plugin-emotion@^10.0.9: +babel-plugin-emotion@^10.0.14, babel-plugin-emotion@^10.0.15: version "10.0.15" resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.15.tgz#2ce5bea191331ef65b3b9ae212a8f0e46ff97616" integrity sha512-E3W68Zk8EcKpRUDW2tsFKi4gsavapMRjfr2/KKgG3l7l2zZpiKk0BxB59Ul9C0w0ekv6my/ylGOk2WroaqKXPw== @@ -4914,6 +4968,11 @@ basic-auth@~2.0.0: dependencies: safe-buffer "5.1.2" +batch-processor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" + integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg= + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -5447,11 +5506,6 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -change-emitter@^0.1.2: - version "0.1.6" - resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" - integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= - character-entities-legacy@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz#3c729991d9293da0ede6dddcaf1f2ce1009ee8b4" @@ -6102,7 +6156,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -corejs-upgrade-webpack-plugin@^2.0.0: +corejs-upgrade-webpack-plugin@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/corejs-upgrade-webpack-plugin/-/corejs-upgrade-webpack-plugin-2.2.0.tgz#503293bf1fdcb104918eb40d0294e4776ad6923a" integrity sha512-J0QMp9GNoiw91Kj/dkIQFZeiCXgXoja/Wlht1SPybxerBWh4NCmb0pOgCv61lrlQZETwvVVfAFAA3IqoEO9aqQ== @@ -6249,7 +6303,7 @@ css-in-js-utils@^2.0.0: hyphenate-style-name "^1.0.2" isobject "^3.0.1" -css-loader@2.1.1, css-loader@^2.1.1: +css-loader@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== @@ -6266,6 +6320,24 @@ css-loader@2.1.1, css-loader@^2.1.1: postcss-value-parser "^3.3.0" schema-utils "^1.0.0" +css-loader@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" + integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.17" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.0" + schema-utils "^2.0.0" + css-modules-loader-core@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" @@ -6859,6 +6931,13 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + dom-serializer@0: version "0.2.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb" @@ -7025,6 +7104,13 @@ electron-to-chromium@^1.3.122, electron-to-chromium@^1.3.191: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.218.tgz#8a873456e6640da1bed18a8718da1b1a3c4f604c" integrity sha512-+ABuwQH2bEUbJTMPUMfP9mjBFtbLgDjlrkg3QGQZwr/RJB7aJZBm8g3SK/lR/J76P6l/4a6RgW2yQjZQDdjtFw== +element-resize-detector@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.1.15.tgz#48eba1a2eaa26969a4c998d972171128c971d8d2" + integrity sha512-16/5avDegXlUxytGgaumhjyQoM6hpp5j3+L79sYq5hlXfTNRy5WMMuTVWkZU3egp/CokCmTmvf18P3KeB57Iog== + dependencies: + batch-processor "^1.0.0" + elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -7048,7 +7134,7 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= -emotion-theming@^10.0.10, emotion-theming@^10.0.9: +emotion-theming@^10.0.14: version "10.0.14" resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.0.14.tgz#e548d388493d07bedbb0d9d3bbe221766174b1f4" integrity sha512-zMGhPSYz48AAR6DYjQVaZHeO42cYKPq4VyB1XjxzgR62/NmO99679fx8qDDB1QZVYGkRWZtsOe+zJE/e30XdbA== @@ -7201,7 +7287,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" -escape-html@~1.0.3: +escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= @@ -7496,6 +7582,11 @@ eventemitter3@^3.0.0, eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" @@ -7944,7 +8035,7 @@ fbjs-scripts@^1.0.0: semver "^5.1.0" through2 "^2.0.0" -fbjs@^0.8.0, fbjs@^0.8.1, fbjs@^0.8.4, fbjs@^0.8.9: +fbjs@^0.8.0, fbjs@^0.8.4, fbjs@^0.8.9: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= @@ -8915,11 +9006,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^2.3.1: - version "2.5.5" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" - integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== - hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" @@ -9177,7 +9263,7 @@ icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= -icss-utils@^4.1.0: +icss-utils@^4.0.0, icss-utils@^4.1.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -10697,7 +10783,7 @@ lazy-cache@^1.0.3: resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lazy-universal-dotenv@^3.0.0: +lazy-universal-dotenv@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz#a6c8938414bca426ab8c9463940da451a911db38" integrity sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ== @@ -10855,11 +10941,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash-es@^4.17.11: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" - integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== - lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -10965,7 +11046,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.5.0, lodash@^4.6.0, lodash@^4.6.1: +lodash@^4.0.1, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.5.0, lodash@^4.6.0, lodash@^4.6.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -11130,6 +11211,11 @@ markdown-to-jsx@^6.9.1, markdown-to-jsx@^6.9.3: prop-types "^15.6.2" unquote "^1.1.0" +material-colors@^1.2.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== + math-random@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" @@ -11182,6 +11268,11 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" +memoize-one@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.0.tgz#ce7af291c0e2fe041b709cac5e8c7b198c994286" + integrity sha512-p3tPVJNrjOkJ0vk0FRn6yv898qlQZct1rsQAXuwK9X5brNVajPv/y13ytrUByzSS8olyzeqCLX8BKEWmTmXa1A== + memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -11623,7 +11714,7 @@ mime@1.6.0, mime@^1.3.4: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.4.2, mime@^2.4.4: +mime@^2.4.2, mime@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== @@ -13536,6 +13627,16 @@ postcss-modules-local-by-default@^2.0.6: postcss-selector-parser "^6.0.0" postcss-value-parser "^3.3.1" +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + postcss-modules-scope@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" @@ -13568,6 +13669,14 @@ postcss-modules-values@^2.0.0: icss-replace-symbols "^1.1.0" postcss "^7.0.6" +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + postcss-nesting@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.0.tgz#6e26a770a0c8fcba33782a6b6f350845e1a448f6" @@ -13798,7 +13907,7 @@ postcss-selector-not@^4.0.0: balanced-match "^1.0.0" postcss "^7.0.2" -postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.0: +postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -14099,7 +14208,7 @@ prop-types-exact@1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@15.7.2, prop-types@>=15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.7.2, prop-types@>=15.5.7, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -14264,12 +14373,7 @@ quote-stream@^1.0.1, quote-stream@~1.0.2: minimist "^1.1.3" through2 "^2.0.0" -raf-schd@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" - integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== - -raf@3.4.1: +raf@3.4.1, raf@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -14362,6 +14466,18 @@ react-clone-referenced-element@^1.0.1: resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.1.0.tgz#9cdda7f2aeb54fea791f3ab8c6ab96c7a77d0158" integrity sha512-FKOsfKbBkPxYE8576EM6uAfHC4rnMpLyH6/TJUL4WcHUEB3EUn8AxPjnnV/IiwSSzsClvHYK+sDELKN/EJ0WYg== +react-color@^2.17.0: + version "2.17.3" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.17.3.tgz#b8556d744f95193468c7061d2aa19180118d4a48" + integrity sha512-1dtO8LqAVotPIChlmo6kLtFS1FP89ll8/OiA8EcFRDR+ntcK+0ukJgByuIQHRtzvigf26dV5HklnxDIvhON9VQ== + dependencies: + "@icons/material" "^0.2.4" + lodash "^4.17.11" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + react-deep-force-update@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1" @@ -14521,6 +14637,13 @@ react-hotkeys@2.0.0-pre4: dependencies: prop-types "^15.6.1" +react-input-autosize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8" + integrity sha512-3+K4CD13iE4lQQ2WlF8PuV5htfmTRLH6MDnfndHM6LuBRszuXnuyIfE7nhSKt8AzRBZ50bu0sAhkNMeS5pxQQA== + dependencies: + prop-types "^15.5.8" + react-inspector@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-3.0.2.tgz#c530a06101f562475537e47df428e1d7aff16ed8" @@ -14540,7 +14663,7 @@ react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== -react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: +react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== @@ -14654,17 +14777,6 @@ react-proxy@^1.1.7: lodash "^4.6.1" react-deep-force-update "^1.0.0" -react-resize-detector@^4.0.5: - version "4.2.0" - resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-4.2.0.tgz#b87aee6b37c9e8a52daca8736b3230cf6a2a8647" - integrity sha512-AtOaNIxs0ydua7tEoglXR3902/EdlIj9PXDu1Zj0ug2VAUnkSQjguLGzaG/N6CXLOhJSccTsUCZxjLayQ1mE9Q== - dependencies: - lodash "^4.17.11" - lodash-es "^4.17.11" - prop-types "^15.7.2" - raf-schd "^4.0.0" - resize-observer-polyfill "^1.5.1" - react-router-dom@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.1.tgz#ee66f4a5d18b6089c361958e443489d6bab714be" @@ -14755,6 +14867,32 @@ react-scripts@^3.1.1: optionalDependencies: fsevents "2.0.7" +react-select@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.0.4.tgz#16bde37c24fd4f6444914d4681e78f15ffbc86d3" + integrity sha512-fbVISKa/lSUlLsltuatfUiKcWCNvdLXxFFyrzVQCBUsjxJZH/m7UMPdw/ywmRixAmwXAP++MdbNNZypOsiDEfA== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/cache" "^10.0.9" + "@emotion/core" "^10.0.9" + "@emotion/css" "^10.0.9" + classnames "^2.2.5" + memoize-one "^5.0.0" + prop-types "^15.6.0" + raf "^3.4.0" + react-input-autosize "^2.2.1" + react-transition-group "^2.2.1" + +react-sizeme@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.7.tgz#231339ce8821ac2c26424c791e0027f89dae3e90" + integrity sha512-xCjPoBP5jmeW58TxIkcviMZqabZis7tTvDFWf0/Wa5XCgVWQTIe74NQBes2N1Kmp64GRLkpm60BaP0kk+v8aCQ== + dependencies: + element-resize-detector "^1.1.15" + invariant "^2.2.4" + shallowequal "^1.1.0" + throttle-debounce "^2.1.0" + react-syntax-highlighter@^8.0.1: version "8.1.0" resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-8.1.0.tgz#59103ff17a828a27ed7c8f035ae2558f09b6b78c" @@ -14787,6 +14925,16 @@ react-transform-hmr@^1.0.4: global "^4.3.0" react-proxy "^1.1.7" +react-transition-group@^2.2.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" + integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== + dependencies: + dom-helpers "^3.4.0" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.4" + react@16.9.0, react@^16.9.0: version "16.9.0" resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa" @@ -14806,6 +14954,13 @@ react@^16.8.3: prop-types "^15.6.2" scheduler "^0.13.6" +reactcss@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== + dependencies: + lodash "^4.0.1" + read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -15004,18 +15159,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -recompose@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" - integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== - dependencies: - "@babel/runtime" "^7.0.0" - change-emitter "^0.1.2" - fbjs "^0.8.1" - hoist-non-react-statics "^2.3.1" - react-lifecycles-compat "^3.0.2" - symbol-observable "^1.0.4" - recursive-readdir@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" @@ -15816,7 +15959,7 @@ shallow-equal@^1.1.0: resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.0.tgz#fd828d2029ff4e19569db7e19e535e94e2d1f5cc" integrity sha512-Z21pVxR4cXsfwpMKMhCEIO1PCi5sp7KEp+CmOpBQ+E8GpHwKOw2sEzk7sgblM3d/j4z4gakoWEoPcjK0VJQogA== -shallowequal@1.1.0: +shallowequal@1.1.0, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== @@ -16580,11 +16723,6 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -16625,7 +16763,7 @@ tar@^4, tar@^4.4.10, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.3" -telejson@^2.2.1: +telejson@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/telejson/-/telejson-2.2.2.tgz#d61d721d21849a6e4070d547aab302a9bd22c720" integrity sha512-YyNwnKY0ilabOwYgC/J754En1xOe5PBIUIw+C9e0+5HjVVcnQE5/gdu2yET2pmSbp5bxIDqYNjvndj2PUkIiYA== @@ -16751,6 +16889,11 @@ throat@^4.0.0, throat@^4.1.0: resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +throttle-debounce@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.1.0.tgz#257e648f0a56bd9e54fe0f132c4ab8611df4e1d5" + integrity sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg== + through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -16818,6 +16961,11 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinycolor2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -17087,7 +17235,7 @@ uncss@^0.17.0: postcss-selector-parser "6.0.2" request "^2.88.0" -unfetch@4.1.0: +unfetch@4.1.0, unfetch@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.1.0.tgz#6ec2dd0de887e58a4dee83a050ded80ffc4137db" integrity sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg== @@ -17259,7 +17407,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@2.1.0: +url-loader@2.1.0, url-loader@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.1.0.tgz#bcc1ecabbd197e913eca23f5e0378e24b4412961" integrity sha512-kVrp/8VfEm5fUt+fl2E0FQyrpmOYgMEkBsv8+UDP1wFhszECq5JyGF33I7cajlVY90zRZ6MyfgKXngLvHYZX8A== @@ -17268,15 +17416,6 @@ url-loader@2.1.0: mime "^2.4.4" schema-utils "^2.0.0" -url-loader@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" - url-parse@^1.4.3, url-parse@^1.4.4: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" From c0434f5efeae2ec0a0de5a5af1c4f274081413c3 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 22 Aug 2019 13:11:15 +0200 Subject: [PATCH 05/10] run() now returns void. Fixed code style. --- packages/react-async/src/index.d.ts | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/react-async/src/index.d.ts b/packages/react-async/src/index.d.ts index 3f5c4d99..ed95b4b4 100644 --- a/packages/react-async/src/index.d.ts +++ b/packages/react-async/src/index.d.ts @@ -22,7 +22,7 @@ export type DeferFn = ( interface AbstractAction { type: string - meta: { counter: number;[meta: string]: any } + meta: { counter: number; [meta: string]: any } } export type Start = AbstractAction & { type: "start"; payload: () => Promise } export type Cancel = AbstractAction & { type: "cancel" } @@ -131,7 +131,7 @@ export type AsyncRejected = AbstractState & { } export type AsyncState = AsyncInitial | AsyncPending | AsyncFulfilled | AsyncRejected -export class Async extends React.Component, AsyncState> { } +export class Async extends React.Component, AsyncState> {} export namespace Async { export function Initial(props: { @@ -226,17 +226,21 @@ export function useFetch( input: RequestInfo, init?: RequestInit, options?: FetchOptions -): AsyncInitialWithout<'run', T> & FetchRun; +): AsyncInitialWithout<"run", T> & FetchRun // unfortunately, we cannot just omit K from AsyncInitial as that would unbox the Discriminated Union -type AsyncInitialWithout, T> = (Omit, K> | Omit, K> | Omit, K> | Omit, K>); +type AsyncInitialWithout, T> = + | Omit, K> + | Omit, K> + | Omit, K> + | Omit, K> type FetchRun = { - run(overrideInit: Partial): Promise - run(overrideInit: (init: RequestInit) => RequestInit): Promise - run(ignoredEvent: React.SyntheticEvent): Promise; - run(ignoredEvent: Event): Promise; - run(): Promise; -}; + run(overrideInit: (init: RequestInit) => RequestInit): void + run(overrideInit: Partial): void + run(ignoredEvent: React.SyntheticEvent): void + run(ignoredEvent: Event): void + run(): void +} export default Async From 561309b27bca095f388905b893e519613f109761 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 22 Aug 2019 13:26:42 +0200 Subject: [PATCH 06/10] Improve readability of parseResponse function. --- packages/react-async/src/useAsync.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-async/src/useAsync.js b/packages/react-async/src/useAsync.js index 72f34e9e..973446f5 100644 --- a/packages/react-async/src/useAsync.js +++ b/packages/react-async/src/useAsync.js @@ -156,8 +156,8 @@ const useAsync = (arg1, arg2) => { const parseResponse = (accept, json) => res => { if (!res.ok) return Promise.reject(res) - if (json === true || (json !== false && accept === "application/json")) return res.json() - return res + if (typeof json === "boolean") return json ? res.json() : res + return accept === "application/json" ? res.json() : res } const useAsyncFetch = (input, init, { defer, json, ...options } = {}) => { From 0663f5fb72f15ad608ced2e966eb169ac1f723a4 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 22 Aug 2019 13:30:46 +0200 Subject: [PATCH 07/10] Improve readability of isDefer. --- packages/react-async/src/useAsync.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-async/src/useAsync.js b/packages/react-async/src/useAsync.js index 973446f5..fcda9310 100644 --- a/packages/react-async/src/useAsync.js +++ b/packages/react-async/src/useAsync.js @@ -166,7 +166,7 @@ const useAsyncFetch = (input, init, { defer, json, ...options } = {}) => { const accept = headers["Accept"] || headers["accept"] || (headers.get && headers.get("accept")) const doFetch = (input, init) => globalScope.fetch(input, init).then(parseResponse(accept, json)) const isDefer = - defer === true || (defer !== false && ~["POST", "PUT", "PATCH", "DELETE"].indexOf(method)) + typeof defer === "boolean" ? defer : ~["POST", "PUT", "PATCH", "DELETE"].indexOf(method) const fn = isDefer ? "deferFn" : "promiseFn" const identity = JSON.stringify({ input, init, fn }) const state = useAsync({ From cae8622db31edebbe502d645c3823800d15d813e Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Thu, 22 Aug 2019 14:05:43 +0200 Subject: [PATCH 08/10] Avoid nested ternaries. --- packages/react-async/src/useAsync.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/packages/react-async/src/useAsync.js b/packages/react-async/src/useAsync.js index fcda9310..671dd55c 100644 --- a/packages/react-async/src/useAsync.js +++ b/packages/react-async/src/useAsync.js @@ -166,26 +166,22 @@ const useAsyncFetch = (input, init, { defer, json, ...options } = {}) => { const accept = headers["Accept"] || headers["accept"] || (headers.get && headers.get("accept")) const doFetch = (input, init) => globalScope.fetch(input, init).then(parseResponse(accept, json)) const isDefer = - typeof defer === "boolean" ? defer : ~["POST", "PUT", "PATCH", "DELETE"].indexOf(method) + typeof defer === "boolean" ? defer : ["POST", "PUT", "PATCH", "DELETE"].indexOf(method) !== -1 const fn = isDefer ? "deferFn" : "promiseFn" - const identity = JSON.stringify({ input, init, fn }) + const identity = JSON.stringify({ input, init, isDefer }) const state = useAsync({ ...options, [fn]: useCallback( - isDefer - ? ([override], _, { signal }) => - doFetch(input, { - signal, - ...// override is a function, call it with init - (typeof override === "function" - ? override(init) - : // override is an Event or SyntheticEvent - do not spread - "preventDefault" in override - ? init - : // otherwise, spread override over init - { ...init, ...override }), - }) - : (_, { signal }) => doFetch(input, { signal, ...init }), + (arg1, arg2, arg3) => { + const [override, signal] = arg3 ? [arg1[0], arg3.signal] : [undefined, arg2.signal] + if (typeof override === "object" && "preventDefault" in override) { + // Don't spread Events or SyntheticEvents + return doFetch(input, { signal, ...init }) + } + return typeof override === "function" + ? doFetch(input, { signal, ...override(init) }) + : doFetch(input, { signal, ...init, ...override }) + }, [identity] // eslint-disable-line react-hooks/exhaustive-deps ), }) From 71d4c060eb845d0b742e70739d1201a244b89b90 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 23 Aug 2019 22:00:46 +0200 Subject: [PATCH 09/10] Code style. --- examples/with-typescript/src/App.tsx | 2 +- .../with-typescript/src/FetchHookExample.tsx | 86 +++++++++++-------- examples/with-typescript/src/index.css | 8 +- 3 files changed, 53 insertions(+), 43 deletions(-) diff --git a/examples/with-typescript/src/App.tsx b/examples/with-typescript/src/App.tsx index 9688dfb3..4789fb9c 100644 --- a/examples/with-typescript/src/App.tsx +++ b/examples/with-typescript/src/App.tsx @@ -9,7 +9,7 @@ import Async, { } from "react-async" import DevTools from "react-async-devtools" import "./App.css" -import { FetchHookExample } from "./FetchHookExample"; +import { FetchHookExample } from "./FetchHookExample" const loadFirstName: PromiseFn = ({ userId }) => fetch(`https://reqres.in/api/users/${userId}`) diff --git a/examples/with-typescript/src/FetchHookExample.tsx b/examples/with-typescript/src/FetchHookExample.tsx index e08b17b4..a0829994 100644 --- a/examples/with-typescript/src/FetchHookExample.tsx +++ b/examples/with-typescript/src/FetchHookExample.tsx @@ -1,40 +1,52 @@ -import * as React from 'react'; -import { useFetch } from 'react-async'; +import * as React from "react" +import { useFetch } from "react-async" export function FetchHookExample() { - const result = useFetch<{ token: string }>( - 'https://reqres.in/api/login', - { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json' + const result = useFetch<{ token: string }>("https://reqres.in/api/login", { + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + }, + }) + const { run } = result - } - }); - const { run } = result; - - return (<> -

with fetch hook:

- - - - -
- Status:
- {result.isInitial && "initial"} - {result.isLoading && "loading"} - {result.isRejected && "rejected"} - {result.isResolved && `token: ${result.data.token}`} - ) -} \ No newline at end of file + return ( + <> +

with fetch hook:

+ + + +
+ Status: +
+ {result.isInitial && "initial"} + {result.isLoading && "loading"} + {result.isRejected && "rejected"} + {result.isResolved && `token: ${result.data.token}`} + + ) +} diff --git a/examples/with-typescript/src/index.css b/examples/with-typescript/src/index.css index cee5f348..a2b91dc6 100644 --- a/examples/with-typescript/src/index.css +++ b/examples/with-typescript/src/index.css @@ -1,14 +1,12 @@ body { margin: 0; padding: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", + "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", - monospace; + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; } From becc9c391f0e1cd041a9feb856a524d08c4d4028 Mon Sep 17 00:00:00 2001 From: Gert Hengeveld Date: Fri, 23 Aug 2019 22:11:33 +0200 Subject: [PATCH 10/10] Extend docs on 'run'. --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d4e69183..6f9d5d60 100644 --- a/README.md +++ b/README.md @@ -262,20 +262,20 @@ const MyComponent = () => { const { data, error, isLoading, run } = useFetch("/api/example", { headers }, options) // This will setup a promiseFn with a fetch request and JSON deserialization. - // you can later call `run` with an optional callback argument to + // you can later call `run` with an optional callback argument to // last-minute modify the `init` parameter that is passed to `fetch` function clickHandler() { run(init => ({ - ...init, + ...init, headers: { ...init.headers, - authentication: "..." - } + authentication: "...", + }, })) } // alternatively, you can also just use an object that will be spread over `init`. - // please note that this is not deep-merged, so you might override properties present in the + // please note that this is not deep-merged, so you might override properties present in the // original `init` parameter function clickHandler2() { run({ body: JSON.stringify(formValues) }) @@ -674,6 +674,14 @@ chainable alternative to the `onResolve` / `onReject` callbacks. Runs the `deferFn`, passing any arguments provided as an array. +When used with `useFetch`, `run` has a different signature: + +> `function(init: Object | (init: Object) => Object): void` + +This runs the `fetch` request using the provided `init`. If it's an object it will be spread over the default `init` +(`useFetch`'s 2nd argument). If it's a function it will be invoked with the default `init` and should return a new +`init` object. This way you can either extend or override the value of `init`, for example to set request headers. + #### `reload` > `function(): void`