From efdc69efa58924addc5d5499548cc279997b87de Mon Sep 17 00:00:00 2001 From: daishi Date: Fri, 13 Mar 2020 00:56:40 +0900 Subject: [PATCH 01/22] implementation with useMutableSource --- .eslintrc.json | 2 + README.md | 198 +- .../{01_basic_spec.js => 01_basic_spec.tsx} | 21 +- __tests__/10_deep_proxy_spec.js | 277 -- __tests__/11_track_memo.js | 77 - __tests__/12_get_untracked.js | 19 - ...ic_spec.js.snap => 01_basic_spec.tsx.snap} | 0 dist/Provider.js | 105 - dist/deepProxy.js | 198 - dist/index.js | 57 - dist/useDispatch.js | 23 - dist/useSelector.js | 76 - dist/useTrackedState.js | 79 - dist/utils.js | 49 - examples/01_minimal/src/index.js | 17 +- examples/02_typescript/src/App.tsx | 12 +- examples/02_typescript/src/Counter.tsx | 2 +- examples/02_typescript/src/Person.tsx | 2 +- examples/02_typescript/src/index.ts | 9 +- examples/02_typescript/src/state.ts | 37 +- examples/03_deep/src/App.tsx | 12 +- examples/03_deep/src/Counter.tsx | 8 +- examples/03_deep/src/Person.tsx | 16 +- examples/03_deep/src/index.ts | 9 +- examples/03_deep/src/state.ts | 26 + examples/04_immer/src/App.tsx | 12 +- examples/04_immer/src/Counter.tsx | 8 +- examples/04_immer/src/Person.tsx | 16 +- examples/04_immer/src/index.ts | 9 +- examples/04_immer/src/state.ts | 25 + examples/05_localstate/src/App.tsx | 12 +- examples/05_localstate/src/Counter.tsx | 8 +- examples/05_localstate/src/index.ts | 9 +- examples/05_localstate/src/state.ts | 26 + examples/06_memoization/src/App.tsx | 12 +- examples/06_memoization/src/Counter.tsx | 8 +- examples/06_memoization/src/Person.tsx | 8 +- examples/06_memoization/src/index.ts | 9 +- examples/06_memoization/src/state.ts | 26 + examples/07_multistore/src/App.tsx | 14 +- examples/07_multistore/src/Counter.tsx | 8 +- examples/07_multistore/src/Person.tsx | 8 +- examples/07_multistore/src/index.ts | 9 +- examples/07_multistore/src/state.ts | 26 + examples/08_dynamic/src/App.tsx | 12 +- examples/08_dynamic/src/Counter.tsx | 8 +- examples/08_dynamic/src/Person.tsx | 8 +- examples/08_dynamic/src/index.ts | 9 +- examples/08_dynamic/src/state.ts | 26 + examples/09_thunk/src/App.tsx | 12 +- examples/09_thunk/src/Counter.tsx | 8 +- examples/09_thunk/src/Person.tsx | 17 +- examples/09_thunk/src/index.ts | 9 +- examples/09_thunk/src/state.ts | 26 + examples/11_todolist/src/actions/index.ts | 10 +- .../11_todolist/src/components/FilterLink.tsx | 6 +- .../src/components/VisibleTodoList.tsx | 6 +- examples/11_todolist/src/context.ts | 27 + examples/11_todolist/src/index.tsx | 6 +- examples/12_async/src/components/App.tsx | 2 +- examples/12_async/src/context.ts | 29 + .../src/hooks/useFetchPostsIfNeeded.ts | 7 +- .../src/hooks/useInvalidateSubreddit.ts | 5 +- .../12_async/src/hooks/useSelectSubreddit.ts | 5 +- examples/12_async/src/index.tsx | 28 +- package.json | 34 +- src/Provider.js | 76 - src/deepProxy.js | 149 - src/index.d.ts | 52 - src/index.js | 5 - src/index.ts | 4 + src/patchStore.ts | 40 + src/useDispatch.js | 11 - src/useSelector.js | 49 - src/useSelector.ts | 40 + src/useTrackedState.js | 59 - src/useTrackedState.ts | 93 + src/{utils.js => utils.ts} | 20 +- tsconfig.json | 4 +- webpack.config.js | 23 +- yarn.lock | 3352 +++++++++++++++-- 81 files changed, 3740 insertions(+), 2121 deletions(-) rename __tests__/{01_basic_spec.js => 01_basic_spec.tsx} (72%) delete mode 100644 __tests__/10_deep_proxy_spec.js delete mode 100644 __tests__/11_track_memo.js delete mode 100644 __tests__/12_get_untracked.js rename __tests__/__snapshots__/{01_basic_spec.js.snap => 01_basic_spec.tsx.snap} (100%) delete mode 100644 dist/Provider.js delete mode 100644 dist/deepProxy.js delete mode 100644 dist/index.js delete mode 100644 dist/useDispatch.js delete mode 100644 dist/useSelector.js delete mode 100644 dist/useTrackedState.js delete mode 100644 dist/utils.js create mode 100644 examples/11_todolist/src/context.ts create mode 100644 examples/12_async/src/context.ts delete mode 100644 src/Provider.js delete mode 100644 src/deepProxy.js delete mode 100644 src/index.d.ts delete mode 100644 src/index.js create mode 100644 src/index.ts create mode 100644 src/patchStore.ts delete mode 100644 src/useDispatch.js delete mode 100644 src/useSelector.js create mode 100644 src/useSelector.ts delete mode 100644 src/useTrackedState.js create mode 100644 src/useTrackedState.ts rename src/{utils.js => utils.ts} (54%) diff --git a/.eslintrc.json b/.eslintrc.json index 0c30610..5137c63 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -22,6 +22,7 @@ "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": ["error", { "additionalHooks": "useIsomorphicLayoutEffect" }], "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-empty-interface": "off", "react/jsx-filename-extension": ["error", { "extensions": [".js", ".tsx"] }], "react/prop-types": "off", @@ -31,6 +32,7 @@ "import/no-unresolved": ["error", { "ignore": ["reactive-react-redux"] }], "no-param-reassign": "off", "no-plusplus": "off", + "no-bitwise": "off", "prefer-object-spread": "off", "default-case": "off" }, diff --git a/README.md b/README.md index 888351c..25694a7 100644 --- a/README.md +++ b/README.md @@ -30,16 +30,18 @@ Most likely, `useTrackedState` performs better than Technically, `useTrackedState` has no [stale props](https://react-redux.js.org/api/hooks#stale-props-and-zombie-children) issue. -### 2. state-based object for context value +### 2. useMutableSource without Context -react-redux v7 uses store-based object for context value, -while react-redux v6 used to use state-based object. -Using state-based object naively has -[unable-to-bail-out issue](https://github.com/facebook/react/issues/14110), -but this library uses state-based object with -undocumented function `calculateChangedBits` -to stop propagation of re-renders. -See [#29](https://github.com/dai-shi/reactive-react-redux/issues/29) for details. +react-redux v7 has APIs around Context. +This library is implemented with useMutableSource, +and it patches the Redux store. +APIs are provided without Context. +It's up to developers to use Context based on them. + +There's another difference from react-redux v7. +This library directly use useMutableSource, and requires +useCallback for the selector in useSelector. +[equalityFn](https://react-redux.js.org/api/hooks#equality-comparisons-and-updates) is not supported. ## How tracking works @@ -62,8 +64,7 @@ npm install reactive-react-redux import React from 'react'; import { createStore } from 'redux'; import { - Provider, - useDispatch, + patchStore, useTrackedState, } from 'reactive-react-redux'; @@ -81,11 +82,11 @@ const reducer = (state = initialState, action) => { } }; -const store = createStore(reducer); +const store = patchStoroe(createStore(reducer)); const Counter = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(store); + const { dispatch } = store; return (
{Math.random()} @@ -99,8 +100,8 @@ const Counter = () => { }; const TextBox = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(store); + const { dispatch } = store; return (
{Math.random()} @@ -113,113 +114,122 @@ const TextBox = () => { }; const App = () => ( - + <>

Counter

TextBox

-
+ ); ``` ## API -This library exports four functions. -The first three `Provider`, `useDispatch` and `useSelector` are -compatible with [react-redux hooks](https://react-redux.js.org/api/hooks). -The last `useTrackedState` is unique in this library. + -### Provider +### patchStore -This is a provider component. -Typically, it's used closely in the app root component. +patch Redux store for React -```javascript -const store = createStore(...); -const App = () => ( - - ... - -); -``` +#### Parameters -### useDispatch +- `store` **Store<State, Action>** -This is a hook that returns `store.dispatch`. +#### Examples ```javascript -const Component = () => { - const dispatch = useDispatch(); - // ... -}; +import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; + +const reducer = ...; +const store = patchStore(createStore(reducer)); ``` ### useSelector -This is a hook that returns a selected value from a state. -This is compatible with react-redux's useSelector. -It also supports [equalityFn](https://react-redux.js.org/api/hooks#equality-comparisons-and-updates). +useSelector hook + +selector has to be stable. Either define it outside render +or use useCallback if selector uses props. + +#### Parameters + +- `patchedStore` **PatchedStore<State, Action>** +- `selector` **function (state: State): Selected** + +#### Examples ```javascript -const Component = () => { - const selected = useSelector(selector); - // ... +import { useCallback } from 'react'; +import { useSelector } from 'reactive-react-redux'; + +const Component = ({ count }) => { + const isBigger = useSelector(store, useCallack(state => state.count > count, [count])); + ... }; ``` ### useTrackedState -This is a hook that returns a whole state wraped by proxies. -It detects the usage of the state and record it. -It will only trigger re-render if the used part is changed. -There are some [caveats](#caveats). +useTrackedState hook + +It return the Redux state wrapped by Proxy, +and the state prperty access is tracked. +It will only re-render if accessed properties are changed. + +#### Parameters + +- `patchedStore` **PatchedStore<State, Action>** +- `opts` **Opts** (optional, default `{}`) + +#### Examples ```javascript +import { useTrackedState } from 'reactive-react-redux'; + const Component = () => { - const state = useTrackedState(); - // ... + const state = useTrackedState(store); + ... }; ``` -### trackMemo +## Recipes -This is used to explicitly mark a prop object as used -in a memoized component. Otherwise, usage tracking may not -work correctly because a memoized component doesn't always render -when a parent component renders. +### Context -```javascript -const ChildComponent = React.memo(({ num1, str1, obj1, obj2 }) => { - trackMemo(obj1); - trackMemo(obj2); - // ... -}); -``` +You can create Context based APIs like react-redux v7. -### getUntrackedObject +```typescript +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; -There are some cases when we need to get an original object -instead of a tracked object. -Although it's not a recommended pattern, -the library exports a function as an escape hatch. +export type State = ...; -```javascript -const Component = () => { - const state = useTrackedState(); - const dispatch = useUpdate(); - const onClick = () => { - // this leaks a proxy outside render - dispatch({ type: 'FOO', value: state.foo }); - - // this works as expected - dispatch({ type: 'FOO', value: getUntrackedObject(state.foo) }); - }; - // ... -}; +export type Action = ...; + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); ``` -## Recipes ### useTrackedSelector @@ -356,15 +366,15 @@ See [#32](https://github.com/dai-shi/reactive-react-redux/issues/32) for details ## Blogs -- [A deadly simple React bindings library for Redux with Hooks API](https://blog.axlight.com/posts/a-deadly-simple-react-bindings-library-for-redux-with-hooks-api/) -- [Developing React custom hooks for Redux without react-redux](https://blog.axlight.com/posts/developing-react-custom-hooks-for-redux-without-react-redux/) -- [Integrating React and Redux, with Hooks and Proxies](https://frontarm.com/daishi-kato/redux-custom-hooks/) -- [New React Redux coding style with hooks without selectors](https://blog.axlight.com/posts/new-react-redux-coding-style-with-hooks-without-selectors/) -- [Benchmark alpha-released hooks API in React Redux with alternatives](https://blog.axlight.com/posts/benchmark-alpha-released-hooks-api-in-react-redux-with-alternatives/) -- [Four patterns for global state with React hooks: Context or Redux](https://blog.axlight.com/posts/four-patterns-for-global-state-with-react-hooks-context-or-redux/) -- [Redux meets hooks for non-redux users: a small concrete example with reactive-react-redux](https://blog.axlight.com/posts/redux-meets-hooks-for-non-redux-users-a-small-concrete-example-with-reactive-react-redux/) -- [Redux-less context-based useSelector hook that has same performance as React-Redux](https://blog.axlight.com/posts/benchmark-react-tracked/) -- [What is state usage tracking? A novel approach to intuitive and performant global state with React hooks and Proxy](https://blog.axlight.com/posts/what-is-state-usage-tracking-a-novel-approach-to-intuitive-and-performant-api-with-react-hooks-and-proxy/) -- [Effortless render optimization with state usage tracking with React hooks](https://blog.axlight.com/posts/effortless-render-optimization-with-state-usage-tracking-with-react-hooks/) -- [How I developed a Concurrent Mode friendly library for React Redux](https://blog.axlight.com/posts/how-i-developed-a-concurrent-mode-friendly-library-for-react-redux/) -- [React hooks-oriented Redux coding pattern without thunks and action creators](https://blog.axlight.com/posts/react-hooks-oriented-redux-coding-pattern-without-thunks-and-action-creators/) +- [A deadly simple React bindings library for Redux with Hooks API](https://blog.axlight.com/posts/a-deadly-simple-react-bindings-library-for-redux-with-hooks-api/) +- [Developing React custom hooks for Redux without react-redux](https://blog.axlight.com/posts/developing-react-custom-hooks-for-redux-without-react-redux/) +- [Integrating React and Redux, with Hooks and Proxies](https://frontarm.com/daishi-kato/redux-custom-hooks/) +- [New React Redux coding style with hooks without selectors](https://blog.axlight.com/posts/new-react-redux-coding-style-with-hooks-without-selectors/) +- [Benchmark alpha-released hooks API in React Redux with alternatives](https://blog.axlight.com/posts/benchmark-alpha-released-hooks-api-in-react-redux-with-alternatives/) +- [Four patterns for global state with React hooks: Context or Redux](https://blog.axlight.com/posts/four-patterns-for-global-state-with-react-hooks-context-or-redux/) +- [Redux meets hooks for non-redux users: a small concrete example with reactive-react-redux](https://blog.axlight.com/posts/redux-meets-hooks-for-non-redux-users-a-small-concrete-example-with-reactive-react-redux/) +- [Redux-less context-based useSelector hook that has same performance as React-Redux](https://blog.axlight.com/posts/benchmark-react-tracked/) +- [What is state usage tracking? A novel approach to intuitive and performant global state with React hooks and Proxy](https://blog.axlight.com/posts/what-is-state-usage-tracking-a-novel-approach-to-intuitive-and-performant-api-with-react-hooks-and-proxy/) +- [Effortless render optimization with state usage tracking with React hooks](https://blog.axlight.com/posts/effortless-render-optimization-with-state-usage-tracking-with-react-hooks/) +- [How I developed a Concurrent Mode friendly library for React Redux](https://blog.axlight.com/posts/how-i-developed-a-concurrent-mode-friendly-library-for-react-redux/) +- [React hooks-oriented Redux coding pattern without thunks and action creators](https://blog.axlight.com/posts/react-hooks-oriented-redux-coding-pattern-without-thunks-and-action-creators/) diff --git a/__tests__/01_basic_spec.js b/__tests__/01_basic_spec.tsx similarity index 72% rename from __tests__/01_basic_spec.js rename to __tests__/01_basic_spec.tsx index cc93abb..779ea32 100644 --- a/__tests__/01_basic_spec.js +++ b/__tests__/01_basic_spec.tsx @@ -1,36 +1,37 @@ import React, { StrictMode } from 'react'; -import { createStore } from 'redux'; +import { AnyAction, createStore } from 'redux'; import { render, fireEvent, cleanup } from '@testing-library/react'; import { - Provider, + patchStore, + useSelector, useTrackedState, - useDispatch, } from '../src/index'; describe('basic spec', () => { afterEach(cleanup); it('hooks are defiend', () => { + expect(useSelector).toBeDefined(); expect(useTrackedState).toBeDefined(); - expect(useDispatch).toBeDefined(); }); it('create a component', () => { const initialState = { count1: 0, }; - const reducer = (state = initialState, action) => { + type State = typeof initialState; + const reducer = (state = initialState, action: AnyAction) => { if (action.type === 'increment') { return { ...state, count1: state.count1 + 1 }; } return state; }; - const store = createStore(reducer); + const store = patchStore(createStore(reducer)); const Counter = () => { - const value = useTrackedState(); - const dispatch = useDispatch(); + const value = useTrackedState(store); + const { dispatch } = store; return (
{value.count1} @@ -40,10 +41,10 @@ describe('basic spec', () => { }; const App = () => ( - + <> - + ); const { getAllByText, container } = render(); diff --git a/__tests__/10_deep_proxy_spec.js b/__tests__/10_deep_proxy_spec.js deleted file mode 100644 index 5fe8efe..0000000 --- a/__tests__/10_deep_proxy_spec.js +++ /dev/null @@ -1,277 +0,0 @@ -import { createDeepProxy, isDeepChanged } from '../src/deepProxy'; - -const noop = () => undefined; - -describe('shallow object spec', () => { - it('no property access', () => { - const s1 = { a: 'a', b: 'b' }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - noop(p1); - expect(isDeepChanged(s1, { a: 'a', b: 'b' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: 'a2', b: 'b' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: 'a', b: 'b2' }, a1)).toBe(false); - }); - - it('one property access', () => { - const s1 = { a: 'a', b: 'b' }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - noop(p1.a); - expect(isDeepChanged(s1, { a: 'a', b: 'b' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: 'a2', b: 'b' }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: 'a', b: 'b2' }, a1)).toBe(false); - }); -}); - -describe('deep object spec', () => { - it('intermediate property access', () => { - const s1 = { a: { b: 'b', c: 'c' } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - noop(p1.a); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 'b2', c: 'c' } }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: { b: 'b', c: 'c2' } }, a1)).toBe(true); - }); - - it('leaf property access', () => { - const s1 = { a: { b: 'b', c: 'c' } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - noop(p1.a.b); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 'b2', c: 'c' } }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: { b: 'b', c: 'c2' } }, a1)).toBe(false); - }); -}); - -describe('reference equality spec', () => { - it('simple', () => { - const proxyCache = new WeakMap(); - const s1 = { a: 'a', b: 'b' }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a); - const s2 = s1; // keep the reference - const a2 = new WeakMap(); - const p2 = createDeepProxy(s2, a2, proxyCache); - noop(p2.b); - expect(p1).toBe(p2); - expect(isDeepChanged(s1, { a: 'a', b: 'b' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: 'a2', b: 'b' }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: 'a', b: 'b2' }, a1)).toBe(false); - expect(isDeepChanged(s2, { a: 'a', b: 'b' }, a2)).toBe(false); - expect(isDeepChanged(s2, { a: 'a2', b: 'b' }, a2)).toBe(false); - expect(isDeepChanged(s2, { a: 'a', b: 'b2' }, a2)).toBe(true); - }); - - it('nested', () => { - const proxyCache = new WeakMap(); - const s1 = { a: { b: 'b', c: 'c' } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.b); - const s2 = { a: s1.a }; // keep the reference - const a2 = new WeakMap(); - const p2 = createDeepProxy(s2, a2, proxyCache); - noop(p2.a.c); - expect(p1).not.toBe(p2); - expect(p1.a).toBe(p2.a); - expect(isDeepChanged(s1, { a: { b: 'b', c: 'c' } }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 'b2', c: 'c' } }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: { b: 'b', c: 'c2' } }, a1)).toBe(false); - expect(isDeepChanged(s2, { a: { b: 'b', c: 'c' } }, a2)).toBe(false); - expect(isDeepChanged(s2, { a: { b: 'b2', c: 'c' } }, a2)).toBe(false); - expect(isDeepChanged(s2, { a: { b: 'b', c: 'c2' } }, a2)).toBe(true); - }); -}); - -describe('array spec', () => { - it('length', () => { - const s1 = [1, 2, 3]; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - noop(p1.length); - expect(isDeepChanged(s1, [1, 2, 3], a1)).toBe(false); - expect(isDeepChanged(s1, [1, 2, 3, 4], a1)).toBe(true); - expect(isDeepChanged(s1, [1, 2], a1)).toBe(true); - expect(isDeepChanged(s1, [1, 2, 4], a1)).toBe(false); - }); - - it('forEach', () => { - const s1 = [1, 2, 3]; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - p1.forEach(noop); - expect(isDeepChanged(s1, [1, 2, 3], a1)).toBe(false); - expect(isDeepChanged(s1, [1, 2, 3, 4], a1)).toBe(true); - expect(isDeepChanged(s1, [1, 2], a1)).toBe(true); - expect(isDeepChanged(s1, [1, 2, 4], a1)).toBe(true); - }); - - it('for-of', () => { - const s1 = [1, 2, 3]; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - // eslint-disable-next-line no-restricted-syntax - for (const x of p1) { - noop(x); - } - expect(isDeepChanged(s1, [1, 2, 3], a1)).toBe(false); - expect(isDeepChanged(s1, [1, 2, 3, 4], a1)).toBe(true); - expect(isDeepChanged(s1, [1, 2], a1)).toBe(true); - expect(isDeepChanged(s1, [1, 2, 4], a1)).toBe(true); - }); -}); - -describe('keys spec', () => { - it('object keys', () => { - const s1 = { a: { b: 'b' }, c: 'c' }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - noop(Object.keys(p1)); - expect(isDeepChanged(s1, { a: s1.a, c: 'c' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 'b' }, c: 'c' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: s1.a, c: 'c', d: 'd' }, a1)).toBe(true); - }); - - it('for-in', () => { - const s1 = { a: { b: 'b' }, c: 'c' }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - // eslint-disable-next-line no-restricted-syntax, guard-for-in - for (const k in p1) { - noop(k); - } - expect(isDeepChanged(s1, { a: s1.a, c: 'c' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 'b' }, c: 'c' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: s1.a, c: 'c', d: 'd' }, a1)).toBe(true); - }); - - it('single in operator', () => { - const s1 = { a: { b: 'b' }, c: 'c' }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1); - noop('a' in p1); - expect(isDeepChanged(s1, { a: s1.a, c: 'c' }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(false); - expect(isDeepChanged(s1, { c: 'c', d: 'd' }, a1)).toBe(true); - }); -}); - - -describe('special objects spec', () => { - it('object with cycles', () => { - const proxyCache = new WeakMap(); - const s1 = { a: 'a' }; - s1.self = s1; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - const c1 = new WeakMap(); - noop(p1.self.a); - expect(isDeepChanged(s1, s1, a1, c1)).toBe(false); - expect(isDeepChanged(s1, { a: 'a', self: s1 }, a1, c1)).toBe(false); - const s2 = { a: 'a' }; - s2.self = s2; - expect(isDeepChanged(s1, s2, a1, c1)).toBe(false); - const s3 = { a: 'a2' }; - s3.self = s3; - expect(isDeepChanged(s1, s3, a1, c1)).toBe(true); - }); - - it('object with cycles 2', () => { - const proxyCache = new WeakMap(); - const s1 = { a: { b: 'b' } }; - s1.self = s1; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - const c1 = new WeakMap(); - noop(p1.self.a); - expect(isDeepChanged(s1, s1, a1, c1)).toBe(false); - expect(isDeepChanged(s1, { a: s1.a, self: s1 }, a1, c1)).toBe(false); - const s2 = { a: { b: 'b' } }; - s2.self = s2; - expect(isDeepChanged(s1, s2, a1, c1)).toBe(true); - }); - - it('frozen object', () => { - const proxyCache = new WeakMap(); - const s1 = { a: { b: 'b' } }; - Object.freeze(s1); - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.b); - expect(isDeepChanged(s1, s1, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 'b' } }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 'b2' } }, a1)).toBe(true); - }); -}); - -describe('builtin objects spec', () => { - // we can't track builtin objects - - it('boolean', () => { - /* eslint-disable no-new-wrappers */ - const proxyCache = new WeakMap(); - const s1 = { a: new Boolean(false) }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.valueOf()); - expect(isDeepChanged(s1, s1, a1)).toBe(false); - expect(isDeepChanged(s1, { a: new Boolean(false) }, a1)).toBe(true); - /* eslint-enable no-new-wrappers */ - }); - - it('error', () => { - const proxyCache = new WeakMap(); - const s1 = { a: new Error('e') }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.message); - expect(isDeepChanged(s1, s1, a1)).toBe(false); - expect(isDeepChanged(s1, { a: new Error('e') }, a1)).toBe(true); - }); - - it('date', () => { - const proxyCache = new WeakMap(); - const s1 = { a: new Date('2019-05-11T12:22:29.293Z') }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.getTime()); - expect(isDeepChanged(s1, s1, a1)).toBe(false); - expect(isDeepChanged(s1, { a: new Date('2019-05-11T12:22:29.293Z') }, a1)).toBe(true); - }); - - it('regexp', () => { - const proxyCache = new WeakMap(); - const s1 = { a: /a/ }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.test('a')); - expect(isDeepChanged(s1, s1, a1)).toBe(false); - expect(isDeepChanged(s1, { a: /a/ }, a1)).toBe(true); - }); - - it('map', () => { - const proxyCache = new WeakMap(); - const s1 = { a: new Map() }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.entries()); - expect(isDeepChanged(s1, s1, a1)).toBe(false); - expect(isDeepChanged(s1, { a: new Map() }, a1)).toBe(true); - }); - - it('typed array', () => { - const proxyCache = new WeakMap(); - const s1 = { a: Int8Array.from([1]) }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a[0]); - expect(isDeepChanged(s1, s1, a1)).toBe(false); - expect(isDeepChanged(s1, { a: Int8Array.from([1]) }, a1)).toBe(true); - }); -}); diff --git a/__tests__/11_track_memo.js b/__tests__/11_track_memo.js deleted file mode 100644 index 15944f2..0000000 --- a/__tests__/11_track_memo.js +++ /dev/null @@ -1,77 +0,0 @@ -import { createDeepProxy, isDeepChanged, trackMemo } from '../src/deepProxy'; - -const noop = () => undefined; - -describe('object tracking', () => { - it('should fail without trackMemo', () => { - const proxyCache = new WeakMap(); - const s1 = { a: { b: 1, c: 2 } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.b); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 3, c: 2 } }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: { b: 1, c: 3 } }, a1)).not.toBe(true); - }); - - it('should work with trackMemo', () => { - const proxyCache = new WeakMap(); - const s1 = { a: { b: 1, c: 2 } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.b); - trackMemo(p1.a); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 3, c: 2 } }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: { b: 1, c: 3 } }, a1)).toBe(true); - }); - - it('should work with trackMemo in advance', () => { - const proxyCache = new WeakMap(); - const s1 = { a: { b: 1, c: 2 } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - trackMemo(p1.a); - noop(p1.a.b); - expect(isDeepChanged(s1, { a: s1.a }, a1)).toBe(false); - expect(isDeepChanged(s1, { a: { b: 3, c: 2 } }, a1)).toBe(true); - expect(isDeepChanged(s1, { a: { b: 1, c: 3 } }, a1)).toBe(true); - }); -}); - -describe('object tracking two level deep', () => { - it('should fail without trackMemo', () => { - const proxyCache = new WeakMap(); - const s1 = { x: { a: { b: 1, c: 2 } } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.x.a.b); - expect(isDeepChanged(s1, { x: { a: s1.x.a } }, a1)).toBe(false); - expect(isDeepChanged(s1, { x: { a: { b: 3, c: 2 } } }, a1)).toBe(true); - expect(isDeepChanged(s1, { x: { a: { b: 1, c: 3 } } }, a1)).not.toBe(true); - }); - - it('should work with trackMemo', () => { - const proxyCache = new WeakMap(); - const s1 = { x: { a: { b: 1, c: 2 } } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.x.a.b); - trackMemo(p1.x.a); - expect(isDeepChanged(s1, { x: { a: s1.x.a } }, a1)).toBe(false); - expect(isDeepChanged(s1, { x: { a: { b: 3, c: 2 } } }, a1)).toBe(true); - expect(isDeepChanged(s1, { x: { a: { b: 1, c: 3 } } }, a1)).toBe(true); - }); - - it('should work with trackMemo in advance', () => { - const proxyCache = new WeakMap(); - const s1 = { x: { a: { b: 1, c: 2 } } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - trackMemo(p1.x.a); - noop(p1.x.a.b); - expect(isDeepChanged(s1, { x: { a: s1.x.a } }, a1)).toBe(false); - expect(isDeepChanged(s1, { x: { a: { b: 3, c: 2 } } }, a1)).toBe(true); - expect(isDeepChanged(s1, { x: { a: { b: 1, c: 3 } } }, a1)).toBe(true); - }); -}); diff --git a/__tests__/12_get_untracked.js b/__tests__/12_get_untracked.js deleted file mode 100644 index 5f48bd4..0000000 --- a/__tests__/12_get_untracked.js +++ /dev/null @@ -1,19 +0,0 @@ -import { createDeepProxy, getUntrackedObject } from '../src/deepProxy'; - -const noop = () => undefined; - -describe('object tracking', () => { - it('should get untracked object', () => { - const proxyCache = new WeakMap(); - const s1 = { a: { b: 1, c: 2 } }; - const a1 = new WeakMap(); - const p1 = createDeepProxy(s1, a1, proxyCache); - noop(p1.a.b); - expect(p1).not.toBe(s1); - expect(p1.a).not.toBe(s1.a); - expect(p1.a.b).toBe(s1.a.b); - expect(getUntrackedObject(p1)).toBe(s1); - expect(getUntrackedObject(p1.a)).toBe(s1.a); - expect(getUntrackedObject(p1.a.b)).toBe(null); - }); -}); diff --git a/__tests__/__snapshots__/01_basic_spec.js.snap b/__tests__/__snapshots__/01_basic_spec.tsx.snap similarity index 100% rename from __tests__/__snapshots__/01_basic_spec.js.snap rename to __tests__/__snapshots__/01_basic_spec.tsx.snap diff --git a/dist/Provider.js b/dist/Provider.js deleted file mode 100644 index 7a99e8e..0000000 --- a/dist/Provider.js +++ /dev/null @@ -1,105 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Provider = exports.defaultContext = exports.createCustomContext = void 0; - -var _react = require("react"); - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -// ------------------------------------------------------- -// context -// ------------------------------------------------------- -var warningObject = { - get state() { - throw new Error('Please use '); - }, - - get dispatch() { - throw new Error('Please use '); - }, - - get subscribe() { - throw new Error('Please use '); - } - -}; - -var calculateChangedBits = function calculateChangedBits(a, b) { - return a.dispatch !== b.dispatch || a.subscribe !== b.subscribe ? 1 : 0; -}; - -var createCustomContext = function createCustomContext() { - var w = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : warningObject; - var c = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : calculateChangedBits; - return (0, _react.createContext)(w, c); -}; - -exports.createCustomContext = createCustomContext; -var defaultContext = createCustomContext(); // ------------------------------------------------------- -// provider -// ------------------------------------------------------- - -exports.defaultContext = defaultContext; - -var Provider = function Provider(_ref) { - var store = _ref.store, - _ref$customContext = _ref.customContext, - customContext = _ref$customContext === void 0 ? defaultContext : _ref$customContext, - children = _ref.children; - - var _useState = (0, _react.useState)(store.getState()), - _useState2 = _slicedToArray(_useState, 2), - state = _useState2[0], - setState = _useState2[1]; - - var listeners = (0, _react.useRef)([]); - (0, _react.useEffect)(function () { - listeners.current.forEach(function (listener) { - return listener(state); - }); - }, [state]); - var subscribe = (0, _react.useCallback)(function (listener) { - listeners.current.push(listener); - - var unsubscribe = function unsubscribe() { - var index = listeners.current.indexOf(listener); - listeners.current.splice(index, 1); - }; // run once in case the state is already changed - - - listener(store.getState()); - return unsubscribe; - }, [store]); - (0, _react.useEffect)(function () { - var callback = function callback() { - var nextState = store.getState(); - listeners.current.forEach(function (listener) { - return listener(nextState); - }); - setState(nextState); - }; - - var unsubscribe = store.subscribe(callback); - callback(); // in case it's already changed - - return unsubscribe; - }, [store]); - return (0, _react.createElement)(customContext.Provider, { - value: { - state: state, - dispatch: store.dispatch, - subscribe: subscribe - } - }, children); -}; - -exports.Provider = Provider; \ No newline at end of file diff --git a/dist/deepProxy.js b/dist/deepProxy.js deleted file mode 100644 index ef8d442..0000000 --- a/dist/deepProxy.js +++ /dev/null @@ -1,198 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getUntrackedObject = exports.trackMemo = exports.isDeepChanged = exports.createDeepProxy = void 0; - -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -// ------------------------------------------------------- -// deep proxy -// ------------------------------------------------------- -var OWN_KEYS_SYMBOL = Symbol('OWN_KEYS'); -var TRACK_MEMO_SYMBOL = Symbol('TRACK_MEMO'); -var GET_ORIGINAL_SYMBOL = Symbol('GET_ORIGINAL'); // check if obj is a plain object or an array - -var isPlainObject = function isPlainObject(obj) { - try { - var proto = Object.getPrototypeOf(obj); - return proto === Object.prototype || proto === Array.prototype; - } catch (e) { - return false; - } -}; // copy obj if frozen - - -var unfreeze = function unfreeze(obj) { - if (!Object.isFrozen(obj)) return obj; - - if (Array.isArray(obj)) { - return Array.from(obj); - } - - return Object.assign({}, obj); -}; - -var createProxyHandler = function createProxyHandler() { - return { - recordUsage: function recordUsage(key) { - if (this.trackObj) return; - var used = this.affected.get(this.originalObj); - - if (!used) { - used = new Set(); - this.affected.set(this.originalObj, used); - } - - used.add(key); - }, - recordObjectAsUsed: function recordObjectAsUsed() { - this.trackObj = true; - this.affected["delete"](this.originalObj); - }, - get: function get(target, key) { - if (key === GET_ORIGINAL_SYMBOL) { - return this.originalObj; - } - - this.recordUsage(key); // eslint-disable-next-line no-use-before-define, @typescript-eslint/no-use-before-define - - return createDeepProxy(target[key], this.affected, this.proxyCache); - }, - has: function has(target, key) { - if (key === TRACK_MEMO_SYMBOL) { - this.recordObjectAsUsed(); - return true; - } // LIMITATION: - // We simply record the same as get. - // This means { a: {} } and { a: {} } is detected as changed, - // if 'a' in obj is handled. - - - this.recordUsage(key); - return key in target; - }, - ownKeys: function ownKeys(target) { - this.recordUsage(OWN_KEYS_SYMBOL); - return Reflect.ownKeys(target); - } - }; -}; - -var createDeepProxy = function createDeepProxy(obj, affected, proxyCache) { - if (!isPlainObject(obj)) return obj; - var origObj = obj[GET_ORIGINAL_SYMBOL]; // unwrap proxy - - if (origObj) obj = origObj; - var proxyHandler = proxyCache && proxyCache.get(obj); - - if (!proxyHandler) { - proxyHandler = createProxyHandler(); - proxyHandler.proxy = new Proxy(unfreeze(obj), proxyHandler); - proxyHandler.originalObj = obj; - proxyHandler.trackObj = false; // for trackMemo - - if (proxyCache) { - proxyCache.set(obj, proxyHandler); - } - } - - proxyHandler.affected = affected; - proxyHandler.proxyCache = proxyCache; - return proxyHandler.proxy; -}; - -exports.createDeepProxy = createDeepProxy; - -var isOwnKeysChanged = function isOwnKeysChanged(origObj, nextObj) { - var origKeys = Reflect.ownKeys(origObj); - var nextKeys = Reflect.ownKeys(nextObj); - return origKeys.length !== nextKeys.length || origKeys.some(function (k, i) { - return k !== nextKeys[i]; - }); -}; - -var isDeepChanged = function isDeepChanged(origObj, nextObj, affected, cache, assumeChangedIfNotAffected) { - if (origObj === nextObj) return false; - if (_typeof(origObj) !== 'object' || origObj === null) return true; - if (_typeof(nextObj) !== 'object' || nextObj === null) return true; - var used = affected.get(origObj); - if (!used) return !!assumeChangedIfNotAffected; - - if (cache) { - var hit = cache.get(origObj); - - if (hit && hit.nextObj === nextObj) { - return hit.changed; - } // for object with cycles (changed is `undefined`) - - - cache.set(origObj, { - nextObj: nextObj - }); - } - - var changed = null; // eslint-disable-next-line no-restricted-syntax - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = used[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var key = _step.value; - var c = key === OWN_KEYS_SYMBOL ? isOwnKeysChanged(origObj, nextObj) : isDeepChanged(origObj[key], nextObj[key], affected, cache, assumeChangedIfNotAffected !== false); - if (typeof c === 'boolean') changed = c; - if (changed) break; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - if (changed === null) changed = !!assumeChangedIfNotAffected; - - if (cache) { - cache.set(origObj, { - nextObj: nextObj, - changed: changed - }); - } - - return changed; -}; // explicitly track object with memo - - -exports.isDeepChanged = isDeepChanged; - -var trackMemo = function trackMemo(obj) { - if (isPlainObject(obj)) { - return TRACK_MEMO_SYMBOL in obj; - } - - return false; -}; // get original object from proxy - - -exports.trackMemo = trackMemo; - -var getUntrackedObject = function getUntrackedObject(obj) { - if (isPlainObject(obj)) { - return obj[GET_ORIGINAL_SYMBOL] || null; - } - - return null; -}; - -exports.getUntrackedObject = getUntrackedObject; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 2f39575..0000000 --- a/dist/index.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -Object.defineProperty(exports, "Provider", { - enumerable: true, - get: function get() { - return _Provider.Provider; - } -}); -Object.defineProperty(exports, "createCustomContext", { - enumerable: true, - get: function get() { - return _Provider.createCustomContext; - } -}); -Object.defineProperty(exports, "useDispatch", { - enumerable: true, - get: function get() { - return _useDispatch.useDispatch; - } -}); -Object.defineProperty(exports, "useTrackedState", { - enumerable: true, - get: function get() { - return _useTrackedState.useTrackedState; - } -}); -Object.defineProperty(exports, "useSelector", { - enumerable: true, - get: function get() { - return _useSelector.useSelector; - } -}); -Object.defineProperty(exports, "trackMemo", { - enumerable: true, - get: function get() { - return _deepProxy.trackMemo; - } -}); -Object.defineProperty(exports, "getUntrackedObject", { - enumerable: true, - get: function get() { - return _deepProxy.getUntrackedObject; - } -}); - -var _Provider = require("./Provider"); - -var _useDispatch = require("./useDispatch"); - -var _useTrackedState = require("./useTrackedState"); - -var _useSelector = require("./useSelector"); - -var _deepProxy = require("./deepProxy"); \ No newline at end of file diff --git a/dist/useDispatch.js b/dist/useDispatch.js deleted file mode 100644 index 8260944..0000000 --- a/dist/useDispatch.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.useDispatch = void 0; - -var _react = require("react"); - -var _Provider = require("./Provider"); - -var useDispatch = function useDispatch() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var _opts$customContext = opts.customContext, - customContext = _opts$customContext === void 0 ? _Provider.defaultContext : _opts$customContext; - - var _useContext = (0, _react.useContext)(customContext), - dispatch = _useContext.dispatch; - - return dispatch; -}; - -exports.useDispatch = useDispatch; \ No newline at end of file diff --git a/dist/useSelector.js b/dist/useSelector.js deleted file mode 100644 index a9c78b4..0000000 --- a/dist/useSelector.js +++ /dev/null @@ -1,76 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.useSelector = void 0; - -var _react = require("react"); - -var _Provider = require("./Provider"); - -var _utils = require("./utils"); - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -var isFunction = function isFunction(f) { - return typeof f === 'function'; -}; - -var defaultEqualityFn = function defaultEqualityFn(a, b) { - return a === b; -}; - -var useSelector = function useSelector(selector, eqlFn, opts) { - var _ref = opts || !isFunction(eqlFn) && eqlFn || {}, - _ref$equalityFn = _ref.equalityFn, - equalityFn = _ref$equalityFn === void 0 ? isFunction(eqlFn) ? eqlFn : defaultEqualityFn : _ref$equalityFn, - _ref$customContext = _ref.customContext, - customContext = _ref$customContext === void 0 ? _Provider.defaultContext : _ref$customContext; - - var _useReducer = (0, _react.useReducer)(function (c) { - return c + 1; - }, 0), - _useReducer2 = _slicedToArray(_useReducer, 2), - forceUpdate = _useReducer2[1]; - - var _useContext = (0, _react.useContext)(customContext), - state = _useContext.state, - subscribe = _useContext.subscribe; - - var selected = selector(state); - var ref = (0, _react.useRef)(null); - (0, _utils.useIsomorphicLayoutEffect)(function () { - ref.current = { - equalityFn: equalityFn, - selector: selector, - state: state, - selected: selected - }; - }); - (0, _react.useEffect)(function () { - var callback = function callback(nextState) { - try { - if (ref.current.state === nextState || ref.current.equalityFn(ref.current.selected, ref.current.selector(nextState))) { - // not changed - return; - } - } catch (e) {// ignored (stale props or some other reason) - } - - forceUpdate(); - }; - - var unsubscribe = subscribe(callback); - return unsubscribe; - }, [subscribe]); - return selected; -}; - -exports.useSelector = useSelector; \ No newline at end of file diff --git a/dist/useTrackedState.js b/dist/useTrackedState.js deleted file mode 100644 index aae635e..0000000 --- a/dist/useTrackedState.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.useTrackedState = void 0; - -var _react = require("react"); - -var _Provider = require("./Provider"); - -var _utils = require("./utils"); - -var _deepProxy = require("./deepProxy"); - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } - -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } - -function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } - -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } - -var useTrackedState = function useTrackedState() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var _opts$customContext = opts.customContext, - customContext = _opts$customContext === void 0 ? _Provider.defaultContext : _opts$customContext; - - var _useReducer = (0, _react.useReducer)(function (c) { - return c + 1; - }, 0), - _useReducer2 = _slicedToArray(_useReducer, 2), - forceUpdate = _useReducer2[1]; - - var _useContext = (0, _react.useContext)(customContext), - state = _useContext.state, - subscribe = _useContext.subscribe; - - var affected = new WeakMap(); - var lastTracked = (0, _react.useRef)(null); - (0, _utils.useIsomorphicLayoutEffect)(function () { - lastTracked.current = { - state: state, - affected: affected, - cache: new WeakMap(), - - /* eslint-disable no-nested-ternary, indent, @typescript-eslint/indent */ - assumeChangedIfNotAffected: opts.unstable_forceUpdateForStateChange ? true : opts.unstable_ignoreIntermediateObjectUsage ? false : - /* default */ - null - /* eslint-enable no-nested-ternary, indent, @typescript-eslint/indent */ - - }; - }); - (0, _react.useEffect)(function () { - var callback = function callback(nextState) { - if (lastTracked.current.state === nextState || !(0, _deepProxy.isDeepChanged)(lastTracked.current.state, nextState, lastTracked.current.affected, lastTracked.current.cache, lastTracked.current.assumeChangedIfNotAffected)) { - // not changed - return; - } - - forceUpdate(); - }; - - var unsubscribe = subscribe(callback); - return unsubscribe; - }, [subscribe]); - - if (process.env.NODE_ENV !== 'production') { - // eslint-disable-next-line react-hooks/rules-of-hooks - (0, _utils.useAffectedDebugValue)(state, affected); - } - - var proxyCache = (0, _react.useRef)(new WeakMap()); // per-hook proxyCache - - return (0, _deepProxy.createDeepProxy)(state, affected, proxyCache.current); -}; - -exports.useTrackedState = useTrackedState; \ No newline at end of file diff --git a/dist/utils.js b/dist/utils.js deleted file mode 100644 index e397ff4..0000000 --- a/dist/utils.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.useAffectedDebugValue = exports.useIsomorphicLayoutEffect = void 0; - -var _react = require("react"); - -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } - -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } - -function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } - -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } - -var isClient = typeof window !== 'undefined' && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent); -var useIsomorphicLayoutEffect = isClient ? _react.useLayoutEffect : _react.useEffect; -exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect; - -var affectedToPathList = function affectedToPathList(state, affected) { - var list = []; - - var walk = function walk(obj, path) { - var used = affected.get(obj); - - if (used) { - used.forEach(function (key) { - walk(obj[key], path ? [].concat(_toConsumableArray(path), [key]) : [key]); - }); - } else if (path) { - list.push(path); - } - }; - - walk(state); - return list; -}; - -var useAffectedDebugValue = function useAffectedDebugValue(state, affected) { - var pathList = (0, _react.useRef)(null); - (0, _react.useEffect)(function () { - pathList.current = affectedToPathList(state, affected); - }); - (0, _react.useDebugValue)(pathList); -}; - -exports.useAffectedDebugValue = useAffectedDebugValue; \ No newline at end of file diff --git a/examples/01_minimal/src/index.js b/examples/01_minimal/src/index.js index 54fa6e1..56dd990 100644 --- a/examples/01_minimal/src/index.js +++ b/examples/01_minimal/src/index.js @@ -3,8 +3,7 @@ import ReactDOM from 'react-dom'; import { createStore } from 'redux'; import { - Provider, - useDispatch, + patchStore, useTrackedState, } from 'reactive-react-redux'; @@ -22,11 +21,11 @@ const reducer = (state = initialState, action) => { } }; -const store = createStore(reducer); +const store = patchStore(createStore(reducer)); const Counter = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(store); + const { dispatch } = store; return (
{Math.random()} @@ -40,8 +39,8 @@ const Counter = () => { }; const TextBox = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(store); + const { dispatch } = store; return (
{Math.random()} @@ -55,14 +54,14 @@ const TextBox = () => { const App = () => ( - + <>

Counter

TextBox

-
+
); diff --git a/examples/02_typescript/src/App.tsx b/examples/02_typescript/src/App.tsx index ebd3f53..fd5a86b 100644 --- a/examples/02_typescript/src/App.tsx +++ b/examples/02_typescript/src/App.tsx @@ -1,14 +1,18 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; import Person from './Person'; -const store = createStore(reducer); +const store = patchStore(createStore(reducer)); const App = () => ( diff --git a/examples/02_typescript/src/Counter.tsx b/examples/02_typescript/src/Counter.tsx index 32518c9..269c450 100644 --- a/examples/02_typescript/src/Counter.tsx +++ b/examples/02_typescript/src/Counter.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { const state = useTrackedState(); diff --git a/examples/02_typescript/src/Person.tsx b/examples/02_typescript/src/Person.tsx index c6073bd..69cdb26 100644 --- a/examples/02_typescript/src/Person.tsx +++ b/examples/02_typescript/src/Person.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; +import { useDispatch, useTrackedState } from './state'; const Counter: React.FC<{ firstName: string }> = ({ firstName }) => { const state = useTrackedState(); diff --git a/examples/02_typescript/src/index.ts b/examples/02_typescript/src/index.ts index 9e66668..d253691 100644 --- a/examples/02_typescript/src/index.ts +++ b/examples/02_typescript/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/02_typescript/src/state.ts b/examples/02_typescript/src/state.ts index dfed149..5155acb 100644 --- a/examples/02_typescript/src/state.ts +++ b/examples/02_typescript/src/state.ts @@ -1,6 +1,9 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-ignore -// @ts-ignore -import { Dispatch } from 'reactive-react-redux'; +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; const initialState = { count: 0, @@ -11,20 +14,15 @@ const initialState = { }, }; -type State = typeof initialState; +export type State = typeof initialState; -type Action = +export type Action = | { type: 'increment' } | { type: 'decrement' } | { type: 'setFirstName'; firstName: string } | { type: 'setLastName'; lastName: string } | { type: 'setAge'; age: number }; -declare module 'reactive-react-redux' { - interface RootState extends State {} - function useDispatch(): Dispatch -} - export const reducer = (state = initialState, action: Action) => { switch (action.type) { case 'increment': return { @@ -59,3 +57,22 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/03_deep/src/App.tsx b/examples/03_deep/src/App.tsx index ebd3f53..fd5a86b 100644 --- a/examples/03_deep/src/App.tsx +++ b/examples/03_deep/src/App.tsx @@ -1,14 +1,18 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; import Person from './Person'; -const store = createStore(reducer); +const store = patchStore(createStore(reducer)); const App = () => ( diff --git a/examples/03_deep/src/Counter.tsx b/examples/03_deep/src/Counter.tsx index e4d67f7..269c450 100644 --- a/examples/03_deep/src/Counter.tsx +++ b/examples/03_deep/src/Counter.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
{Math.random()} diff --git a/examples/03_deep/src/Person.tsx b/examples/03_deep/src/Person.tsx index cf608d3..954e88f 100644 --- a/examples/03_deep/src/Person.tsx +++ b/examples/03_deep/src/Person.tsx @@ -1,8 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const TextBox: React.SFC<{ text: string }> = ({ text }) => { // eslint-disable-next-line no-console @@ -11,8 +9,8 @@ const TextBox: React.SFC<{ text: string }> = ({ text }) => { }; const PersonFirstName = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
First Name: @@ -29,8 +27,8 @@ const PersonFirstName = () => { }; const PersonLastName = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
Last Name: @@ -47,8 +45,8 @@ const PersonLastName = () => { }; const PersonAge = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
Age: diff --git a/examples/03_deep/src/index.ts b/examples/03_deep/src/index.ts index 9e66668..d253691 100644 --- a/examples/03_deep/src/index.ts +++ b/examples/03_deep/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/03_deep/src/state.ts b/examples/03_deep/src/state.ts index 70f30c0..5155acb 100644 --- a/examples/03_deep/src/state.ts +++ b/examples/03_deep/src/state.ts @@ -1,3 +1,10 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + const initialState = { count: 0, person: { @@ -50,3 +57,22 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/04_immer/src/App.tsx b/examples/04_immer/src/App.tsx index ebd3f53..fd5a86b 100644 --- a/examples/04_immer/src/App.tsx +++ b/examples/04_immer/src/App.tsx @@ -1,14 +1,18 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; import Person from './Person'; -const store = createStore(reducer); +const store = patchStore(createStore(reducer)); const App = () => ( diff --git a/examples/04_immer/src/Counter.tsx b/examples/04_immer/src/Counter.tsx index e4d67f7..269c450 100644 --- a/examples/04_immer/src/Counter.tsx +++ b/examples/04_immer/src/Counter.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
{Math.random()} diff --git a/examples/04_immer/src/Person.tsx b/examples/04_immer/src/Person.tsx index cf608d3..954e88f 100644 --- a/examples/04_immer/src/Person.tsx +++ b/examples/04_immer/src/Person.tsx @@ -1,8 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const TextBox: React.SFC<{ text: string }> = ({ text }) => { // eslint-disable-next-line no-console @@ -11,8 +9,8 @@ const TextBox: React.SFC<{ text: string }> = ({ text }) => { }; const PersonFirstName = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
First Name: @@ -29,8 +27,8 @@ const PersonFirstName = () => { }; const PersonLastName = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
Last Name: @@ -47,8 +45,8 @@ const PersonLastName = () => { }; const PersonAge = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
Age: diff --git a/examples/04_immer/src/index.ts b/examples/04_immer/src/index.ts index 9e66668..d253691 100644 --- a/examples/04_immer/src/index.ts +++ b/examples/04_immer/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/04_immer/src/state.ts b/examples/04_immer/src/state.ts index abae64b..f5dc43e 100644 --- a/examples/04_immer/src/state.ts +++ b/examples/04_immer/src/state.ts @@ -1,3 +1,9 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; import { produce } from 'immer'; const initialState = { @@ -27,3 +33,22 @@ export const reducer = (state = initialState, action: Action) => produce(state, case 'setAge': draft.person.age = action.age; break; } }); + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/05_localstate/src/App.tsx b/examples/05_localstate/src/App.tsx index 3d10e1c..c2573eb 100644 --- a/examples/05_localstate/src/App.tsx +++ b/examples/05_localstate/src/App.tsx @@ -1,13 +1,17 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; -const store = createStore(reducer); +const store = patchStore(createStore(reducer)); const App = () => ( diff --git a/examples/05_localstate/src/Counter.tsx b/examples/05_localstate/src/Counter.tsx index a079161..ad8d0ed 100644 --- a/examples/05_localstate/src/Counter.tsx +++ b/examples/05_localstate/src/Counter.tsx @@ -1,13 +1,11 @@ import React, { useState } from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { const [count, setCount] = useState(0); - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
diff --git a/examples/05_localstate/src/index.ts b/examples/05_localstate/src/index.ts index 9e66668..d253691 100644 --- a/examples/05_localstate/src/index.ts +++ b/examples/05_localstate/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/05_localstate/src/state.ts b/examples/05_localstate/src/state.ts index 4152b79..a8cf70a 100644 --- a/examples/05_localstate/src/state.ts +++ b/examples/05_localstate/src/state.ts @@ -1,3 +1,10 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + const initialState = { count: 0, }; @@ -21,3 +28,22 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/06_memoization/src/App.tsx b/examples/06_memoization/src/App.tsx index ebd3f53..fd5a86b 100644 --- a/examples/06_memoization/src/App.tsx +++ b/examples/06_memoization/src/App.tsx @@ -1,14 +1,18 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; import Person from './Person'; -const store = createStore(reducer); +const store = patchStore(createStore(reducer)); const App = () => ( diff --git a/examples/06_memoization/src/Counter.tsx b/examples/06_memoization/src/Counter.tsx index e4d67f7..269c450 100644 --- a/examples/06_memoization/src/Counter.tsx +++ b/examples/06_memoization/src/Counter.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
{Math.random()} diff --git a/examples/06_memoization/src/Person.tsx b/examples/06_memoization/src/Person.tsx index c26f392..a9145d3 100644 --- a/examples/06_memoization/src/Person.tsx +++ b/examples/06_memoization/src/Person.tsx @@ -1,8 +1,6 @@ import React, { useMemo } from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const TextBox: React.SFC<{ text: string }> = ({ text }) => { // eslint-disable-next-line no-console @@ -11,8 +9,8 @@ const TextBox: React.SFC<{ text: string }> = ({ text }) => { }; const Person = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); const { age, firstName, lastName } = useMemo( () => ({ age: state.person.age, diff --git a/examples/06_memoization/src/index.ts b/examples/06_memoization/src/index.ts index 9e66668..d253691 100644 --- a/examples/06_memoization/src/index.ts +++ b/examples/06_memoization/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/06_memoization/src/state.ts b/examples/06_memoization/src/state.ts index 6c6082f..3fe1031 100644 --- a/examples/06_memoization/src/state.ts +++ b/examples/06_memoization/src/state.ts @@ -1,3 +1,10 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + const initialState = { count: 0, person: { @@ -58,3 +65,22 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/07_multistore/src/App.tsx b/examples/07_multistore/src/App.tsx index 6df4c98..1c0c2e2 100644 --- a/examples/07_multistore/src/App.tsx +++ b/examples/07_multistore/src/App.tsx @@ -1,15 +1,19 @@ import React, { useState, StrictMode } from 'react'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; import Person from './Person'; -const store1 = createStore(reducer); -const store2 = createStore(reducer); +const store1 = patchStore(createStore(reducer)); +const store2 = patchStore(createStore(reducer)); const App = () => { const [store, setStore] = useState(store1); diff --git a/examples/07_multistore/src/Counter.tsx b/examples/07_multistore/src/Counter.tsx index 3846ea1..48e718d 100644 --- a/examples/07_multistore/src/Counter.tsx +++ b/examples/07_multistore/src/Counter.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
diff --git a/examples/07_multistore/src/Person.tsx b/examples/07_multistore/src/Person.tsx index 78a0d32..7934a63 100644 --- a/examples/07_multistore/src/Person.tsx +++ b/examples/07_multistore/src/Person.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Person = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
diff --git a/examples/07_multistore/src/index.ts b/examples/07_multistore/src/index.ts index 9e66668..d253691 100644 --- a/examples/07_multistore/src/index.ts +++ b/examples/07_multistore/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/07_multistore/src/state.ts b/examples/07_multistore/src/state.ts index 70f30c0..5155acb 100644 --- a/examples/07_multistore/src/state.ts +++ b/examples/07_multistore/src/state.ts @@ -1,3 +1,10 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + const initialState = { count: 0, person: { @@ -50,3 +57,22 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/08_dynamic/src/App.tsx b/examples/08_dynamic/src/App.tsx index ebd3f53..fd5a86b 100644 --- a/examples/08_dynamic/src/App.tsx +++ b/examples/08_dynamic/src/App.tsx @@ -1,14 +1,18 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; import Person from './Person'; -const store = createStore(reducer); +const store = patchStore(createStore(reducer)); const App = () => ( diff --git a/examples/08_dynamic/src/Counter.tsx b/examples/08_dynamic/src/Counter.tsx index 7d329d9..9f0a7e5 100644 --- a/examples/08_dynamic/src/Counter.tsx +++ b/examples/08_dynamic/src/Counter.tsx @@ -1,13 +1,11 @@ import React, { useState } from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { const [index, setIndex] = useState(0); - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
{Math.random()} diff --git a/examples/08_dynamic/src/Person.tsx b/examples/08_dynamic/src/Person.tsx index 0f800da..bb90b09 100644 --- a/examples/08_dynamic/src/Person.tsx +++ b/examples/08_dynamic/src/Person.tsx @@ -1,13 +1,11 @@ import React, { useState } from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Person = () => { const [mode, setMode] = useState('first'); - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
{Math.random()} diff --git a/examples/08_dynamic/src/index.ts b/examples/08_dynamic/src/index.ts index 9e66668..d253691 100644 --- a/examples/08_dynamic/src/index.ts +++ b/examples/08_dynamic/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/08_dynamic/src/state.ts b/examples/08_dynamic/src/state.ts index a0b3d10..26185e9 100644 --- a/examples/08_dynamic/src/state.ts +++ b/examples/08_dynamic/src/state.ts @@ -1,3 +1,10 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + const initialState = { count: [0, 0, 0], person: { @@ -59,3 +66,22 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/09_thunk/src/App.tsx b/examples/09_thunk/src/App.tsx index a34d534..20175b2 100644 --- a/examples/09_thunk/src/App.tsx +++ b/examples/09_thunk/src/App.tsx @@ -1,15 +1,19 @@ import React, { StrictMode } from 'react'; import { createStore, applyMiddleware } from 'redux'; import reduxThunk from 'redux-thunk'; +import { patchStore } from 'reactive-react-redux'; -import { Provider } from 'reactive-react-redux'; - -import { reducer } from './state'; +import { + State, + Action, + Provider, + reducer, +} from './state'; import Counter from './Counter'; import Person from './Person'; -const store = createStore(reducer, applyMiddleware(reduxThunk)); +const store = patchStore(createStore(reducer, applyMiddleware(reduxThunk))); const App = () => ( diff --git a/examples/09_thunk/src/Counter.tsx b/examples/09_thunk/src/Counter.tsx index e4d67f7..269c450 100644 --- a/examples/09_thunk/src/Counter.tsx +++ b/examples/09_thunk/src/Counter.tsx @@ -1,12 +1,10 @@ import React from 'react'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { useDispatch, useTrackedState } from './state'; const Counter = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
{Math.random()} diff --git a/examples/09_thunk/src/Person.tsx b/examples/09_thunk/src/Person.tsx index d98505c..34606ed 100644 --- a/examples/09_thunk/src/Person.tsx +++ b/examples/09_thunk/src/Person.tsx @@ -2,13 +2,16 @@ import React from 'react'; import { Dispatch } from 'redux'; import { ThunkDispatch } from 'redux-thunk'; -import { useDispatch, useTrackedState } from 'reactive-react-redux'; - -import { Action, State } from './state'; +import { + useDispatch, + useTrackedState, + State, + Action, +} from './state'; const Counter: React.FC<{ firstName: string }> = ({ firstName }) => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); return (
{Math.random()} @@ -23,8 +26,8 @@ const Counter: React.FC<{ firstName: string }> = ({ firstName }) => { }; const Person = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); + const state = useTrackedState(); + const dispatch = useDispatch(); const setRandomFirstName = () => { const dispatchForThunk = dispatch as ThunkDispatch; dispatchForThunk(async (d: Dispatch) => { diff --git a/examples/09_thunk/src/index.ts b/examples/09_thunk/src/index.ts index 9e66668..d253691 100644 --- a/examples/09_thunk/src/index.ts +++ b/examples/09_thunk/src/index.ts @@ -1,9 +1,8 @@ +// eslint-disable-next-line spaced-comment +/// + import React from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; +import { createRoot } from 'react-dom'; import App from './App'; diff --git a/examples/09_thunk/src/state.ts b/examples/09_thunk/src/state.ts index 70f30c0..5155acb 100644 --- a/examples/09_thunk/src/state.ts +++ b/examples/09_thunk/src/state.ts @@ -1,3 +1,10 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + const initialState = { count: 0, person: { @@ -50,3 +57,22 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/11_todolist/src/actions/index.ts b/examples/11_todolist/src/actions/index.ts index 51df8eb..e0be1df 100644 --- a/examples/11_todolist/src/actions/index.ts +++ b/examples/11_todolist/src/actions/index.ts @@ -1,12 +1,12 @@ import { useCallback } from 'react'; -import { useDispatch } from 'reactive-react-redux'; -import { Action, VisibilityFilterType } from '../types'; +import { useDispatch } from '../context'; +import { VisibilityFilterType } from '../types'; let nextTodoId = 0; export const useAddTodo = () => { - const dispatch = useDispatch(); + const dispatch = useDispatch(); return useCallback((text: string) => { dispatch({ type: 'ADD_TODO', @@ -17,7 +17,7 @@ export const useAddTodo = () => { }; export const useSetVisibilityFilter = () => { - const dispatch = useDispatch(); + const dispatch = useDispatch(); return useCallback((filter: VisibilityFilterType) => { dispatch({ type: 'SET_VISIBILITY_FILTER', @@ -27,7 +27,7 @@ export const useSetVisibilityFilter = () => { }; export const useToggleTodo = () => { - const dispatch = useDispatch(); + const dispatch = useDispatch(); return useCallback((id: number) => { dispatch({ type: 'TOGGLE_TODO', diff --git a/examples/11_todolist/src/components/FilterLink.tsx b/examples/11_todolist/src/components/FilterLink.tsx index e781188..ce3919d 100644 --- a/examples/11_todolist/src/components/FilterLink.tsx +++ b/examples/11_todolist/src/components/FilterLink.tsx @@ -1,15 +1,15 @@ import React from 'react'; -import { useTrackedState } from 'reactive-react-redux'; +import { useTrackedState } from '../context'; import { useSetVisibilityFilter } from '../actions'; -import { State, VisibilityFilterType } from '../types'; +import { VisibilityFilterType } from '../types'; type Props = { filter: VisibilityFilterType; }; const FilterLink: React.FC = ({ filter, children }) => { - const state = useTrackedState(); + const state = useTrackedState(); const active = filter === state.visibilityFilter; const setVisibilityFilter = useSetVisibilityFilter(); return ( diff --git a/examples/11_todolist/src/components/VisibleTodoList.tsx b/examples/11_todolist/src/components/VisibleTodoList.tsx index 59ccbaf..e6829b3 100644 --- a/examples/11_todolist/src/components/VisibleTodoList.tsx +++ b/examples/11_todolist/src/components/VisibleTodoList.tsx @@ -1,9 +1,9 @@ /* eslint-disable react/jsx-props-no-spreading */ import React from 'react'; -import { useTrackedState } from 'reactive-react-redux'; -import { TodoType, State, VisibilityFilterType } from '../types'; +import { useTrackedState } from '../context'; +import { TodoType, VisibilityFilterType } from '../types'; import { useToggleTodo } from '../actions'; import Todo from './Todo'; @@ -21,7 +21,7 @@ const getVisibleTodos = (todos: TodoType[], filter: VisibilityFilterType) => { }; const VisibleTodoList: React.FC = () => { - const state = useTrackedState(); + const state = useTrackedState(); const visibleTodos = getVisibleTodos(state.todos, state.visibilityFilter); const toggleTodo = useToggleTodo(); return ( diff --git a/examples/11_todolist/src/context.ts b/examples/11_todolist/src/context.ts new file mode 100644 index 0000000..4d23ff6 --- /dev/null +++ b/examples/11_todolist/src/context.ts @@ -0,0 +1,27 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './types'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/11_todolist/src/index.tsx b/examples/11_todolist/src/index.tsx index 6565309..4c4e627 100644 --- a/examples/11_todolist/src/index.tsx +++ b/examples/11_todolist/src/index.tsx @@ -1,12 +1,14 @@ import React from 'react'; import { render } from 'react-dom'; -import { Provider } from 'reactive-react-redux'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; +import { Provider } from './context'; +import { State, Action } from './types'; import rootReducer from './reducers'; import App from './components/App'; -const store = createStore(rootReducer); +const store = patchStore(createStore(rootReducer)); render( diff --git a/examples/12_async/src/components/App.tsx b/examples/12_async/src/components/App.tsx index f7483bb..2ec6bc3 100644 --- a/examples/12_async/src/components/App.tsx +++ b/examples/12_async/src/components/App.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect } from 'react'; -import { useSelector } from 'reactive-react-redux'; +import { useSelector } from '../context'; import { State, SelectedSubreddit } from '../store/actions'; import useSelectSubreddit from '../hooks/useSelectSubreddit'; import useFetchPostsIfNeeded from '../hooks/useFetchPostsIfNeeded'; diff --git a/examples/12_async/src/context.ts b/examples/12_async/src/context.ts new file mode 100644 index 0000000..d0bdcd6 --- /dev/null +++ b/examples/12_async/src/context.ts @@ -0,0 +1,29 @@ +import { createContext, createElement, useContext } from 'react'; +import { + PatchedStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './store/actions'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: PatchedStore }> = ({ + store, + children, +}) => createElement(Context.Provider, { value: store }, children); + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); + +export const useStore = () => useContext(Context); diff --git a/examples/12_async/src/hooks/useFetchPostsIfNeeded.ts b/examples/12_async/src/hooks/useFetchPostsIfNeeded.ts index 31209c8..3465940 100644 --- a/examples/12_async/src/hooks/useFetchPostsIfNeeded.ts +++ b/examples/12_async/src/hooks/useFetchPostsIfNeeded.ts @@ -1,8 +1,7 @@ import { useCallback } from 'react'; -import { useDispatch } from 'reactive-react-redux'; -import { useStore } from '../index'; -import { Action, State, Post } from '../store/actions'; +import { useDispatch, useStore } from '../context'; +import { State, Post } from '../store/actions'; const shouldFetchPosts = (state: State, subreddit: string) => { const posts = state.postsBySubreddit[subreddit]; @@ -40,7 +39,7 @@ const extractPosts = (json: unknown): Post[] | null => { }; const useFetchPostsIfNeeded = () => { - const dispatch = useDispatch(); + const dispatch = useDispatch(); const store = useStore(); const fetchPostsIfNeeded = useCallback(async (subreddit: string) => { if (!shouldFetchPosts(store.getState(), subreddit)) { diff --git a/examples/12_async/src/hooks/useInvalidateSubreddit.ts b/examples/12_async/src/hooks/useInvalidateSubreddit.ts index e4a07b3..90154a7 100644 --- a/examples/12_async/src/hooks/useInvalidateSubreddit.ts +++ b/examples/12_async/src/hooks/useInvalidateSubreddit.ts @@ -1,10 +1,9 @@ import { useCallback } from 'react'; -import { useDispatch } from 'reactive-react-redux'; -import { Action } from '../store/actions'; +import { useDispatch } from '../context'; const useInvalidateSubreddit = () => { - const dispatch = useDispatch(); + const dispatch = useDispatch(); const invalidateSubreddit = useCallback((subreddit: string) => { dispatch({ type: 'INVALIDATE_SUBREDDIT', diff --git a/examples/12_async/src/hooks/useSelectSubreddit.ts b/examples/12_async/src/hooks/useSelectSubreddit.ts index 98f489d..217471a 100644 --- a/examples/12_async/src/hooks/useSelectSubreddit.ts +++ b/examples/12_async/src/hooks/useSelectSubreddit.ts @@ -1,10 +1,9 @@ import { useCallback } from 'react'; -import { useDispatch } from 'reactive-react-redux'; -import { Action } from '../store/actions'; +import { useDispatch } from '../context'; const useSelectSubreddit = () => { - const dispatch = useDispatch(); + const dispatch = useDispatch(); const selectSubreddit = useCallback((subreddit: string) => { dispatch({ type: 'SELECT_SUBREDDIT', diff --git a/examples/12_async/src/index.tsx b/examples/12_async/src/index.tsx index dfa953b..3976877 100644 --- a/examples/12_async/src/index.tsx +++ b/examples/12_async/src/index.tsx @@ -1,26 +1,22 @@ -import React, { createContext, useContext } from 'react'; -import { - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - createRoot, -} from 'react-dom'; -import { Provider } from 'reactive-react-redux'; +// eslint-disable-next-line spaced-comment +/// + +import React from 'react'; +import { createRoot } from 'react-dom'; import { createStore } from 'redux'; +import { patchStore } from 'reactive-react-redux'; +import { Provider } from './context'; +import { State, Action } from './store/actions'; import rootReducer from './store/reducers'; import App from './components/App'; -const store = createStore(rootReducer); - -const StoreContext = createContext(store); -export const useStore = () => useContext(StoreContext); +const store = patchStore(createStore(rootReducer)); const ele = document.getElementById('app'); if (!ele) throw new Error('no app'); createRoot(ele).render( - - - - - , + + + , ); diff --git a/package.json b/package.json index 1ea88b7..6807738 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,29 @@ { "name": "reactive-react-redux", "description": "React Redux binding with React Hooks and Proxy", - "version": "4.8.0", + "version": "5.0.0-alpha.1", "author": "Daishi Kato", "repository": { "type": "git", "url": "https://github.com/dai-shi/reactive-react-redux.git" }, + "source": "./src/index.ts", "main": "./dist/index.js", - "module": "./src/index.js", - "types": "./src/index.d.ts", + "module": "./dist/index.esm.js", + "browser": "./dist/index.umd.js", + "types": "./dist/src/index.d.ts", "sideEffects": false, "files": [ "src", "dist" ], "scripts": { - "compile": "babel src -d dist", + "compile": "microbundle build --format cjs,es,umd", "test": "run-s eslint tsc-test jest", "eslint": "eslint --ext .js,.ts,.tsx --ignore-pattern dist .", - "jest": "jest", + "jest": "jest --preset ts-jest/presets/js-with-ts", "tsc-test": "tsc --project . --noEmit", + "apidoc": "documentation readme --section API --markdown-toc false --parse-extension ts src/*.ts", "examples:01_minimal": "DIR=01_minimal EXT=js webpack-dev-server", "examples:02_typescript": "DIR=02_typescript webpack-dev-server", "examples:03_deep": "DIR=03_deep webpack-dev-server", @@ -43,19 +46,18 @@ "pure" ], "license": "MIT", - "dependencies": {}, + "dependencies": { + "proxy-compare": "^1.0.1" + }, "devDependencies": { - "@babel/cli": "^7.8.4", - "@babel/core": "^7.8.7", - "@babel/preset-env": "^7.8.7", - "@babel/preset-react": "^7.8.3", "@testing-library/react": "^9.5.0", + "@types/jest": "^25.1.4", "@types/react": "^16.9.23", "@types/react-dom": "^16.9.5", "@types/redux-logger": "^3.0.7", "@typescript-eslint/eslint-plugin": "^2.22.0", "@typescript-eslint/parser": "^2.22.0", - "babel-loader": "^8.0.6", + "documentation": "^12.1.4", "eslint": "^6.8.0", "eslint-config-airbnb": "^18.0.1", "eslint-plugin-import": "^2.20.1", @@ -65,11 +67,13 @@ "html-webpack-plugin": "^3.2.0", "immer": "^6.0.1", "jest": "^25.1.0", + "microbundle": "^0.12.0-next.8", "npm-run-all": "^4.1.5", "react": "experimental", "react-dom": "experimental", "redux": "^4.0.5", "redux-thunk": "^2.3.0", + "ts-jest": "^25.2.1", "ts-loader": "^6.2.1", "typescript": "^3.8.3", "webpack": "^4.42.0", @@ -77,13 +81,7 @@ "webpack-dev-server": "^3.10.3" }, "peerDependencies": { - "react": ">=16.8.0", + "react": ">=16.14.0", "redux": ">=4.0.0" - }, - "babel": { - "presets": [ - "@babel/preset-env", - "@babel/preset-react" - ] } } diff --git a/src/Provider.js b/src/Provider.js deleted file mode 100644 index c5b36f9..0000000 --- a/src/Provider.js +++ /dev/null @@ -1,76 +0,0 @@ -import { - createContext, - createElement, - useCallback, - useEffect, - useRef, - useState, -} from 'react'; - -// ------------------------------------------------------- -// context -// ------------------------------------------------------- - -const warningObject = { - get state() { - throw new Error('Please use '); - }, - get dispatch() { - throw new Error('Please use '); - }, - get subscribe() { - throw new Error('Please use '); - }, -}; - -const calculateChangedBits = (a, b) => ( - a.dispatch !== b.dispatch || a.subscribe !== b.subscribe ? 1 : 0 -); - -export const createCustomContext = ( - w = warningObject, - c = calculateChangedBits, -) => createContext(w, c); - -export const defaultContext = createCustomContext(); - -// ------------------------------------------------------- -// provider -// ------------------------------------------------------- - -export const Provider = ({ - store, - customContext = defaultContext, - children, -}) => { - const [state, setState] = useState(store.getState()); - const listeners = useRef([]); - useEffect(() => { - listeners.current.forEach((listener) => listener(state)); - }, [state]); - const subscribe = useCallback((listener) => { - listeners.current.push(listener); - const unsubscribe = () => { - const index = listeners.current.indexOf(listener); - listeners.current.splice(index, 1); - }; - // run once in case the state is already changed - listener(store.getState()); - return unsubscribe; - }, [store]); - useEffect(() => { - const callback = () => { - const nextState = store.getState(); - listeners.current.forEach((listener) => listener(nextState)); - setState(nextState); - }; - const unsubscribe = store.subscribe(callback); - callback(); // in case it's already changed - return unsubscribe; - }, [store]); - return createElement( - customContext.Provider, - { value: { state, dispatch: store.dispatch, subscribe } }, - children, - ); -}; diff --git a/src/deepProxy.js b/src/deepProxy.js deleted file mode 100644 index c3f8c6d..0000000 --- a/src/deepProxy.js +++ /dev/null @@ -1,149 +0,0 @@ -// ------------------------------------------------------- -// deep proxy -// ------------------------------------------------------- - -const OWN_KEYS_SYMBOL = Symbol('OWN_KEYS'); -const TRACK_MEMO_SYMBOL = Symbol('TRACK_MEMO'); -const GET_ORIGINAL_SYMBOL = Symbol('GET_ORIGINAL'); - -// check if obj is a plain object or an array -const isPlainObject = (obj) => { - try { - const proto = Object.getPrototypeOf(obj); - return proto === Object.prototype || proto === Array.prototype; - } catch (e) { - return false; - } -}; - -// copy obj if frozen -const unfreeze = (obj) => { - if (!Object.isFrozen(obj)) return obj; - if (Array.isArray(obj)) { - return Array.from(obj); - } - return Object.assign({}, obj); -}; - -const createProxyHandler = () => ({ - recordUsage(key) { - if (this.trackObj) return; - let used = this.affected.get(this.originalObj); - if (!used) { - used = new Set(); - this.affected.set(this.originalObj, used); - } - used.add(key); - }, - recordObjectAsUsed() { - this.trackObj = true; - this.affected.delete(this.originalObj); - }, - get(target, key) { - if (key === GET_ORIGINAL_SYMBOL) { - return this.originalObj; - } - this.recordUsage(key); - // eslint-disable-next-line no-use-before-define, @typescript-eslint/no-use-before-define - return createDeepProxy(target[key], this.affected, this.proxyCache); - }, - has(target, key) { - if (key === TRACK_MEMO_SYMBOL) { - this.recordObjectAsUsed(); - return true; - } - // LIMITATION: - // We simply record the same as get. - // This means { a: {} } and { a: {} } is detected as changed, - // if 'a' in obj is handled. - this.recordUsage(key); - return key in target; - }, - ownKeys(target) { - this.recordUsage(OWN_KEYS_SYMBOL); - return Reflect.ownKeys(target); - }, -}); - -export const createDeepProxy = (obj, affected, proxyCache) => { - if (!isPlainObject(obj)) return obj; - const origObj = obj[GET_ORIGINAL_SYMBOL]; // unwrap proxy - if (origObj) obj = origObj; - let proxyHandler = proxyCache && proxyCache.get(obj); - if (!proxyHandler) { - proxyHandler = createProxyHandler(); - proxyHandler.proxy = new Proxy(unfreeze(obj), proxyHandler); - proxyHandler.originalObj = obj; - proxyHandler.trackObj = false; // for trackMemo - if (proxyCache) { - proxyCache.set(obj, proxyHandler); - } - } - proxyHandler.affected = affected; - proxyHandler.proxyCache = proxyCache; - return proxyHandler.proxy; -}; - -const isOwnKeysChanged = (origObj, nextObj) => { - const origKeys = Reflect.ownKeys(origObj); - const nextKeys = Reflect.ownKeys(nextObj); - return origKeys.length !== nextKeys.length - || origKeys.some((k, i) => k !== nextKeys[i]); -}; - -export const isDeepChanged = ( - origObj, - nextObj, - affected, - cache, - assumeChangedIfNotAffected, -) => { - if (origObj === nextObj) return false; - if (typeof origObj !== 'object' || origObj === null) return true; - if (typeof nextObj !== 'object' || nextObj === null) return true; - const used = affected.get(origObj); - if (!used) return !!assumeChangedIfNotAffected; - if (cache) { - const hit = cache.get(origObj); - if (hit && hit.nextObj === nextObj) { - return hit.changed; - } - // for object with cycles (changed is `undefined`) - cache.set(origObj, { nextObj }); - } - let changed = null; - // eslint-disable-next-line no-restricted-syntax - for (const key of used) { - const c = key === OWN_KEYS_SYMBOL ? isOwnKeysChanged(origObj, nextObj) - : isDeepChanged( - origObj[key], - nextObj[key], - affected, - cache, - assumeChangedIfNotAffected !== false, - ); - if (typeof c === 'boolean') changed = c; - if (changed) break; - } - if (changed === null) changed = !!assumeChangedIfNotAffected; - if (cache) { - cache.set(origObj, { nextObj, changed }); - } - return changed; -}; - -// explicitly track object with memo -export const trackMemo = (obj) => { - if (isPlainObject(obj)) { - return TRACK_MEMO_SYMBOL in obj; - } - return false; -}; - -// get original object from proxy -export const getUntrackedObject = (obj) => { - if (isPlainObject(obj)) { - return obj[GET_ORIGINAL_SYMBOL] || null; - } - return null; -}; diff --git a/src/index.d.ts b/src/index.d.ts deleted file mode 100644 index ff8ccfc..0000000 --- a/src/index.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Context, ComponentType } from 'react'; -import { Store } from 'redux'; - -type BaseState = {}; - -export interface RootState extends BaseState {} - -type CustomContext = Context; - -export function createCustomContext(): CustomContext; - -export const Provider: ComponentType<{ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - store: Store; - customContext?: CustomContext; -}>; - -type Opts = { - customContext?: CustomContext; -}; - -export type Dispatch = (action: T) => T; - -export function useDispatch(opts?: Opts): Dispatch; - -export function useTrackedState< - State extends BaseState = RootState ->(opts?: Opts): State; - -export function useSelector< - State extends BaseState = RootState, - Selected = unknown ->( - selector: (state: State) => Selected, - equalityFn?: (a: Selected, b: Selected) => boolean - | Opts & { equalityFn?: (a: Selected, b: Selected) => boolean }, - opts?: Opts, -): Selected; - -// deep proxy utils - -/** - * If `obj` is a proxy, it will mark the entire object as used. - * Otherwise, it does nothing. - */ -export function trackMemo(obj: T): void; - -/** - * If `obj` is a proxy, it will return the original object. - * Otherwise, it will return null. - */ -export function getUntrackedObject(obj: T): T | null; diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 7bbbbba..0000000 --- a/src/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { Provider, createCustomContext } from './Provider'; -export { useDispatch } from './useDispatch'; -export { useTrackedState } from './useTrackedState'; -export { useSelector } from './useSelector'; -export { trackMemo, getUntrackedObject } from './deepProxy'; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..6932c72 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,4 @@ +export { PatchedStore, patchStore } from './patchStore'; +export { useSelector } from './useSelector'; +export { useTrackedState } from './useTrackedState'; +export { trackMemo, getUntrackedObject } from 'proxy-compare'; diff --git a/src/patchStore.ts b/src/patchStore.ts new file mode 100644 index 0000000..215fbc2 --- /dev/null +++ b/src/patchStore.ts @@ -0,0 +1,40 @@ +/* eslint-disable @typescript-eslint/ban-ts-ignore */ + +import { + // @ts-ignore + createMutableSource, +} from 'react'; +import { + Action as ReduxAction, + Store, +} from 'redux'; + +export type PatchedStore> = { + mutableSource: any; +} & Store; + +/** + * patch Redux store for React + * + * @example + * import { createStore } from 'redux'; + * import { patchStore } from 'reactive-react-redux'; + * + * const reducer = ...; + * const store = patchStore(createStore(reducer)); + */ +export const patchStore = >( + store: Store, +) => { + const mutableSource = createMutableSource(store, () => store.getState()); + (store as PatchedStore).mutableSource = mutableSource; + return store as PatchedStore; +}; + +export const subscribe = >( + store: Store, + callback: () => void, +) => { + const unsubscribe = store.subscribe(callback); + return unsubscribe; +}; diff --git a/src/useDispatch.js b/src/useDispatch.js deleted file mode 100644 index 54f7706..0000000 --- a/src/useDispatch.js +++ /dev/null @@ -1,11 +0,0 @@ -import { useContext } from 'react'; - -import { defaultContext } from './Provider'; - -export const useDispatch = (opts = {}) => { - const { - customContext = defaultContext, - } = opts; - const { dispatch } = useContext(customContext); - return dispatch; -}; diff --git a/src/useSelector.js b/src/useSelector.js deleted file mode 100644 index 9ea6868..0000000 --- a/src/useSelector.js +++ /dev/null @@ -1,49 +0,0 @@ -import { - useContext, - useEffect, - useRef, - useReducer, -} from 'react'; - -import { defaultContext } from './Provider'; - -import { useIsomorphicLayoutEffect } from './utils'; - -const isFunction = (f) => typeof f === 'function'; -const defaultEqualityFn = (a, b) => a === b; - -export const useSelector = (selector, eqlFn, opts) => { - const { - equalityFn = isFunction(eqlFn) ? eqlFn : defaultEqualityFn, - customContext = defaultContext, - } = opts || (!isFunction(eqlFn) && eqlFn) || {}; - const [, forceUpdate] = useReducer((c) => c + 1, 0); - const { state, subscribe } = useContext(customContext); - const selected = selector(state); - const ref = useRef(null); - useIsomorphicLayoutEffect(() => { - ref.current = { - equalityFn, - selector, - state, - selected, - }; - }); - useEffect(() => { - const callback = (nextState) => { - try { - if (ref.current.state === nextState - || ref.current.equalityFn(ref.current.selected, ref.current.selector(nextState))) { - // not changed - return; - } - } catch (e) { - // ignored (stale props or some other reason) - } - forceUpdate(); - }; - const unsubscribe = subscribe(callback); - return unsubscribe; - }, [subscribe]); - return selected; -}; diff --git a/src/useSelector.ts b/src/useSelector.ts new file mode 100644 index 0000000..a2b2e0e --- /dev/null +++ b/src/useSelector.ts @@ -0,0 +1,40 @@ +/* eslint-disable @typescript-eslint/ban-ts-ignore */ + +import { + useCallback, + // @ts-ignore + useMutableSource, +} from 'react'; +import { + Action as ReduxAction, + Store, +} from 'redux'; + +import { PatchedStore, subscribe } from './patchStore'; + +/** + * useSelector hook + * + * selector has to be stable. Either define it outside render + * or use useCallback if selector uses props. + * + * @example + * import { useCallback } from 'react'; + * import { useSelector } from 'reactive-react-redux'; + * + * const Component = ({ count }) => { + * const isBigger = useSelector(store, useCallack(state => state.count > count, [count])); + * ... + * }; + */ +export const useSelector = , Selected>( + patchedStore: PatchedStore, + selector: (state: State) => Selected, +) => { + const { mutableSource } = patchedStore; + const getSnapshot = useCallback((store: Store) => ( + selector(store.getState()) + ), [selector]); + const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe); + return selected; +}; diff --git a/src/useTrackedState.js b/src/useTrackedState.js deleted file mode 100644 index e5a43e2..0000000 --- a/src/useTrackedState.js +++ /dev/null @@ -1,59 +0,0 @@ -import { - useContext, - useEffect, - useRef, - useReducer, -} from 'react'; - -import { defaultContext } from './Provider'; - -import { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils'; - -import { createDeepProxy, isDeepChanged } from './deepProxy'; - -export const useTrackedState = (opts = {}) => { - const { - customContext = defaultContext, - } = opts; - const [, forceUpdate] = useReducer((c) => c + 1, 0); - const { state, subscribe } = useContext(customContext); - const affected = new WeakMap(); - const lastTracked = useRef(null); - useIsomorphicLayoutEffect(() => { - lastTracked.current = { - state, - affected, - cache: new WeakMap(), - /* eslint-disable no-nested-ternary, indent, @typescript-eslint/indent */ - assumeChangedIfNotAffected: - opts.unstable_forceUpdateForStateChange ? true - : opts.unstable_ignoreIntermediateObjectUsage ? false - : /* default */ null, - /* eslint-enable no-nested-ternary, indent, @typescript-eslint/indent */ - }; - }); - useEffect(() => { - const callback = (nextState) => { - if (lastTracked.current.state === nextState - || !isDeepChanged( - lastTracked.current.state, - nextState, - lastTracked.current.affected, - lastTracked.current.cache, - lastTracked.current.assumeChangedIfNotAffected, - )) { - // not changed - return; - } - forceUpdate(); - }; - const unsubscribe = subscribe(callback); - return unsubscribe; - }, [subscribe]); - if (process.env.NODE_ENV !== 'production') { - // eslint-disable-next-line react-hooks/rules-of-hooks - useAffectedDebugValue(state, affected); - } - const proxyCache = useRef(new WeakMap()); // per-hook proxyCache - return createDeepProxy(state, affected, proxyCache.current); -}; diff --git a/src/useTrackedState.ts b/src/useTrackedState.ts new file mode 100644 index 0000000..93a02d9 --- /dev/null +++ b/src/useTrackedState.ts @@ -0,0 +1,93 @@ +/* eslint-disable @typescript-eslint/ban-ts-ignore */ + +import { + useCallback, + // @ts-ignore + useMutableSource, + useRef, +} from 'react'; +import { + Action as ReduxAction, + Store, +} from 'redux'; +import { + createDeepProxy, + isDeepChanged, + MODE_ASSUME_UNCHANGED_IF_UNAFFECTED, + MODE_IGNORE_REF_EQUALITY, + MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP, +} from 'proxy-compare'; + +import { PatchedStore, subscribe } from './patchStore'; +import { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils'; + +const MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0; +const MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = ( + MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP +); +const MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root +const MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root + +type Opts = any; // TODO types + +/** + * useTrackedState hook + * + * It return the Redux state wrapped by Proxy, + * and the state prperty access is tracked. + * It will only re-render if accessed properties are changed. + * + * @example + * import { useTrackedState } from 'reactive-react-redux'; + * + * const Component = () => { + * const state = useTrackedState(store); + * ... + * }; + */ +export const useTrackedState = >( + patchedStore: PatchedStore, + opts: Opts = {}, +) => { + const { mutableSource } = patchedStore; + const affected = new WeakMap(); + const lastTracked = useRef(); + const getSnapshot = useCallback((store: Store) => { + const nextState = store.getState(); + const lastTrackedCurrent = lastTracked.current; + if (lastTrackedCurrent && (lastTrackedCurrent.state === nextState + || !isDeepChanged( + lastTrackedCurrent.state, + nextState, + lastTrackedCurrent.affected, + lastTrackedCurrent.cache, + lastTrackedCurrent.mode, + ))) { + // not changed + return lastTrackedCurrent.state; + } + return nextState; + }, []); + const state: State = useMutableSource(mutableSource, getSnapshot, subscribe); + useIsomorphicLayoutEffect(() => { + lastTracked.current = { + state, + affected, + cache: new WeakMap(), + /* eslint-disable no-nested-ternary, indent, @typescript-eslint/indent */ + /* eslint-disable no-nested-ternary, indent */ + mode: + opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED + : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED + : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE + : /* default */ MODE_DEFAULT, + /* eslint-enable no-nested-ternary, indent */ + }; + }); + if (process.env.NODE_ENV !== 'production') { + // eslint-disable-next-line react-hooks/rules-of-hooks + useAffectedDebugValue(state, affected); + } + const proxyCache = useRef(new WeakMap()); // per-hook proxyCache + return createDeepProxy(state, affected, proxyCache.current); +}; diff --git a/src/utils.js b/src/utils.ts similarity index 54% rename from src/utils.js rename to src/utils.ts index b379a2f..c9458de 100644 --- a/src/utils.js +++ b/src/utils.ts @@ -12,13 +12,16 @@ const isClient = ( export const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect; -const affectedToPathList = (state, affected) => { - const list = []; - const walk = (obj, path) => { - const used = affected.get(obj); +const affectedToPathList = ( + state: State, + affected: WeakMap>, +) => { + const list: string[][] = []; + const walk = (obj: unknown, path?: string[]) => { + const used = affected.get(obj as object); if (used) { used.forEach((key) => { - walk(obj[key], path ? [...path, key] : [key]); + walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]); }); } else if (path) { list.push(path); @@ -28,8 +31,11 @@ const affectedToPathList = (state, affected) => { return list; }; -export const useAffectedDebugValue = (state, affected) => { - const pathList = useRef(null); +export const useAffectedDebugValue = ( + state: State, + affected: WeakMap>, +) => { + const pathList = useRef(); useEffect(() => { pathList.current = affectedToPathList(state, affected); }); diff --git a/tsconfig.json b/tsconfig.json index dcb296e..3227cb3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,12 +6,14 @@ "module": "es2015", "moduleResolution": "node", "jsx": "react", + "allowJs": true, "noUnusedLocals": true, "noUnusedParameters": true, "sourceMap": true, "baseUrl": ".", "paths": { "reactive-react-redux": ["./src"] - } + }, + "outDir": "./dist" } } diff --git a/webpack.config.js b/webpack.config.js index bed1dc9..61588d8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -5,8 +5,11 @@ const { DIR, EXT = 'ts' } = process.env; module.exports = { mode: 'development', - devtool: 'source-map', + devtool: 'cheap-module-eval-source-map', entry: `./examples/${DIR}/src/index.${EXT}`, + output: { + publicPath: '/', + }, plugins: [ new HtmlWebpackPlugin({ template: `./examples/${DIR}/public/index.html`, @@ -14,19 +17,12 @@ module.exports = { ], module: { rules: [{ - test: /\.jsx?$/, - use: [{ - loader: 'babel-loader', - options: { - presets: [ - '@babel/preset-env', - '@babel/preset-react', - ], - }, - }], - }, { - test: /\.tsx?$/, + test: /\.[jt]sx?$/, + exclude: /node_modules/, loader: 'ts-loader', + options: { + transpileOnly: true, + }, }], }, resolve: { @@ -38,5 +34,6 @@ module.exports = { devServer: { port: process.env.PORT || '8080', contentBase: `./examples/${DIR}/public`, + historyApiFallback: true, }, }; diff --git a/yarn.lock b/yarn.lock index ce2658e..2c87d52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,23 +2,7 @@ # yarn lockfile v1 -"@babel/cli@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" - integrity sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag== - dependencies: - commander "^4.0.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - lodash "^4.17.13" - make-dir "^2.1.0" - slash "^2.0.0" - source-map "^0.5.0" - optionalDependencies: - chokidar "^2.1.8" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== @@ -34,7 +18,7 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.7.5", "@babel/core@^7.8.7": +"@babel/core@^7.1.0", "@babel/core@^7.1.2", "@babel/core@^7.5.5", "@babel/core@^7.7.5": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== @@ -55,7 +39,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": +"@babel/generator@^7.1.3", "@babel/generator@^7.8.6", "@babel/generator@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.7.tgz#870b3cf7984f5297998152af625c4f3e341400f7" integrity sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew== @@ -108,6 +92,18 @@ levenary "^1.1.1" semver "^5.5.0" +"@babel/helper-create-class-features-plugin@^7.5.5", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/helper-create-regexp-features-plugin@^7.8.3": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz#7fa040c97fb8aebe1247a5c645330c32d083066b" @@ -164,7 +160,7 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.8.3": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== @@ -267,7 +263,12 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": +"@babel/parser@7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" + integrity sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w== + +"@babel/parser@^7.1.0", "@babel/parser@^7.3.3", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.7.tgz#7b8facf95d25fef9534aad51c4ffecde1a61e26a" integrity sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A== @@ -281,6 +282,39 @@ "@babel/helper-remap-async-to-generator" "^7.8.3" "@babel/plugin-syntax-async-generators" "^7.8.0" +"@babel/plugin-proposal-class-properties@7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz#a974cfae1e37c3110e71f3c6a2e48b8e71958cd4" + integrity sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.5.5" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-class-properties@^7.1.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-proposal-decorators@^7.1.2": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + +"@babel/plugin-proposal-do-expressions@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.8.3.tgz#2ccf97061e93d5ffff986dda3f1b54efe9df7719" + integrity sha512-NoMcN+0+SS1DVswjDCfz+Jfm9ViOYuFtv1lm0QInEugbEXK2iH3jeSq38WmIiTP+2QKqo2zt8xku77gqHINZkw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-do-expressions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" @@ -289,7 +323,40 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.8.3": +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.8.3.tgz#4cb7c2fdeaed490b60d9bfd3dc8a20f81f9c2e7c" + integrity sha512-PYtv2S2OdCdp7GSPDg5ndGZFm9DmWFvuLoS5nBxZCgOBggluLnhTScspJxng96alHQzPyrrHxvC9/w4bFuspeA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-export-default-from" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.8.3.tgz#63ad57265d0e3912afd666eb44ce26fa8cd2c774" + integrity sha512-WKK+9jz6TWUTX1uej9/EUVOmM1sK7aHv6bZyxbUV3NJjbiIZRqJITeXGMo7D631J72PEnIORh5VOlFCSlrLicg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-function-bind@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.8.3.tgz#e34a1e984771b84b6e5322745edeadca7e500ced" + integrity sha512-6q7VAHJQa9x4P6Lm6h6KHoJUEhx2r1buFKseHICe0ogb1LWxducO4tsQp3hd/7BVBo485YBsn6tJnpuwWm/9cA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-function-bind" "^7.8.3" + +"@babel/plugin-proposal-function-sent@^7.1.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.8.3.tgz#341fd532b7eadbbbdd8bcb715150f279a779f14f" + integrity sha512-lu9wQjLnXd6Zy6eBKr0gE175xfD+da1rv2wOWEnZlD5KIxl894Tg34ppZ7ANR0jzQJMn+7pGuzSdy6JK4zGtKg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/plugin-syntax-function-sent" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.0.0", "@babel/plugin-proposal-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== @@ -297,7 +364,15 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-proposal-logical-assignment-operators@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.8.3.tgz#e94810d96cb76f20524e66ba617171c21f3c0124" + integrity sha512-TLPLojGZYBeeoesO2NQIMLUJKD9N5oJlxG6iHLx7l7EvNQP5DfzeyxdI2lMPo5I7ih4Jv/vxrlwIPf6aJw422Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== @@ -305,6 +380,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@babel/plugin-proposal-numeric-separator@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz#eb5ae366118ddca67bed583b53d7554cad9951bb" @@ -321,7 +404,7 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.8.3": +"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz#ae10b3214cb25f7adb1f3bc87ba42ca10b7e2543" integrity sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg== @@ -329,6 +412,22 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-pipeline-operator@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.8.3.tgz#c3569228e7466f91bfff7f1c1ae18fb5d36b3097" + integrity sha512-Z0qV3aUYoLUAnVLdfLTlz/GJYfcrbX7Mhrp897Twik29wQseAFAAXQ4TPvN1oswVBHdN74sLPIn9HVfTXtjuQA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-pipeline-operator" "^7.8.3" + +"@babel/plugin-proposal-throw-expressions@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.8.3.tgz#155f36ae40c2a88ae685c35e3220f8a0d426cf24" + integrity sha512-tH40s9JnoR+r45ZXKWW+PC5xzPQfVJix3pR1D8Ty5l9sn5NnrbZUzw8MtnNxu/Bz7p0imyeSYj9FQVccEymOEg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-throw-expressions" "^7.8.3" + "@babel/plugin-proposal-unicode-property-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" @@ -351,13 +450,69 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@^7.8.0": +"@babel/plugin-syntax-decorators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" + integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-do-expressions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.8.3.tgz#e54edb578dc2c05e3b0055fac5cc55a9767d22dd" + integrity sha512-puRiUTVDQ69iRX41eeVWqOftZK31waWqZfwKB/TGzPfgi7097twx/DpwfOfyqEGqYtvpQF3jpHwT6UBzvSyAjw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-export-default-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.8.3.tgz#f1e55ce850091442af4ba9c2550106035b29d678" + integrity sha512-a1qnnsr73KLNIQcQlcQ4ZHxqqfBKM6iNQZW2OMTyxNbA2WC7SHWHtGVpFzWtQAuS2pspkWVzdEBXXx8Ik0Za4w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-function-bind@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.8.3.tgz#17d722cd8efc9bb9cf8bc59327f2b26295b352f7" + integrity sha512-gEYag4Q3CfqlQcJQQw/KSWdV2husGOnIsOsRlyzkoaNqj2V/V/CSdSJDCGSl67oJ1bdIYP6TjORWPH561dSJpA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-function-sent@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.8.3.tgz#5a4874bdfc271f0fa1c470bf508dc54af3041e19" + integrity sha512-NNEutF0x2PdWYij2bmf/i50dSq4SUdgFij4BZwj3I4qDZgql3dlFJRyvwGHAhwKYElUKHaP0wQ/yO1d/enpJaw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-meta@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.8.3.tgz#230afff79d3ccc215b5944b438e4e266daf3d84d" + integrity sha512-vYiGd4wQ9gx0Lngb7+bPCwQXGK/PR6FeTIJ+TIOlq+OfOKG/kCAOO2+IBac3oMM9qV7/fU76hfcqxUaLKZf1hQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -365,13 +520,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.8.3": +"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" + integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" @@ -379,6 +541,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" @@ -400,6 +569,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-pipeline-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.8.3.tgz#945d9f13958408e2b1048f6ebe03f370d390aaca" + integrity sha512-GhiBvlXZLWeP+MjKaEv33KmiR/QMCv4iCwz1AuuAp7pHxBvOxxyQmIPukh+N/py6PRLYG10bvRCNeenG34QbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-throw-expressions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.8.3.tgz#c763bcf26d202ddb65f1299a29d63aad312adb54" + integrity sha512-Mv3shY1i7ZssY4OY+eLZJAmNCwqTcpv2qOKO9x6irELSygfKWVSMXk0igJsA9UhU4hOdw0qMGkjj9TAk4MqzwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" @@ -489,6 +672,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-flow-strip-types@^7.4.4", "@babel/plugin-transform-flow-strip-types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz#da705a655466b2a9b36046b57bf0cbcd53551bd4" + integrity sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + "@babel/plugin-transform-for-of@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" @@ -616,7 +807,7 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-react-jsx@^7.8.3": +"@babel/plugin-transform-react-jsx@^7.3.0", "@babel/plugin-transform-react-jsx@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz#4220349c0390fdefa505365f68c103562ab2fc4a" integrity sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g== @@ -684,7 +875,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@^7.8.7": +"@babel/preset-env@^7.1.0", "@babel/preset-env@^7.5.5": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== @@ -747,7 +938,15 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-react@^7.8.3": +"@babel/preset-flow@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.8.3.tgz#52af74c6a4e80d889bd9436e8e278d0fecac6e18" + integrity sha512-iCXFk+T4demnq+dNLLvlGOgvYF6sPZ/hS1EmswugOqh1Ysp2vuiqJzpgsnp5rW8+6dLJT/0CXDzye28ZH6BAfQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-flow-strip-types" "^7.8.3" + +"@babel/preset-react@^7.0.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.8.3.tgz#23dc63f1b5b0751283e04252e78cf1d6589273d2" integrity sha512-9hx0CwZg92jGb7iHYQVgi0tOEHP/kM60CtWJQnmbATSPIQQ2xYzfoCI3EdqAhFBeeJwYMdWQuDUHMsuDbH9hyQ== @@ -758,6 +957,11 @@ "@babel/plugin-transform-react-jsx-self" "^7.8.3" "@babel/plugin-transform-react-jsx-source" "^7.8.3" +"@babel/preset-stage-0@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/preset-stage-0/-/preset-stage-0-7.8.3.tgz#b6a0eca1a3b72e07f9caf58f998e97568028f6f5" + integrity sha512-+l6FlG1j73t4wh78W41StbcCz0/9a1/y+vxfnjtHl060kSmcgMfGzK9MEkLvrCOXfhp9RCX+d88sm6rOqxEIEQ== + "@babel/runtime-corejs3@^7.7.4", "@babel/runtime-corejs3@^7.8.3": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c" @@ -766,7 +970,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.4.5", "@babel/runtime@^7.7.4", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== @@ -782,7 +986,7 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.4", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== @@ -797,7 +1001,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": +"@babel/types@^7.0.0", "@babel/types@^7.1.3", "@babel/types@^7.3.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== @@ -1002,10 +1206,53 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@rollup/plugin-alias@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.0.1.tgz#eb0549da7177a09e2d6d9d852e4cc5058f3e2104" + integrity sha512-ReSy6iPl3GsWLMNeshXAfgItZFMoMOTYC7MZQQM5va4pqxiGgwl1xZUZfHW6zGyZPK+k8TBadxx+kdmepiUa+g== + dependencies: + slash "^3.0.0" + +"@rollup/plugin-commonjs@^11.0.1": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.2.tgz#837cc6950752327cb90177b608f0928a4e60b582" + integrity sha512-MPYGZr0qdbV5zZj8/2AuomVpnRVXRU5XKXb3HVniwRoRCreGlf5kOE081isNWeiLIi6IYkwTX9zE0/c7V8g81g== + dependencies: + "@rollup/pluginutils" "^3.0.0" + estree-walker "^1.0.1" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-json@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.0.2.tgz#482185ee36ac7dd21c346e2dbcc22ffed0c6f2d6" + integrity sha512-t4zJMc98BdH42mBuzjhQA7dKh0t4vMJlUka6Fz0c+iO5IVnWaEMiYBy1uBj9ruHZzXBW23IPDGL9oCzBkQ9Udg== + dependencies: + "@rollup/pluginutils" "^3.0.4" + +"@rollup/plugin-node-resolve@^7.0.0": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.1.tgz#8c6e59c4b28baf9d223028d0e450e06a485bb2b7" + integrity sha512-14ddhD7TnemeHE97a4rLOhobfYvUVcaYuqTnL8Ti7Jxi9V9Jr5LY7Gko4HZ5k4h4vqQM0gBQt6tsp9xXW94WPA== + dependencies: + "@rollup/pluginutils" "^3.0.6" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/pluginutils@^3.0.0", "@rollup/pluginutils@^3.0.4", "@rollup/pluginutils@^3.0.6": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.8.tgz#4e94d128d94b90699e517ef045422960d18c8fde" + integrity sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw== + dependencies: + estree-walker "^1.0.1" + "@sheerun/mutationobserver-shim@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" - integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== + version "0.3.3" + resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25" + integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== "@sinonjs/commons@^1.7.0": version "1.7.1" @@ -1079,6 +1326,16 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/estree@*": + version "0.0.42" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.42.tgz#8d0c1f480339efedb3e46070e22dd63e0430dd11" + integrity sha512-K1DPVvnBCPxzD+G51/cxVIoc2X8uUVl1zpJeE6iKcgHMj4+tbat5Xu4TjV7v2QSDbIeAfLi2hIk+u2+s0MlpUQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1113,6 +1370,14 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" +"@types/jest@^25.1.4": + version "25.1.4" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760" + integrity sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw== + dependencies: + jest-diff "^25.1.0" + pretty-format "^25.1.0" + "@types/json-schema@^7.0.3": version "7.0.4" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" @@ -1128,11 +1393,21 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.0.tgz#5b6ee7a77faacddd7de719017d0bc12f52f81589" integrity sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + "@types/react-dom@*", "@types/react-dom@^16.9.5": version "16.9.5" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7" @@ -1155,15 +1430,22 @@ dependencies: redux "^3.6.0" +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/testing-library__dom@*", "@types/testing-library__dom@^6.12.1": - version "6.12.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.12.1.tgz#37af28fae051f9e3feed5684535b1540c97ae28b" - integrity sha512-cgqnEjxKk31tQt29j4baSWaZPNjQf3bHalj2gcHQTpW5SuHRal76gOpF0vypeEo6o+sS5inOvvNdzLY0B3FB2A== + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz#1aede831cb4ed4a398448df5a2c54b54a365644e" + integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA== dependencies: pretty-format "^24.3.0" @@ -1176,6 +1458,11 @@ "@types/testing-library__dom" "*" pretty-format "^25.1.0" +"@types/unist@^2.0.0", "@types/unist@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -1196,39 +1483,39 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^2.22.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.22.0.tgz#218ce6d4aa0244c6a40baba39ca1e021b26bb017" - integrity sha512-BvxRLaTDVQ3N+Qq8BivLiE9akQLAOUfxNHIEhedOcg8B2+jY8Rc4/D+iVprvuMX1AdezFYautuGDwr9QxqSxBQ== + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.23.0.tgz#aa7133bfb7b685379d9eafe4ae9e08b9037e129d" + integrity sha512-8iA4FvRsz8qTjR0L/nK9RcRUN3QtIHQiOm69FzV7WS3SE+7P7DyGGwh3k4UNR2JBbk+Ej2Io+jLAaqKibNhmtw== dependencies: - "@typescript-eslint/experimental-utils" "2.22.0" + "@typescript-eslint/experimental-utils" "2.23.0" eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.22.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.22.0.tgz#4d00c91fbaaa68e56e7869be284999a265707f85" - integrity sha512-sJt1GYBe6yC0dWOQzXlp+tiuGglNhJC9eXZeC8GBVH98Zv9jtatccuhz0OF5kC/DwChqsNfghHx7OlIDQjNYAQ== +"@typescript-eslint/experimental-utils@2.23.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz#5d2261c8038ec1698ca4435a8da479c661dc9242" + integrity sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.22.0" + "@typescript-eslint/typescript-estree" "2.23.0" eslint-scope "^5.0.0" "@typescript-eslint/parser@^2.22.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.22.0.tgz#8eeb6cb6de873f655e64153397d4790898e149d0" - integrity sha512-FaZKC1X+nvD7qMPqKFUYHz3H0TAioSVFGvG29f796Nc5tBluoqfHgLbSFKsh7mKjRoeTm8J9WX2Wo9EyZWjG7w== + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.23.0.tgz#f3d4e2928ff647fe77fc2fcef1a3534fee6a3212" + integrity sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.22.0" - "@typescript-eslint/typescript-estree" "2.22.0" + "@typescript-eslint/experimental-utils" "2.23.0" + "@typescript-eslint/typescript-estree" "2.23.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.22.0": - version "2.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.22.0.tgz#a16ed45876abf743e1f5857e2f4a1c3199fd219e" - integrity sha512-2HFZW2FQc4MhIBB8WhDm9lVFaBDy6h9jGrJ4V2Uzxe/ON29HCHBTj3GkgcsgMWfsl2U5as+pTOr30Nibaw7qRQ== +"@typescript-eslint/typescript-estree@2.23.0": + version "2.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz#d355960fab96bd550855488dcc34b9a4acac8d36" + integrity sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -1394,16 +1681,19 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +JSONStream@^1.0.3: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -1430,12 +1720,17 @@ acorn-walk@^6.0.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn@^5.2.1: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + acorn@^6.0.1, acorn@^6.2.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.0: +acorn@^7.1.0, acorn@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== @@ -1460,6 +1755,11 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" @@ -1472,7 +1772,7 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -ansi-html@0.0.7: +ansi-html@0.0.7, ansi-html@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= @@ -1497,6 +1797,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1528,19 +1833,18 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3, aproba@^1.1.1: +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1694,11 +1998,29 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +asyncro@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" + integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== + atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^9.6.1: + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== + dependencies: + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.26" + postcss-value-parser "^4.0.2" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1727,16 +2049,6 @@ babel-jest@^25.1.0: chalk "^3.0.0" slash "^3.0.0" -babel-loader@^8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== - dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" - babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -1762,6 +2074,27 @@ babel-plugin-jest-hoist@^25.1.0: dependencies: "@types/babel__traverse" "^7.0.6" +babel-plugin-macros@^2.4.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-transform-async-to-promises@^0.8.14: + version "0.8.15" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.15.tgz#13b6d8ef13676b4e3c576d3600b85344bb1ba346" + integrity sha512-fDXP68ZqcinZO2WCiimCL9zhGjGXOnn3D33zvbh+yheZ/qOrNVVDDIBtAaM3Faz8TRvQzHiRKsu3hfrBAhEncQ== + +babel-plugin-transform-replace-expressions@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-replace-expressions/-/babel-plugin-transform-replace-expressions-0.2.0.tgz#59cba8df4b4a675e7c78cd21548f8e7685bbc30d" + integrity sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA== + dependencies: + "@babel/parser" "^7.3.3" + babel-preset-jest@^25.1.0: version "25.1.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.1.0.tgz#d0aebfebb2177a21cde710996fce8486d34f1d33" @@ -1771,6 +2104,16 @@ babel-preset-jest@^25.1.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^25.1.0" +babelify@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" + integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1854,6 +2197,16 @@ body-parser@1.19.0: raw-body "2.4.0" type-is "~1.6.17" +body@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" + integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= + dependencies: + continuable-cache "^0.3.1" + error "^7.0.0" + raw-body "~1.1.0" + safe-json-parse "~1.0.1" + bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" @@ -1866,7 +2219,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -1907,12 +2260,19 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +brotli-size@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== + dependencies: + duplexer "0.1.1" + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: +browser-resolve@^1.11.3, browser-resolve@^1.7.0: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== @@ -1978,7 +2338,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: +browserslist@^4.0.0, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: version "4.9.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.9.1.tgz#01ffb9ca31a1aef7678128fc6a2253316aa7287c" integrity sha512-Q0DnKq20End3raFulq6Vfp1ecB9fh8yUNV55s8sekaDDeqBaCtWlRHCUdaWyUeSSBJM7IbM6HcsyaeYqgeDhnw== @@ -1987,6 +2347,13 @@ browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: electron-to-chromium "^1.3.363" node-releases "^1.1.50" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -1994,7 +2361,12 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-from@^1.0.0: +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -2004,6 +2376,11 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= + buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -2018,11 +2395,21 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +bytes@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" + integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2069,6 +2456,30 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cached-path-relative@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" + integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -2087,10 +2498,20 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001030: - version "1.0.30001032" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001032.tgz#b8d224914e2cd7f507085583d4e38144c652bce4" - integrity sha512-8joOm7BwcpEN4BfVHtfh0hBXSAPVYk+eUIcNntGtMkUWy/6AKRCDZINCLe3kB1vHhT2vBxBF85Hh9VlPXi/qjA== +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== capture-exit@^2.0.0: version "2.0.0" @@ -2104,7 +2525,12 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: +ccount@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" + integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2113,6 +2539,17 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -2121,12 +2558,32 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +character-entities-html4@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" + integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.0.2, chokidar@^2.1.8: +chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -2226,16 +2683,54 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + collect-v8-coverage@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" @@ -2249,7 +2744,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -2268,11 +2763,27 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2280,6 +2791,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +comma-separated-tokens@^1.0.1: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + commander@2.17.x: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -2290,11 +2806,6 @@ commander@^2.11.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - commander@~2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" @@ -2335,7 +2846,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -2345,6 +2856,22 @@ concat-stream@^1.5.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@~1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266" + integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY= + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +concat-with-sourcemaps@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + confusing-browser-globals@^1.0.7: version "1.0.9" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" @@ -2360,11 +2887,6 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -2387,7 +2909,12 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +continuable-cache@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" + integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= + +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2439,6 +2966,27 @@ 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= +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -2507,6 +3055,36 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.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" + integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= + dependencies: + icss-replace-symbols "1.1.0" + postcss "6.0.1" + postcss-modules-extract-imports "1.1.0" + postcss-modules-local-by-default "1.2.0" + postcss-modules-scope "1.1.0" + postcss-modules-values "1.3.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + css-select@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -2517,11 +3095,123 @@ css-select@^1.1.0: domutils "1.5.1" nth-check "~1.0.1" +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz#11e5e27c9a48d90284f22d45061c303d7a25ad87" + integrity sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + regexpu-core "^4.6.0" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10, cssnano@^4.1.8: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + cssom@^0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -2570,6 +3260,11 @@ data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2577,7 +3272,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2613,11 +3308,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2660,6 +3350,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -2678,11 +3373,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -2701,16 +3391,18 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.3.tgz#33e5dd74d230501bd69985a0d2b9a3382699a130" + integrity sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A== + dependencies: + repeat-string "^1.5.4" + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -2721,11 +3413,24 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +detective@^4.0.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" + integrity sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig== + dependencies: + acorn "^5.2.1" + defined "^1.0.0" + diff-sequences@^25.1.0: version "25.1.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32" integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -2755,6 +3460,13 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" +doctrine-temporary-fork@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine-temporary-fork/-/doctrine-temporary-fork-2.1.0.tgz#36f2154f556ee4f1e60311d391cd23de5187ed57" + integrity sha512-nliqOv5NkE4zMON4UA6AMJE6As35afs8aYXATpU4pTUdIKiARZwrJVEP1boA3Rx1ZXHVkwxkhcq4VkqvsuRLsA== + dependencies: + esutils "^2.0.2" + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -2777,6 +3489,77 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +documentation@^12.1.4: + version "12.1.4" + resolved "https://registry.yarnpkg.com/documentation/-/documentation-12.1.4.tgz#ec0aafbd9d3879a44189d2d4434953ae3a258598" + integrity sha512-GGS635tR8bBR/m/AuUZ6MCZmFXZA25Wk9S/TTHNe+EMkTCoDdlcft56dZCjF7voCmfnMqKRo8sXAukf/ciA5IA== + dependencies: + "@babel/core" "^7.1.2" + "@babel/generator" "^7.1.3" + "@babel/parser" "7.1.3" + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-decorators" "^7.1.2" + "@babel/plugin-proposal-do-expressions" "^7.0.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-export-namespace-from" "^7.0.0" + "@babel/plugin-proposal-function-bind" "^7.0.0" + "@babel/plugin-proposal-function-sent" "^7.1.0" + "@babel/plugin-proposal-json-strings" "^7.0.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-proposal-pipeline-operator" "^7.0.0" + "@babel/plugin-proposal-throw-expressions" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-import-meta" "^7.0.0" + "@babel/preset-env" "^7.1.0" + "@babel/preset-flow" "^7.0.0" + "@babel/preset-react" "^7.0.0" + "@babel/preset-stage-0" "^7.0.0" + "@babel/traverse" "^7.1.4" + "@babel/types" "^7.1.3" + ansi-html "^0.0.7" + babelify "^10.0.0" + chalk "^2.3.0" + chokidar "^2.0.4" + concat-stream "^1.6.0" + diff "^4.0.1" + doctrine-temporary-fork "2.1.0" + get-port "^4.0.0" + git-url-parse "^11.1.2" + github-slugger "1.2.0" + glob "^7.1.2" + globals-docs "^2.4.0" + highlight.js "^9.15.5" + ini "^1.3.5" + js-yaml "^3.10.0" + lodash "^4.17.10" + mdast-util-inject "^1.1.0" + micromatch "^3.1.5" + mime "^2.2.0" + module-deps-sortable "5.0.0" + parse-filepath "^1.0.2" + pify "^4.0.0" + read-pkg-up "^4.0.0" + remark "^9.0.0" + remark-html "^8.0.0" + remark-reference-links "^4.0.1" + remark-toc "^5.0.0" + resolve "^1.8.1" + stream-array "^1.1.2" + strip-json-comments "^2.0.1" + tiny-lr "^1.1.0" + unist-builder "^1.0.2" + unist-util-visit "^1.3.0" + vfile "^4.0.0" + vfile-reporter "^6.0.0" + vfile-sort "^2.1.0" + vinyl "^2.1.0" + vinyl-fs "^3.0.2" + vue-template-compiler "^2.5.16" + yargs "^12.0.2" + dom-accessibility-api@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983" @@ -2834,7 +3617,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1: +domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -2842,6 +3625,25 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +duplexer2@^0.1.2, duplexer2@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" + +duplexer@0.1.1, duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -2866,9 +3668,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.363: - version "1.3.372" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.372.tgz#fb61b6dfe06f3278a384d084ebef75d463ec7580" - integrity sha512-77a4jYC52OdisHM+Tne7dgWEvQT1FoNu/jYl279pP88ZtG4ZRIPyhQwAKxj6C2rzsyC1OwsOds9JlZtNncSz6g== + version "1.3.376" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.376.tgz#7cb7b5205564a06c8f8ecfbe832cbd47a1224bb1" + integrity sha512-cv/PYVz5szeMz192ngilmezyPNFkUjuynuL2vNdiqIrio440nfTDdc0JJU0TS2KHLSVCs9gBbt4CFqM+HcBnjw== elliptic@^6.0.0: version "6.5.2" @@ -2883,6 +3685,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +"emoji-regex@>=6.0.0 <=6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" + integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= + emoji-regex@^7.0.1, emoji-regex@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2957,6 +3764,13 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +error@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" + integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA== + dependencies: + string-template "~0.2.1" + es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: version "1.17.4" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" @@ -2983,12 +3797,17 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-promisify@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.2.tgz#525c23725b8510f5f1f2feb5a1fbad93a93e29b4" + integrity sha512-eO6vFm0JvqGzjWIQA6QVKjxpmELfhWbDUWHm1rPfIbn55mhKPiAa5xpLmQWJrNa629ZIeQ8ZvMAi13kvrjK6Mg== + 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= -escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -3167,11 +3986,11 @@ eslint@^6.8.0: v8-compile-cache "^2.0.3" espree@^6.1.2: - version "6.2.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.0.tgz#349fef01a202bbab047748300deb37fa44da79d7" - integrity sha512-Xs8airJ7RQolnDIbLtRutmfvSsAe0xqMMAantCN/GMoqf81TFbeI1T7Jpd56qYu1uuh32dOG5W/X9uO+ghPXzA== + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== dependencies: - acorn "^7.1.0" + acorn "^7.1.1" acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" @@ -3199,6 +4018,16 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.0, esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3356,7 +4185,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -3399,7 +4228,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -3409,7 +4238,12 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -faye-websocket@^0.10.0: +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +faye-websocket@^0.10.0, faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= @@ -3435,6 +4269,14 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== +figures@^1.0.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -3454,6 +4296,11 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filesize@^4.1.2: + version "4.2.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.2.1.tgz#ab1cb2069db5d415911c1a13e144c0e743bc89bc" + integrity sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3484,7 +4331,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -3539,7 +4386,7 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== -flush-write-stream@^1.0.0: +flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -3598,17 +4445,22 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== +fs-extra@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - minipass "^2.6.0" + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -3648,19 +4500,12 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= +generic-names@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-2.0.1.tgz#f8a378ead2ccaa7a34f0317b05554832ae41b872" + integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + loader-utils "^1.1.0" gensync@^1.0.0-beta.1: version "1.0.0-beta.1" @@ -3677,6 +4522,11 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-port@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -3703,6 +4553,35 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-up@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +git-url-parse@^11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" + integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== + dependencies: + git-up "^4.0.0" + +github-slugger@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.0.tgz#8ada3286fd046d8951c3c952a8d7854cfd90fd9a" + integrity sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q== + dependencies: + emoji-regex ">=6.0.0 <=6.1.1" + +github-slugger@^1.0.0, github-slugger@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" + integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== + dependencies: + emoji-regex ">=6.0.0 <=6.1.1" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -3718,7 +4597,23 @@ glob-parent@^5.0.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3766,18 +4661,28 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" +globals-docs@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/globals-docs/-/globals-docs-2.4.1.tgz#d16887709f4a15eb22d97e96343591f87a2ee3db" + integrity sha512-qpPnUKkWnz8NESjrCvnlGklsgiQzlq+rcCxoG5uNQ+dNA7cFMCmn231slLAwS2N/PlkzZ3COL8CcS10jXmLHqg== + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^12.1.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" - integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== dependencies: type-fest "^0.8.1" +globalyzer@^0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.4.tgz#bc8e273afe1ac7c24eea8def5b802340c5cc534f" + integrity sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA== + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -3789,7 +4694,12 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.3: +globrex@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -3799,6 +4709,21 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= + dependencies: + duplexer "^0.1.1" + +gzip-size@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + handle-thing@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" @@ -3817,6 +4742,18 @@ har-validator@~5.1.3: ajv "^6.5.5" har-schema "^2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3832,11 +4769,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3868,7 +4800,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.3: +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -3891,11 +4823,54 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.2.x: +hast-util-is-element@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.0.4.tgz#059090a05cc02e275df1ad02caf8cb422fcd2e02" + integrity sha512-NFR6ljJRvDcyPP5SbV7MyPBgF47X3BsskLnmw1U34yL+X6YC0MoBx9EyMg8Jtx4FzGH95jw8+c1VPLHaRA0wDQ== + +hast-util-sanitize@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-1.3.1.tgz#4e60d66336bd67e52354d581967467029a933f2e" + integrity sha512-AIeKHuHx0Wk45nSkGVa2/ujQYTksnDl8gmmKo/mwQi7ag7IBZ8cM3nJ2G86SajbjGP/HRpud6kMkPtcM2i0Tlw== + dependencies: + xtend "^4.0.1" + +hast-util-to-html@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz#3666b05afb62bd69f8f5e6c94db04dea19438e2a" + integrity sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg== + dependencies: + ccount "^1.0.0" + comma-separated-tokens "^1.0.1" + hast-util-is-element "^1.0.0" + hast-util-whitespace "^1.0.0" + html-void-elements "^1.0.0" + property-information "^4.0.0" + space-separated-tokens "^1.0.0" + stringify-entities "^1.0.1" + unist-util-is "^2.0.0" + xtend "^4.0.1" + +hast-util-whitespace@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" + integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== + +he@1.2.x, he@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +highlight.js@^9.15.5: + version "9.18.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" + integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3927,6 +4902,21 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -3957,6 +4947,11 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.x" +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + html-webpack-plugin@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" @@ -4062,13 +5057,18 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -4079,13 +5079,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -4096,7 +5089,22 @@ immer@^6.0.1: resolved "https://registry.yarnpkg.com/immer/-/immer-6.0.1.tgz#7af35e35753d9da6bc9123f0cc99f7e8f2e10681" integrity sha512-oXwigCKgznQywsXi1VgrqgWbQEU3wievNCVc4Fcwky6mwXU6YHj6JuYp0WEM/B1EphkqsLr0x18lm5OiuemPcA== -import-fresh@^3.0.0: +import-cwd@^2.0.0, import-cwd@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -4104,6 +5112,13 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-local@2.0.0, import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -4125,6 +5140,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -4138,7 +5158,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4153,15 +5173,15 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@^7.0.0: - version "7.0.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.6.tgz#ee4ff0ea7ecda5324656fe665878790f66df7d0c" - integrity sha512-7SVO4h+QIdMq6XcqIqrNte3gS5MzCCKZdsq9DO4PJziBFNYzP3PGFbDjgadDb//MCahzgjCxvQ/O2wa7kx9o4w== + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== dependencies: ansi-escapes "^4.2.1" chalk "^3.0.0" @@ -4226,11 +5246,24 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -4245,6 +5278,24 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumeric@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" + integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arguments@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" @@ -4255,6 +5306,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -4262,11 +5318,16 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + is-callable@^1.1.4, is-callable@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" @@ -4279,6 +5340,18 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4298,6 +5371,11 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -4316,6 +5394,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -4369,6 +5452,21 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -4381,6 +5479,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + is-path-cwd@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -4400,6 +5503,11 @@ is-path-inside@^2.1.0: dependencies: path-is-inside "^1.0.2" +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -4412,6 +5520,13 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-reference@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" + integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== + dependencies: + "@types/estree" "0.0.39" + is-regex@^1.0.4, is-regex@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" @@ -4419,6 +5534,25 @@ is-regex@^1.0.4, is-regex@^1.0.5: dependencies: has "^1.0.3" +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-ssh@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + dependencies: + protocols "^1.1.0" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4434,6 +5568,13 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -4446,13 +5587,40 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" -is-wsl@^1.1.0: - version "1.1.0" +is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: + version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= @@ -4863,6 +6031,14 @@ jest-watcher@^25.1.0: jest-util "^25.1.0" string-length "^3.1.0" +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + jest-worker@^25.1.0: version "25.1.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.1.0.tgz#75d038bad6fdf58eba0d2ec1835856c497e3907a" @@ -4885,7 +6061,7 @@ jest@^25.1.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -4970,6 +6146,13 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== +json5@2.x, json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + json5@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -4982,12 +6165,17 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== - dependencies: - minimist "^1.2.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsprim@^1.2.2: version "1.4.1" @@ -5041,6 +6229,13 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -5048,6 +6243,13 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -5068,6 +6270,16 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +livereload-js@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" + integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== + load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -5112,7 +6324,7 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.2, loader-utils@^1.2.3: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -5149,12 +6361,32 @@ lodash-es@^4.2.1: resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.memoize@4.x, lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.2.1: +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.2.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -5171,6 +6403,11 @@ lolex@^5.0.0: dependencies: "@sinonjs/commons" "^1.7.0" +longest-streak@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -5190,7 +6427,21 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -make-dir@^2.0.0, make-dir@^2.1.0: +magic-string@^0.22.4: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== + dependencies: + vlq "^0.2.2" + +magic-string@^0.25.2: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -5205,6 +6456,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -5224,7 +6480,7 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.2: +map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= @@ -5236,6 +6492,26 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +markdown-table@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +maxmin@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" + integrity sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY= + dependencies: + chalk "^1.0.0" + figures "^1.0.1" + gzip-size "^3.0.0" + pretty-bytes "^3.0.0" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -5245,6 +6521,69 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdast-util-compact@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" + integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== + dependencies: + unist-util-visit "^1.1.0" + +mdast-util-definitions@^1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz#3fe622a4171c774ebd06f11e9f8af7ec53ea5c74" + integrity sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA== + dependencies: + unist-util-visit "^1.0.0" + +mdast-util-inject@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz#db06b8b585be959a2dcd2f87f472ba9b756f3675" + integrity sha1-2wa4tYW+lZotzS+H9HK6m3VvNnU= + dependencies: + mdast-util-to-string "^1.0.0" + +mdast-util-to-hast@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz#132001b266031192348d3366a6b011f28e54dc40" + integrity sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA== + dependencies: + collapse-white-space "^1.0.0" + detab "^2.0.0" + mdast-util-definitions "^1.2.0" + mdurl "^1.0.1" + trim "0.0.1" + trim-lines "^1.0.0" + unist-builder "^1.0.1" + unist-util-generated "^1.1.0" + unist-util-position "^3.0.0" + unist-util-visit "^1.1.0" + xtend "^4.0.1" + +mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== + +mdast-util-toc@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-3.1.0.tgz#395eeb877f067f9d2165d990d77c7eea6f740934" + integrity sha512-Za0hqL1PqWrvxGtA/3NH9D5nhGAUS9grMM4obEAz5+zsk1RIw/vWUchkaoDLNdrwk05A0CSC5eEXng36/1qE5w== + dependencies: + github-slugger "^1.2.1" + mdast-util-to-string "^1.0.5" + unist-util-is "^2.1.2" + unist-util-visit "^1.1.0" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -5295,7 +6634,50 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +microbundle@^0.12.0-next.8: + version "0.12.0-next.8" + resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.12.0-next.8.tgz#232833b272907e79585d56d934a0e551f0900807" + integrity sha512-lix2XE1YlqDPAVpifTIFzB/N7oudUEmIk78pXo5mvZpTHtvIXPzOUzeCw9ENZCiljfDfWswgkEesPsA1Js9jvA== + dependencies: + "@babel/core" "^7.5.5" + "@babel/plugin-proposal-class-properties" "7.5.5" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@babel/plugin-transform-flow-strip-types" "^7.4.4" + "@babel/plugin-transform-react-jsx" "^7.3.0" + "@babel/preset-env" "^7.5.5" + "@babel/preset-flow" "^7.0.0" + "@rollup/plugin-alias" "^3.0.0" + "@rollup/plugin-commonjs" "^11.0.1" + "@rollup/plugin-json" "^4.0.1" + "@rollup/plugin-node-resolve" "^7.0.0" + asyncro "^3.0.0" + autoprefixer "^9.6.1" + babel-plugin-macros "^2.4.2" + babel-plugin-transform-async-to-promises "^0.8.14" + babel-plugin-transform-replace-expressions "^0.2.0" + brotli-size "^4.0.0" + camelcase "^5.3.1" + cssnano "^4.1.10" + es6-promisify "^6.0.1" + filesize "^4.1.2" + gzip-size "^5.1.1" + kleur "^3.0.3" + lodash.merge "^4.6.2" + module-details-from-path "^1.0.3" + pretty-bytes "^5.3.0" + rollup "^1.29.0" + rollup-plugin-babel "^4.3.3" + rollup-plugin-bundle-size "^1.0.1" + rollup-plugin-es3 "^1.1.0" + rollup-plugin-postcss "^2.0.3" + rollup-plugin-terser "^5.1.1" + rollup-plugin-typescript2 "^0.23.0" + sade "^1.6.1" + tiny-glob "^0.2.6" + tslib "^1.10.0" + typescript "^3.5.3" + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5347,7 +6729,7 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.4: +mime@^2.2.0, 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== @@ -5379,25 +6761,10 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.1, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.4.tgz#40357ef9582f8cd42ba8eaa274ddcf27f0c979b7" + integrity sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg== mississippi@^3.0.0: version "3.0.0" @@ -5423,13 +6790,38 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.x, mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +module-deps-sortable@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/module-deps-sortable/-/module-deps-sortable-5.0.0.tgz#99db5bb08f7eab55e4c31f6b7c722c6a2144ba74" + integrity sha512-bnGGeghQmz/t/6771/KC4FmxpVm126iR6AAzzq4N6hVZQVl4+ZZBv+VF3PJmDyxXtVtgcgTSSP7NL+jq1QAHrg== + dependencies: + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.0" + concat-stream "~1.5.0" + defined "^1.0.0" + detective "^4.0.0" + duplexer2 "^0.1.2" + inherits "^2.0.1" + readable-stream "^2.0.2" + resolve "^1.1.3" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" + +module-details-from-path@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + integrity sha1-EUyUlnPiqKNenTV4hSeqN7Z52is= + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5442,6 +6834,11 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mri@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5502,15 +6899,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5588,37 +6976,13 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.50: - version "1.1.50" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.50.tgz#803c40d2c45db172d0410e4efec83aa8c6ad0592" - integrity sha512-lgAmPv9eYZ0bGwUYAKlr8MG6K4CvWliWqnkcT2P8mMAgVrH3lqfBPorFlxiG1pHQnqmavJZ9vbMXUTNyMLbrgQ== + version "1.1.51" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.51.tgz#70d0e054221343d2966006bfbd4d98622cc00bd0" + integrity sha512-1eQEs6HFYY1kMXQPOLzCf7HdjReErmvn85tZESMczdCNVWP3Y7URYLBAyYynuI7yef1zj4HN5q+oB2x67QU0lw== dependencies: semver "^6.3.0" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5641,26 +7005,22 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== +normalize-url@^3.0.0, normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" + once "^1.3.2" npm-run-all@^4.1.5: version "4.1.5" @@ -5691,23 +7051,18 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@~1.0.1: +nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5759,7 +7114,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: +object.assign@^4.0.4, object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -5831,7 +7186,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -5864,6 +7219,13 @@ optionator@^0.8.1, optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -5876,11 +7238,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -5890,19 +7247,11 @@ os-locale@^3.0.0, os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -5968,6 +7317,11 @@ p-map@^2.0.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-queue@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" + integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng== + p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -6025,6 +7379,27 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-entities@^1.0.2, parse-entities@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-filepath@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -6040,11 +7415,39 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parse-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + parse5@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" @@ -6105,6 +7508,18 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -6124,6 +7539,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -6160,7 +7580,7 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.1: +pify@^4.0.0, pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== @@ -6224,11 +7644,375 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" + integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +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" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-modules@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.5.0.tgz#08da6ce43fcfadbc685a021fe6ed30ef929f0bcc" + integrity sha512-KiAihzcV0TxTTNA5OXreyIXctuHOfR50WIhqBpc8pe0Q5dcs/Uap9EVlifOI9am7zGGdGOJQ6B1MPYKo2UxgOg== + dependencies: + css-modules-loader-core "^1.1.0" + generic-names "^2.0.1" + lodash.camelcase "^4.3.0" + postcss "^7.0.1" + string-hash "^1.1.1" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +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== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + +postcss@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" + integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= + dependencies: + chalk "^1.1.3" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +pretty-bytes@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8= + dependencies: + number-is-nan "^1.0.0" + +pretty-bytes@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" + integrity sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg== + pretty-error@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -6262,11 +8046,16 @@ private@^0.1.8: resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@~2.0.0: +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -6282,6 +8071,11 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise.series@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" + integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70= + prompts@^2.0.1: version "2.3.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.1.tgz#b63a9ce2809f106fa9ae1277c275b167af46ea05" @@ -6299,6 +8093,18 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +property-information@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-4.2.0.tgz#f0e66e07cbd6fed31d96844d958d153ad3eb486e" + integrity sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ== + dependencies: + xtend "^4.0.1" + +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -6307,6 +8113,11 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" +proxy-compare@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-1.0.1.tgz#681651e050706492ff5c4d1eac0dc289c4ebb3f7" + integrity sha512-Yui9ndDefoBkIisV29BnbO4nWKOkzpf8xmCz/JkOKZI+R1N/Q9BJDLZNfI5/q5uwm87Ep/7IVeBPkBcEvtpHww== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -6345,7 +8156,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: +pumpify@^1.3.3, pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -6369,11 +8180,21 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@^6.4.0: + version "6.9.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" + integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -6424,24 +8245,22 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== +raw-body@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" + integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" + bytes "1" + string_decoder "0.10" react-dom@experimental: - version "0.0.0-experimental-235a6c4af" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-235a6c4af.tgz#bffb9402f3020ad61900e193413f88cea41343f7" - integrity sha512-IjG3Y9ZX0eztcQMgikEuBv9AEaisAgtTWwlHxFCLs6hs6F51XiyL1MhREcJWWcIL1EaSRWTYvauAMm69u731DA== + version "0.0.0-experimental-8b155d261" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-8b155d261.tgz#d84a21129883b579b6f0b7402e7bf923f3fa2fba" + integrity sha512-l/AcYQt+FZ/STH8DBBcgCs1nLflSewaVu5laf7s2HCZ2BHM/fuSFUerhqvbg3Jgi4ZJGX65C4YpzzxU1pmSKrg== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - scheduler "0.0.0-experimental-235a6c4af" + scheduler "0.0.0-experimental-8b155d261" react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4: version "16.13.0" @@ -6449,9 +8268,9 @@ react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4: integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== react@experimental: - version "0.0.0-experimental-235a6c4af" - resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-235a6c4af.tgz#28d57d10304fb1aefe62e41d4c786ed5078f1549" - integrity sha512-pn2mHkgJPojgrWnvlMevhPuQUxg/jDGmZqPaXbv/jkXlmLz3g0qSdTy3H9dIA2UP5auYMJXHo3OyfRjSPP+5sQ== + version "0.0.0-experimental-8b155d261" + resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-8b155d261.tgz#af4b06223e085c666676f66ff9f1f99498f8f891" + integrity sha512-Y4wXdV1UCu/hfjfpZcEbwxD/KU1aSx7rrbA2NBqFSeiHi/r0LlWwJsm+ORxCAS0Ybt2HI4qI1JYXy3MI9fwPpQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6464,6 +8283,14 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" @@ -6482,7 +8309,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6504,6 +8331,31 @@ readable-stream@^3.0.6, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readable-stream@~2.1.0: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA= + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -6543,10 +8395,10 @@ redux@^4.0.5: loose-envify "^1.4.0" symbol-observable "^1.2.0" -regenerate-unicode-properties@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" @@ -6595,26 +8447,26 @@ regexpp@^3.0.0: integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== regexpu-core@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" - integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^8.1.0" - regjsgen "^0.5.0" - regjsparser "^0.6.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" + unicode-match-property-value-ecmascript "^1.2.0" -regjsgen@^0.5.0: +regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== -regjsparser@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.3.tgz#74192c5805d35e9f5ebe3c1fb5b40d40a8a38460" - integrity sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA== +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -6623,6 +8475,107 @@ relateurl@0.2.x: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +remark-html@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-8.0.0.tgz#9fcb859a6f3cb40f3ef15402950f1a62ec301b3a" + integrity sha512-3V2391GL3hxKhrkzYOyfPpxJ6taIKLCfuLVqumeWQOk3H9nTtSQ8St8kMYkBVIEAquXN1chT83qJ/2lAW+dpEg== + dependencies: + hast-util-sanitize "^1.0.0" + hast-util-to-html "^4.0.0" + mdast-util-to-hast "^3.0.0" + xtend "^4.0.1" + +remark-parse@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" + integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + +remark-reference-links@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/remark-reference-links/-/remark-reference-links-4.0.4.tgz#190579a0d6b002859d6cdbdc5aeb8bbdae4e06ab" + integrity sha512-+2X8hwSQqxG4tvjYZNrTcEC+bXp8shQvwRGG6J/rnFTvBoU4G0BBviZoqKGZizLh/DG+0gSYhiDDWCqyxXW1iQ== + dependencies: + unist-util-visit "^1.0.0" + +remark-slug@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-5.1.2.tgz#715ecdef8df1226786204b1887d31ab16aa24609" + integrity sha512-DWX+Kd9iKycqyD+/B+gEFO3jjnt7Yg1O05lygYSNTe5i5PIxxxPjp5qPBDxPIzp5wreF7+1ROCwRgjEcqmzr3A== + dependencies: + github-slugger "^1.0.0" + mdast-util-to-string "^1.0.0" + unist-util-visit "^1.0.0" + +remark-stringify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-5.0.0.tgz#336d3a4d4a6a3390d933eeba62e8de4bd280afba" + integrity sha512-Ws5MdA69ftqQ/yhRF9XhVV29mhxbfGhbz0Rx5bQH+oJcNhhSM6nCu1EpLod+DjrFGrU0BMPs+czVmJZU7xiS7w== + dependencies: + ccount "^1.0.0" + is-alphanumeric "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + longest-streak "^2.0.1" + markdown-escapes "^1.0.0" + markdown-table "^1.1.0" + mdast-util-compact "^1.0.0" + parse-entities "^1.0.2" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + stringify-entities "^1.0.1" + unherit "^1.0.4" + xtend "^4.0.1" + +remark-toc@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/remark-toc/-/remark-toc-5.1.1.tgz#8c229d6f834cdb43fde6685e2d43248d3fc82d78" + integrity sha512-vCPW4YOsm2CfyuScdktM9KDnJXVHJsd/ZeRtst+dnBU3B3KKvt8bc+bs5syJjyptAHfqo7H+5Uhz+2blWBfwow== + dependencies: + mdast-util-toc "^3.0.0" + remark-slug "^5.0.0" + +remark@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-9.0.0.tgz#c5cfa8ec535c73a67c4b0f12bfdbd3a67d8b2f60" + integrity sha512-amw8rGdD5lHbMEakiEsllmkdBP+/KpjW/PRK6NSGPZKCQowh0BT4IWXDAkRMyG3SB9dKPXWMviFjNusXzXNn3A== + dependencies: + remark-parse "^5.0.0" + remark-stringify "^5.0.0" + unified "^6.0.0" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -6644,11 +8597,16 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +repeat-string@^1.5.0, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +replace-ext@1.0.0, replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + request-promise-core@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" @@ -6748,6 +8706,13 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -6758,7 +8723,14 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2: +resolve@1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" + integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== + dependencies: + path-parse "^1.0.6" + +resolve@1.x, resolve@^1.1.3, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== @@ -6783,6 +8755,16 @@ retry@^0.12.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -6790,7 +8772,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -6812,6 +8794,93 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-bundle-size@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz#d245cd988486b4040279f9fd33f357f61673e90f" + integrity sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ== + dependencies: + chalk "^1.1.3" + maxmin "^2.1.0" + +rollup-plugin-es3@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-es3/-/rollup-plugin-es3-1.1.0.tgz#f866f91b4db839e5b475d8e4a7b9d4c77ecade14" + integrity sha512-jTMqQgMZ/tkjRW4scf4ln5c0OiTSi+Lx/IEyFd41ldgGoLvvg9AQxmVOl93+KaoyB7XRYToYjiHDvO40NPF/fA== + dependencies: + magic-string "^0.22.4" + +rollup-plugin-postcss@^2.0.3: + version "2.4.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-2.4.1.tgz#c6ba84dea7a29ed00ce5ddf0d333f9efd96283df" + integrity sha512-wlx8V/ic0bTlVXITWKyhDRuOyQiIdVewM2+KP+tKu2Y9j559uoTsk9F6oXFvyaXA5LiYv3VuOH7cjhRHLR2Ocg== + dependencies: + chalk "^2.4.2" + concat-with-sourcemaps "^1.0.5" + cssnano "^4.1.8" + import-cwd "^2.1.0" + p-queue "^2.4.2" + pify "^3.0.0" + postcss "^7.0.14" + postcss-load-config "^2.0.0" + postcss-modules "^1.4.1" + promise.series "^0.2.0" + resolve "^1.5.0" + rollup-pluginutils "^2.0.1" + safe-identifier "^0.3.1" + style-inject "^0.3.0" + +rollup-plugin-terser@^5.1.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" + integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^2.1.2" + terser "^4.6.2" + +rollup-plugin-typescript2@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.23.0.tgz#a2b6669ec606862fff62a74a628a838ebad6f108" + integrity sha512-LocTdy/rtp7UVoQcxqO3nIDjuI6AhfmiO/iNTx0k3uGRGPFQzlAyw5hEFNMpAT2tlpoGqawRnOT9OCePuwfZ5w== + dependencies: + fs-extra "8.1.0" + resolve "1.11.1" + rollup-pluginutils "2.8.1" + tslib "1.10.0" + +rollup-pluginutils@2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" + integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== + dependencies: + estree-walker "^0.6.1" + +rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.29.0: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -6838,6 +8907,13 @@ rxjs@^6.5.3: dependencies: tslib "^1.9.0" +sade@^1.6.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.3.tgz#a217ccc4fb4abb2d271648bf48f6628b2636fa1b" + integrity sha512-m4BctppMvJ60W1dXnHq7jMmFe3hPJZDAH85kQ3ACTo7XZNVUuTItCQ+2HfyaMeV5cKrbw7l4vD/6We3GBxvdJw== + dependencies: + mri "^1.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -6848,6 +8924,16 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-identifier@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.3.1.tgz#466b956ef8558b10bbe15b87fedf470ab283cd39" + integrity sha512-+vr9lVsmciuoP1fz8w30qDcohwH2S/tb5dPGQ8zHmG9jQf7YHU2fIKGxxcDpeY38J0Dep+DdPMz8FszVZT0Mbw== + +safe-json-parse@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" + integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -6875,7 +8961,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.4: +sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -6887,10 +8973,10 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" -scheduler@0.0.0-experimental-235a6c4af: - version "0.0.0-experimental-235a6c4af" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-235a6c4af.tgz#a95c1b8181c6bc489aa6e31ddde18d073e45dc82" - integrity sha512-hsJCthUt0au2YlnWYZknImhqkRMITnADkV93Lz8052vlVlBM++Xr2u2JnA+GzQxrFLf/38NDZheVctdFyJmJDw== +scheduler@0.0.0-experimental-8b155d261: + version "0.0.0-experimental-8b155d261" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-8b155d261.tgz#2f06a76f979ed5a3575a41c5acb8a525b77445b8" + integrity sha512-FevboYeVL8BkYeiZZrFOfUNorPh89DoLOZSkLdFH9eQQorDpWmSColNPHaxXP+vB+LvszLm9mhwh+deUQJIAug== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6916,7 +9002,7 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6983,7 +9069,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7068,16 +9154,18 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -7186,6 +9274,16 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -7269,11 +9367,21 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -7292,6 +9400,13 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +stream-array@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/stream-array/-/stream-array-1.1.2.tgz#9e5f7345f2137c30ee3b498b9114e80b52bb7eb5" + integrity sha1-nl9zRfITfDDuO0mLkRToC1K7frU= + dependencies: + readable-stream "~2.1.0" + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -7300,6 +9415,14 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -7324,6 +9447,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + string-length@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" @@ -7332,6 +9460,11 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -7341,7 +9474,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7358,7 +9491,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -7403,6 +9536,11 @@ string.prototype.trimright@^2.1.1: define-properties "^1.1.3" function-bind "^1.1.1" +string_decoder@0.10, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -7417,6 +9555,16 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-entities@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" + integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-hexadecimal "^1.0.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -7465,24 +9613,57 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + strip-json-comments@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +style-inject@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" + integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= + dependencies: + minimist "^1.1.0" -supports-color@6.1.0, supports-color@^6.1.0: +supports-color@6.1.0, supports-color@^6.0.0, supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: has-flag "^3.0.0" -supports-color@^5.3.0: +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -7504,6 +9685,25 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + symbol-observable@^1.0.3, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -7529,19 +9729,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -7565,7 +9752,7 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2: +terser@^4.1.2, terser@^4.6.2: version "4.6.6" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.6.tgz#da2382e6cafbdf86205e82fb9a115bd664d54863" integrity sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g== @@ -7593,7 +9780,15 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -through2@^2.0.0: +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -7601,7 +9796,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: +"through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -7618,6 +9813,31 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-glob@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.6.tgz#9e056e169d9788fe8a734dfa1ff02e9b92ed7eda" + integrity sha512-A7ewMqPu1B5PWwC3m7KVgAu96Ch5LA0w4SnEN/LbDREj/gAD0nPWboRbn8YoP9ISZXqeNAlMvKSKoEuhcfK3Pw== + dependencies: + globalyzer "^0.1.0" + globrex "^0.1.1" + +tiny-lr@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" + integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== + dependencies: + body "^5.1.0" + debug "^3.1.0" + faye-websocket "~0.10.0" + livereload-js "^2.3.0" + object-assign "^4.1.0" + qs "^6.4.0" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -7630,6 +9850,14 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -7672,6 +9900,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -7706,6 +9941,42 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +trim-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" + integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA== + +trim-trailing-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" + integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +ts-jest@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.2.1.tgz#49bf05da26a8b7fbfbc36b4ae2fcdc2fef35c85d" + integrity sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "^16.1.0" + ts-loader@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.1.tgz#67939d5772e8a8c6bdaf6277ca023a4812da02ef" @@ -7717,7 +9988,12 @@ ts-loader@^6.2.1: micromatch "^4.0.0" semver "^6.0.0" -tslib@^1.8.1, tslib@^1.9.0: +tslib@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== @@ -7783,12 +10059,12 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: +typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.8.3: +typescript@^3.5.3, typescript@^3.8.3: version "3.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== @@ -7801,6 +10077,19 @@ uglify-js@3.4.x: commander "~2.19.0" source-map "~0.6.1" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -7814,15 +10103,27 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unified@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" + integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^2.0.0" + x-is-string "^0.1.0" union-value@^1.0.0: version "1.0.1" @@ -7834,6 +10135,16 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -7848,11 +10159,89 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +unist-builder@^1.0.1, unist-builder@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17" + integrity sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg== + dependencies: + object-assign "^4.1.0" + +unist-util-generated@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.5.tgz#1e903e68467931ebfaea386dae9ea253628acd42" + integrity sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw== + +unist-util-is@^2.0.0, unist-util-is@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20" + integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA== + +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-remove-position@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" + integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" + integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-parents@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" + integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== + dependencies: + unist-util-is "^3.0.0" + +unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -7917,7 +10306,7 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util.promisify@^1.0.0: +util.promisify@^1.0.0, util.promisify@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== @@ -7983,11 +10372,21 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -7997,11 +10396,135 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vfile-location@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" + integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== + +vfile-message@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" + integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile-message@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.3.tgz#0dd4f6879fb240a8099b22bd3755536c92e59ba5" + integrity sha512-qQg/2z8qnnBHL0psXyF72kCjb9YioIynvyltuNKFaUhRtqTIcIMP3xnBaPzirVZNuBrUe1qwFciSx2yApa4byw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile-reporter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-6.0.1.tgz#45d4dc11df2e312196ea2ceb95e42a67fc8ce814" + integrity sha512-0OppK9mo8G2XUpv+hIKLVSDsoxJrXnOy73+vIm0jQUOUFYRduqpFHX+QqAQfvRHyX9B0UFiRuNJnBOjQCIsw1g== + dependencies: + repeat-string "^1.5.0" + string-width "^4.0.0" + supports-color "^6.0.0" + unist-util-stringify-position "^2.0.0" + vfile-sort "^2.1.2" + vfile-statistics "^1.1.0" + +vfile-sort@^2.1.0, vfile-sort@^2.1.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/vfile-sort/-/vfile-sort-2.2.2.tgz#720fe067ce156aba0b411a01bb0dc65596aa1190" + integrity sha512-tAyUqD2R1l/7Rn7ixdGkhXLD3zsg+XLAeUDUhXearjfIcpL1Hcsj5hHpCoy/gvfK/Ws61+e972fm0F7up7hfYA== + +vfile-statistics@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.4.tgz#b99fd15ecf0f44ba088cc973425d666cb7a9f245" + integrity sha512-lXhElVO0Rq3frgPvFBwahmed3X03vjPF8OcjKMy8+F1xU/3Q3QU3tKEDp743SFtb74PdF0UWpxPvtOP0GCLheA== + +vfile@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== + dependencies: + is-buffer "^1.1.4" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + +vfile@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.0.3.tgz#1e50b824fb5e5affd718e225c7bb1af6d97d4408" + integrity sha512-lREgT5sF05TQk68LO6APy0In+TkFGnFEgKChK2+PHIaTrFQ9oHCKXznZ7VILwgYVBcl0gv4lGATFZBLhi2kVQg== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +vinyl-fs@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0, vinyl@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vue-template-compiler@^2.5.16: + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" + integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + w3c-hr-time@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -8217,13 +10740,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -8292,9 +10808,14 @@ ws@^6.2.1: async-limiter "~1.0.0" ws@^7.0.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.1.tgz#03ed52423cd744084b2cf42ed197c8b65a936b8e" - integrity sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A== + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== + +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= xml-name-validator@^3.0.0: version "3.0.0" @@ -8313,7 +10834,7 @@ xregexp@^4.3.0: dependencies: "@babel/runtime-corejs3" "^7.8.3" -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -8323,11 +10844,18 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yaml@^1.7.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.2.tgz#a29c03f578faafd57dcb27055f9a5d569cb0c3d9" + integrity sha512-omakb0d7FjMo3R1D2EbTKVIk6dAVLRxFXdLZMEUToeAvuqgG/YuHMuQOZ5fgk+vQ8cx+cnGKwyg+8g8PNT0xQg== + dependencies: + "@babel/runtime" "^7.8.7" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -8352,7 +10880,15 @@ yargs-parser@^16.1.0: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@12.0.5: +yargs-parser@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.0.tgz#1b0ab1118ebd41f68bb30e729f4c83df36ae84c3" + integrity sha512-o/Jr6JBOv6Yx3pL+5naWSoIA2jJ+ZkMYQG/ie9qFbukBe4uzmBatlXFOiu/tNKRWEtyf+n5w7jc/O16ufqOTdQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@12.0.5, yargs@^12.0.2: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== @@ -8388,9 +10924,9 @@ yargs@13.2.4: yargs-parser "^13.1.0" yargs@^15.0.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.1.0.tgz#e111381f5830e863a89550bd4b136bb6a5f37219" - integrity sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg== + version "15.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976" + integrity sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA== dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -8402,4 +10938,4 @@ yargs@^15.0.0: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^16.1.0" + yargs-parser "^18.1.0" From 1b5a2a105cb894f469c2f0a2d012a7d38d60003b Mon Sep 17 00:00:00 2001 From: daishi Date: Fri, 13 Mar 2020 01:55:50 +0900 Subject: [PATCH 02/22] fix stale state with useTrackedState --- README.md | 1 + src/useTrackedState.ts | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 25694a7..15b5e05 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ This library is implemented with useMutableSource, and it patches the Redux store. APIs are provided without Context. It's up to developers to use Context based on them. +Check out `./examples/11_todolist/src/context.ts`. There's another difference from react-redux v7. This library directly use useMutableSource, and requires diff --git a/src/useTrackedState.ts b/src/useTrackedState.ts index 93a02d9..f3e7305 100644 --- a/src/useTrackedState.ts +++ b/src/useTrackedState.ts @@ -55,26 +55,25 @@ export const useTrackedState = >( const getSnapshot = useCallback((store: Store) => { const nextState = store.getState(); const lastTrackedCurrent = lastTracked.current; - if (lastTrackedCurrent && (lastTrackedCurrent.state === nextState - || !isDeepChanged( - lastTrackedCurrent.state, - nextState, - lastTrackedCurrent.affected, - lastTrackedCurrent.cache, - lastTrackedCurrent.mode, - ))) { - // not changed - return lastTrackedCurrent.state; - } - return nextState; - }, []); + if (!lastTrackedCurrent) return nextState; + if (lastTrackedCurrent.affected !== affected) return nextState; + if (lastTrackedCurrent.state === nextState) return nextState; + if (isDeepChanged( + lastTrackedCurrent.state, + nextState, + lastTrackedCurrent.affected, + lastTrackedCurrent.cache, + lastTrackedCurrent.mode, + )) return nextState; + // not changed + return lastTrackedCurrent.state; + }, [affected]); const state: State = useMutableSource(mutableSource, getSnapshot, subscribe); useIsomorphicLayoutEffect(() => { lastTracked.current = { state, affected, cache: new WeakMap(), - /* eslint-disable no-nested-ternary, indent, @typescript-eslint/indent */ /* eslint-disable no-nested-ternary, indent */ mode: opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED From e4c57ace03441d3c6be10e3a4b56f11dd11e92c8 Mon Sep 17 00:00:00 2001 From: daishi Date: Fri, 13 Mar 2020 01:56:42 +0900 Subject: [PATCH 03/22] run compile --- dist/index.esm.js | 2 ++ dist/index.esm.js.map | 1 + dist/index.js | 2 ++ dist/index.js.map | 1 + dist/index.umd.js | 2 ++ dist/index.umd.js.map | 1 + dist/src/index.d.ts | 4 ++++ dist/src/patchStore.d.ts | 16 ++++++++++++++++ dist/src/useSelector.d.ts | 18 ++++++++++++++++++ dist/src/useTrackedState.d.ts | 18 ++++++++++++++++++ dist/src/utils.d.ts | 3 +++ 11 files changed, 68 insertions(+) create mode 100644 dist/index.esm.js create mode 100644 dist/index.esm.js.map create mode 100644 dist/index.js create mode 100644 dist/index.js.map create mode 100644 dist/index.umd.js create mode 100644 dist/index.umd.js.map create mode 100644 dist/src/index.d.ts create mode 100644 dist/src/patchStore.d.ts create mode 100644 dist/src/useSelector.d.ts create mode 100644 dist/src/useTrackedState.d.ts create mode 100644 dist/src/utils.d.ts diff --git a/dist/index.esm.js b/dist/index.esm.js new file mode 100644 index 0000000..7ae0f44 --- /dev/null +++ b/dist/index.esm.js @@ -0,0 +1,2 @@ +import{createMutableSource as e,useCallback as t,useMutableSource as r,useLayoutEffect as n,useEffect as a,useRef as o,useDebugValue as c}from"react";import{isDeepChanged as u,createDeepProxy as i,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED as f,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP as d,MODE_IGNORE_REF_EQUALITY as p}from"proxy-compare";export{getUntrackedObject,trackMemo}from"proxy-compare";var s=function(t){var r=e(t,function(){return t.getState()});return t.mutableSource=r,t},m=function(e,t){return e.subscribe(t)},v=function(e,n){var a=e.mutableSource,o=t(function(e){return n(e.getState())},[n]);return r(a,o,m)},g="undefined"==typeof window||/ServerSideRendering/.test(window.navigator&&window.navigator.userAgent)?a:n,b=f|d,S=p,w=f,l=function(e,n){void 0===n&&(n={});var f=e.mutableSource,d=new WeakMap,p=o(),s=t(function(e){var t=e.getState(),r=p.current;return r?r.affected!==d||r.state===t||u(r.state,t,r.affected,r.cache,r.mode)?t:r.state:t},[d]),v=r(f,s,m);g(function(){p.current={state:v,affected:d,cache:new WeakMap,mode:n.unstable_forceUpdateForStateChange?0:n.unstable_ignoreIntermediateObjectUsage?b:n.unstable_ignoreStateEquality?S:w}}),"production"!==process.env.NODE_ENV&&function(e,t){var r=o();a(function(){r.current=function(e,t){var r=[];return function e(n,a){var o=t.get(n);o?o.forEach(function(t){e(n[t],a?[].concat(a,[t]):[t])}):a&&r.push(a)}(e),r}(e,t)}),c(r)}(v,d);var l=o(new WeakMap);return i(v,d,l.current)};export{s as patchStore,v as useSelector,l as useTrackedState}; +//# sourceMappingURL=index.esm.js.map diff --git a/dist/index.esm.js.map b/dist/index.esm.js.map new file mode 100644 index 0000000..17a30eb --- /dev/null +++ b/dist/index.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.esm.js","sources":["../src/patchStore.ts","../src/useSelector.ts","../src/utils.ts","../src/useTrackedState.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst isClient = (\n typeof window !== 'undefined'\n && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent)\n);\n\nexport const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect;\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n useRef,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const lastTracked = useRef();\n const getSnapshot = useCallback((store: Store) => {\n const nextState = store.getState();\n const lastTrackedCurrent = lastTracked.current;\n if (!lastTrackedCurrent) return nextState;\n if (lastTrackedCurrent.affected !== affected) return nextState;\n if (lastTrackedCurrent.state === nextState) return nextState;\n if (isDeepChanged(\n lastTrackedCurrent.state,\n nextState,\n lastTrackedCurrent.affected,\n lastTrackedCurrent.cache,\n lastTrackedCurrent.mode,\n )) return nextState;\n // not changed\n return lastTrackedCurrent.state;\n }, [affected]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n useIsomorphicLayoutEffect(() => {\n lastTracked.current = {\n state,\n affected,\n cache: new WeakMap(),\n /* eslint-disable no-nested-ternary, indent */\n mode:\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT,\n /* eslint-enable no-nested-ternary, indent */\n };\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useRef(new WeakMap()); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache.current);\n};\n"],"names":["patchStore","store","mutableSource","createMutableSource","getState","subscribe","callback","useSelector","patchedStore","selector","getSnapshot","useCallback","useMutableSource","useIsomorphicLayoutEffect","window","test","navigator","userAgent","useEffect","useLayoutEffect","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","useTrackedState","opts","affected","WeakMap","lastTracked","useRef","nextState","lastTrackedCurrent","current","state","isDeepChanged","cache","mode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","process","env","NODE_ENV","pathList","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"yYAyBaA,IAAAA,EAAa,SACxBC,GAEA,IAAMC,EAAgBC,EAAoBF,EAAO,kBAAMA,EAAMG,aAE7D,OADCH,EAAsCC,cAAgBA,EAChDD,GAGII,EAAY,SACvBJ,EACAK,GAGA,OADoBL,EAAMI,UAAUC,ICRzBC,EAAc,SACzBC,EACAC,OAEQP,EAAkBM,EAAlBN,cACFQ,EAAcC,EAAY,SAACV,UAC/BQ,EAASR,EAAMG,aACd,CAACK,IAEJ,OAD2BG,EAAiBV,EAAeQ,EAAaL,ICzB7DQ,EAJO,oBAAXC,QACH,sBAAsBC,KAAKD,OAAOE,WAAaF,OAAOE,UAAUC,WAGAC,EAAlBC,ECY9CC,EACJC,EAAsCC,EAElCC,EAA0BC,EAC1BC,EAAeJ,EAmBRK,EAAkB,SAC7BlB,EACAmB,YAAAA,IAAAA,EAAa,QAELzB,EAAkBM,EAAlBN,cACF0B,EAAW,IAAIC,QACfC,EAAcC,IACdrB,EAAcC,EAAY,SAACV,GAC/B,IAAM+B,EAAY/B,EAAMG,WAClB6B,EAAqBH,EAAYI,QACvC,OAAKD,EACDA,EAAmBL,WAAaA,GAChCK,EAAmBE,QAAUH,GAC7BI,EACFH,EAAmBE,MACnBH,EACAC,EAAmBL,SACnBK,EAAmBI,MACnBJ,EAAmBK,MAPgCN,EAU9CC,EAAmBE,MAXMH,GAY/B,CAACJ,IACEO,EAAevB,EAAiBV,EAAeQ,EAAaL,GAClEQ,EAA0B,WACxBiB,EAAYI,QAAU,CACpBC,MAAAA,EACAP,SAAAA,EACAS,MAAO,IAAIR,QAEXS,KACAX,EAAKY,mCAvDsC,EAwDzCZ,EAAKa,uCAAyCpB,EAC9CO,EAAKc,6BAA+BlB,EACtBE,KAIS,eAAzBiB,QAAQC,IAAIC,UDpDmB,SACnCT,EACAP,GAEA,IAAMiB,EAAWd,IACjBb,EAAU,WACR2B,EAASX,QAzBc,SACzBC,EACAP,GAEA,IAAMkB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOtB,EAASuB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKZ,GACEW,EAScS,CAAmBpB,EAAOP,KAE/C4B,EAAcX,GC8CZY,CAAsBtB,EAAOP,GAE/B,IAAM8B,EAAa3B,EAAO,IAAIF,SAC9B,OAAO8B,EAAgBxB,EAAOP,EAAU8B,EAAWxB"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..0666725 --- /dev/null +++ b/dist/index.js @@ -0,0 +1,2 @@ +var e=require("react"),t=require("proxy-compare"),r=function(e,t){return e.subscribe(t)},n="undefined"==typeof window||/ServerSideRendering/.test(window.navigator&&window.navigator.userAgent)?e.useEffect:e.useLayoutEffect,u=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,a=t.MODE_IGNORE_REF_EQUALITY,c=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(exports,"getUntrackedObject",{enumerable:!0,get:function(){return t.getUntrackedObject}}),Object.defineProperty(exports,"trackMemo",{enumerable:!0,get:function(){return t.trackMemo}}),exports.patchStore=function(t){var r=e.createMutableSource(t,function(){return t.getState()});return t.mutableSource=r,t},exports.useSelector=function(t,n){var u=t.mutableSource,a=e.useCallback(function(e){return n(e.getState())},[n]);return e.useMutableSource(u,a,r)},exports.useTrackedState=function(o,f){void 0===f&&(f={});var i=o.mutableSource,s=new WeakMap,E=e.useRef(),d=e.useCallback(function(e){var r=e.getState(),n=E.current;return n?n.affected!==s||n.state===r||t.isDeepChanged(n.state,r,n.affected,n.cache,n.mode)?r:n.state:r},[s]),S=e.useMutableSource(i,d,r);n(function(){E.current={state:S,affected:s,cache:new WeakMap,mode:f.unstable_forceUpdateForStateChange?0:f.unstable_ignoreIntermediateObjectUsage?u:f.unstable_ignoreStateEquality?a:c}}),"production"!==process.env.NODE_ENV&&function(t,r){var n=e.useRef();e.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(t,r)}),e.useDebugValue(n)}(S,s);var b=e.useRef(new WeakMap);return t.createDeepProxy(S,s,b.current)}; +//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..bc12882 --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../src/patchStore.ts","../src/utils.ts","../src/useTrackedState.ts","../src/useSelector.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst isClient = (\n typeof window !== 'undefined'\n && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent)\n);\n\nexport const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect;\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n useRef,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const lastTracked = useRef();\n const getSnapshot = useCallback((store: Store) => {\n const nextState = store.getState();\n const lastTrackedCurrent = lastTracked.current;\n if (!lastTrackedCurrent) return nextState;\n if (lastTrackedCurrent.affected !== affected) return nextState;\n if (lastTrackedCurrent.state === nextState) return nextState;\n if (isDeepChanged(\n lastTrackedCurrent.state,\n nextState,\n lastTrackedCurrent.affected,\n lastTrackedCurrent.cache,\n lastTrackedCurrent.mode,\n )) return nextState;\n // not changed\n return lastTrackedCurrent.state;\n }, [affected]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n useIsomorphicLayoutEffect(() => {\n lastTracked.current = {\n state,\n affected,\n cache: new WeakMap(),\n /* eslint-disable no-nested-ternary, indent */\n mode:\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT,\n /* eslint-enable no-nested-ternary, indent */\n };\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useRef(new WeakMap()); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache.current);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n"],"names":["subscribe","store","callback","useIsomorphicLayoutEffect","window","test","navigator","userAgent","useEffect","useLayoutEffect","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","lastTracked","useRef","nextState","lastTrackedCurrent","current","state","isDeepChanged","cache","mode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","process","env","NODE_ENV","pathList","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"kDAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICzBzBC,EAJO,oBAAXC,QACH,sBAAsBC,KAAKD,OAAOE,WAAaF,OAAOE,UAAUC,WAGAC,YAAlBC,kBCY9CC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,uQFHK,SACxBV,GAEA,IAAMe,EAAgBC,sBAAoBhB,EAAO,kBAAMA,EAAMiB,aAE7D,OADCjB,EAAsCe,cAAgBA,EAChDf,uBGDkB,SACzBkB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACrB,UAC/BmB,EAASnB,EAAMiB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAarB,4BDU3C,SAC7BmB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAAcC,WACdP,EAAcC,cAAY,SAACrB,GAC/B,IAAM4B,EAAY5B,EAAMiB,WAClBY,EAAqBH,EAAYI,QACvC,OAAKD,EACDA,EAAmBL,WAAaA,GAChCK,EAAmBE,QAAUH,GAC7BI,gBACFH,EAAmBE,MACnBH,EACAC,EAAmBL,SACnBK,EAAmBI,MACnBJ,EAAmBK,MAPgCN,EAU9CC,EAAmBE,MAXMH,GAY/B,CAACJ,IACEO,EAAeT,mBAAiBP,EAAeK,EAAarB,GAClEG,EAA0B,WACxBwB,EAAYI,QAAU,CACpBC,MAAAA,EACAP,SAAAA,EACAS,MAAO,IAAIR,QAEXS,KACAX,EAAKY,mCAvDsC,EAwDzCZ,EAAKa,uCAAyC3B,EAC9Cc,EAAKc,6BAA+BzB,EACtBE,KAIS,eAAzBwB,QAAQC,IAAIC,UDpDmB,SACnCT,EACAP,GAEA,IAAMiB,EAAWd,WACjBpB,YAAU,WACRkC,EAASX,QAzBc,SACzBC,EACAP,GAEA,IAAMkB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOtB,EAASuB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKZ,GACEW,EAScS,CAAmBpB,EAAOP,KAE/C4B,gBAAcX,GC8CZY,CAAsBtB,EAAOP,GAE/B,IAAM8B,EAAa3B,SAAO,IAAIF,SAC9B,OAAO8B,kBAAgBxB,EAAOP,EAAU8B,EAAWxB"} \ No newline at end of file diff --git a/dist/index.umd.js b/dist/index.umd.js new file mode 100644 index 0000000..a6f76cd --- /dev/null +++ b/dist/index.umd.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("proxy-compare")):"function"==typeof define&&define.amd?define(["exports","react","proxy-compare"],t):t((e=e||self).reactiveReactRedux={},e.react,e.proxyCompare)}(this,function(e,t,r){var n=function(e,t){return e.subscribe(t)},a="undefined"==typeof window||/ServerSideRendering/.test(window.navigator&&window.navigator.userAgent)?t.useEffect:t.useLayoutEffect,u=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,c=r.MODE_IGNORE_REF_EQUALITY,o=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(e,"getUntrackedObject",{enumerable:!0,get:function(){return r.getUntrackedObject}}),Object.defineProperty(e,"trackMemo",{enumerable:!0,get:function(){return r.trackMemo}}),e.patchStore=function(e){var r=t.createMutableSource(e,function(){return e.getState()});return e.mutableSource=r,e},e.useSelector=function(e,r){var a=e.mutableSource,u=t.useCallback(function(e){return r(e.getState())},[r]);return t.useMutableSource(a,u,n)},e.useTrackedState=function(e,f){void 0===f&&(f={});var i=e.mutableSource,s=new WeakMap,d=t.useRef(),E=t.useCallback(function(e){var t=e.getState(),n=d.current;return n?n.affected!==s||n.state===t||r.isDeepChanged(n.state,t,n.affected,n.cache,n.mode)?t:n.state:t},[s]),p=t.useMutableSource(i,E,n);a(function(){d.current={state:p,affected:s,cache:new WeakMap,mode:f.unstable_forceUpdateForStateChange?0:f.unstable_ignoreIntermediateObjectUsage?u:f.unstable_ignoreStateEquality?c:o}}),"production"!==process.env.NODE_ENV&&function(e,r){var n=t.useRef();t.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,a){var u=t.get(n);u?u.forEach(function(t){e(n[t],a?[].concat(a,[t]):[t])}):a&&r.push(a)}(e),r}(e,r)}),t.useDebugValue(n)}(p,s);var b=t.useRef(new WeakMap);return r.createDeepProxy(p,s,b.current)}}); +//# sourceMappingURL=index.umd.js.map diff --git a/dist/index.umd.js.map b/dist/index.umd.js.map new file mode 100644 index 0000000..fb0dfc1 --- /dev/null +++ b/dist/index.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.umd.js","sources":["../src/patchStore.ts","../src/utils.ts","../src/useTrackedState.ts","../src/useSelector.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst isClient = (\n typeof window !== 'undefined'\n && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent)\n);\n\nexport const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect;\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n useRef,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const lastTracked = useRef();\n const getSnapshot = useCallback((store: Store) => {\n const nextState = store.getState();\n const lastTrackedCurrent = lastTracked.current;\n if (!lastTrackedCurrent) return nextState;\n if (lastTrackedCurrent.affected !== affected) return nextState;\n if (lastTrackedCurrent.state === nextState) return nextState;\n if (isDeepChanged(\n lastTrackedCurrent.state,\n nextState,\n lastTrackedCurrent.affected,\n lastTrackedCurrent.cache,\n lastTrackedCurrent.mode,\n )) return nextState;\n // not changed\n return lastTrackedCurrent.state;\n }, [affected]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n useIsomorphicLayoutEffect(() => {\n lastTracked.current = {\n state,\n affected,\n cache: new WeakMap(),\n /* eslint-disable no-nested-ternary, indent */\n mode:\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT,\n /* eslint-enable no-nested-ternary, indent */\n };\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useRef(new WeakMap()); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache.current);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n"],"names":["subscribe","store","callback","useIsomorphicLayoutEffect","window","test","navigator","userAgent","useEffect","useLayoutEffect","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","lastTracked","useRef","nextState","lastTrackedCurrent","current","state","isDeepChanged","cache","mode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","process","env","NODE_ENV","pathList","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"mSAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICzBzBC,EAJO,oBAAXC,QACH,sBAAsBC,KAAKD,OAAOE,WAAaF,OAAOE,UAAUC,WAGAC,YAAlBC,kBCY9CC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,qPFHK,SACxBV,GAEA,IAAMe,EAAgBC,sBAAoBhB,EAAO,kBAAMA,EAAMiB,aAE7D,OADCjB,EAAsCe,cAAgBA,EAChDf,iBGDkB,SACzBkB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACrB,UAC/BmB,EAASnB,EAAMiB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAarB,sBDU3C,SAC7BmB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAAcC,WACdP,EAAcC,cAAY,SAACrB,GAC/B,IAAM4B,EAAY5B,EAAMiB,WAClBY,EAAqBH,EAAYI,QACvC,OAAKD,EACDA,EAAmBL,WAAaA,GAChCK,EAAmBE,QAAUH,GAC7BI,gBACFH,EAAmBE,MACnBH,EACAC,EAAmBL,SACnBK,EAAmBI,MACnBJ,EAAmBK,MAPgCN,EAU9CC,EAAmBE,MAXMH,GAY/B,CAACJ,IACEO,EAAeT,mBAAiBP,EAAeK,EAAarB,GAClEG,EAA0B,WACxBwB,EAAYI,QAAU,CACpBC,MAAAA,EACAP,SAAAA,EACAS,MAAO,IAAIR,QAEXS,KACAX,EAAKY,mCAvDsC,EAwDzCZ,EAAKa,uCAAyC3B,EAC9Cc,EAAKc,6BAA+BzB,EACtBE,KAIS,eAAzBwB,QAAQC,IAAIC,UDpDmB,SACnCT,EACAP,GAEA,IAAMiB,EAAWd,WACjBpB,YAAU,WACRkC,EAASX,QAzBc,SACzBC,EACAP,GAEA,IAAMkB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOtB,EAASuB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKZ,GACEW,EAScS,CAAmBpB,EAAOP,KAE/C4B,gBAAcX,GC8CZY,CAAsBtB,EAAOP,GAE/B,IAAM8B,EAAa3B,SAAO,IAAIF,SAC9B,OAAO8B,kBAAgBxB,EAAOP,EAAU8B,EAAWxB"} \ No newline at end of file diff --git a/dist/src/index.d.ts b/dist/src/index.d.ts new file mode 100644 index 0000000..ac77670 --- /dev/null +++ b/dist/src/index.d.ts @@ -0,0 +1,4 @@ +export { PatchedStore, patchStore } from './patchStore'; +export { useSelector } from './useSelector'; +export { useTrackedState } from './useTrackedState'; +export { trackMemo, getUntrackedObject } from 'proxy-compare'; diff --git a/dist/src/patchStore.d.ts b/dist/src/patchStore.d.ts new file mode 100644 index 0000000..00d77bd --- /dev/null +++ b/dist/src/patchStore.d.ts @@ -0,0 +1,16 @@ +import { Action as ReduxAction, Store } from 'redux'; +export declare type PatchedStore> = { + mutableSource: any; +} & Store; +/** + * patch Redux store for React + * + * @example + * import { createStore } from 'redux'; + * import { patchStore } from 'reactive-react-redux'; + * + * const reducer = ...; + * const store = patchStore(createStore(reducer)); + */ +export declare const patchStore: >(store: Store) => PatchedStore; +export declare const subscribe: >(store: Store, callback: () => void) => import("redux").Unsubscribe; diff --git a/dist/src/useSelector.d.ts b/dist/src/useSelector.d.ts new file mode 100644 index 0000000..c95c5d3 --- /dev/null +++ b/dist/src/useSelector.d.ts @@ -0,0 +1,18 @@ +import { Action as ReduxAction } from 'redux'; +import { PatchedStore } from './patchStore'; +/** + * useSelector hook + * + * selector has to be stable. Either define it outside render + * or use useCallback if selector uses props. + * + * @example + * import { useCallback } from 'react'; + * import { useSelector } from 'reactive-react-redux'; + * + * const Component = ({ count }) => { + * const isBigger = useSelector(store, useCallack(state => state.count > count, [count])); + * ... + * }; + */ +export declare const useSelector: , Selected>(patchedStore: PatchedStore, selector: (state: State) => Selected) => Selected; diff --git a/dist/src/useTrackedState.d.ts b/dist/src/useTrackedState.d.ts new file mode 100644 index 0000000..cf594f1 --- /dev/null +++ b/dist/src/useTrackedState.d.ts @@ -0,0 +1,18 @@ +import { Action as ReduxAction } from 'redux'; +import { PatchedStore } from './patchStore'; +/** + * useTrackedState hook + * + * It return the Redux state wrapped by Proxy, + * and the state prperty access is tracked. + * It will only re-render if accessed properties are changed. + * + * @example + * import { useTrackedState } from 'reactive-react-redux'; + * + * const Component = () => { + * const state = useTrackedState(store); + * ... + * }; + */ +export declare const useTrackedState: >(patchedStore: PatchedStore, opts?: any) => State; diff --git a/dist/src/utils.d.ts b/dist/src/utils.d.ts new file mode 100644 index 0000000..d461530 --- /dev/null +++ b/dist/src/utils.d.ts @@ -0,0 +1,3 @@ +import { useLayoutEffect } from 'react'; +export declare const useIsomorphicLayoutEffect: typeof useLayoutEffect; +export declare const useAffectedDebugValue: (state: State, affected: WeakMap>) => void; From de8f48eb0463768c2b5fd0ac415c051c58b42111 Mon Sep 17 00:00:00 2001 From: daishi Date: Fri, 13 Mar 2020 02:01:03 +0900 Subject: [PATCH 04/22] slim eslintrc --- .eslintrc.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 5137c63..455c687 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,7 +23,6 @@ "react-hooks/exhaustive-deps": ["error", { "additionalHooks": "useIsomorphicLayoutEffect" }], "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-empty-interface": "off", "react/jsx-filename-extension": ["error", { "extensions": [".js", ".tsx"] }], "react/prop-types": "off", "react/jsx-one-expression-per-line": "off", @@ -33,7 +32,6 @@ "no-param-reassign": "off", "no-plusplus": "off", "no-bitwise": "off", - "prefer-object-spread": "off", "default-case": "off" }, "overrides": [{ From f1ad83043d933b0f34d9170572f846580a5f8e8a Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 14 Mar 2020 10:00:26 +0900 Subject: [PATCH 05/22] export type only --- dist/src/index.d.ts | 3 ++- src/index.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dist/src/index.d.ts b/dist/src/index.d.ts index ac77670..7dd1990 100644 --- a/dist/src/index.d.ts +++ b/dist/src/index.d.ts @@ -1,4 +1,5 @@ -export { PatchedStore, patchStore } from './patchStore'; +export type { PatchedStore } from './patchStore'; +export { patchStore } from './patchStore'; export { useSelector } from './useSelector'; export { useTrackedState } from './useTrackedState'; export { trackMemo, getUntrackedObject } from 'proxy-compare'; diff --git a/src/index.ts b/src/index.ts index 6932c72..5a64476 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,5 @@ -export { PatchedStore, patchStore } from './patchStore'; +export type { PatchedStore } from './patchStore'; +export { patchStore } from './patchStore'; export { useSelector } from './useSelector'; export { useTrackedState } from './useTrackedState'; export { trackMemo, getUntrackedObject } from 'proxy-compare'; From a57a033f676130283a414990d8cc4d8486a608fb Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 14 Mar 2020 10:28:15 +0900 Subject: [PATCH 06/22] better context.ts in examples --- examples/02_typescript/src/App.tsx | 11 ++------ examples/02_typescript/src/Counter.tsx | 2 +- examples/02_typescript/src/Person.tsx | 2 +- examples/02_typescript/src/context.ts | 37 +++++++++++++++++++++++++ examples/02_typescript/src/state.ts | 26 ----------------- examples/03_deep/src/App.tsx | 11 ++------ examples/03_deep/src/Counter.tsx | 2 +- examples/03_deep/src/Person.tsx | 2 +- examples/03_deep/src/context.ts | 37 +++++++++++++++++++++++++ examples/03_deep/src/state.ts | 26 ----------------- examples/04_immer/src/App.tsx | 11 ++------ examples/04_immer/src/Counter.tsx | 2 +- examples/04_immer/src/Person.tsx | 2 +- examples/04_immer/src/context.ts | 37 +++++++++++++++++++++++++ examples/04_immer/src/state.ts | 25 ----------------- examples/05_localstate/src/App.tsx | 11 ++------ examples/05_localstate/src/Counter.tsx | 2 +- examples/05_localstate/src/context.ts | 37 +++++++++++++++++++++++++ examples/05_localstate/src/state.ts | 26 ----------------- examples/06_memoization/src/App.tsx | 11 ++------ examples/06_memoization/src/Counter.tsx | 2 +- examples/06_memoization/src/Person.tsx | 2 +- examples/06_memoization/src/context.ts | 37 +++++++++++++++++++++++++ examples/06_memoization/src/state.ts | 26 ----------------- examples/07_multistore/src/App.tsx | 13 +++------ examples/07_multistore/src/Counter.tsx | 2 +- examples/07_multistore/src/Person.tsx | 2 +- examples/07_multistore/src/context.ts | 37 +++++++++++++++++++++++++ examples/07_multistore/src/state.ts | 26 ----------------- examples/08_dynamic/src/App.tsx | 11 ++------ examples/08_dynamic/src/Counter.tsx | 2 +- examples/08_dynamic/src/Person.tsx | 2 +- examples/08_dynamic/src/context.ts | 37 +++++++++++++++++++++++++ examples/08_dynamic/src/state.ts | 26 ----------------- examples/09_thunk/src/App.tsx | 11 ++------ examples/09_thunk/src/Counter.tsx | 2 +- examples/09_thunk/src/Person.tsx | 8 ++---- examples/09_thunk/src/context.ts | 37 +++++++++++++++++++++++++ examples/09_thunk/src/state.ts | 26 ----------------- examples/11_todolist/src/context.ts | 16 +++++++++-- examples/11_todolist/src/index.tsx | 4 +-- examples/12_async/src/context.ts | 16 +++++++++-- examples/12_async/src/index.tsx | 4 +-- examples/12_async/src/store/reducers.ts | 2 +- 44 files changed, 366 insertions(+), 305 deletions(-) create mode 100644 examples/02_typescript/src/context.ts create mode 100644 examples/03_deep/src/context.ts create mode 100644 examples/04_immer/src/context.ts create mode 100644 examples/05_localstate/src/context.ts create mode 100644 examples/06_memoization/src/context.ts create mode 100644 examples/07_multistore/src/context.ts create mode 100644 examples/08_dynamic/src/context.ts create mode 100644 examples/09_thunk/src/context.ts diff --git a/examples/02_typescript/src/App.tsx b/examples/02_typescript/src/App.tsx index fd5a86b..8213bad 100644 --- a/examples/02_typescript/src/App.tsx +++ b/examples/02_typescript/src/App.tsx @@ -1,18 +1,13 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; import Person from './Person'; -const store = patchStore(createStore(reducer)); +const store = createStore(reducer); const App = () => ( diff --git a/examples/02_typescript/src/Counter.tsx b/examples/02_typescript/src/Counter.tsx index 269c450..613122f 100644 --- a/examples/02_typescript/src/Counter.tsx +++ b/examples/02_typescript/src/Counter.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const state = useTrackedState(); diff --git a/examples/02_typescript/src/Person.tsx b/examples/02_typescript/src/Person.tsx index 69cdb26..1948efe 100644 --- a/examples/02_typescript/src/Person.tsx +++ b/examples/02_typescript/src/Person.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter: React.FC<{ firstName: string }> = ({ firstName }) => { const state = useTrackedState(); diff --git a/examples/02_typescript/src/context.ts b/examples/02_typescript/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/02_typescript/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/02_typescript/src/state.ts b/examples/02_typescript/src/state.ts index 5155acb..70f30c0 100644 --- a/examples/02_typescript/src/state.ts +++ b/examples/02_typescript/src/state.ts @@ -1,10 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; - const initialState = { count: 0, person: { @@ -57,22 +50,3 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/03_deep/src/App.tsx b/examples/03_deep/src/App.tsx index fd5a86b..8213bad 100644 --- a/examples/03_deep/src/App.tsx +++ b/examples/03_deep/src/App.tsx @@ -1,18 +1,13 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; import Person from './Person'; -const store = patchStore(createStore(reducer)); +const store = createStore(reducer); const App = () => ( diff --git a/examples/03_deep/src/Counter.tsx b/examples/03_deep/src/Counter.tsx index 269c450..613122f 100644 --- a/examples/03_deep/src/Counter.tsx +++ b/examples/03_deep/src/Counter.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const state = useTrackedState(); diff --git a/examples/03_deep/src/Person.tsx b/examples/03_deep/src/Person.tsx index 954e88f..44ef0e0 100644 --- a/examples/03_deep/src/Person.tsx +++ b/examples/03_deep/src/Person.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const TextBox: React.SFC<{ text: string }> = ({ text }) => { // eslint-disable-next-line no-console diff --git a/examples/03_deep/src/context.ts b/examples/03_deep/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/03_deep/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/03_deep/src/state.ts b/examples/03_deep/src/state.ts index 5155acb..70f30c0 100644 --- a/examples/03_deep/src/state.ts +++ b/examples/03_deep/src/state.ts @@ -1,10 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; - const initialState = { count: 0, person: { @@ -57,22 +50,3 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/04_immer/src/App.tsx b/examples/04_immer/src/App.tsx index fd5a86b..8213bad 100644 --- a/examples/04_immer/src/App.tsx +++ b/examples/04_immer/src/App.tsx @@ -1,18 +1,13 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; import Person from './Person'; -const store = patchStore(createStore(reducer)); +const store = createStore(reducer); const App = () => ( diff --git a/examples/04_immer/src/Counter.tsx b/examples/04_immer/src/Counter.tsx index 269c450..613122f 100644 --- a/examples/04_immer/src/Counter.tsx +++ b/examples/04_immer/src/Counter.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const state = useTrackedState(); diff --git a/examples/04_immer/src/Person.tsx b/examples/04_immer/src/Person.tsx index 954e88f..44ef0e0 100644 --- a/examples/04_immer/src/Person.tsx +++ b/examples/04_immer/src/Person.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const TextBox: React.SFC<{ text: string }> = ({ text }) => { // eslint-disable-next-line no-console diff --git a/examples/04_immer/src/context.ts b/examples/04_immer/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/04_immer/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/04_immer/src/state.ts b/examples/04_immer/src/state.ts index f5dc43e..abae64b 100644 --- a/examples/04_immer/src/state.ts +++ b/examples/04_immer/src/state.ts @@ -1,9 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; import { produce } from 'immer'; const initialState = { @@ -33,22 +27,3 @@ export const reducer = (state = initialState, action: Action) => produce(state, case 'setAge': draft.person.age = action.age; break; } }); - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/05_localstate/src/App.tsx b/examples/05_localstate/src/App.tsx index c2573eb..d4db4cf 100644 --- a/examples/05_localstate/src/App.tsx +++ b/examples/05_localstate/src/App.tsx @@ -1,17 +1,12 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; -const store = patchStore(createStore(reducer)); +const store = createStore(reducer); const App = () => ( diff --git a/examples/05_localstate/src/Counter.tsx b/examples/05_localstate/src/Counter.tsx index ad8d0ed..095011f 100644 --- a/examples/05_localstate/src/Counter.tsx +++ b/examples/05_localstate/src/Counter.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const [count, setCount] = useState(0); diff --git a/examples/05_localstate/src/context.ts b/examples/05_localstate/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/05_localstate/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/05_localstate/src/state.ts b/examples/05_localstate/src/state.ts index a8cf70a..4152b79 100644 --- a/examples/05_localstate/src/state.ts +++ b/examples/05_localstate/src/state.ts @@ -1,10 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; - const initialState = { count: 0, }; @@ -28,22 +21,3 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/06_memoization/src/App.tsx b/examples/06_memoization/src/App.tsx index fd5a86b..8213bad 100644 --- a/examples/06_memoization/src/App.tsx +++ b/examples/06_memoization/src/App.tsx @@ -1,18 +1,13 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; import Person from './Person'; -const store = patchStore(createStore(reducer)); +const store = createStore(reducer); const App = () => ( diff --git a/examples/06_memoization/src/Counter.tsx b/examples/06_memoization/src/Counter.tsx index 269c450..613122f 100644 --- a/examples/06_memoization/src/Counter.tsx +++ b/examples/06_memoization/src/Counter.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const state = useTrackedState(); diff --git a/examples/06_memoization/src/Person.tsx b/examples/06_memoization/src/Person.tsx index a9145d3..d4f60b1 100644 --- a/examples/06_memoization/src/Person.tsx +++ b/examples/06_memoization/src/Person.tsx @@ -1,6 +1,6 @@ import React, { useMemo } from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const TextBox: React.SFC<{ text: string }> = ({ text }) => { // eslint-disable-next-line no-console diff --git a/examples/06_memoization/src/context.ts b/examples/06_memoization/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/06_memoization/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/06_memoization/src/state.ts b/examples/06_memoization/src/state.ts index 3fe1031..6c6082f 100644 --- a/examples/06_memoization/src/state.ts +++ b/examples/06_memoization/src/state.ts @@ -1,10 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; - const initialState = { count: 0, person: { @@ -65,22 +58,3 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/07_multistore/src/App.tsx b/examples/07_multistore/src/App.tsx index 1c0c2e2..baffa5a 100644 --- a/examples/07_multistore/src/App.tsx +++ b/examples/07_multistore/src/App.tsx @@ -1,19 +1,14 @@ import React, { useState, StrictMode } from 'react'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; import Person from './Person'; -const store1 = patchStore(createStore(reducer)); -const store2 = patchStore(createStore(reducer)); +const store1 = createStore(reducer); +const store2 = createStore(reducer); const App = () => { const [store, setStore] = useState(store1); diff --git a/examples/07_multistore/src/Counter.tsx b/examples/07_multistore/src/Counter.tsx index 48e718d..3dd2be9 100644 --- a/examples/07_multistore/src/Counter.tsx +++ b/examples/07_multistore/src/Counter.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const state = useTrackedState(); diff --git a/examples/07_multistore/src/Person.tsx b/examples/07_multistore/src/Person.tsx index 7934a63..cc7321b 100644 --- a/examples/07_multistore/src/Person.tsx +++ b/examples/07_multistore/src/Person.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Person = () => { const state = useTrackedState(); diff --git a/examples/07_multistore/src/context.ts b/examples/07_multistore/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/07_multistore/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/07_multistore/src/state.ts b/examples/07_multistore/src/state.ts index 5155acb..70f30c0 100644 --- a/examples/07_multistore/src/state.ts +++ b/examples/07_multistore/src/state.ts @@ -1,10 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; - const initialState = { count: 0, person: { @@ -57,22 +50,3 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/08_dynamic/src/App.tsx b/examples/08_dynamic/src/App.tsx index fd5a86b..8213bad 100644 --- a/examples/08_dynamic/src/App.tsx +++ b/examples/08_dynamic/src/App.tsx @@ -1,18 +1,13 @@ import React, { StrictMode } from 'react'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; import Person from './Person'; -const store = patchStore(createStore(reducer)); +const store = createStore(reducer); const App = () => ( diff --git a/examples/08_dynamic/src/Counter.tsx b/examples/08_dynamic/src/Counter.tsx index 9f0a7e5..99541ed 100644 --- a/examples/08_dynamic/src/Counter.tsx +++ b/examples/08_dynamic/src/Counter.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const [index, setIndex] = useState(0); diff --git a/examples/08_dynamic/src/Person.tsx b/examples/08_dynamic/src/Person.tsx index bb90b09..1b4c5db 100644 --- a/examples/08_dynamic/src/Person.tsx +++ b/examples/08_dynamic/src/Person.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Person = () => { const [mode, setMode] = useState('first'); diff --git a/examples/08_dynamic/src/context.ts b/examples/08_dynamic/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/08_dynamic/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/08_dynamic/src/state.ts b/examples/08_dynamic/src/state.ts index 26185e9..a0b3d10 100644 --- a/examples/08_dynamic/src/state.ts +++ b/examples/08_dynamic/src/state.ts @@ -1,10 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; - const initialState = { count: [0, 0, 0], person: { @@ -66,22 +59,3 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/09_thunk/src/App.tsx b/examples/09_thunk/src/App.tsx index 20175b2..ade054b 100644 --- a/examples/09_thunk/src/App.tsx +++ b/examples/09_thunk/src/App.tsx @@ -1,19 +1,14 @@ import React, { StrictMode } from 'react'; import { createStore, applyMiddleware } from 'redux'; import reduxThunk from 'redux-thunk'; -import { patchStore } from 'reactive-react-redux'; -import { - State, - Action, - Provider, - reducer, -} from './state'; +import { reducer } from './state'; +import { Provider } from './context'; import Counter from './Counter'; import Person from './Person'; -const store = patchStore(createStore(reducer, applyMiddleware(reduxThunk))); +const store = createStore(reducer, applyMiddleware(reduxThunk)); const App = () => ( diff --git a/examples/09_thunk/src/Counter.tsx b/examples/09_thunk/src/Counter.tsx index 269c450..613122f 100644 --- a/examples/09_thunk/src/Counter.tsx +++ b/examples/09_thunk/src/Counter.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { useDispatch, useTrackedState } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter = () => { const state = useTrackedState(); diff --git a/examples/09_thunk/src/Person.tsx b/examples/09_thunk/src/Person.tsx index 34606ed..1cfbe15 100644 --- a/examples/09_thunk/src/Person.tsx +++ b/examples/09_thunk/src/Person.tsx @@ -2,12 +2,8 @@ import React from 'react'; import { Dispatch } from 'redux'; import { ThunkDispatch } from 'redux-thunk'; -import { - useDispatch, - useTrackedState, - State, - Action, -} from './state'; +import { State, Action } from './state'; +import { useDispatch, useTrackedState } from './context'; const Counter: React.FC<{ firstName: string }> = ({ firstName }) => { const state = useTrackedState(); diff --git a/examples/09_thunk/src/context.ts b/examples/09_thunk/src/context.ts new file mode 100644 index 0000000..d07e384 --- /dev/null +++ b/examples/09_thunk/src/context.ts @@ -0,0 +1,37 @@ +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; +import { + PatchedStore, + patchStore, + useSelector as useSelectorOrig, + useTrackedState as useTrackedStateOrig, +} from 'reactive-react-redux'; + +import { State, Action } from './state'; + +// Context based APIs + +const Context = createContext(new Proxy({}, { + get() { throw new Error('use Provider'); }, +}) as PatchedStore); + +export const Provider: React.FC<{ store: Store }> = ({ + store, + children, +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; + +export const useDispatch = () => useContext(Context).dispatch; + +export const useSelector = ( + selector: (state: State) => Selected, +) => useSelectorOrig(useContext(Context), selector); + +export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/09_thunk/src/state.ts b/examples/09_thunk/src/state.ts index 5155acb..70f30c0 100644 --- a/examples/09_thunk/src/state.ts +++ b/examples/09_thunk/src/state.ts @@ -1,10 +1,3 @@ -import { createContext, createElement, useContext } from 'react'; -import { - PatchedStore, - useSelector as useSelectorOrig, - useTrackedState as useTrackedStateOrig, -} from 'reactive-react-redux'; - const initialState = { count: 0, person: { @@ -57,22 +50,3 @@ export const reducer = (state = initialState, action: Action) => { default: return state; } }; - -// Context based APIs - -const Context = createContext(new Proxy({}, { - get() { throw new Error('use Provider'); }, -}) as PatchedStore); - -export const Provider: React.FC<{ store: PatchedStore }> = ({ - store, - children, -}) => createElement(Context.Provider, { value: store }, children); - -export const useDispatch = () => useContext(Context).dispatch; - -export const useSelector = ( - selector: (state: State) => Selected, -) => useSelectorOrig(useContext(Context), selector); - -export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); diff --git a/examples/11_todolist/src/context.ts b/examples/11_todolist/src/context.ts index 4d23ff6..9a03132 100644 --- a/examples/11_todolist/src/context.ts +++ b/examples/11_todolist/src/context.ts @@ -1,6 +1,13 @@ -import { createContext, createElement, useContext } from 'react'; +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; import { PatchedStore, + patchStore, useSelector as useSelectorOrig, useTrackedState as useTrackedStateOrig, } from 'reactive-react-redux'; @@ -13,10 +20,13 @@ const Context = createContext(new Proxy({}, { get() { throw new Error('use Provider'); }, }) as PatchedStore); -export const Provider: React.FC<{ store: PatchedStore }> = ({ +export const Provider: React.FC<{ store: Store }> = ({ store, children, -}) => createElement(Context.Provider, { value: store }, children); +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; export const useDispatch = () => useContext(Context).dispatch; diff --git a/examples/11_todolist/src/index.tsx b/examples/11_todolist/src/index.tsx index 4c4e627..b906f27 100644 --- a/examples/11_todolist/src/index.tsx +++ b/examples/11_todolist/src/index.tsx @@ -1,14 +1,12 @@ import React from 'react'; import { render } from 'react-dom'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; import { Provider } from './context'; -import { State, Action } from './types'; import rootReducer from './reducers'; import App from './components/App'; -const store = patchStore(createStore(rootReducer)); +const store = createStore(rootReducer); render( diff --git a/examples/12_async/src/context.ts b/examples/12_async/src/context.ts index d0bdcd6..ae2ab66 100644 --- a/examples/12_async/src/context.ts +++ b/examples/12_async/src/context.ts @@ -1,6 +1,13 @@ -import { createContext, createElement, useContext } from 'react'; +import { + createContext, + createElement, + useContext, + useMemo, +} from 'react'; +import { Store } from 'redux'; import { PatchedStore, + patchStore, useSelector as useSelectorOrig, useTrackedState as useTrackedStateOrig, } from 'reactive-react-redux'; @@ -13,10 +20,13 @@ const Context = createContext(new Proxy({}, { get() { throw new Error('use Provider'); }, }) as PatchedStore); -export const Provider: React.FC<{ store: PatchedStore }> = ({ +export const Provider: React.FC<{ store: Store }> = ({ store, children, -}) => createElement(Context.Provider, { value: store }, children); +}) => { + const value = useMemo(() => patchStore(store), [store]); + return createElement(Context.Provider, { value }, children); +}; export const useDispatch = () => useContext(Context).dispatch; diff --git a/examples/12_async/src/index.tsx b/examples/12_async/src/index.tsx index 3976877..bc01840 100644 --- a/examples/12_async/src/index.tsx +++ b/examples/12_async/src/index.tsx @@ -4,14 +4,12 @@ import React from 'react'; import { createRoot } from 'react-dom'; import { createStore } from 'redux'; -import { patchStore } from 'reactive-react-redux'; import { Provider } from './context'; -import { State, Action } from './store/actions'; import rootReducer from './store/reducers'; import App from './components/App'; -const store = patchStore(createStore(rootReducer)); +const store = createStore(rootReducer); const ele = document.getElementById('app'); if (!ele) throw new Error('no app'); diff --git a/examples/12_async/src/store/reducers.ts b/examples/12_async/src/store/reducers.ts index 5f3b915..83822dd 100644 --- a/examples/12_async/src/store/reducers.ts +++ b/examples/12_async/src/store/reducers.ts @@ -66,7 +66,7 @@ const postsBySubreddit = ( } }; -const rootReducer = combineReducers({ +const rootReducer = combineReducers({ postsBySubreddit, selectedSubreddit, }); From c7a52fcbf91de543ee5e9670053c88f1854107f1 Mon Sep 17 00:00:00 2001 From: daishi Date: Mon, 16 Mar 2020 18:23:25 +0900 Subject: [PATCH 07/22] improve useTrackedState with scoped variables --- dist/index.esm.js | 2 +- dist/index.esm.js.map | 2 +- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/index.umd.js | 2 +- dist/index.umd.js.map | 2 +- dist/src/utils.d.ts | 2 -- package.json | 2 +- src/useTrackedState.ts | 67 +++++++++++++++++++----------------------- src/utils.ts | 8 ----- 10 files changed, 38 insertions(+), 53 deletions(-) diff --git a/dist/index.esm.js b/dist/index.esm.js index 7ae0f44..d11543c 100644 --- a/dist/index.esm.js +++ b/dist/index.esm.js @@ -1,2 +1,2 @@ -import{createMutableSource as e,useCallback as t,useMutableSource as r,useLayoutEffect as n,useEffect as a,useRef as o,useDebugValue as c}from"react";import{isDeepChanged as u,createDeepProxy as i,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED as f,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP as d,MODE_IGNORE_REF_EQUALITY as p}from"proxy-compare";export{getUntrackedObject,trackMemo}from"proxy-compare";var s=function(t){var r=e(t,function(){return t.getState()});return t.mutableSource=r,t},m=function(e,t){return e.subscribe(t)},v=function(e,n){var a=e.mutableSource,o=t(function(e){return n(e.getState())},[n]);return r(a,o,m)},g="undefined"==typeof window||/ServerSideRendering/.test(window.navigator&&window.navigator.userAgent)?a:n,b=f|d,S=p,w=f,l=function(e,n){void 0===n&&(n={});var f=e.mutableSource,d=new WeakMap,p=o(),s=t(function(e){var t=e.getState(),r=p.current;return r?r.affected!==d||r.state===t||u(r.state,t,r.affected,r.cache,r.mode)?t:r.state:t},[d]),v=r(f,s,m);g(function(){p.current={state:v,affected:d,cache:new WeakMap,mode:n.unstable_forceUpdateForStateChange?0:n.unstable_ignoreIntermediateObjectUsage?b:n.unstable_ignoreStateEquality?S:w}}),"production"!==process.env.NODE_ENV&&function(e,t){var r=o();a(function(){r.current=function(e,t){var r=[];return function e(n,a){var o=t.get(n);o?o.forEach(function(t){e(n[t],a?[].concat(a,[t]):[t])}):a&&r.push(a)}(e),r}(e,t)}),c(r)}(v,d);var l=o(new WeakMap);return i(v,d,l.current)};export{s as patchStore,v as useSelector,l as useTrackedState}; +import{createMutableSource as t,useCallback as r,useMutableSource as e,useRef as n,useEffect as u,useDebugValue as a,useMemo as o}from"react";import{createDeepProxy as c,isDeepChanged as i,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED as f,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP as p,MODE_IGNORE_REF_EQUALITY as m}from"proxy-compare";export{getUntrackedObject,trackMemo}from"proxy-compare";var v=function(r){var e=t(r,function(){return r.getState()});return r.mutableSource=e,r},l=function(t,r){return t.subscribe(r)},b=function(t,n){var u=t.mutableSource,a=r(function(t){return n(t.getState())},[n]);return e(u,a,l)},g=f|p,s=m,S=f,d=function(t,r){void 0===r&&(r={});var f=t.mutableSource,p=new WeakMap,m=r.unstable_forceUpdateForStateChange?0:r.unstable_ignoreIntermediateObjectUsage?g:r.unstable_ignoreStateEquality?s:S,v=o(function(){var t=null,r=new WeakMap;return function(e){var n=e.getState();return null===t||t===n||i(t,n,p,r,m)?(t=n,n):t}},[p,m]),b=e(f,v,l);"production"!==process.env.NODE_ENV&&function(t,r){var e=n();u(function(){e.current=function(t,r){var e=[];return function t(n,u){var a=r.get(n);a?a.forEach(function(r){t(n[r],u?[].concat(u,[r]):[r])}):u&&e.push(u)}(t),e}(t,r)}),a(e)}(b,p);var d=o(function(){return new WeakMap},[]);return c(b,p,d)};export{v as patchStore,b as useSelector,d as useTrackedState}; //# sourceMappingURL=index.esm.js.map diff --git a/dist/index.esm.js.map b/dist/index.esm.js.map index 17a30eb..8b5f252 100644 --- a/dist/index.esm.js.map +++ b/dist/index.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"index.esm.js","sources":["../src/patchStore.ts","../src/useSelector.ts","../src/utils.ts","../src/useTrackedState.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst isClient = (\n typeof window !== 'undefined'\n && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent)\n);\n\nexport const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect;\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n useRef,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const lastTracked = useRef();\n const getSnapshot = useCallback((store: Store) => {\n const nextState = store.getState();\n const lastTrackedCurrent = lastTracked.current;\n if (!lastTrackedCurrent) return nextState;\n if (lastTrackedCurrent.affected !== affected) return nextState;\n if (lastTrackedCurrent.state === nextState) return nextState;\n if (isDeepChanged(\n lastTrackedCurrent.state,\n nextState,\n lastTrackedCurrent.affected,\n lastTrackedCurrent.cache,\n lastTrackedCurrent.mode,\n )) return nextState;\n // not changed\n return lastTrackedCurrent.state;\n }, [affected]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n useIsomorphicLayoutEffect(() => {\n lastTracked.current = {\n state,\n affected,\n cache: new WeakMap(),\n /* eslint-disable no-nested-ternary, indent */\n mode:\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT,\n /* eslint-enable no-nested-ternary, indent */\n };\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useRef(new WeakMap()); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache.current);\n};\n"],"names":["patchStore","store","mutableSource","createMutableSource","getState","subscribe","callback","useSelector","patchedStore","selector","getSnapshot","useCallback","useMutableSource","useIsomorphicLayoutEffect","window","test","navigator","userAgent","useEffect","useLayoutEffect","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","useTrackedState","opts","affected","WeakMap","lastTracked","useRef","nextState","lastTrackedCurrent","current","state","isDeepChanged","cache","mode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","process","env","NODE_ENV","pathList","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"yYAyBaA,IAAAA,EAAa,SACxBC,GAEA,IAAMC,EAAgBC,EAAoBF,EAAO,kBAAMA,EAAMG,aAE7D,OADCH,EAAsCC,cAAgBA,EAChDD,GAGII,EAAY,SACvBJ,EACAK,GAGA,OADoBL,EAAMI,UAAUC,ICRzBC,EAAc,SACzBC,EACAC,OAEQP,EAAkBM,EAAlBN,cACFQ,EAAcC,EAAY,SAACV,UAC/BQ,EAASR,EAAMG,aACd,CAACK,IAEJ,OAD2BG,EAAiBV,EAAeQ,EAAaL,ICzB7DQ,EAJO,oBAAXC,QACH,sBAAsBC,KAAKD,OAAOE,WAAaF,OAAOE,UAAUC,WAGAC,EAAlBC,ECY9CC,EACJC,EAAsCC,EAElCC,EAA0BC,EAC1BC,EAAeJ,EAmBRK,EAAkB,SAC7BlB,EACAmB,YAAAA,IAAAA,EAAa,QAELzB,EAAkBM,EAAlBN,cACF0B,EAAW,IAAIC,QACfC,EAAcC,IACdrB,EAAcC,EAAY,SAACV,GAC/B,IAAM+B,EAAY/B,EAAMG,WAClB6B,EAAqBH,EAAYI,QACvC,OAAKD,EACDA,EAAmBL,WAAaA,GAChCK,EAAmBE,QAAUH,GAC7BI,EACFH,EAAmBE,MACnBH,EACAC,EAAmBL,SACnBK,EAAmBI,MACnBJ,EAAmBK,MAPgCN,EAU9CC,EAAmBE,MAXMH,GAY/B,CAACJ,IACEO,EAAevB,EAAiBV,EAAeQ,EAAaL,GAClEQ,EAA0B,WACxBiB,EAAYI,QAAU,CACpBC,MAAAA,EACAP,SAAAA,EACAS,MAAO,IAAIR,QAEXS,KACAX,EAAKY,mCAvDsC,EAwDzCZ,EAAKa,uCAAyCpB,EAC9CO,EAAKc,6BAA+BlB,EACtBE,KAIS,eAAzBiB,QAAQC,IAAIC,UDpDmB,SACnCT,EACAP,GAEA,IAAMiB,EAAWd,IACjBb,EAAU,WACR2B,EAASX,QAzBc,SACzBC,EACAP,GAEA,IAAMkB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOtB,EAASuB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKZ,GACEW,EAScS,CAAmBpB,EAAOP,KAE/C4B,EAAcX,GC8CZY,CAAsBtB,EAAOP,GAE/B,IAAM8B,EAAa3B,EAAO,IAAIF,SAC9B,OAAO8B,EAAgBxB,EAAOP,EAAU8B,EAAWxB"} \ No newline at end of file +{"version":3,"file":"index.esm.js","sources":["../src/patchStore.ts","../src/useSelector.ts","../src/useTrackedState.ts","../src/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n"],"names":["patchStore","store","mutableSource","createMutableSource","getState","subscribe","callback","useSelector","patchedStore","selector","getSnapshot","useCallback","useMutableSource","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","useTrackedState","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"iYAyBaA,IAAAA,EAAa,SACxBC,GAEA,IAAMC,EAAgBC,EAAoBF,EAAO,kBAAMA,EAAMG,aAE7D,OADCH,EAAsCC,cAAgBA,EAChDD,GAGII,EAAY,SACvBJ,EACAK,GAGA,OADoBL,EAAMI,UAAUC,ICRzBC,EAAc,SACzBC,EACAC,OAEQP,EAAkBM,EAAlBN,cACFQ,EAAcC,EAAY,SAACV,UAC/BQ,EAASR,EAAMG,aACd,CAACK,IAEJ,OAD2BG,EAAiBV,EAAeQ,EAAaL,ICdpEQ,EACJC,EAAsCC,EAElCC,EAA0BC,EAC1BC,EAAeJ,EAmBRK,EAAkB,SAC7BX,EACAY,YAAAA,IAAAA,EAAa,QAELlB,EAAkBM,EAAlBN,cACFmB,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyCZ,EAC9CO,EAAKM,6BAAyCV,EACAE,EAG5CR,EAAciB,EAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQrB,GACN,IAAM6B,EAAY7B,EAAMG,WACxB,OAAkB,OAAdwB,GAAsBA,IAAcE,GAAcC,EACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAepB,EAAiBV,EAAeQ,EAAaL,GACrC,eAAzB4B,QAAQC,IAAIC,UCvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,IACjBC,EAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKT,GACEQ,EAScS,CAAmBjB,EAAOX,KAE/C6B,EAAcd,GDiDZe,CAAsBnB,EAAOX,GAE/B,IAAM+B,EAAazB,EAAQ,sBAAUL,SAAW,IAChD,OAAO+B,EAAgBrB,EAAOX,EAAU+B"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 0666725..80062bb 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -var e=require("react"),t=require("proxy-compare"),r=function(e,t){return e.subscribe(t)},n="undefined"==typeof window||/ServerSideRendering/.test(window.navigator&&window.navigator.userAgent)?e.useEffect:e.useLayoutEffect,u=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,a=t.MODE_IGNORE_REF_EQUALITY,c=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(exports,"getUntrackedObject",{enumerable:!0,get:function(){return t.getUntrackedObject}}),Object.defineProperty(exports,"trackMemo",{enumerable:!0,get:function(){return t.trackMemo}}),exports.patchStore=function(t){var r=e.createMutableSource(t,function(){return t.getState()});return t.mutableSource=r,t},exports.useSelector=function(t,n){var u=t.mutableSource,a=e.useCallback(function(e){return n(e.getState())},[n]);return e.useMutableSource(u,a,r)},exports.useTrackedState=function(o,f){void 0===f&&(f={});var i=o.mutableSource,s=new WeakMap,E=e.useRef(),d=e.useCallback(function(e){var r=e.getState(),n=E.current;return n?n.affected!==s||n.state===r||t.isDeepChanged(n.state,r,n.affected,n.cache,n.mode)?r:n.state:r},[s]),S=e.useMutableSource(i,d,r);n(function(){E.current={state:S,affected:s,cache:new WeakMap,mode:f.unstable_forceUpdateForStateChange?0:f.unstable_ignoreIntermediateObjectUsage?u:f.unstable_ignoreStateEquality?a:c}}),"production"!==process.env.NODE_ENV&&function(t,r){var n=e.useRef();e.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(t,r)}),e.useDebugValue(n)}(S,s);var b=e.useRef(new WeakMap);return t.createDeepProxy(S,s,b.current)}; +var e=require("react"),t=require("proxy-compare"),r=function(e,t){return e.subscribe(t)},n=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,u=t.MODE_IGNORE_REF_EQUALITY,a=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(exports,"getUntrackedObject",{enumerable:!0,get:function(){return t.getUntrackedObject}}),Object.defineProperty(exports,"trackMemo",{enumerable:!0,get:function(){return t.trackMemo}}),exports.patchStore=function(t){var r=e.createMutableSource(t,function(){return t.getState()});return t.mutableSource=r,t},exports.useSelector=function(t,n){var u=t.mutableSource,a=e.useCallback(function(e){return n(e.getState())},[n]);return e.useMutableSource(u,a,r)},exports.useTrackedState=function(c,o){void 0===o&&(o={});var i=c.mutableSource,E=new WeakMap,s=o.unstable_forceUpdateForStateChange?0:o.unstable_ignoreIntermediateObjectUsage?n:o.unstable_ignoreStateEquality?u:a,f=e.useMemo(function(){var e=null,r=new WeakMap;return function(n){var u=n.getState();return null===e||e===u||t.isDeepChanged(e,u,E,r,s)?(e=u,u):e}},[E,s]),_=e.useMutableSource(i,f,r);"production"!==process.env.NODE_ENV&&function(t,r){var n=e.useRef();e.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(t,r)}),e.useDebugValue(n)}(_,E);var b=e.useMemo(function(){return new WeakMap},[]);return t.createDeepProxy(_,E,b)}; //# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map index bc12882..89a8e72 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/patchStore.ts","../src/utils.ts","../src/useTrackedState.ts","../src/useSelector.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst isClient = (\n typeof window !== 'undefined'\n && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent)\n);\n\nexport const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect;\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n useRef,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const lastTracked = useRef();\n const getSnapshot = useCallback((store: Store) => {\n const nextState = store.getState();\n const lastTrackedCurrent = lastTracked.current;\n if (!lastTrackedCurrent) return nextState;\n if (lastTrackedCurrent.affected !== affected) return nextState;\n if (lastTrackedCurrent.state === nextState) return nextState;\n if (isDeepChanged(\n lastTrackedCurrent.state,\n nextState,\n lastTrackedCurrent.affected,\n lastTrackedCurrent.cache,\n lastTrackedCurrent.mode,\n )) return nextState;\n // not changed\n return lastTrackedCurrent.state;\n }, [affected]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n useIsomorphicLayoutEffect(() => {\n lastTracked.current = {\n state,\n affected,\n cache: new WeakMap(),\n /* eslint-disable no-nested-ternary, indent */\n mode:\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT,\n /* eslint-enable no-nested-ternary, indent */\n };\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useRef(new WeakMap()); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache.current);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n"],"names":["subscribe","store","callback","useIsomorphicLayoutEffect","window","test","navigator","userAgent","useEffect","useLayoutEffect","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","lastTracked","useRef","nextState","lastTrackedCurrent","current","state","isDeepChanged","cache","mode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","process","env","NODE_ENV","pathList","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"kDAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICzBzBC,EAJO,oBAAXC,QACH,sBAAsBC,KAAKD,OAAOE,WAAaF,OAAOE,UAAUC,WAGAC,YAAlBC,kBCY9CC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,uQFHK,SACxBV,GAEA,IAAMe,EAAgBC,sBAAoBhB,EAAO,kBAAMA,EAAMiB,aAE7D,OADCjB,EAAsCe,cAAgBA,EAChDf,uBGDkB,SACzBkB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACrB,UAC/BmB,EAASnB,EAAMiB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAarB,4BDU3C,SAC7BmB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAAcC,WACdP,EAAcC,cAAY,SAACrB,GAC/B,IAAM4B,EAAY5B,EAAMiB,WAClBY,EAAqBH,EAAYI,QACvC,OAAKD,EACDA,EAAmBL,WAAaA,GAChCK,EAAmBE,QAAUH,GAC7BI,gBACFH,EAAmBE,MACnBH,EACAC,EAAmBL,SACnBK,EAAmBI,MACnBJ,EAAmBK,MAPgCN,EAU9CC,EAAmBE,MAXMH,GAY/B,CAACJ,IACEO,EAAeT,mBAAiBP,EAAeK,EAAarB,GAClEG,EAA0B,WACxBwB,EAAYI,QAAU,CACpBC,MAAAA,EACAP,SAAAA,EACAS,MAAO,IAAIR,QAEXS,KACAX,EAAKY,mCAvDsC,EAwDzCZ,EAAKa,uCAAyC3B,EAC9Cc,EAAKc,6BAA+BzB,EACtBE,KAIS,eAAzBwB,QAAQC,IAAIC,UDpDmB,SACnCT,EACAP,GAEA,IAAMiB,EAAWd,WACjBpB,YAAU,WACRkC,EAASX,QAzBc,SACzBC,EACAP,GAEA,IAAMkB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOtB,EAASuB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKZ,GACEW,EAScS,CAAmBpB,EAAOP,KAE/C4B,gBAAcX,GC8CZY,CAAsBtB,EAAOP,GAE/B,IAAM8B,EAAa3B,SAAO,IAAIF,SAC9B,OAAO8B,kBAAgBxB,EAAOP,EAAU8B,EAAWxB"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/patchStore.ts","../src/useTrackedState.ts","../src/useSelector.ts","../src/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n"],"names":["subscribe","store","callback","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"kDAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICdhCC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,uQDFK,SACxBH,GAEA,IAAMQ,EAAgBC,sBAAoBT,EAAO,kBAAMA,EAAMU,aAE7D,OADCV,EAAsCQ,cAAgBA,EAChDR,uBEDkB,SACzBW,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACd,UAC/BY,EAASZ,EAAMU,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAad,4BDS3C,SAC7BY,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyCnB,EAC9Cc,EAAKM,6BAAyCjB,EACAE,EAG5CM,EAAcU,UAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQlB,GACN,IAAM0B,EAAY1B,EAAMU,WACxB,OAAkB,OAAdc,GAAsBA,IAAcE,GAAcC,gBACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAeb,mBAAiBP,EAAeK,EAAad,GACrC,eAAzB8B,QAAQC,IAAIC,UEvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,WACjBC,YAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKT,GACEQ,EAScS,CAAmBjB,EAAOX,KAE/C6B,gBAAcd,GFiDZe,CAAsBnB,EAAOX,GAE/B,IAAM+B,EAAazB,UAAQ,sBAAUL,SAAW,IAChD,OAAO+B,kBAAgBrB,EAAOX,EAAU+B"} \ No newline at end of file diff --git a/dist/index.umd.js b/dist/index.umd.js index a6f76cd..6948b29 100644 --- a/dist/index.umd.js +++ b/dist/index.umd.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("proxy-compare")):"function"==typeof define&&define.amd?define(["exports","react","proxy-compare"],t):t((e=e||self).reactiveReactRedux={},e.react,e.proxyCompare)}(this,function(e,t,r){var n=function(e,t){return e.subscribe(t)},a="undefined"==typeof window||/ServerSideRendering/.test(window.navigator&&window.navigator.userAgent)?t.useEffect:t.useLayoutEffect,u=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,c=r.MODE_IGNORE_REF_EQUALITY,o=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(e,"getUntrackedObject",{enumerable:!0,get:function(){return r.getUntrackedObject}}),Object.defineProperty(e,"trackMemo",{enumerable:!0,get:function(){return r.trackMemo}}),e.patchStore=function(e){var r=t.createMutableSource(e,function(){return e.getState()});return e.mutableSource=r,e},e.useSelector=function(e,r){var a=e.mutableSource,u=t.useCallback(function(e){return r(e.getState())},[r]);return t.useMutableSource(a,u,n)},e.useTrackedState=function(e,f){void 0===f&&(f={});var i=e.mutableSource,s=new WeakMap,d=t.useRef(),E=t.useCallback(function(e){var t=e.getState(),n=d.current;return n?n.affected!==s||n.state===t||r.isDeepChanged(n.state,t,n.affected,n.cache,n.mode)?t:n.state:t},[s]),p=t.useMutableSource(i,E,n);a(function(){d.current={state:p,affected:s,cache:new WeakMap,mode:f.unstable_forceUpdateForStateChange?0:f.unstable_ignoreIntermediateObjectUsage?u:f.unstable_ignoreStateEquality?c:o}}),"production"!==process.env.NODE_ENV&&function(e,r){var n=t.useRef();t.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,a){var u=t.get(n);u?u.forEach(function(t){e(n[t],a?[].concat(a,[t]):[t])}):a&&r.push(a)}(e),r}(e,r)}),t.useDebugValue(n)}(p,s);var b=t.useRef(new WeakMap);return r.createDeepProxy(p,s,b.current)}}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("proxy-compare")):"function"==typeof define&&define.amd?define(["exports","react","proxy-compare"],t):t((e=e||self).reactiveReactRedux={},e.react,e.proxyCompare)}(this,function(e,t,r){var n=function(e,t){return e.subscribe(t)},u=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,a=r.MODE_IGNORE_REF_EQUALITY,o=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(e,"getUntrackedObject",{enumerable:!0,get:function(){return r.getUntrackedObject}}),Object.defineProperty(e,"trackMemo",{enumerable:!0,get:function(){return r.trackMemo}}),e.patchStore=function(e){var r=t.createMutableSource(e,function(){return e.getState()});return e.mutableSource=r,e},e.useSelector=function(e,r){var u=e.mutableSource,a=t.useCallback(function(e){return r(e.getState())},[r]);return t.useMutableSource(u,a,n)},e.useTrackedState=function(e,c){void 0===c&&(c={});var i=e.mutableSource,f=new WeakMap,E=c.unstable_forceUpdateForStateChange?0:c.unstable_ignoreIntermediateObjectUsage?u:c.unstable_ignoreStateEquality?a:o,s=t.useMemo(function(){var e=null,t=new WeakMap;return function(n){var u=n.getState();return null===e||e===u||r.isDeepChanged(e,u,f,t,E)?(e=u,u):e}},[f,E]),p=t.useMutableSource(i,s,n);"production"!==process.env.NODE_ENV&&function(e,r){var n=t.useRef();t.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(e,r)}),t.useDebugValue(n)}(p,f);var l=t.useMemo(function(){return new WeakMap},[]);return r.createDeepProxy(p,f,l)}}); //# sourceMappingURL=index.umd.js.map diff --git a/dist/index.umd.js.map b/dist/index.umd.js.map index fb0dfc1..a9f8f89 100644 --- a/dist/index.umd.js.map +++ b/dist/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../src/patchStore.ts","../src/utils.ts","../src/useTrackedState.ts","../src/useSelector.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst isClient = (\n typeof window !== 'undefined'\n && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent)\n);\n\nexport const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect;\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n useRef,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const lastTracked = useRef();\n const getSnapshot = useCallback((store: Store) => {\n const nextState = store.getState();\n const lastTrackedCurrent = lastTracked.current;\n if (!lastTrackedCurrent) return nextState;\n if (lastTrackedCurrent.affected !== affected) return nextState;\n if (lastTrackedCurrent.state === nextState) return nextState;\n if (isDeepChanged(\n lastTrackedCurrent.state,\n nextState,\n lastTrackedCurrent.affected,\n lastTrackedCurrent.cache,\n lastTrackedCurrent.mode,\n )) return nextState;\n // not changed\n return lastTrackedCurrent.state;\n }, [affected]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n useIsomorphicLayoutEffect(() => {\n lastTracked.current = {\n state,\n affected,\n cache: new WeakMap(),\n /* eslint-disable no-nested-ternary, indent */\n mode:\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT,\n /* eslint-enable no-nested-ternary, indent */\n };\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useRef(new WeakMap()); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache.current);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n"],"names":["subscribe","store","callback","useIsomorphicLayoutEffect","window","test","navigator","userAgent","useEffect","useLayoutEffect","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","lastTracked","useRef","nextState","lastTrackedCurrent","current","state","isDeepChanged","cache","mode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","process","env","NODE_ENV","pathList","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"mSAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICzBzBC,EAJO,oBAAXC,QACH,sBAAsBC,KAAKD,OAAOE,WAAaF,OAAOE,UAAUC,WAGAC,YAAlBC,kBCY9CC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,qPFHK,SACxBV,GAEA,IAAMe,EAAgBC,sBAAoBhB,EAAO,kBAAMA,EAAMiB,aAE7D,OADCjB,EAAsCe,cAAgBA,EAChDf,iBGDkB,SACzBkB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACrB,UAC/BmB,EAASnB,EAAMiB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAarB,sBDU3C,SAC7BmB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAAcC,WACdP,EAAcC,cAAY,SAACrB,GAC/B,IAAM4B,EAAY5B,EAAMiB,WAClBY,EAAqBH,EAAYI,QACvC,OAAKD,EACDA,EAAmBL,WAAaA,GAChCK,EAAmBE,QAAUH,GAC7BI,gBACFH,EAAmBE,MACnBH,EACAC,EAAmBL,SACnBK,EAAmBI,MACnBJ,EAAmBK,MAPgCN,EAU9CC,EAAmBE,MAXMH,GAY/B,CAACJ,IACEO,EAAeT,mBAAiBP,EAAeK,EAAarB,GAClEG,EAA0B,WACxBwB,EAAYI,QAAU,CACpBC,MAAAA,EACAP,SAAAA,EACAS,MAAO,IAAIR,QAEXS,KACAX,EAAKY,mCAvDsC,EAwDzCZ,EAAKa,uCAAyC3B,EAC9Cc,EAAKc,6BAA+BzB,EACtBE,KAIS,eAAzBwB,QAAQC,IAAIC,UDpDmB,SACnCT,EACAP,GAEA,IAAMiB,EAAWd,WACjBpB,YAAU,WACRkC,EAASX,QAzBc,SACzBC,EACAP,GAEA,IAAMkB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOtB,EAASuB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKZ,GACEW,EAScS,CAAmBpB,EAAOP,KAE/C4B,gBAAcX,GC8CZY,CAAsBtB,EAAOP,GAE/B,IAAM8B,EAAa3B,SAAO,IAAIF,SAC9B,OAAO8B,kBAAgBxB,EAAOP,EAAU8B,EAAWxB"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/patchStore.ts","../src/useTrackedState.ts","../src/useSelector.ts","../src/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList);\n};\n"],"names":["subscribe","store","callback","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"mSAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICdhCC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,qPDFK,SACxBH,GAEA,IAAMQ,EAAgBC,sBAAoBT,EAAO,kBAAMA,EAAMU,aAE7D,OADCV,EAAsCQ,cAAgBA,EAChDR,iBEDkB,SACzBW,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACd,UAC/BY,EAASZ,EAAMU,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAad,sBDS3C,SAC7BY,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyCnB,EAC9Cc,EAAKM,6BAAyCjB,EACAE,EAG5CM,EAAcU,UAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQlB,GACN,IAAM0B,EAAY1B,EAAMU,WACxB,OAAkB,OAAdc,GAAsBA,IAAcE,GAAcC,gBACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAeb,mBAAiBP,EAAeK,EAAad,GACrC,eAAzB8B,QAAQC,IAAIC,UEvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,WACjBC,YAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKT,GACEQ,EAScS,CAAmBjB,EAAOX,KAE/C6B,gBAAcd,GFiDZe,CAAsBnB,EAAOX,GAE/B,IAAM+B,EAAazB,UAAQ,sBAAUL,SAAW,IAChD,OAAO+B,kBAAgBrB,EAAOX,EAAU+B"} \ No newline at end of file diff --git a/dist/src/utils.d.ts b/dist/src/utils.d.ts index d461530..2966a19 100644 --- a/dist/src/utils.d.ts +++ b/dist/src/utils.d.ts @@ -1,3 +1 @@ -import { useLayoutEffect } from 'react'; -export declare const useIsomorphicLayoutEffect: typeof useLayoutEffect; export declare const useAffectedDebugValue: (state: State, affected: WeakMap>) => void; diff --git a/package.json b/package.json index 6807738..35365c5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "reactive-react-redux", "description": "React Redux binding with React Hooks and Proxy", - "version": "5.0.0-alpha.1", + "version": "5.0.0-alpha.2", "author": "Daishi Kato", "repository": { "type": "git", diff --git a/src/useTrackedState.ts b/src/useTrackedState.ts index f3e7305..0449464 100644 --- a/src/useTrackedState.ts +++ b/src/useTrackedState.ts @@ -1,10 +1,9 @@ /* eslint-disable @typescript-eslint/ban-ts-ignore */ import { - useCallback, + useMemo, // @ts-ignore useMutableSource, - useRef, } from 'react'; import { Action as ReduxAction, @@ -19,7 +18,7 @@ import { } from 'proxy-compare'; import { PatchedStore, subscribe } from './patchStore'; -import { useIsomorphicLayoutEffect, useAffectedDebugValue } from './utils'; +import { useAffectedDebugValue } from './utils'; const MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0; const MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = ( @@ -51,42 +50,38 @@ export const useTrackedState = >( ) => { const { mutableSource } = patchedStore; const affected = new WeakMap(); - const lastTracked = useRef(); - const getSnapshot = useCallback((store: Store) => { - const nextState = store.getState(); - const lastTrackedCurrent = lastTracked.current; - if (!lastTrackedCurrent) return nextState; - if (lastTrackedCurrent.affected !== affected) return nextState; - if (lastTrackedCurrent.state === nextState) return nextState; - if (isDeepChanged( - lastTrackedCurrent.state, - nextState, - lastTrackedCurrent.affected, - lastTrackedCurrent.cache, - lastTrackedCurrent.mode, - )) return nextState; - // not changed - return lastTrackedCurrent.state; - }, [affected]); - const state: State = useMutableSource(mutableSource, getSnapshot, subscribe); - useIsomorphicLayoutEffect(() => { - lastTracked.current = { - state, - affected, - cache: new WeakMap(), - /* eslint-disable no-nested-ternary, indent */ - mode: - opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED - : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED - : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE - : /* default */ MODE_DEFAULT, - /* eslint-enable no-nested-ternary, indent */ + const deepChangedMode = ( + /* eslint-disable no-nested-ternary, indent, no-multi-spaces */ + opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED + : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED + : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE + : /* default */ MODE_DEFAULT + /* eslint-enable no-nested-ternary, indent, no-multi-spaces */ + ); + const getSnapshot = useMemo(() => { + let prevState: State | null = null; + const deepChangedCache = new WeakMap(); + return (store: Store) => { + const nextState = store.getState(); + if (prevState !== null && prevState !== nextState && !isDeepChanged( + prevState, + nextState, + affected, + deepChangedCache, + deepChangedMode, + )) { + // not changed + return prevState; + } + prevState = nextState; + return nextState; }; - }); + }, [affected, deepChangedMode]); + const state: State = useMutableSource(mutableSource, getSnapshot, subscribe); if (process.env.NODE_ENV !== 'production') { // eslint-disable-next-line react-hooks/rules-of-hooks useAffectedDebugValue(state, affected); } - const proxyCache = useRef(new WeakMap()); // per-hook proxyCache - return createDeepProxy(state, affected, proxyCache.current); + const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache + return createDeepProxy(state, affected, proxyCache); }; diff --git a/src/utils.ts b/src/utils.ts index c9458de..be69704 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,17 +1,9 @@ import { useEffect, - useLayoutEffect, useRef, useDebugValue, } from 'react'; -const isClient = ( - typeof window !== 'undefined' - && !/ServerSideRendering/.test(window.navigator && window.navigator.userAgent) -); - -export const useIsomorphicLayoutEffect = isClient ? useLayoutEffect : useEffect; - const affectedToPathList = ( state: State, affected: WeakMap>, From 29703863aaadde2a8e7deeb33171216b51bf8344 Mon Sep 17 00:00:00 2001 From: Daishi Kato Date: Tue, 17 Mar 2020 08:02:57 +0900 Subject: [PATCH 08/22] Update README.md Co-Authored-By: Adam Zmenak --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 15b5e05..cfdcdf1 100644 --- a/README.md +++ b/README.md @@ -83,7 +83,7 @@ const reducer = (state = initialState, action) => { } }; -const store = patchStoroe(createStore(reducer)); +const store = patchStore(createStore(reducer)); const Counter = () => { const state = useTrackedState(store); From 824b2cd99712cbaedb0361b416672a421f1bfa9d Mon Sep 17 00:00:00 2001 From: daishi Date: Tue, 17 Mar 2020 08:39:08 +0900 Subject: [PATCH 09/22] update README --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index cfdcdf1..99301d5 100644 --- a/README.md +++ b/README.md @@ -239,7 +239,7 @@ You can create a selector hook with tracking support. ```javascript import { useTrackedState } from 'reactive-react-redux'; -export const useTrackedSelector = selector => selector(useTrackedState()); +export const useTrackedSelector = (patchedStore, selector) => selector(useTrackedState(patchedStore)); ``` Please refer [this issue](https://github.com/dai-shi/reactive-react-redux/issues/41) for more information. @@ -252,9 +252,9 @@ make a hook that returns a tuple like `useReducer`. ```javascript import { useTrackedState, useDispatch } from 'reactive-react-redux'; -export const useTracked = () => { - const state = useTrackedState(); - const dispatch = useDispatch(); +export const useTracked = (patchedStore) => { + const state = useTrackedState(patchedStore); + const dispatch = useDispatch(patchedStore); return useMemo(() => [state, dispatch], [state, dispatch]); }; ``` @@ -267,8 +267,8 @@ There are some limitations and workarounds. ### Proxied states are referentially equal only in per-hook basis ```javascript -const state1 = useTrackedState(); -const state2 = useTrackedState(); +const state1 = useTrackedState(patchedStore); +const state2 = useTrackedState(patchedStore); // state1 and state2 is not referentially equal // even if the underlying redux state is referentially equal. ``` @@ -278,7 +278,7 @@ You should use `useTrackedState` only once in a component. ### An object referential change doesn't trigger re-render if an property of the object is accessed in previous render ```javascript -const state = useTrackedState(); +const state = useTrackedState(patchedStore); const { foo } = state; return ; @@ -320,8 +320,8 @@ wouldn't know how to unwrap your own Proxy. To work around such edge cases, the first option is to use primitive values. ```javascript -const state = useTrackedState(); -const dispatch = useUpdate(); +const state = useTrackedState(patchedStore); +const dispatch = useUpdate(patchedStore); dispatch({ type: 'FOO', value: state.fooObj }); // Instead of using objects, dispatch({ type: 'FOO', value: state.fooStr }); // Use primitives. ``` From 596324e48a0f72a985600468cc90ec4777a6d209 Mon Sep 17 00:00:00 2001 From: daishi Date: Tue, 17 Mar 2020 17:34:04 +0900 Subject: [PATCH 10/22] update package.json --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 35365c5..dc62dbc 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,9 @@ "name": "reactive-react-redux", "description": "React Redux binding with React Hooks and Proxy", "version": "5.0.0-alpha.2", + "publishConfig": { + "tag": "next" + }, "author": "Daishi Kato", "repository": { "type": "git", From c3596ece86b60eca7907a04c9bc42b49b1c89849 Mon Sep 17 00:00:00 2001 From: daishi Date: Mon, 11 May 2020 18:09:56 +0900 Subject: [PATCH 11/22] apidoc with sorting by hand --- README.md | 61 ++++++++++++++++++++++++++++++----------------------- src/memo.ts | 14 ++++++++++++ 2 files changed, 49 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 8fd6bca..17c4bb9 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,30 @@ const reducer = ...; const store = patchStore(createStore(reducer)); ``` +### useTrackedState + +useTrackedState hook + +It return the Redux state wrapped by Proxy, +and the state prperty access is tracked. +It will only re-render if accessed properties are changed. + +#### Parameters + +- `patchedStore` **PatchedStore<State, Action>** +- `opts` **Opts** (optional, default `{}`) + +#### Examples + +```javascript +import { useTrackedState } from 'reactive-react-redux'; + +const Component = () => { + const state = useTrackedState(store); + ... +}; +``` + ### useSelector useSelector hook @@ -172,28 +196,27 @@ const Component = ({ count }) => { }; ``` -### useTrackedState +### memo -useTrackedState hook +memo -It return the Redux state wrapped by Proxy, -and the state prperty access is tracked. -It will only re-render if accessed properties are changed. +Using `React.memo` with tracked state is not compatible, +because `React.memo` stops state access, thus no tracking occurs. +This is a special memo to be used instead of `React.memo` with tracking support. #### Parameters -- `patchedStore` **PatchedStore<State, Action>** -- `opts` **Opts** (optional, default `{}`) +- `Component` **any** +- `areEqual` **any?** #### Examples ```javascript -import { useTrackedState } from 'reactive-react-redux'; +import { memo } from 'reactive-react-redux'; -const Component = () => { - const state = useTrackedState(store); - ... -}; +const ChildComponent = memo(({ obj1, obj2 }) => { + // ... +}); ``` ## Recipes @@ -232,20 +255,6 @@ export const useSelector = ( export const useTrackedState = () => useTrackedStateOrig(useContext(Context)); ``` -### memo - -Using `React.memo` with tracked state is not compatible, -because `React.memo` stops state access, thus no tracking occurs. -This is a special memo to be used instead of `React.memo` with tracking support. - -```javascript -const ChildComponent = memo(({ obj1, obj2 }) => { - // ... -}); -``` - -## Recipes - ### useTrackedSelector You can create a selector hook with tracking support. diff --git a/src/memo.ts b/src/memo.ts index 89c4807..c812be6 100644 --- a/src/memo.ts +++ b/src/memo.ts @@ -1,6 +1,20 @@ import { ComponentProps, createElement, memo as reactMemo } from 'react'; import { trackMemo } from 'proxy-compare'; +/** + * memo + * + * Using `React.memo` with tracked state is not compatible, + * because `React.memo` stops state access, thus no tracking occurs. + * This is a special memo to be used instead of `React.memo` with tracking support. + * + * @example + * import { memo } from 'reactive-react-redux'; + * + * const ChildComponent = memo(({ obj1, obj2 }) => { + * // ... + * }); + */ export const memo = ( Component: Parameters[0], areEqual?: Parameters[1], From a21b2261f337edbddaae12079829fb28a3baa278 Mon Sep 17 00:00:00 2001 From: daishi Date: Wed, 13 May 2020 23:24:29 +0900 Subject: [PATCH 12/22] run compile --- dist/index.esm.js | 2 ++ dist/index.esm.js.map | 1 + dist/index.js | 2 ++ dist/index.js.map | 1 + dist/index.umd.js | 2 ++ dist/index.umd.js.map | 1 + dist/src/index.d.ts | 6 ++++++ dist/src/memo.d.ts | 16 ++++++++++++++++ dist/src/patchStore.d.ts | 16 ++++++++++++++++ dist/src/useSelector.d.ts | 18 ++++++++++++++++++ dist/src/useTrackedState.d.ts | 18 ++++++++++++++++++ dist/src/utils.d.ts | 1 + 12 files changed, 84 insertions(+) create mode 100644 dist/index.esm.js create mode 100644 dist/index.esm.js.map create mode 100644 dist/index.js create mode 100644 dist/index.js.map create mode 100644 dist/index.umd.js create mode 100644 dist/index.umd.js.map create mode 100644 dist/src/index.d.ts create mode 100644 dist/src/memo.d.ts create mode 100644 dist/src/patchStore.d.ts create mode 100644 dist/src/useSelector.d.ts create mode 100644 dist/src/useTrackedState.d.ts create mode 100644 dist/src/utils.d.ts diff --git a/dist/index.esm.js b/dist/index.esm.js new file mode 100644 index 0000000..a5bddef --- /dev/null +++ b/dist/index.esm.js @@ -0,0 +1,2 @@ +import{createMutableSource as t,useCallback as r,useMutableSource as e,useRef as n,useEffect as u,useDebugValue as o,useMemo as a,memo as c,createElement as i}from"react";import{createDeepProxy as f,isDeepChanged as p,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED as m,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP as v,MODE_IGNORE_REF_EQUALITY as l,trackMemo as b}from"proxy-compare";export{getUntrackedObject}from"proxy-compare";var s=function(r){var e=t(r,function(){return r.getState()});return r.mutableSource=e,r},g=function(t,r){return t.subscribe(r)},S=function(t,n){var u=t.mutableSource,o=r(function(t){return n(t.getState())},[n]);return e(u,o,g)},d=m|v,E=l,h=m,k=function(t,r){void 0===r&&(r={});var c=t.mutableSource,i=new WeakMap,m=r.unstable_forceUpdateForStateChange?0:r.unstable_ignoreIntermediateObjectUsage?d:r.unstable_ignoreStateEquality?E:h,v=a(function(){var t=null,r=new WeakMap;return function(e){var n=e.getState();return null===t||t===n||p(t,n,i,r,m)?(t=n,n):t}},[i,m]),l=e(c,v,g);"production"!==process.env.NODE_ENV&&function(t,r){var e=n();u(function(){e.current=function(t,r){var e=[];return function t(n,u){var o=r.get(n);o?o.forEach(function(r){t(n[r],u?[].concat(u,[r]):[r])}):u&&e.push(u)}(t),e}(t,r)}),o(e.current)}(l,i);var b=a(function(){return new WeakMap},[]);return f(l,i,b)},x=function(t,r){return c(function(r){return Object.values(r).forEach(b),i(t,r)},r)};export{x as memo,s as patchStore,S as useSelector,k as useTrackedState}; +//# sourceMappingURL=index.esm.js.map diff --git a/dist/index.esm.js.map b/dist/index.esm.js.map new file mode 100644 index 0000000..4e411e2 --- /dev/null +++ b/dist/index.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.esm.js","sources":["../src/patchStore.ts","../src/useSelector.ts","../src/useTrackedState.ts","../src/utils.ts","../src/memo.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList.current);\n};\n","import { ComponentProps, createElement, memo as reactMemo } from 'react';\nimport { trackMemo } from 'proxy-compare';\n\n/**\n * memo\n *\n * Using `React.memo` with tracked state is not compatible,\n * because `React.memo` stops state access, thus no tracking occurs.\n * This is a special memo to be used instead of `React.memo` with tracking support.\n *\n * @example\n * import { memo } from 'reactive-react-redux';\n *\n * const ChildComponent = memo(({ obj1, obj2 }) => {\n * // ...\n * });\n */\nexport const memo = (\n Component: Parameters[0],\n areEqual?: Parameters[1],\n) => {\n const WrappedComponent = (props: ComponentProps) => {\n Object.values(props).forEach(trackMemo);\n return createElement(Component, props);\n };\n return reactMemo(WrappedComponent, areEqual);\n};\n"],"names":["patchStore","store","mutableSource","createMutableSource","getState","subscribe","callback","useSelector","patchedStore","selector","getSnapshot","useCallback","useMutableSource","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","useTrackedState","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy","memo","Component","areEqual","reactMemo","props","Object","values","trackMemo","createElement"],"mappings":"maAyBaA,IAAAA,EAAa,SACxBC,GAEA,IAAMC,EAAgBC,EAAoBF,EAAO,kBAAMA,EAAMG,aAE7D,OADCH,EAAsCC,cAAgBA,EAChDD,GAGII,EAAY,SACvBJ,EACAK,GAGA,OADoBL,EAAMI,UAAUC,ICRzBC,EAAc,SACzBC,EACAC,OAEQP,EAAkBM,EAAlBN,cACFQ,EAAcC,EAAY,SAACV,UAC/BQ,EAASR,EAAMG,aACd,CAACK,IAEJ,OAD2BG,EAAiBV,EAAeQ,EAAaL,ICdpEQ,EACJC,EAAsCC,EAElCC,EAA0BC,EAC1BC,EAAeJ,EAmBRK,EAAkB,SAC7BX,EACAY,YAAAA,IAAAA,EAAa,QAELlB,EAAkBM,EAAlBN,cACFmB,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyCZ,EAC9CO,EAAKM,6BAAyCV,EACAE,EAG5CR,EAAciB,EAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQrB,GACN,IAAM6B,EAAY7B,EAAMG,WACxB,OAAkB,OAAdwB,GAAsBA,IAAcE,GAAcC,EACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAepB,EAAiBV,EAAeQ,EAAaL,GACrC,eAAzB4B,QAAQC,IAAIC,UCvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,IACjBC,EAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKT,GACEQ,EAScS,CAAmBjB,EAAOX,KAE/C6B,EAAcd,EAASG,SDiDrBY,CAAsBnB,EAAOX,GAE/B,IAAM+B,EAAazB,EAAQ,sBAAUL,SAAW,IAChD,OAAO+B,EAAgBrB,EAAOX,EAAU+B,IEpE7BE,EAAO,SAClBC,EACAC,GAMA,OAAOC,EAJkB,SAACC,GAExB,OADAC,OAAOC,OAAOF,GAAOZ,QAAQe,GACtBC,EAAcP,EAAWG,IAECF"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..b5cb6bc --- /dev/null +++ b/dist/index.js @@ -0,0 +1,2 @@ +var e=require("react"),t=require("proxy-compare"),r=function(e,t){return e.subscribe(t)},n=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,u=t.MODE_IGNORE_REF_EQUALITY,a=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(exports,"getUntrackedObject",{enumerable:!0,get:function(){return t.getUntrackedObject}}),exports.memo=function(r,n){return e.memo(function(n){return Object.values(n).forEach(t.trackMemo),e.createElement(r,n)},n)},exports.patchStore=function(t){var r=e.createMutableSource(t,function(){return t.getState()});return t.mutableSource=r,t},exports.useSelector=function(t,n){var u=t.mutableSource,a=e.useCallback(function(e){return n(e.getState())},[n]);return e.useMutableSource(u,a,r)},exports.useTrackedState=function(c,o){void 0===o&&(o={});var i=c.mutableSource,E=new WeakMap,s=o.unstable_forceUpdateForStateChange?0:o.unstable_ignoreIntermediateObjectUsage?n:o.unstable_ignoreStateEquality?u:a,f=e.useMemo(function(){var e=null,r=new WeakMap;return function(n){var u=n.getState();return null===e||e===u||t.isDeepChanged(e,u,E,r,s)?(e=u,u):e}},[E,s]),l=e.useMutableSource(i,f,r);"production"!==process.env.NODE_ENV&&function(t,r){var n=e.useRef();e.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(t,r)}),e.useDebugValue(n.current)}(l,E);var _=e.useMemo(function(){return new WeakMap},[]);return t.createDeepProxy(l,E,_)}; +//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000..6fc84d4 --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../src/patchStore.ts","../src/useTrackedState.ts","../src/memo.ts","../src/useSelector.ts","../src/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","import { ComponentProps, createElement, memo as reactMemo } from 'react';\nimport { trackMemo } from 'proxy-compare';\n\n/**\n * memo\n *\n * Using `React.memo` with tracked state is not compatible,\n * because `React.memo` stops state access, thus no tracking occurs.\n * This is a special memo to be used instead of `React.memo` with tracking support.\n *\n * @example\n * import { memo } from 'reactive-react-redux';\n *\n * const ChildComponent = memo(({ obj1, obj2 }) => {\n * // ...\n * });\n */\nexport const memo = (\n Component: Parameters[0],\n areEqual?: Parameters[1],\n) => {\n const WrappedComponent = (props: ComponentProps) => {\n Object.values(props).forEach(trackMemo);\n return createElement(Component, props);\n };\n return reactMemo(WrappedComponent, areEqual);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList.current);\n};\n"],"names":["subscribe","store","callback","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","Component","areEqual","reactMemo","props","Object","values","forEach","trackMemo","createElement","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"kDAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICdhCC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,mKCVD,SAClBK,EACAC,GAMA,OAAOC,OAJkB,SAACC,GAExB,OADAC,OAAOC,OAAOF,GAAOG,QAAQC,aACtBC,gBAAcR,EAAWG,IAECF,uBFAX,SACxBT,GAEA,IAAMiB,EAAgBC,sBAAoBlB,EAAO,kBAAMA,EAAMmB,aAE7D,OADCnB,EAAsCiB,cAAgBA,EAChDjB,uBGDkB,SACzBoB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACvB,UAC/BqB,EAASrB,EAAMmB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAavB,4BFS3C,SAC7BqB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyC5B,EAC9CuB,EAAKM,6BAAyC1B,EACAE,EAG5Ce,EAAcU,UAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQ3B,GACN,IAAMmC,EAAYnC,EAAMmB,WACxB,OAAkB,OAAdc,GAAsBA,IAAcE,GAAcC,gBACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAeb,mBAAiBP,EAAeK,EAAavB,GACrC,eAAzBuC,QAAQC,IAAIC,UGvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,WACjBC,YAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKnC,QAAQ,SAACqC,GACZL,EAAMC,EAAgCI,GAAMH,YAAWA,GAAMG,IAAO,CAACA,MAE9DH,GACTH,EAAKO,KAAKJ,GAGdF,CAAKT,GACEQ,EAScQ,CAAmBhB,EAAOX,KAE/C4B,gBAAcb,EAASG,SHiDrBW,CAAsBlB,EAAOX,GAE/B,IAAM8B,EAAaxB,UAAQ,sBAAUL,SAAW,IAChD,OAAO8B,kBAAgBpB,EAAOX,EAAU8B"} \ No newline at end of file diff --git a/dist/index.umd.js b/dist/index.umd.js new file mode 100644 index 0000000..c7ea12d --- /dev/null +++ b/dist/index.umd.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("proxy-compare")):"function"==typeof define&&define.amd?define(["exports","react","proxy-compare"],t):t((e=e||self).reactiveReactRedux={},e.react,e.proxyCompare)}(this,function(e,t,r){var n=function(e,t){return e.subscribe(t)},u=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,a=r.MODE_IGNORE_REF_EQUALITY,c=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(e,"getUntrackedObject",{enumerable:!0,get:function(){return r.getUntrackedObject}}),e.memo=function(e,n){return t.memo(function(n){return Object.values(n).forEach(r.trackMemo),t.createElement(e,n)},n)},e.patchStore=function(e){var r=t.createMutableSource(e,function(){return e.getState()});return e.mutableSource=r,e},e.useSelector=function(e,r){var u=e.mutableSource,a=t.useCallback(function(e){return r(e.getState())},[r]);return t.useMutableSource(u,a,n)},e.useTrackedState=function(e,o){void 0===o&&(o={});var i=e.mutableSource,f=new WeakMap,E=o.unstable_forceUpdateForStateChange?0:o.unstable_ignoreIntermediateObjectUsage?u:o.unstable_ignoreStateEquality?a:c,s=t.useMemo(function(){var e=null,t=new WeakMap;return function(n){var u=n.getState();return null===e||e===u||r.isDeepChanged(e,u,f,t,E)?(e=u,u):e}},[f,E]),l=t.useMutableSource(i,s,n);"production"!==process.env.NODE_ENV&&function(e,r){var n=t.useRef();t.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(e,r)}),t.useDebugValue(n.current)}(l,f);var p=t.useMemo(function(){return new WeakMap},[]);return r.createDeepProxy(l,f,p)}}); +//# sourceMappingURL=index.umd.js.map diff --git a/dist/index.umd.js.map b/dist/index.umd.js.map new file mode 100644 index 0000000..d4daa1e --- /dev/null +++ b/dist/index.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.umd.js","sources":["../src/patchStore.ts","../src/useTrackedState.ts","../src/memo.ts","../src/useSelector.ts","../src/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","import { ComponentProps, createElement, memo as reactMemo } from 'react';\nimport { trackMemo } from 'proxy-compare';\n\n/**\n * memo\n *\n * Using `React.memo` with tracked state is not compatible,\n * because `React.memo` stops state access, thus no tracking occurs.\n * This is a special memo to be used instead of `React.memo` with tracking support.\n *\n * @example\n * import { memo } from 'reactive-react-redux';\n *\n * const ChildComponent = memo(({ obj1, obj2 }) => {\n * // ...\n * });\n */\nexport const memo = (\n Component: Parameters[0],\n areEqual?: Parameters[1],\n) => {\n const WrappedComponent = (props: ComponentProps) => {\n Object.values(props).forEach(trackMemo);\n return createElement(Component, props);\n };\n return reactMemo(WrappedComponent, areEqual);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList.current);\n};\n"],"names":["subscribe","store","callback","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","Component","areEqual","reactMemo","props","Object","values","forEach","trackMemo","createElement","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"mSAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICdhCC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,uJCVD,SAClBK,EACAC,GAMA,OAAOC,OAJkB,SAACC,GAExB,OADAC,OAAOC,OAAOF,GAAOG,QAAQC,aACtBC,gBAAcR,EAAWG,IAECF,iBFAX,SACxBT,GAEA,IAAMiB,EAAgBC,sBAAoBlB,EAAO,kBAAMA,EAAMmB,aAE7D,OADCnB,EAAsCiB,cAAgBA,EAChDjB,iBGDkB,SACzBoB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACvB,UAC/BqB,EAASrB,EAAMmB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAavB,sBFS3C,SAC7BqB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyC5B,EAC9CuB,EAAKM,6BAAyC1B,EACAE,EAG5Ce,EAAcU,UAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQ3B,GACN,IAAMmC,EAAYnC,EAAMmB,WACxB,OAAkB,OAAdc,GAAsBA,IAAcE,GAAcC,gBACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAeb,mBAAiBP,EAAeK,EAAavB,GACrC,eAAzBuC,QAAQC,IAAIC,UGvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,WACjBC,YAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKnC,QAAQ,SAACqC,GACZL,EAAMC,EAAgCI,GAAMH,YAAWA,GAAMG,IAAO,CAACA,MAE9DH,GACTH,EAAKO,KAAKJ,GAGdF,CAAKT,GACEQ,EAScQ,CAAmBhB,EAAOX,KAE/C4B,gBAAcb,EAASG,SHiDrBW,CAAsBlB,EAAOX,GAE/B,IAAM8B,EAAaxB,UAAQ,sBAAUL,SAAW,IAChD,OAAO8B,kBAAgBpB,EAAOX,EAAU8B"} \ No newline at end of file diff --git a/dist/src/index.d.ts b/dist/src/index.d.ts new file mode 100644 index 0000000..d81706e --- /dev/null +++ b/dist/src/index.d.ts @@ -0,0 +1,6 @@ +export type { PatchedStore } from './patchStore'; +export { patchStore } from './patchStore'; +export { useSelector } from './useSelector'; +export { useTrackedState } from './useTrackedState'; +export { memo } from './memo'; +export { getUntrackedObject } from 'proxy-compare'; diff --git a/dist/src/memo.d.ts b/dist/src/memo.d.ts new file mode 100644 index 0000000..0faf06b --- /dev/null +++ b/dist/src/memo.d.ts @@ -0,0 +1,16 @@ +/// +/** + * memo + * + * Using `React.memo` with tracked state is not compatible, + * because `React.memo` stops state access, thus no tracking occurs. + * This is a special memo to be used instead of `React.memo` with tracking support. + * + * @example + * import { memo } from 'reactive-react-redux'; + * + * const ChildComponent = memo(({ obj1, obj2 }) => { + * // ... + * }); + */ +export declare const memo: (Component: import("react").ComponentType, areEqual?: ((prevProps: Readonly, nextProps: Readonly) => boolean) | undefined) => import("react").MemoExoticComponent<(props: any) => import("react").ReactElement import("react").ReactElement import("react").Component)> | null) | (new (props: any) => import("react").Component)>>; diff --git a/dist/src/patchStore.d.ts b/dist/src/patchStore.d.ts new file mode 100644 index 0000000..00d77bd --- /dev/null +++ b/dist/src/patchStore.d.ts @@ -0,0 +1,16 @@ +import { Action as ReduxAction, Store } from 'redux'; +export declare type PatchedStore> = { + mutableSource: any; +} & Store; +/** + * patch Redux store for React + * + * @example + * import { createStore } from 'redux'; + * import { patchStore } from 'reactive-react-redux'; + * + * const reducer = ...; + * const store = patchStore(createStore(reducer)); + */ +export declare const patchStore: >(store: Store) => PatchedStore; +export declare const subscribe: >(store: Store, callback: () => void) => import("redux").Unsubscribe; diff --git a/dist/src/useSelector.d.ts b/dist/src/useSelector.d.ts new file mode 100644 index 0000000..c95c5d3 --- /dev/null +++ b/dist/src/useSelector.d.ts @@ -0,0 +1,18 @@ +import { Action as ReduxAction } from 'redux'; +import { PatchedStore } from './patchStore'; +/** + * useSelector hook + * + * selector has to be stable. Either define it outside render + * or use useCallback if selector uses props. + * + * @example + * import { useCallback } from 'react'; + * import { useSelector } from 'reactive-react-redux'; + * + * const Component = ({ count }) => { + * const isBigger = useSelector(store, useCallack(state => state.count > count, [count])); + * ... + * }; + */ +export declare const useSelector: , Selected>(patchedStore: PatchedStore, selector: (state: State) => Selected) => Selected; diff --git a/dist/src/useTrackedState.d.ts b/dist/src/useTrackedState.d.ts new file mode 100644 index 0000000..cf594f1 --- /dev/null +++ b/dist/src/useTrackedState.d.ts @@ -0,0 +1,18 @@ +import { Action as ReduxAction } from 'redux'; +import { PatchedStore } from './patchStore'; +/** + * useTrackedState hook + * + * It return the Redux state wrapped by Proxy, + * and the state prperty access is tracked. + * It will only re-render if accessed properties are changed. + * + * @example + * import { useTrackedState } from 'reactive-react-redux'; + * + * const Component = () => { + * const state = useTrackedState(store); + * ... + * }; + */ +export declare const useTrackedState: >(patchedStore: PatchedStore, opts?: any) => State; diff --git a/dist/src/utils.d.ts b/dist/src/utils.d.ts new file mode 100644 index 0000000..2966a19 --- /dev/null +++ b/dist/src/utils.d.ts @@ -0,0 +1 @@ +export declare const useAffectedDebugValue: (state: State, affected: WeakMap>) => void; From 670f1d3f20a6da894d21d4826c4fb2edc5caae8a Mon Sep 17 00:00:00 2001 From: daishi Date: Wed, 13 May 2020 23:38:46 +0900 Subject: [PATCH 13/22] 5.0.0-alpha.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d91f861..5376f3b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "reactive-react-redux", "description": "React Redux binding with React Hooks and Proxy", - "version": "5.0.0-alpha.2", + "version": "5.0.0-alpha.3", "publishConfig": { "tag": "next" }, From 99580b4a4c30c44c15bdccb938723abb6ee2cd98 Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 4 Jul 2020 07:59:24 +0900 Subject: [PATCH 14/22] update dependencies --- package.json | 42 +- yarn.lock | 3738 ++++++++++++++++++++++++-------------------------- 2 files changed, 1791 insertions(+), 1989 deletions(-) diff --git a/package.json b/package.json index 5376f3b..9a77d6e 100644 --- a/package.json +++ b/package.json @@ -51,37 +51,37 @@ ], "license": "MIT", "dependencies": { - "proxy-compare": "^1.0.1" + "proxy-compare": "^1.0.2" }, "devDependencies": { - "@testing-library/react": "^10.0.4", - "@types/jest": "^25.2.1", - "@types/react": "^16.9.35", + "@testing-library/react": "^10.4.3", + "@types/jest": "^26.0.3", + "@types/react": "^16.9.41", "@types/react-dom": "^16.9.8", - "@types/redux-logger": "^3.0.7", - "@typescript-eslint/eslint-plugin": "^2.31.0", - "@typescript-eslint/parser": "^2.31.0", - "documentation": "^13.0.0", - "eslint": "^7.0.0", - "eslint-config-airbnb": "^18.1.0", - "eslint-plugin-import": "^2.20.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.19.0", - "eslint-plugin-react-hooks": "^4.0.0", + "@types/redux-logger": "^3.0.8", + "@typescript-eslint/eslint-plugin": "^3.5.0", + "@typescript-eslint/parser": "^3.5.0", + "documentation": "^13.0.2", + "eslint": "^7.4.0", + "eslint-config-airbnb": "^18.2.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react-hooks": "^4.0.5", "html-webpack-plugin": "^4.3.0", - "immer": "^6.0.5", - "jest": "^26.0.1", - "microbundle": "^0.12.0", + "immer": "^7.0.5", + "jest": "^26.1.0", + "microbundle": "^0.12.2", "npm-run-all": "^4.1.5", "react": "experimental", "react-dom": "experimental", "redux": "^4.0.5", "redux-thunk": "^2.3.0", - "ts-jest": "^25.5.1", - "ts-loader": "^7.0.3", - "typescript": "^3.8.3", + "ts-jest": "^26.1.1", + "ts-loader": "^7.0.5", + "typescript": "^3.9.6", "webpack": "^4.43.0", - "webpack-cli": "^3.3.11", + "webpack-cli": "^3.3.12", "webpack-dev-server": "^3.11.0" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 09faddc..83c8e60 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,35 +2,35 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/highlight" "^7.8.3" + "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" - integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== +"@babel/compat-data@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" + integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== dependencies: - browserslist "^4.11.1" + browserslist "^4.12.0" invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.7.5", "@babel/core@^7.8.7", "@babel/core@^7.9.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" - integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.6" - "@babel/parser" "^7.9.6" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" +"@babel/core@^7.1.0", "@babel/core@^7.10.2", "@babel/core@^7.7.5", "@babel/core@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" + integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -40,252 +40,252 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.9.4", "@babel/generator@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" - integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== +"@babel/generator@^7.10.4", "@babel/generator@^7.9.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" + integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== dependencies: - "@babel/types" "^7.9.6" + "@babel/types" "^7.10.4" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-builder-react-jsx-experimental@^7.9.0": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.5.tgz#0b4b3e04e6123f03b404ca4dfd6528fe6bb92fe3" - integrity sha512-HAagjAC93tk748jcXpZ7oYRZH485RCq/+yEv9SIWezHRPv9moZArTnkUNciUNzvwHUABmiWKlcxJvMcu59UwTg== +"@babel/helper-builder-react-jsx-experimental@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.4.tgz#d0ffb875184d749c63ffe1f4f65be15143ec322d" + integrity sha512-LyacH/kgQPgLAuaWrvvq1+E7f5bLyT8jXCh7nM67sRsy2cpIGfgWJ+FCnAKQXfY+F0tXUaN6FqLkp4JiCzdK8Q== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-module-imports" "^7.8.3" - "@babel/types" "^7.9.5" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-builder-react-jsx@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" - integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/types" "^7.9.0" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-compilation-targets@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" - integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== dependencies: - "@babel/compat-data" "^7.9.6" - browserslist "^4.11.1" + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.7.4", "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897" - integrity sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow== - dependencies: - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.9.6" - "@babel/helper-split-export-declaration" "^7.8.3" - -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" +"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.7.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" + integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== +"@babel/helper-define-map@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" + integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.4" lodash "^4.17.13" -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" - integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.9.5" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" + integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.7.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== +"@babel/helper-module-transforms@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" + integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" lodash "^4.17.13" -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.10.4" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== +"@babel/helper-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" + integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" - integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helpers@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" - integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.9.4": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== +"@babel/parser@7.10.2": + version "7.10.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" + integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== -"@babel/parser@^7.1.0", "@babel/parser@^7.3.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" - integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" + integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== -"@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" + integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" "@babel/plugin-proposal-class-properties@7.7.4": @@ -296,160 +296,160 @@ "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-proposal-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== +"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-decorators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" - integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.4.tgz#fe20ef10cc73f386f70910fca48798041cd357c7" + integrity sha512-JHTWjQngOPv+ZQQqOGv2x6sCCr4IYWy7S1/VH6BE9ZfkoLrdQ2GpEP3tfb5M++G9PwvqjhY8VC/C3tXm+/eHvA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.10.4" "@babel/plugin-proposal-do-expressions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.8.3.tgz#2ccf97061e93d5ffff986dda3f1b54efe9df7719" - integrity sha512-NoMcN+0+SS1DVswjDCfz+Jfm9ViOYuFtv1lm0QInEugbEXK2iH3jeSq38WmIiTP+2QKqo2zt8xku77gqHINZkw== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.10.4.tgz#9a5190f3bf4818f83e41d673ee517ff76cf8e4ed" + integrity sha512-Gcc2wLVeMceRdP6m9tdDygP01lbUVmaQGBRoIRJZxzPfB5VTiUgmn1jGfORgqbEVgUpG0IQm/z4q5Y/qzG+8JQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-do-expressions" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-do-expressions" "^7.10.4" -"@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-proposal-export-default-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.8.3.tgz#4cb7c2fdeaed490b60d9bfd3dc8a20f81f9c2e7c" - integrity sha512-PYtv2S2OdCdp7GSPDg5ndGZFm9DmWFvuLoS5nBxZCgOBggluLnhTScspJxng96alHQzPyrrHxvC9/w4bFuspeA== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz#08f66eef0067cbf6a7bc036977dcdccecaf0c6c5" + integrity sha512-G1l00VvDZ7Yk2yRlC5D8Ybvu3gmeHS3rCHoUYdjrqGYUtdeOBoRypnvDZ5KQqxyaiiGHWnVDeSEzA5F9ozItig== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-export-default-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-default-from" "^7.10.4" "@babel/plugin-proposal-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.8.3.tgz#63ad57265d0e3912afd666eb44ce26fa8cd2c774" - integrity sha512-WKK+9jz6TWUTX1uej9/EUVOmM1sK7aHv6bZyxbUV3NJjbiIZRqJITeXGMo7D631J72PEnIORh5VOlFCSlrLicg== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" + integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-function-bind@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.8.3.tgz#e34a1e984771b84b6e5322745edeadca7e500ced" - integrity sha512-6q7VAHJQa9x4P6Lm6h6KHoJUEhx2r1buFKseHICe0ogb1LWxducO4tsQp3hd/7BVBo485YBsn6tJnpuwWm/9cA== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.10.4.tgz#20473ab9c3b22fb9314fcc78ab2cdcc5e5f9adb6" + integrity sha512-7l1vyaVdRHQJ9m7Gr4tPyjfXcyhzPoulezpfDtOY+c471griieTUMoPdqTo/oSzVdsNT5uQOt05kFyprDTieYA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-function-bind" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-function-bind" "^7.10.4" "@babel/plugin-proposal-function-sent@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.8.3.tgz#341fd532b7eadbbbdd8bcb715150f279a779f14f" - integrity sha512-lu9wQjLnXd6Zy6eBKr0gE175xfD+da1rv2wOWEnZlD5KIxl894Tg34ppZ7ANR0jzQJMn+7pGuzSdy6JK4zGtKg== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.10.4.tgz#05f2daef7b3f09b6c74c9e8a85b430272d206ac4" + integrity sha512-aBtve/DhQsVPAGnSDcgt33gF36rO0TK+KtHp9Hwtj3KwH+o1Cii9vfVVYeB9c6Jo1SXOgTRwRD7ljpTS0qbN8w== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/plugin-syntax-function-sent" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/plugin-syntax-function-sent" "^7.10.4" -"@babel/plugin-proposal-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" - integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== +"@babel/plugin-proposal-json-strings@^7.10.4", "@babel/plugin-proposal-json-strings@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-proposal-logical-assignment-operators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.8.3.tgz#e94810d96cb76f20524e66ba617171c21f3c0124" - integrity sha512-TLPLojGZYBeeoesO2NQIMLUJKD9N5oJlxG6iHLx7l7EvNQP5DfzeyxdI2lMPo5I7ih4Jv/vxrlwIPf6aJw422Q== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.10.4.tgz#e62b5cf38e494d6cc24683e2a26cba4a28f7ea44" + integrity sha512-gyZd+5BZdK3rTpLCw0cTXUESWywH4wvugdzuUYkDKhtP0Obkp2ebZZzVE24UhVOb47vTDNwbUzQpei9psxYj6A== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== +"@babel/plugin-proposal-numeric-separator@^7.10.4", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" - integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== +"@babel/plugin-proposal-object-rest-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== +"@babel/plugin-proposal-optional-chaining@^7.10.4", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" + integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-chaining" "^7.8.0" "@babel/plugin-proposal-pipeline-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.8.3.tgz#c3569228e7466f91bfff7f1c1ae18fb5d36b3097" - integrity sha512-Z0qV3aUYoLUAnVLdfLTlz/GJYfcrbX7Mhrp897Twik29wQseAFAAXQ4TPvN1oswVBHdN74sLPIn9HVfTXtjuQA== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.10.4.tgz#14d76c110409416f84c520d8a617bbe7f6a754dc" + integrity sha512-NL4M3pQrvBZKrudP2WybWIHWgLR4ZwWiIYPk1T0jbXl665Ao7ODn+OLksv2+1bMGwOIE49vNcmhaAMA0uqRgGA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-pipeline-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-pipeline-operator" "^7.10.4" -"@babel/plugin-proposal-private-methods@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.8.3.tgz#01248c6c8dc292116b3b4ebd746150f4f0728bab" - integrity sha512-ysLAper960yy1TVXa2lMYdCQIGqtUXo8sVb+zYE7UTiZSLs6/wbZ0PrrXEKESJcK3SgFWrF8WpsaDzdslhuoZA== +"@babel/plugin-proposal-private-methods@^7.10.4", "@babel/plugin-proposal-private-methods@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-throw-expressions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.8.3.tgz#155f36ae40c2a88ae685c35e3220f8a0d426cf24" - integrity sha512-tH40s9JnoR+r45ZXKWW+PC5xzPQfVJix3pR1D8Ty5l9sn5NnrbZUzw8MtnNxu/Bz7p0imyeSYj9FQVccEymOEg== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.10.4.tgz#501154a3c1b33cb1ad5b899204481fa2859cd3f3" + integrity sha512-m7K9duXeH/rko36i9G9seLOg2AVdeVTn65k8nnTxgozex0hkDSUr6cktJxTO7jElGEpmMz410pTs0Jn8+empxw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-throw-expressions" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-throw-expressions" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== +"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -465,26 +465,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" - integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== +"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-decorators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.8.3.tgz#8d2c15a9f1af624b0025f961682a9d53d3001bda" - integrity sha512-8Hg4dNNT9/LcA1zQlfwuKR8BUc/if7Q7NkTam9sGTcJphLwpf2g4S42uhspQrIrR+dpzE0dtTqBVFoHl8GtnnQ== +"@babel/plugin-syntax-decorators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" + integrity sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-do-expressions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.8.3.tgz#e54edb578dc2c05e3b0055fac5cc55a9767d22dd" - integrity sha512-puRiUTVDQ69iRX41eeVWqOftZK31waWqZfwKB/TGzPfgi7097twx/DpwfOfyqEGqYtvpQF3jpHwT6UBzvSyAjw== +"@babel/plugin-syntax-do-expressions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.10.4.tgz#0c7ebb749500c6bfa99a9f926db3bfd6cdbaded9" + integrity sha512-HyvaTg1aiwGo2I+Pu0nyurRMjIP7J89GpuZ2mcQ0fhO6Jt3BnyhEPbNJFG1hRE99NAPNfPYh93/7HO+GPVkTKg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -493,12 +493,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.8.3.tgz#f1e55ce850091442af4ba9c2550106035b29d678" - integrity sha512-a1qnnsr73KLNIQcQlcQ4ZHxqqfBKM6iNQZW2OMTyxNbA2WC7SHWHtGVpFzWtQAuS2pspkWVzdEBXXx8Ik0Za4w== +"@babel/plugin-syntax-export-default-from@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz#e5494f95006355c10292a0ff1ce42a5746002ec8" + integrity sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" @@ -507,33 +507,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" - integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== +"@babel/plugin-syntax-flow@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" + integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-function-bind@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.8.3.tgz#17d722cd8efc9bb9cf8bc59327f2b26295b352f7" - integrity sha512-gEYag4Q3CfqlQcJQQw/KSWdV2husGOnIsOsRlyzkoaNqj2V/V/CSdSJDCGSl67oJ1bdIYP6TjORWPH561dSJpA== +"@babel/plugin-syntax-function-bind@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.10.4.tgz#8378d94f3185ddd3008310c15fe0991cb0c85151" + integrity sha512-vF/K9yS0dpPNlT7mXSGhbdpb2f4DaLa/AYYbUqlxOggAug/oseIR1+LgAzwci4iJNlqWNmJ7aQ+llUMYjn9uhw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-function-sent@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.8.3.tgz#5a4874bdfc271f0fa1c470bf508dc54af3041e19" - integrity sha512-NNEutF0x2PdWYij2bmf/i50dSq4SUdgFij4BZwj3I4qDZgql3dlFJRyvwGHAhwKYElUKHaP0wQ/yO1d/enpJaw== +"@babel/plugin-syntax-function-sent@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.10.4.tgz#b551f38b629e2e20908e53624f96f9ab300f5061" + integrity sha512-dwElaRoDQhlVevbgKOlEUTe08QNJo4ZjWw3rqnMbEvH8NRJM+iPN2tTQtzyfNloXD8f3Jdiyf5Pn400B1U3SVA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.8.3.tgz#230afff79d3ccc215b5944b438e4e266daf3d84d" - integrity sha512-vYiGd4wQ9gx0Lngb7+bPCwQXGK/PR6FeTIJ+TIOlq+OfOKG/kCAOO2+IBac3oMM9qV7/fU76hfcqxUaLKZf1hQ== +"@babel/plugin-syntax-import-meta@^7.10.1", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" @@ -542,19 +542,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.7.4", "@babel/plugin-syntax-jsx@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" - integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== +"@babel/plugin-syntax-jsx@^7.10.1", "@babel/plugin-syntax-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" + integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" - integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" @@ -563,12 +563,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" @@ -591,394 +591,413 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-pipeline-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.8.3.tgz#945d9f13958408e2b1048f6ebe03f370d390aaca" - integrity sha512-GhiBvlXZLWeP+MjKaEv33KmiR/QMCv4iCwz1AuuAp7pHxBvOxxyQmIPukh+N/py6PRLYG10bvRCNeenG34QbDA== +"@babel/plugin-syntax-pipeline-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.10.4.tgz#31bf327cf780dd60e0444fd98561119795247a6c" + integrity sha512-QOmXevisZebt9pBkMdDdXWg+fndB8dT/puwSKKu/1K3P4oBwmydN/4dX1hdrNvPHbw4xE+ocIoEus7c4eh7Igg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-throw-expressions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.8.3.tgz#c763bcf26d202ddb65f1299a29d63aad312adb54" - integrity sha512-Mv3shY1i7ZssY4OY+eLZJAmNCwqTcpv2qOKO9x6irELSygfKWVSMXk0igJsA9UhU4hOdw0qMGkjj9TAk4MqzwQ== +"@babel/plugin-syntax-throw-expressions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.10.4.tgz#a588df9fa2203207a3ac7e35f0db3b67bf68eca3" + integrity sha512-Yac/4W71+JdAiOV3aLbnUUe2R0NZzNvdy5EqdauFnBQTxIXT58M89lOplIFVELTSus6PxFMjmbi2vXaJDiV/PQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" -"@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" - integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" + integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" - integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" - integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== +"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-flow-strip-types@^7.7.4", "@babel/plugin-transform-flow-strip-types@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" - integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== +"@babel/plugin-transform-flow-strip-types@^7.10.1", "@babel/plugin-transform-flow-strip-types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" + integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.10.4" -"@babel/plugin-transform-for-of@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" - integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" - integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" + integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" - integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" - integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" + integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" - integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - -"@babel/plugin-transform-new-target@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-object-super@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-parameters@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" - integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-display-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" - integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" -"@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" - integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" + integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-self@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" - integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" - integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== +"@babel/plugin-transform-react-display-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" + integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.7.7", "@babel/plugin-transform-react-jsx@^7.9.4": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" - integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== +"@babel/plugin-transform-react-jsx-development@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" + integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== dependencies: - "@babel/helper-builder-react-jsx" "^7.9.0" - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" - integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== +"@babel/plugin-transform-react-jsx-self@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" + integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-reserved-words@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== +"@babel/plugin-transform-react-jsx-source@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.4.tgz#86baf0fcccfe58084e06446a80858e1deae8f291" + integrity sha512-FTK3eQFrPv2aveerUSazFmGygqIdTtvskG50SnGnbEUnRPcGx2ylBhdFIzoVS1ty44hEgcPoCAyw5r3VDEq+Ug== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== +"@babel/plugin-transform-react-jsx@^7.10.1", "@babel/plugin-transform-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" + integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" - integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== +"@babel/plugin-transform-react-pure-annotations@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" + integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== +"@babel/plugin-transform-regenerator@^7.10.1", "@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - -"@babel/plugin-transform-template-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" - integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + regenerator-transform "^0.14.2" -"@babel/preset-env@^7.8.7", "@babel/preset-env@^7.9.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" - integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== - dependencies: - "@babel/compat-data" "^7.9.6" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" + integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" + integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.10.2", "@babel/preset-env@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" + integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== + dependencies: + "@babel/compat-data" "^7.10.4" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-json-strings" "^7.8.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.5" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.9.5" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.6" - "@babel/plugin-transform-modules-commonjs" "^7.9.6" - "@babel/plugin-transform-modules-systemjs" "^7.9.6" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.9.5" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.6" - browserslist "^4.11.1" + "@babel/types" "^7.10.4" + browserslist "^4.12.0" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-flow@^7.7.4", "@babel/preset-flow@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.9.0.tgz#fee847c3e090b0b2d9227c1949e4da1d1379280d" - integrity sha512-88uSmlshIrlmPkNkEcx3UpSZ6b8n0UGBq0/0ZMZCF/uxAW0XIAUuDHBhIOAh0pvweafH4RxOwi/H3rWhtqOYPA== +"@babel/preset-flow@^7.10.1", "@babel/preset-flow@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" + integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-flow-strip-types" "^7.9.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.10.4" "@babel/preset-modules@^0.1.3": version "0.1.3" @@ -992,67 +1011,68 @@ esutils "^2.0.2" "@babel/preset-react@^7.9.4": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" - integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.4" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" + integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx-development" "^7.10.4" + "@babel/plugin-transform-react-jsx-self" "^7.10.4" + "@babel/plugin-transform-react-jsx-source" "^7.10.4" + "@babel/plugin-transform-react-pure-annotations" "^7.10.4" "@babel/preset-stage-0@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/preset-stage-0/-/preset-stage-0-7.8.3.tgz#b6a0eca1a3b72e07f9caf58f998e97568028f6f5" integrity sha512-+l6FlG1j73t4wh78W41StbcCz0/9a1/y+vxfnjtHl060kSmcgMfGzK9MEkLvrCOXfhp9RCX+d88sm6rOqxEIEQ== -"@babel/runtime-corejs3@^7.7.4", "@babel/runtime-corejs3@^7.8.3": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz#67aded13fffbbc2cb93247388cf84d77a4be9a71" - integrity sha512-6toWAfaALQjt3KMZQc6fABqZwUDDuWzz+cAfPhqyEnzxvdWOAkjwPNxgF8xlmo7OWLsSjaKjsskpKHRLaMArOA== +"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d" + integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw== dependencies: core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2", "@babel/runtime@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" - integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== +"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" + integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" - integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.6" - "@babel/types" "^7.9.6" +"@babel/template@^7.10.4", "@babel/template@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" + integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" - integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.9.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" + integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== dependencies: - "@babel/helper-validator-identifier" "^7.9.5" + "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.13" to-fast-properties "^2.0.0" @@ -1070,12 +1090,13 @@ minimist "^1.2.0" "@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" find-up "^4.1.0" + get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" @@ -1084,103 +1105,103 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.0.1.tgz#62b3b2fa8990f3cbffbef695c42ae9ddbc8f4b39" - integrity sha512-9t1KUe/93coV1rBSxMmBAOIK3/HVpwxArCA1CxskKyRiv6o8J70V8C/V3OJminVCTa2M0hQI9AWRd5wxu2dAHw== +"@jest/console@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.1.0.tgz#f67c89e4f4d04dbcf7b052aed5ab9c74f915b954" + integrity sha512-+0lpTHMd/8pJp+Nd4lyip+/Iyf2dZJvcCqrlkeZQoQid+JlThA4M9vxHtheyrQ99jJTMQam+es4BcvZ5W5cC3A== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" chalk "^4.0.0" - jest-message-util "^26.0.1" - jest-util "^26.0.1" + jest-message-util "^26.1.0" + jest-util "^26.1.0" slash "^3.0.0" -"@jest/core@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.0.1.tgz#aa538d52497dfab56735efb00e506be83d841fae" - integrity sha512-Xq3eqYnxsG9SjDC+WLeIgf7/8KU6rddBxH+SCt18gEpOhAGYC/Mq+YbtlNcIdwjnnT+wDseXSbU0e5X84Y4jTQ== +"@jest/core@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.1.0.tgz#4580555b522de412a7998b3938c851e4f9da1c18" + integrity sha512-zyizYmDJOOVke4OO/De//aiv8b07OwZzL2cfsvWF3q9YssfpcKfcnZAwDY8f+A76xXSMMYe8i/f/LPocLlByfw== dependencies: - "@jest/console" "^26.0.1" - "@jest/reporters" "^26.0.1" - "@jest/test-result" "^26.0.1" - "@jest/transform" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/console" "^26.1.0" + "@jest/reporters" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" ansi-escapes "^4.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^26.0.1" - jest-config "^26.0.1" - jest-haste-map "^26.0.1" - jest-message-util "^26.0.1" + jest-changed-files "^26.1.0" + jest-config "^26.1.0" + jest-haste-map "^26.1.0" + jest-message-util "^26.1.0" jest-regex-util "^26.0.0" - jest-resolve "^26.0.1" - jest-resolve-dependencies "^26.0.1" - jest-runner "^26.0.1" - jest-runtime "^26.0.1" - jest-snapshot "^26.0.1" - jest-util "^26.0.1" - jest-validate "^26.0.1" - jest-watcher "^26.0.1" + jest-resolve "^26.1.0" + jest-resolve-dependencies "^26.1.0" + jest-runner "^26.1.0" + jest-runtime "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + jest-watcher "^26.1.0" micromatch "^4.0.2" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.0.1.tgz#82f519bba71959be9b483675ee89de8c8f72a5c8" - integrity sha512-xBDxPe8/nx251u0VJ2dFAFz2H23Y98qdIaNwnMK6dFQr05jc+Ne/2np73lOAx+5mSBO/yuQldRrQOf6hP1h92g== +"@jest/environment@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.1.0.tgz#378853bcdd1c2443b4555ab908cfbabb851e96da" + integrity sha512-86+DNcGongbX7ai/KE/S3/NcUVZfrwvFzOOWX/W+OOTvTds7j07LtC+MgGydH5c8Ri3uIrvdmVgd1xFD5zt/xA== dependencies: - "@jest/fake-timers" "^26.0.1" - "@jest/types" "^26.0.1" - jest-mock "^26.0.1" + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" -"@jest/fake-timers@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.0.1.tgz#f7aeff13b9f387e9d0cac9a8de3bba538d19d796" - integrity sha512-Oj/kCBnTKhm7CR+OJSjZty6N1bRDr9pgiYQr4wY221azLz5PHi08x/U+9+QpceAYOWheauLP8MhtSVFrqXQfhg== +"@jest/fake-timers@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.1.0.tgz#9a76b7a94c351cdbc0ad53e5a748789f819a65fe" + integrity sha512-Y5F3kBVWxhau3TJ825iuWy++BAuQzK/xEa+wD9vDH3RytW9f2DbMVodfUQC54rZDX3POqdxCgcKdgcOL0rYUpA== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" "@sinonjs/fake-timers" "^6.0.1" - jest-message-util "^26.0.1" - jest-mock "^26.0.1" - jest-util "^26.0.1" + jest-message-util "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" -"@jest/globals@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.0.1.tgz#3f67b508a7ce62b6e6efc536f3d18ec9deb19a9c" - integrity sha512-iuucxOYB7BRCvT+TYBzUqUNuxFX1hqaR6G6IcGgEqkJ5x4htNKo1r7jk1ji9Zj8ZMiMw0oB5NaA7k5Tx6MVssA== +"@jest/globals@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.1.0.tgz#6cc5d7cbb79b76b120f2403d7d755693cf063ab1" + integrity sha512-MKiHPNaT+ZoG85oMaYUmGHEqu98y3WO2yeIDJrs2sJqHhYOy3Z6F7F/luzFomRQ8SQ1wEkmahFAz2291Iv8EAw== dependencies: - "@jest/environment" "^26.0.1" - "@jest/types" "^26.0.1" - expect "^26.0.1" + "@jest/environment" "^26.1.0" + "@jest/types" "^26.1.0" + expect "^26.1.0" -"@jest/reporters@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.0.1.tgz#14ae00e7a93e498cec35b0c00ab21c375d9b078f" - integrity sha512-NWWy9KwRtE1iyG/m7huiFVF9YsYv/e+mbflKRV84WDoJfBqUrNRyDbL/vFxQcYLl8IRqI4P3MgPn386x76Gf2g== +"@jest/reporters@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.1.0.tgz#08952e90c90282e14ff49e927bdf1873617dae78" + integrity sha512-SVAysur9FOIojJbF4wLP0TybmqwDkdnFxHSPzHMMIYyBtldCW9gG+Q5xWjpMFyErDiwlRuPyMSJSU64A67Pazg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.0.1" - "@jest/test-result" "^26.0.1" - "@jest/transform" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/console" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^26.0.1" - jest-resolve "^26.0.1" - jest-util "^26.0.1" - jest-worker "^26.0.0" + jest-haste-map "^26.1.0" + jest-resolve "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" @@ -1189,51 +1210,51 @@ optionalDependencies: node-notifier "^7.0.0" -"@jest/source-map@^26.0.0": - version "26.0.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.0.0.tgz#fd7706484a7d3faf7792ae29783933bbf48a4749" - integrity sha512-S2Z+Aj/7KOSU2TfW0dyzBze7xr95bkm5YXNUqqCek+HE0VbNNSNzrRwfIi5lf7wvzDTSS0/ib8XQ1krFNyYgbQ== +"@jest/source-map@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.1.0.tgz#a6a020d00e7d9478f4b690167c5e8b77e63adb26" + integrity sha512-XYRPYx4eEVX15cMT9mstnO7hkHP3krNtKfxUYd8L7gbtia8JvZZ6bMzSwa6IQJENbudTwKMw5R1BePRD+bkEmA== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.0.1.tgz#1ffdc1ba4bc289919e54b9414b74c9c2f7b2b718" - integrity sha512-oKwHvOI73ICSYRPe8WwyYPTtiuOAkLSbY8/MfWF3qDEd/sa8EDyZzin3BaXTqufir/O/Gzea4E8Zl14XU4Mlyg== +"@jest/test-result@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.1.0.tgz#a93fa15b21ad3c7ceb21c2b4c35be2e407d8e971" + integrity sha512-Xz44mhXph93EYMA8aYDz+75mFbarTV/d/x0yMdI3tfSRs/vh4CqSxgzVmCps1fPkHDCtn0tU8IH9iCKgGeGpfw== dependencies: - "@jest/console" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/console" "^26.1.0" + "@jest/types" "^26.1.0" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.0.1.tgz#b0563424728f3fe9e75d1442b9ae4c11da73f090" - integrity sha512-ssga8XlwfP8YjbDcmVhwNlrmblddMfgUeAkWIXts1V22equp2GMIHxm7cyeD5Q/B0ZgKPK/tngt45sH99yLLGg== +"@jest/test-sequencer@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.1.0.tgz#41a6fc8b850c3f33f48288ea9ea517c047e7f14e" + integrity sha512-Z/hcK+rTq56E6sBwMoQhSRDVjqrGtj1y14e2bIgcowARaIE1SgOanwx6gvY4Q9gTKMoZQXbXvptji+q5GYxa6Q== dependencies: - "@jest/test-result" "^26.0.1" + "@jest/test-result" "^26.1.0" graceful-fs "^4.2.4" - jest-haste-map "^26.0.1" - jest-runner "^26.0.1" - jest-runtime "^26.0.1" + jest-haste-map "^26.1.0" + jest-runner "^26.1.0" + jest-runtime "^26.1.0" -"@jest/transform@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.0.1.tgz#0e3ecbb34a11cd4b2080ed0a9c4856cf0ceb0639" - integrity sha512-pPRkVkAQ91drKGbzCfDOoHN838+FSbYaEAvBXvKuWeeRRUD8FjwXkqfUNUZL6Ke48aA/1cqq/Ni7kVMCoqagWA== +"@jest/transform@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.1.0.tgz#697f48898c2a2787c9b4cb71d09d7e617464e509" + integrity sha512-ICPm6sUXmZJieq45ix28k0s+d/z2E8CHDsq+WwtWI6kW8m7I8kPqarSEcUN86entHQ570ZBRci5OWaKL0wlAWw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^26.0.1" + jest-haste-map "^26.1.0" jest-regex-util "^26.0.0" - jest-util "^26.0.1" + jest-util "^26.1.0" micromatch "^4.0.2" pirates "^4.0.1" slash "^3.0.0" @@ -1250,27 +1271,35 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jest/types@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.0.1.tgz#b78333fbd113fa7aec8d39de24f88de8686dac67" - integrity sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA== +"@jest/types@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.1.0.tgz#f8afaaaeeb23b5cad49dd1f7779689941dcb6057" + integrity sha512-GXigDDsp6ZlNMhXQDeuy/iYCDsRIHJabWtDzvnn36+aqFfG14JmFV0e/iXxY4SP9vbXSiPNOWdehU5MeqrYHBQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@rollup/plugin-alias@^3.0.1": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.0.tgz#4f7bc9d15e030d75da9224aaa5105129c54a3ffd" - integrity sha512-IzoejtAqdfwAvx4D0bztAJFoL5Js36kJgnbO00zfI1B9jf9G80vWysyG0C4+E6w5uG5hz0EeetPpoBWKdNktCQ== +"@rollup/plugin-alias@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.1.tgz#bb96cf37fefeb0a953a6566c284855c7d1cd290c" + integrity sha512-hNcQY4bpBUIvxekd26DBPgF7BT4mKVNDF5tBG4Zi+3IgwLxGYRY0itHs9D0oLVwXM5pvJDWJlBQro+au8WaUWw== dependencies: slash "^3.0.0" -"@rollup/plugin-commonjs@^11.0.2": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" - integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== +"@rollup/plugin-babel@^5.0.3": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.0.4.tgz#dbfcf86a0561e399579ceb1a534a83c970e76645" + integrity sha512-MBtNoi5gqBEbqy1gE9jZBfPsi10kbuK2CEu9bx53nk1Z3ATRvBOoZ/GsbhXOeVbS76xXi/DeYM+vYX6EGIDv9A== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-commonjs@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-13.0.0.tgz#8a1d684ba6848afe8b9e3d85649d4b2f6f7217ec" + integrity sha512-Anxc3qgkAi7peAyesTqGYidG5GRim9jtg8xhmykNaZkImtvjA7Wsqep08D2mYsqw1IF7rA3lYfciLgzUSgRoqw== dependencies: "@rollup/pluginutils" "^3.0.8" commondir "^1.0.1" @@ -1280,10 +1309,10 @@ magic-string "^0.25.2" resolve "^1.11.0" -"@rollup/plugin-json@^4.0.2": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.0.3.tgz#747e2c2884c5a0fa00b66c9c0f3f1012cddca534" - integrity sha512-QMUT0HZNf4CX17LMdwaslzlYHUKTYGuuk34yYIgZrNdu+pMEfqMS55gck7HEeHBKXHM4cz5Dg1OVwythDdbbuQ== +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== dependencies: "@rollup/pluginutils" "^3.0.8" @@ -1299,18 +1328,18 @@ resolve "^1.11.1" "@rollup/pluginutils@^3.0.0", "@rollup/pluginutils@^3.0.8": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.10.tgz#a659b9025920378494cd8f8c59fbf9b3a50d5f12" - integrity sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" estree-walker "^1.0.1" picomatch "^2.2.2" "@sinonjs/commons@^1.7.0": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" - integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== + version "1.8.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d" + integrity sha512-wEj54PfsZ5jGSwMX68G8ZXFawcSglQSXqCftWX3ec8MDUzQdHgcKvw97awHbY0efQEL5iKUOAmmVtoYgmrSG4Q== dependencies: type-detect "4.0.8" @@ -1321,34 +1350,39 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@testing-library/dom@^7.2.2": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.5.1.tgz#c3537e2b970576072ea4083e603463843c8a8d2b" - integrity sha512-c9iQWyFtdsqaVScIlOdgdG3HXWkYvGzin02nJ4LUnzNXKyxqeqq9KPIAAjnmfrSApbRc8mK1l6esiCeEredfRw== +"@testing-library/dom@^7.17.1": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.20.0.tgz#2bab85e90f0221a56256c5d4741c2a36b7c45f4d" + integrity sha512-TywaC+qDGm/Ro34kRYkFQPdT+pxSF4UjZGLIqcGfFQH5IGR43Y7sGLPnkieIW/GNsu337oxNsLUAgpI0JWhXHw== dependencies: - "@babel/runtime" "^7.9.6" - aria-query "^4.0.2" - dom-accessibility-api "^0.4.3" - pretty-format "^26.0.1" + "@babel/runtime" "^7.10.3" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + dom-accessibility-api "^0.4.5" + pretty-format "^25.5.0" -"@testing-library/react@^10.0.4": - version "10.0.4" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.4.tgz#8e0e299cd91acc626d81ed8489fdc13df864c31d" - integrity sha512-2e1B5debfuiIGbvUuiSXybskuh7ZTVJDDvG/IxlzLOY9Co/mKFj9hIklAe2nGZYcOUxFaiqWrRZ9vCVGzJfRlQ== +"@testing-library/react@^10.4.3": + version "10.4.3" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.3.tgz#c6f356688cffc51f6b35385583d664bb11a161f4" + integrity sha512-A/ydYXcwAcfY7vkPrfUkUTf9HQLL3/GtixTefcu3OyGQtAYQ7XBQj1S9FWbLEhfWa0BLwFwTBFS3Ao1O0tbMJg== dependencies: - "@babel/runtime" "^7.9.6" - "@testing-library/dom" "^7.2.2" - "@types/testing-library__react" "^10.0.1" + "@babel/runtime" "^7.10.3" + "@testing-library/dom" "^7.17.1" "@types/anymatch@*": version "1.3.1" resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== -"@types/babel__core@^7.1.7": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== +"@types/aria-query@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" + integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.9" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" + integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1372,9 +1406,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" - integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.12.tgz#22f49a028e69465390f87bb103ebd61bd086b8f5" + integrity sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA== dependencies: "@babel/types" "^7.3.0" @@ -1389,26 +1423,20 @@ integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== "@types/estree@*": - version "0.0.44" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" - integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g== + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - "@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + version "7.1.2" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987" + integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA== dependencies: - "@types/events" "*" "@types/minimatch" "*" "@types/node" "*" @@ -1425,9 +1453,9 @@ integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== "@types/istanbul-lib-report@*": version "3.0.0" @@ -1437,25 +1465,30 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^25.2.1": - version "25.2.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.1.tgz#9544cd438607955381c1bdbdb97767a249297db5" - integrity sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA== +"@types/jest@^26.0.3": + version "26.0.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.3.tgz#79534e0e94857171c0edc596db0ebe7cb7863251" + integrity sha512-v89ga1clpVL/Y1+YI0eIu1VMW+KU7Xl8PhylVtDKVWaSUHBHYPLXMQGBdrpHewaKoTvlXkksbYqPgz8b4cmRZg== dependencies: jest-diff "^25.2.1" pretty-format "^25.2.1" "@types/json-schema@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/minimatch@*": version "3.0.3" @@ -1463,9 +1496,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "13.13.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.5.tgz#96ec3b0afafd64a4ccea9107b75bf8489f0e5765" - integrity sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g== + version "14.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" + integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1478,9 +1511,9 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.0.tgz#dc85454b953178cc6043df5208b9e949b54a3bc4" - integrity sha512-/rM+sWiuOZ5dvuVzV37sUuklsbg+JPOP8d+nNFlo2ZtfpzPiPvh1/gc8liWOLBqe+sR+ZM7guPaIcTt6UZTo7Q== + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.1.tgz#b6e98083f13faa1e5231bfa3bdb1b0feff536b6d" + integrity sha512-boy4xPNEtiw6N3abRhBi/e7hNvy3Tt8E9ZRAQrwAGzoCGZS/1wjo9KY7JHhnfnEsG5wSjDbymCozUM9a3ea7OQ== "@types/prop-types@*": version "15.7.3" @@ -1488,31 +1521,31 @@ integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== "@types/q@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" - integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/react-dom@*", "@types/react-dom@^16.9.8": +"@types/react-dom@^16.9.8": version "16.9.8" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.9.35": - version "16.9.35" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" - integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== +"@types/react@*", "@types/react@^16.9.41": + version "16.9.41" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.41.tgz#925137ee4d2ff406a0ecf29e8e9237390844002e" + integrity sha512-6cFei7F7L4wwuM+IND/Q2cV1koQUvJ8iSV+Gwn0c3kvABZ691g7sp3hfEQHOUBJtccl1gPi+EyNjMIl9nGA0ug== dependencies: "@types/prop-types" "*" csstype "^2.2.0" -"@types/redux-logger@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/redux-logger/-/redux-logger-3.0.7.tgz#163f6f6865c69c21d56f9356dc8d741718ec0db0" - integrity sha512-oV9qiCuowhVR/ehqUobWWkXJjohontbDGLV88Be/7T4bqMQ3kjXwkFNL7doIIqlbg3X2PC5WPziZ8/j/QHNQ4A== +"@types/redux-logger@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/redux-logger/-/redux-logger-3.0.8.tgz#1fb6d26917bb198792bb1cf57feb31cae1532c5d" + integrity sha512-zM+cxiSw6nZtRbxpVp9SE3x/X77Z7e7YAfHD1NkxJyJbAGSXJGF0E9aqajZfPOa/sTYnuwutmlCldveExuCeLw== dependencies: - redux "^3.6.0" + redux "^4.0.0" "@types/resolve@0.0.8": version "0.0.8" @@ -1532,30 +1565,14 @@ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/tapable@*", "@types/tapable@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" - integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== - -"@types/testing-library__dom@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.0.2.tgz#2906f8a0dce58b0746c6ab606f786bd06fe6940e" - integrity sha512-8yu1gSwUEAwzg2OlPNbGq+ixhmSviGurBu1+ivxRKq1eRcwdjkmlwtPvr9VhuxTq2fNHBWN2po6Iem3Xt5A6rg== - dependencies: - pretty-format "^25.1.0" - -"@types/testing-library__react@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-10.0.1.tgz#92bb4a02394bf44428e35f1da2970ed77f803593" - integrity sha512-RbDwmActAckbujLZeVO/daSfdL1pnjVqas25UueOkAY5r7vriavWf0Zqg7ghXMHa8ycD/kLkv8QOj31LmSYwww== - dependencies: - "@types/react-dom" "*" - "@types/testing-library__dom" "*" - pretty-format "^25.1.0" + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== "@types/uglify-js@*": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.0.tgz#4490a140ca82aa855ad68093829e7fd6ae94ea87" - integrity sha512-3ZcoyPYHVOCcLpnfZwD47KFLr8W/mpUcgjpf1M4Q78TMJIw7KMAHSjiCLJp1z3ZrBR9pTLbe191O0TldFK5zcw== + version "3.9.2" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.2.tgz#01992579debba674e1e359cd6bcb1a1d0ab2e02b" + integrity sha512-d6dIfpPbF+8B7WiCi2ELY7m0w1joD8cRW4ms88Emdb2w062NeEpbNCeWwVCgzLRpVG+5e74VFSg4rgJ2xXjEiQ== dependencies: source-map "^0.6.1" @@ -1565,18 +1582,18 @@ integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== "@types/webpack-sources@*": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" - integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== + version "1.4.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.0.tgz#e58f1f05f87d39a5c64cf85705bdbdbb94d4d57e" + integrity sha512-c88dKrpSle9BtTqR6ifdaxu1Lvjsl3C5OsfvuUbUwdXymshv1TkufUAXBajCCUM/f/TmnkZC/Esb03MinzSiXQ== dependencies: "@types/node" "*" "@types/source-list-map" "*" - source-map "^0.6.1" + source-map "^0.7.3" "@types/webpack@^4.41.8": - version "4.41.12" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.12.tgz#0386ee2a2814368e2f2397abb036c0bf173ff6c3" - integrity sha512-BpCtM4NnBen6W+KEhrL9jKuZCXVtiH6+0b6cxdvNt2EwU949Al334PjQSl2BeAyvAX9mgoNNG21wvjP3xZJJ5w== + version "4.41.18" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.18.tgz#2945202617866ecdffa582087f1b6de04a7eed55" + integrity sha512-mQm2R8vV2BZE/qIDVYqmBVLfX73a8muwjs74SpjEyJWJxeXBbsI9L65Pcia9XfYLYWzD1c1V8m+L0p30y2N7MA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -1591,55 +1608,72 @@ integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + version "15.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.31.0": - version "2.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.31.0.tgz#942c921fec5e200b79593c71fafb1e3f57aa2e36" - integrity sha512-iIC0Pb8qDaoit+m80Ln/aaeu9zKQdOLF4SHcGLarSeY1gurW6aU4JsOPMjKQwXlw70MvWKZQc6S2NamA8SJ/gg== +"@typescript-eslint/eslint-plugin@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.5.0.tgz#e7736e0808b5fb947a5f9dd949ae6736a7226b84" + integrity sha512-m4erZ8AkSjoIUOf8s4k2V1xdL2c1Vy0D3dN6/jC9d7+nEqjY3gxXCkgi3gW/GAxPaA4hV8biaCoTVdQmfAeTCQ== dependencies: - "@typescript-eslint/experimental-utils" "2.31.0" + "@typescript-eslint/experimental-utils" "3.5.0" + debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" + semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.31.0": - version "2.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.31.0.tgz#a9ec514bf7fd5e5e82bc10dcb6a86d58baae9508" - integrity sha512-MI6IWkutLYQYTQgZ48IVnRXmLR/0Q6oAyJgiOror74arUMh7EWjJkADfirZhRsUMHeLJ85U2iySDwHTSnNi9vA== +"@typescript-eslint/experimental-utils@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.5.0.tgz#d09f9ffb890d1b15a7ffa9975fae92eee05597c4" + integrity sha512-zGNOrVi5Wz0jcjUnFZ6QUD0MCox5hBuVwemGCew2qJzUX5xPoyR+0EzS5qD5qQXL/vnQ8Eu+nv03tpeFRwLrDg== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.31.0" + "@typescript-eslint/types" "3.5.0" + "@typescript-eslint/typescript-estree" "3.5.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.31.0": - version "2.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.31.0.tgz#beddd4e8efe64995108b229b2862cd5752d40d6f" - integrity sha512-uph+w6xUOlyV2DLSC6o+fBDzZ5i7+3/TxAsH4h3eC64tlga57oMb96vVlXoMwjR/nN+xyWlsnxtbDkB46M2EPQ== +"@typescript-eslint/parser@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.5.0.tgz#9ff8c11877c48df24e10e19d7bf542ee0359500d" + integrity sha512-sU07VbYB70WZHtgOjH/qfAp1+OwaWgrvD1Km1VXqRpcVxt971PMTU7gJtlrCje0M+Sdz7xKAbtiyIu+Y6QdnVA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.31.0" - "@typescript-eslint/typescript-estree" "2.31.0" + "@typescript-eslint/experimental-utils" "3.5.0" + "@typescript-eslint/types" "3.5.0" + "@typescript-eslint/typescript-estree" "3.5.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.31.0": - version "2.31.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.31.0.tgz#ac536c2d46672aa1f27ba0ec2140d53670635cfd" - integrity sha512-vxW149bXFXXuBrAak0eKHOzbcu9cvi6iNcJDzEtOkRwGHxJG15chiAQAwhLOsk+86p9GTr/TziYvw+H9kMaIgA== +"@typescript-eslint/types@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.5.0.tgz#4e3d2a2272268d8ec3e3e4a37152a64956682639" + integrity sha512-Dreqb5idi66VVs1QkbAwVeDmdJG+sDtofJtKwKCZXIaBsINuCN7Jv5eDIHrS0hFMMiOvPH9UuOs4splW0iZe4Q== + +"@typescript-eslint/typescript-estree@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.5.0.tgz#dfc895db21a381b84f24c2a719f5bf9c600dcfdc" + integrity sha512-Na71ezI6QP5WVR4EHxwcBJgYiD+Sre9BZO5iJK2QhrmRPo/42+b0no/HZIrdD1sjghzlYv7t+7Jis05M1uMxQg== dependencies: + "@typescript-eslint/types" "3.5.0" + "@typescript-eslint/visitor-keys" "3.5.0" debug "^4.1.1" - eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" lodash "^4.17.15" - semver "^6.3.0" + semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.5.0.tgz#73c1ea2582f814735e4afdc1cf6f5e3af78db60a" + integrity sha512-7cTp9rcX2sz9Z+zua9MCOX4cqp5rYyFD5o8LlbSpXrMTXoRdngTtotRZEkm8+FNMHPWYFhitFK+qt/brK8BVJQ== + dependencies: + eslint-visitor-keys "^1.1.0" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -1830,9 +1864,9 @@ acorn-jsx@^5.2.0: integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn@^5.2.1: version "5.7.4" @@ -1844,10 +1878,10 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.0, acorn@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== +acorn@^7.1.0, acorn@^7.1.1, acorn@^7.2.0: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== ajv-errors@^1.0.0: version "1.0.1" @@ -1855,9 +1889,9 @@ ajv-errors@^1.0.0: integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + version "3.5.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773" + integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw== ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.12.2" @@ -1879,6 +1913,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" @@ -1896,11 +1935,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -1966,21 +2000,13 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - -aria-query@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.0.2.tgz#250687b4ccde1ab86d127da0432ae3552fc7b145" - integrity sha512-S1G1V790fTaigUSM/Gd0NngzEfiMy9uTUfMyHhKhVyy4cH5O/eTuR01ydhGL0z4Za1PXFTRGH3qL8VhUQuEO5w== +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== dependencies: - "@babel/runtime" "^7.7.4" - "@babel/runtime-corejs3" "^7.7.4" + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" arr-diff@^4.0.0: version "4.0.0" @@ -2007,7 +2033,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3, array-includes@^3.1.1: +array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== @@ -2033,7 +2059,7 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.1: +array.prototype.flat@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== @@ -2041,6 +2067,15 @@ array.prototype.flat@^1.2.1: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +array.prototype.flatmap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" + integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -2075,7 +2110,7 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: +ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= @@ -2117,18 +2152,18 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.7.3: - version "9.7.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.6.tgz#63ac5bbc0ce7934e6997207d5bb00d68fa8293a4" - integrity sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ== +autoprefixer@^9.8.0: + version "9.8.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.4.tgz#736f1012673a70fa3464671d78d41abd54512863" + integrity sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A== dependencies: - browserslist "^4.11.1" - caniuse-lite "^1.0.30001039" - chalk "^2.4.2" + browserslist "^4.12.0" + caniuse-lite "^1.0.30001087" + colorette "^1.2.0" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.27" - postcss-value-parser "^4.0.3" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" aws-sign2@~0.7.0: version "0.7.0" @@ -2136,25 +2171,30 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== -axobject-query@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" - integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== +axe-core@^3.5.4: + version "3.5.5" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227" + integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q== + +axobject-query@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-jest@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.0.1.tgz#450139ce4b6c17174b136425bda91885c397bc46" - integrity sha512-Z4GGmSNQ8pX3WS1O+6v3fo41YItJJZsVxG5gIQ+HuB/iuAQBJxMTHTwz292vuYws1LnHfwSRgoqI+nxdy/pcvw== +babel-jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.1.0.tgz#b20751185fc7569a0f135730584044d1cb934328" + integrity sha512-Nkqgtfe7j6PxLO6TnCQQlkMm8wdTdnIF8xrdpooHCuD5hXRzVEPbPneTJKknH5Dsv3L8ip9unHDAp48YQ54Dkg== dependencies: - "@jest/transform" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.0.0" + babel-preset-jest "^26.1.0" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -2177,13 +2217,14 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.0.0.tgz#fd1d35f95cf8849fc65cb01b5e58aedd710b34a8" - integrity sha512-+AuoehOrjt9irZL7DOt2+4ZaTM6dlu1s5TTS46JBa0/qem4dy7VNW3tMb96qeEqcIh20LD73TVNtmVEeymTG7w== +babel-plugin-jest-hoist@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.1.0.tgz#c6a774da08247a28285620a64dfadbd05dd5233a" + integrity sha512-qhqLVkkSlqmC83bdMhM8WW4Z9tB+JkjqAqlbbohS9sJLT5Ha2vfzuKqg5yenXrAjOPG2YC0WiXdH3a9PvB+YYw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" babel-plugin-macros@^2.8.0: @@ -2208,13 +2249,14 @@ babel-plugin-transform-replace-expressions@^0.2.0: "@babel/parser" "^7.3.3" babel-preset-current-node-syntax@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" - integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== + version "0.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" + integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -2223,12 +2265,12 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -babel-preset-jest@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.0.0.tgz#1eac82f513ad36c4db2e9263d7c485c825b1faa6" - integrity sha512-9ce+DatAa31DpR4Uir8g4Ahxs5K4W4L8refzt+qHWQANb6LhGcAEfIFgLUwk67oya2cCUd6t4eUMtO/z64ocNw== +babel-preset-jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.1.0.tgz#612f714e5b457394acfd863793c564cbcdb7d1c1" + integrity sha512-na9qCqFksknlEj5iSdw1ehMVR06LCCTkZLGKeEtxDDdhg8xpUF09m29Kvh1pRbZ07h7AQ5ttLYUwpXL4tO6w7w== dependencies: - babel-plugin-jest-hoist "^26.0.0" + babel-plugin-jest-hoist "^26.1.0" babel-preset-current-node-syntax "^0.1.2" babelify@^10.0.0: @@ -2287,9 +2329,9 @@ binary-extensions@^1.0.0: integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== bindings@^1.5.0: version "1.5.0" @@ -2304,14 +2346,14 @@ bluebird@^3.5.5: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== bn.js@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" - integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== body-parser@1.19.0: version "1.19.0" @@ -2451,9 +2493,9 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.1.0.tgz#4fe971b379a5aeb4925e06779f9fa1f41d249d70" - integrity sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg== + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== dependencies: bn.js "^5.1.1" browserify-rsa "^4.0.1" @@ -2463,6 +2505,7 @@ browserify-sign@^4.0.0: inherits "^2.0.4" parse-asn1 "^5.1.5" readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -2471,15 +2514,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.8.5: - version "4.12.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" + integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== dependencies: - caniuse-lite "^1.0.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" + caniuse-lite "^1.0.30001088" + electron-to-chromium "^1.3.483" + escalade "^3.0.1" + node-releases "^1.1.58" bs-logger@0.x: version "0.2.6" @@ -2647,10 +2690,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001039, caniuse-lite@^1.0.30001043: - version "1.0.30001055" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001055.tgz#7b52c3537f7a8c0408aca867e83d2b04268b54cd" - integrity sha512-MbwsBmKrBSKIWldfdIagO5OJWZclpJtS4h0Jrk/4HFrXJxTdVdH23Fd+xCiHriVGvYcWyW8mR/CPsYajlH8Iuw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001087, caniuse-lite@^1.0.30001088: + version "1.0.30001093" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001093.tgz#833e80f64b1a0455cbceed2a4a3baf19e4abd312" + integrity sha512-0+ODNoOjtWD5eS9aaIpf4K0gQqZfILNY4WSNuYzeT1sXni+lMrrVjc0odEobJt6wrODofDZUX8XYi/5y7+xl8g== capture-exit@^2.0.0: version "2.0.0" @@ -2669,15 +2712,6 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -2689,6 +2723,15 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" @@ -2698,9 +2741,9 @@ chalk@^3.0.0: supports-color "^7.1.0" chalk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" - integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -2730,11 +2773,6 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -2811,27 +2849,6 @@ clean-css@^4.2.3: dependencies: source-map "~0.6.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -2888,11 +2905,6 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" @@ -2951,6 +2963,11 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" +colorette@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63" + integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2963,7 +2980,7 @@ comma-separated-tokens@^1.0.1: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.11.0, commander@^2.20.0: +commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3180,7 +3197,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -3192,9 +3209,9 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: which "^1.2.9" cross-spawn@^7.0.0, cross-spawn@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" - integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -3298,9 +3315,9 @@ css-what@2.1: integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + version "3.3.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" + integrity sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg== cssesc@^3.0.0: version "3.0.0" @@ -3400,16 +3417,16 @@ cssstyle@^2.2.0: cssom "~0.3.6" csstype@^2.2.0: - version "2.6.10" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" - integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== + version "2.6.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" + integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -damerau-levenshtein@^1.0.4: +damerau-levenshtein@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== @@ -3442,7 +3459,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: +debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3461,6 +3478,13 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851" + integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw== + dependencies: + xregexp "^4.2.4" + decimal.js@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" @@ -3674,14 +3698,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -documentation@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/documentation/-/documentation-13.0.0.tgz#7be30a05cf9f37aee64d6778410fd871477d8d95" - integrity sha512-Bet977bi9sg26d3k9wc7s790NkCUt7mEBSXcoorIXiaII3ryfTAbjFlIpg47gqrjcSyc3HxaRLBjAU3pnqKYww== +documentation@^13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/documentation/-/documentation-13.0.2.tgz#fd1ec7a1daebfbd5b14a8dca8b9d36cba32f5b85" + integrity sha512-pupdwmk51DZyRFxhnadYfN8CxjH5g7L20sIyWkm0u+Zk3J2NByy4CmygVfhv22rm4gHrm69qiHI7SqQ6HuNbeQ== dependencies: "@babel/core" "^7.9.0" "@babel/generator" "^7.9.4" - "@babel/parser" "7.9.4" + "@babel/parser" "7.10.2" "@babel/plugin-proposal-class-properties" "^7.8.3" "@babel/plugin-proposal-decorators" "^7.8.3" "@babel/plugin-proposal-do-expressions" "^7.8.3" @@ -3712,7 +3736,7 @@ documentation@^13.0.0: concat-stream "^1.6.0" diff "^4.0.1" doctrine-temporary-fork "2.1.0" - get-port "^4.0.0" + get-port "^5.0.0" git-url-parse "^11.1.2" github-slugger "1.2.0" glob "^7.1.2" @@ -3726,7 +3750,7 @@ documentation@^13.0.0: mime "^2.2.0" module-deps-sortable "5.0.0" parse-filepath "^1.0.2" - pify "^4.0.0" + pify "^5.0.0" read-pkg-up "^4.0.0" remark "^9.0.0" remark-html "^8.0.0" @@ -3744,12 +3768,12 @@ documentation@^13.0.0: vinyl "^2.1.0" vinyl-fs "^3.0.2" vue-template-compiler "^2.5.16" - yargs "^12.0.2" + yargs "^15.3.1" -dom-accessibility-api@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.3.tgz#93ca9002eb222fd5a343b6e5e6b9cf5929411c4c" - integrity sha512-JZ8iPuEHDQzq6q0k7PKMGbrIdsgBB7TRrtVOUm4nSMCExlg5qQG4KXWTH2k90yggjM4tTumRGwTKJSldMzKyLA== +dom-accessibility-api@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.5.tgz#d9c1cefa89f509d8cf132ab5d250004d755e76e3" + integrity sha512-HcPDilI95nKztbVikaN2vzwvmv0sE8Y2ZJFODy/m15n7mGXLeOKGiys9qWVbFbh+aq/KYj2lqMLybBOkYAEXqg== dom-converter@^0.2: version "0.2.0" @@ -3861,15 +3885,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.413: - version "1.3.432" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.432.tgz#3bf7b191978ff2e8bc3caf811bb52b1e9f9eab25" - integrity sha512-/GdNhXyLP5Yl2322CUX/+Xi8NhdHBqL6lD9VJVKjH6CjoPGakvwZ5CpKgj/oOlbzuWWjOvMjDw1bBuAIRCNTlw== +electron-to-chromium@^1.3.483: + version "1.3.487" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.487.tgz#8075e6ea33ee2e79a2dfb2a2467033f014017258" + integrity sha512-m4QS3IDShxauFfYFpnEzRCcUI55oKB9acEnHCuY/hSCZMz9Pz2KJj+UBnGHxRxS/mS1aphqOQ5wI6gc3yDZ7ew== elliptic@^6.0.0, elliptic@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -3884,7 +3908,7 @@ elliptic@^6.0.0, elliptic@^6.5.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= -emoji-regex@^7.0.1, emoji-regex@^7.0.2: +emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== @@ -3894,10 +3918,10 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emoji-regex@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" + integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w== emojis-list@^3.0.0: version "3.0.0" @@ -3916,23 +3940,21 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== +enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0, enhanced-resolve@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d" + integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ== dependencies: graceful-fs "^4.1.2" - memory-fs "^0.4.0" + memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + ansi-colors "^4.1.1" entities@^1.1.1: version "1.1.2" @@ -3940,9 +3962,9 @@ entities@^1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" - integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -3966,21 +3988,21 @@ error@^7.0.0: string-template "~0.2.1" es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" + is-callable "^1.2.0" + is-regex "^1.1.0" object-inspect "^1.7.0" object-keys "^1.1.1" object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -3991,11 +4013,16 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promisify@^6.0.1: +es6-promisify@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.1.1.tgz#46837651b7b06bf6fff893d03f29393668d01621" integrity sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg== +escalade@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" + integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4011,10 +4038,15 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" estraverse "^4.2.0" @@ -4023,33 +4055,33 @@ escodegen@^1.14.1: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4" - integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw== +eslint-config-airbnb-base@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" + integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q== dependencies: confusing-browser-globals "^1.0.9" object.assign "^4.1.0" - object.entries "^1.1.1" + object.entries "^1.1.2" -eslint-config-airbnb@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz#724d7e93dadd2169492ff5363c5aaa779e01257d" - integrity sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw== +eslint-config-airbnb@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.0.tgz#8a82168713effce8fc08e10896a63f1235499dcd" + integrity sha512-Fz4JIUKkrhO0du2cg5opdyPKQXOI2MvF8KUvN2710nJMT6jaRUpRE2swrJftAjVGL7T1otLM5ieo5RqS1v9Udg== dependencies: - eslint-config-airbnb-base "^14.1.0" + eslint-config-airbnb-base "^14.2.0" object.assign "^4.1.0" - object.entries "^1.1.1" + object.entries "^1.1.2" -eslint-import-resolver-node@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" - integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== dependencies: debug "^2.6.9" resolve "^1.13.1" -eslint-module-utils@^2.4.1: +eslint-module-utils@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== @@ -4057,61 +4089,63 @@ eslint-module-utils@^2.4.1: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-import@^2.20.2: - version "2.20.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" - integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== +eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" has "^1.0.3" minimatch "^3.0.4" - object.values "^1.1.0" + object.values "^1.1.1" read-pkg-up "^2.0.0" - resolve "^1.12.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" -eslint-plugin-jsx-a11y@^6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== +eslint-plugin-jsx-a11y@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz#99ef7e97f567cc6a5b8dd5ab95a94a67058a2660" + integrity sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g== dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" + "@babel/runtime" "^7.10.2" + aria-query "^4.2.2" + array-includes "^3.1.1" ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" + axe-core "^3.5.4" + axobject-query "^2.1.2" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" has "^1.0.3" - jsx-ast-utils "^2.2.1" + jsx-ast-utils "^2.4.1" + language-tags "^1.0.5" -eslint-plugin-react-hooks@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.0.tgz#81196b990043cde339e25c6662aeebe32ac52d01" - integrity sha512-YKBY+kilK5wrwIdQnCF395Ya6nDro3EAMoe+2xFkmyklyhF16fH83TrQOo9zbZIDxBsXFgBbywta/0JKRNFDkw== +eslint-plugin-react-hooks@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.5.tgz#4879003aa38e5d05d0312175beb6e4a1f617bfcf" + integrity sha512-3YLSjoArsE2rUwL8li4Yxx1SUg3DQWp+78N3bcJQGWVZckcp+yeQGsap/MSq05+thJk57o+Ww4PtZukXGL02TQ== -eslint-plugin-react@^7.19.0: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== +eslint-plugin-react@^7.20.3: + version "7.20.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz#0590525e7eb83890ce71f73c2cf836284ad8c2f1" + integrity sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg== dependencies: array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" + jsx-ast-utils "^2.4.1" + object.entries "^1.1.2" object.fromentries "^2.0.2" object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" + resolve "^1.17.0" string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" eslint-scope@^4.0.3: version "4.0.3" @@ -4121,30 +4155,30 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== +eslint-scope@^5.0.0, eslint-scope@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" eslint-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" - integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.0.0.tgz#c35dfd04a4372110bd78c69a8d79864273919a08" - integrity sha512-qY1cwdOxMONHJfGqw52UOpZDeqXy8xmD0u8CT6jIstil72jkhURC704W8CFyTPDPllz4z4lu0Ql1+07PG/XdIg== +eslint@^7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.4.0.tgz#4e35a2697e6c1972f9d6ef2b690ad319f80f206f" + integrity sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -4152,10 +4186,11 @@ eslint@^7.0.0: cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" eslint-utils "^2.0.0" - eslint-visitor-keys "^1.1.0" - espree "^7.0.0" + eslint-visitor-keys "^1.2.0" + espree "^7.1.0" esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" @@ -4165,7 +4200,6 @@ eslint@^7.0.0: ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" @@ -4183,14 +4217,14 @@ eslint@^7.0.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.0.0.tgz#8a7a60f218e69f120a842dc24c5a88aa7748a74e" - integrity sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw== +espree@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.1.0.tgz#a9c7f18a752056735bf1ba14cb1b70adc3a5ce1c" + integrity sha512-dcorZSyfmm4WTuTnE5Y7MEN1DyoPYy1ZR783QW1FJoenn7RailyWFsq/UL6ZAAA7uXurN9FIpYyUs3OfiIW+Qw== dependencies: - acorn "^7.1.1" + acorn "^7.2.0" acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" + eslint-visitor-keys "^1.2.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -4241,10 +4275,10 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter3@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.1.tgz#3bcf626b0d3b16ce22ee88625a3772706300ba1f" - integrity sha512-MnI0l35oYL2C/c80rjJN7qu50MDx39yYE7y7oYck2YA3v+y7EaAenY8IU8AP4d1RWqE8VAKWFGSh3rfP87ll3g== +eventemitter3@^4.0.0, eventemitter3@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== events@^3.0.0: version "3.1.0" @@ -4285,9 +4319,9 @@ execa@^1.0.0: strip-eof "^1.0.0" execa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.1.tgz#988488781f1f0238cd156f7aaede11c3e853b4c1" - integrity sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw== + version "4.0.2" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" + integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -4324,16 +4358,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.0.1.tgz#18697b9611a7e2725e20ba3ceadda49bc9865421" - integrity sha512-QcCy4nygHeqmbw564YxNbHTJlXh47dVID2BUP52cZFpLU9zHViMFK6h07cC1wf7GYCTIigTdAXhVua8Yl1FkKg== +expect@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.1.0.tgz#8c62e31d0f8d5a8ebb186ee81473d15dd2fbf7c8" + integrity sha512-QbH4LZXDsno9AACrN9eM0zfnby9G+OsdNgZUohjg/P0mLy1O+/bzTAJGT6VSIjVCe8yKM6SzEl/ckEOFBT7Vnw== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" ansi-styles "^4.0.0" jest-get-type "^26.0.0" - jest-matcher-utils "^26.0.1" - jest-message-util "^26.0.1" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" jest-regex-util "^26.0.0" express@^4.17.1: @@ -4392,15 +4426,6 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4426,9 +4451,9 @@ extsprintf@^1.2.0: integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" @@ -4479,13 +4504,6 @@ figures@^1.0.1: escape-string-regexp "^1.0.5" object-assign "^4.1.0" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -4573,7 +4591,7 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@3.0.0: +findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== @@ -4606,11 +4624,9 @@ flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb" - integrity sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA== - dependencies: - debug "^3.0.0" + version "1.12.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6" + integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg== for-in@^1.0.2: version "1.0.2" @@ -4723,20 +4739,20 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-port@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== get-stream@^4.0.0: version "4.1.0" @@ -4836,13 +4852,6 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -4852,6 +4861,13 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -5147,9 +5163,9 @@ html-escaper@^2.0.0: integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#95d3df037f04835e9d1a09d1767c0e361a7de916" - integrity sha512-tiYE76O1zunboByeB/nFGwUEb263Z3nkNv6Lz2oLC1s6M36bLKfTrjQ+7ssVfaucVllE+N7hh/FbpbxvnIA+LQ== + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== dependencies: camel-case "^4.1.1" clean-css "^4.2.3" @@ -5228,10 +5244,10 @@ http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== http-proxy-middleware@0.19.1: version "0.19.1" @@ -5244,9 +5260,9 @@ http-proxy-middleware@0.19.1: micromatch "^3.1.10" http-proxy@^1.17.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" - integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" follow-redirects "^1.0.0" @@ -5271,7 +5287,7 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5298,10 +5314,10 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -immer@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/immer/-/immer-6.0.5.tgz#77187d13b71c6cee40dde3b8e87a50a7a636d630" - integrity sha512-Q2wd90qrgFieIpLzAO2q9NLEdmyp/sr76Ml4Vm5peUKgyTa2CQa3ey8zuzwSKOlKH7grCeGBGUcLLVCVW1aguA== +immer@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/immer/-/immer-7.0.5.tgz#8af347db5b60b40af8ae7baf1784ea4d35b5208e" + integrity sha512-TtRAKZyuqld2eYjvWgXISLJ0ZlOl1OOTzRmrmiY8SlB0dnAhZ1OiykIDL5KDFNaPHDXiLfGQFNJGtet8z8AEmg== import-cwd@^2.0.0: version "2.1.0" @@ -5347,7 +5363,7 @@ import-from@^3.0.0: dependencies: resolve-from "^5.0.0" -import-local@2.0.0, import-local@^2.0.0: +import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== @@ -5406,25 +5422,6 @@ ini@^1.3.4, ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -5442,10 +5439,10 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -5454,11 +5451,6 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -5563,10 +5555,10 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== is-ci@^2.0.0: version "2.0.0" @@ -5656,13 +5648,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -5761,18 +5746,18 @@ is-potential-custom-element-name@^1.0.0: integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= is-reference@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" - integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: - "@types/estree" "0.0.39" + "@types/estree" "*" -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +is-regex@^1.0.4, is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== dependencies: - has "^1.0.3" + has-symbols "^1.0.1" is-relative@^1.0.0: version "1.0.0" @@ -5903,7 +5888,7 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0: +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -5939,57 +5924,57 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.0.1.tgz#1334630c6a1ad75784120f39c3aa9278e59f349f" - integrity sha512-q8LP9Sint17HaE2LjxQXL+oYWW/WeeXMPE2+Op9X3mY8IEGFVc14xRxFjUuXUbcPAlDLhtWdIEt59GdQbn76Hw== +jest-changed-files@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.1.0.tgz#de66b0f30453bca2aff98e9400f75905da495305" + integrity sha512-HS5MIJp3B8t0NRKGMCZkcDUZo36mVRvrDETl81aqljT1S9tqiHRSpyoOvWg9ZilzZG9TDisDNaN1IXm54fLRZw== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" execa "^4.0.0" throat "^5.0.0" -jest-cli@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.0.1.tgz#3a42399a4cbc96a519b99ad069a117d955570cac" - integrity sha512-pFLfSOBcbG9iOZWaMK4Een+tTxi/Wcm34geqZEqrst9cZDkTQ1LZ2CnBrTlHWuYAiTMFr0EQeK52ScyFU8wK+w== +jest-cli@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.1.0.tgz#eb9ec8a18cf3b6aa556d9deaa9e24be12b43ad87" + integrity sha512-Imumvjgi3rU7stq6SJ1JUEMaV5aAgJYXIs0jPqdUnF47N/Tk83EXfmtvNKQ+SnFVI6t6mDOvfM3aA9Sg6kQPSw== dependencies: - "@jest/core" "^26.0.1" - "@jest/test-result" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/core" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^26.0.1" - jest-util "^26.0.1" - jest-validate "^26.0.1" + jest-config "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" prompts "^2.0.1" yargs "^15.3.1" -jest-config@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.0.1.tgz#096a3d4150afadf719d1fab00e9a6fb2d6d67507" - integrity sha512-9mWKx2L1LFgOXlDsC4YSeavnblN6A4CPfXFiobq+YYLaBMymA/SczN7xYTSmLaEYHZOcB98UdoN4m5uNt6tztg== +jest-config@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.1.0.tgz#9074f7539acc185e0113ad6d22ed589c16a37a73" + integrity sha512-ONTGeoMbAwGCdq4WuKkMcdMoyfs5CLzHEkzFOlVvcDXufZSaIWh/OXMLa2fwKXiOaFcqEw8qFr4VOKJQfn4CVw== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.0.1" - "@jest/types" "^26.0.1" - babel-jest "^26.0.1" + "@jest/test-sequencer" "^26.1.0" + "@jest/types" "^26.1.0" + babel-jest "^26.1.0" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^26.0.1" - jest-environment-node "^26.0.1" + jest-environment-jsdom "^26.1.0" + jest-environment-node "^26.1.0" jest-get-type "^26.0.0" - jest-jasmine2 "^26.0.1" + jest-jasmine2 "^26.1.0" jest-regex-util "^26.0.0" - jest-resolve "^26.0.1" - jest-util "^26.0.1" - jest-validate "^26.0.1" + jest-resolve "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" micromatch "^4.0.2" - pretty-format "^26.0.1" + pretty-format "^26.1.0" jest-diff@^25.2.1: version "25.5.0" @@ -6001,15 +5986,15 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.0.1.tgz#c44ab3cdd5977d466de69c46929e0e57f89aa1de" - integrity sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ== +jest-diff@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.1.0.tgz#00a549bdc936c9691eb4dc25d1fbd78bf456abb2" + integrity sha512-GZpIcom339y0OXznsEKjtkfKxNdg7bVbEofK8Q6MnevTIiR1jNhDWKhRX6X0SDXJlwn3dy59nZ1z55fLkAqPWg== dependencies: chalk "^4.0.0" diff-sequences "^26.0.0" jest-get-type "^26.0.0" - pretty-format "^26.0.1" + pretty-format "^26.1.0" jest-docblock@^26.0.0: version "26.0.0" @@ -6018,39 +6003,39 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.0.1.tgz#633083061619302fc90dd8f58350f9d77d67be04" - integrity sha512-OTgJlwXCAR8NIWaXFL5DBbeS4QIYPuNASkzSwMCJO+ywo9BEa6TqkaSWsfR7VdbMLdgYJqSfQcIyjJCNwl5n4Q== +jest-each@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.1.0.tgz#e35449875009a22d74d1bda183b306db20f286f7" + integrity sha512-lYiSo4Igr81q6QRsVQq9LIkJW0hZcKxkIkHzNeTMPENYYDw/W/Raq28iJ0sLlNFYz2qxxeLnc5K2gQoFYlu2bA== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" chalk "^4.0.0" jest-get-type "^26.0.0" - jest-util "^26.0.1" - pretty-format "^26.0.1" - -jest-environment-jsdom@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.0.1.tgz#217690852e5bdd7c846a4e3b50c8ffd441dfd249" - integrity sha512-u88NJa3aptz2Xix2pFhihRBAatwZHWwSiRLBDBQE1cdJvDjPvv7ZGA0NQBxWwDDn7D0g1uHqxM8aGgfA9Bx49g== - dependencies: - "@jest/environment" "^26.0.1" - "@jest/fake-timers" "^26.0.1" - "@jest/types" "^26.0.1" - jest-mock "^26.0.1" - jest-util "^26.0.1" + jest-util "^26.1.0" + pretty-format "^26.1.0" + +jest-environment-jsdom@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.1.0.tgz#9dc7313ffe1b59761dad1fedb76e2503e5d37c5b" + integrity sha512-dWfiJ+spunVAwzXbdVqPH1LbuJW/kDL+FyqgA5YzquisHqTi0g9hquKif9xKm7c1bKBj6wbmJuDkeMCnxZEpUw== + dependencies: + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" jsdom "^16.2.2" -jest-environment-node@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.0.1.tgz#584a9ff623124ff6eeb49e0131b5f7612b310b13" - integrity sha512-4FRBWcSn5yVo0KtNav7+5NH5Z/tEgDLp7VRQVS5tCouWORxj+nI+1tOLutM07Zb2Qi7ja+HEDoOUkjBSWZg/IQ== +jest-environment-node@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.1.0.tgz#8bb387b3eefb132eab7826f9a808e4e05618960b" + integrity sha512-DNm5x1aQH0iRAe9UYAkZenuzuJ69VKzDCAYISFHQ5i9e+2Tbeu2ONGY7YStubCLH8a1wdKBgqScYw85+ySxqxg== dependencies: - "@jest/environment" "^26.0.1" - "@jest/fake-timers" "^26.0.1" - "@jest/types" "^26.0.1" - jest-mock "^26.0.1" - jest-util "^26.0.1" + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" jest-get-type@^25.2.6: version "25.2.6" @@ -6062,19 +6047,19 @@ jest-get-type@^26.0.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== -jest-haste-map@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.0.1.tgz#40dcc03c43ac94d25b8618075804d09cd5d49de7" - integrity sha512-J9kBl/EdjmDsvyv7CiyKY5+DsTvVOScenprz/fGqfLg/pm1gdjbwwQ98nW0t+OIt+f+5nAVaElvn/6wP5KO7KA== +jest-haste-map@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.1.0.tgz#ef31209be73f09b0d9445e7d213e1b53d0d1476a" + integrity sha512-WeBS54xCIz9twzkEdm6+vJBXgRBQfdbbXD0dk8lJh7gLihopABlJmIQFdWSDDtuDe4PRiObsjZSUjbJ1uhWEpA== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" "@types/graceful-fs" "^4.1.2" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-serializer "^26.0.0" - jest-util "^26.0.1" - jest-worker "^26.0.0" + jest-serializer "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" @@ -6082,54 +6067,54 @@ jest-haste-map@^26.0.1: optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.0.1.tgz#947c40ee816636ba23112af3206d6fa7b23c1c1c" - integrity sha512-ILaRyiWxiXOJ+RWTKupzQWwnPaeXPIoLS5uW41h18varJzd9/7I0QJGqg69fhTT1ev9JpSSo9QtalriUN0oqOg== +jest-jasmine2@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.1.0.tgz#4dfe349b2b2d3c6b3a27c024fd4cb57ac0ed4b6f" + integrity sha512-1IPtoDKOAG+MeBrKvvuxxGPJb35MTTRSDglNdWWCndCB3TIVzbLThRBkwH9P081vXLgiJHZY8Bz3yzFS803xqQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.0.1" - "@jest/source-map" "^26.0.0" - "@jest/test-result" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/environment" "^26.1.0" + "@jest/source-map" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" chalk "^4.0.0" co "^4.6.0" - expect "^26.0.1" + expect "^26.1.0" is-generator-fn "^2.0.0" - jest-each "^26.0.1" - jest-matcher-utils "^26.0.1" - jest-message-util "^26.0.1" - jest-runtime "^26.0.1" - jest-snapshot "^26.0.1" - jest-util "^26.0.1" - pretty-format "^26.0.1" + jest-each "^26.1.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-runtime "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + pretty-format "^26.1.0" throat "^5.0.0" -jest-leak-detector@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.0.1.tgz#79b19ab3f41170e0a78eb8fa754a116d3447fb8c" - integrity sha512-93FR8tJhaYIWrWsbmVN1pQ9ZNlbgRpfvrnw5LmgLRX0ckOJ8ut/I35CL7awi2ecq6Ca4lL59bEK9hr7nqoHWPA== +jest-leak-detector@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.1.0.tgz#039c3a07ebcd8adfa984b6ac015752c35792e0a6" + integrity sha512-dsMnKF+4BVOZwvQDlgn3MG+Ns4JuLv8jNvXH56bgqrrboyCbI1rQg6EI5rs+8IYagVcfVP2yZFKfWNZy0rK0Hw== dependencies: jest-get-type "^26.0.0" - pretty-format "^26.0.1" + pretty-format "^26.1.0" -jest-matcher-utils@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.0.1.tgz#12e1fc386fe4f14678f4cc8dbd5ba75a58092911" - integrity sha512-PUMlsLth0Azen8Q2WFTwnSkGh2JZ8FYuwijC8NR47vXKpsrKmA1wWvgcj1CquuVfcYiDEdj985u5Wmg7COEARw== +jest-matcher-utils@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.1.0.tgz#cf75a41bd413dda784f022de5a65a2a5c73a5c92" + integrity sha512-PW9JtItbYvES/xLn5mYxjMd+Rk+/kIt88EfH3N7w9KeOrHWaHrdYPnVHndGbsFGRJ2d5gKtwggCvkqbFDoouQA== dependencies: chalk "^4.0.0" - jest-diff "^26.0.1" + jest-diff "^26.1.0" jest-get-type "^26.0.0" - pretty-format "^26.0.1" + pretty-format "^26.1.0" -jest-message-util@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.0.1.tgz#07af1b42fc450b4cc8e90e4c9cef11b33ce9b0ac" - integrity sha512-CbK8uQREZ8umUfo8+zgIfEt+W7HAHjQCoRaNs4WxKGhAYBGwEyvxuK81FXa7VeB9pwDEXeeKOB2qcsNVCAvB7Q== +jest-message-util@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.1.0.tgz#52573fbb8f5cea443c4d1747804d7a238a3e233c" + integrity sha512-dY0+UlldiAJwNDJ08SF0HdF32g9PkbF2NRK/+2iMPU40O6q+iSn1lgog/u0UH8ksWoPv0+gNq8cjhYO2MFtT0g== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" "@types/stack-utils" "^1.0.1" chalk "^4.0.0" graceful-fs "^4.2.4" @@ -6137,164 +6122,164 @@ jest-message-util@^26.0.1: slash "^3.0.0" stack-utils "^2.0.2" -jest-mock@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.0.1.tgz#7fd1517ed4955397cf1620a771dc2d61fad8fd40" - integrity sha512-MpYTBqycuPYSY6xKJognV7Ja46/TeRbAZept987Zp+tuJvMN0YBWyyhG9mXyYQaU3SBI0TUlSaO5L3p49agw7Q== +jest-mock@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.1.0.tgz#80d8286da1f05a345fbad1bfd6fa49a899465d3d" + integrity sha512-1Rm8EIJ3ZFA8yCIie92UbxZWj9SuVmUGcyhLHyAhY6WI3NIct38nVcfOPWhJteqSn8V8e3xOMha9Ojfazfpovw== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== jest-regex-util@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.0.1.tgz#607ba7ccc32151d185a477cff45bf33bce417f0b" - integrity sha512-9d5/RS/ft0vB/qy7jct/qAhzJsr6fRQJyGAFigK3XD4hf9kIbEH5gks4t4Z7kyMRhowU6HWm/o8ILqhaHdSqLw== +jest-resolve-dependencies@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.1.0.tgz#1ce36472f864a5dadf7dc82fa158e1c77955691b" + integrity sha512-fQVEPHHQ1JjHRDxzlLU/buuQ9om+hqW6Vo928aa4b4yvq4ZHBtRSDsLdKQLuCqn5CkTVpYZ7ARh2fbA8WkRE6g== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" jest-regex-util "^26.0.0" - jest-snapshot "^26.0.1" + jest-snapshot "^26.1.0" -jest-resolve@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.0.1.tgz#21d1ee06f9ea270a343a8893051aeed940cde736" - integrity sha512-6jWxk0IKZkPIVTvq6s72RH735P8f9eCJW3IM5CX/SJFeKq1p2cZx0U49wf/SdMlhaB/anann5J2nCJj6HrbezQ== +jest-resolve@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.1.0.tgz#a530eaa302b1f6fa0479079d1561dd69abc00e68" + integrity sha512-KsY1JV9FeVgEmwIISbZZN83RNGJ1CC+XUCikf/ZWJBX/tO4a4NvA21YixokhdR9UnmPKKAC4LafVixJBrwlmfg== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" chalk "^4.0.0" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.1" - jest-util "^26.0.1" + jest-util "^26.1.0" read-pkg-up "^7.0.1" resolve "^1.17.0" slash "^3.0.0" -jest-runner@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.0.1.tgz#ea03584b7ae4bacfb7e533d680a575a49ae35d50" - integrity sha512-CApm0g81b49Znm4cZekYQK67zY7kkB4umOlI2Dx5CwKAzdgw75EN+ozBHRvxBzwo1ZLYZ07TFxkaPm+1t4d8jA== +jest-runner@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.1.0.tgz#457f7fc522afe46ca6db1dccf19f87f500b3288d" + integrity sha512-elvP7y0fVDREnfqit0zAxiXkDRSw6dgCkzPCf1XvIMnSDZ8yogmSKJf192dpOgnUVykmQXwYYJnCx641uLTgcw== dependencies: - "@jest/console" "^26.0.1" - "@jest/environment" "^26.0.1" - "@jest/test-result" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/console" "^26.1.0" + "@jest/environment" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^26.0.1" + jest-config "^26.1.0" jest-docblock "^26.0.0" - jest-haste-map "^26.0.1" - jest-jasmine2 "^26.0.1" - jest-leak-detector "^26.0.1" - jest-message-util "^26.0.1" - jest-resolve "^26.0.1" - jest-runtime "^26.0.1" - jest-util "^26.0.1" - jest-worker "^26.0.0" + jest-haste-map "^26.1.0" + jest-jasmine2 "^26.1.0" + jest-leak-detector "^26.1.0" + jest-message-util "^26.1.0" + jest-resolve "^26.1.0" + jest-runtime "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.0.1.tgz#a121a6321235987d294168e282d52b364d7d3f89" - integrity sha512-Ci2QhYFmANg5qaXWf78T2Pfo6GtmIBn2rRaLnklRyEucmPccmCKvS9JPljcmtVamsdMmkyNkVFb9pBTD6si9Lw== - dependencies: - "@jest/console" "^26.0.1" - "@jest/environment" "^26.0.1" - "@jest/fake-timers" "^26.0.1" - "@jest/globals" "^26.0.1" - "@jest/source-map" "^26.0.0" - "@jest/test-result" "^26.0.1" - "@jest/transform" "^26.0.1" - "@jest/types" "^26.0.1" +jest-runtime@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.1.0.tgz#45a37af42115f123ed5c51f126c05502da2469cb" + integrity sha512-1qiYN+EZLmG1QV2wdEBRf+Ci8i3VSfIYLF02U18PiUDrMbhfpN/EAMMkJtT02jgJUoaEOpHAIXG6zS3QRMzRmA== + dependencies: + "@jest/console" "^26.1.0" + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/globals" "^26.1.0" + "@jest/source-map" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" "@types/yargs" "^15.0.0" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^26.0.1" - jest-haste-map "^26.0.1" - jest-message-util "^26.0.1" - jest-mock "^26.0.1" + jest-config "^26.1.0" + jest-haste-map "^26.1.0" + jest-message-util "^26.1.0" + jest-mock "^26.1.0" jest-regex-util "^26.0.0" - jest-resolve "^26.0.1" - jest-snapshot "^26.0.1" - jest-util "^26.0.1" - jest-validate "^26.0.1" + jest-resolve "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" slash "^3.0.0" strip-bom "^4.0.0" yargs "^15.3.1" -jest-serializer@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.0.0.tgz#f6c521ddb976943b93e662c0d4d79245abec72a3" - integrity sha512-sQGXLdEGWFAE4wIJ2ZaIDb+ikETlUirEOBsLXdoBbeLhTHkZUJwgk3+M8eyFizhM6le43PDCCKPA1hzkSDo4cQ== +jest-serializer@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.1.0.tgz#72a394531fc9b08e173dc7d297440ac610d95022" + integrity sha512-eqZOQG/0+MHmr25b2Z86g7+Kzd5dG9dhCiUoyUNJPgiqi38DqbDEOlHcNijyfZoj74soGBohKBZuJFS18YTJ5w== dependencies: graceful-fs "^4.2.4" -jest-snapshot@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.0.1.tgz#1baa942bd83d47b837a84af7fcf5fd4a236da399" - integrity sha512-jxd+cF7+LL+a80qh6TAnTLUZHyQoWwEHSUFJjkw35u3Gx+BZUNuXhYvDqHXr62UQPnWo2P6fvQlLjsU93UKyxA== +jest-snapshot@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.1.0.tgz#c36ed1e0334bd7bd2fe5ad07e93a364ead7e1349" + integrity sha512-YhSbU7eMTVQO/iRbNs8j0mKRxGp4plo7sJ3GzOQ0IYjvsBiwg0T1o0zGQAYepza7lYHuPTrG5J2yDd0CE2YxSw== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" "@types/prettier" "^2.0.0" chalk "^4.0.0" - expect "^26.0.1" + expect "^26.1.0" graceful-fs "^4.2.4" - jest-diff "^26.0.1" + jest-diff "^26.1.0" jest-get-type "^26.0.0" - jest-matcher-utils "^26.0.1" - jest-message-util "^26.0.1" - jest-resolve "^26.0.1" - make-dir "^3.0.0" + jest-haste-map "^26.1.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-resolve "^26.1.0" natural-compare "^1.4.0" - pretty-format "^26.0.1" + pretty-format "^26.1.0" semver "^7.3.2" -jest-util@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.0.1.tgz#72c4c51177b695fdd795ca072a6f94e3d7cef00a" - integrity sha512-byQ3n7ad1BO/WyFkYvlWQHTsomB6GIewBh8tlGtusiylAlaxQ1UpS0XYH0ngOyhZuHVLN79Qvl6/pMiDMSSG1g== +jest-util@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.1.0.tgz#80e85d4ba820decacf41a691c2042d5276e5d8d8" + integrity sha512-rNMOwFQevljfNGvbzNQAxdmXQ+NawW/J72dmddsK0E8vgxXCMtwQ/EH0BiWEIxh0hhMcTsxwAxINt7Lh46Uzbg== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" - make-dir "^3.0.0" + micromatch "^4.0.2" -jest-validate@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.0.1.tgz#a62987e1da5b7f724130f904725e22f4e5b2e23c" - integrity sha512-u0xRc+rbmov/VqXnX3DlkxD74rHI/CfS5xaV2VpeaVySjbb1JioNVOyly5b56q2l9ZKe7bVG5qWmjfctkQb0bA== +jest-validate@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.1.0.tgz#942c85ad3d60f78250c488a7f85d8f11a29788e7" + integrity sha512-WPApOOnXsiwhZtmkDsxnpye+XLb/tUISP+H6cHjfUIXvlG+eKwP+isnivsxlHCPaO9Q5wvbhloIBkdF3qUn+Nw== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" camelcase "^6.0.0" chalk "^4.0.0" jest-get-type "^26.0.0" leven "^3.1.0" - pretty-format "^26.0.1" + pretty-format "^26.1.0" -jest-watcher@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.0.1.tgz#5b5e3ebbdf10c240e22a98af66d645631afda770" - integrity sha512-pdZPydsS8475f89kGswaNsN3rhP6lnC3/QDCppP7bg1L9JQz7oU9Mb/5xPETk1RHDCWeqmVC47M4K5RR7ejxFw== +jest-watcher@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.1.0.tgz#99812a0cd931f0cb3d153180426135ab83e4d8f2" + integrity sha512-ffEOhJl2EvAIki613oPsSG11usqnGUzIiK7MMX6hE4422aXOcVEG3ySCTDFLn1+LZNXGPE8tuJxhp8OBJ1pgzQ== dependencies: - "@jest/test-result" "^26.0.1" - "@jest/types" "^26.0.1" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.0.1" + jest-util "^26.1.0" string-length "^4.0.1" jest-worker@^24.9.0: @@ -6305,22 +6290,22 @@ jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066" - integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw== +jest-worker@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d" + integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ== dependencies: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.0.1.tgz#5c51a2e58dff7525b65f169721767173bf832694" - integrity sha512-29Q54kn5Bm7ZGKIuH2JRmnKl85YRigp0o0asTc6Sb6l2ch1DCXIeZTLLFy9ultJvhkTqbswF5DEx4+RlkmCxWg== +jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.1.0.tgz#2f3aa7bcffb9bfd025473f83bbbf46a3af026263" + integrity sha512-LIti8jppw5BcQvmNJe4w2g1N/3V68HUfAv9zDVm7v+VAtQulGhH0LnmmiVkbNE4M4I43Bj2fXPiBGKt26k9tHw== dependencies: - "@jest/core" "^26.0.1" + "@jest/core" "^26.1.0" import-local "^3.0.2" - jest-cli "^26.0.1" + jest-cli "^26.1.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -6328,9 +6313,9 @@ jest@^26.0.1: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.10.0, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -6448,12 +6433,12 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" - integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== +jsx-ast-utils@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" + integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" object.assign "^4.1.0" killable@^1.0.1: @@ -6490,6 +6475,18 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +language-subtag-registry@~0.3.2: + version "0.3.20" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz#a00a37121894f224f763268e431c55556b0c0755" + integrity sha512-KPMwROklF4tEx283Xw0pNKtfTj1gZ4UByp4EsIFWLgBavJltF4TiYPc39k06zSTsLzxTVXXDSpbwaQXaFB4Qeg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -6497,13 +6494,6 @@ lazystream@^1.0.0: dependencies: readable-stream "^2.0.5" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - lead@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" @@ -6574,16 +6564,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -6615,11 +6596,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash-es@^4.2.1: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" - integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -6645,7 +6621,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -6722,13 +6698,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -6843,16 +6812,7 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1: +memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -6888,31 +6848,36 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -microbundle@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.12.0.tgz#d3d531c4d7553ea2f38688e3076f8e4d70adcc65" - integrity sha512-wi4azdcbZ/caGHp+NsPmaGph3k3adZmsTYypRtUaiwC0d2ZY9xwVJGam4jwZWX0nhNLRXH9+aIkruso/XvfJ0g== +microbundle@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.12.2.tgz#3d79941291ef919dd280ecdffd4c8ee15ad394e3" + integrity sha512-6/48HlmDPq/Q1HyS5liFFSvcU0v8n8NROH3K1Z/saU+TRaxCe38eNNqZwjitOyTKilXqnp1yHEEjZGYWVvr7WQ== dependencies: - "@babel/core" "^7.8.7" + "@babel/core" "^7.10.2" "@babel/plugin-proposal-class-properties" "7.7.4" - "@babel/plugin-syntax-jsx" "^7.7.4" - "@babel/plugin-transform-flow-strip-types" "^7.7.4" - "@babel/plugin-transform-react-jsx" "^7.7.7" - "@babel/preset-env" "^7.8.7" - "@babel/preset-flow" "^7.7.4" - "@rollup/plugin-alias" "^3.0.1" - "@rollup/plugin-commonjs" "^11.0.2" - "@rollup/plugin-json" "^4.0.2" + "@babel/plugin-syntax-import-meta" "^7.10.1" + "@babel/plugin-syntax-jsx" "^7.10.1" + "@babel/plugin-transform-flow-strip-types" "^7.10.1" + "@babel/plugin-transform-react-jsx" "^7.10.1" + "@babel/plugin-transform-regenerator" "^7.10.1" + "@babel/preset-env" "^7.10.2" + "@babel/preset-flow" "^7.10.1" + "@babel/preset-modules" "^0.1.3" + "@rollup/plugin-alias" "^3.1.1" + "@rollup/plugin-babel" "^5.0.3" + "@rollup/plugin-commonjs" "^13.0.0" + "@rollup/plugin-json" "^4.1.0" "@rollup/plugin-node-resolve" "^6.1.0" asyncro "^3.0.0" - autoprefixer "^9.7.3" + autoprefixer "^9.8.0" babel-plugin-macros "^2.8.0" babel-plugin-transform-async-to-promises "^0.8.15" babel-plugin-transform-replace-expressions "^0.2.0" brotli-size "^4.0.0" camelcase "^5.3.1" cssnano "^4.1.10" - es6-promisify "^6.0.1" + es6-promisify "^6.1.1" + escape-string-regexp "^4.0.0" filesize "^6.1.0" gzip-size "^5.1.1" kleur "^3.0.3" @@ -6920,16 +6885,15 @@ microbundle@^0.12.0: module-details-from-path "^1.0.3" pretty-bytes "^5.3.0" rollup "^1.32.1" - rollup-plugin-babel "^4.4.0" rollup-plugin-bundle-size "^1.0.1" rollup-plugin-es3 "^1.1.0" - rollup-plugin-postcss "^2.4.1" + rollup-plugin-postcss "^2.9.0" rollup-plugin-terser "^5.3.0" rollup-plugin-typescript2 "^0.25.3" sade "^1.7.3" tiny-glob "^0.2.6" - tslib "^1.11.1" - typescript "^3.8.3" + tslib "^1.13.0" + typescript "^3.9.5" micromatch@4.x, micromatch@^4.0.0, micromatch@^4.0.2: version "4.0.2" @@ -6984,11 +6948,11 @@ mime@1.6.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.2.0, mime@^2.4.4: - version "2.4.5" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" - integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -7039,7 +7003,12 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: +mkdirp@1.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -7116,11 +7085,6 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -7216,9 +7180,9 @@ node-modules-regexp@^1.0.0: integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.0.tgz#513bc42f2aa3a49fce1980a7ff375957c71f718a" - integrity sha512-y8ThJESxsHcak81PGpzWwQKxzk+5YtP3IxR8AYdpXQ1IB6FmcVzFdZXrkPin49F/DKUCfeeiziB8ptY9npzGuA== + version "7.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.1.tgz#a355e33e6bebacef9bf8562689aed0f4230ca6f9" + integrity sha512-VkzhierE7DBmQEElhTGJIoiZa1oqRijOtgOlsXg32KrJRXsPy0NXFBqWGW/wTswnJlDCs5viRYaqWguqzsKcmg== dependencies: growly "^1.3.0" is-wsl "^2.1.1" @@ -7227,10 +7191,10 @@ node-notifier@^7.0.0: uuid "^7.0.3" which "^2.0.2" -node-releases@^1.1.53: - version "1.1.55" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.55.tgz#8af23b7c561d8e2e6e36a46637bab84633b07cee" - integrity sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w== +node-releases@^1.1.58: + version "1.1.58" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" + integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" @@ -7342,9 +7306,9 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== object-is@^1.0.1: version "1.1.2" @@ -7376,14 +7340,13 @@ object.assign@^4.0.4, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" - integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== +object.entries@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== dependencies: define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.17.5" has "^1.0.3" object.fromentries@^2.0.2: @@ -7502,25 +7465,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -7531,11 +7475,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -7577,11 +7516,11 @@ p-map@^2.0.0: integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-queue@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.4.0.tgz#5050b379393ea1814d6f9613a654f687d92c0466" - integrity sha512-X7ddxxiQ+bLR/CUt3/BVKrGcJDNxBr0pEEFKHHB6vTPWNUhgDv36GpIH18RmGM3YGPpBT+JWGjDDqsVGuF0ERw== + version "6.5.0" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.5.0.tgz#40d6bafdd3bb0c8eaa03e0649ba6fa3ce7249947" + integrity sha512-FLaTTD9Am6TeDfNuN0d+INeyVJoICoBS+OVP5K1S84v4w51LN3nRkCT+WC7xLBepV2s+N4LibM7Ys7xcSc0+1A== dependencies: - eventemitter3 "^4.0.0" + eventemitter3 "^4.0.4" p-timeout "^3.1.0" p-retry@^3.0.1: @@ -7823,9 +7762,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -7858,7 +7797,7 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.0, pify@^4.0.1: +pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== @@ -7908,13 +7847,6 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - portfinder@^1.0.26: version "1.0.26" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" @@ -8249,7 +8181,7 @@ postcss-value-parser@^3.0.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3: +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== @@ -8272,10 +8204,10 @@ postcss@^6.0.1: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27: - version "7.0.29" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.29.tgz#d3a903872bd52280b83bce38cdc83ce55c06129e" - integrity sha512-ba0ApvR3LxGvRMMiUa9n0WR4HjzcYm7tS+ht4/2Nd0NLtHpPIH77fuB9Xh1/yJVz9O/E/95Y/dn8ygWsyffXtw== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -8311,7 +8243,7 @@ pretty-error@^2.1.1: renderkid "^2.0.1" utila "~0.4" -pretty-format@^25.1.0, pretty-format@^25.2.1, pretty-format@^25.5.0: +pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== @@ -8321,21 +8253,16 @@ pretty-format@^25.1.0, pretty-format@^25.2.1, pretty-format@^25.5.0: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.0.1.tgz#a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197" - integrity sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw== +pretty-format@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.1.0.tgz#272b9cd1f1a924ab5d443dc224899d7a65cb96ec" + integrity sha512-GmeO1PEYdM+non4BKCj+XsPJjFOJIPnsLewqhDVoqY1xo0yNmDas7tC2XwpMrRAHR3MaE2hPo37deX5OisJ2Wg== dependencies: - "@jest/types" "^26.0.1" + "@jest/types" "^26.1.0" ansi-regex "^5.0.0" ansi-styles "^4.0.0" react-is "^16.12.0" -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -8403,10 +8330,10 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" -proxy-compare@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-1.0.1.tgz#681651e050706492ff5c4d1eac0dc289c4ebb3f7" - integrity sha512-Yui9ndDefoBkIisV29BnbO4nWKOkzpf8xmCz/JkOKZI+R1N/Q9BJDLZNfI5/q5uwm87Ep/7IVeBPkBcEvtpHww== +proxy-compare@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-1.0.2.tgz#2c7babcd5ca1c2b85fb86448a19eb5613d80d62d" + integrity sha512-ykdqgpT1yDcDT9tQgrf6SN6m2ZlLXW73xLz2aNg43356fpDikw68OCOR/ydrGsYPWUanijaRe7VBmfoBjVNseg== prr@~1.0.1: version "1.0.1" @@ -8505,7 +8432,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -8544,13 +8471,13 @@ raw-body@~1.1.0: string_decoder "0.10" react-dom@experimental: - version "0.0.0-experimental-33c3af284" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-33c3af284.tgz#d4acd21209a299832d9233ceafc25a6fe1b1d076" - integrity sha512-z1/EQD8iKjqkRRd/lEs6oh4FNcS9tPmO91219w4UlLhP0g28wTWClJOYDEnKgQh2nJeZQ5MlBDECIRZYwrZp5A== + version "0.0.0-experimental-7f28234f8" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-7f28234f8.tgz#529be5b78d1b8bdf75aaf7c5685a199eaa6964bf" + integrity sha512-5kQYnGXFWKKic6PcDhPuPlHHLDQd+R7dFWstPWu9gq3fzjxM70szbKn+0XhzrTxWkxeoEj1n5JIWWbw25BUBcg== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - scheduler "0.0.0-experimental-33c3af284" + scheduler "0.0.0-experimental-7f28234f8" react-is@^16.12.0, react-is@^16.8.1: version "16.13.1" @@ -8558,9 +8485,9 @@ react-is@^16.12.0, react-is@^16.8.1: integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react@experimental: - version "0.0.0-experimental-33c3af284" - resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-33c3af284.tgz#63842e46a441e4d5a8a5623a21791973196e8bbf" - integrity sha512-dk0eQhyiA05TYtSWShwfl4vxlJAOrwNLtESbWxM6O06Xn0nuzlXYZUjsY3sJkZrpXK0kywZ+Hbs24tA8u/1KzQ== + version "0.0.0-experimental-7f28234f8" + resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-7f28234f8.tgz#683959941b917be77c2c5e290f67980bccb87c65" + integrity sha512-UaFnSv3OZ0txscOqqZO5vkeSjWjecteReawUPXDWWNvgtQzZGbce4CH5OjoF/YqyPu3kn/QJivQKSPxoxfiZtQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -8686,17 +8613,7 @@ redux-thunk@^2.3.0: resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== -redux@^3.6.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" - integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== - dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.3" - -redux@^4.0.5: +redux@^4.0.0, redux@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== @@ -8712,9 +8629,9 @@ regenerate-unicode-properties@^8.2.0: regenerate "^1.4.0" regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + version "1.4.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== regenerator-runtime@^0.13.4: version "0.13.5" @@ -8722,12 +8639,11 @@ regenerator-runtime@^0.13.4: integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -8763,9 +8679,9 @@ regexpu-core@^4.6.0, regexpu-core@^4.7.0: unicode-match-property-value-ecmascript "^1.2.0" regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: version "0.6.4" @@ -8963,11 +8879,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -9039,21 +8950,13 @@ resolve@1.12.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.3, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.16.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.1.3, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.16.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -9103,14 +9006,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-babel@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - rollup-plugin-bundle-size@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz#d245cd988486b4040279f9fd33f357f61673e90f" @@ -9126,7 +9021,7 @@ rollup-plugin-es3@^1.1.0: dependencies: magic-string "^0.22.4" -rollup-plugin-postcss@^2.4.1: +rollup-plugin-postcss@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-2.9.0.tgz#e6ea0a1b8fdc4a49fc0385da58804e332750c282" integrity sha512-Y7qDwlqjZMBexbB1kRJf+jKIQL8HR6C+ay53YzN+nNJ64hn1PNZfBE3c61hFUhD//zrMwmm7uBW30RuTi+CD0w== @@ -9175,7 +9070,7 @@ rollup-pluginutils@2.8.1: dependencies: estree-walker "^0.6.1" -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: +rollup-pluginutils@^2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== @@ -9196,11 +9091,6 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -9208,13 +9098,6 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^6.5.3: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - sade@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.3.tgz#a217ccc4fb4abb2d271648bf48f6628b2636fa1b" @@ -9281,10 +9164,10 @@ saxes@^5.0.0: dependencies: xmlchars "^2.2.0" -scheduler@0.0.0-experimental-33c3af284: - version "0.0.0-experimental-33c3af284" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-33c3af284.tgz#69e1db9ceb7cb1b654ff0a0057ea7d4fb23dfbd2" - integrity sha512-m9eyhFt9uGi9y3HcN9hMrbnw1AbFEWcWn+IjF1N+GGVGfQmgB0F/mQ9rQkmrX7gPNIDBKwlFdOsrENtHTn4XUQ== +scheduler@0.0.0-experimental-7f28234f8: + version "0.0.0-experimental-7f28234f8" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-7f28234f8.tgz#da71b19522aa2e7227e806a50ae6974e4c630f50" + integrity sha512-nPR3slpTIiJBMfhzHZj4tqOQeUZReFF3vyP1mBlzfSpSjGxEwqHPPF6hWx7+YlAhJZxuGgwBUa8kfb3OOK4a9Q== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -9315,21 +9198,21 @@ selfsigned@^1.10.7: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.x, semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^7.2.1, semver@^7.3.2: +semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -9354,6 +9237,13 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -9594,9 +9484,9 @@ space-separated-tokens@^1.0.0: integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -9607,9 +9497,9 @@ spdx-exceptions@^2.1.0: integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" @@ -9776,23 +9666,6 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -9831,7 +9704,7 @@ string.prototype.padend@^3.0.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -string.prototype.trimend@^1.0.0: +string.prototype.trimend@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== @@ -9839,25 +9712,7 @@ string.prototype.trimend@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: +string.prototype.trimstart@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== @@ -9901,13 +9756,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -9973,13 +9821,6 @@ subarg@^1.0.0: dependencies: minimist "^1.1.0" -supports-color@6.1.0, supports-color@^6.0.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -9999,6 +9840,13 @@ supports-color@^5.3.0, supports-color@^5.4.0: dependencies: has-flag "^3.0.0" +supports-color@^6.0.0, supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-color@^7.0.0, supports-color@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" @@ -10033,7 +9881,7 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@^1.0.3, symbol-observable@^1.2.0: +symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -10067,24 +9915,24 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + version "1.4.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" + integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + serialize-javascript "^3.1.0" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: - version "4.6.13" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.13.tgz#e879a7364a5e0db52ba4891ecde007422c56a916" - integrity sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw== + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -10125,7 +9973,7 @@ through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.6: +"through@>=2.2.7 <3": version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -10167,13 +10015,6 @@ tiny-lr@^1.1.0: object-assign "^4.1.0" qs "^6.4.0" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -10285,10 +10126,10 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -ts-jest@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.5.1.tgz#2913afd08f28385d54f2f4e828be4d261f4337c7" - integrity sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw== +ts-jest@^26.1.1: + version "26.1.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.1.1.tgz#b98569b8a4d4025d966b3d40c81986dd1c510f8d" + integrity sha512-Lk/357quLg5jJFyBQLnSbhycnB3FPe+e9i7ahxokyXxAYoB0q1pPmqxxRPYr4smJic1Rjcf7MXDBhZWgxlli0A== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -10297,14 +10138,14 @@ ts-jest@^25.5.1: lodash.memoize "4.x" make-error "1.x" micromatch "4.x" - mkdirp "0.x" - semver "6.x" + mkdirp "1.x" + semver "7.x" yargs-parser "18.x" -ts-loader@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.3.tgz#1ba06fd3dae612ecf8b952f89145f9ac7489805f" - integrity sha512-BXAHfPjm3J//20ibuI30M+xgLpdIng68p2H952QqbbmDk7SW72HV42k9Gop7rMxuHvrXWjazWhKuyr9D9kKe3A== +ts-loader@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.5.tgz#789338fb01cb5dc0a33c54e50558b34a73c9c4c5" + integrity sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig== dependencies: chalk "^2.3.0" enhanced-resolve "^4.0.0" @@ -10312,15 +10153,25 @@ ts-loader@^7.0.3: micromatch "^4.0.0" semver "^6.0.0" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@^1.10.0, tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0: - version "1.11.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.2.tgz#9c79d83272c9a7aaf166f73915c9667ecdde3cc9" - integrity sha512-tTSkux6IGPnUGUd1XAZHcpu85MOkIl5zX49pO+jfsie3eP0B6pyhOlLXm3cAC6T7s+euSDDUUV+Acop5WmtkVg== +tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== tsutils@^3.17.1: version "3.17.1" @@ -10400,10 +10251,10 @@ typedarray@^0.0.6, typedarray@~0.0.5: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +typescript@^3.9.5, typescript@^3.9.6: + version "3.9.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a" + integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== unc-path-regex@^0.1.2: version "0.1.2" @@ -10673,15 +10524,10 @@ uuid@^7.0.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== v8-to-istanbul@^4.1.3: version "4.1.4" @@ -10777,9 +10623,9 @@ vfile@^2.0.0: vfile-message "^1.0.0" vfile@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.1.0.tgz#d79248957f43225d57ff67a56effc67bef08946e" - integrity sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.1.1.tgz#282d28cebb609183ac51703001bc18b3e3f17de9" + integrity sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" @@ -10874,14 +10720,23 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" - integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== dependencies: chokidar "^2.1.8" + +watchpack@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== + dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -10900,22 +10755,22 @@ webidl-conversions@^6.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" - integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" +webpack-cli@^3.3.12: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== + dependencies: + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" webpack-dev-middleware@^3.7.2: version "3.7.2" @@ -11020,11 +10875,11 @@ websocket-driver@0.6.5: websocket-extensions ">=0.1.1" websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - http-parser-js ">=0.4.0 <0.4.11" + http-parser-js ">=0.5.1" safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" @@ -11085,14 +10940,6 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -11160,7 +11007,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xregexp@^4.3.0: +xregexp@^4.2.4: version "4.3.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== @@ -11172,7 +11019,7 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -11183,13 +11030,11 @@ yallist@^3.0.2: integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^1.7.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" - integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== - dependencies: - "@babel/runtime" "^7.9.2" + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@18.x, yargs-parser@^18.1.1: +yargs-parser@18.x, yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -11197,15 +11042,7 @@ yargs-parser@18.x, yargs-parser@^18.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.0, yargs-parser@^13.1.2: +yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -11213,41 +11050,6 @@ yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" - -yargs@^12.0.2: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" @@ -11265,12 +11067,12 @@ yargs@^13.3.2: yargs-parser "^13.1.2" yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + version "15.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2" + integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw== dependencies: cliui "^6.0.0" - decamelize "^1.2.0" + decamelize "^3.2.0" find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" @@ -11279,4 +11081,4 @@ yargs@^15.3.1: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^18.1.1" + yargs-parser "^18.1.2" From 9dc9f4d52ba5e00389336882ec1ce2c0543d0a7d Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 4 Jul 2020 08:00:03 +0900 Subject: [PATCH 15/22] remove dist --- .gitignore | 1 + dist/index.esm.js | 2 -- dist/index.esm.js.map | 1 - dist/index.js | 2 -- dist/index.js.map | 1 - dist/index.umd.js | 2 -- dist/index.umd.js.map | 1 - dist/src/index.d.ts | 6 ------ dist/src/memo.d.ts | 16 ---------------- dist/src/patchStore.d.ts | 16 ---------------- dist/src/useSelector.d.ts | 18 ------------------ dist/src/useTrackedState.d.ts | 18 ------------------ dist/src/utils.d.ts | 1 - 13 files changed, 1 insertion(+), 84 deletions(-) delete mode 100644 dist/index.esm.js delete mode 100644 dist/index.esm.js.map delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 dist/index.umd.js delete mode 100644 dist/index.umd.js.map delete mode 100644 dist/src/index.d.ts delete mode 100644 dist/src/memo.d.ts delete mode 100644 dist/src/patchStore.d.ts delete mode 100644 dist/src/useSelector.d.ts delete mode 100644 dist/src/useTrackedState.d.ts delete mode 100644 dist/src/utils.d.ts diff --git a/.gitignore b/.gitignore index b9d243e..66cc957 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *~ *.swp node_modules +/dist diff --git a/dist/index.esm.js b/dist/index.esm.js deleted file mode 100644 index a5bddef..0000000 --- a/dist/index.esm.js +++ /dev/null @@ -1,2 +0,0 @@ -import{createMutableSource as t,useCallback as r,useMutableSource as e,useRef as n,useEffect as u,useDebugValue as o,useMemo as a,memo as c,createElement as i}from"react";import{createDeepProxy as f,isDeepChanged as p,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED as m,MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP as v,MODE_IGNORE_REF_EQUALITY as l,trackMemo as b}from"proxy-compare";export{getUntrackedObject}from"proxy-compare";var s=function(r){var e=t(r,function(){return r.getState()});return r.mutableSource=e,r},g=function(t,r){return t.subscribe(r)},S=function(t,n){var u=t.mutableSource,o=r(function(t){return n(t.getState())},[n]);return e(u,o,g)},d=m|v,E=l,h=m,k=function(t,r){void 0===r&&(r={});var c=t.mutableSource,i=new WeakMap,m=r.unstable_forceUpdateForStateChange?0:r.unstable_ignoreIntermediateObjectUsage?d:r.unstable_ignoreStateEquality?E:h,v=a(function(){var t=null,r=new WeakMap;return function(e){var n=e.getState();return null===t||t===n||p(t,n,i,r,m)?(t=n,n):t}},[i,m]),l=e(c,v,g);"production"!==process.env.NODE_ENV&&function(t,r){var e=n();u(function(){e.current=function(t,r){var e=[];return function t(n,u){var o=r.get(n);o?o.forEach(function(r){t(n[r],u?[].concat(u,[r]):[r])}):u&&e.push(u)}(t),e}(t,r)}),o(e.current)}(l,i);var b=a(function(){return new WeakMap},[]);return f(l,i,b)},x=function(t,r){return c(function(r){return Object.values(r).forEach(b),i(t,r)},r)};export{x as memo,s as patchStore,S as useSelector,k as useTrackedState}; -//# sourceMappingURL=index.esm.js.map diff --git a/dist/index.esm.js.map b/dist/index.esm.js.map deleted file mode 100644 index 4e411e2..0000000 --- a/dist/index.esm.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.esm.js","sources":["../src/patchStore.ts","../src/useSelector.ts","../src/useTrackedState.ts","../src/utils.ts","../src/memo.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList.current);\n};\n","import { ComponentProps, createElement, memo as reactMemo } from 'react';\nimport { trackMemo } from 'proxy-compare';\n\n/**\n * memo\n *\n * Using `React.memo` with tracked state is not compatible,\n * because `React.memo` stops state access, thus no tracking occurs.\n * This is a special memo to be used instead of `React.memo` with tracking support.\n *\n * @example\n * import { memo } from 'reactive-react-redux';\n *\n * const ChildComponent = memo(({ obj1, obj2 }) => {\n * // ...\n * });\n */\nexport const memo = (\n Component: Parameters[0],\n areEqual?: Parameters[1],\n) => {\n const WrappedComponent = (props: ComponentProps) => {\n Object.values(props).forEach(trackMemo);\n return createElement(Component, props);\n };\n return reactMemo(WrappedComponent, areEqual);\n};\n"],"names":["patchStore","store","mutableSource","createMutableSource","getState","subscribe","callback","useSelector","patchedStore","selector","getSnapshot","useCallback","useMutableSource","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","useTrackedState","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","forEach","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy","memo","Component","areEqual","reactMemo","props","Object","values","trackMemo","createElement"],"mappings":"maAyBaA,IAAAA,EAAa,SACxBC,GAEA,IAAMC,EAAgBC,EAAoBF,EAAO,kBAAMA,EAAMG,aAE7D,OADCH,EAAsCC,cAAgBA,EAChDD,GAGII,EAAY,SACvBJ,EACAK,GAGA,OADoBL,EAAMI,UAAUC,ICRzBC,EAAc,SACzBC,EACAC,OAEQP,EAAkBM,EAAlBN,cACFQ,EAAcC,EAAY,SAACV,UAC/BQ,EAASR,EAAMG,aACd,CAACK,IAEJ,OAD2BG,EAAiBV,EAAeQ,EAAaL,ICdpEQ,EACJC,EAAsCC,EAElCC,EAA0BC,EAC1BC,EAAeJ,EAmBRK,EAAkB,SAC7BX,EACAY,YAAAA,IAAAA,EAAa,QAELlB,EAAkBM,EAAlBN,cACFmB,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyCZ,EAC9CO,EAAKM,6BAAyCV,EACAE,EAG5CR,EAAciB,EAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQrB,GACN,IAAM6B,EAAY7B,EAAMG,WACxB,OAAkB,OAAdwB,GAAsBA,IAAcE,GAAcC,EACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAepB,EAAiBV,EAAeQ,EAAaL,GACrC,eAAzB4B,QAAQC,IAAIC,UCvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,IACjBC,EAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKE,QAAQ,SAACC,GACZN,EAAMC,EAAgCK,GAAMJ,YAAWA,GAAMI,IAAO,CAACA,MAE9DJ,GACTH,EAAKQ,KAAKL,GAGdF,CAAKT,GACEQ,EAScS,CAAmBjB,EAAOX,KAE/C6B,EAAcd,EAASG,SDiDrBY,CAAsBnB,EAAOX,GAE/B,IAAM+B,EAAazB,EAAQ,sBAAUL,SAAW,IAChD,OAAO+B,EAAgBrB,EAAOX,EAAU+B,IEpE7BE,EAAO,SAClBC,EACAC,GAMA,OAAOC,EAJkB,SAACC,GAExB,OADAC,OAAOC,OAAOF,GAAOZ,QAAQe,GACtBC,EAAcP,EAAWG,IAECF"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index b5cb6bc..0000000 --- a/dist/index.js +++ /dev/null @@ -1,2 +0,0 @@ -var e=require("react"),t=require("proxy-compare"),r=function(e,t){return e.subscribe(t)},n=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,u=t.MODE_IGNORE_REF_EQUALITY,a=t.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(exports,"getUntrackedObject",{enumerable:!0,get:function(){return t.getUntrackedObject}}),exports.memo=function(r,n){return e.memo(function(n){return Object.values(n).forEach(t.trackMemo),e.createElement(r,n)},n)},exports.patchStore=function(t){var r=e.createMutableSource(t,function(){return t.getState()});return t.mutableSource=r,t},exports.useSelector=function(t,n){var u=t.mutableSource,a=e.useCallback(function(e){return n(e.getState())},[n]);return e.useMutableSource(u,a,r)},exports.useTrackedState=function(c,o){void 0===o&&(o={});var i=c.mutableSource,E=new WeakMap,s=o.unstable_forceUpdateForStateChange?0:o.unstable_ignoreIntermediateObjectUsage?n:o.unstable_ignoreStateEquality?u:a,f=e.useMemo(function(){var e=null,r=new WeakMap;return function(n){var u=n.getState();return null===e||e===u||t.isDeepChanged(e,u,E,r,s)?(e=u,u):e}},[E,s]),l=e.useMutableSource(i,f,r);"production"!==process.env.NODE_ENV&&function(t,r){var n=e.useRef();e.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(t,r)}),e.useDebugValue(n.current)}(l,E);var _=e.useMemo(function(){return new WeakMap},[]);return t.createDeepProxy(l,E,_)}; -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 6fc84d4..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sources":["../src/patchStore.ts","../src/useTrackedState.ts","../src/memo.ts","../src/useSelector.ts","../src/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","import { ComponentProps, createElement, memo as reactMemo } from 'react';\nimport { trackMemo } from 'proxy-compare';\n\n/**\n * memo\n *\n * Using `React.memo` with tracked state is not compatible,\n * because `React.memo` stops state access, thus no tracking occurs.\n * This is a special memo to be used instead of `React.memo` with tracking support.\n *\n * @example\n * import { memo } from 'reactive-react-redux';\n *\n * const ChildComponent = memo(({ obj1, obj2 }) => {\n * // ...\n * });\n */\nexport const memo = (\n Component: Parameters[0],\n areEqual?: Parameters[1],\n) => {\n const WrappedComponent = (props: ComponentProps) => {\n Object.values(props).forEach(trackMemo);\n return createElement(Component, props);\n };\n return reactMemo(WrappedComponent, areEqual);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList.current);\n};\n"],"names":["subscribe","store","callback","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","Component","areEqual","reactMemo","props","Object","values","forEach","trackMemo","createElement","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"kDAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICdhCC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,mKCVD,SAClBK,EACAC,GAMA,OAAOC,OAJkB,SAACC,GAExB,OADAC,OAAOC,OAAOF,GAAOG,QAAQC,aACtBC,gBAAcR,EAAWG,IAECF,uBFAX,SACxBT,GAEA,IAAMiB,EAAgBC,sBAAoBlB,EAAO,kBAAMA,EAAMmB,aAE7D,OADCnB,EAAsCiB,cAAgBA,EAChDjB,uBGDkB,SACzBoB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACvB,UAC/BqB,EAASrB,EAAMmB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAavB,4BFS3C,SAC7BqB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyC5B,EAC9CuB,EAAKM,6BAAyC1B,EACAE,EAG5Ce,EAAcU,UAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQ3B,GACN,IAAMmC,EAAYnC,EAAMmB,WACxB,OAAkB,OAAdc,GAAsBA,IAAcE,GAAcC,gBACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAeb,mBAAiBP,EAAeK,EAAavB,GACrC,eAAzBuC,QAAQC,IAAIC,UGvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,WACjBC,YAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKnC,QAAQ,SAACqC,GACZL,EAAMC,EAAgCI,GAAMH,YAAWA,GAAMG,IAAO,CAACA,MAE9DH,GACTH,EAAKO,KAAKJ,GAGdF,CAAKT,GACEQ,EAScQ,CAAmBhB,EAAOX,KAE/C4B,gBAAcb,EAASG,SHiDrBW,CAAsBlB,EAAOX,GAE/B,IAAM8B,EAAaxB,UAAQ,sBAAUL,SAAW,IAChD,OAAO8B,kBAAgBpB,EAAOX,EAAU8B"} \ No newline at end of file diff --git a/dist/index.umd.js b/dist/index.umd.js deleted file mode 100644 index c7ea12d..0000000 --- a/dist/index.umd.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("proxy-compare")):"function"==typeof define&&define.amd?define(["exports","react","proxy-compare"],t):t((e=e||self).reactiveReactRedux={},e.react,e.proxyCompare)}(this,function(e,t,r){var n=function(e,t){return e.subscribe(t)},u=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED|r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,a=r.MODE_IGNORE_REF_EQUALITY,c=r.MODE_ASSUME_UNCHANGED_IF_UNAFFECTED;Object.defineProperty(e,"getUntrackedObject",{enumerable:!0,get:function(){return r.getUntrackedObject}}),e.memo=function(e,n){return t.memo(function(n){return Object.values(n).forEach(r.trackMemo),t.createElement(e,n)},n)},e.patchStore=function(e){var r=t.createMutableSource(e,function(){return e.getState()});return e.mutableSource=r,e},e.useSelector=function(e,r){var u=e.mutableSource,a=t.useCallback(function(e){return r(e.getState())},[r]);return t.useMutableSource(u,a,n)},e.useTrackedState=function(e,o){void 0===o&&(o={});var i=e.mutableSource,f=new WeakMap,E=o.unstable_forceUpdateForStateChange?0:o.unstable_ignoreIntermediateObjectUsage?u:o.unstable_ignoreStateEquality?a:c,s=t.useMemo(function(){var e=null,t=new WeakMap;return function(n){var u=n.getState();return null===e||e===u||r.isDeepChanged(e,u,f,t,E)?(e=u,u):e}},[f,E]),l=t.useMutableSource(i,s,n);"production"!==process.env.NODE_ENV&&function(e,r){var n=t.useRef();t.useEffect(function(){n.current=function(e,t){var r=[];return function e(n,u){var a=t.get(n);a?a.forEach(function(t){e(n[t],u?[].concat(u,[t]):[t])}):u&&r.push(u)}(e),r}(e,r)}),t.useDebugValue(n.current)}(l,f);var p=t.useMemo(function(){return new WeakMap},[]);return r.createDeepProxy(l,f,p)}}); -//# sourceMappingURL=index.umd.js.map diff --git a/dist/index.umd.js.map b/dist/index.umd.js.map deleted file mode 100644 index d4daa1e..0000000 --- a/dist/index.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.umd.js","sources":["../src/patchStore.ts","../src/useTrackedState.ts","../src/memo.ts","../src/useSelector.ts","../src/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n // @ts-ignore\n createMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nexport type PatchedStore> = {\n mutableSource: any;\n} & Store;\n\n/**\n * patch Redux store for React\n *\n * @example\n * import { createStore } from 'redux';\n * import { patchStore } from 'reactive-react-redux';\n *\n * const reducer = ...;\n * const store = patchStore(createStore(reducer));\n */\nexport const patchStore = >(\n store: Store,\n) => {\n const mutableSource = createMutableSource(store, () => store.getState());\n (store as PatchedStore).mutableSource = mutableSource;\n return store as PatchedStore;\n};\n\nexport const subscribe = >(\n store: Store,\n callback: () => void,\n) => {\n const unsubscribe = store.subscribe(callback);\n return unsubscribe;\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useMemo,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\nimport {\n createDeepProxy,\n isDeepChanged,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED,\n MODE_IGNORE_REF_EQUALITY,\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP,\n} from 'proxy-compare';\n\nimport { PatchedStore, subscribe } from './patchStore';\nimport { useAffectedDebugValue } from './utils';\n\nconst MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED = 0;\nconst MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED = (\n MODE_ASSUME_UNCHANGED_IF_UNAFFECTED | MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP\n);\nconst MODE_MUTABLE_ROOT_STATE = MODE_IGNORE_REF_EQUALITY; // only for root\nconst MODE_DEFAULT = MODE_ASSUME_UNCHANGED_IF_UNAFFECTED; // only for root\n\ntype Opts = any; // TODO types\n\n/**\n * useTrackedState hook\n *\n * It return the Redux state wrapped by Proxy,\n * and the state prperty access is tracked.\n * It will only re-render if accessed properties are changed.\n *\n * @example\n * import { useTrackedState } from 'reactive-react-redux';\n *\n * const Component = () => {\n * const state = useTrackedState(store);\n * ...\n * };\n */\nexport const useTrackedState = >(\n patchedStore: PatchedStore,\n opts: Opts = {},\n) => {\n const { mutableSource } = patchedStore;\n const affected = new WeakMap();\n const deepChangedMode = (\n /* eslint-disable no-nested-ternary, indent, no-multi-spaces */\n opts.unstable_forceUpdateForStateChange ? MODE_ALWAYS_ASSUME_CHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreIntermediateObjectUsage ? MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED\n : opts.unstable_ignoreStateEquality ? MODE_MUTABLE_ROOT_STATE\n : /* default */ MODE_DEFAULT\n /* eslint-enable no-nested-ternary, indent, no-multi-spaces */\n );\n const getSnapshot = useMemo(() => {\n let prevState: State | null = null;\n const deepChangedCache = new WeakMap();\n return (store: Store) => {\n const nextState = store.getState();\n if (prevState !== null && prevState !== nextState && !isDeepChanged(\n prevState,\n nextState,\n affected,\n deepChangedCache,\n deepChangedMode,\n )) {\n // not changed\n return prevState;\n }\n prevState = nextState;\n return nextState;\n };\n }, [affected, deepChangedMode]);\n const state: State = useMutableSource(mutableSource, getSnapshot, subscribe);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useAffectedDebugValue(state, affected);\n }\n const proxyCache = useMemo(() => new WeakMap(), []); // per-hook proxyCache\n return createDeepProxy(state, affected, proxyCache);\n};\n","import { ComponentProps, createElement, memo as reactMemo } from 'react';\nimport { trackMemo } from 'proxy-compare';\n\n/**\n * memo\n *\n * Using `React.memo` with tracked state is not compatible,\n * because `React.memo` stops state access, thus no tracking occurs.\n * This is a special memo to be used instead of `React.memo` with tracking support.\n *\n * @example\n * import { memo } from 'reactive-react-redux';\n *\n * const ChildComponent = memo(({ obj1, obj2 }) => {\n * // ...\n * });\n */\nexport const memo = (\n Component: Parameters[0],\n areEqual?: Parameters[1],\n) => {\n const WrappedComponent = (props: ComponentProps) => {\n Object.values(props).forEach(trackMemo);\n return createElement(Component, props);\n };\n return reactMemo(WrappedComponent, areEqual);\n};\n","/* eslint-disable @typescript-eslint/ban-ts-ignore */\n\nimport {\n useCallback,\n // @ts-ignore\n useMutableSource,\n} from 'react';\nimport {\n Action as ReduxAction,\n Store,\n} from 'redux';\n\nimport { PatchedStore, subscribe } from './patchStore';\n\n/**\n * useSelector hook\n *\n * selector has to be stable. Either define it outside render\n * or use useCallback if selector uses props.\n *\n * @example\n * import { useCallback } from 'react';\n * import { useSelector } from 'reactive-react-redux';\n *\n * const Component = ({ count }) => {\n * const isBigger = useSelector(store, useCallack(state => state.count > count, [count]));\n * ...\n * };\n */\nexport const useSelector = , Selected>(\n patchedStore: PatchedStore,\n selector: (state: State) => Selected,\n) => {\n const { mutableSource } = patchedStore;\n const getSnapshot = useCallback((store: Store) => (\n selector(store.getState())\n ), [selector]);\n const selected: Selected = useMutableSource(mutableSource, getSnapshot, subscribe);\n return selected;\n};\n","import {\n useEffect,\n useRef,\n useDebugValue,\n} from 'react';\n\nconst affectedToPathList = (\n state: State,\n affected: WeakMap>,\n) => {\n const list: string[][] = [];\n const walk = (obj: unknown, path?: string[]) => {\n const used = affected.get(obj as object);\n if (used) {\n used.forEach((key) => {\n walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]);\n });\n } else if (path) {\n list.push(path);\n }\n };\n walk(state);\n return list;\n};\n\nexport const useAffectedDebugValue = (\n state: State,\n affected: WeakMap>,\n) => {\n const pathList = useRef();\n useEffect(() => {\n pathList.current = affectedToPathList(state, affected);\n });\n useDebugValue(pathList.current);\n};\n"],"names":["subscribe","store","callback","MODE_ALWAYS_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED","MODE_ASSUME_UNCHANGED_IF_UNAFFECTED_IN_DEEP","MODE_MUTABLE_ROOT_STATE","MODE_IGNORE_REF_EQUALITY","MODE_DEFAULT","Component","areEqual","reactMemo","props","Object","values","forEach","trackMemo","createElement","mutableSource","createMutableSource","getState","patchedStore","selector","getSnapshot","useCallback","useMutableSource","opts","affected","WeakMap","deepChangedMode","unstable_forceUpdateForStateChange","unstable_ignoreIntermediateObjectUsage","unstable_ignoreStateEquality","useMemo","prevState","deepChangedCache","nextState","isDeepChanged","state","process","env","NODE_ENV","pathList","useRef","useEffect","current","list","walk","obj","path","used","get","key","push","affectedToPathList","useDebugValue","useAffectedDebugValue","proxyCache","createDeepProxy"],"mappings":"mSAiCaA,EAAY,SACvBC,EACAC,GAGA,OADoBD,EAAMD,UAAUE,ICdhCC,EACJC,sCAAsCC,8CAElCC,EAA0BC,2BAC1BC,EAAeJ,uJCVD,SAClBK,EACAC,GAMA,OAAOC,OAJkB,SAACC,GAExB,OADAC,OAAOC,OAAOF,GAAOG,QAAQC,aACtBC,gBAAcR,EAAWG,IAECF,iBFAX,SACxBT,GAEA,IAAMiB,EAAgBC,sBAAoBlB,EAAO,kBAAMA,EAAMmB,aAE7D,OADCnB,EAAsCiB,cAAgBA,EAChDjB,iBGDkB,SACzBoB,EACAC,OAEQJ,EAAkBG,EAAlBH,cACFK,EAAcC,cAAY,SAACvB,UAC/BqB,EAASrB,EAAMmB,aACd,CAACE,IAEJ,OAD2BG,mBAAiBP,EAAeK,EAAavB,sBFS3C,SAC7BqB,EACAK,YAAAA,IAAAA,EAAa,QAELR,EAAkBG,EAAlBH,cACFS,EAAW,IAAIC,QACfC,EAEFH,EAAKI,mCAhCsC,EAiC3CJ,EAAKK,uCAAyC5B,EAC9CuB,EAAKM,6BAAyC1B,EACAE,EAG5Ce,EAAcU,UAAQ,WAC1B,IAAIC,EAA0B,KACxBC,EAAmB,IAAIP,QAC7B,gBAAQ3B,GACN,IAAMmC,EAAYnC,EAAMmB,WACxB,OAAkB,OAAdc,GAAsBA,IAAcE,GAAcC,gBACpDH,EACAE,EACAT,EACAQ,EACAN,IAKFK,EAAYE,EACLA,GAHEF,IAKV,CAACP,EAAUE,IACRS,EAAeb,mBAAiBP,EAAeK,EAAavB,GACrC,eAAzBuC,QAAQC,IAAIC,UGvDmB,SACnCH,EACAX,GAEA,IAAMe,EAAWC,WACjBC,YAAU,WACRF,EAASG,QAzBc,SACzBP,EACAX,GAEA,IAAMmB,EAAmB,GAYzB,OAXa,SAAPC,EAAQC,EAAcC,GAC1B,IAAMC,EAAOvB,EAASwB,IAAIH,GACtBE,EACFA,EAAKnC,QAAQ,SAACqC,GACZL,EAAMC,EAAgCI,GAAMH,YAAWA,GAAMG,IAAO,CAACA,MAE9DH,GACTH,EAAKO,KAAKJ,GAGdF,CAAKT,GACEQ,EAScQ,CAAmBhB,EAAOX,KAE/C4B,gBAAcb,EAASG,SHiDrBW,CAAsBlB,EAAOX,GAE/B,IAAM8B,EAAaxB,UAAQ,sBAAUL,SAAW,IAChD,OAAO8B,kBAAgBpB,EAAOX,EAAU8B"} \ No newline at end of file diff --git a/dist/src/index.d.ts b/dist/src/index.d.ts deleted file mode 100644 index d81706e..0000000 --- a/dist/src/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type { PatchedStore } from './patchStore'; -export { patchStore } from './patchStore'; -export { useSelector } from './useSelector'; -export { useTrackedState } from './useTrackedState'; -export { memo } from './memo'; -export { getUntrackedObject } from 'proxy-compare'; diff --git a/dist/src/memo.d.ts b/dist/src/memo.d.ts deleted file mode 100644 index 0faf06b..0000000 --- a/dist/src/memo.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// -/** - * memo - * - * Using `React.memo` with tracked state is not compatible, - * because `React.memo` stops state access, thus no tracking occurs. - * This is a special memo to be used instead of `React.memo` with tracking support. - * - * @example - * import { memo } from 'reactive-react-redux'; - * - * const ChildComponent = memo(({ obj1, obj2 }) => { - * // ... - * }); - */ -export declare const memo: (Component: import("react").ComponentType, areEqual?: ((prevProps: Readonly, nextProps: Readonly) => boolean) | undefined) => import("react").MemoExoticComponent<(props: any) => import("react").ReactElement import("react").ReactElement import("react").Component)> | null) | (new (props: any) => import("react").Component)>>; diff --git a/dist/src/patchStore.d.ts b/dist/src/patchStore.d.ts deleted file mode 100644 index 00d77bd..0000000 --- a/dist/src/patchStore.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Action as ReduxAction, Store } from 'redux'; -export declare type PatchedStore> = { - mutableSource: any; -} & Store; -/** - * patch Redux store for React - * - * @example - * import { createStore } from 'redux'; - * import { patchStore } from 'reactive-react-redux'; - * - * const reducer = ...; - * const store = patchStore(createStore(reducer)); - */ -export declare const patchStore: >(store: Store) => PatchedStore; -export declare const subscribe: >(store: Store, callback: () => void) => import("redux").Unsubscribe; diff --git a/dist/src/useSelector.d.ts b/dist/src/useSelector.d.ts deleted file mode 100644 index c95c5d3..0000000 --- a/dist/src/useSelector.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Action as ReduxAction } from 'redux'; -import { PatchedStore } from './patchStore'; -/** - * useSelector hook - * - * selector has to be stable. Either define it outside render - * or use useCallback if selector uses props. - * - * @example - * import { useCallback } from 'react'; - * import { useSelector } from 'reactive-react-redux'; - * - * const Component = ({ count }) => { - * const isBigger = useSelector(store, useCallack(state => state.count > count, [count])); - * ... - * }; - */ -export declare const useSelector: , Selected>(patchedStore: PatchedStore, selector: (state: State) => Selected) => Selected; diff --git a/dist/src/useTrackedState.d.ts b/dist/src/useTrackedState.d.ts deleted file mode 100644 index cf594f1..0000000 --- a/dist/src/useTrackedState.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Action as ReduxAction } from 'redux'; -import { PatchedStore } from './patchStore'; -/** - * useTrackedState hook - * - * It return the Redux state wrapped by Proxy, - * and the state prperty access is tracked. - * It will only re-render if accessed properties are changed. - * - * @example - * import { useTrackedState } from 'reactive-react-redux'; - * - * const Component = () => { - * const state = useTrackedState(store); - * ... - * }; - */ -export declare const useTrackedState: >(patchedStore: PatchedStore, opts?: any) => State; diff --git a/dist/src/utils.d.ts b/dist/src/utils.d.ts deleted file mode 100644 index 2966a19..0000000 --- a/dist/src/utils.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare const useAffectedDebugValue: (state: State, affected: WeakMap>) => void; From 6a32f0e4b6065829937454ec2c2f951a9efd6f15 Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 4 Jul 2020 08:00:44 +0900 Subject: [PATCH 16/22] github actions instead of travis --- .github/workflows/cd.yml | 44 ++++++++++++++++++++++++++++++++++++++++ .github/workflows/ci.yml | 34 +++++++++++++++++++++++++++++++ .travis.yml | 4 ---- 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..23feaa3 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,44 @@ +name: CD + +on: + push: + tags: + - v* + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: '12.x' + registry-url: 'https://registry.npmjs.org' + + - name: Get yarn cache + id: yarn-cache + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache dependencies + uses: actions/cache@v1 + with: + path: ${{ steps.yarn-cache.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install + + - name: Test + run: yarn test + + - name: Compile + run: yarn run compile + + - name: Publish + run: npm publish + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..eeb5e68 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,34 @@ +name: CI + +on: + push: + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: '12.x' + + - name: Get yarn cache + id: yarn-cache + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Cache dependencies + uses: actions/cache@v1 + with: + path: ${{ steps.yarn-cache.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install + + - name: Test + run: yarn test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 2bc4f39..0000000 --- a/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 10 - - 12 From ddea43ae4033b08e623dbb66caf7521bc28a1746 Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 4 Jul 2020 08:02:29 +0900 Subject: [PATCH 17/22] update badges --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 17c4bb9..9d05676 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # reactive-react-redux -[![Build Status](https://travis-ci.com/dai-shi/reactive-react-redux.svg?branch=master)](https://travis-ci.com/dai-shi/reactive-react-redux) -[![npm version](https://badge.fury.io/js/reactive-react-redux.svg)](https://badge.fury.io/js/reactive-react-redux) -[![bundle size](https://badgen.net/bundlephobia/minzip/reactive-react-redux)](https://bundlephobia.com/result?p=reactive-react-redux) +[![CI](https://img.shields.io/github/workflow/status/dai-shi/reactive-react-redux/CI)](https://github.com/dai-shi/reactive-react-redux/actions?query=workflow%3ACI) +[![npm](https://img.shields.io/npm/v/reactive-react-redux)](https://www.npmjs.com/package/reactive-react-redux) +[![size](https://img.shields.io/bundlephobia/minzip/reactive-react-redux)](https://bundlephobia.com/result?p=reactive-react-redux) React Redux binding with React Hooks and Proxy From 3ef2de20af88bb2683f95a00be77f7372af5454e Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 4 Jul 2020 08:11:02 +0900 Subject: [PATCH 18/22] fix test --- .eslintrc.json | 1 + examples/09_thunk/src/Person.tsx | 2 +- src/patchStore.ts | 2 +- src/useSelector.ts | 2 +- src/useTrackedState.ts | 2 +- src/utils.ts | 10 ++++++---- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 455c687..0cbb8dc 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -22,6 +22,7 @@ "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": ["error", { "additionalHooks": "useIsomorphicLayoutEffect" }], "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-explicit-any": "off", "react/jsx-filename-extension": ["error", { "extensions": [".js", ".tsx"] }], "react/prop-types": "off", diff --git a/examples/09_thunk/src/Person.tsx b/examples/09_thunk/src/Person.tsx index 1cfbe15..d51a03a 100644 --- a/examples/09_thunk/src/Person.tsx +++ b/examples/09_thunk/src/Person.tsx @@ -25,7 +25,7 @@ const Person = () => { const state = useTrackedState(); const dispatch = useDispatch(); const setRandomFirstName = () => { - const dispatchForThunk = dispatch as ThunkDispatch; + const dispatchForThunk = dispatch as ThunkDispatch, Action>; dispatchForThunk(async (d: Dispatch) => { d({ firstName: 'Loading...', type: 'setFirstName' }); try { diff --git a/src/patchStore.ts b/src/patchStore.ts index 215fbc2..ed17b34 100644 --- a/src/patchStore.ts +++ b/src/patchStore.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/ban-ts-ignore */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import { // @ts-ignore diff --git a/src/useSelector.ts b/src/useSelector.ts index a2b2e0e..422c201 100644 --- a/src/useSelector.ts +++ b/src/useSelector.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/ban-ts-ignore */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import { useCallback, diff --git a/src/useTrackedState.ts b/src/useTrackedState.ts index 0449464..33a6b86 100644 --- a/src/useTrackedState.ts +++ b/src/useTrackedState.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/ban-ts-ignore */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import { useMemo, diff --git a/src/utils.ts b/src/utils.ts index 728cd8e..7e4aa25 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -4,16 +4,18 @@ import { useDebugValue, } from 'react'; +type Obj = Record; + const affectedToPathList = ( state: State, - affected: WeakMap>, + affected: WeakMap>, ) => { const list: string[][] = []; const walk = (obj: unknown, path?: string[]) => { - const used = affected.get(obj as object); + const used = affected.get(obj as Obj); if (used) { used.forEach((key) => { - walk((obj as { [k: string]: object })[key], path ? [...path, key] : [key]); + walk((obj as { [k: string]: Obj })[key], path ? [...path, key] : [key]); }); } else if (path) { list.push(path); @@ -25,7 +27,7 @@ const affectedToPathList = ( export const useAffectedDebugValue = ( state: State, - affected: WeakMap>, + affected: WeakMap>, ) => { const pathList = useRef(); useEffect(() => { From e3d50a8c34604b08dfca7bccdb2f1948ff416ce8 Mon Sep 17 00:00:00 2001 From: daishi Date: Sat, 4 Jul 2020 08:15:10 +0900 Subject: [PATCH 19/22] v5.0.0-alpha.4 modern build --- package.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9a77d6e..a7bdf90 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "reactive-react-redux", "description": "React Redux binding with React Hooks and Proxy", - "version": "5.0.0-alpha.3", + "version": "5.0.0-alpha.4", "publishConfig": { "tag": "next" }, @@ -11,9 +11,8 @@ "url": "https://github.com/dai-shi/reactive-react-redux.git" }, "source": "./src/index.ts", - "main": "./dist/index.js", - "module": "./dist/index.esm.js", - "browser": "./dist/index.umd.js", + "main": "./dist/index.umd.js", + "module": "./dist/index.modern.js", "types": "./dist/src/index.d.ts", "sideEffects": false, "files": [ @@ -21,7 +20,7 @@ "dist" ], "scripts": { - "compile": "microbundle build --format cjs,es,umd", + "compile": "microbundle build -f modern,umd", "test": "run-s eslint tsc-test jest", "eslint": "eslint --ext .js,.ts,.tsx --ignore-pattern dist .", "jest": "jest --preset ts-jest/presets/js-with-ts", From a5c9e94c1290b4630326204c24ddd98c2eabbbd8 Mon Sep 17 00:00:00 2001 From: daishi Date: Tue, 4 Aug 2020 21:06:13 +0900 Subject: [PATCH 20/22] follow changes in react experimental --- src/patchStore.ts | 2 +- src/useSelector.ts | 2 +- src/useTrackedState.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/patchStore.ts b/src/patchStore.ts index ed17b34..dc7f9ab 100644 --- a/src/patchStore.ts +++ b/src/patchStore.ts @@ -2,7 +2,7 @@ import { // @ts-ignore - createMutableSource, + unstable_createMutableSource as createMutableSource, } from 'react'; import { Action as ReduxAction, diff --git a/src/useSelector.ts b/src/useSelector.ts index 422c201..30f7382 100644 --- a/src/useSelector.ts +++ b/src/useSelector.ts @@ -3,7 +3,7 @@ import { useCallback, // @ts-ignore - useMutableSource, + unstable_useMutableSource as useMutableSource, } from 'react'; import { Action as ReduxAction, diff --git a/src/useTrackedState.ts b/src/useTrackedState.ts index 33a6b86..a86c3ae 100644 --- a/src/useTrackedState.ts +++ b/src/useTrackedState.ts @@ -3,7 +3,7 @@ import { useMemo, // @ts-ignore - useMutableSource, + unstable_useMutableSource as useMutableSource, } from 'react'; import { Action as ReduxAction, From 3c59ed31143003dfa480251a1e345aafa65f8e9e Mon Sep 17 00:00:00 2001 From: daishi Date: Tue, 4 Aug 2020 21:10:30 +0900 Subject: [PATCH 21/22] v5.0.0-alpha.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e2dd34f..ebbfea2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "reactive-react-redux", "description": "React Redux binding with React Hooks and Proxy", - "version": "5.0.0-alpha.4", + "version": "5.0.0-alpha.5", "publishConfig": { "tag": "next" }, From 003f7166cfcc3d0b9883294a14f582f1b3840f8f Mon Sep 17 00:00:00 2001 From: daishi Date: Sun, 1 Nov 2020 23:44:57 +0900 Subject: [PATCH 22/22] update proxy-compare v1.0.3 and simplify utils --- package.json | 2 +- src/utils.ts | 24 +++--------------------- yarn.lock | 8 ++++---- 3 files changed, 8 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index ebbfea2..817f77d 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ ], "license": "MIT", "dependencies": { - "proxy-compare": "^1.0.2" + "proxy-compare": "^1.0.3" }, "devDependencies": { "@testing-library/react": "^10.4.7", diff --git a/src/utils.ts b/src/utils.ts index 7e4aa25..47d0414 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -3,33 +3,15 @@ import { useRef, useDebugValue, } from 'react'; +import { affectedToPathList } from 'proxy-compare'; type Obj = Record; -const affectedToPathList = ( - state: State, - affected: WeakMap>, -) => { - const list: string[][] = []; - const walk = (obj: unknown, path?: string[]) => { - const used = affected.get(obj as Obj); - if (used) { - used.forEach((key) => { - walk((obj as { [k: string]: Obj })[key], path ? [...path, key] : [key]); - }); - } else if (path) { - list.push(path); - } - }; - walk(state); - return list; -}; - export const useAffectedDebugValue = ( state: State, - affected: WeakMap>, + affected: WeakMap, ) => { - const pathList = useRef(); + const pathList = useRef<(string | number | symbol)[][]>(); useEffect(() => { pathList.current = affectedToPathList(state, affected); }); diff --git a/yarn.lock b/yarn.lock index c498234..4e6905d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8353,10 +8353,10 @@ proxy-addr@~2.0.5: forwarded "~0.1.2" ipaddr.js "1.9.1" -proxy-compare@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-1.0.2.tgz#2c7babcd5ca1c2b85fb86448a19eb5613d80d62d" - integrity sha512-ykdqgpT1yDcDT9tQgrf6SN6m2ZlLXW73xLz2aNg43356fpDikw68OCOR/ydrGsYPWUanijaRe7VBmfoBjVNseg== +proxy-compare@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-1.0.3.tgz#2055a09bc7cdca75087f3f103d447bdd80737edc" + integrity sha512-1xLvXh4d3C1pAN89Sn7QpJdFez/agTjLuPmQ9pdHULjnjTd8ewvx+2GEmekCr7hlYQJ9cKyk2ZuMSbqiwsbl6w== prr@~1.0.1: version "1.0.1"