diff --git a/webapp/package.json b/webapp/package.json index 8bde4ded..b92b0a70 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -34,8 +34,6 @@ "@mui/lab": "^5.0.0-alpha.90", "@mui/material": "^5.9.0", "@mui/styles": "^5.9.0", - "@rematch/core": "^2.2.0", - "@rematch/loading": "^2.1.2", "apollo-cache-inmemory": "^1.6.6", "apollo-client": "^2.6.10", "apollo-link": "^1.2.14", @@ -73,13 +71,11 @@ "react-helmet": "^6.1.0", "react-i18next": "^11.7.0", "react-perfect-scrollbar": "^1.5.8", - "react-redux": "^7.2.0", "react-router": "^5.1.2", "react-router-dom": "^6.4.3", "react-scripts": "^3.4.1", "react-simple-maps": "^2.0.0", "recharts": "^1.8.5", - "redux": "^4.0.5", "reselect": "^4.0.0", "styled-components": "^5.2.0", "subscriptions-transport-ws": "^0.9.17", diff --git a/webapp/src/components/ContractTables/TableData.js b/webapp/src/components/ContractTables/TableData.js index 625b4531..037da290 100644 --- a/webapp/src/components/ContractTables/TableData.js +++ b/webapp/src/components/ContractTables/TableData.js @@ -19,6 +19,10 @@ const TableData = ({ tableData, fields, handleSubmit }) => { const classes = useStyles() const { t } = useTranslation('contractTablesComponent') + const handleOnSubmit = () => { + handleSubmit(tableData.next_key) + } + if (!tableData) return <> return ( @@ -60,11 +64,7 @@ const TableData = ({ tableData, fields, handleSubmit }) => { {tableData?.more && (
-
diff --git a/webapp/src/components/ContractTables/index.js b/webapp/src/components/ContractTables/index.js index 5661f5b2..ab292729 100644 --- a/webapp/src/components/ContractTables/index.js +++ b/webapp/src/components/ContractTables/index.js @@ -116,7 +116,8 @@ const ContractTables = ({ useEffect(() => { handleSubmit(null) - }, [debouncedFilter, handleSubmit]) + // eslint-disable-next-line + }, [debouncedFilter]) return (
diff --git a/webapp/src/components/TransactionsLineChart/index.js b/webapp/src/components/TransactionsLineChart/index.js index 49cd2a98..e9d3dda5 100644 --- a/webapp/src/components/TransactionsLineChart/index.js +++ b/webapp/src/components/TransactionsLineChart/index.js @@ -6,20 +6,20 @@ import Highcharts from 'highcharts' const TransactionsLineChart = ({ data, xAxisProps, title, yAxisProps }) => { const options = { time: { - timezoneOffset: new Date().getTimezoneOffset() + timezoneOffset: new Date().getTimezoneOffset(), }, title: { - text: title + text: title, }, chart: { animation: false, - type: 'spline' + type: 'spline', }, credits: { - enabled: false + enabled: false, }, xAxis: xAxisProps, - yAxis: yAxisProps + yAxis: yAxisProps, } return ( @@ -28,7 +28,7 @@ const TransactionsLineChart = ({ data, xAxisProps, title, yAxisProps }) => { highcharts={Highcharts} options={{ ...options, - series: data + series: data, }} />
@@ -39,14 +39,14 @@ TransactionsLineChart.propTypes = { data: PropTypes.array, xAxisProps: PropTypes.object, yAxisProps: PropTypes.object, - title: PropTypes.string + title: PropTypes.string, } TransactionsLineChart.defaultProps = { data: [], xAxisProps: { xAxisVisible: false }, yAxisProps: {}, - title: '' + title: '', } export default TransactionsLineChart diff --git a/webapp/src/context/state.context.js b/webapp/src/context/state.context.js index 65582413..46937f65 100644 --- a/webapp/src/context/state.context.js +++ b/webapp/src/context/state.context.js @@ -2,6 +2,7 @@ import React, { useEffect } from 'react' import useLightUAL from '../hooks/useUAL' import { ualConfig } from '../config' +import eosApi from '../utils/eosapi' const SharedStateContext = React.createContext() @@ -34,6 +35,27 @@ const sharedStateReducer = (state, action) => { } } + case 'updateInfo': { + return { + ...state, + info: action.payload, + } + } + + case 'updateTransactionsStats': { + return { + ...state, + ...action.payload, + } + } + + case 'updateSchedule': { + return { + ...state, + schedule: action.payload, + } + } + default: { throw new Error(`Unsupported action type: ${action.type}`) } @@ -49,6 +71,14 @@ const initialValue = { currentEntity: null, dynamicTitle: '', }, + schedule: { + version: '', + producers: [], + }, + info: {}, + tps: new Array(30).fill({ blocks: [], transactions: 0 }), + tpb: new Array(60).fill({ blocks: [], transactions: 0 }), + tpsWaitingBlock: null, } export const SharedStateProvider = ({ ...props }) => { @@ -83,6 +113,9 @@ export const useSharedState = () => { } const [state, dispatch] = context + let infoInterval + let scheduleInterval + const update = (payload) => dispatch({ type: 'update', payload }) const login = (type) => { state.ual.login(type) @@ -104,6 +137,125 @@ export const useSharedState = () => { }) } + const getBlock = async (block) => { + try { + const data = await eosApi.getBlock(block) + let tpb = state.tpb + + if (state.tpb.length >= 60) { + tpb.pop() + } + + tpb = [ + { + blocks: [block], + transactions: data.transactions.length, + }, + ...tpb, + ] + + if (!state.tpsWaitingBlock) { + dispatch({ + type: 'updateTransactionsStats', + payload: { + tpb, + tpsWaitingBlock: { + block, + transactions: data.transactions.length, + }, + }, + }) + + return + } + + let tps = state.tps + + if (state.tps.length >= 30) { + tps.pop() + } + + tps = [ + { + blocks: [state.tpsWaitingBlock.block, block], + transactions: + state.tpsWaitingBlock.transactions + data.transactions.length, + }, + ...tps, + ] + + dispatch({ + type: 'updateTransactionsStats', + payload: { + tps, + tpb, + tpsWaitingBlock: null, + }, + }) + } catch (error) { + console.log(error) + } + } + + const startTrackingProducerSchedule = async ({ interval = 120 } = {}) => { + if (scheduleInterval) { + return + } + + const handle = async () => { + try { + const result = await eosApi.getProducerSchedule(true) + + dispatch({ type: 'updateSchedule', payload: result.active }) + } catch (error) { + console.error(error) + } + } + + await handle() + scheduleInterval = setInterval(handle, interval * 1000) + } + + const startTrackingInfo = async ({ interval = 1 } = {}) => { + if (infoInterval) return + + const handle = async () => { + try { + const info = await eosApi.getInfo({}) + + dispatch({ + type: 'updateInfo', + payload: info, + }) + getBlock(info.head_block_num) + } catch (error) { + console.error(error) + } + } + + if (interval === 0) { + await handle() + return + } + + await handle() + infoInterval = setInterval(handle, interval * 1000) + } + + const stopTrackingInfo = async () => { + if (!infoInterval) return + + clearInterval(infoInterval) + infoInterval = null + } + + const stopTrackingProducerSchedule = () => { + if (!scheduleInterval) return + + clearInterval(scheduleInterval) + scheduleInterval = null + } + return [ state, { @@ -112,6 +264,10 @@ export const useSharedState = () => { logout, handleOpenMenu, handleCloseMenu, + stopTrackingProducerSchedule, + stopTrackingInfo, + startTrackingInfo, + startTrackingProducerSchedule, }, ] } diff --git a/webapp/src/index.js b/webapp/src/index.js index 103188f7..f619565d 100644 --- a/webapp/src/index.js +++ b/webapp/src/index.js @@ -1,5 +1,4 @@ import React from 'react' -import { Provider } from 'react-redux' import { createRoot } from 'react-dom/client' import { ApolloProvider } from '@apollo/client' import { ThemeProvider as MuiThemeProvider } from '@mui/material/styles' @@ -7,7 +6,6 @@ import { StylesProvider } from '@mui/styles' import { ThemeProvider } from 'styled-components' import App from './App' -import store from './store' import theme from './theme' import { client } from './graphql' import * as serviceWorker from './serviceWorker' @@ -18,15 +16,13 @@ const root = createRoot(container) root.render( - - - - - - - - - + + + + + + + , ) diff --git a/webapp/src/models/eos.js b/webapp/src/models/eos.js deleted file mode 100644 index 5a668c52..00000000 --- a/webapp/src/models/eos.js +++ /dev/null @@ -1,145 +0,0 @@ -import eosApi from '../utils/eosapi' - -let infoInterval -let scheduleInterval - -export default { - state: { - schedule: { - version: '', - producers: [], - }, - info: {}, - tps: new Array(30).fill({ blocks: [], transactions: 0 }), - tpb: new Array(60).fill({ blocks: [], transactions: 0 }), - tpsWaitingBlock: null, - }, - reducers: { - updateInfo(state, info) { - return { - ...state, - info, - } - }, - updateTransactionsStats(state, item) { - let tpb = state.tpb - - if (state.tpb.length >= 60) { - tpb.pop() - } - - tpb = [ - { - blocks: [item.block], - transactions: item.transactions, - }, - ...tpb, - ] - - if (!state.tpsWaitingBlock) { - return { - ...state, - tpb, - tpsWaitingBlock: item, - } - } - - let tps = state.tps - - if (state.tps.length >= 30) { - tps.pop() - } - - tps = [ - { - blocks: [state.tpsWaitingBlock.block, item.block], - transactions: state.tpsWaitingBlock.transactions + item.transactions, - }, - ...tps, - ] - - return { - ...state, - tps, - tpb, - tpsWaitingBlock: null, - } - }, - updateSchedule(state, schedule) { - return { - ...state, - schedule, - } - }, - }, - effects: (dispatch) => ({ - async startTrackingInfo({ interval = 1 } = {}) { - if (infoInterval) return - - const handle = async () => { - try { - const info = await eosApi.getInfo({}) - - dispatch.eos.updateInfo(info) - dispatch.eos.getBlock(info.head_block_num) - } catch (error) { - console.error(error) - } - } - - if (interval === 0) { - await handle() - return - } - - await handle() - infoInterval = setInterval(handle, interval * 1000) - }, - async stopTrackingInfo() { - if (!infoInterval) { - return - } - - clearInterval(infoInterval) - infoInterval = null - }, - async getBlock(block) { - try { - const data = await eosApi.getBlock(block) - - dispatch.eos.updateTransactionsStats({ - block, - transactions: data.transactions.length, - }) - } catch (error) { - console.log(error) - } - }, - async startTrackingProducerSchedule({ interval = 120 } = {}) { - if (scheduleInterval) { - return - } - - const handle = async () => { - try { - const result = await eosApi.getProducerSchedule(true) - - dispatch.eos.updateSchedule(result.active) - } catch (error) { - console.error(error) - } - } - - await handle() - scheduleInterval = setInterval(handle, interval * 1000) - }, - async stopTrackingProducerSchedule() { - if (!scheduleInterval) { - return - } - - clearInterval(scheduleInterval) - scheduleInterval = null - }, - }), -} diff --git a/webapp/src/models/index.js b/webapp/src/models/index.js deleted file mode 100644 index 7603238b..00000000 --- a/webapp/src/models/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export { default as eos } from './eos' -export { default as user } from './user' -export { default as snackbar } from './snackbar' diff --git a/webapp/src/models/snackbar.js b/webapp/src/models/snackbar.js deleted file mode 100644 index d3a1695f..00000000 --- a/webapp/src/models/snackbar.js +++ /dev/null @@ -1,19 +0,0 @@ -export default { - state: { - open: false - }, - reducers: { - open(state, props) { - return { - ...state, - ...props, - open: true - } - }, - close() { - return { - open: false - } - } - } -} diff --git a/webapp/src/models/user.js b/webapp/src/models/user.js deleted file mode 100644 index 4484c8ad..00000000 --- a/webapp/src/models/user.js +++ /dev/null @@ -1,57 +0,0 @@ -import jwtDecode from 'jwt-decode' -import { createSelector } from 'reselect' - -import authAPI from '../api/auth.api' - -const getUser = (token) => { - if (!token) return {} - - const tokenData = jwtDecode(token) - - return { - ...tokenData, - token - } -} - -export default { - state: { - ...getUser(localStorage.getItem('token')) - }, - reducers: { - successLogin(state, token) { - return { - ...state, - ...getUser(token) - } - } - }, - effects: (dispatch) => ({ - async login(payload) { - try { - const token = await authAPI.login(payload.email, payload.password) - localStorage.setItem('token', token) - dispatch.user.successLogin(token) - } catch (error) { - dispatch.snackbar.open({ - message: error.message, - severity: 'error', - onClose: dispatch.snackbar.close - }) - } - }, - async logout() { - localStorage.removeItem('token') - dispatch({ type: 'RESET_APP' }) - } - }) -} - -export const isAuthenticatedSelector = createSelector( - (state) => state.user, - (user) => !!user.email -) -export const tokenSelector = createSelector( - (state) => state.user, - (user) => user.token -) diff --git a/webapp/src/routes/Accounts/index.js b/webapp/src/routes/Accounts/index.js index e7d29199..40be09c0 100644 --- a/webapp/src/routes/Accounts/index.js +++ b/webapp/src/routes/Accounts/index.js @@ -41,6 +41,7 @@ const Accounts = () => { onSubmitAction={handleSubmitAction} tableData={tableData} onGetTableRows={handleGetTableRows} + // onGetTableRows={() => console.log('callback render', account)} /> )} diff --git a/webapp/src/routes/Accounts/useAccountState.js b/webapp/src/routes/Accounts/useAccountState.js index e29c4785..306c4551 100644 --- a/webapp/src/routes/Accounts/useAccountState.js +++ b/webapp/src/routes/Accounts/useAccountState.js @@ -99,6 +99,8 @@ const useAccountState = () => { const handleGetTableRows = useCallback( async ({ loadMore, ...payload }) => { + if (state.loading) return + dispatch({ payload: true, type: 'SET_LOADING' }) try { @@ -129,7 +131,7 @@ const useAccountState = () => { } dispatch({ payload: false, type: 'SET_LOADING' }) }, - [showMessage, t, state.tableData], + [showMessage, t, state.tableData, state.loading], ) const handleOnSearch = async (valueAccount) => { diff --git a/webapp/src/routes/Home/BlockProducerInfo.js b/webapp/src/routes/Home/BlockProducerInfo.js index cbb74a8d..ce03f439 100644 --- a/webapp/src/routes/Home/BlockProducerInfo.js +++ b/webapp/src/routes/Home/BlockProducerInfo.js @@ -1,11 +1,11 @@ /* eslint camelcase: 0 */ import React, { lazy, useEffect, useState } from 'react' -import { useSelector } from 'react-redux' import { useQuery } from '@apollo/client' import PropTypes from 'prop-types' import { formatWithThousandSeparator } from '../../utils' import { NODES_QUERY, PRODUCERS_SUMMARY_QUERY } from '../../gql' +import { useSharedState } from '../../context/state.context' import { eosConfig } from '../../config' const Card = lazy(() => import('@mui/material/Card')) @@ -25,8 +25,7 @@ const BlockProducerInfo = ({ t, classes }) => { const { data: producersSummary, loading: producersLoading } = useQuery( PRODUCERS_SUMMARY_QUERY, ) - const scheduleInfo = useSelector((state) => state.eos.schedule) - const info = useSelector((state) => state.eos.info) + const [{ schedule: scheduleInfo, info }] = useSharedState() const [total, setTotal] = useState(0) const [schedule, setSchedule] = useState({ producers: [] }) @@ -145,96 +144,96 @@ const BlockProducerInfo = ({ t, classes }) => { {loading && } -
- - - - - } - /> -
- - - {t('cpuLimitPerBlock')} - - {`${(info.block_cpu_limit * 0.001).toFixed(0)} ms`} - - - -
-
- - - {t('netLimitPerBlock')} - - {`${formatWithThousandSeparator( - info.block_net_limit / 1024, - 0, - )} KB`} - - - -
-
- - - {t('chainCpuLimit')} - - {`${(info.virtual_block_cpu_limit * 0.001).toFixed(0)} ms`} - - - -
-
- - - {t('chainNetLimit')} - - {`${formatWithThousandSeparator( - info.virtual_block_net_limit / 1024, - 0, - )} KB`} - - - -
-
- - - {t('timeToFinality')} - - {schedule.producers - ? `${ - (Math.ceil((schedule.producers.length / 3) * 2) + 1) * 6 - } s` - : '0 s'} - - - -
+
+ + + + + } + /> +
+ + + {t('cpuLimitPerBlock')} + + {`${(info.block_cpu_limit * 0.001).toFixed(0)} ms`} + + + +
+
+ + + {t('netLimitPerBlock')} + + {`${formatWithThousandSeparator( + info.block_net_limit / 1024, + 0, + )} KB`} + + + +
+
+ + + {t('chainCpuLimit')} + + {`${(info.virtual_block_cpu_limit * 0.001).toFixed(0)} ms`} + + + +
+
+ + + {t('chainNetLimit')} + + {`${formatWithThousandSeparator( + info.virtual_block_net_limit / 1024, + 0, + )} KB`} + + +
+
+ + + {t('timeToFinality')} + + {schedule.producers + ? `${ + (Math.ceil((schedule.producers.length / 3) * 2) + 1) * 6 + } s` + : '0 s'} + + + +
+
) } diff --git a/webapp/src/routes/Home/TransactionInfo.js b/webapp/src/routes/Home/TransactionInfo.js index 06c8766e..1df32228 100644 --- a/webapp/src/routes/Home/TransactionInfo.js +++ b/webapp/src/routes/Home/TransactionInfo.js @@ -1,6 +1,5 @@ /* eslint camelcase: 0 */ import React, { useEffect, useState } from 'react' -import { useSelector } from 'react-redux' import { useLazyQuery } from '@apollo/client' import { useTheme } from '@mui/material/styles' import clsx from 'clsx' @@ -18,6 +17,7 @@ import LinearProgress from '@mui/material/LinearProgress' import { TRANSACTION_HISTORY_QUERY } from '../../gql' import { rangeOptions } from '../../utils' import TransactionsLineChart from '../../components/TransactionsLineChart' +import { useSharedState } from '../../context/state.context' import { generalConfig } from '../../config' import EqualIcon from './EqualIcon' @@ -26,23 +26,22 @@ const options = ['Live (30s)', ...rangeOptions] const TransactionInfo = ({ t, classes }) => { const theme = useTheme() - const tps = useSelector((state) => state.eos.tps) - const tpb = useSelector((state) => state.eos.tpb) + const [{ tps, tpb }] = useSharedState() const [graphicData, setGraphicData] = useState([ { name: t('transactionsPerSecond'), - color: theme.palette.secondary.main + color: theme.palette.secondary.main, }, { name: t('transactionsPerBlock'), - color: '#00C853' - } + color: '#00C853', + }, ]) const [option, setOption] = useState(options[0]) const [pause, setPause] = useState(false) const [getTransactionHistory, { data, loading }] = useLazyQuery( TRANSACTION_HISTORY_QUERY, - { fetchPolicy: 'network-only' } + { fetchPolicy: 'network-only' }, ) useEffect(() => { @@ -55,7 +54,7 @@ const TransactionInfo = ({ t, classes }) => { trxPerBlock.push({ name: `Block: ${tpb[index].blocks.join()}`, y: tpb[index].transactions, - x: index > 0 ? index / 2 : index + x: index > 0 ? index / 2 : index, }) } @@ -63,7 +62,7 @@ const TransactionInfo = ({ t, classes }) => { trxPerSecond.push({ name: `Blocks: ${tps[index].blocks.join(', ')}`, y: tps[index].transactions, - x: index + x: index, }) } @@ -71,13 +70,13 @@ const TransactionInfo = ({ t, classes }) => { { name: t('transactionsPerSecond'), color: theme.palette.secondary.main, - data: trxPerSecond + data: trxPerSecond, }, { name: t('transactionsPerBlock'), color: '#00C853', - data: trxPerBlock - } + data: trxPerBlock, + }, ]) // eslint-disable-next-line }, [option, tps, tpb]) @@ -87,7 +86,7 @@ const TransactionInfo = ({ t, classes }) => { setGraphicData([]) getTransactionHistory({ - variables: {} + variables: {}, }) }, [option, getTransactionHistory]) @@ -107,17 +106,17 @@ const TransactionInfo = ({ t, classes }) => { (transactionHistory) => { return [ new Date(transactionHistory.datetime).getTime(), - transactionHistory.transactions_count || 0 + transactionHistory.transactions_count || 0, ] - } + }, ) setGraphicData([ { name: t('transactionsPerBlock'), color: '#00C853', - data: intervalGraphicData - } + data: intervalGraphicData, + }, ]) // eslint-disable-next-line }, [data, t]) @@ -129,7 +128,7 @@ const TransactionInfo = ({ t, classes }) => { height: '100%', display: 'flex', flexDirection: 'column', - justifyContent: 'space-between' + justifyContent: 'space-between', }} >
@@ -159,7 +158,7 @@ const TransactionInfo = ({ t, classes }) => {
option === options[0] && setPause(!pause)} className={clsx(classes.pauseButton, { - [classes.disableButton]: option !== options[0] + [classes.disableButton]: option !== options[0], })} > {pause ? ( @@ -185,21 +184,21 @@ const TransactionInfo = ({ t, classes }) => { reversed: false, title: { enabled: true, - text: t('transactions') + text: t('transactions'), }, - maxPadding: 0.05 + maxPadding: 0.05, }} xAxisProps={{ type: 'datetime', reversed: option === options[0], title: { enabled: option === options[0], - text: t('secondsAgo') + text: t('secondsAgo'), }, labels: { - format: option === options[0] ? '{value}s' : null + format: option === options[0] ? '{value}s' : null, }, - maxPadding: 0.05 + maxPadding: 0.05, }} data={graphicData} /> @@ -210,11 +209,11 @@ const TransactionInfo = ({ t, classes }) => { TransactionInfo.propTypes = { t: PropTypes.any, - classes: PropTypes.object + classes: PropTypes.object, } TransactionInfo.defaultProps = { - classes: {} + classes: {}, } export default TransactionInfo diff --git a/webapp/src/routes/Home/index.js b/webapp/src/routes/Home/index.js index 941a76d4..5e94f226 100644 --- a/webapp/src/routes/Home/index.js +++ b/webapp/src/routes/Home/index.js @@ -1,8 +1,9 @@ import React, { lazy, useEffect } from 'react' import { makeStyles } from '@mui/styles' -import { useDispatch } from 'react-redux' import { useTranslation } from 'react-i18next' +import { useSharedState } from '../../context/state.context' + import styles from './styles' const useStyles = makeStyles(styles) @@ -10,19 +11,29 @@ const useStyles = makeStyles(styles) const BlockProducerInfo = lazy(() => import('./BlockProducerInfo')) const Home = () => { - const dispatch = useDispatch() + const [ + , + { + startTrackingInfo, + startTrackingProducerSchedule, + stopTrackingInfo, + stopTrackingProducerSchedule, + }, + ] = useSharedState() + const { t } = useTranslation('homeRoute') const classes = useStyles() useEffect(() => { - dispatch.eos.startTrackingInfo({ interval: 0.5 }) - dispatch.eos.startTrackingProducerSchedule({ interval: 60 }) + startTrackingInfo({ interval: 0.5 }) + startTrackingProducerSchedule({ interval: 60 }) return () => { - dispatch.eos.stopTrackingInfo() - dispatch.eos.stopTrackingProducerSchedule() + stopTrackingInfo() + stopTrackingProducerSchedule() } - }, [dispatch]) + // eslint-disable-next-line + }, []) return (
diff --git a/webapp/src/store.js b/webapp/src/store.js deleted file mode 100644 index 17a205c1..00000000 --- a/webapp/src/store.js +++ /dev/null @@ -1,14 +0,0 @@ -import { init } from '@rematch/core' -import loadingPlugin from '@rematch/loading' - -import * as models from './models' - -export default init({ - models, - redux: { - rootReducers: { - RESET_APP: () => {} - } - }, - plugins: [loadingPlugin()] -}) diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 33622817..985465e4 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -1198,7 +1198,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.20.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== @@ -1707,57 +1707,57 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@mui/base@5.0.0-alpha.106": - version "5.0.0-alpha.106" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.106.tgz#23e5f61639b5786318be873d7e6d26db412c5211" - integrity sha512-xJQQtwPCPwr6hGWTBdvDwHYwExn3Bw7nPQkN8Fuz8kHpZqoMVWQvvaFS557AIkkI2AFLV3DxVIMjbCvrIntBWg== +"@mui/base@5.0.0-alpha.107": + version "5.0.0-alpha.107" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.107.tgz#5547bf3aaea148b58456e6898f74bc183bdcffa9" + integrity sha512-HX/BD8CSe+Y/dpbZ5aKJScJhKQ/Hw6du2yd68Upv2cO67bwixyZ64h3aNcdDu7RQzI7nrZQm0JykffP1Orgq0g== dependencies: "@babel/runtime" "^7.20.1" "@emotion/is-prop-valid" "^1.2.0" "@mui/types" "^7.2.1" - "@mui/utils" "^5.10.14" + "@mui/utils" "^5.10.15" "@popperjs/core" "^2.11.6" clsx "^1.2.1" prop-types "^15.8.1" react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.10.14": - version "5.10.14" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.14.tgz#498a35c1aeab006ba5029f4e3954829f78c204c1" - integrity sha512-qLgIJNOR9Dre8JiZ/neVzOf4jf88J6YtOkQqugtMrleLjbfRVUSS4LWl9CSOjNq76quYdmYWnSDgfQqOooT2cQ== +"@mui/core-downloads-tracker@^5.10.15": + version "5.10.15" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.15.tgz#490f3dea5327c892f063496a0219c48301da0fa0" + integrity sha512-xFcS0LpdF0Q1qJrrNsYUv9PU+ovvhCEPTOMw2jcpEFtl3CA87dLpvztORR5oE2UBFjWF7qLQLOwboQU1+xC7Cw== "@mui/icons-material@^5.8.4": - version "5.10.14" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.10.14.tgz#6b1e40cc95f2a27e6547980f6a1636f54ac05617" - integrity sha512-qtH60slQa+7MZRn6kyui8rKuoGDglPqaHX+pzBKNvd8JCOlrnfY5DmGGDdToTXyXl8xJ8nhANZbrbpg7UVKq/Q== + version "5.10.15" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.10.15.tgz#c93f1ba8d2b55fe0a16f559a568304df172cbbcb" + integrity sha512-fXkz7CtYTt4AH4YYT67VFhM/A3YCUqZGGLp/3BlzRPQRNEfFKknw3MgG1S5UYrY5weti8jxMx3mwwfhVP8OMhQ== dependencies: "@babel/runtime" "^7.20.1" "@mui/lab@^5.0.0-alpha.90": - version "5.0.0-alpha.108" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.108.tgz#4c7507b372685a88ae4b5f57d7a18c7a2d525718" - integrity sha512-dn/TrBv5o/XH7vx0VVsOlwH5CzqBsLeBnWv7yAdahnyc6bCYaRz0TS0ylBRa9JLpSaV4KjC91VurH0G9t4PV/Q== + version "5.0.0-alpha.109" + resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.109.tgz#e0004174be4c3bcefcdbe674955e201d24ce96e0" + integrity sha512-9ZyzM4AHA1qWh48ZcvqxqwWRH1CzBhQuP9VYP2eEprEjEeraiuvvsZILCNhCemc9WWN04GJh8UiD1FeCaU4kWg== dependencies: "@babel/runtime" "^7.20.1" - "@mui/base" "5.0.0-alpha.106" - "@mui/system" "^5.10.14" + "@mui/base" "5.0.0-alpha.107" + "@mui/system" "^5.10.15" "@mui/types" "^7.2.1" - "@mui/utils" "^5.10.14" + "@mui/utils" "^5.10.15" clsx "^1.2.1" prop-types "^15.8.1" react-is "^18.2.0" "@mui/material@^5.9.0": - version "5.10.14" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.10.14.tgz#fcd687c92b22a71dc139376a5bc2d0bc578a172b" - integrity sha512-HWzKVAykePMx54WtxVwZyL1W4k3xlHYIqwMw0CaXAvgB3UE9yjABZuuGr8vG5Z6CSNWamzd+s1x8u7pQPFl9og== + version "5.10.15" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.10.15.tgz#37345f5a3d71c662703af7b5be0cca229b2a1416" + integrity sha512-OqoHfUtVMppFHgk2M95j+pR8MWfLKhzSdz4aKEfIpFrHIHbYang+oY7Iy/exX+vqpZSEGHgHQ0cGX0hGTGx9cg== dependencies: "@babel/runtime" "^7.20.1" - "@mui/base" "5.0.0-alpha.106" - "@mui/core-downloads-tracker" "^5.10.14" - "@mui/system" "^5.10.14" + "@mui/base" "5.0.0-alpha.107" + "@mui/core-downloads-tracker" "^5.10.15" + "@mui/system" "^5.10.15" "@mui/types" "^7.2.1" - "@mui/utils" "^5.10.14" + "@mui/utils" "^5.10.15" "@types/react-transition-group" "^4.4.5" clsx "^1.2.1" csstype "^3.1.1" @@ -1765,13 +1765,13 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.10.14": - version "5.10.14" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.10.14.tgz#3517f71a4c86de969f61fddc1db5023271627813" - integrity sha512-3aIBe8WK65CwAPDY8nB11hYnzE1CZMymi76UnaFrA/DdGDwl5Y8F6uB+StKrkVmsqF1po7Mp2odqVkHj320gXw== +"@mui/private-theming@^5.10.15": + version "5.10.15" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.10.15.tgz#f039181e197d04d100630829c58b5c33ede209bc" + integrity sha512-l7CsUj5kYdYz118/JHSvZZTYE9WnIWwln0td5jYATnYw9cNX4ygD6AkKOUYZ1Jitp1YLJqcO8jCP9E5/Nql9IQ== dependencies: "@babel/runtime" "^7.20.1" - "@mui/utils" "^5.10.14" + "@mui/utils" "^5.10.15" prop-types "^15.8.1" "@mui/styled-engine@^5.10.14": @@ -1785,15 +1785,15 @@ prop-types "^15.8.1" "@mui/styles@^5.9.0": - version "5.10.14" - resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.10.14.tgz#c568d5d1831539dda7525b8a738ec844f76ea6dd" - integrity sha512-efmROE5O+9qV1Wj7Q/Cz3ZplsuqSwqWRFTUWwTuTedoLetAO6ExgV4vGD1bkFsr9+VkAfJV/Zy4KPM0ouok7aA== + version "5.10.15" + resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.10.15.tgz#d7af4c17e8699e6b768f3c11b69c02cdc8cc3541" + integrity sha512-q8OW8Cyq2C9wGJMcDWXYtFa7qgIIZPAZ15JShDQXBLvyib4qDop5wV3+olQoJdwU5ARjmfPd67IsbORWxG3abQ== dependencies: "@babel/runtime" "^7.20.1" "@emotion/hash" "^0.9.0" - "@mui/private-theming" "^5.10.14" + "@mui/private-theming" "^5.10.15" "@mui/types" "^7.2.1" - "@mui/utils" "^5.10.14" + "@mui/utils" "^5.10.15" clsx "^1.2.1" csstype "^3.1.1" hoist-non-react-statics "^3.3.2" @@ -1807,16 +1807,16 @@ jss-plugin-vendor-prefixer "^10.9.2" prop-types "^15.8.1" -"@mui/system@^5.10.14": - version "5.10.14" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.10.14.tgz#3bcc2d471c7faeaffecbb62e6b9087396a533c21" - integrity sha512-2de7XCjRb1j8Od0Stmo0LwFMLpOMNT4wzfINuExXI1TVSuyxXIXUxiC5FEgJW3GMvf/a7SUR8VOiMoKlKWzukw== +"@mui/system@^5.10.15": + version "5.10.15" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.10.15.tgz#4bb58d1d1a531137559b775038a18d6050d9ee57" + integrity sha512-WZmgmpYTMXAaD++QetaaM/miwhNh1JJY1dH7MJH/3Fuv3r3gnhfzE6A55lDqWxkQmlWUO2DCn/cnNZ0FkSdZUg== dependencies: "@babel/runtime" "^7.20.1" - "@mui/private-theming" "^5.10.14" + "@mui/private-theming" "^5.10.15" "@mui/styled-engine" "^5.10.14" "@mui/types" "^7.2.1" - "@mui/utils" "^5.10.14" + "@mui/utils" "^5.10.15" clsx "^1.2.1" csstype "^3.1.1" prop-types "^15.8.1" @@ -1826,10 +1826,10 @@ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.1.tgz#1eb2bc182c595029884047f2525ad4dbefea318e" integrity sha512-c5mSM7ivD8EsqK6HUi9hQPr5V7TJ/IRThUQ9nWNYPdhCGriTSQV4vL6DflT99LkM+wLiIS1rVjphpEWxERep7A== -"@mui/utils@^5.10.14": - version "5.10.14" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.10.14.tgz#260bf52b2eb5a95ee80f2de4092ebf25d3d83e88" - integrity sha512-12p59+wDZpA++XVJmKwqsZmrA1nmUQ5d0a1yQWtcDjxNyER1EDzozYN/db+FY2i5ceQh2TynPTEwGms2mXDwFg== +"@mui/utils@^5.10.15": + version "5.10.15" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.10.15.tgz#54fc1b373508d20dd5568070b2dcc0818e6bebba" + integrity sha512-6AW4MLBUijJi31hxx+6utTJM2q/4hbO+QiMdtwM+f4Iy+BfFnh/elhb08apxNYLfuugPnXXpkDmzEjg+8uDU9g== dependencies: "@babel/runtime" "^7.20.1" "@types/prop-types" "^15.7.5" @@ -1854,16 +1854,6 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== -"@rematch/core@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@rematch/core/-/core-2.2.0.tgz#c4e6cc9d369d341afe2345842f43c255b7a44e90" - integrity sha512-Sj3nC/2X+bOBZeOf4jdJ00nhCcx9wLbVK9SOs6eFR4Y1qKXqRY0hGigbQgfTpCdjRFlwTHHfN3m41MlNvMhDgw== - -"@rematch/loading@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@rematch/loading/-/loading-2.1.2.tgz#1dc680d445cd2d1234489cb69816278d02cf2216" - integrity sha512-3fWUvWkIxP+BEi2LCKYKaUkMFCT0MDcN1xQD19tPNufMry7skqybahqm9/ugs9wIji1n3ObF7yHkrb01E+N3Tw== - "@remix-run/router@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.3.tgz#953b88c20ea00d0eddaffdc1b115c08474aa295d" @@ -2077,14 +2067,6 @@ "@types/minimatch" "*" "@types/node" "*" -"@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.4" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" @@ -2162,16 +2144,6 @@ dependencies: "@types/react" "*" -"@types/react-redux@^7.1.20": - version "7.1.24" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.24.tgz#6caaff1603aba17b27d20f8ad073e4c077e975c0" - integrity sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ== - dependencies: - "@types/hoist-non-react-statics" "^3.3.0" - "@types/react" "*" - hoist-non-react-statics "^3.3.0" - redux "^4.0.0" - "@types/react-transition-group@^4.4.5": version "4.4.5" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" @@ -2230,9 +2202,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.13" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" - integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== + version "17.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.14.tgz#0943473052c24bd8cf2d1de25f1a710259327237" + integrity sha512-9Pj7abXoW1RSTcZaL2Hk6G2XyLMlp5ECdVC/Zf2p/KBjC3srijLGgRAXOBjtFrJoIrvxdTKyKDA14bEcbxBaWw== dependencies: "@types/yargs-parser" "*" @@ -2687,9 +2659,9 @@ anymatch@^2.0.0: normalize-path "^2.1.1" anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -2851,7 +2823,7 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4, array-includes@^3.1.5: +array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== @@ -2889,7 +2861,7 @@ array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.5: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.0: +array.prototype.flatmap@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== @@ -2910,6 +2882,17 @@ array.prototype.reduce@^1.0.5: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3031,9 +3014,9 @@ aws4@^1.8.0: integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axios@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.0.tgz#1cb65bd75162c70e9f8d118a905126c4a201d383" + integrity sha512-zT7wZyNYu3N5Bu0wuZ6QccIf93Qk1eV8LOewxgjOZFd2DenOs98cJ7+Y6703d0wkaXGY6/nZd4EweJaHz9uzQw== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -3693,9 +3676,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001400: - version "1.0.30001431" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795" - integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== + version "1.0.30001434" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz#ec1ec1cfb0a93a34a0600d37903853030520a4e5" + integrity sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA== capture-exit@^2.0.0: version "2.0.0" @@ -3805,9 +3788,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.6.1.tgz#7594f1c95cb7fdfddee7af95a13af7dbc67afdcf" - integrity sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w== + version "3.6.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.6.2.tgz#362ea15378f1c39378ba786affbc1c9ef015ecfd" + integrity sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -5625,24 +5608,25 @@ eslint-plugin-react@7.19.0: xregexp "^4.3.0" eslint-plugin-react@^7.31.1: - version "7.31.10" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" - integrity sha512-e4N/nc6AAlg4UKW/mXeYWd3R++qUano5/o+t+wnWxIf+bLsOaH3a4q74kX3nDjYym3VBN4HyO9nEn1GcAqgQOA== + version "7.31.11" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" + integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" prop-types "^15.8.1" resolve "^2.0.0-next.3" semver "^6.3.0" - string.prototype.matchall "^4.0.7" + string.prototype.matchall "^4.0.8" eslint-plugin-standard@^4.0.1: version "4.1.0" @@ -9353,7 +9337,7 @@ object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.5: +object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== @@ -9362,7 +9346,7 @@ object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.5: define-properties "^1.1.4" es-abstract "^1.20.4" -object.fromentries@^2.0.2, object.fromentries@^2.0.5: +object.fromentries@^2.0.2, object.fromentries@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== @@ -9381,7 +9365,7 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0 define-properties "^1.1.4" es-abstract "^1.20.4" -object.hasown@^1.1.1: +object.hasown@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== @@ -9396,7 +9380,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.5: +object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.5, object.values@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== @@ -10512,9 +10496,9 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: uniq "^1.0.1" postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -10591,9 +10575,9 @@ prettier-linter-helpers@^1.0.0: fast-diff "^1.1.2" prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + version "2.8.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.0.tgz#c7df58393c9ba77d6fba3921ae01faf994fb9dc9" + integrity sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA== pretty-bytes@^5.1.0: version "5.6.0" @@ -11017,7 +11001,7 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.1, react-is@^17.0.2: +react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -11050,18 +11034,6 @@ react-perfect-scrollbar@^1.5.8: perfect-scrollbar "^1.5.0" prop-types "^15.6.1" -react-redux@^7.2.0: - version "7.2.9" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" - integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== - dependencies: - "@babel/runtime" "^7.15.4" - "@types/react-redux" "^7.1.20" - hoist-non-react-statics "^3.3.2" - loose-envify "^1.4.0" - prop-types "^15.7.2" - react-is "^17.0.2" - react-resize-detector@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-2.3.0.tgz#57bad1ae26a28a62a2ddb678ba6ffdf8fa2b599c" @@ -11376,13 +11348,6 @@ redux-mock-store@^1.5.4: dependencies: lodash.isplainobject "^4.0.6" -redux@^4.0.0, redux@^4.0.5: - version "4.2.0" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" - integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== - dependencies: - "@babel/runtime" "^7.9.2" - regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" @@ -12416,7 +12381,7 @@ string-width@^5.0.0: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.2, string.prototype.matchall@^4.0.7: +string.prototype.matchall@^4.0.2, string.prototype.matchall@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==