From 561e26cc3c91f2ffd9a429b0ea89f12dc3c93d75 Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 4 Dec 2019 19:41:32 -0600 Subject: [PATCH 01/16] Add mobx and remove redux shows files and add mobx ShowsStore --- craco.config.js | 6 +- package.json | 3 + src/RootStore.ts | 5 + src/index.tsx | 8 +- src/models/IStore.ts | 2 - src/selectors/episodes/EpisodesSelector.ts | 38 ----- src/stores/rootReducer.ts | 2 - src/stores/shows/ShowsAction.ts | 54 ------- src/stores/shows/ShowsEffect.ts | 50 ------- src/stores/shows/ShowsReducer.ts | 37 ----- src/stores/shows/ShowsStore.ts | 102 +++++++++++++ .../shows/computed}/IEpisodeTable.ts | 0 .../shows/computed}/IEpisodeTableRow.ts | 0 src/views/App.tsx | 2 +- src/views/about-page/AboutPage.tsx | 39 ++--- src/views/episodes-page/EpisodesPage.tsx | 37 ++--- .../episodes-table-row/EpisodesTableRow.tsx | 2 +- .../episodes-table/EpisodesTable.tsx | 4 +- src/views/home-page/HomePage.tsx | 22 +-- .../home-page/components/actors/Actors.tsx | 28 ++-- .../components/main-overview/MainOverview.tsx | 29 ++-- tsconfig.json | 3 +- yarn.lock | 140 ++++++++++++++++++ 23 files changed, 315 insertions(+), 298 deletions(-) create mode 100644 src/RootStore.ts delete mode 100644 src/selectors/episodes/EpisodesSelector.ts delete mode 100644 src/stores/shows/ShowsAction.ts delete mode 100644 src/stores/shows/ShowsEffect.ts delete mode 100644 src/stores/shows/ShowsReducer.ts create mode 100644 src/stores/shows/ShowsStore.ts rename src/{selectors/episodes/models => stores/shows/computed}/IEpisodeTable.ts (100%) rename src/{selectors/episodes/models => stores/shows/computed}/IEpisodeTableRow.ts (100%) diff --git a/craco.config.js b/craco.config.js index 0a8fd24..a63403b 100644 --- a/craco.config.js +++ b/craco.config.js @@ -4,7 +4,11 @@ module.exports = function({ env, paths }) { return { babel: { presets: [], - plugins: ['@babel/plugin-proposal-optional-chaining', '@babel/plugin-proposal-nullish-coalescing-operator'], + plugins: [ + '@babel/plugin-proposal-optional-chaining', + '@babel/plugin-proposal-nullish-coalescing-operator', + ['@babel/plugin-proposal-decorators', { legacy: true }], + ], // loaderOptions: { /* Any babel-loader configuration options: https://github.com/babel/babel-loader. */ }, // loaderOptions: (babelLoaderOptions, { env, paths }) => { return babelLoaderOptions; } }, diff --git a/package.json b/package.json index 71dde03..9603414 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,8 @@ "dayjs": "1.8.17", "history": "4.10.1", "lodash.groupby": "4.6.0", + "mobx": "5.15.0", + "mobx-react": "6.1.4", "react": "16.11.0", "react-dom": "16.11.0", "react-redux": "7.1.3", @@ -63,6 +65,7 @@ "uuid": "3.3.3" }, "devDependencies": { + "@babel/plugin-proposal-decorators": "7.7.4", "@babel/plugin-proposal-nullish-coalescing-operator": "7.4.4", "@babel/plugin-proposal-optional-chaining": "7.6.0", "@craco/craco": "5.6.1", diff --git a/src/RootStore.ts b/src/RootStore.ts new file mode 100644 index 0000000..6b5c455 --- /dev/null +++ b/src/RootStore.ts @@ -0,0 +1,5 @@ +import ShowsStore from './stores/shows/ShowsStore'; + +export default class RootStore { + userStore: ShowsStore = new ShowsStore(this); +} diff --git a/src/index.tsx b/src/index.tsx index 0a1f2e9..21986b1 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -9,18 +9,24 @@ import IStore from './models/IStore'; import rootStore from './stores/rootStore'; import App from './views/App'; import environment from 'environment'; +import RootStore from './RootStore'; +import { Provider as MobxProvider } from 'mobx-react'; (async (window: Window): Promise => { const initialState: Partial = {}; const history: History = createBrowserHistory({ basename: environment.route.baseRoute }); const store: Store = rootStore(initialState, history); + const rootStoreMobx = new RootStore(); const rootEl: HTMLElement | null = document.getElementById('root'); const render = (Component: typeof App, el: HTMLElement | null): void => { ReactDOM.render( - + + + + , , el ); diff --git a/src/models/IStore.ts b/src/models/IStore.ts index d8f280e..84591fc 100644 --- a/src/models/IStore.ts +++ b/src/models/IStore.ts @@ -1,5 +1,4 @@ import { RouterState } from 'connected-react-router'; -import IShowsState from '../stores/shows/models/IShowsState'; import IRequestingState from '../stores/requesting/models/IRequestingState'; import IErrorState from '../stores/error/models/IErrorState'; import IToastsState from '../stores/toasts/models/IToastsState'; @@ -8,6 +7,5 @@ export default interface IStore { readonly error: IErrorState; readonly requesting: IRequestingState; readonly router: RouterState; - readonly shows: IShowsState; readonly toasts: IToastsState; } diff --git a/src/selectors/episodes/EpisodesSelector.ts b/src/selectors/episodes/EpisodesSelector.ts deleted file mode 100644 index 6567e46..0000000 --- a/src/selectors/episodes/EpisodesSelector.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { createSelector, Selector } from 'reselect'; -import IStore from '../../models/IStore'; -import EpisodeModel from '../../stores/shows/models/episodes/EpisodeModel'; -import groupBy from 'lodash.groupby'; -import dayjs from 'dayjs'; -import IEpisodeTable from './models/IEpisodeTable'; -import IEpisodeTableRow from './models/IEpisodeTableRow'; - -export class EpisodesSelector { - public static selectEpisodes(episodes: EpisodeModel[]): IEpisodeTable[] { - const seasons: { [season: string]: EpisodeModel[] } = groupBy(episodes, 'season'); - - return Object.entries(seasons).map( - ([season, models]: [string, EpisodeModel[]]): IEpisodeTable => { - return { - title: `Season ${season}`, - rows: EpisodesSelector._createTableRows(models), - }; - } - ); - } - - private static _createTableRows(models: EpisodeModel[]): IEpisodeTableRow[] { - return models.map( - (model: EpisodeModel): IEpisodeTableRow => ({ - episode: model.number, - name: model.name, - date: dayjs(model.airdate).format('MMM D, YYYY'), - image: model.image.medium, - }) - ); - } -} - -export const selectEpisodes: Selector = createSelector( - (state: IStore) => state.shows.episodes, - EpisodesSelector.selectEpisodes -); diff --git a/src/stores/rootReducer.ts b/src/stores/rootReducer.ts index bcc69f4..4257952 100644 --- a/src/stores/rootReducer.ts +++ b/src/stores/rootReducer.ts @@ -2,7 +2,6 @@ import { combineReducers, Reducer, ReducersMapObject } from 'redux'; import { connectRouter } from 'connected-react-router'; import { History } from 'history'; import IStore from '../models/IStore'; -import ShowsReducer from './shows/ShowsReducer'; import RequestingReducer from './requesting/RequestingReducer'; import ErrorReducer from './error/ErrorReducer'; import ToastsReducer from './toasts/ToastsReducer'; @@ -12,7 +11,6 @@ export default (history: History): Reducer => { error: ErrorReducer.reducer, requesting: RequestingReducer.reducer, router: connectRouter(history) as any, - shows: new ShowsReducer().reducer, toasts: new ToastsReducer().reducer, }; diff --git a/src/stores/shows/ShowsAction.ts b/src/stores/shows/ShowsAction.ts deleted file mode 100644 index 81020fc..0000000 --- a/src/stores/shows/ShowsAction.ts +++ /dev/null @@ -1,54 +0,0 @@ -import ShowsEffect from './ShowsEffect'; -import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; -import ActionUtility from '../../utilities/ActionUtility'; -import { ReduxDispatch } from '../../models/ReduxProps'; -import IStore from '../../models/IStore'; -import ShowModel from './models/shows/ShowModel'; -import EpisodeModel from './models/episodes/EpisodeModel'; -import CastModel from './models/cast/CastModel'; - -type ActionUnion = undefined | HttpErrorResponseModel | ShowModel | EpisodeModel[] | CastModel[]; - -export default class ShowsAction { - public static readonly REQUEST_SHOW: string = 'ShowsAction.REQUEST_SHOW'; - public static readonly REQUEST_SHOW_FINISHED: string = 'ShowsAction.REQUEST_SHOW_FINISHED'; - - public static readonly REQUEST_EPISODES: string = 'ShowsAction.REQUEST_EPISODES'; - public static readonly REQUEST_EPISODES_FINISHED: string = 'ShowsAction.REQUEST_EPISODES_FINISHED'; - - public static readonly REQUEST_CAST: string = 'ShowsAction.REQUEST_CAST'; - public static readonly REQUEST_CAST_FINISHED: string = 'ShowsAction.REQUEST_CAST_FINISHED'; - - public static readonly REQUEST_ERROR: string = 'ShowsAction.REQUEST_ERROR'; - public static readonly REQUEST_ERROR_FINISHED: string = 'ShowsAction.REQUEST_ERROR_FINISHED'; - - public static requestShow(): any { - return async (dispatch: ReduxDispatch, getState: () => IStore): Promise => { - const showId: string = getState().shows.currentShowId; - - await ActionUtility.createThunkEffect(dispatch, ShowsAction.REQUEST_SHOW, ShowsEffect.requestShow, showId); - }; - } - - public static requestEpisodes(): any { - return async (dispatch: ReduxDispatch, getState: () => IStore): Promise => { - const showId: string = getState().shows.currentShowId; - - await ActionUtility.createThunkEffect(dispatch, ShowsAction.REQUEST_EPISODES, ShowsEffect.requestEpisodes, showId); - }; - } - - public static requestCast(): any { - return async (dispatch: ReduxDispatch, getState: () => IStore): Promise => { - const showId: string = getState().shows.currentShowId; - - await ActionUtility.createThunkEffect(dispatch, ShowsAction.REQUEST_CAST, ShowsEffect.requestCast, showId); - }; - } - - public static requestError(): any { - return async (dispatch: ReduxDispatch, getState: () => IStore): Promise => { - await ActionUtility.createThunkEffect(dispatch, ShowsAction.REQUEST_ERROR, ShowsEffect.requestError); - }; - } -} diff --git a/src/stores/shows/ShowsEffect.ts b/src/stores/shows/ShowsEffect.ts deleted file mode 100644 index e045463..0000000 --- a/src/stores/shows/ShowsEffect.ts +++ /dev/null @@ -1,50 +0,0 @@ -import environment from 'environment'; -import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; -import HttpUtility from '../../utilities/HttpUtility'; -import ShowModel from './models/shows/ShowModel'; -import EpisodeModel from './models/episodes/EpisodeModel'; -import CastModel from './models/cast/CastModel'; -import { AxiosResponse } from 'axios'; -import EffectUtility from '../../utilities/EffectUtility'; - -export default class ShowsEffect { - public static async requestShow(showId: string): Promise { - const endpoint: string = environment.api.shows.replace(':showId', showId); - - return EffectUtility.getToModel(ShowModel, endpoint); - } - - public static async requestEpisodes(showId: string): Promise { - const endpoint: string = environment.api.episodes.replace(':showId', showId); - - return EffectUtility.getToModel(EpisodeModel, endpoint); - } - - public static async requestCast(showId: string): Promise { - const endpoint: string = environment.api.cast.replace(':showId', showId); - - // Below is just to show you what the above "requestEpisodes" method is doing with "EffectUtility.getToModel". - // In your application you can change this to match the "requestEpisodes" method. - const response: AxiosResponse | HttpErrorResponseModel = await HttpUtility.get(endpoint); - - if (response instanceof HttpErrorResponseModel) { - return response; - } - - return response.data.map((json: Partial) => new CastModel(json)); - } - - /** - * This is only to trigger an error api response so we can use it for an example in the AboutPage - */ - public static async requestError(): Promise { - const endpoint: string = environment.api.errorExample; - const response: AxiosResponse | HttpErrorResponseModel = await HttpUtility.get(endpoint); - - if (response instanceof HttpErrorResponseModel) { - return response; - } - - return response.data; - } -} diff --git a/src/stores/shows/ShowsReducer.ts b/src/stores/shows/ShowsReducer.ts deleted file mode 100644 index ad4b95d..0000000 --- a/src/stores/shows/ShowsReducer.ts +++ /dev/null @@ -1,37 +0,0 @@ -import BaseReducer from '../../utilities/BaseReducer'; -import IShowsState from './models/IShowsState'; -import ShowsAction from './ShowsAction'; -import IAction from '../../models/IAction'; -import ShowModel from './models/shows/ShowModel'; -import EpisodeModel from './models/episodes/EpisodeModel'; -import CastModel from './models/cast/CastModel'; - -export default class ShowsReducer extends BaseReducer { - public readonly initialState: IShowsState = { - currentShowId: '74', - show: null, - episodes: [], - actors: [], - }; - - public [ShowsAction.REQUEST_SHOW_FINISHED](state: IShowsState, action: IAction): IShowsState { - return { - ...state, - show: action.payload!, - }; - } - - public [ShowsAction.REQUEST_EPISODES_FINISHED](state: IShowsState, action: IAction): IShowsState { - return { - ...state, - episodes: action.payload!, - }; - } - - public [ShowsAction.REQUEST_CAST_FINISHED](state: IShowsState, action: IAction): IShowsState { - return { - ...state, - actors: action.payload!, - }; - } -} diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts new file mode 100644 index 0000000..f320947 --- /dev/null +++ b/src/stores/shows/ShowsStore.ts @@ -0,0 +1,102 @@ +import { action, computed, observable } from 'mobx'; +import RootStore from '../../RootStore'; +import CastModel from './models/cast/CastModel'; +import ShowModel from './models/shows/ShowModel'; +import EpisodeModel from './models/episodes/EpisodeModel'; +import environment from 'environment'; +import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; +import EffectUtility from '../../utilities/EffectUtility'; +import HttpUtility from '../../utilities/HttpUtility'; +import groupBy from 'lodash.groupby'; +import IEpisodeTable from './computed/IEpisodeTable'; +import IEpisodeTableRow from './computed/IEpisodeTableRow'; +import dayjs from 'dayjs'; + +export default class ShowsStore { + @observable currentShowId: string = '74'; + @observable show: ShowModel | null = null; + @observable episodes: EpisodeModel[] = []; + @observable actors: CastModel[] = []; + + private _rootStore: RootStore; + + constructor(rootStore: RootStore) { + this._rootStore = rootStore; + } + + @action + async requestShow() { + const endpoint = environment.api.shows.replace(':showId', this.currentShowId); + const response = await EffectUtility.getToModel(ShowModel, endpoint); + + if (response instanceof HttpErrorResponseModel) { + return response; + } + + this.show = response; + } + + @action + async requestEpisodes() { + const endpoint = environment.api.episodes.replace(':showId', this.currentShowId); + const response = await EffectUtility.getToModel(EpisodeModel, endpoint); + + if (response instanceof HttpErrorResponseModel) { + return response; + } + + this.episodes = response; + } + + @action + async requestCast() { + const endpoint = environment.api.cast.replace(':showId', this.currentShowId); + const response = await EffectUtility.getToModel(CastModel, endpoint); + + if (response instanceof HttpErrorResponseModel) { + return response; + } + + this.actors = response; + } + + /** + * This is only to trigger an error api response so we can use it for an example in the AboutPage + */ + @action + async requestError() { + const endpoint = environment.api.errorExample; + const response = await HttpUtility.get(endpoint); + + if (response instanceof HttpErrorResponseModel) { + return response; + } + + return response.data; + } + + @computed + get selectEpisodes() { + const seasons: { [season: string]: EpisodeModel[] } = groupBy(this.episodes, 'season'); + + return Object.entries(seasons).map( + ([season, models]: [string, EpisodeModel[]]): IEpisodeTable => { + return { + title: `Season ${season}`, + rows: this._createTableRows(models), + }; + } + ); + } + + private _createTableRows(models: EpisodeModel[]): IEpisodeTableRow[] { + return models.map( + (model: EpisodeModel): IEpisodeTableRow => ({ + episode: model.number, + name: model.name, + date: dayjs(model.airdate).format('MMM D, YYYY'), + image: model.image.medium, + }) + ); + } +} diff --git a/src/selectors/episodes/models/IEpisodeTable.ts b/src/stores/shows/computed/IEpisodeTable.ts similarity index 100% rename from src/selectors/episodes/models/IEpisodeTable.ts rename to src/stores/shows/computed/IEpisodeTable.ts diff --git a/src/selectors/episodes/models/IEpisodeTableRow.ts b/src/stores/shows/computed/IEpisodeTableRow.ts similarity index 100% rename from src/selectors/episodes/models/IEpisodeTableRow.ts rename to src/stores/shows/computed/IEpisodeTableRow.ts diff --git a/src/views/App.tsx b/src/views/App.tsx index 94c1901..387734d 100644 --- a/src/views/App.tsx +++ b/src/views/App.tsx @@ -24,7 +24,7 @@ export default class App extends React.Component { public render(): JSX.Element { return ( - }> + }> diff --git a/src/views/about-page/AboutPage.tsx b/src/views/about-page/AboutPage.tsx index 18f3b0b..17b8a10 100644 --- a/src/views/about-page/AboutPage.tsx +++ b/src/views/about-page/AboutPage.tsx @@ -1,52 +1,39 @@ import styles from './AboutPage.module.scss'; import React from 'react'; -import { connect } from 'react-redux'; -import IStore from '../../models/IStore'; -import { ReduxProps } from '../../models/ReduxProps'; -import { selectErrorText } from '../../selectors/error/ErrorSelector'; -import ShowsAction from '../../stores/shows/ShowsAction'; -import { selectRequesting } from '../../selectors/requesting/RequestingSelector'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; -import { Header, Message, Container } from 'semantic-ui-react'; +import { Header, Container } from 'semantic-ui-react'; +import RootStore from '../../RootStore'; +import { inject, observer } from 'mobx-react'; -interface IProps {} -interface IState {} -interface IRouteParams {} -interface IStateToProps { - readonly isRequesting: boolean; - readonly requestErrorText: string; +interface IProps { + rootStore?: RootStore; } +interface IState {} -const mapStateToProps = (state: IStore, ownProps: IProps): IStateToProps => ({ - isRequesting: selectRequesting(state, [ShowsAction.REQUEST_ERROR]), - requestErrorText: selectErrorText(state, [ShowsAction.REQUEST_ERROR_FINISHED]), -}); - -class AboutPage extends React.Component, IState> { +@inject('rootStore') +@observer +export default class AboutPage extends React.Component { public componentDidMount(): void { - this.props.dispatch(ShowsAction.requestError()); + this.props.rootStore?.userStore.requestError(); } public render(): JSX.Element { - const { isRequesting, requestErrorText } = this.props; + // const { isRequesting, requestErrorText } = this.props; return (
About
- +

This page is only to show how to handle API errors on the page. You will also notice a popup indicator with the actual error text. Below we create a custom error message.

- {requestErrorText && } + {/*{requestErrorText && }*/}
); } } - -export { AboutPage as Unconnected }; -export default connect(mapStateToProps)(AboutPage); diff --git a/src/views/episodes-page/EpisodesPage.tsx b/src/views/episodes-page/EpisodesPage.tsx index e657735..c407598 100644 --- a/src/views/episodes-page/EpisodesPage.tsx +++ b/src/views/episodes-page/EpisodesPage.tsx @@ -1,38 +1,28 @@ import React from 'react'; -import { connect } from 'react-redux'; -import IStore from '../../models/IStore'; -import ShowsAction from '../../stores/shows/ShowsAction'; -import { selectEpisodes } from '../../selectors/episodes/EpisodesSelector'; -import IEpisodeTable from '../../selectors/episodes/models/IEpisodeTable'; -import { ReduxProps } from '../../models/ReduxProps'; +import IEpisodeTable from '../../stores/shows/computed/IEpisodeTable'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; -import { selectRequesting } from '../../selectors/requesting/RequestingSelector'; import EpisodesTable from './components/episodes-table/EpisodesTable'; +import RootStore from '../../RootStore'; +import { inject, observer } from 'mobx-react'; -interface IProps {} -interface IState {} -interface IRouteParams {} -interface IStateToProps { - readonly episodeTables: IEpisodeTable[]; - readonly isRequesting: boolean; +interface IProps { + rootStore?: RootStore; } +interface IState {} -const mapStateToProps = (state: IStore, ownProps: IProps): IStateToProps => ({ - episodeTables: selectEpisodes(state), - isRequesting: selectRequesting(state, [ShowsAction.REQUEST_EPISODES]), -}); - -class EpisodesPage extends React.Component, IState> { +@inject('rootStore') +@observer +export default class EpisodesPage extends React.Component { public componentDidMount(): void { - this.props.dispatch(ShowsAction.requestEpisodes()); + this.props.rootStore?.userStore.requestEpisodes(); } public render(): JSX.Element { - const { episodeTables, isRequesting } = this.props; + const episodeTables = this.props.rootStore?.userStore!.selectEpisodes; return ( <> - + {episodeTables.map((model: IEpisodeTable) => ( ))} @@ -40,6 +30,3 @@ class EpisodesPage extends React.Component ({ - isRequesting: selectRequesting(state, [ShowsAction.REQUEST_SHOW, ShowsAction.REQUEST_CAST]), -}); -class HomePage extends React.Component, IState> { +export default class HomePage extends React.Component { public render(): JSX.Element { - const { isRequesting } = this.props; - return (
- +
@@ -41,6 +26,3 @@ class HomePage extends React.Component ({ - actors: state.shows.actors, -}); - -class Actors extends React.Component>, IState> { +@inject('rootStore') +@observer +export default class Actors extends React.Component { public componentDidMount(): void { - this.props.dispatch(ShowsAction.requestCast()); + this.props.rootStore?.userStore.requestCast(); } public render(): JSX.Element { - const { actors } = this.props; + const { actors } = this.props.rootStore?.userStore!; return ( @@ -34,6 +29,3 @@ class Actors extends React.Component ({ - show: state.shows.show, -}); - -class MainOverview extends React.Component>, IState> { +@inject('rootStore') +@observer +export default class MainOverview extends React.Component { public componentDidMount(): void { - this.props.dispatch(ShowsAction.requestShow()); + this.props.rootStore?.userStore.requestShow(); } public render(): JSX.Element | null { - const { show } = this.props; + const { show } = this.props.rootStore?.userStore!; if (!show) { return null; @@ -48,6 +42,3 @@ class MainOverview extends React.Component=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdi dependencies: minimist "0.0.8" +mobx-react-lite@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-1.5.1.tgz#8eac90985b4d2bee475dd90a0d4d903be578f154" + integrity sha512-40Gn8hFq+MuNHqCaeSo2adN4WvpWkIeSYZVJWzRzm0rbEf0BFow6Ir9IefErql0pX9q650TN1JAQXvrXxKR8Mg== + +mobx-react@6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-6.1.4.tgz#818e7991c321c05bd9b8156d94be17dad165501e" + integrity sha512-wzrJF1RflhyLh8ne4FJfMbG8ZgRFmZ62b4nbyhJzwQpAmrkSnSsAWG9mIff4ffV/Q7OU+uOYf7rXvSmiuUe4cw== + dependencies: + mobx-react-lite "^1.4.2" + +mobx@5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-5.15.0.tgz#3ef34ac4965169698eff6df72f18c2a735e8e7f8" + integrity sha512-Ax7vE32zBRgO0A3Yu12RXaFwIhBzpGQXZjRHiDvKLrqpDEijhNTSuXJ1Ci+L30BSa/Mb3by9+3nuKq15YoH5dA== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" From fda479f3770519d0d46ac9a8ea7d96fd3436fcc4 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 5 Dec 2019 10:33:29 -0600 Subject: [PATCH 02/16] add mobx-react-router, remove redux files --- package.json | 1 + src/RootStore.ts | 2 + src/index.tsx | 26 +++--- src/middlewares/errorToastMiddleware.ts | 18 ---- src/models/IAction.ts | 37 -------- src/models/IStore.ts | 11 --- src/models/ReduxProps.ts | 10 --- src/selectors/error/ErrorSelector.spec.ts | 71 --------------- src/selectors/error/ErrorSelector.ts | 69 --------------- .../requesting/RequestingSelector.spec.ts | 27 ------ .../requesting/RequestingSelector.ts | 15 ---- src/stores/error/ErrorAction.spec.ts | 26 ------ src/stores/error/ErrorAction.ts | 15 ---- src/stores/error/ErrorReducer.spec.ts | 88 ------------------- src/stores/error/ErrorReducer.ts | 76 ---------------- .../requesting/RequestingReducer.spec.ts | 40 --------- src/stores/requesting/RequestingReducer.ts | 29 ------ src/stores/rootReducer.ts | 18 ---- src/stores/rootStore.ts | 27 ++---- src/stores/shows/models/IShowsState.ts | 10 --- src/stores/toasts/ToastsAction.ts | 22 ----- src/stores/toasts/ToastsReducer.ts | 27 ------ src/typings.d.ts | 1 - src/utilities/ActionUtility.ts | 25 ------ src/utilities/BaseReducer.ts | 23 ----- src/views/App.tsx | 12 +-- .../toast-card/ToastCard.module.scss | 2 - src/views/components/toast-card/ToastCard.tsx | 52 ----------- .../components/toasts/Toasts.module.scss | 10 --- src/views/components/toasts/Toasts.tsx | 39 -------- src/views/home-page/HomePage.tsx | 5 +- yarn.lock | 5 ++ 32 files changed, 33 insertions(+), 806 deletions(-) delete mode 100644 src/middlewares/errorToastMiddleware.ts delete mode 100644 src/models/IAction.ts delete mode 100644 src/models/IStore.ts delete mode 100644 src/models/ReduxProps.ts delete mode 100644 src/selectors/error/ErrorSelector.spec.ts delete mode 100644 src/selectors/error/ErrorSelector.ts delete mode 100644 src/selectors/requesting/RequestingSelector.spec.ts delete mode 100644 src/selectors/requesting/RequestingSelector.ts delete mode 100644 src/stores/error/ErrorAction.spec.ts delete mode 100644 src/stores/error/ErrorAction.ts delete mode 100644 src/stores/error/ErrorReducer.spec.ts delete mode 100644 src/stores/error/ErrorReducer.ts delete mode 100644 src/stores/requesting/RequestingReducer.spec.ts delete mode 100644 src/stores/requesting/RequestingReducer.ts delete mode 100644 src/stores/rootReducer.ts delete mode 100644 src/stores/shows/models/IShowsState.ts delete mode 100644 src/stores/toasts/ToastsAction.ts delete mode 100644 src/stores/toasts/ToastsReducer.ts delete mode 100644 src/utilities/ActionUtility.ts delete mode 100644 src/utilities/BaseReducer.ts delete mode 100644 src/views/components/toast-card/ToastCard.module.scss delete mode 100644 src/views/components/toast-card/ToastCard.tsx delete mode 100644 src/views/components/toasts/Toasts.module.scss delete mode 100644 src/views/components/toasts/Toasts.tsx diff --git a/package.json b/package.json index 9603414..ca02589 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "lodash.groupby": "4.6.0", "mobx": "5.15.0", "mobx-react": "6.1.4", + "mobx-react-router": "4.0.7", "react": "16.11.0", "react-dom": "16.11.0", "react-redux": "7.1.3", diff --git a/src/RootStore.ts b/src/RootStore.ts index 6b5c455..1fe6fd9 100644 --- a/src/RootStore.ts +++ b/src/RootStore.ts @@ -1,5 +1,7 @@ import ShowsStore from './stores/shows/ShowsStore'; +import { RouterStore } from 'mobx-react-router'; export default class RootStore { userStore: ShowsStore = new ShowsStore(this); + routingStore = new RouterStore(); } diff --git a/src/index.tsx b/src/index.tsx index 21986b1..042b5f1 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -2,31 +2,27 @@ import './index.scss'; import React from 'react'; import ReactDOM from 'react-dom'; -import { Store } from 'redux'; -import { Provider } from 'react-redux'; import { createBrowserHistory, History } from 'history'; -import IStore from './models/IStore'; -import rootStore from './stores/rootStore'; import App from './views/App'; import environment from 'environment'; -import RootStore from './RootStore'; -import { Provider as MobxProvider } from 'mobx-react'; +import { Provider } from 'mobx-react'; +import { syncHistoryWithStore } from 'mobx-react-router'; +import { rootStore } from './stores/rootStore'; + +// configure({ enforceActions: "always" }); (async (window: Window): Promise => { - const initialState: Partial = {}; - const history: History = createBrowserHistory({ basename: environment.route.baseRoute }); - const store: Store = rootStore(initialState, history); - const rootStoreMobx = new RootStore(); + // const initialState: Partial = {}; + const browserHistory: History = createBrowserHistory({ basename: environment.route.baseRoute }); + + const history = syncHistoryWithStore(browserHistory, rootStore.routingStore); const rootEl: HTMLElement | null = document.getElementById('root'); const render = (Component: typeof App, el: HTMLElement | null): void => { ReactDOM.render( - - - - - , + + , el ); diff --git a/src/middlewares/errorToastMiddleware.ts b/src/middlewares/errorToastMiddleware.ts deleted file mode 100644 index a5592af..0000000 --- a/src/middlewares/errorToastMiddleware.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Dispatch, Middleware, MiddlewareAPI } from 'redux'; -import IStore from '../models/IStore'; -import IAction from '../models/IAction'; -import IError from '../models/IError'; -import ToastStatusEnum from '../constants/ToastStatusEnum'; -import ToastsAction from '../stores/toasts/ToastsAction'; - -const errorToastMiddleware = (): Middleware => (store: MiddlewareAPI) => (next: Dispatch) => (action: IAction): void => { - if (action.error) { - const errorAction = action as Required>; - - next(ToastsAction.add(errorAction.payload.message, ToastStatusEnum.Error)); - } - - next(action); -}; - -export default errorToastMiddleware; diff --git a/src/models/IAction.ts b/src/models/IAction.ts deleted file mode 100644 index 86fa539..0000000 --- a/src/models/IAction.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Action } from 'redux'; - -/** - * https://github.com/acdlite/flux-standard-action - */ -export default interface IAction extends Action { - /* - * The type of an action identifies to the consumer the nature of the action that has occurred. - * "type" is a string constant. - * If two types are the same, they MUST be strictly equivalent (using ===). - */ - readonly type: string; - /* - * (optional) - * The optional payload property MAY be any type of value. It represents the payload of the action. - * Any information about the action that is not the type or status of the action should be part of the payload field. - * - * By convention, if error is true, the payload SHOULD be an error object. This is akin to rejecting a promise with an error object. - */ - readonly payload?: T; - /* - * (optional) - * The optional error property MAY be set to true if the action represents an error. - * An action whose error is true is analogous to a rejected Promise. By convention, the payload SHOULD be an error object. - * If error has any other value besides true, including undefined and null, the action MUST NOT be interpreted as an error. - * - * Example: If there was an error with a request. You can use this flag to change the outcome in the reducer or turn off the loading spinner. - */ - readonly error?: boolean; - /* - * (optional) - * The optional meta property MAY be any type of value. It is intended for any extra information that is not part of the payload. - * - * Example: Some sort of "id" that may not be included on the payload itself. - */ - readonly meta?: any; -} diff --git a/src/models/IStore.ts b/src/models/IStore.ts deleted file mode 100644 index 84591fc..0000000 --- a/src/models/IStore.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { RouterState } from 'connected-react-router'; -import IRequestingState from '../stores/requesting/models/IRequestingState'; -import IErrorState from '../stores/error/models/IErrorState'; -import IToastsState from '../stores/toasts/models/IToastsState'; - -export default interface IStore { - readonly error: IErrorState; - readonly requesting: IRequestingState; - readonly router: RouterState; - readonly toasts: IToastsState; -} diff --git a/src/models/ReduxProps.ts b/src/models/ReduxProps.ts deleted file mode 100644 index d64d50e..0000000 --- a/src/models/ReduxProps.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DispatchProp } from 'react-redux'; -import IAction from './IAction'; -import { RouteComponentProps } from 'react-router'; -import { Dispatch } from 'redux'; - -export type ReduxDispatch

= Dispatch>; - -export type ReduxDispatchProp

= DispatchProp>; - -export type ReduxProps

= [R] extends [never] ? ReduxDispatchProp

: ReduxDispatchProp

& RouteComponentProps; diff --git a/src/selectors/error/ErrorSelector.spec.ts b/src/selectors/error/ErrorSelector.spec.ts deleted file mode 100644 index ce43439..0000000 --- a/src/selectors/error/ErrorSelector.spec.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { selectErrorText, selectRawErrors, hasErrors } from './ErrorSelector'; -import IErrorState from '../../stores/error/models/IErrorState'; -import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; - -describe('ErrorSelector', () => { - let store: any; - let httpErrorResponseModel: any; - const actionType: string = 'SomeAction.REQUEST_TEST_FINISHED'; - - beforeEach(() => { - httpErrorResponseModel = new HttpErrorResponseModel(); - - httpErrorResponseModel.errors = ['Unauthorized']; - - store = { - error: { - [actionType]: httpErrorResponseModel, - }, - }; - }); - - describe('selectRawErrors', () => { - it('should return same error model', () => { - const actualResult: IErrorState = selectRawErrors(store, [actionType]); - const expectedResult: IErrorState = store.error; - - expect(actualResult[actionType]).toBe(expectedResult[actionType]); - }); - - it('should return undefined value', () => { - const actualResult: IErrorState = selectRawErrors(store, ['noop']); - const expectedResult: any = { - [actionType]: undefined, - }; - - expect(actualResult[actionType]).toBe(expectedResult[actionType]); - }); - }); - - describe('selectErrorText', () => { - it('should return error text from error model(s)', () => { - const actualResult: string = selectErrorText(store, [actionType]); - const expectedResult: string = httpErrorResponseModel.errors.join(', '); - - expect(actualResult).toEqual(expectedResult); - }); - - it('should return empty string', () => { - const actualResult: string = selectErrorText(store, ['noop']); - const expectedResult: string = ''; - - expect(actualResult).toEqual(expectedResult); - }); - }); - - describe('hasErrors', () => { - it('should return false', () => { - const actualResult: boolean = hasErrors(store, [actionType]); - const expectedResult: boolean = true; - - expect(actualResult).toBe(expectedResult); - }); - - it('should return false', () => { - const actualResult: boolean = hasErrors(store, ['noop']); - const expectedResult: boolean = false; - - expect(actualResult).toBe(expectedResult); - }); - }); -}); diff --git a/src/selectors/error/ErrorSelector.ts b/src/selectors/error/ErrorSelector.ts deleted file mode 100644 index 1385f1d..0000000 --- a/src/selectors/error/ErrorSelector.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { createSelector, ParametricSelector } from 'reselect'; -import IErrorState from '../../stores/error/models/IErrorState'; -import IStore from '../../models/IStore'; -import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; - -export class ErrorSelector { - /** - * Returns a new object with the keys being the finished action type - * (e.g. "SomeAction.REQUEST_*_FINISHED") and the value being a - * HttpErrorResponseModel. - */ - public static selectRawErrors(errorState: IErrorState, actionTypes: string[]): IErrorState { - return actionTypes.reduce((partialState: object, actionType: string) => { - const model: HttpErrorResponseModel = errorState[actionType]; - - if (model) { - partialState[actionType] = model; - } - - return partialState; - }, {}); - } - - /** - * Finds any errors matching the array of actionTypes and combines all error - * messages in to a single string. - */ - public static selectErrorText(errorState: IErrorState, actionTypes: string[]): string { - const errorList: string[] = actionTypes.reduce((errorMessages: string[], actionType: string) => { - const model: HttpErrorResponseModel = errorState[actionType]; - - if (model) { - const { message, errors } = model; - const arrayOfErrors: string[] = errors.length ? errors : [message]; - - return errorMessages.concat(arrayOfErrors); - } - - return errorMessages; - }, []); - - return errorList.join(', '); - } - - /** - * Returns true or false if there are errors found matching the array of actionTypes. - */ - public static hasErrors(errorState: IErrorState, actionTypes: string[]): boolean { - return actionTypes.map((actionType: string) => errorState[actionType]).filter(Boolean).length > 0; - } -} - -export const selectRawErrors: ParametricSelector = createSelector( - (state: IStore) => state.error, - (state: IStore, actionTypes: string[]) => actionTypes, - ErrorSelector.selectRawErrors -); - -export const selectErrorText: ParametricSelector = createSelector( - (state: IStore) => state.error, - (state: IStore, actionTypes: string[]) => actionTypes, - ErrorSelector.selectErrorText -); - -export const hasErrors: ParametricSelector = createSelector( - (state: IStore) => state.error, - (state: IStore, actionTypes: string[]) => actionTypes, - ErrorSelector.hasErrors -); diff --git a/src/selectors/requesting/RequestingSelector.spec.ts b/src/selectors/requesting/RequestingSelector.spec.ts deleted file mode 100644 index 33d8cc5..0000000 --- a/src/selectors/requesting/RequestingSelector.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { selectRequesting } from './RequestingSelector'; - -describe('RequestingSelector', () => { - let store: any; - - beforeEach(() => { - store = { - requesting: { - ['SomeAction.REQUEST_TEST']: true, - }, - }; - }); - - describe('selectRequesting', () => { - it('should return true', () => { - const actualResult: boolean = selectRequesting(store, ['SomeAction.REQUEST_TEST']); - - expect(actualResult).toBe(true); - }); - - it('should return false', () => { - const actualResult: boolean = selectRequesting(store, ['SomeAction.REQUEST_OTHER']); - - expect(actualResult).toBe(false); - }); - }); -}); diff --git a/src/selectors/requesting/RequestingSelector.ts b/src/selectors/requesting/RequestingSelector.ts deleted file mode 100644 index bc7adf8..0000000 --- a/src/selectors/requesting/RequestingSelector.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createSelector, ParametricSelector } from 'reselect'; -import IRequestingState from '../../stores/requesting/models/IRequestingState'; -import IStore from '../../models/IStore'; - -export class RequestingSelector { - public static selectRequesting(requestingState: IRequestingState, actionTypes: string[]): boolean { - return actionTypes.some((actionType: string) => requestingState[actionType]); - } -} - -export const selectRequesting: ParametricSelector = createSelector( - (state: IStore) => state.requesting, - (state: IStore, actionTypes: string[]) => actionTypes, - RequestingSelector.selectRequesting -); diff --git a/src/stores/error/ErrorAction.spec.ts b/src/stores/error/ErrorAction.spec.ts deleted file mode 100644 index ee28547..0000000 --- a/src/stores/error/ErrorAction.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import ErrorAction from './ErrorAction'; -import uuid from 'uuid/v4'; -import IAction from '../../models/IAction'; -import ActionUtility from '../../utilities/ActionUtility'; - -describe('ErrorAction', () => { - describe('removeById', () => { - it('should call action with payload', () => { - const expectedId = uuid(); - - const actualResult: IAction = ErrorAction.removeById(expectedId); - const expectedResult: IAction = ActionUtility.createAction(ErrorAction.REMOVE, expectedId); - - expect(actualResult).toEqual(expectedResult); - }); - }); - - describe('clearAll', () => { - it('should call action', () => { - const actualResult: IAction = ErrorAction.clearAll(); - const expectedResult: IAction = ActionUtility.createAction(ErrorAction.CLEAR_ALL); - - expect(actualResult).toEqual(expectedResult); - }); - }); -}); diff --git a/src/stores/error/ErrorAction.ts b/src/stores/error/ErrorAction.ts deleted file mode 100644 index 499f4f8..0000000 --- a/src/stores/error/ErrorAction.ts +++ /dev/null @@ -1,15 +0,0 @@ -import IAction from '../../models/IAction'; -import ActionUtility from '../../utilities/ActionUtility'; - -export default class ErrorAction { - public static readonly CLEAR_ALL: string = 'ErrorAction.CLEAR_ALL'; - public static readonly REMOVE: string = 'ErrorAction.REMOVE'; - - public static removeById(id: string): IAction { - return ActionUtility.createAction(ErrorAction.REMOVE, id); - } - - public static clearAll(): IAction { - return ActionUtility.createAction(ErrorAction.CLEAR_ALL); - } -} diff --git a/src/stores/error/ErrorReducer.spec.ts b/src/stores/error/ErrorReducer.spec.ts deleted file mode 100644 index ca59430..0000000 --- a/src/stores/error/ErrorReducer.spec.ts +++ /dev/null @@ -1,88 +0,0 @@ -import ErrorReducer from './ErrorReducer'; -import ErrorAction from './ErrorAction'; -import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; -import IAction from '../../models/IAction'; -import IErrorState from './models/IErrorState'; -import ActionUtility from '../../utilities/ActionUtility'; - -describe('ErrorReducer', () => { - const requestActionType: string = 'SomeAction.REQUEST_SOMETHING'; - const requestActionTypeFinished: string = 'SomeAction.REQUEST_SOMETHING_FINISHED'; - const httpErrorResponseModel = new HttpErrorResponseModel(); - - it('returns default state with invalid action type', () => { - const action: IAction = ActionUtility.createAction(''); - - expect(ErrorReducer.reducer(undefined, action)).toEqual(ErrorReducer.initialState); - }); - - describe('handle REQUEST_*_FINISHED action types', () => { - it('should add error to state with *_FINISHED action type as the key', () => { - const action: IAction = ActionUtility.createAction(requestActionTypeFinished, httpErrorResponseModel, true); - - const actualResult: IErrorState = ErrorReducer.reducer(ErrorReducer.initialState, action); - const expectedResult: IErrorState = { - [requestActionTypeFinished]: httpErrorResponseModel, - }; - - expect(actualResult).toEqual(expectedResult); - }); - - it('removes the the old error from state when a new action is dispatched for isStartRequestTypes', () => { - const errorThatRemainsOnState = new HttpErrorResponseModel(); - const initialState = { - [requestActionTypeFinished]: httpErrorResponseModel, - idOfKeyThatShouldNotBeRemoved: errorThatRemainsOnState, - }; - const action: IAction = ActionUtility.createAction(requestActionType, httpErrorResponseModel, true); - - const actualResult: IErrorState = ErrorReducer.reducer(initialState, action); - const expectedResult: IErrorState = { - idOfKeyThatShouldNotBeRemoved: errorThatRemainsOnState, - }; - - expect(actualResult).toEqual(expectedResult); - }); - - it('should not add error to state without *_FINISHED action type', () => { - const action: IAction = ActionUtility.createAction(requestActionType, httpErrorResponseModel, true); - - const actualResult: IErrorState = ErrorReducer.reducer(ErrorReducer.initialState, action); - const expectedResult: IErrorState = {}; - - expect(actualResult).toEqual(expectedResult); - }); - }); - - describe('removing an error action', () => { - it('should remove error by id (which is the key on the state)', () => { - const errorThatRemainsOnState = new HttpErrorResponseModel(); - const initialState: IErrorState = { - [requestActionTypeFinished]: httpErrorResponseModel, - idOfKeyThatShouldNotBeRemoved: errorThatRemainsOnState, - }; - const action: IAction = ActionUtility.createAction(ErrorAction.REMOVE, httpErrorResponseModel.id); - - const actualResult: IErrorState = ErrorReducer.reducer(initialState, action); - const expectedResult: IErrorState = { - idOfKeyThatShouldNotBeRemoved: errorThatRemainsOnState, - }; - - expect(actualResult).toEqual(expectedResult); - }); - }); - - describe('clearing all error actions', () => { - it('should remove all errors, making error state an empty object', () => { - const initialState = { - [requestActionTypeFinished]: httpErrorResponseModel, - }; - const action: IAction = ActionUtility.createAction(ErrorAction.CLEAR_ALL); - - const actualResult: IErrorState = ErrorReducer.reducer(initialState, action); - const expectedResult: IErrorState = {}; - - expect(actualResult).toEqual(expectedResult); - }); - }); -}); diff --git a/src/stores/error/ErrorReducer.ts b/src/stores/error/ErrorReducer.ts deleted file mode 100644 index 6b21b86..0000000 --- a/src/stores/error/ErrorReducer.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Note: This reducer breaks convention on how reducers should be setup. - */ -import IErrorState from './models/IErrorState'; -import IAction from '../../models/IAction'; -import ErrorAction from './ErrorAction'; -import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; - -export default class ErrorReducer { - public static readonly initialState: IErrorState = {}; - - public static reducer(state: IErrorState = ErrorReducer.initialState, action: IAction): IErrorState { - const { type, error, payload } = action; - - /* - * Removes an HttpErrorResponseModel by it's id that is in the action payload. - */ - if (type === ErrorAction.REMOVE) { - // Create a new state without the error that has the same id as the payload. - return Object.entries(state).reduce((newState: object, [key, value]: [string, HttpErrorResponseModel]) => { - if (value.id !== payload) { - newState[key] = value; - } - - return newState; - }, {}); - } - - /* - * Removes all errors by returning the initial state which is an empty object. - */ - if (type === ErrorAction.CLEAR_ALL) { - return ErrorReducer.initialState; - } - - /* - * True if the action type has the key word '_FINISHED' then the action is finished. - */ - const isFinishedRequestType = type.includes('_FINISHED'); - /* - * True if the action type has the key word 'REQUEST_' and not '_FINISHED'. - */ - const isStartRequestType = type.includes('REQUEST_') && !isFinishedRequestType; - - /* - * If an action is started we want to remove any old errors because there is a new action has been re-dispatched. - */ - if (isStartRequestType) { - // Using ES7 Object Rest Spread operator to omit properties from an object. - const { [`${type}_FINISHED`]: value, ...stateWithoutFinishedType } = state; - - return stateWithoutFinishedType; - } - - /* - * True if the action is finished and the error property is true. - */ - const isError: boolean = isFinishedRequestType && Boolean(error); - - /* - * For any start and finished actions that don't have errors we return the current state. - */ - if (isError === false) { - return state; - } - - /* - * At this point the "type" will be a finished action type (e.g. "SomeAction.REQUEST_*_FINISHED"). - * The payload will be a HttpErrorResponseModel. - */ - return { - ...state, - [type]: payload, - }; - } -} diff --git a/src/stores/requesting/RequestingReducer.spec.ts b/src/stores/requesting/RequestingReducer.spec.ts deleted file mode 100644 index 3429cd7..0000000 --- a/src/stores/requesting/RequestingReducer.spec.ts +++ /dev/null @@ -1,40 +0,0 @@ -import IAction from '../../models/IAction'; -import RequestingReducer from './RequestingReducer'; -import IRequestingState from './models/IRequestingState'; - -describe('RequestingReducer', () => { - const requestActionType: string = 'SomeAction.REQUEST_SOMETHING'; - const requestActionTypeFinished: string = 'SomeAction.REQUEST_SOMETHING_FINISHED'; - - it('returns default state with invalid action type', () => { - const action: IAction = { type: '' }; - - expect(RequestingReducer.reducer(undefined, action)).toEqual(RequestingReducer.initialState); - }); - - describe('handle REQUEST_* action types', () => { - it('should add the request action type as a key on the state and assign the value as true', () => { - const action: IAction = { type: requestActionType }; - - const actualResult: IRequestingState = RequestingReducer.reducer(RequestingReducer.initialState, action); - const expectedResult: IRequestingState = { - [requestActionType]: true, - }; - - expect(actualResult).toEqual(expectedResult); - }); - }); - - describe('handle REQUEST_*_FINISHED action types', () => { - it('should update the request action type key on the state and assign the value to false', () => { - const action: IAction = { type: requestActionTypeFinished }; - - const actualResult: IRequestingState = RequestingReducer.reducer(RequestingReducer.initialState, action); - const expectedResult: IRequestingState = { - [requestActionType]: false, - }; - - expect(actualResult).toEqual(expectedResult); - }); - }); -}); diff --git a/src/stores/requesting/RequestingReducer.ts b/src/stores/requesting/RequestingReducer.ts deleted file mode 100644 index 7baa740..0000000 --- a/src/stores/requesting/RequestingReducer.ts +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Note: This reducer breaks convention on how reducers should be setup. - */ -import IRequestingState from './models/IRequestingState'; -import IAction from '../../models/IAction'; - -export default class RequestingReducer { - public static readonly initialState: IRequestingState = {}; - - public static reducer(state: IRequestingState = RequestingReducer.initialState, action: IAction): IRequestingState { - // We only take actions that include 'REQUEST_' in the type. - const isRequestType: boolean = action.type.includes('REQUEST_'); - - if (isRequestType === false) { - return state; - } - - // Remove the string '_FINISHED' from the action type so we can use the first part as the key on the state. - const requestName: string = action.type.replace('_FINISHED', ''); - // If the action type includes '_FINISHED'. The boolean value will be false. Otherwise we - // assume it is a starting request and will be set to true. - const isFinishedRequestType: boolean = action.type.includes('_FINISHED'); - - return { - ...state, - [requestName]: isFinishedRequestType === false, - }; - } -} diff --git a/src/stores/rootReducer.ts b/src/stores/rootReducer.ts deleted file mode 100644 index 4257952..0000000 --- a/src/stores/rootReducer.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { combineReducers, Reducer, ReducersMapObject } from 'redux'; -import { connectRouter } from 'connected-react-router'; -import { History } from 'history'; -import IStore from '../models/IStore'; -import RequestingReducer from './requesting/RequestingReducer'; -import ErrorReducer from './error/ErrorReducer'; -import ToastsReducer from './toasts/ToastsReducer'; - -export default (history: History): Reducer => { - const reducerMap: ReducersMapObject = { - error: ErrorReducer.reducer, - requesting: RequestingReducer.reducer, - router: connectRouter(history) as any, - toasts: new ToastsReducer().reducer, - }; - - return combineReducers(reducerMap); -}; diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index 87de6c5..36b58b2 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -1,22 +1,9 @@ -import { applyMiddleware, createStore, Middleware, Store } from 'redux'; -import thunk from 'redux-thunk'; -import { composeWithDevTools } from 'redux-devtools-extension/logOnlyInProduction'; -import { routerMiddleware } from 'connected-react-router'; -import { History } from 'history'; -import reduxFreeze from 'redux-freeze'; -import environment from 'environment'; -import rootReducer from './rootReducer'; -import IStore from '../models/IStore'; -import errorToastMiddleware from '../middlewares/errorToastMiddleware'; +import { RouterStore } from 'mobx-react-router'; +import ShowsStore from './shows/ShowsStore'; -export default (initialState: Partial, history: History): Store => { - const middleware: Middleware[] = [environment.isDevelopment ? reduxFreeze : null!, thunk, routerMiddleware(history), errorToastMiddleware()].filter( - Boolean - ); +class RootStore { + userStore: ShowsStore = new ShowsStore(this); + routingStore: RouterStore = new RouterStore(); +} - const store: Store = createStore(rootReducer(history), initialState, composeWithDevTools(applyMiddleware(...middleware))); - - // store.subscribe(() => console.log(store.getState())); - - return store; -}; +export const rootStore = new RootStore(); diff --git a/src/stores/shows/models/IShowsState.ts b/src/stores/shows/models/IShowsState.ts deleted file mode 100644 index 7e1b234..0000000 --- a/src/stores/shows/models/IShowsState.ts +++ /dev/null @@ -1,10 +0,0 @@ -import ShowModel from './shows/ShowModel'; -import EpisodeModel from './episodes/EpisodeModel'; -import CastModel from './cast/CastModel'; - -export default interface IShowsState { - readonly currentShowId: string; - readonly show: ShowModel | null; - readonly episodes: EpisodeModel[]; - readonly actors: CastModel[]; -} diff --git a/src/stores/toasts/ToastsAction.ts b/src/stores/toasts/ToastsAction.ts deleted file mode 100644 index 54ee71c..0000000 --- a/src/stores/toasts/ToastsAction.ts +++ /dev/null @@ -1,22 +0,0 @@ -import ActionUtility from '../../utilities/ActionUtility'; -import IAction from '../../models/IAction'; -import ToastStatusEnum from '../../constants/ToastStatusEnum'; -import IToast from './models/IToast'; -import uuid from 'uuid/v4'; - -export default class ToastsAction { - public static readonly ADD_TOAST: string = 'ToastsAction.ADD_TOAST'; - public static readonly REMOVE_TOAST: string = 'ToastsAction.REMOVE_TOAST'; - - public static add(message: string, type: ToastStatusEnum): IAction { - return ActionUtility.createAction(ToastsAction.ADD_TOAST, { - message, - type, - id: uuid(), - }); - } - - public static removeById(toastId: string): IAction { - return ActionUtility.createAction(ToastsAction.REMOVE_TOAST, toastId); - } -} diff --git a/src/stores/toasts/ToastsReducer.ts b/src/stores/toasts/ToastsReducer.ts deleted file mode 100644 index bbd0eef..0000000 --- a/src/stores/toasts/ToastsReducer.ts +++ /dev/null @@ -1,27 +0,0 @@ -import IToastsState from './models/IToastsState'; -import ToastsAction from './ToastsAction'; -import BaseReducer from '../../utilities/BaseReducer'; -import IAction from '../../models/IAction'; -import IToast from './models/IToast'; - -export default class ToastsReducer extends BaseReducer { - public readonly initialState: IToastsState = { - items: [], - }; - - public [ToastsAction.ADD_TOAST](state: IToastsState, action: IAction): IToastsState { - return { - ...state, - items: [...state.items, action.payload!], - }; - } - - public [ToastsAction.REMOVE_TOAST](state: IToastsState, action: IAction): IToastsState { - const toastId: string = action.payload!; - - return { - ...state, - items: state.items.filter((model: IToast) => model.id !== toastId), - }; - } -} diff --git a/src/typings.d.ts b/src/typings.d.ts index 797a293..0d61cfd 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -1,4 +1,3 @@ -declare module 'redux-freeze'; declare module 'lodash.groupby'; declare module 'environment' { diff --git a/src/utilities/ActionUtility.ts b/src/utilities/ActionUtility.ts deleted file mode 100644 index cdda4c8..0000000 --- a/src/utilities/ActionUtility.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ReduxDispatch } from '../models/ReduxProps'; -import HttpErrorResponseModel from '../models/HttpErrorResponseModel'; -import IAction from '../models/IAction'; - -export default class ActionUtility { - public static async createThunkEffect

( - dispatch: ReduxDispatch, - actionType: string, - effect: (...args: any[]) => Promise

, - ...args: any[] - ): Promise

{ - dispatch(ActionUtility.createAction(actionType)); - - const model: P | HttpErrorResponseModel = await effect(...args); - const isError: boolean = model instanceof HttpErrorResponseModel; - - dispatch(ActionUtility.createAction

(`${actionType}_FINISHED`, model, isError)); - - return model; - } - - public static createAction(type: string, payload?: T, error: boolean = false, meta: any = null): IAction { - return { type, payload, error, meta }; - } -} diff --git a/src/utilities/BaseReducer.ts b/src/utilities/BaseReducer.ts deleted file mode 100644 index b678155..0000000 --- a/src/utilities/BaseReducer.ts +++ /dev/null @@ -1,23 +0,0 @@ -import IAction from '../models/IAction'; - -type ReducerMethod = (state: T, action: IAction) => T; - -export default abstract class BaseReducer { - public initialState: T = {} as any; - - public reducer = (state: T = this.initialState, action: IAction): T => { - // if the action type is used for a method name then this be a reference to - // that class method. - // if the action type is not found then the "method" const will be undefined. - const method: ReducerMethod | undefined = this[action.type]; - - // if the action type "method" const is undefined or the action is an error - // return the state. - if (!method || action.error) { - return state; - } - - // Calls the method with the correct "this" and returns the modified state. - return method.call(this, state, action); - }; -} diff --git a/src/views/App.tsx b/src/views/App.tsx index 387734d..2ae5ed9 100644 --- a/src/views/App.tsx +++ b/src/views/App.tsx @@ -1,13 +1,9 @@ import React, { Suspense, lazy } from 'react'; import { History } from 'history'; -import { ConnectedRouter } from 'connected-react-router'; -import { Route, Switch } from 'react-router-dom'; -import { Dispatch } from 'redux'; -import IAction from '../models/IAction'; +import { Route, Switch, Router } from 'react-router-dom'; import RouteEnum from '../constants/RouteEnum'; import MainNav from './components/main-nav/MainNav'; import LoadingIndicator from './components/loading-indicator/LoadingIndicator'; -import Toasts from './components/toasts/Toasts'; const HomePage = lazy(() => import('./home-page/HomePage')); const NotFoundPage = lazy(() => import('./not-found-page/NotFoundPage')); @@ -16,14 +12,13 @@ const AboutPage = lazy(() => import('./about-page/AboutPage')); interface IProps { readonly history: History; - readonly dispatch: Dispatch>; } interface IState {} export default class App extends React.Component { public render(): JSX.Element { return ( - + }> @@ -32,9 +27,8 @@ export default class App extends React.Component { - - + ); } } diff --git a/src/views/components/toast-card/ToastCard.module.scss b/src/views/components/toast-card/ToastCard.module.scss deleted file mode 100644 index ec81ef8..0000000 --- a/src/views/components/toast-card/ToastCard.module.scss +++ /dev/null @@ -1,2 +0,0 @@ -.wrapper { -} diff --git a/src/views/components/toast-card/ToastCard.tsx b/src/views/components/toast-card/ToastCard.tsx deleted file mode 100644 index 4c30f22..0000000 --- a/src/views/components/toast-card/ToastCard.tsx +++ /dev/null @@ -1,52 +0,0 @@ -// import styles from './ToastCard.module.scss'; - -import * as React from 'react'; -import { connect } from 'react-redux'; -import IStore from '../../../models/IStore'; -import { ReduxProps } from '../../../models/ReduxProps'; -import { Button, ButtonProps, Card, SemanticCOLORS } from 'semantic-ui-react'; -import ToastStatusEnum from '../../../constants/ToastStatusEnum'; -import IToast from '../../../stores/toasts/models/IToast'; -import ToastsAction from '../../../stores/toasts/ToastsAction'; - -interface IProps { - readonly item: IToast; -} -interface IState {} -interface IStateToProps {} - -const mapStateToProps = (state: IStore, ownProps: IProps): IStateToProps => ({}); - -class ToastCard extends React.Component, IState> { - public buttonColorMap: Record = { - [ToastStatusEnum.Error]: 'red', - [ToastStatusEnum.Warning]: 'orange', - [ToastStatusEnum.Success]: 'green', - }; - - public render(): JSX.Element { - const { item } = this.props; - const buttonColor: SemanticCOLORS = this.buttonColorMap[item.type]; - - return ( - - - - - - - - - - ); - } - - private _onClickRemoveNotification = (event: React.MouseEvent, data: ButtonProps): void => { - this.props.dispatch(ToastsAction.removeById(this.props.item.id)); - }; -} - -export { ToastCard as Unconnected }; -export default connect(mapStateToProps)(ToastCard); diff --git a/src/views/components/toasts/Toasts.module.scss b/src/views/components/toasts/Toasts.module.scss deleted file mode 100644 index 9eca538..0000000 --- a/src/views/components/toasts/Toasts.module.scss +++ /dev/null @@ -1,10 +0,0 @@ -.wrapper { - display: flex; - flex-direction: column; - overflow: hidden; - padding: 16px; - position: fixed; - right: 0; - top: 0; - z-index: 10; -} diff --git a/src/views/components/toasts/Toasts.tsx b/src/views/components/toasts/Toasts.tsx deleted file mode 100644 index 4839d21..0000000 --- a/src/views/components/toasts/Toasts.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import styles from './Toasts.module.scss'; - -import React from 'react'; -import { connect } from 'react-redux'; -import { ReduxProps } from '../../../models/ReduxProps'; -import IStore from '../../../models/IStore'; -import IToast from '../../../stores/toasts/models/IToast'; -import ToastCard from '../toast-card/ToastCard'; - -interface IProps {} -interface IState {} -interface IStateToProps { - readonly toasts: IToast[]; -} - -const mapStateToProps = (state: IStore, ownProps: IProps): IStateToProps => ({ - toasts: state.toasts.items, -}); - -class Toasts extends React.Component, IState> { - public render(): JSX.Element | null { - const { toasts } = this.props; - - if (toasts.length === 0) { - return null; - } - - return ( -

- {toasts.map((model: IToast) => ( - - ))} -
- ); - } -} - -export { Toasts as Unconnected }; -export default connect(mapStateToProps)(Toasts); diff --git a/src/views/home-page/HomePage.tsx b/src/views/home-page/HomePage.tsx index 9a68d96..5bd9dbd 100644 --- a/src/views/home-page/HomePage.tsx +++ b/src/views/home-page/HomePage.tsx @@ -5,12 +5,15 @@ import Actors from './components/actors/Actors'; import MainOverview from './components/main-overview/MainOverview'; import { Divider, Icon, Header } from 'semantic-ui-react'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; +import { RouteComponentProps } from 'react-router-dom'; -interface IProps {} +interface IRouteParams {} +interface IProps extends RouteComponentProps {} interface IState {} export default class HomePage extends React.Component { public render(): JSX.Element { + console.log(``, this.props); return (
diff --git a/yarn.lock b/yarn.lock index 04a5c69..db29863 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7406,6 +7406,11 @@ mobx-react-lite@^1.4.2: resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-1.5.1.tgz#8eac90985b4d2bee475dd90a0d4d903be578f154" integrity sha512-40Gn8hFq+MuNHqCaeSo2adN4WvpWkIeSYZVJWzRzm0rbEf0BFow6Ir9IefErql0pX9q650TN1JAQXvrXxKR8Mg== +mobx-react-router@4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/mobx-react-router/-/mobx-react-router-4.0.7.tgz#d248a0e0525049f0e37e94f2fb1ab09563be4c35" + integrity sha512-x7eza70EimFyvF0VPyj5X2MYo9jksy61UVwz5ERXWnXVE911XRTL/V2kXiX7fvVtMHzp5m2q/kxBoti9uNixEw== + mobx-react@6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-6.1.4.tgz#818e7991c321c05bd9b8156d94be17dad165501e" From 58d587c7997c623fffd4b8db9957f4ed2bbb46ab Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 5 Dec 2019 10:35:47 -0600 Subject: [PATCH 03/16] remove redux packages --- package.json | 6 --- src/views/home-page/HomePage.tsx | 1 - yarn.lock | 71 ++------------------------------ 3 files changed, 3 insertions(+), 75 deletions(-) diff --git a/package.json b/package.json index ca02589..71bb776 100644 --- a/package.json +++ b/package.json @@ -53,12 +53,7 @@ "mobx-react-router": "4.0.7", "react": "16.11.0", "react-dom": "16.11.0", - "react-redux": "7.1.3", "react-router-dom": "5.1.2", - "redux": "4.0.4", - "redux-devtools-extension": "2.13.8", - "redux-freeze": "0.1.7", - "redux-thunk": "2.3.0", "reselect": "4.0.0", "semantic-ui-css": "2.4.1", "semantic-ui-react": "0.88.1", @@ -76,7 +71,6 @@ "@types/node": "12.12.7", "@types/react": "16.9.11", "@types/react-dom": "16.9.4", - "@types/react-redux": "7.1.5", "@types/react-router-dom": "5.1.2", "@types/uuid": "3.4.6", "@typescript-eslint/eslint-plugin": "2.7.0", diff --git a/src/views/home-page/HomePage.tsx b/src/views/home-page/HomePage.tsx index 5bd9dbd..2b3d73a 100644 --- a/src/views/home-page/HomePage.tsx +++ b/src/views/home-page/HomePage.tsx @@ -13,7 +13,6 @@ interface IState {} export default class HomePage extends React.Component { public render(): JSX.Element { - console.log(``, this.props); return (
diff --git a/yarn.lock b/yarn.lock index db29863..d1d1d38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1028,7 +1028,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== @@ -1530,14 +1530,6 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.3.tgz#856c99cdc1551d22c22b18b5402719affec9839a" integrity sha512-cS5owqtwzLN5kY+l+KgKdRJ/Cee8tlmQoGQuIE9tWnSmS3JMKzmxo2HIAk2wODMifGwO20d62xZQLYz+RLfXmw== -"@types/hoist-non-react-statics@^3.3.0": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== - dependencies: - "@types/react" "*" - hoist-non-react-statics "^3.3.0" - "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -1612,16 +1604,6 @@ dependencies: "@types/react" "*" -"@types/react-redux@7.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.5.tgz#c7a528d538969250347aa53c52241051cf886bd3" - integrity sha512-ZoNGQMDxh5ENY7PzU7MVonxDzS1l/EWiy8nUhDqxFqUZn4ovboCyvk4Djf68x6COb7vhGTKjyjxHxtFdAA5sUA== - dependencies: - "@types/hoist-non-react-statics" "^3.3.0" - "@types/react" "*" - hoist-non-react-statics "^3.3.0" - redux "^4.0.0" - "@types/react-router-dom@5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.2.tgz#853f229f1f297513c0be84f7c914a08b778cfdf5" @@ -3718,11 +3700,6 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-freeze-strict@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-freeze-strict/-/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0" - integrity sha1-d9BYPKJKab5LvZrC+uQV1VUj5bA= - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -5420,7 +5397,7 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== @@ -9392,7 +9369,7 @@ react-error-overlay@^6.0.3: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d" integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw== -react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: +react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: version "16.9.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== @@ -9409,18 +9386,6 @@ react-popper@^1.3.4: typed-styles "^0.0.7" warning "^4.0.2" -react-redux@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.3.tgz#717a3d7bbe3a1b2d535c94885ce04cdc5a33fc79" - integrity sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w== - dependencies: - "@babel/runtime" "^7.5.5" - hoist-non-react-statics "^3.3.0" - invariant "^2.2.4" - loose-envify "^1.4.0" - prop-types "^15.7.2" - react-is "^16.9.0" - react-router-dom@5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.1.2.tgz#06701b834352f44d37fbb6311f870f84c76b9c18" @@ -9650,31 +9615,6 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -redux-devtools-extension@2.13.8: - version "2.13.8" - resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.8.tgz#37b982688626e5e4993ff87220c9bbb7cd2d96e1" - integrity sha512-8qlpooP2QqPtZHQZRhx3x3OP5skEV1py/zUdMY28WNAocbafxdG2tRD1MWE7sp8obGMNYuLWanhhQ7EQvT1FBg== - -redux-freeze@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/redux-freeze/-/redux-freeze-0.1.7.tgz#f965c28f24126bd7c094533e351f3f941cd5775f" - integrity sha512-L+S9pvWW4u7BRqM2nmeOR/ZTU5k/3pWd+0Vq/oH4vliObKzMLBvENkzmicL/eb44gO3C/OX0fov6NHIlDGw8Zg== - dependencies: - deep-freeze-strict "1.1.1" - -redux-thunk@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== - -redux@4.0.4, redux@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.4.tgz#4ee1aeb164b63d6a1bcc57ae4aa0b6e6fa7a3796" - integrity sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q== - dependencies: - 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" @@ -10872,11 +10812,6 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.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== - symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" From f3b50672727b724a73a238aac00d0a32f9aee7eb Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 5 Dec 2019 12:39:12 -0600 Subject: [PATCH 04/16] remove duplicated RootStore --- src/RootStore.ts | 7 ------- src/index.tsx | 3 ++- src/stores/rootStore.ts | 2 +- src/stores/shows/ShowsStore.ts | 16 +++++++++++----- src/views/about-page/AboutPage.tsx | 2 +- src/views/episodes-page/EpisodesPage.tsx | 2 +- src/views/home-page/components/actors/Actors.tsx | 2 +- .../components/main-overview/MainOverview.tsx | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 src/RootStore.ts diff --git a/src/RootStore.ts b/src/RootStore.ts deleted file mode 100644 index 1fe6fd9..0000000 --- a/src/RootStore.ts +++ /dev/null @@ -1,7 +0,0 @@ -import ShowsStore from './stores/shows/ShowsStore'; -import { RouterStore } from 'mobx-react-router'; - -export default class RootStore { - userStore: ShowsStore = new ShowsStore(this); - routingStore = new RouterStore(); -} diff --git a/src/index.tsx b/src/index.tsx index 042b5f1..7afeb0f 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -8,8 +8,9 @@ import environment from 'environment'; import { Provider } from 'mobx-react'; import { syncHistoryWithStore } from 'mobx-react-router'; import { rootStore } from './stores/rootStore'; +import { configure } from 'mobx'; -// configure({ enforceActions: "always" }); +configure({ enforceActions: 'always' }); // https://mobx.js.org/refguide/api.html#enforceactions (async (window: Window): Promise => { // const initialState: Partial = {}; diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index 36b58b2..9b83563 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -1,7 +1,7 @@ import { RouterStore } from 'mobx-react-router'; import ShowsStore from './shows/ShowsStore'; -class RootStore { +export class RootStore { userStore: ShowsStore = new ShowsStore(this); routingStore: RouterStore = new RouterStore(); } diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index f320947..96bb7c5 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -1,5 +1,4 @@ -import { action, computed, observable } from 'mobx'; -import RootStore from '../../RootStore'; +import { action, computed, observable, runInAction } from 'mobx'; import CastModel from './models/cast/CastModel'; import ShowModel from './models/shows/ShowModel'; import EpisodeModel from './models/episodes/EpisodeModel'; @@ -11,6 +10,7 @@ import groupBy from 'lodash.groupby'; import IEpisodeTable from './computed/IEpisodeTable'; import IEpisodeTableRow from './computed/IEpisodeTableRow'; import dayjs from 'dayjs'; +import { RootStore } from '../rootStore'; export default class ShowsStore { @observable currentShowId: string = '74'; @@ -33,7 +33,9 @@ export default class ShowsStore { return response; } - this.show = response; + runInAction(() => { + this.show = response; + }); } @action @@ -45,7 +47,9 @@ export default class ShowsStore { return response; } - this.episodes = response; + runInAction(() => { + this.episodes = response; + }); } @action @@ -57,7 +61,9 @@ export default class ShowsStore { return response; } - this.actors = response; + runInAction(() => { + this.actors = response; + }); } /** diff --git a/src/views/about-page/AboutPage.tsx b/src/views/about-page/AboutPage.tsx index 17b8a10..e47028b 100644 --- a/src/views/about-page/AboutPage.tsx +++ b/src/views/about-page/AboutPage.tsx @@ -3,8 +3,8 @@ import styles from './AboutPage.module.scss'; import React from 'react'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; import { Header, Container } from 'semantic-ui-react'; -import RootStore from '../../RootStore'; import { inject, observer } from 'mobx-react'; +import { RootStore } from '../../stores/rootStore'; interface IProps { rootStore?: RootStore; diff --git a/src/views/episodes-page/EpisodesPage.tsx b/src/views/episodes-page/EpisodesPage.tsx index c407598..761c5dc 100644 --- a/src/views/episodes-page/EpisodesPage.tsx +++ b/src/views/episodes-page/EpisodesPage.tsx @@ -2,8 +2,8 @@ import React from 'react'; import IEpisodeTable from '../../stores/shows/computed/IEpisodeTable'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; import EpisodesTable from './components/episodes-table/EpisodesTable'; -import RootStore from '../../RootStore'; import { inject, observer } from 'mobx-react'; +import { RootStore } from '../../stores/rootStore'; interface IProps { rootStore?: RootStore; diff --git a/src/views/home-page/components/actors/Actors.tsx b/src/views/home-page/components/actors/Actors.tsx index 36b2c8f..bcff3d0 100644 --- a/src/views/home-page/components/actors/Actors.tsx +++ b/src/views/home-page/components/actors/Actors.tsx @@ -3,7 +3,7 @@ import { Card } from 'semantic-ui-react'; import CastModel from '../../../../stores/shows/models/cast/CastModel'; import ActorCard from './components/actor-card/ActorCard'; import { inject, observer } from 'mobx-react'; -import RootStore from '../../../../RootStore'; +import { RootStore } from '../../../../stores/rootStore'; interface IProps { rootStore?: RootStore; diff --git a/src/views/home-page/components/main-overview/MainOverview.tsx b/src/views/home-page/components/main-overview/MainOverview.tsx index 42e0e95..02ea107 100644 --- a/src/views/home-page/components/main-overview/MainOverview.tsx +++ b/src/views/home-page/components/main-overview/MainOverview.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Item } from 'semantic-ui-react'; import { inject, observer } from 'mobx-react'; -import RootStore from '../../../../RootStore'; +import { RootStore } from '../../../../stores/rootStore'; interface IProps { rootStore?: RootStore; From e871bf7651589baf6bf981b35deef3b30894f1d5 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 5 Dec 2019 12:41:36 -0600 Subject: [PATCH 05/16] LoadingIndicator --- src/index.tsx | 1 - src/views/App.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index 7afeb0f..58d82ef 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -15,7 +15,6 @@ configure({ enforceActions: 'always' }); // https://mobx.js.org/refguide/api.htm (async (window: Window): Promise => { // const initialState: Partial = {}; const browserHistory: History = createBrowserHistory({ basename: environment.route.baseRoute }); - const history = syncHistoryWithStore(browserHistory, rootStore.routingStore); const rootEl: HTMLElement | null = document.getElementById('root'); diff --git a/src/views/App.tsx b/src/views/App.tsx index 2ae5ed9..dd3d3ba 100644 --- a/src/views/App.tsx +++ b/src/views/App.tsx @@ -19,7 +19,7 @@ export default class App extends React.Component { public render(): JSX.Element { return ( - }> + }> From 81de8e32573fe4d5242d0d348c5934a3478827e4 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 7 Dec 2019 17:55:55 -0600 Subject: [PATCH 06/16] ToastsStore --- src/index.tsx | 2 +- src/stores/rootStore.ts | 4 +- src/stores/shows/ShowsStore.ts | 23 ++++----- src/stores/toasts/ToastsStore.ts | 31 ++++++++++++ src/views/App.tsx | 2 + src/views/about-page/AboutPage.tsx | 8 ++-- .../toast-card/ToastCard.module.scss | 2 + src/views/components/toast-card/ToastCard.tsx | 47 +++++++++++++++++++ .../components/toasts/Toasts.module.scss | 10 ++++ src/views/components/toasts/Toasts.tsx | 32 +++++++++++++ src/views/episodes-page/EpisodesPage.tsx | 10 ++-- .../home-page/components/actors/Actors.tsx | 10 ++-- .../components/main-overview/MainOverview.tsx | 10 ++-- 13 files changed, 159 insertions(+), 32 deletions(-) create mode 100644 src/stores/toasts/ToastsStore.ts create mode 100644 src/views/components/toast-card/ToastCard.module.scss create mode 100644 src/views/components/toast-card/ToastCard.tsx create mode 100644 src/views/components/toasts/Toasts.module.scss create mode 100644 src/views/components/toasts/Toasts.tsx diff --git a/src/index.tsx b/src/index.tsx index 58d82ef..ddd8bc2 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -21,7 +21,7 @@ configure({ enforceActions: 'always' }); // https://mobx.js.org/refguide/api.htm const render = (Component: typeof App, el: HTMLElement | null): void => { ReactDOM.render( - + , el diff --git a/src/stores/rootStore.ts b/src/stores/rootStore.ts index 9b83563..f65a71e 100644 --- a/src/stores/rootStore.ts +++ b/src/stores/rootStore.ts @@ -1,8 +1,10 @@ import { RouterStore } from 'mobx-react-router'; import ShowsStore from './shows/ShowsStore'; +import ToastsStore from './toasts/ToastsStore'; export class RootStore { - userStore: ShowsStore = new ShowsStore(this); + showsStore: ShowsStore = new ShowsStore(this); + toastsStore: ToastsStore = new ToastsStore(this); routingStore: RouterStore = new RouterStore(); } diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index 96bb7c5..818a43d 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -11,6 +11,7 @@ import IEpisodeTable from './computed/IEpisodeTable'; import IEpisodeTableRow from './computed/IEpisodeTableRow'; import dayjs from 'dayjs'; import { RootStore } from '../rootStore'; +import ToastStatusEnum from '../../constants/ToastStatusEnum'; export default class ShowsStore { @observable currentShowId: string = '74'; @@ -25,12 +26,12 @@ export default class ShowsStore { } @action - async requestShow() { + async requestShow(): Promise { const endpoint = environment.api.shows.replace(':showId', this.currentShowId); const response = await EffectUtility.getToModel(ShowModel, endpoint); if (response instanceof HttpErrorResponseModel) { - return response; + return; } runInAction(() => { @@ -39,12 +40,12 @@ export default class ShowsStore { } @action - async requestEpisodes() { + async requestEpisodes(): Promise { const endpoint = environment.api.episodes.replace(':showId', this.currentShowId); const response = await EffectUtility.getToModel(EpisodeModel, endpoint); if (response instanceof HttpErrorResponseModel) { - return response; + return; } runInAction(() => { @@ -53,12 +54,12 @@ export default class ShowsStore { } @action - async requestCast() { + async requestCast(): Promise { const endpoint = environment.api.cast.replace(':showId', this.currentShowId); const response = await EffectUtility.getToModel(CastModel, endpoint); if (response instanceof HttpErrorResponseModel) { - return response; + return; } runInAction(() => { @@ -70,19 +71,19 @@ export default class ShowsStore { * This is only to trigger an error api response so we can use it for an example in the AboutPage */ @action - async requestError() { + async requestError(): Promise { const endpoint = environment.api.errorExample; const response = await HttpUtility.get(endpoint); if (response instanceof HttpErrorResponseModel) { - return response; - } + this._rootStore.toastsStore.add(response.message, ToastStatusEnum.Error); - return response.data; + return; + } } @computed - get selectEpisodes() { + get selectEpisodes(): IEpisodeTable[] { const seasons: { [season: string]: EpisodeModel[] } = groupBy(this.episodes, 'season'); return Object.entries(seasons).map( diff --git a/src/stores/toasts/ToastsStore.ts b/src/stores/toasts/ToastsStore.ts new file mode 100644 index 0000000..cb94c86 --- /dev/null +++ b/src/stores/toasts/ToastsStore.ts @@ -0,0 +1,31 @@ +import { RootStore } from '../rootStore'; +import { action, observable } from 'mobx'; +import IToast from './models/IToast'; +import ToastStatusEnum from '../../constants/ToastStatusEnum'; +import uuid from 'uuid/v4'; + +export default class ToastsStore { + @observable items: IToast[] = []; + + private _rootStore: RootStore; + + constructor(rootStore: RootStore) { + this._rootStore = rootStore; + } + + @action + add(message: string, type: ToastStatusEnum): void { + const item: IToast = { + message, + type, + id: uuid(), + }; + + this.items = [...this.items, item]; + } + + @action + remove(toastId: string): void { + this.items = this.items.filter((model: IToast) => model.id !== toastId); + } +} diff --git a/src/views/App.tsx b/src/views/App.tsx index dd3d3ba..f125331 100644 --- a/src/views/App.tsx +++ b/src/views/App.tsx @@ -4,6 +4,7 @@ import { Route, Switch, Router } from 'react-router-dom'; import RouteEnum from '../constants/RouteEnum'; import MainNav from './components/main-nav/MainNav'; import LoadingIndicator from './components/loading-indicator/LoadingIndicator'; +import Toasts from './components/toasts/Toasts'; const HomePage = lazy(() => import('./home-page/HomePage')); const NotFoundPage = lazy(() => import('./not-found-page/NotFoundPage')); @@ -27,6 +28,7 @@ export default class App extends React.Component { + ); diff --git a/src/views/about-page/AboutPage.tsx b/src/views/about-page/AboutPage.tsx index e47028b..c721beb 100644 --- a/src/views/about-page/AboutPage.tsx +++ b/src/views/about-page/AboutPage.tsx @@ -4,18 +4,18 @@ import React from 'react'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; import { Header, Container } from 'semantic-ui-react'; import { inject, observer } from 'mobx-react'; -import { RootStore } from '../../stores/rootStore'; +import ShowsStore from '../../stores/shows/ShowsStore'; interface IProps { - rootStore?: RootStore; + showsStore?: ShowsStore; } interface IState {} -@inject('rootStore') +@inject('showsStore') @observer export default class AboutPage extends React.Component { public componentDidMount(): void { - this.props.rootStore?.userStore.requestError(); + this.props.showsStore!.requestError(); } public render(): JSX.Element { diff --git a/src/views/components/toast-card/ToastCard.module.scss b/src/views/components/toast-card/ToastCard.module.scss new file mode 100644 index 0000000..ec81ef8 --- /dev/null +++ b/src/views/components/toast-card/ToastCard.module.scss @@ -0,0 +1,2 @@ +.wrapper { +} diff --git a/src/views/components/toast-card/ToastCard.tsx b/src/views/components/toast-card/ToastCard.tsx new file mode 100644 index 0000000..42ae189 --- /dev/null +++ b/src/views/components/toast-card/ToastCard.tsx @@ -0,0 +1,47 @@ +// import styles from './ToastCard.module.scss'; + +import * as React from 'react'; +import { Button, ButtonProps, Card, SemanticCOLORS } from 'semantic-ui-react'; +import ToastStatusEnum from '../../../constants/ToastStatusEnum'; +import IToast from '../../../stores/toasts/models/IToast'; +import { inject, observer } from 'mobx-react'; +import ToastsStore from '../../../stores/toasts/ToastsStore'; + +interface IProps { + readonly item: IToast; + readonly toastsStore?: ToastsStore; +} +interface IState {} + +@inject('toastsStore') +@observer +export default class ToastCard extends React.PureComponent { + public buttonColorMap: Record = { + [ToastStatusEnum.Error]: 'red', + [ToastStatusEnum.Warning]: 'orange', + [ToastStatusEnum.Success]: 'green', + }; + + public render(): JSX.Element { + const { item } = this.props; + const buttonColor: SemanticCOLORS = this.buttonColorMap[item.type]; + + return ( + + + + + + + + + + ); + } + + private _onClickRemoveNotification = (event: React.MouseEvent, data: ButtonProps): void => { + this.props.toastsStore!.remove(this.props.item.id); + }; +} diff --git a/src/views/components/toasts/Toasts.module.scss b/src/views/components/toasts/Toasts.module.scss new file mode 100644 index 0000000..9eca538 --- /dev/null +++ b/src/views/components/toasts/Toasts.module.scss @@ -0,0 +1,10 @@ +.wrapper { + display: flex; + flex-direction: column; + overflow: hidden; + padding: 16px; + position: fixed; + right: 0; + top: 0; + z-index: 10; +} diff --git a/src/views/components/toasts/Toasts.tsx b/src/views/components/toasts/Toasts.tsx new file mode 100644 index 0000000..126810c --- /dev/null +++ b/src/views/components/toasts/Toasts.tsx @@ -0,0 +1,32 @@ +import styles from './Toasts.module.scss'; + +import React from 'react'; +import IToast from '../../../stores/toasts/models/IToast'; +import ToastCard from '../toast-card/ToastCard'; +import ToastsStore from '../../../stores/toasts/ToastsStore'; +import { inject, observer } from 'mobx-react'; + +interface IProps { + readonly toastsStore?: ToastsStore; +} +interface IState {} + +@inject('toastsStore') +@observer +export default class Toasts extends React.PureComponent { + public render(): JSX.Element | null { + const { items } = this.props.toastsStore!; + + if (items.length === 0) { + return null; + } + + return ( +
+ {items.map((model: IToast) => ( + + ))} +
+ ); + } +} diff --git a/src/views/episodes-page/EpisodesPage.tsx b/src/views/episodes-page/EpisodesPage.tsx index 761c5dc..0833d58 100644 --- a/src/views/episodes-page/EpisodesPage.tsx +++ b/src/views/episodes-page/EpisodesPage.tsx @@ -3,22 +3,22 @@ import IEpisodeTable from '../../stores/shows/computed/IEpisodeTable'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; import EpisodesTable from './components/episodes-table/EpisodesTable'; import { inject, observer } from 'mobx-react'; -import { RootStore } from '../../stores/rootStore'; +import ShowsStore from '../../stores/shows/ShowsStore'; interface IProps { - rootStore?: RootStore; + showsStore?: ShowsStore; } interface IState {} -@inject('rootStore') +@inject('showsStore') @observer export default class EpisodesPage extends React.Component { public componentDidMount(): void { - this.props.rootStore?.userStore.requestEpisodes(); + this.props.showsStore!.requestEpisodes(); } public render(): JSX.Element { - const episodeTables = this.props.rootStore?.userStore!.selectEpisodes; + const episodeTables = this.props.showsStore!.selectEpisodes; return ( <> diff --git a/src/views/home-page/components/actors/Actors.tsx b/src/views/home-page/components/actors/Actors.tsx index bcff3d0..d8eb736 100644 --- a/src/views/home-page/components/actors/Actors.tsx +++ b/src/views/home-page/components/actors/Actors.tsx @@ -3,22 +3,22 @@ import { Card } from 'semantic-ui-react'; import CastModel from '../../../../stores/shows/models/cast/CastModel'; import ActorCard from './components/actor-card/ActorCard'; import { inject, observer } from 'mobx-react'; -import { RootStore } from '../../../../stores/rootStore'; +import ShowsStore from '../../../../stores/shows/ShowsStore'; interface IProps { - rootStore?: RootStore; + showsStore?: ShowsStore; } interface IState {} -@inject('rootStore') +@inject('showsStore') @observer export default class Actors extends React.Component { public componentDidMount(): void { - this.props.rootStore?.userStore.requestCast(); + this.props.showsStore!.requestCast(); } public render(): JSX.Element { - const { actors } = this.props.rootStore?.userStore!; + const { actors } = this.props.showsStore!; return ( diff --git a/src/views/home-page/components/main-overview/MainOverview.tsx b/src/views/home-page/components/main-overview/MainOverview.tsx index 02ea107..cca81f6 100644 --- a/src/views/home-page/components/main-overview/MainOverview.tsx +++ b/src/views/home-page/components/main-overview/MainOverview.tsx @@ -1,22 +1,22 @@ import React from 'react'; import { Item } from 'semantic-ui-react'; import { inject, observer } from 'mobx-react'; -import { RootStore } from '../../../../stores/rootStore'; +import ShowsStore from '../../../../stores/shows/ShowsStore'; interface IProps { - rootStore?: RootStore; + showsStore?: ShowsStore; } interface IState {} -@inject('rootStore') +@inject('showsStore') @observer export default class MainOverview extends React.Component { public componentDidMount(): void { - this.props.rootStore?.userStore.requestShow(); + this.props.showsStore!.requestShow(); } public render(): JSX.Element | null { - const { show } = this.props.rootStore?.userStore!; + const { show } = this.props.showsStore!; if (!show) { return null; From 02d3e283429d48232657fdad5f0f3ba259b12042 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 7 Dec 2019 20:00:45 -0600 Subject: [PATCH 07/16] change to push --- src/stores/toasts/ToastsStore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/toasts/ToastsStore.ts b/src/stores/toasts/ToastsStore.ts index cb94c86..97b4484 100644 --- a/src/stores/toasts/ToastsStore.ts +++ b/src/stores/toasts/ToastsStore.ts @@ -21,7 +21,7 @@ export default class ToastsStore { id: uuid(), }; - this.items = [...this.items, item]; + this.items.push(item); } @action From 4b99c569b1eb03309116161dcbbb0e2962769bc6 Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 10 Dec 2019 22:18:30 -0600 Subject: [PATCH 08/16] setRequestAction --- src/models/IRequestStatus.ts | 15 ++++++++ src/stores/BaseStore.ts | 34 +++++++++++++++++++ src/stores/error/models/IErrorState.ts | 5 --- .../requesting/models/IRequestingState.ts | 3 -- src/stores/shows/ShowsStore.ts | 24 ++++--------- src/stores/toasts/ToastsStore.ts | 10 ++---- .../components/main-overview/MainOverview.tsx | 14 ++++---- 7 files changed, 64 insertions(+), 41 deletions(-) create mode 100644 src/models/IRequestStatus.ts create mode 100644 src/stores/BaseStore.ts delete mode 100644 src/stores/error/models/IErrorState.ts delete mode 100644 src/stores/requesting/models/IRequestingState.ts diff --git a/src/models/IRequestStatus.ts b/src/models/IRequestStatus.ts new file mode 100644 index 0000000..223656c --- /dev/null +++ b/src/models/IRequestStatus.ts @@ -0,0 +1,15 @@ +import HttpErrorResponseModel from './HttpErrorResponseModel'; + +export interface IRequestStatus

{ + isLoading: boolean; + data: P | null; + error: HttpErrorResponseModel | null; + meta: any; +} + +export const initialRequestStatus: IRequestStatus = { + isLoading: false, + error: null, + data: null, + meta: null, +}; diff --git a/src/stores/BaseStore.ts b/src/stores/BaseStore.ts new file mode 100644 index 0000000..0fc42c1 --- /dev/null +++ b/src/stores/BaseStore.ts @@ -0,0 +1,34 @@ +import { RootStore } from './rootStore'; +import { runInAction } from 'mobx'; +import HttpUtility from '../utilities/HttpUtility'; +import HttpErrorResponseModel from '../models/HttpErrorResponseModel'; +import { initialRequestStatus, IRequestStatus } from '../models/IRequestStatus'; + +export default class BaseStore { + protected rootStore: RootStore; + + constructor(rootStore: RootStore) { + this.rootStore = rootStore; + } + + async setRequestAction

(endpoint: string, prop: (requestData: IRequestStatus

) => void) { + const status = { + ...initialRequestStatus, + isLoading: true, + }; + + runInAction(() => prop(status)); + + const response = await HttpUtility.get(endpoint); + + if (response instanceof HttpErrorResponseModel) { + status.error = response; + } else { + status.data = response.data; + } + + status.isLoading = false; + + runInAction(() => prop(status)); + } +} diff --git a/src/stores/error/models/IErrorState.ts b/src/stores/error/models/IErrorState.ts deleted file mode 100644 index 2d42124..0000000 --- a/src/stores/error/models/IErrorState.ts +++ /dev/null @@ -1,5 +0,0 @@ -import HttpErrorResponseModel from '../../../models/HttpErrorResponseModel'; - -export default interface IErrorState { - readonly [key: string]: HttpErrorResponseModel; -} diff --git a/src/stores/requesting/models/IRequestingState.ts b/src/stores/requesting/models/IRequestingState.ts deleted file mode 100644 index aef84b5..0000000 --- a/src/stores/requesting/models/IRequestingState.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default interface IRequestingState { - readonly [key: string]: boolean; -} diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index 818a43d..a0ae8d0 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -10,33 +10,21 @@ import groupBy from 'lodash.groupby'; import IEpisodeTable from './computed/IEpisodeTable'; import IEpisodeTableRow from './computed/IEpisodeTableRow'; import dayjs from 'dayjs'; -import { RootStore } from '../rootStore'; import ToastStatusEnum from '../../constants/ToastStatusEnum'; +import BaseStore from '../BaseStore'; +import { initialRequestStatus, IRequestStatus } from '../../models/IRequestStatus'; -export default class ShowsStore { +export default class ShowsStore extends BaseStore { @observable currentShowId: string = '74'; - @observable show: ShowModel | null = null; + @observable show: IRequestStatus = initialRequestStatus; @observable episodes: EpisodeModel[] = []; @observable actors: CastModel[] = []; - private _rootStore: RootStore; - - constructor(rootStore: RootStore) { - this._rootStore = rootStore; - } - @action async requestShow(): Promise { const endpoint = environment.api.shows.replace(':showId', this.currentShowId); - const response = await EffectUtility.getToModel(ShowModel, endpoint); - if (response instanceof HttpErrorResponseModel) { - return; - } - - runInAction(() => { - this.show = response; - }); + await this.setRequestAction(endpoint, (status) => (this.show = status)); } @action @@ -76,7 +64,7 @@ export default class ShowsStore { const response = await HttpUtility.get(endpoint); if (response instanceof HttpErrorResponseModel) { - this._rootStore.toastsStore.add(response.message, ToastStatusEnum.Error); + this.rootStore.toastsStore.add(response.message, ToastStatusEnum.Error); return; } diff --git a/src/stores/toasts/ToastsStore.ts b/src/stores/toasts/ToastsStore.ts index 97b4484..8bdb247 100644 --- a/src/stores/toasts/ToastsStore.ts +++ b/src/stores/toasts/ToastsStore.ts @@ -1,18 +1,12 @@ -import { RootStore } from '../rootStore'; import { action, observable } from 'mobx'; import IToast from './models/IToast'; import ToastStatusEnum from '../../constants/ToastStatusEnum'; import uuid from 'uuid/v4'; +import BaseStore from '../BaseStore'; -export default class ToastsStore { +export default class ToastsStore extends BaseStore { @observable items: IToast[] = []; - private _rootStore: RootStore; - - constructor(rootStore: RootStore) { - this._rootStore = rootStore; - } - @action add(message: string, type: ToastStatusEnum): void { const item: IToast = { diff --git a/src/views/home-page/components/main-overview/MainOverview.tsx b/src/views/home-page/components/main-overview/MainOverview.tsx index cca81f6..b73054b 100644 --- a/src/views/home-page/components/main-overview/MainOverview.tsx +++ b/src/views/home-page/components/main-overview/MainOverview.tsx @@ -16,26 +16,26 @@ export default class MainOverview extends React.Component { } public render(): JSX.Element | null { - const { show } = this.props.showsStore!; + const { data, error } = this.props.showsStore!.show; - if (!show) { + if (!data || error) { return null; } - const image: string = show?.image?.medium ?? ''; - const network: string = show?.network?.name ?? ''; + const image: string = data.image?.medium ?? ''; + const network: string = data.network?.name ?? ''; return ( - {show.name} + {data.name} {network} -

+
- {show.genres.join(' | ')} + {data.genres.join(' | ')} From f81a277659c0b60a76a856888d29c6267843d8cc Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 10 Dec 2019 22:42:20 -0600 Subject: [PATCH 09/16] requestError --- src/models/IRequestStatus.ts | 4 ++-- src/stores/BaseStore.ts | 10 ++++++---- src/stores/shows/ShowsStore.ts | 17 +++++++++-------- src/views/about-page/AboutPage.tsx | 8 ++++---- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/models/IRequestStatus.ts b/src/models/IRequestStatus.ts index 223656c..6529d7c 100644 --- a/src/models/IRequestStatus.ts +++ b/src/models/IRequestStatus.ts @@ -1,14 +1,14 @@ import HttpErrorResponseModel from './HttpErrorResponseModel'; export interface IRequestStatus

{ - isLoading: boolean; + isRequesting: boolean; data: P | null; error: HttpErrorResponseModel | null; meta: any; } export const initialRequestStatus: IRequestStatus = { - isLoading: false, + isRequesting: false, error: null, data: null, meta: null, diff --git a/src/stores/BaseStore.ts b/src/stores/BaseStore.ts index 0fc42c1..4f6a458 100644 --- a/src/stores/BaseStore.ts +++ b/src/stores/BaseStore.ts @@ -1,8 +1,8 @@ import { RootStore } from './rootStore'; import { runInAction } from 'mobx'; -import HttpUtility from '../utilities/HttpUtility'; import HttpErrorResponseModel from '../models/HttpErrorResponseModel'; import { initialRequestStatus, IRequestStatus } from '../models/IRequestStatus'; +import ToastStatusEnum from '../constants/ToastStatusEnum'; export default class BaseStore { protected rootStore: RootStore; @@ -11,7 +11,7 @@ export default class BaseStore { this.rootStore = rootStore; } - async setRequestAction

(endpoint: string, prop: (requestData: IRequestStatus

) => void) { + async requestAction

(effect: () => Promise, prop: (requestData: IRequestStatus

) => void) { const status = { ...initialRequestStatus, isLoading: true, @@ -19,12 +19,14 @@ export default class BaseStore { runInAction(() => prop(status)); - const response = await HttpUtility.get(endpoint); + const response = await effect(); if (response instanceof HttpErrorResponseModel) { status.error = response; + + this.rootStore.toastsStore.add(response.message, ToastStatusEnum.Error); } else { - status.data = response.data; + status.data = response; } status.isLoading = false; diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index a0ae8d0..434d7c6 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -10,7 +10,6 @@ import groupBy from 'lodash.groupby'; import IEpisodeTable from './computed/IEpisodeTable'; import IEpisodeTableRow from './computed/IEpisodeTableRow'; import dayjs from 'dayjs'; -import ToastStatusEnum from '../../constants/ToastStatusEnum'; import BaseStore from '../BaseStore'; import { initialRequestStatus, IRequestStatus } from '../../models/IRequestStatus'; @@ -19,12 +18,16 @@ export default class ShowsStore extends BaseStore { @observable show: IRequestStatus = initialRequestStatus; @observable episodes: EpisodeModel[] = []; @observable actors: CastModel[] = []; + @observable errorExample: IRequestStatus = initialRequestStatus; @action async requestShow(): Promise { const endpoint = environment.api.shows.replace(':showId', this.currentShowId); - await this.setRequestAction(endpoint, (status) => (this.show = status)); + await this.requestAction( + () => EffectUtility.getToModel(ShowModel, endpoint), + (status) => (this.show = status) + ); } @action @@ -61,13 +64,11 @@ export default class ShowsStore extends BaseStore { @action async requestError(): Promise { const endpoint = environment.api.errorExample; - const response = await HttpUtility.get(endpoint); - - if (response instanceof HttpErrorResponseModel) { - this.rootStore.toastsStore.add(response.message, ToastStatusEnum.Error); - return; - } + await this.requestAction( + () => HttpUtility.get(endpoint), + (status) => (this.errorExample = status) + ); } @computed diff --git a/src/views/about-page/AboutPage.tsx b/src/views/about-page/AboutPage.tsx index c721beb..0fc30eb 100644 --- a/src/views/about-page/AboutPage.tsx +++ b/src/views/about-page/AboutPage.tsx @@ -2,7 +2,7 @@ import styles from './AboutPage.module.scss'; import React from 'react'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; -import { Header, Container } from 'semantic-ui-react'; +import { Header, Container, Message } from 'semantic-ui-react'; import { inject, observer } from 'mobx-react'; import ShowsStore from '../../stores/shows/ShowsStore'; @@ -19,19 +19,19 @@ export default class AboutPage extends React.Component { } public render(): JSX.Element { - // const { isRequesting, requestErrorText } = this.props; + const { isRequesting, error } = this.props.showsStore?.errorExample!; return (

About
- +

This page is only to show how to handle API errors on the page. You will also notice a popup indicator with the actual error text. Below we create a custom error message.

- {/*{requestErrorText && }*/} + {error && }
); From a9a240e263e9563a5fcc0b1df7c024b6a6ab9a96 Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 10 Dec 2019 23:14:07 -0600 Subject: [PATCH 10/16] requestAction --- src/models/IRequestStatus.ts | 10 ++--- src/stores/BaseStore.ts | 10 ++--- src/stores/shows/ShowsStore.ts | 39 +++++++------------ src/views/episodes-page/EpisodesPage.tsx | 3 +- src/views/home-page/HomePage.tsx | 14 ++++++- .../home-page/components/actors/Actors.tsx | 10 +++-- 6 files changed, 46 insertions(+), 40 deletions(-) diff --git a/src/models/IRequestStatus.ts b/src/models/IRequestStatus.ts index 6529d7c..42b6192 100644 --- a/src/models/IRequestStatus.ts +++ b/src/models/IRequestStatus.ts @@ -1,15 +1,15 @@ import HttpErrorResponseModel from './HttpErrorResponseModel'; -export interface IRequestStatus

{ +export interface IRequestStatus { isRequesting: boolean; - data: P | null; + data: T; error: HttpErrorResponseModel | null; meta: any; } -export const initialRequestStatus: IRequestStatus = { +export const initialRequestStatus = (defaultValue: T): IRequestStatus => ({ isRequesting: false, error: null, - data: null, + data: defaultValue, meta: null, -}; +}); diff --git a/src/stores/BaseStore.ts b/src/stores/BaseStore.ts index 4f6a458..39f2a45 100644 --- a/src/stores/BaseStore.ts +++ b/src/stores/BaseStore.ts @@ -11,10 +11,10 @@ export default class BaseStore { this.rootStore = rootStore; } - async requestAction

(effect: () => Promise, prop: (requestData: IRequestStatus

) => void) { - const status = { - ...initialRequestStatus, - isLoading: true, + async requestAction(effect: () => Promise, prop: (requestData: IRequestStatus) => void) { + const status: IRequestStatus = { + ...initialRequestStatus(null), + isRequesting: true, }; runInAction(() => prop(status)); @@ -29,7 +29,7 @@ export default class BaseStore { status.data = response; } - status.isLoading = false; + status.isRequesting = false; runInAction(() => prop(status)); } diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index 434d7c6..1070140 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -1,9 +1,8 @@ -import { action, computed, observable, runInAction } from 'mobx'; +import { action, computed, observable } from 'mobx'; import CastModel from './models/cast/CastModel'; import ShowModel from './models/shows/ShowModel'; import EpisodeModel from './models/episodes/EpisodeModel'; import environment from 'environment'; -import HttpErrorResponseModel from '../../models/HttpErrorResponseModel'; import EffectUtility from '../../utilities/EffectUtility'; import HttpUtility from '../../utilities/HttpUtility'; import groupBy from 'lodash.groupby'; @@ -15,10 +14,10 @@ import { initialRequestStatus, IRequestStatus } from '../../models/IRequestStatu export default class ShowsStore extends BaseStore { @observable currentShowId: string = '74'; - @observable show: IRequestStatus = initialRequestStatus; - @observable episodes: EpisodeModel[] = []; - @observable actors: CastModel[] = []; - @observable errorExample: IRequestStatus = initialRequestStatus; + @observable show: IRequestStatus = initialRequestStatus(null); + @observable episodes: IRequestStatus = initialRequestStatus([]); + @observable actors: IRequestStatus = initialRequestStatus([]); + @observable errorExample: IRequestStatus = initialRequestStatus(null); @action async requestShow(): Promise { @@ -26,36 +25,28 @@ export default class ShowsStore extends BaseStore { await this.requestAction( () => EffectUtility.getToModel(ShowModel, endpoint), - (status) => (this.show = status) + (status: IRequestStatus) => (this.show = status) ); } @action async requestEpisodes(): Promise { const endpoint = environment.api.episodes.replace(':showId', this.currentShowId); - const response = await EffectUtility.getToModel(EpisodeModel, endpoint); - if (response instanceof HttpErrorResponseModel) { - return; - } - - runInAction(() => { - this.episodes = response; - }); + await this.requestAction( + () => EffectUtility.getToModel(EpisodeModel, endpoint), + (status: IRequestStatus) => (this.episodes = status) + ); } @action async requestCast(): Promise { const endpoint = environment.api.cast.replace(':showId', this.currentShowId); - const response = await EffectUtility.getToModel(CastModel, endpoint); - if (response instanceof HttpErrorResponseModel) { - return; - } - - runInAction(() => { - this.actors = response; - }); + await this.requestAction( + () => EffectUtility.getToModel(CastModel, endpoint), + (status: IRequestStatus) => (this.actors = status) + ); } /** @@ -73,7 +64,7 @@ export default class ShowsStore extends BaseStore { @computed get selectEpisodes(): IEpisodeTable[] { - const seasons: { [season: string]: EpisodeModel[] } = groupBy(this.episodes, 'season'); + const seasons: { [season: string]: EpisodeModel[] } = groupBy(this.episodes.data, 'season'); return Object.entries(seasons).map( ([season, models]: [string, EpisodeModel[]]): IEpisodeTable => { diff --git a/src/views/episodes-page/EpisodesPage.tsx b/src/views/episodes-page/EpisodesPage.tsx index 0833d58..daad1fd 100644 --- a/src/views/episodes-page/EpisodesPage.tsx +++ b/src/views/episodes-page/EpisodesPage.tsx @@ -18,11 +18,12 @@ export default class EpisodesPage extends React.Component { } public render(): JSX.Element { + const { isRequesting } = this.props.showsStore?.episodes!; const episodeTables = this.props.showsStore!.selectEpisodes; return ( <> - + {episodeTables.map((model: IEpisodeTable) => ( ))} diff --git a/src/views/home-page/HomePage.tsx b/src/views/home-page/HomePage.tsx index 2b3d73a..f6bd040 100644 --- a/src/views/home-page/HomePage.tsx +++ b/src/views/home-page/HomePage.tsx @@ -6,16 +6,26 @@ import MainOverview from './components/main-overview/MainOverview'; import { Divider, Icon, Header } from 'semantic-ui-react'; import LoadingIndicator from '../components/loading-indicator/LoadingIndicator'; import { RouteComponentProps } from 'react-router-dom'; +import ShowsStore from '../../stores/shows/ShowsStore'; +import { inject, observer } from 'mobx-react'; interface IRouteParams {} -interface IProps extends RouteComponentProps {} +interface IProps extends RouteComponentProps { + showsStore?: ShowsStore; +} interface IState {} +@inject('showsStore') +@observer export default class HomePage extends React.Component { public render(): JSX.Element { + const { isRequesting: isRequestingCast } = this.props.showsStore?.actors!; + const { isRequesting: isRequestingShow } = this.props.showsStore?.show!; + const isRequesting: boolean = [isRequestingCast, isRequestingShow].some(Boolean); + return (

- +
diff --git a/src/views/home-page/components/actors/Actors.tsx b/src/views/home-page/components/actors/Actors.tsx index d8eb736..410c995 100644 --- a/src/views/home-page/components/actors/Actors.tsx +++ b/src/views/home-page/components/actors/Actors.tsx @@ -17,12 +17,16 @@ export default class Actors extends React.Component { this.props.showsStore!.requestCast(); } - public render(): JSX.Element { - const { actors } = this.props.showsStore!; + public render(): JSX.Element | null { + const { data, error } = this.props.showsStore?.actors!; + + if (!data || error) { + return null; + } return ( - {actors.map((model: CastModel) => ( + {data.map((model: CastModel) => ( ))} From f5d2662679e9d086232fa88219b2255a5df23015 Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 10 Dec 2019 23:17:41 -0600 Subject: [PATCH 11/16] isRequestingShowAndCast --- src/stores/shows/ShowsStore.ts | 8 ++++++++ src/views/home-page/HomePage.tsx | 4 +--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index 1070140..cd270e8 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -62,6 +62,14 @@ export default class ShowsStore extends BaseStore { ); } + @computed + get isRequestingShowAndCast(): boolean { + const { isRequesting: isRequestingCast } = this.actors!; + const { isRequesting: isRequestingShow } = this.show!; + + return [isRequestingCast, isRequestingShow].some(Boolean); + } + @computed get selectEpisodes(): IEpisodeTable[] { const seasons: { [season: string]: EpisodeModel[] } = groupBy(this.episodes.data, 'season'); diff --git a/src/views/home-page/HomePage.tsx b/src/views/home-page/HomePage.tsx index f6bd040..ee1d280 100644 --- a/src/views/home-page/HomePage.tsx +++ b/src/views/home-page/HomePage.tsx @@ -19,9 +19,7 @@ interface IState {} @observer export default class HomePage extends React.Component { public render(): JSX.Element { - const { isRequesting: isRequestingCast } = this.props.showsStore?.actors!; - const { isRequesting: isRequestingShow } = this.props.showsStore?.show!; - const isRequesting: boolean = [isRequestingCast, isRequestingShow].some(Boolean); + const isRequesting = this.props.showsStore?.isRequestingShowAndCast; return (
From b579a457f52553ef8fade6ada4c28dc3f870722d Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 11 Dec 2019 11:06:29 -0600 Subject: [PATCH 12/16] clean up --- src/stores/shows/ShowsStore.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index cd270e8..a53188c 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -64,8 +64,8 @@ export default class ShowsStore extends BaseStore { @computed get isRequestingShowAndCast(): boolean { - const { isRequesting: isRequestingCast } = this.actors!; - const { isRequesting: isRequestingShow } = this.show!; + const { isRequesting: isRequestingCast } = this.actors; + const { isRequesting: isRequestingShow } = this.show; return [isRequestingCast, isRequestingShow].some(Boolean); } From 7c027a6b264f443690202a12dd948a03675270c5 Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 11 Dec 2019 11:12:13 -0600 Subject: [PATCH 13/16] clean up --- src/views/about-page/AboutPage.tsx | 2 +- src/views/episodes-page/EpisodesPage.tsx | 2 +- src/views/home-page/HomePage.tsx | 2 +- src/views/home-page/components/actors/Actors.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/about-page/AboutPage.tsx b/src/views/about-page/AboutPage.tsx index 0fc30eb..6ba351d 100644 --- a/src/views/about-page/AboutPage.tsx +++ b/src/views/about-page/AboutPage.tsx @@ -19,7 +19,7 @@ export default class AboutPage extends React.Component { } public render(): JSX.Element { - const { isRequesting, error } = this.props.showsStore?.errorExample!; + const { isRequesting, error } = this.props.showsStore!.errorExample!; return (
diff --git a/src/views/episodes-page/EpisodesPage.tsx b/src/views/episodes-page/EpisodesPage.tsx index daad1fd..0348b4b 100644 --- a/src/views/episodes-page/EpisodesPage.tsx +++ b/src/views/episodes-page/EpisodesPage.tsx @@ -18,7 +18,7 @@ export default class EpisodesPage extends React.Component { } public render(): JSX.Element { - const { isRequesting } = this.props.showsStore?.episodes!; + const { isRequesting } = this.props.showsStore!.episodes; const episodeTables = this.props.showsStore!.selectEpisodes; return ( diff --git a/src/views/home-page/HomePage.tsx b/src/views/home-page/HomePage.tsx index ee1d280..ba2da26 100644 --- a/src/views/home-page/HomePage.tsx +++ b/src/views/home-page/HomePage.tsx @@ -19,7 +19,7 @@ interface IState {} @observer export default class HomePage extends React.Component { public render(): JSX.Element { - const isRequesting = this.props.showsStore?.isRequestingShowAndCast; + const isRequesting = this.props.showsStore!.isRequestingShowAndCast; return (
diff --git a/src/views/home-page/components/actors/Actors.tsx b/src/views/home-page/components/actors/Actors.tsx index 410c995..5104a27 100644 --- a/src/views/home-page/components/actors/Actors.tsx +++ b/src/views/home-page/components/actors/Actors.tsx @@ -18,7 +18,7 @@ export default class Actors extends React.Component { } public render(): JSX.Element | null { - const { data, error } = this.props.showsStore?.actors!; + const { data, error } = this.props.showsStore!.actors; if (!data || error) { return null; From 4bbbdbb7e05b1c47431d6bd81a53419b964f3042 Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 11 Dec 2019 12:02:40 -0600 Subject: [PATCH 14/16] Update to Create React App 3.3.0 --- craco.config.js | 6 +- package.json | 38 +- yarn.lock | 2437 ++++++++++++++++++++++++++++++----------------- 3 files changed, 1583 insertions(+), 898 deletions(-) diff --git a/craco.config.js b/craco.config.js index a63403b..b591a71 100644 --- a/craco.config.js +++ b/craco.config.js @@ -4,11 +4,7 @@ module.exports = function({ env, paths }) { return { babel: { presets: [], - plugins: [ - '@babel/plugin-proposal-optional-chaining', - '@babel/plugin-proposal-nullish-coalescing-operator', - ['@babel/plugin-proposal-decorators', { legacy: true }], - ], + plugins: [['@babel/plugin-proposal-decorators', { legacy: true }]], // loaderOptions: { /* Any babel-loader configuration options: https://github.com/babel/babel-loader. */ }, // loaderOptions: (babelLoaderOptions, { env, paths }) => { return babelLoaderOptions; } }, diff --git a/package.json b/package.json index 71bb776..60f25ce 100644 --- a/package.json +++ b/package.json @@ -44,49 +44,47 @@ "dependencies": { "axios": "0.19.0", "classnames": "2.2.6", - "connected-react-router": "6.5.2", + "connected-react-router": "6.6.1", "dayjs": "1.8.17", "history": "4.10.1", "lodash.groupby": "4.6.0", "mobx": "5.15.0", "mobx-react": "6.1.4", - "mobx-react-router": "4.0.7", - "react": "16.11.0", - "react-dom": "16.11.0", + "mobx-react-router": "4.1.0", + "react": "16.12.0", + "react-dom": "16.12.0", "react-router-dom": "5.1.2", "reselect": "4.0.0", "semantic-ui-css": "2.4.1", - "semantic-ui-react": "0.88.1", + "semantic-ui-react": "0.88.2", "sjs-base-model": "1.9.0", "uuid": "3.3.3" }, "devDependencies": { "@babel/plugin-proposal-decorators": "7.7.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.4.4", - "@babel/plugin-proposal-optional-chaining": "7.6.0", - "@craco/craco": "5.6.1", + "@craco/craco": "5.6.2", "@types/classnames": "2.2.9", "@types/history": "4.7.3", - "@types/jest": "24.0.22", - "@types/node": "12.12.7", - "@types/react": "16.9.11", + "@types/jest": "24.0.23", + "@types/node": "12.12.17", + "@types/react": "16.9.16", "@types/react-dom": "16.9.4", - "@types/react-router-dom": "5.1.2", + "@types/react-router-dom": "5.1.3", "@types/uuid": "3.4.6", - "@typescript-eslint/eslint-plugin": "2.7.0", - "@typescript-eslint/parser": "2.7.0", + "@typescript-eslint/eslint-plugin": "2.11.0", + "@typescript-eslint/parser": "2.11.0", "cross-env": "6.0.3", - "eslint": "6.6.0", - "eslint-config-prettier": "6.5.0", + "eslint": "6.7.2", + "eslint-config-prettier": "6.7.0", "eslint-plugin-prettier": "3.1.1", - "eslint-plugin-react": "7.16.0", + "eslint-plugin-react": "7.17.0", "generate-template-files": "2.2.0", "gh-pages": "2.1.1", - "husky": "3.0.9", + "husky": "3.1.0", "node-sass": "4.13.0", "prettier": "1.19.1", "pretty-quick": "2.0.1", - "react-scripts": "3.2.0", - "typescript": "3.7.2" + "react-scripts": "3.3.0", + "typescript": "3.7.3" } } diff --git a/yarn.lock b/yarn.lock index d1d1d38..8cb96e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,19 +9,19 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" - integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== +"@babel/core@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab" + integrity sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" - "@babel/helpers" "^7.6.0" - "@babel/parser" "^7.6.0" - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" - "@babel/types" "^7.6.0" - convert-source-map "^1.1.0" + "@babel/generator" "^7.7.4" + "@babel/helpers" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + convert-source-map "^1.7.0" debug "^4.1.0" json5 "^2.1.0" lodash "^4.17.13" @@ -60,17 +60,6 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" - integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== - dependencies: - "@babel/types" "^7.6.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - trim-right "^1.0.1" - "@babel/generator@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369" @@ -88,6 +77,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-annotate-as-pure@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" + integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" @@ -96,6 +92,14 @@ "@babel/helper-explode-assignable-expression" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" + integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-builder-react-jsx@^7.3.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" @@ -104,6 +108,14 @@ "@babel/types" "^7.3.0" esutils "^2.0.0" +"@babel/helper-builder-react-jsx@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz#da188d247508b65375b2c30cf59de187be6b0c66" + integrity sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA== + dependencies: + "@babel/types" "^7.7.4" + esutils "^2.0.0" + "@babel/helper-call-delegate@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" @@ -113,29 +125,14 @@ "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/helper-create-class-features-plugin@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.5.tgz#401f302c8ddbc0edd36f7c6b2887d8fa1122e5a4" - integrity sha512-ZsxkyYiRA7Bg+ZTRpPvB6AbOFKTFFK4LrvTet8lInm0V468MWCaSYJE+I7v2z2r8KNLtYiV+K5kTCnR7dvyZjg== - dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" - -"@babel/helper-create-class-features-plugin@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz#769711acca889be371e9bc2eb68641d55218021f" - integrity sha512-O1QWBko4fzGju6VoVvrZg0RROCVifcLxiApnGP3OWfWzvxRZFCoBD81K5ur5e3bVY2Vf/5rIJm8cqPKn8HUJng== +"@babel/helper-call-delegate@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" + integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/helper-hoist-variables" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" "@babel/helper-create-class-features-plugin@^7.7.4": version "7.7.4" @@ -149,6 +146,14 @@ "@babel/helper-replace-supers" "^7.7.4" "@babel/helper-split-export-declaration" "^7.7.4" +"@babel/helper-create-regexp-features-plugin@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" + integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== + dependencies: + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.6.0" + "@babel/helper-define-map@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" @@ -158,6 +163,15 @@ "@babel/types" "^7.5.5" lodash "^4.17.13" +"@babel/helper-define-map@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" + integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" + "@babel/helper-explode-assignable-expression@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" @@ -166,6 +180,14 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-explode-assignable-expression@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" + integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== + dependencies: + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-function-name@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" @@ -205,6 +227,13 @@ dependencies: "@babel/types" "^7.4.4" +"@babel/helper-hoist-variables@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" + integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-member-expression-to-functions@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" @@ -226,6 +255,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-module-imports@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" + integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" @@ -238,6 +274,18 @@ "@babel/types" "^7.5.5" lodash "^4.17.13" +"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" + integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-simple-access" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + lodash "^4.17.13" + "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" @@ -275,6 +323,17 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-remap-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" + integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-wrap-function" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-replace-supers@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" @@ -303,6 +362,14 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-simple-access@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" + integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== + dependencies: + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" @@ -327,6 +394,16 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" +"@babel/helper-wrap-function@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" + integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helpers@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e" @@ -336,14 +413,14 @@ "@babel/traverse" "^7.5.5" "@babel/types" "^7.5.5" -"@babel/helpers@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" - integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== +"@babel/helpers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" + integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== dependencies: - "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" - "@babel/types" "^7.6.0" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" "@babel/highlight@^7.0.0": version "7.5.0" @@ -359,15 +436,10 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== -"@babel/parser@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" - integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== - "@babel/parser@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb" - integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g== + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.5.tgz#cbf45321619ac12d83363fcf9c94bb67fa646d71" + integrity sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" @@ -378,22 +450,22 @@ "@babel/helper-remap-async-to-generator" "^7.1.0" "@babel/plugin-syntax-async-generators" "^7.2.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== +"@babel/plugin-proposal-async-generator-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" + integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.5.5" "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/plugin-syntax-async-generators" "^7.7.4" -"@babel/plugin-proposal-decorators@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.6.0.tgz#6659d2572a17d70abd68123e89a12a43d90aa30c" - integrity sha512-ZSyYw9trQI50sES6YxREXKu+4b7MAg6Qx2cvyDDYjP2Hpzd3FleOUwC9cqn1+za8d0A2ZU8SHujxFao956efUg== +"@babel/plugin-proposal-class-properties@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba" + integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.6.0" + "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-decorators" "^7.2.0" "@babel/plugin-proposal-decorators@7.7.4": version "7.7.4" @@ -412,6 +484,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-dynamic-import" "^7.2.0" +"@babel/plugin-proposal-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" + integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/plugin-proposal-json-strings@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" @@ -420,15 +500,39 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" -"@babel/plugin-proposal-nullish-coalescing-operator@7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz#41c360d59481d88e0ce3a3f837df10121a769b39" - integrity sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw== +"@babel/plugin-proposal-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" + integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.7.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz#7db302c83bc30caa89e38fee935635ef6bd11c28" + integrity sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.7.4" + +"@babel/plugin-proposal-numeric-separator@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.7.4.tgz#7819a17445f4197bb9575e5750ed349776da858a" + integrity sha512-CG605v7lLpVgVldSY6kxsN9ui1DxFOyepBfuX2AzU2TNriMAYApoU55mrGw9Jr4TlrTzPCG10CL8YXyi+E/iPw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-numeric-separator" "^7.7.4" + +"@babel/plugin-proposal-object-rest-spread@7.7.4", "@babel/plugin-proposal-object-rest-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz#cc57849894a5c774214178c8ab64f6334ec8af71" + integrity sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" -"@babel/plugin-proposal-object-rest-spread@7.5.5", "@babel/plugin-proposal-object-rest-spread@^7.5.5": +"@babel/plugin-proposal-object-rest-spread@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== @@ -444,13 +548,21 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" -"@babel/plugin-proposal-optional-chaining@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz#e9bf1f9b9ba10c77c033082da75f068389041af8" - integrity sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg== +"@babel/plugin-proposal-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" + integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + +"@babel/plugin-proposal-optional-chaining@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz#3f04c2de1a942cbd3008324df8144b9cbc0ca0ba" + integrity sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.2.0" + "@babel/plugin-syntax-optional-chaining" "^7.7.4" "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" @@ -461,6 +573,14 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" +"@babel/plugin-proposal-unicode-property-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz#7c239ccaf09470dbe1d453d50057460e84517ebb" + integrity sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" @@ -468,10 +588,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-decorators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" - integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== +"@babel/plugin-syntax-async-generators@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" + integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -482,17 +602,24 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-dynamic-import@7.2.0", "@babel/plugin-syntax-dynamic-import@^7.2.0": +"@babel/plugin-syntax-dynamic-import@7.7.4", "@babel/plugin-syntax-dynamic-import@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" + integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-flow@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" - integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== +"@babel/plugin-syntax-flow@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz#6d91b59e1a0e4c17f36af2e10dd64ef220919d7b" + integrity sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -503,6 +630,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-json-strings@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" + integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" @@ -510,10 +644,24 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.2.0.tgz#f75083dfd5ade73e783db729bbd87e7b9efb7624" - integrity sha512-lRCEaKE+LTxDQtgbYajI04ddt6WW0WJq57xqkAZ+s11h4YgfRHhVA/Y2VhfPzzFD4qeLHWg32DMp9HooY4Kqlg== +"@babel/plugin-syntax-jsx@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz#dab2b56a36fb6c3c222a1fbc71f7bf97f327a9ec" + integrity sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.7.4.tgz#e53b751d0c3061b1ba3089242524b65a7a9da12b" + integrity sha512-XKh/yIRPiQTOeBg0QJjEus5qiSKucKAiApNtO1psqG7D17xmE+X2i5ZqBEuSvo0HRuyPaKaSN/Gy+Ha9KFQolw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-numeric-separator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.7.4.tgz#39818f8042a09d4c6248d85d82555369da4da5c4" + integrity sha512-vmlUUBlLuFnbpaR+1kKIdo62xQEN+THWbtAHSEilo+0rHl2dKKCn6GLUVKpI848wL/T0ZPQgAy8asRJ9yYEjog== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -524,6 +672,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-syntax-object-rest-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" + integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" @@ -531,17 +686,31 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-chaining@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz#a59d6ae8c167e7608eaa443fda9fa8fa6bf21dff" - integrity sha512-HtGCtvp5Uq/jH/WNUPkK6b7rufnCPLLlDAFN7cmACoIjaOOiXxUt3SswU5loHqrhtqTsa/WoLQ1OQ1AGuZqaWA== +"@babel/plugin-syntax-optional-catch-binding@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" + integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-chaining@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901" + integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-typescript@^7.2.0": - version "7.3.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991" - integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag== +"@babel/plugin-syntax-top-level-await@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" + integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-typescript@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b" + integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -552,6 +721,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-arrow-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" + integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-async-to-generator@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" @@ -561,6 +737,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-remap-async-to-generator" "^7.1.0" +"@babel/plugin-transform-async-to-generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" + integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.7.4" + "@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" @@ -568,6 +753,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-block-scoped-functions@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" + integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-block-scoping@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce" @@ -576,10 +768,10 @@ "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" -"@babel/plugin-transform-block-scoping@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" - integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== +"@babel/plugin-transform-block-scoping@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" + integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" @@ -598,6 +790,20 @@ "@babel/helper-split-export-declaration" "^7.4.4" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" + integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-define-map" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-optimise-call-expression" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" @@ -605,10 +811,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-destructuring@7.6.0", "@babel/plugin-transform-destructuring@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz#44bbe08b57f4480094d57d9ffbcd96d309075ba6" - integrity sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ== +"@babel/plugin-transform-computed-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" + integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@7.7.4", "@babel/plugin-transform-destructuring@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" + integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -628,6 +841,14 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" +"@babel/plugin-transform-dotall-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz#f7ccda61118c5b7a2599a72d5e3210884a021e96" + integrity sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-duplicate-keys@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" @@ -635,6 +856,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-duplicate-keys@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" + integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" @@ -643,13 +871,21 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-flow-strip-types@7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz#d267a081f49a8705fc9146de0768c6b58dccd8f7" - integrity sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q== +"@babel/plugin-transform-exponentiation-operator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" + integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a" + integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/plugin-syntax-flow" "^7.7.4" "@babel/plugin-transform-for-of@^7.4.4": version "7.4.4" @@ -658,6 +894,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-for-of@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" + integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-function-name@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" @@ -666,6 +909,14 @@ "@babel/helper-function-name" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" + integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== + dependencies: + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" @@ -673,6 +924,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" + integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" @@ -680,6 +938,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-member-expression-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" + integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-modules-amd@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" @@ -689,6 +954,15 @@ "@babel/helper-plugin-utils" "^7.0.0" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-amd@^7.7.4": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" + integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== + dependencies: + "@babel/helper-module-transforms" "^7.7.5" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + "@babel/plugin-transform-modules-commonjs@^7.5.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" @@ -699,14 +973,14 @@ "@babel/helper-simple-access" "^7.1.0" babel-plugin-dynamic-import-node "^2.3.0" -"@babel/plugin-transform-modules-commonjs@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz#39dfe957de4420445f1fcf88b68a2e4aa4515486" - integrity sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g== +"@babel/plugin-transform-modules-commonjs@^7.7.4": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" + integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== dependencies: - "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-module-transforms" "^7.7.5" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-simple-access" "^7.7.4" babel-plugin-dynamic-import-node "^2.3.0" "@babel/plugin-transform-modules-systemjs@^7.5.0": @@ -718,6 +992,15 @@ "@babel/helper-plugin-utils" "^7.0.0" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-systemjs@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" + integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== + dependencies: + "@babel/helper-hoist-variables" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + "@babel/plugin-transform-modules-umd@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" @@ -726,6 +1009,14 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-modules-umd@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" + integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== + dependencies: + "@babel/helper-module-transforms" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" @@ -733,12 +1024,12 @@ dependencies: regexp-tree "^0.1.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" - integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== +"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" + integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== dependencies: - regexp-tree "^0.1.13" + "@babel/helper-create-regexp-features-plugin" "^7.7.4" "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" @@ -747,6 +1038,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-new-target@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" + integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-object-super@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" @@ -755,6 +1053,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-replace-supers" "^7.5.5" +"@babel/plugin-transform-object-super@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" + integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.4" + "@babel/plugin-transform-parameters@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" @@ -764,6 +1070,15 @@ "@babel/helper-get-function-arity" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-parameters@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz#da4555c97f39b51ac089d31c7380f03bca4075ce" + integrity sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw== + dependencies: + "@babel/helper-call-delegate" "^7.7.4" + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-property-literals@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" @@ -771,6 +1086,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-property-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" + integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-constant-elements@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.5.0.tgz#4d6ae4033bc38f8a65dfca2b6235c44522a422fc" @@ -779,7 +1101,14 @@ "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-react-display-name@7.2.0", "@babel/plugin-transform-react-display-name@^7.0.0": +"@babel/plugin-transform-react-display-name@7.7.4", "@babel/plugin-transform-react-display-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd" + integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== @@ -794,6 +1123,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" +"@babel/plugin-transform-react-jsx-self@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.7.4.tgz#81b8fbfd14b2215e8f1c2c3adfba266127b0231c" + integrity sha512-PWYjSfqrO273mc1pKCRTIJXyqfc9vWYBax88yIhQb+bpw3XChVC7VWS4VwRVs63wFHKxizvGSd00XEr+YB9Q2A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/plugin-transform-react-jsx-source@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" @@ -802,6 +1139,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" +"@babel/plugin-transform-react-jsx-source@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz#8994b1bf6014b133f5a46d3b7d1ee5f5e3e72c10" + integrity sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/plugin-transform-react-jsx@^7.0.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" @@ -811,6 +1156,15 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" +"@babel/plugin-transform-react-jsx@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.4.tgz#d91205717fae4e2f84d020cd3057ec02a10f11da" + integrity sha512-LixU4BS95ZTEAZdPaIuyg/k8FiiqN9laQ0dMHB4MlpydHY53uQdWCUrwjLr5o6ilS6fAgZey4Q14XBjl5tL6xw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.7.4" + "@babel/plugin-transform-regenerator@^7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" @@ -818,6 +1172,13 @@ dependencies: regenerator-transform "^0.14.0" +"@babel/plugin-transform-regenerator@^7.7.4": + version "7.7.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" + integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== + dependencies: + regenerator-transform "^0.14.0" + "@babel/plugin-transform-reserved-words@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" @@ -825,12 +1186,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-runtime@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz#85a3cce402b28586138e368fce20ab3019b9713e" - integrity sha512-Da8tMf7uClzwUm/pnJ1S93m/aRXmoYNDD7TkHua8xBDdaAs54uZpTWvEt6NGwmoVMb9mZbntfTqmG2oSzN/7Vg== +"@babel/plugin-transform-reserved-words@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" + integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-runtime@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.4.tgz#51fe458c1c1fa98a8b07934f4ed38b6cd62177a6" + integrity sha512-O8kSkS5fP74Ad/8pfsCMGa8sBRdLxYoSReaARRNSz3FbFQj3z/QUvoUmJ28gn9BO93YfnXc3j+Xyaqe8cKDNBQ== + dependencies: + "@babel/helper-module-imports" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" resolve "^1.8.1" semver "^5.5.1" @@ -842,6 +1210,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-shorthand-properties@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" + integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-spread@^7.2.0": version "7.2.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" @@ -849,6 +1224,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-spread@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" + integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-sticky-regex@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" @@ -857,6 +1239,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.0.0" +"@babel/plugin-transform-sticky-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" + integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + "@babel/plugin-transform-template-literals@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" @@ -865,6 +1255,14 @@ "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-template-literals@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" + integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-typeof-symbol@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" @@ -872,14 +1270,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typescript@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.0.tgz#48d78405f1aa856ebeea7288a48a19ed8da377a6" - integrity sha512-yzw7EopOOr6saONZ3KA3lpizKnWRTe+rfBqg4AmQbSow7ik7fqmzrfIqt053osLwLE2AaTqGinLM2tl6+M/uog== +"@babel/plugin-transform-typeof-symbol@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" + integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typescript@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz#2974fd05f4e85c695acaf497f432342de9fc0636" + integrity sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.6.0" + "@babel/helper-create-class-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.2.0" + "@babel/plugin-syntax-typescript" "^7.7.4" "@babel/plugin-transform-unicode-regex@^7.4.4": version "7.4.4" @@ -890,56 +1295,65 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/preset-env@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" - integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== +"@babel/plugin-transform-unicode-regex@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" + integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== dependencies: - "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.7.4" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-dynamic-import" "^7.5.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.5.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.0" - "@babel/plugin-transform-classes" "^7.5.5" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.6.0" - "@babel/plugin-transform-modules-systemjs" "^7.5.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.5.5" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.6.0" + +"@babel/preset-env@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.4.tgz#ccaf309ae8d1ee2409c85a4e2b5e280ceee830f8" + integrity sha512-Dg+ciGJjwvC1NIe/DGblMbcGq1HOtKbw8RLl4nIjlfcILKEOkWT/vRqPpumswABEBVudii6dnVwrBtzD7ibm4g== + dependencies: + "@babel/helper-module-imports" "^7.7.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.7.4" + "@babel/plugin-proposal-dynamic-import" "^7.7.4" + "@babel/plugin-proposal-json-strings" "^7.7.4" + "@babel/plugin-proposal-object-rest-spread" "^7.7.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.7.4" + "@babel/plugin-syntax-async-generators" "^7.7.4" + "@babel/plugin-syntax-dynamic-import" "^7.7.4" + "@babel/plugin-syntax-json-strings" "^7.7.4" + "@babel/plugin-syntax-object-rest-spread" "^7.7.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" + "@babel/plugin-syntax-top-level-await" "^7.7.4" + "@babel/plugin-transform-arrow-functions" "^7.7.4" + "@babel/plugin-transform-async-to-generator" "^7.7.4" + "@babel/plugin-transform-block-scoped-functions" "^7.7.4" + "@babel/plugin-transform-block-scoping" "^7.7.4" + "@babel/plugin-transform-classes" "^7.7.4" + "@babel/plugin-transform-computed-properties" "^7.7.4" + "@babel/plugin-transform-destructuring" "^7.7.4" + "@babel/plugin-transform-dotall-regex" "^7.7.4" + "@babel/plugin-transform-duplicate-keys" "^7.7.4" + "@babel/plugin-transform-exponentiation-operator" "^7.7.4" + "@babel/plugin-transform-for-of" "^7.7.4" + "@babel/plugin-transform-function-name" "^7.7.4" + "@babel/plugin-transform-literals" "^7.7.4" + "@babel/plugin-transform-member-expression-literals" "^7.7.4" + "@babel/plugin-transform-modules-amd" "^7.7.4" + "@babel/plugin-transform-modules-commonjs" "^7.7.4" + "@babel/plugin-transform-modules-systemjs" "^7.7.4" + "@babel/plugin-transform-modules-umd" "^7.7.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" + "@babel/plugin-transform-new-target" "^7.7.4" + "@babel/plugin-transform-object-super" "^7.7.4" + "@babel/plugin-transform-parameters" "^7.7.4" + "@babel/plugin-transform-property-literals" "^7.7.4" + "@babel/plugin-transform-regenerator" "^7.7.4" + "@babel/plugin-transform-reserved-words" "^7.7.4" + "@babel/plugin-transform-shorthand-properties" "^7.7.4" + "@babel/plugin-transform-spread" "^7.7.4" + "@babel/plugin-transform-sticky-regex" "^7.7.4" + "@babel/plugin-transform-template-literals" "^7.7.4" + "@babel/plugin-transform-typeof-symbol" "^7.7.4" + "@babel/plugin-transform-unicode-regex" "^7.7.4" + "@babel/types" "^7.7.4" browserslist "^4.6.0" core-js-compat "^3.1.1" invariant "^2.2.2" @@ -1002,7 +1416,18 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-react@7.0.0", "@babel/preset-react@^7.0.0": +"@babel/preset-react@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.7.4.tgz#3fe2ea698d8fb536d8e7881a592c3c1ee8bf5707" + integrity sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.7.4" + "@babel/plugin-transform-react-jsx" "^7.7.4" + "@babel/plugin-transform-react-jsx-self" "^7.7.4" + "@babel/plugin-transform-react-jsx-source" "^7.7.4" + +"@babel/preset-react@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== @@ -1013,28 +1438,35 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/preset-typescript@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.6.0.tgz#25768cb8830280baf47c45ab1a519a9977498c98" - integrity sha512-4xKw3tTcCm0qApyT6PqM9qniseCE79xGHiUnNdKGdxNsGUc2X7WwZybqIpnTmoukg3nhPceI5KPNzNqLNeIJww== +"@babel/preset-typescript@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.7.4.tgz#780059a78e6fa7f7a4c87f027292a86b31ce080a" + integrity sha512-rqrjxfdiHPsnuPur0jKrIIGQCIgoTWMTjlbWE69G4QJ6TIOVnnRnIJhUxNTL/VwDmEAVX08Tq3B1nirer5341w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.6.0" + "@babel/plugin-transform-typescript" "^7.7.4" -"@babel/runtime@7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" - integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== +"@babel/runtime@7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" + integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw== dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2": + version "7.7.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f" + integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -1044,15 +1476,6 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/template@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" - integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" - "@babel/template@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" @@ -1062,32 +1485,17 @@ "@babel/parser" "^7.7.4" "@babel/types" "^7.7.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" - integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.5.5" - "@babel/types" "^7.5.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" - integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" + integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" + "@babel/generator" "^7.5.5" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.6.0" - "@babel/types" "^7.6.0" + "@babel/parser" "^7.5.5" + "@babel/types" "^7.5.5" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" @@ -1116,15 +1524,6 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.6.0": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" - integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - "@babel/types@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" @@ -1142,10 +1541,10 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@craco/craco@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-5.6.1.tgz#ececb0c77a69e9988f239ece75233f1c6548b4c1" - integrity sha512-8C+gQG7bBR55kjVc+6yZ4QJgkfVfYNcKQVEjkTkeXwF/Nqm5tUBAyJviOoSVaGlw+avJQEugzYLNSYk9J/2t/A== +"@craco/craco@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-5.6.2.tgz#d98d660962e810bb1c9bb3e5318b99df6c620472" + integrity sha512-64nPBTTf4EpIAbdVZbgCR77cCTgLI2xgLSesj886HsfatQi6WfcYder4u60CnBsjvQE4/lz8Wa4DvD1ebTXjGQ== dependencies: cross-spawn "^7.0.0" lodash.mergewith "^4.6.2" @@ -1156,10 +1555,10 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@csstools/normalize.css@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" - integrity sha512-6It2EVfGskxZCQhuykrfnALg7oVeiI6KclWSmGDqB0AiInVrTGB9Jp9i4/Ad21u9Jde/voVQz6eFX/eSg/UsPA== +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== "@hapi/address@2.x.x": version "2.1.0" @@ -1399,10 +1798,10 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz#310ec0775de808a6a2e4fd4268c245fd734c1165" integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== -"@svgr/babel-plugin-svg-dynamic-title@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.1.tgz#646c2f5b5770c2fe318d6e51492344c3d62ddb63" - integrity sha512-p6z6JJroP989jHWcuraeWpzdejehTmLUpyC9smhTBWyPN0VVGe2phbYxpPTV7Vh8XzmFrcG55idrnfWn/2oQEw== +"@svgr/babel-plugin-svg-dynamic-title@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz#2cdedd747e5b1b29ed4c241e46256aac8110dd93" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== "@svgr/babel-plugin-svg-em-dimensions@^4.2.0": version "4.2.0" @@ -1419,26 +1818,26 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz#5f1e2f886b2c85c67e76da42f0f6be1b1767b697" integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== -"@svgr/babel-preset@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.1.tgz#62ffcb85d756580e8ce608e9d2ac3b9063be9e28" - integrity sha512-rPFKLmyhlh6oeBv3j2vEAj2nd2QbWqpoJLKzBLjwQVt+d9aeXajVaPNEqrES2spjXKR4OxfgSs7U0NtmAEkr0Q== +"@svgr/babel-preset@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-4.3.3.tgz#a75d8c2f202ac0e5774e6bfc165d028b39a1316c" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-empty-expression" "^4.2.0" "@svgr/babel-plugin-replace-jsx-attribute-value" "^4.2.0" - "@svgr/babel-plugin-svg-dynamic-title" "^4.3.1" + "@svgr/babel-plugin-svg-dynamic-title" "^4.3.3" "@svgr/babel-plugin-svg-em-dimensions" "^4.2.0" "@svgr/babel-plugin-transform-react-native-svg" "^4.2.0" "@svgr/babel-plugin-transform-svg-component" "^4.2.0" -"@svgr/core@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.2.tgz#939c89be670ad79b762f4c063f213f0e02535f2e" - integrity sha512-N+tP5CLFd1hP9RpO83QJPZY3NL8AtrdqNbuhRgBkjE/49RnMrrRsFm1wY8pueUfAGvzn6tSXUq29o6ah8RuR5w== +"@svgr/core@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-4.3.3.tgz#b37b89d5b757dc66e8c74156d00c368338d24293" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== dependencies: - "@svgr/plugin-jsx" "^4.3.2" + "@svgr/plugin-jsx" "^4.3.3" camelcase "^5.3.1" cosmiconfig "^5.2.1" @@ -1449,13 +1848,13 @@ dependencies: "@babel/types" "^7.4.4" -"@svgr/plugin-jsx@^4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.2.tgz#ce9ddafc8cdd74da884c9f7af014afcf37f93d3c" - integrity sha512-+1GW32RvmNmCsOkMoclA/TppNjHPLMnNZG3/Ecscxawp051XJ2MkO09Hn11VcotdC2EPrDfT8pELGRo+kbZ1Eg== +"@svgr/plugin-jsx@^4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz#e2ba913dbdfbe85252a34db101abc7ebd50992fa" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== dependencies: "@babel/core" "^7.4.5" - "@svgr/babel-preset" "^4.3.1" + "@svgr/babel-preset" "^4.3.3" "@svgr/hast-util-to-babel-ast" "^4.3.2" svg-parser "^2.0.0" @@ -1468,17 +1867,17 @@ merge-deep "^3.0.2" svgo "^1.2.2" -"@svgr/webpack@4.3.2": - version "4.3.2" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.2.tgz#319d4471c8f3d5c3af35059274834d9b5b8fb956" - integrity sha512-F3VE5OvyOWBEd2bF7BdtFRyI6E9it3mN7teDw0JQTlVtc4HZEYiiLSl+Uf9Uub6IYHVGc+qIrxxDyeedkQru2w== +"@svgr/webpack@4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-4.3.3.tgz#13cc2423bf3dff2d494f16b17eb7eacb86895017" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== dependencies: "@babel/core" "^7.4.5" "@babel/plugin-transform-react-constant-elements" "^7.0.0" "@babel/preset-env" "^7.4.5" "@babel/preset-react" "^7.0.0" - "@svgr/core" "^4.3.2" - "@svgr/plugin-jsx" "^4.3.2" + "@svgr/core" "^4.3.3" + "@svgr/plugin-jsx" "^4.3.3" "@svgr/plugin-svgo" "^4.3.1" loader-utils "^1.2.3" @@ -1525,6 +1924,20 @@ 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/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== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + "@types/history@*", "@types/history@4.7.3": version "4.7.3" resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.3.tgz#856c99cdc1551d22c22b18b5402719affec9839a" @@ -1550,24 +1963,19 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest-diff@*": - version "20.0.1" - resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" - integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== - -"@types/jest@24.0.22": - version "24.0.22" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.22.tgz#08a50be08e78aba850a1185626e71d31e2336145" - integrity sha512-t2OvhNZnrNjlzi2i0/cxbLVM59WN15I2r1Qtb7wDv28PnV9IzrPtagFRey/S9ezdLD0zyh1XGMQIEQND2YEfrw== +"@types/jest@24.0.23": + version "24.0.23" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.23.tgz#046f8e2ade026fe831623e361a36b6fb9a4463e4" + integrity sha512-L7MBvwfNpe7yVPTXLn32df/EK+AMBFAFvZrRuArGs7npEWnlziUXK+5GMIUTI4NIuwok3XibsjXCs5HxviYXjg== dependencies: - "@types/jest-diff" "*" + jest-diff "^24.3.0" "@types/json-schema@^7.0.3": version "7.0.3" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== -"@types/minimatch@^3.0.3": +"@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== @@ -1577,16 +1985,21 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.3.tgz#27b3f40addaf2f580459fdb405222685542f907a" integrity sha512-3SiLAIBkDWDg6vFo0+5YJyHPWU9uwu40Qe+v+0MH8wRKYBimHvvAOyk3EzMrD/TrIlLYfXrqDqrg913PynrMJQ== -"@types/node@12.12.7": - version "12.12.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.7.tgz#01e4ea724d9e3bd50d90c11fd5980ba317d8fa11" - integrity sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w== +"@types/node@12.12.17": + version "12.12.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.17.tgz#191b71e7f4c325ee0fb23bc4a996477d92b8c39b" + integrity sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA== "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@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.1" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6" @@ -1604,10 +2017,10 @@ dependencies: "@types/react" "*" -"@types/react-router-dom@5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.2.tgz#853f229f1f297513c0be84f7c914a08b778cfdf5" - integrity sha512-kRx8hoBflE4Dp7uus+j/0uMHR5uGTAvQtc4A3vOTWKS+epe0leCuxEx7HNT7XGUd1lH53/moWM51MV2YUyhzAg== +"@types/react-router-dom@5.1.3": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.3.tgz#b5d28e7850bd274d944c0fbbe5d57e6b30d71196" + integrity sha512-pCq7AkOvjE65jkGS5fQwQhvUp4+4PVD9g39gXLZViP2UqFiFzsEpB3PKf0O6mdbKsewSK8N14/eegisa/0CwnA== dependencies: "@types/history" "*" "@types/react" "*" @@ -1629,10 +2042,10 @@ "@types/prop-types" "*" csstype "^2.2.0" -"@types/react@16.9.11": - version "16.9.11" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.11.tgz#70e0b7ad79058a7842f25ccf2999807076ada120" - integrity sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ== +"@types/react@16.9.16": + version "16.9.16" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.16.tgz#4f12515707148b1f53a8eaa4341dae5dfefb066d" + integrity sha512-dQ3wlehuBbYlfvRXfF5G+5TbZF3xqgkikK7DWAsQXe2KnzV+kjD4W2ea+ThCrKASZn9h98bjjPzoTYzfRqyBkw== dependencies: "@types/prop-types" "*" csstype "^2.2.0" @@ -1661,83 +2074,44 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.7.0.tgz#dff176bdb73dfd7e2e43062452189bd1b9db6021" - integrity sha512-H5G7yi0b0FgmqaEUpzyBlVh0d9lq4cWG2ap0RKa6BkF3rpBb6IrAoubt1NWh9R2kRs/f0k6XwRDiDz3X/FqXhQ== - dependencies: - "@typescript-eslint/experimental-utils" "2.7.0" - eslint-utils "^1.4.2" - functional-red-black-tree "^1.0.1" - regexpp "^2.0.1" - tsutils "^3.17.1" - -"@typescript-eslint/eslint-plugin@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.3.0.tgz#6ead12c6b15a9b930430931e396e01a1fe181fcc" - integrity sha512-QgO/qmNye+rKsU7dan6pkBTSfpbyrHJidsw9bR3gZCrQNTB9eWQ5+UDkrrev/fu9xg6Qh7ebbx03IVuGnGRmEw== +"@typescript-eslint/eslint-plugin@2.11.0", "@typescript-eslint/eslint-plugin@^2.8.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.11.0.tgz#4477c33491ccf0a9a3f4a30ef84978fa0ea0cad2" + integrity sha512-G2HHA1vpMN0EEbUuWubiCCfd0R3a30BB+UdvnFkxwZIxYEGOrWEXDv8tBFO9f44CWc47Xv9lLM3VSn4ORLI2bA== dependencies: - "@typescript-eslint/experimental-utils" "2.3.0" - eslint-utils "^1.4.2" + "@typescript-eslint/experimental-utils" "2.11.0" + eslint-utils "^1.4.3" functional-red-black-tree "^1.0.1" - regexpp "^2.0.1" + regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.3.0.tgz#19a8e1b8fcee7d7469f3b44691d91830568de140" - integrity sha512-ry+fgd0Hh33LyzS30bIhX/a1HJpvtnecjQjWxxsZTavrRa1ymdmX7tz+7lPrPAxB018jnNzwNtog6s3OhxPTAg== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.3.0" - eslint-scope "^5.0.0" - -"@typescript-eslint/experimental-utils@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.7.0.tgz#58d790a3884df3041b5a5e08f9e5e6b7c41864b5" - integrity sha512-9/L/OJh2a5G2ltgBWJpHRfGnt61AgDeH6rsdg59BH0naQseSwR7abwHq3D5/op0KYD/zFT4LS5gGvWcMmegTEg== +"@typescript-eslint/experimental-utils@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.11.0.tgz#cef18e6b122706c65248a5d8984a9779ed1e52ac" + integrity sha512-YxcA/y0ZJaCc/fB/MClhcDxHI0nOBB7v2/WxBju2cOTanX7jO9ttQq6Fy4yW9UaY5bPd9xL3cun3lDVqk67sPQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.7.0" + "@typescript-eslint/typescript-estree" "2.11.0" eslint-scope "^5.0.0" -"@typescript-eslint/parser@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.7.0.tgz#b5e6a4944e2b68dba1e7fbfd5242e09ff552fd12" - integrity sha512-ctC0g0ZvYclxMh/xI+tyqP0EC2fAo6KicN9Wm2EIao+8OppLfxji7KAGJosQHSGBj3TcqUrA96AjgXuKa5ob2g== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.7.0" - "@typescript-eslint/typescript-estree" "2.7.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/parser@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.3.0.tgz#d2df1d4bb8827e36125fb7c6274df1b4d4e614f0" - integrity sha512-Dc+LAtHts0yDuusxG0NVjGvrpPy2kZauxqPbfFs0fmcMB4JhNs+WwIDMFGWeKjbGoPt/SIUC9XJ7E0ZD/f8InQ== +"@typescript-eslint/parser@2.11.0", "@typescript-eslint/parser@^2.8.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.11.0.tgz#cdcc3be73ee31cbef089af5ff97ccaa380ef6e8b" + integrity sha512-DyGXeqhb3moMioEFZIHIp7oXBBh7dEfPTzGrlyP0Mi9ScCra4SWEGs3kPd18mG7Sy9Wy8z88zmrw5tSGL6r/6A== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.3.0" - "@typescript-eslint/typescript-estree" "2.3.0" + "@typescript-eslint/experimental-utils" "2.11.0" + "@typescript-eslint/typescript-estree" "2.11.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.3.0.tgz#fd8faff7e4c73795c65e5817c52f9038e33ef29d" - integrity sha512-WBxfwsTeCOsmQ7cLjow7lgysviBKUW34npShu7dxJYUQCbSG5nfZWZTgmQPKEc+3flpbSM7tjXjQOgETYp+njQ== - dependencies: - glob "^7.1.4" - is-glob "^4.0.1" - lodash.unescape "4.0.1" - semver "^6.3.0" - -"@typescript-eslint/typescript-estree@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.7.0.tgz#34fd98c77a07b40d04d5b4203eddd3abeab909f4" - integrity sha512-vVCE/DY72N4RiJ/2f10PTyYekX2OLaltuSIBqeHYI44GQ940VCYioInIb8jKMrK9u855OEJdFC+HmWAZTnC+Ag== +"@typescript-eslint/typescript-estree@2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.11.0.tgz#21ada6504274cd1644855926312c798fc697e9fb" + integrity sha512-HGY4+d4MagO6cKMcKfIKaTMxcAv7dEVnji2Zi+vi5VV8uWAM631KjAB5GxFcexMYrwKT0EekRiiGK1/Sd7VFGA== dependencies: debug "^4.1.1" - glob "^7.1.4" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" is-glob "^4.0.1" lodash.unescape "4.0.1" semver "^6.3.0" @@ -1925,11 +2299,6 @@ acorn-globals@^4.1.0, acorn-globals@^4.3.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" - integrity sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw== - acorn-jsx@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" @@ -1950,11 +2319,6 @@ acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== -acorn@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" - integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== - acorn@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" @@ -1976,6 +2340,14 @@ adjust-sourcemap-loader@2.0.0: object-path "0.11.4" regex-parser "2.2.10" +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -2252,12 +2624,7 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.6.1: +async@^2.6.1, async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== @@ -2387,19 +2754,19 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.6.1.tgz#41f7ead616fc36f6a93180e89697f69f51671181" - integrity sha512-6W2nwiXme6j1n2erPOnmRiWfObUhWH7Qw1LMi9XZy8cj+KtESu3T6asZvtk5bMQQjX8te35o7CFueiSdL/2NmQ== +babel-plugin-macros@2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.7.1.tgz#ee294383c1a38f9d6535be3d89734824cb3ed415" + integrity sha512-HNM284amlKSQ6FddI4jLXD+XTqF0cTYOe5uemOIZxHJHnamC+OhFQ57rMF9sgnYhkJQptVl9U1SKVZsV9/GLQQ== dependencies: - "@babel/runtime" "^7.4.2" - cosmiconfig "^5.2.0" - resolve "^1.10.0" + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -babel-plugin-named-asset-import@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.4.tgz#4a8fc30e9a3e2b1f5ed36883386ab2d84e1089bd" - integrity sha512-S6d+tEzc5Af1tKIMbsf2QirCcPdQ+mKUCY2H1nJj1DyA1ShwpsoxEOAwbWsG5gcXNV/olpvQd9vrUWRx4bnhpw== +babel-plugin-named-asset-import@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.5.tgz#d3fa1a7f1f4babd4ed0785b75e2f926df0d70d0d" + integrity sha512-sGhfINU+AuMw9oFAdIn/nD5sem3pn/WgxAfDZ//Q3CnF+5uaho7C7shh2rKLk6sKE/XkfmyibghocwKdVjLIKg== babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" @@ -2427,26 +2794,29 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-preset-react-app@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.0.2.tgz#247d37e883d6d6f4b4691e5f23711bb2dd80567d" - integrity sha512-aXD+CTH8Chn8sNJr4tO/trWKqe5sSE4hdO76j9fhVezJSzmpWYWUSc5JoPmdSxADwef5kQFNGKXd433vvkd2VQ== - dependencies: - "@babel/core" "7.6.0" - "@babel/plugin-proposal-class-properties" "7.5.5" - "@babel/plugin-proposal-decorators" "7.6.0" - "@babel/plugin-proposal-object-rest-spread" "7.5.5" - "@babel/plugin-syntax-dynamic-import" "7.2.0" - "@babel/plugin-transform-destructuring" "7.6.0" - "@babel/plugin-transform-flow-strip-types" "7.4.4" - "@babel/plugin-transform-react-display-name" "7.2.0" - "@babel/plugin-transform-runtime" "7.6.0" - "@babel/preset-env" "7.6.0" - "@babel/preset-react" "7.0.0" - "@babel/preset-typescript" "7.6.0" - "@babel/runtime" "7.6.0" +babel-preset-react-app@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-9.1.0.tgz#74c644d809f098d4b131646730c7bed0696084ca" + integrity sha512-0qMOv/pCcCQWxX1eNyKD9GlzZTdzZIK/Pq3O6TGe65tZSJTSplw1pFlaPujm0GjBj4g3GeCQbP08vvzlH7OGHg== + dependencies: + "@babel/core" "7.7.4" + "@babel/plugin-proposal-class-properties" "7.7.4" + "@babel/plugin-proposal-decorators" "7.7.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.7.4" + "@babel/plugin-proposal-numeric-separator" "7.7.4" + "@babel/plugin-proposal-object-rest-spread" "7.7.4" + "@babel/plugin-proposal-optional-chaining" "7.7.4" + "@babel/plugin-syntax-dynamic-import" "7.7.4" + "@babel/plugin-transform-destructuring" "7.7.4" + "@babel/plugin-transform-flow-strip-types" "7.7.4" + "@babel/plugin-transform-react-display-name" "7.7.4" + "@babel/plugin-transform-runtime" "7.7.4" + "@babel/preset-env" "7.7.4" + "@babel/preset-react" "7.7.4" + "@babel/preset-typescript" "7.7.4" + "@babel/runtime" "7.7.4" babel-plugin-dynamic-import-node "2.3.0" - babel-plugin-macros "2.6.1" + babel-plugin-macros "2.7.1" babel-plugin-transform-react-remove-prop-types "0.4.24" babel-runtime@^6.26.0: @@ -2657,7 +3027,16 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.7.0, browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6.0, browserslist@^4.6.3, browserslist@^4.6.4, browserslist@^4.6.6: +browserslist@4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.3.tgz#02341f162b6bcc1e1028e30624815d4924442dc3" + integrity sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ== + dependencies: + caniuse-lite "^1.0.30001010" + electron-to-chromium "^1.3.306" + node-releases "^1.1.40" + +browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.6.3, browserslist@^4.6.4, browserslist@^4.6.6: version "4.7.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== @@ -2666,6 +3045,15 @@ browserslist@4.7.0, browserslist@^4.0.0, browserslist@^4.1.1, browserslist@^4.6. electron-to-chromium "^1.3.247" node-releases "^1.1.29" +browserslist@^4.6.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" + integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== + dependencies: + caniuse-lite "^1.0.30001015" + electron-to-chromium "^1.3.322" + node-releases "^1.1.42" + bser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5" @@ -2733,6 +3121,30 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2798,6 +3210,11 @@ camelcase@5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -2808,16 +3225,6 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -2833,6 +3240,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000981, can resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== +caniuse-lite@^1.0.30001010, caniuse-lite@^1.0.30001015: + version "1.0.30001015" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0" + integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2875,7 +3287,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: +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== @@ -2899,6 +3311,11 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== +chownr@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -2941,6 +3358,11 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -3123,7 +3545,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.40.0 < 2" -compression@^1.5.2: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -3156,15 +3578,15 @@ confusing-browser-globals@^1.0.9: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -connect-history-api-fallback@^1.3.0: +connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -connected-react-router@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.5.2.tgz#422af70f86cb276681e20ab4295cf27dd9b6c7e3" - integrity sha512-qzsLPZCofSI80fwy+HgxtEgSGS4ndYUUZAWaw1dqaOGPLKX/FVwIOEb7q+hjHdnZ4v5pKZcNv5GG4urjujIoyA== +connected-react-router@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.6.1.tgz#f6b7717abf959393fab6756c8d43af1a57d622da" + integrity sha512-a/SE3HgpZABCxr083bfAMpgZwUzlv1RkmOV71+D4I77edoR/peg7uJMHOgqWnXXqGD7lo3Y2ZgUlXtMhcv8FeA== dependencies: immutable "^3.8.1" prop-types "^15.7.2" @@ -3204,10 +3626,10 @@ 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.6.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +convert-source-map@1.7.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== dependencies: safe-buffer "~5.1.1" @@ -3216,6 +3638,13 @@ convert-source-map@^0.3.3: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= +convert-source-map@^1.1.0, convert-source-map@^1.4.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -3251,22 +3680,22 @@ core-js-compat@^3.1.1: browserslist "^4.6.6" semver "^6.3.0" -core-js@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" - integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== - core-js@^2.4.0: version "2.6.9" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== +core-js@^3.4.1: + version "3.4.8" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.4.8.tgz#e0fc0c61f2ef90cbc10c531dbffaa46dfb7152dd" + integrity sha512-b+BBmCZmVgho8KnBUOXpvlqEMguko+0P+kXCwD4vIprsXC6ht1qgPxtb1OK6XgSlrySF71wkwBQ0Hv695bk9gQ== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -3276,6 +3705,17 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.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" @@ -3395,22 +3835,23 @@ css-has-pseudo@^0.10.0: postcss "^7.0.6" postcss-selector-parser "^5.0.0-rc.4" -css-loader@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea" - integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w== +css-loader@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2" + integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ== dependencies: - camelcase "^5.2.0" - icss-utils "^4.1.0" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" loader-utils "^1.2.3" normalize-path "^3.0.0" - postcss "^7.0.14" + postcss "^7.0.17" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^2.0.6" + postcss-modules-local-by-default "^3.0.2" postcss-modules-scope "^2.1.0" - postcss-modules-values "^2.0.0" - postcss-value-parser "^3.3.0" - schema-utils "^1.0.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.0" + schema-utils "^2.0.0" css-prefers-color-scheme@^3.1.1: version "3.1.1" @@ -3652,7 +4093,7 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3671,13 +4112,6 @@ decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -3755,17 +4189,18 @@ del@^2.2.0: pinkie-promise "^2.0.0" rimraf "^2.2.8" -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: + "@types/glob" "^7.1.1" globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" delayed-stream@~1.0.0: version "1.0.0" @@ -3954,10 +4389,10 @@ dotenv-expand@5.1.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== duplexer@^0.1.1: version "0.1.1" @@ -3992,6 +4427,11 @@ electron-to-chromium@^1.3.247: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.251.tgz#8dbfe0d5c5d884c456d3d8d83fcb3258ab9eba3a" integrity sha512-C5oOBdqJTYago4PBeew9duLqWZ3SlDnTRM+PMIgZd/ILFrT5AfaAGd3jRNEfuPklFHFqOjfwbCvXpyzEYb5sXg== +electron-to-chromium@^1.3.306, electron-to-chromium@^1.3.322: + version "1.3.322" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" + integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== + elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -4098,6 +4538,22 @@ es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0 string.prototype.trimleft "^2.0.0" string.prototype.trimright "^2.0.0" +es-abstract@^1.15.0: + version "1.16.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.3.tgz#52490d978f96ff9f89ec15b5cf244304a5bca161" + integrity sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw== + 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.4" + is-regex "^1.0.4" + object-inspect "^1.7.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.1.0" + string.prototype.trimright "^2.1.0" + es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" @@ -4107,6 +4563,15 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: version "0.10.51" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.51.tgz#ed2d7d9d48a12df86e0299287e93a09ff478842f" @@ -4155,17 +4620,17 @@ escodegen@^1.11.0, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.5.0.tgz#aaf9a495e2a816865e541bfdbb73a65cc162b3eb" - integrity sha512-cjXp8SbO9VFGW/Z7mbTydqS9to8Z58E5aYhj3e1+Hx7lS9s6gL5ILKNpCqZAFOVYRcSkWPFYljHrEh8QFEK5EQ== +eslint-config-prettier@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz#9a876952e12df2b284adbd3440994bf1f39dfbb9" + integrity sha512-FamQVKM3jjUVwhG4hEMnbtsq7xOIDm+SY5iBPfR8gKsJoAB2IQnNF+bk1+8Fy44Nq7PPJaLvkRxILYdJWoguKQ== dependencies: get-stdin "^6.0.0" -eslint-config-react-app@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.0.2.tgz#df40d73a1402986030680c040bbee520db5a32a4" - integrity sha512-VhlESAQM83uULJ9jsvcKxx2Ab0yrmjUt8kDz5DyhTQufqWE0ssAnejlWri5LXv25xoXfdqOyeDPdfJS9dXKagQ== +eslint-config-react-app@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.1.0.tgz#a37b3f2d4f56f856f93277281ef52bd791273e63" + integrity sha512-hBaxisHC6HXRVvxX+/t1n8mOdmCVIKgkXsf2WoUkJi7upHJTwYTsdCmx01QPOjKNT34QMQQ9sL0tVBlbiMFjxA== dependencies: confusing-browser-globals "^1.0.9" @@ -4196,6 +4661,11 @@ eslint-module-utils@^2.4.0: debug "^2.6.8" pkg-dir "^2.0.0" +eslint-plugin-eslint-plugin@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.1.0.tgz#a7a00f15a886957d855feacaafee264f039e62d5" + integrity sha512-kT3A/ZJftt28gbl/Cv04qezb/NQ1dwYIbi8lyf806XMxkus7DvOVCLIfTXMrorp322Pnoez7+zabXH29tADIDg== + eslint-plugin-flowtype@3.13.0: version "3.13.0" resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" @@ -4247,35 +4717,36 @@ eslint-plugin-react-hooks@^1.6.1: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== -eslint-plugin-react@7.14.3: - version "7.14.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" - integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== +eslint-plugin-react@7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" + integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.1.0" + jsx-ast-utils "^2.2.1" object.entries "^1.1.0" object.fromentries "^2.0.0" object.values "^1.1.0" prop-types "^15.7.2" - resolve "^1.10.1" + resolve "^1.12.0" -eslint-plugin-react@7.16.0: - version "7.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz#9928e4f3e2122ed3ba6a5b56d0303ba3e41d8c09" - integrity sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug== +eslint-plugin-react@7.17.0: + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.17.0.tgz#a31b3e134b76046abe3cd278e7482bd35a1d12d7" + integrity sha512-ODB7yg6lxhBVMeiH1c7E95FLD4E/TwmFjltiU+ethv7KPdCwgiFuOZg9zNRHyufStTDLl/dEFqI2Q1VPmCd78A== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" + eslint-plugin-eslint-plugin "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.1" + jsx-ast-utils "^2.2.3" object.entries "^1.1.0" - object.fromentries "^2.0.0" + object.fromentries "^2.0.1" object.values "^1.1.0" prop-types "^15.7.2" - resolve "^1.12.0" + resolve "^1.13.1" eslint-scope@^4.0.3: version "4.0.3" @@ -4293,13 +4764,6 @@ eslint-scope@^5.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" - integrity sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q== - dependencies: - eslint-visitor-keys "^1.0.0" - eslint-utils@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" @@ -4312,10 +4776,10 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^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@6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.6.0.tgz#4a01a2fb48d32aacef5530ee9c5a78f11a8afd04" - integrity sha512-PpEBq7b6qY/qrOmpYQ/jTMDYfuQMELR4g4WI1M/NaSDDD/bdcMb+dj4Hgks7p41kW2caXsPsEZAEAyAgjVVC0g== +eslint@6.7.2, eslint@^6.6.0: + version "6.7.2" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.7.2.tgz#c17707ca4ad7b2d8af986a33feba71e18a9fecd1" + integrity sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -4332,7 +4796,7 @@ eslint@6.6.0: file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^11.7.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -4345,50 +4809,7 @@ eslint@6.6.0: minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^6.1.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.3.0.tgz#1f1a902f67bfd4c354e7288b81e40654d927eb6a" - integrity sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.2" - eslint-visitor-keys "^1.1.0" - espree "^6.1.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.4.1" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" + optionator "^0.8.3" progress "^2.0.0" regexpp "^2.0.1" semver "^6.1.2" @@ -4398,15 +4819,6 @@ eslint@^6.1.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.1.tgz#7f80e5f7257fc47db450022d723e356daeb1e5de" - integrity sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ== - dependencies: - acorn "^7.0.0" - acorn-jsx "^5.0.2" - eslint-visitor-keys "^1.1.0" - espree@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" @@ -4548,7 +4960,7 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -express@^4.16.2: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -4664,7 +5076,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4: +fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -4716,13 +5128,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" - integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^1.2.3" + schema-utils "^2.5.0" filename-reserved-regex@^1.0.0: version "1.0.0" @@ -4792,6 +5204,15 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.1.0.tgz#9935894999debef4cf9f677fdf646d002c4cdecb" + integrity sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + find-up@3.0.0, find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4885,10 +5306,10 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" - integrity sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA== +fork-ts-checker-webpack-plugin@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.0.tgz#fb411a4b2c3697e1cd7f83436d4feeacbcc70c7b" + integrity sha512-6OkRfjuNMNqb14f01xokcWcKV5Ekknc2FvziNpcTYru+kxIYFA2MtuuBI19MHThZnjSBhoi35Dcq+I0oUkFjmQ== dependencies: babel-code-frame "^6.22.0" chalk "^2.4.1" @@ -4933,19 +5354,19 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@7.0.1, fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -4967,6 +5388,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-minipass@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz#a6415edab02fae4b9e9230bc87ee2e4472003cd1" + integrity sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A== + dependencies: + minipass "^3.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -4982,10 +5410,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" - integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== +fsevents@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" + integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== fsevents@^1.2.7: version "1.2.9" @@ -5138,10 +5566,22 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -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.1: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +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.1: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -5166,11 +5606,18 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0, globals@^11.7.0: +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== + dependencies: + type-fest "^0.8.1" + globby@8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" @@ -5221,7 +5668,7 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== -graceful-fs@^4.2.0: +graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -5295,6 +5742,11 @@ has-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.1: + version "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" @@ -5441,7 +5893,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.0: +html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= @@ -5525,7 +5977,7 @@ http-errors@~1.7.2: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= -http-proxy-middleware@^0.19.1: +http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== @@ -5566,10 +6018,10 @@ humanize-url@^1.0.0: normalize-url "^1.0.0" strip-url-auth "^1.0.0" -husky@3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.9.tgz#a2c3e9829bfd6b4957509a9500d2eef5dbfc8044" - integrity sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg== +husky@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-3.1.0.tgz#5faad520ab860582ed94f0c1a77f0f04c90b57c0" + integrity sha512-FJkPoHHB+6s4a+jwPqBudBDvYZsoQW5/HBuMSehC8qDiCe50kpcxeqFoDSlow+9I6wg47YxBoT3WxaURlrDIIQ== dependencies: chalk "^2.4.2" ci-info "^2.0.0" @@ -5590,12 +6042,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -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= - -icss-utils@^4.1.0: +icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== @@ -5674,6 +6121,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.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== + dependencies: + 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" @@ -5706,12 +6161,17 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + 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: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -5763,25 +6223,6 @@ inquirer@6.5.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^6.4.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - inquirer@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" @@ -5801,7 +6242,7 @@ inquirer@^7.0.0: strip-ansi "^5.1.0" through "^2.3.6" -internal-ip@^4.2.0: +internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== @@ -5851,6 +6292,11 @@ is-absolute-url@^2.0.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-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" @@ -6040,6 +6486,11 @@ is-path-cwd@^1.0.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= +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" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" @@ -6047,6 +6498,13 @@ is-path-in-cwd@^1.0.0: dependencies: is-path-inside "^1.0.0" +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" @@ -6054,6 +6512,13 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -6137,6 +6602,11 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -6265,7 +6735,7 @@ jest-config@^24.9.0: pretty-format "^24.9.0" realpath-native "^1.1.0" -jest-diff@^24.9.0: +jest-diff@^24.3.0, jest-diff@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== @@ -6548,13 +7018,14 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-watch-typeahead@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.0.tgz#4d5356839a85421588ce452d2440bf0d25308397" - integrity sha512-bJR/HPNgOQnkmttg1OkBIrYFAYuxFxExtgQh67N2qPvaWGVC8TCkedRNPKBfmZfVXFD3u2sCH+9OuS5ApBfCgA== +jest-watch-typeahead@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== dependencies: ansi-escapes "^4.2.1" chalk "^2.4.1" + jest-regex-util "^24.9.0" jest-watcher "^24.3.0" slash "^3.0.0" string-length "^3.1.0" @@ -6774,7 +7245,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: +jsx-ast-utils@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== @@ -6782,6 +7253,14 @@ jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: array-includes "^3.0.3" object.assign "^4.1.0" +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== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + junk@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/junk/-/junk-1.0.3.tgz#87be63488649cbdca6f53ab39bec9ccd2347f592" @@ -6792,7 +7271,7 @@ keyboard-key@^1.0.4: resolved "https://registry.yarnpkg.com/keyboard-key/-/keyboard-key-1.0.4.tgz#52d8fa07b7e17757072aa22a67fb4ae85e4c46b0" integrity sha512-my04dE6BCwPpwoe4KYKfPxWiwgDYQOHrVmtzn1CfzmoEsGG/ef4oZGaXCzi1+iFhG7CN5JkOuxmei5OABY8/ag== -killable@^1.0.0: +killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== @@ -6932,7 +7411,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, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, 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== @@ -7024,10 +7503,10 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -loglevel@^1.4.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" - integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA== +loglevel@^1.6.4: + version "1.6.6" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" + integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" @@ -7072,6 +7551,13 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" + integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + dependencies: + semver "^6.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -7324,6 +7810,27 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" + minipass@^2.2.1, minipass@^2.3.5: version "2.5.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.5.0.tgz#dddb1d001976978158a05badfcbef4a771612857" @@ -7332,6 +7839,13 @@ minipass@^2.2.1, minipass@^2.3.5: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" @@ -7371,7 +7885,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, 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= @@ -7383,10 +7897,10 @@ mobx-react-lite@^1.4.2: resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-1.5.1.tgz#8eac90985b4d2bee475dd90a0d4d903be578f154" integrity sha512-40Gn8hFq+MuNHqCaeSo2adN4WvpWkIeSYZVJWzRzm0rbEf0BFow6Ir9IefErql0pX9q650TN1JAQXvrXxKR8Mg== -mobx-react-router@4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/mobx-react-router/-/mobx-react-router-4.0.7.tgz#d248a0e0525049f0e37e94f2fb1ab09563be4c35" - integrity sha512-x7eza70EimFyvF0VPyj5X2MYo9jksy61UVwz5ERXWnXVE911XRTL/V2kXiX7fvVtMHzp5m2q/kxBoti9uNixEw== +mobx-react-router@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mobx-react-router/-/mobx-react-router-4.1.0.tgz#de014848207d8aa32f6a4e67ed861bd2cb6516e5" + integrity sha512-2knsbDqVorWLngZWbdO8tr7xcZXaLpVFsFlCaGaoyZ+EP9erVGRxnlWGqKyFObs3EH1JPLyTDOJ2LPTxb/lB6Q== mobx-react@6.1.4: version "6.1.4" @@ -7529,10 +8043,10 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== +node-forge@0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" + integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== node-gyp@^3.8.0: version "3.8.0" @@ -7625,6 +8139,13 @@ node-releases@^1.1.29: dependencies: semver "^5.3.0" +node-releases@^1.1.40, node-releases@^1.1.42: + version "1.1.42" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.42.tgz#a999f6a62f8746981f6da90627a8d2fc090bbad7" + integrity sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA== + dependencies: + semver "^6.3.0" + node-sass@4.13.0: version "4.13.0" resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.0.tgz#b647288babdd6a1cb726de4545516b31f90da066" @@ -7769,7 +8290,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.1.1, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -7793,6 +8314,11 @@ object-inspect@^1.6.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +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== + object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" @@ -7845,6 +8371,16 @@ object.fromentries@^2.0.0: function-bind "^1.1.1" has "^1.0.1" +object.fromentries@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704" + integrity sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.15.0" + function-bind "^1.1.1" + has "^1.0.3" + object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -7908,19 +8444,19 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^6.3.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== +open@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.0.tgz#7e52999b14eb73f90f0f0807fe93897c4ae73ec9" + integrity sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ== dependencies: - is-wsl "^1.1.0" + is-wsl "^2.1.0" opencollective-postinstall@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== -opn@^5.1.0: +opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== @@ -7943,7 +8479,7 @@ optimize-css-assets-webpack-plugin@5.0.3: cssnano "^4.1.10" last-call-webpack-plugin "^3.0.0" -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= @@ -7955,6 +8491,18 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + original@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" @@ -8063,16 +8611,30 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -8200,7 +8762,7 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -8255,6 +8817,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" @@ -8326,7 +8893,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.2.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -8364,14 +8931,14 @@ popper.js@^1.14.4: resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA== -portfinder@^1.0.9: - version "1.0.23" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.23.tgz#894db4bcc5daf02b6614517ce89cd21a38226b82" - integrity sha512-B729mL/uLklxtxuiJKfQ84WPxNw5a7Yhx3geQZdcA4GjNjZSTSSMMWyoennMVnTWSmAR0lMdzWYN0JLnHrg1KQ== +portfinder@^1.0.25: + version "1.0.25" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" + integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.1" posix-character-classes@^0.1.0: version "0.1.1" @@ -8386,12 +8953,12 @@ postcss-attribute-case-insensitive@^4.0.1: postcss "^7.0.2" postcss-selector-parser "^5.0.0" -postcss-browser-comments@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-2.0.0.tgz#dc48d6a8ddbff188a80a000b7393436cb18aed88" - integrity sha512-xGG0UvoxwBc4Yx4JX3gc0RuDl1kc4bVihCzzk6UC72YPfq5fu3c717Nu8Un3nvnq1BJ31gBnFXIG/OaUTnpHgA== +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - postcss "^7.0.2" + postcss "^7" postcss-calc@^7.0.1: version "7.0.1" @@ -8700,14 +9267,15 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63" - integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA== +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - postcss-value-parser "^3.3.1" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" postcss-modules-scope@^2.1.0: version "2.1.0" @@ -8717,12 +9285,12 @@ postcss-modules-scope@^2.1.0: postcss "^7.0.6" postcss-selector-parser "^6.0.0" -postcss-modules-values@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64" - integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w== +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - icss-replace-symbols "^1.1.0" + icss-utils "^4.0.0" postcss "^7.0.6" postcss-nesting@^7.0.0: @@ -8813,15 +9381,16 @@ postcss-normalize-whitespace@^4.0.2: postcss "^7.0.0" postcss-value-parser "^3.0.0" -postcss-normalize@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-7.0.1.tgz#eb51568d962b8aa61a8318383c8bb7e54332282e" - integrity sha512-NOp1fwrG+6kVXWo7P9SizCHX6QvioxFD/hZcI2MLxPmVnFJFC0j0DDpIuNw2tUDeCFMni59gCVgeJ1/hYhj2OQ== +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== dependencies: - "@csstools/normalize.css" "^9.0.1" - browserslist "^4.1.1" - postcss "^7.0.2" - postcss-browser-comments "^2.0.0" + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" postcss-ordered-values@^4.1.2: version "4.1.2" @@ -8973,7 +9542,7 @@ postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-sel indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -9001,7 +9570,7 @@ postcss-unique-selectors@^4.0.1: postcss "^7.0.0" uniqs "^2.0.0" -postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: 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== @@ -9020,10 +9589,19 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@7.0.14: - version "7.0.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" - integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7, postcss@^7.0.16: + version "7.0.24" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.24.tgz#972c3c5be431b32e40caefe6c81b5a19117704c2" + integrity sha512-Xl0XvdNWg+CblAXzNvbSOUvgJXwSjmbAKORqyw9V2AlHrm1js2gFw9y3jibBAhpKZi8b5JzJCVh/FyzPsTtgTA== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -9120,13 +9698,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise@8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6" - integrity sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw== - dependencies: - asap "~2.0.6" - promise@^7.0.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -9134,6 +9705,13 @@ promise@^7.0.1: dependencies: asap "~2.0.3" +promise@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6" + integrity sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw== + dependencies: + asap "~2.0.6" + prompts@^2.0.1: version "2.2.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" @@ -9264,7 +9842,7 @@ querystringify@^2.1.1: resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== -raf@3.4.1: +raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -9311,33 +9889,33 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-app-polyfill@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.4.tgz#4dd2636846b585c2d842b1e44e1bc29044345874" - integrity sha512-5Vte6ki7jpNsNCUKaboyofAhmURmCn2Y6Hu7ydJ6Iu4dct1CIGoh/1FT7gUZKAbowVX2lxVPlijvp1nKxfAl4w== +react-app-polyfill@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-1.0.5.tgz#59c7377a0b9ed25692eeaca7ad9b12ef2d064709" + integrity sha512-RcbV6+msbvZJZUIK/LX3UafPtoaDSJgUWu4sqBxHKTVmBsnlU2QWCKJRBRmgjxu+ivW/GPINbPWRM4Ppa6Lbgw== dependencies: - core-js "3.2.1" - object-assign "4.1.1" - promise "8.0.3" - raf "3.4.1" - regenerator-runtime "0.13.3" - whatwg-fetch "3.0.0" + core-js "^3.4.1" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" -react-dev-utils@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" - integrity sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg== +react-dev-utils@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.0.0.tgz#bd2d16426c7e4cbfed1b46fb9e2ac98ec06fcdfa" + integrity sha512-8OKSJvl8ccXJDNf0YGw377L9v1OnT16skD/EuZWm0M/yr255etP4x4kuUCT1EfFfJ7Rhc4ZTpPTfPrvgiXa50Q== dependencies: "@babel/code-frame" "7.5.5" address "1.1.2" - browserslist "4.7.0" + browserslist "4.7.3" chalk "2.4.2" cross-spawn "6.0.5" detect-port-alt "1.1.6" escape-string-regexp "1.0.5" filesize "3.6.1" find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.5.0" + fork-ts-checker-webpack-plugin "3.1.0" global-modules "2.0.0" globby "8.0.2" gzip-size "5.1.1" @@ -9345,29 +9923,28 @@ react-dev-utils@^9.1.0: inquirer "6.5.0" is-root "2.1.0" loader-utils "1.2.3" - open "^6.3.0" + open "^7.0.0" pkg-up "2.0.0" - react-error-overlay "^6.0.3" + react-error-overlay "^6.0.4" recursive-readdir "2.2.2" shell-quote "1.7.2" - sockjs-client "1.4.0" strip-ansi "5.2.0" text-table "0.2.0" -react-dom@16.11.0: - version "16.11.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.11.0.tgz#7e7c4a5a85a569d565c2462f5d345da2dd849af5" - integrity sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA== +react-dom@16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" + integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.17.0" + scheduler "^0.18.0" -react-error-overlay@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.3.tgz#c378c4b0a21e88b2e159a3e62b2f531fd63bf60d" - integrity sha512-bOUvMWFQVk5oz8Ded9Xb7WVdEi3QGLC8tH7HmYP0Fdp4Bn3qw0tRFmr5TW6mvahzvmrK4a6bqWGfCevBflP+Xw== +react-error-overlay@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.4.tgz#0d165d6d27488e660bc08e57bdabaad741366f7a" + integrity sha512-ueZzLmHltszTshDMwyfELDq8zOA803wQ1ZuzCccXa1m57k1PxSHfflPD5W9YIiTXLs0JTLzoj6o1LuM5N6zzNA== react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: version "16.9.0" @@ -9415,71 +9992,70 @@ react-router@5.1.2: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-scripts@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.2.0.tgz#58ccd6b4ffa27f1b4d2986cbdcaa916660e9e33c" - integrity sha512-6LzuKbE2B4eFQG6i1FnTScn9HDcWBfXXnOwW9xKFPJ/E3rK8i1ufbOZ0ocKyRPxJAKdN7iqg3i7lt0+oxkSVOA== +react-scripts@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.3.0.tgz#f26a21f208f20bd04770f43e50b5bbc151920c2a" + integrity sha512-hzPc6bxCc9GnsspWqk494c2Gpd0dRbk/C8q76BNQIENi9GMwoxFljOEcZoZcpFpJgQ45alxFR6QaLt+51qie7g== dependencies: - "@babel/core" "7.6.0" - "@svgr/webpack" "4.3.2" - "@typescript-eslint/eslint-plugin" "^2.2.0" - "@typescript-eslint/parser" "^2.2.0" + "@babel/core" "7.7.4" + "@svgr/webpack" "4.3.3" + "@typescript-eslint/eslint-plugin" "^2.8.0" + "@typescript-eslint/parser" "^2.8.0" babel-eslint "10.0.3" babel-jest "^24.9.0" babel-loader "8.0.6" - babel-plugin-named-asset-import "^0.3.4" - babel-preset-react-app "^9.0.2" - camelcase "^5.2.0" + babel-plugin-named-asset-import "^0.3.5" + babel-preset-react-app "^9.1.0" + camelcase "^5.3.1" case-sensitive-paths-webpack-plugin "2.2.0" - css-loader "2.1.1" - dotenv "6.2.0" + css-loader "3.2.0" + dotenv "8.2.0" dotenv-expand "5.1.0" - eslint "^6.1.0" - eslint-config-react-app "^5.0.2" + eslint "^6.6.0" + eslint-config-react-app "^5.1.0" eslint-loader "3.0.2" eslint-plugin-flowtype "3.13.0" eslint-plugin-import "2.18.2" eslint-plugin-jsx-a11y "6.2.3" - eslint-plugin-react "7.14.3" + eslint-plugin-react "7.16.0" eslint-plugin-react-hooks "^1.6.1" - file-loader "3.0.1" - fs-extra "7.0.1" + file-loader "4.3.0" + fs-extra "^8.1.0" html-webpack-plugin "4.0.0-beta.5" identity-obj-proxy "3.0.0" - is-wsl "^1.1.0" jest "24.9.0" jest-environment-jsdom-fourteen "0.1.0" jest-resolve "24.9.0" - jest-watch-typeahead "0.4.0" + jest-watch-typeahead "0.4.2" mini-css-extract-plugin "0.8.0" optimize-css-assets-webpack-plugin "5.0.3" pnp-webpack-plugin "1.5.0" postcss-flexbugs-fixes "4.1.0" postcss-loader "3.0.0" - postcss-normalize "7.0.1" + postcss-normalize "8.0.1" postcss-preset-env "6.7.0" postcss-safe-parser "4.0.1" - react-app-polyfill "^1.0.4" - react-dev-utils "^9.1.0" - resolve "1.12.0" - resolve-url-loader "3.1.0" - sass-loader "7.2.0" + react-app-polyfill "^1.0.5" + react-dev-utils "^10.0.0" + resolve "1.12.2" + resolve-url-loader "3.1.1" + sass-loader "8.0.0" semver "6.3.0" style-loader "1.0.0" - terser-webpack-plugin "1.4.1" - ts-pnp "1.1.4" - url-loader "2.1.0" - webpack "4.41.0" - webpack-dev-server "3.2.1" - webpack-manifest-plugin "2.1.1" + terser-webpack-plugin "2.2.1" + ts-pnp "1.1.5" + url-loader "2.3.0" + webpack "4.41.2" + webpack-dev-server "3.9.0" + webpack-manifest-plugin "2.2.0" workbox-webpack-plugin "4.3.1" optionalDependencies: - fsevents "2.0.7" + fsevents "2.1.2" -react@16.11.0: - version "16.11.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.11.0.tgz#d294545fe62299ccee83363599bf904e4a07fdbb" - integrity sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g== +react@16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" + integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -9627,16 +10203,16 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@0.13.3, regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== - regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" @@ -9657,7 +10233,7 @@ regex-parser@2.2.10: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== -regexp-tree@^0.1.13, regexp-tree@^0.1.6: +regexp-tree@^0.1.6: version "0.1.13" resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.13.tgz#5b19ab9377edc68bc3679256840bb29afc158d7f" integrity sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw== @@ -9674,6 +10250,11 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" + integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== + regexpu-core@^4.5.4: version "4.5.5" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.5.tgz#aaffe61c2af58269b3e516b61a73790376326411" @@ -9686,6 +10267,18 @@ regexpu-core@^4.5.4: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" +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== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.1.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + regjsgen@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" @@ -9835,18 +10428,18 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve-url-loader@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.0.tgz#54d8181d33cd1b66a59544d05cadf8e4aa7d37cc" - integrity sha512-2QcrA+2QgVqsMJ1Hn5NnJXIGCX1clQ1F6QJTqOeiaDw9ACo1G2k+8/shq3mtqne03HOFyskAClqfxKyFBriXZg== +resolve-url-loader@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" + integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== dependencies: adjust-sourcemap-loader "2.0.0" - camelcase "5.0.0" + camelcase "5.3.1" compose-function "3.0.3" - convert-source-map "1.6.0" + convert-source-map "1.7.0" es6-iterator "2.0.3" loader-utils "1.2.3" - postcss "7.0.14" + postcss "7.0.21" rework "1.0.1" rework-visit "1.0.0" source-map "0.6.1" @@ -9861,13 +10454,27 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.12.0, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.2.tgz#08b12496d9aa8659c75f534a8f05f0d892fff594" + integrity sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" +resolve@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" + integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -9889,6 +10496,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + rework-visit@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" @@ -9912,7 +10524,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -10002,6 +10614,11 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + sass-graph@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" @@ -10012,16 +10629,16 @@ sass-graph@^2.2.4: scss-tokenizer "^0.2.3" yargs "^7.0.0" -sass-loader@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.2.0.tgz#e34115239309d15b2527cb62b5dfefb62a96ff7f" - integrity sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA== +sass-loader@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.0.tgz#e7b07a3e357f965e6b03dd45b016b0a9746af797" + integrity sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w== dependencies: clone-deep "^4.0.1" - loader-utils "^1.0.1" - neo-async "^2.5.0" - pify "^4.0.1" - semver "^5.5.0" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.1.0" + semver "^6.3.0" sax@^1.2.4, sax@~1.2.4: version "1.2.4" @@ -10035,10 +10652,10 @@ saxes@^3.1.9: dependencies: xmlchars "^2.1.1" -scheduler@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.17.0.tgz#7c9c673e4ec781fac853927916d1c426b6f3ddfe" - integrity sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA== +scheduler@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" + integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -10060,6 +10677,14 @@ schema-utils@^2.0.0, schema-utils@^2.0.1: ajv "^6.10.2" ajv-keywords "^3.4.1" +schema-utils@^2.1.0, schema-utils@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" + integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== + dependencies: + ajv "^6.10.2" + ajv-keywords "^3.4.1" + schema-utils@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.5.0.tgz#8f254f618d402cc80257486213c8970edfd7c22f" @@ -10086,12 +10711,12 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.9.1: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== +selfsigned@^1.10.7: + version "1.10.7" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" + integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== dependencies: - node-forge "0.7.5" + node-forge "0.9.0" semantic-ui-css@2.4.1: version "2.4.1" @@ -10100,10 +10725,10 @@ semantic-ui-css@2.4.1: dependencies: jquery x.* -semantic-ui-react@0.88.1: - version "0.88.1" - resolved "https://registry.yarnpkg.com/semantic-ui-react/-/semantic-ui-react-0.88.1.tgz#006d63f838b651370d68e73510327308f19ff6fd" - integrity sha512-fCCDnRXiVJUJ9icFVSu0n0pZ2cg2QssiLM2nP4pz6aODQpPZTPtXVI6V/hFciwJ+GPkV6WZAmEmFLxR7nRVF4Q== +semantic-ui-react@0.88.2: + version "0.88.2" + resolved "https://registry.yarnpkg.com/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz#3d4b54f8b799769b412435c8531475fd34aa4149" + integrity sha512-+02kN2z8PuA/cMdvDUsHhbJmBzxxgOXVHMFr9XK7zGb0wkW9A6OPQMFokWz7ozlVtKjN6r7zsb+Qvjk/qq1OWw== dependencies: "@babel/runtime" "^7.1.2" "@semantic-ui-react/event-stack" "^3.1.0" @@ -10161,7 +10786,12 @@ serialize-javascript@^1.7.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.0.tgz#5b77019d7c3b85fe91b33ae424c53dcbfb6618bd" integrity sha512-UkGlcYMtw4d9w7YfCtJFgdRTps8N4L0A48R+SmcGL57ki1+yHwJXnalk5bjgrw+ljv6SfzjzPjhohod2qllg/Q== -serve-index@^1.7.2: +serialize-javascript@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -10342,18 +10972,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - sockjs-client@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" @@ -10465,7 +11083,7 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.0: +spdy@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== @@ -10510,6 +11128,14 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -10641,6 +11267,14 @@ string.prototype.trimleft@^2.0.0: define-properties "^1.1.2" function-bind "^1.0.2" +string.prototype.trimleft@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string.prototype.trimright@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.0.0.tgz#ab4a56d802a01fbe7293e11e84f24dc8164661dd" @@ -10649,6 +11283,14 @@ string.prototype.trimright@^2.0.0: define-properties "^1.1.2" function-bind "^1.0.2" +string.prototype.trimright@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + 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" @@ -10854,7 +11496,21 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -terser-webpack-plugin@1.4.1, terser-webpack-plugin@^1.4.1: +terser-webpack-plugin@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.2.1.tgz#5569e6c7d8be79e5e43d6da23acc3b6ba77d22bd" + integrity sha512-jwdauV5Al7zopR6OAYvIIRcxXCSvLjZjr7uZE8l2tIWb/ryrGN48sJftqGf5k9z09tWhajx53ldp0XPI080YnA== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.0.0" + jest-worker "^24.9.0" + schema-utils "^2.5.0" + serialize-javascript "^2.1.0" + source-map "^0.6.1" + terser "^4.3.9" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== @@ -10878,6 +11534,15 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^4.3.9: + version "4.4.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.2.tgz#448fffad0245f4c8a277ce89788b458bfd7706e8" + integrity sha512-Uufrsvhj9O1ikwgITGsZ5EZS6qPokUOkCegS7fYOdGTv+OA90vndUbU6PEjr5ePqHfNUbGyMO7xyIZv2MhsALQ== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -11044,7 +11709,12 @@ trim-right@^1.0.1: dependencies: glob "^7.1.2" -ts-pnp@1.1.4, ts-pnp@^1.1.2: +ts-pnp@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec" + integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA== + +ts-pnp@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.4.tgz#ae27126960ebaefb874c6d7fa4729729ab200d90" integrity sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw== @@ -11095,6 +11765,11 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -11118,10 +11793,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.2.tgz#27e489b95fa5909445e9fef5ee48d81697ad18fb" - integrity sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ== +typescript@3.7.3: + version "3.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.3.tgz#b36840668a16458a7025b9eabfad11b66ab85c69" + integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw== uglify-js@3.4.x: version "3.4.10" @@ -11241,14 +11916,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-loader@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.1.0.tgz#bcc1ecabbd197e913eca23f5e0378e24b4412961" - integrity sha512-kVrp/8VfEm5fUt+fl2E0FQyrpmOYgMEkBsv8+UDP1wFhszECq5JyGF33I7cajlVY90zRZ6MyfgKXngLvHYZX8A== +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== dependencies: loader-utils "^1.2.3" mime "^2.4.4" - schema-utils "^2.0.0" + schema-utils "^2.5.0" url-parse@^1.4.3: version "1.4.7" @@ -11411,10 +12086,10 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-dev-middleware@^3.5.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.1.tgz#1167aea02afa034489869b8368fe9fed1aea7d09" - integrity sha512-5MWu9SH1z3hY7oHOV6Kbkz5x7hXbxK56mGHNqHTe6d+ewxOwKUxoUJBs7QIaJb33lPjl9bJZ3X0vCoooUzC36A== +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -11422,41 +12097,44 @@ webpack-dev-middleware@^3.5.1: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e" - integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw== +webpack-dev-server@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" + integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.0.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" debug "^4.1.1" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" - http-proxy-middleware "^0.19.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "0.19.1" import-local "^2.0.0" - internal-ip "^4.2.0" + internal-ip "^4.3.0" ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.4" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.25" schema-utils "^1.0.0" - selfsigned "^1.9.1" - semver "^5.6.0" - serve-index "^1.7.2" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.0" + sockjs-client "1.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.5.1" + webpack-dev-middleware "^3.7.2" webpack-log "^2.0.0" - yargs "12.0.2" + ws "^6.2.1" + yargs "12.0.5" webpack-log@^2.0.0: version "2.0.0" @@ -11466,10 +12144,10 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-manifest-plugin@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.1.1.tgz#6b3e280327815b83152c79f42d0ca13b665773c4" - integrity sha512-2zqJ6mvc3yoiqfDjghAIpljhLSDh/G7vqGrzYcYqqRCd/ZZZCAuc/YPE5xG0LGpLgDJRhUNV1H+znyyhIxahzA== +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== dependencies: fs-extra "^7.0.0" lodash ">=3.5 <5" @@ -11483,7 +12161,7 @@ webpack-merge@^4.2.2: dependencies: lodash "^4.17.15" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -11491,10 +12169,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.41.0: - version "4.41.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.0.tgz#db6a254bde671769f7c14e90a1a55e73602fc70b" - integrity sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g== +webpack@4.41.2: + version "4.41.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" + integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -11541,7 +12219,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@3.0.0: +whatwg-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== @@ -11593,6 +12271,11 @@ wide-align@^1.1.0: 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" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" @@ -11797,7 +12480,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.2: +ws@^6.1.2, ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== @@ -11814,11 +12497,6 @@ xmlchars@^2.1.1: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.1.1.tgz#ef1a81c05bff629c2280007f12daca21bd6f6c93" integrity sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w== -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -11844,12 +12522,25 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + +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 "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" yargs-parser@^13.1.1: version "13.1.1" @@ -11866,13 +12557,13 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== +yargs@12.0.5: + 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 "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -11882,7 +12573,7 @@ yargs@12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" + yargs-parser "^11.1.1" yargs@^13.3.0: version "13.3.0" From 5ccf5ae4c1ca85c5ab0bdb8c0c00c506bb1ebf59 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 16 Dec 2019 12:02:53 -0600 Subject: [PATCH 15/16] refactor requestAction --- src/stores/BaseStore.ts | 9 +++++---- src/stores/shows/ShowsStore.ts | 17 +++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/stores/BaseStore.ts b/src/stores/BaseStore.ts index 39f2a45..cd367a6 100644 --- a/src/stores/BaseStore.ts +++ b/src/stores/BaseStore.ts @@ -11,15 +11,16 @@ export default class BaseStore { this.rootStore = rootStore; } - async requestAction(effect: () => Promise, prop: (requestData: IRequestStatus) => void) { + async requestAction(setStatus: (requestData: IRequestStatus) => void, effect: Promise) { + // async requestAction(effect: () => Promise, prop: (requestData: IRequestStatus) => void) { const status: IRequestStatus = { ...initialRequestStatus(null), isRequesting: true, }; - runInAction(() => prop(status)); + runInAction(() => setStatus(status)); - const response = await effect(); + const response = await effect; if (response instanceof HttpErrorResponseModel) { status.error = response; @@ -31,6 +32,6 @@ export default class BaseStore { status.isRequesting = false; - runInAction(() => prop(status)); + runInAction(() => setStatus(status)); } } diff --git a/src/stores/shows/ShowsStore.ts b/src/stores/shows/ShowsStore.ts index a53188c..a394776 100644 --- a/src/stores/shows/ShowsStore.ts +++ b/src/stores/shows/ShowsStore.ts @@ -24,8 +24,8 @@ export default class ShowsStore extends BaseStore { const endpoint = environment.api.shows.replace(':showId', this.currentShowId); await this.requestAction( - () => EffectUtility.getToModel(ShowModel, endpoint), - (status: IRequestStatus) => (this.show = status) + (status: IRequestStatus) => (this.show = status), + EffectUtility.getToModel(ShowModel, endpoint) ); } @@ -34,8 +34,8 @@ export default class ShowsStore extends BaseStore { const endpoint = environment.api.episodes.replace(':showId', this.currentShowId); await this.requestAction( - () => EffectUtility.getToModel(EpisodeModel, endpoint), - (status: IRequestStatus) => (this.episodes = status) + (status: IRequestStatus) => (this.episodes = status), + EffectUtility.getToModel(EpisodeModel, endpoint) ); } @@ -44,8 +44,8 @@ export default class ShowsStore extends BaseStore { const endpoint = environment.api.cast.replace(':showId', this.currentShowId); await this.requestAction( - () => EffectUtility.getToModel(CastModel, endpoint), - (status: IRequestStatus) => (this.actors = status) + (status: IRequestStatus) => (this.actors = status), + EffectUtility.getToModel(CastModel, endpoint) ); } @@ -56,10 +56,7 @@ export default class ShowsStore extends BaseStore { async requestError(): Promise { const endpoint = environment.api.errorExample; - await this.requestAction( - () => HttpUtility.get(endpoint), - (status) => (this.errorExample = status) - ); + await this.requestAction((status) => (this.errorExample = status), HttpUtility.get(endpoint)); } @computed From 94f8d4cf5569498f3ffe25b9fd4187c83977acd4 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 16 Dec 2019 12:03:30 -0600 Subject: [PATCH 16/16] refactor requestAction --- src/stores/BaseStore.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/stores/BaseStore.ts b/src/stores/BaseStore.ts index cd367a6..0ce5d4d 100644 --- a/src/stores/BaseStore.ts +++ b/src/stores/BaseStore.ts @@ -12,7 +12,6 @@ export default class BaseStore { } async requestAction(setStatus: (requestData: IRequestStatus) => void, effect: Promise) { - // async requestAction(effect: () => Promise, prop: (requestData: IRequestStatus) => void) { const status: IRequestStatus = { ...initialRequestStatus(null), isRequesting: true,