add: button to pause connection refresh

This commit is contained in:
Haishan 2020-05-12 23:55:05 +08:00
parent b1d44d6455
commit aceb1b4a36
19 changed files with 534 additions and 372 deletions

View file

@ -1,14 +1,36 @@
---
parser: '@typescript-eslint/parser'
parserOptions:
project: tsconfig.json
sourceType: module
extends:
- 'plugin:@typescript-eslint/recommended'
- 'prettier'
- prettier/@typescript-eslint
- react-app
- eslint:recommended
env:
node: true
jest: true
globals:
__DEV__: true
# Promise: true
rules:
quotes: ["error", "single"]
strict: ["error", "never"]
no-console: "warn"
'@typescript-eslint/interface-name-prefix': 'off'
'@typescript-eslint/explicit-function-return-type': 'off'
'@typescript-eslint/no-explicit-any': 'off'
'@typescript-eslint/camelcase': 'off'
'@typescript-eslint/no-unused-vars':
- 'error'
- { argsIgnorePattern: '^_' }
'@typescript-eslint/no-use-before-define':
- error
- functions: false
react-hooks/rules-of-hooks: error
# quotes: ["error", "single"]
# strict: ["error", "never"]
# no-console: "warn"

View file

@ -3,7 +3,7 @@
"version": "0.1.13",
"description": "Yet another Clash dashboard",
"scripts": {
"lint": "eslint --cache src",
"lint": "eslint --fix --cache src",
"start": "NODE_ENV=development node server.js",
"build": "NODE_ENV=production webpack -p --progress",
"pretty": "prettier --single-quote --write 'src/**/*.{js,scss}'"
@ -37,8 +37,9 @@
"@sentry/browser": "^5.15.0",
"chart.js": "^2.9.2",
"classnames": "^2.2.6",
"clsx": "^1.1.0",
"core-js": "^3.6.2",
"date-fns": "^2.8.1",
"date-fns": "^2.13.0",
"framer-motion": "^1.10.0",
"history": "^4.7.2",
"immer": "^5.1.0",
@ -57,7 +58,7 @@
"react-switch": "^5.0.1",
"react-table": "7.0.0-rc.15",
"react-tabs": "^3.1.0",
"react-tiny-fab": "^3.4.1",
"react-tiny-fab": "^3.5.0",
"react-window": "^1.8.5",
"regenerator-runtime": "^0.13.2",
"reselect": "^4.0.0"
@ -74,9 +75,10 @@
"@hsjs/react-refresh-webpack-plugin": "^0.1.3",
"@pmmmwh/react-refresh-webpack-plugin": "^0.2.0",
"@types/jest": "^25.2.1",
"@types/react": "^16.9.34",
"@typescript-eslint/eslint-plugin": "^2.30.0",
"@typescript-eslint/parser": "^2.30.0",
"@types/react": "^16.9.35",
"@types/react-dom": "^16.9.8",
"@typescript-eslint/eslint-plugin": "2.32.1-alpha.2",
"@typescript-eslint/parser": "2.32.1-alpha.2",
"autoprefixer": "^9.7.3",
"babel-eslint": "10.x",
"babel-loader": "^8.0.5",
@ -84,21 +86,24 @@
"copy-webpack-plugin": "^5.1.1",
"css-loader": "^3.4.2",
"cssnano": "^4.1.7",
"eslint": "6.x",
"eslint": "^7.0.0",
"eslint-config-airbnb-base": "^14.1.0",
"eslint-config-prettier": "^6.11.0",
"eslint-config-react-app": "^5.2.1",
"eslint-import-resolver-webpack": "^0.12.0",
"eslint-plugin-flowtype": "4.x",
"eslint-plugin-import": "2.x",
"eslint-plugin-jest": "^23.6.0",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jest": "^23.10.0",
"eslint-plugin-jsx-a11y": "6.x",
"eslint-plugin-react": "7.x",
"eslint-plugin-react-hooks": "2.x",
"eslint-plugin-react-hooks": "^4.0.0",
"eslint-plugin-simple-import-sort": "^5.0.3",
"file-loader": "^6.0.0",
"fork-ts-checker-notifier-webpack-plugin": "^2.0.0",
"fork-ts-checker-webpack-plugin": "^4.1.3",
"html-webpack-plugin": "^4.2.1",
"html-webpack-plugin": "^4.3.0",
"husky": "^4.0.0",
"lint-staged": "^10.2.1",
"lint-staged": "^10.2.2",
"mini-css-extract-plugin": "^0.9.0",
"postcss-custom-media": "^7.0.8",
"postcss-extend-rule": "^3.0.0",
@ -107,11 +112,11 @@
"postcss-nested": "^4.2.0",
"postcss-simple-vars": "^5.0.2",
"prettier": "^2.0.4",
"react-refresh": "^0.8.1",
"react-refresh": "^0.8.2",
"resize-observer-polyfill": "^1.5.1",
"style-loader": "^1.2.1",
"terser-webpack-plugin": "^2.3.1",
"ts-loader": "^7.0.2",
"terser-webpack-plugin": "^3.0.1",
"ts-loader": "^7.0.4",
"typescript": "^3.8.3",
"webpack": "^4.41.6",
"webpack-bundle-analyzer": "^3.6.0",

View file

@ -2,8 +2,8 @@ import { getURLAndInit } from '../misc/request-helper';
const endpoint = '/connections';
let fetched = false;
let subscribers = [];
const fetched = false;
const subscribers = [];
// see also https://github.com/Dreamacro/clash/blob/dev/constant/metadata.go#L41
type UUID = string;
@ -16,7 +16,7 @@ type ConnectionItem = {
destinationIP: string,
sourcePort: string,
destinationPort: string,
host: string
host: string,
},
upload: number,
download: number,
@ -24,12 +24,12 @@ type ConnectionItem = {
start: string,
chains: Array<string>,
// e.g. 'Match', 'DomainKeyword'
rule: string
rule: string,
};
type ConnectionsData = {
downloadTotal: number,
uploadTotal: number,
connections: Array<ConnectionItem>
connections: Array<ConnectionItem>,
};
function appendData(s) {
@ -40,7 +40,7 @@ function appendData(s) {
// eslint-disable-next-line no-console
console.log('JSON.parse error', JSON.parse(s));
}
subscribers.forEach(f => f(o));
subscribers.forEach((f) => f(o));
}
function getWsUrl(apiConfig) {
@ -60,10 +60,10 @@ function fetchData(apiConfig, listener) {
wsState = 1;
const url = getWsUrl(apiConfig);
const ws = new WebSocket(url);
ws.addEventListener('error', function(_ev) {
ws.addEventListener('error', function (_ev) {
wsState = 3;
});
ws.addEventListener('message', function(event) {
ws.addEventListener('message', function (event) {
appendData(event.data);
});
if (listener) return subscribe(listener);

View file

@ -22,17 +22,16 @@ const traffic = {
if (this.down.length > this.size) this.down.shift();
if (this.labels.length > this.size) this.labels.shift();
this.subscribers.forEach(f => f(o));
this.subscribers.forEach((f) => f(o));
},
subscribe(listener) {
const me = this;
this.subscribers.push(listener);
return function unsubscribe() {
const idx = me.subscribers.indexOf(listener);
me.subscribers.splice(idx, 1);
return () => {
const idx = this.subscribers.indexOf(listener);
this.subscribers.splice(idx, 1);
};
}
},
};
let fetched = false;
@ -89,14 +88,14 @@ function fetchData(apiConfig) {
wsState = 1;
const url = getWsUrl(apiConfig);
const ws = new WebSocket(url);
ws.addEventListener('error', function(_ev) {
ws.addEventListener('error', function (_ev) {
wsState = 3;
});
ws.addEventListener('close', function(_ev) {
ws.addEventListener('close', function (_ev) {
wsState = 3;
fetchDataWithFetch(apiConfig);
});
ws.addEventListener('message', function(event) {
ws.addEventListener('message', function (event) {
parseAndAppend(event.data);
});
return traffic;
@ -107,7 +106,7 @@ function fetchDataWithFetch(apiConfig) {
fetched = true;
const { url, init } = getURLAndInit(apiConfig);
fetch(url + endpoint, init).then(
response => {
(response) => {
if (response.ok) {
const reader = response.body.getReader();
pump(reader);
@ -115,7 +114,7 @@ function fetchDataWithFetch(apiConfig) {
fetched = false;
}
},
err => {
(err) => {
// eslint-disable-next-line no-console
console.log('fetch /traffic error', err);
fetched = false;

View file

@ -11,8 +11,8 @@ import { getClashAPIConfig, updateClashAPIConfig } from '../store/app';
const { useState, useEffect, useRef, useCallback } = React;
const mapState = s => ({
apiConfig: getClashAPIConfig(s)
const mapState = (s) => ({
apiConfig: getClashAPIConfig(s),
});
function APIConfig({ apiConfig, dispatch }) {
@ -46,11 +46,11 @@ function APIConfig({ apiConfig, dispatch }) {
detectApiServer();
}, []);
const handleInputOnChange = useCallback(e => {
const handleInputOnChange = useCallback((e) => {
userTouchedFlagRef.current = true;
const target = e.target;
const { name } = target;
let value = target.value;
const value = target.value;
switch (name) {
case 'port':
setPort(value);
@ -71,7 +71,7 @@ function APIConfig({ apiConfig, dispatch }) {
}, [hostname, port, secret, dispatch]);
const handleContentOnKeyDown = useCallback(
e => {
(e) => {
// enter keyCode is 13
if (e.keyCode !== 13) return;
updateConfig();

View file

@ -1,7 +1,5 @@
import React from 'react';
import cx from 'classnames';
import type { Node, Element, SyntheticEvent } from 'react';
import * as React from 'react';
import cx from 'clsx';
import { LoadingDot } from './shared/Basic';
@ -9,17 +7,21 @@ import s0 from './Button.module.css';
const { memo, forwardRef, useCallback } = React;
type ButtonProps = {
children?: Node,
label?: string,
text?: string,
isLoading?: boolean,
start?: Element | (() => Element),
onClick?: (SyntheticEvent<HTMLButtonElement>) => mixed,
kind?: 'primary' | 'minimal',
className?: string
type ButtonInternalProps = {
children?: React.ReactChildren;
label?: string;
text?: string;
start?: React.ReactElement | (() => React.ReactElement);
};
function Button(props: ButtonProps, ref) {
type ButtonProps = {
isLoading?: boolean;
onClick?: (e: React.MouseEvent<HTMLButtonElement>) => unknown;
kind?: 'primary' | 'minimal';
className?: string;
} & ButtonInternalProps;
function Button(props: ButtonProps, ref: React.Ref<HTMLButtonElement>) {
const {
onClick,
isLoading,
@ -28,7 +30,7 @@ function Button(props: ButtonProps, ref) {
...restProps
} = props;
const internalOnClick = useCallback(
e => {
(e) => {
if (isLoading) return;
onClick && onClick(e);
},
@ -37,7 +39,7 @@ function Button(props: ButtonProps, ref) {
const btnClassName = cx(
s0.btn,
{
[s0.minimal]: kind === 'minimal'
[s0.minimal]: kind === 'minimal',
},
className
);
@ -48,7 +50,7 @@ function Button(props: ButtonProps, ref) {
<span
style={{
display: 'inline-flex',
opacity: 0
opacity: 0,
}}
>
<ButtonInternal {...restProps} />
@ -64,7 +66,7 @@ function Button(props: ButtonProps, ref) {
);
}
function ButtonInternal({ children, label, text, start }) {
function ButtonInternal({ children, label, text, start }: ButtonInternalProps) {
return (
<>
{start ? (

View file

@ -7,7 +7,7 @@ import {
getClashAPIConfig,
getSelectedChartStyleIndex,
getLatencyTestUrl,
clearStorage
clearStorage,
} from '../store/app';
import ContentHeader from './ContentHeader';
@ -27,50 +27,50 @@ const propsList = [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }];
const optionsRule = [
{
label: 'Global',
value: 'Global'
value: 'Global',
},
{
label: 'Rule',
value: 'Rule'
value: 'Rule',
},
{
label: 'Direct',
value: 'Direct'
}
value: 'Direct',
},
];
const optionsLogLevel = [
{
label: 'info',
value: 'info'
value: 'info',
},
{
label: 'warning',
value: 'warning'
value: 'warning',
},
{
label: 'error',
value: 'error'
value: 'error',
},
{
label: 'debug',
value: 'debug'
value: 'debug',
},
{
label: 'silent',
value: 'silent'
}
value: 'silent',
},
];
const mapState = s => ({
const mapState = (s) => ({
configs: getConfigs(s),
apiConfig: getClashAPIConfig(s)
apiConfig: getClashAPIConfig(s),
});
const mapState2 = s => ({
const mapState2 = (s) => ({
selectedChartStyleIndex: getSelectedChartStyleIndex(s),
latencyTestUrl: getLatencyTestUrl(s),
apiConfig: getClashAPIConfig(s)
apiConfig: getClashAPIConfig(s),
});
const Config = connect(mapState2)(ConfigImpl);
@ -88,7 +88,7 @@ function ConfigImpl({
configs,
selectedChartStyleIndex,
latencyTestUrl,
apiConfig
apiConfig,
}) {
const [configState, setConfigStateInternal] = useState(configs);
const refConfigs = useRef(configs);
@ -103,14 +103,14 @@ function ConfigImpl({
(name, val) => {
setConfigStateInternal({
...configState,
[name]: val
[name]: val,
});
},
[configState]
);
const handleSwitchOnChange = useCallback(
checked => {
(checked) => {
const name = 'allow-lan';
const value = checked;
setConfigState(name, value);
@ -120,10 +120,10 @@ function ConfigImpl({
);
const handleInputOnChange = useCallback(
e => {
(e) => {
const target = e.target;
const { name } = target;
let { value } = target;
const { value } = target;
switch (target.name) {
case 'mode':
case 'log-level':
@ -149,7 +149,7 @@ function ConfigImpl({
const { selectChartStyleIndex, updateAppConfig } = useStoreActions();
const handleInputOnBlur = useCallback(
e => {
(e) => {
const target = e.target;
const { name, value } = target;
switch (name) {
@ -269,5 +269,5 @@ function ConfigImpl({
}
Config.propTypes = {
configs: PropTypes.object
configs: PropTypes.object,
};

View file

@ -3,18 +3,18 @@ import ContentHeader from './ContentHeader';
import ConnectionTable from './ConnectionTable';
import useRemainingViewPortHeight from '../hooks/useRemainingViewPortHeight';
import { getClashAPIConfig } from '../store/app';
import { X as IconClose } from 'react-feather';
import { X as IconClose, Pause, Play } from 'react-feather';
import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';
import SvgYacd from './SvgYacd';
import Button from './Button';
import ModalCloseAllConnections from './ModalCloseAllConnections';
import { connect } from './StateProvider';
import * as connAPI from '../api/connections';
import { Fab, Action, position as fabPosition } from './shared/Fab';
import './Connections.css';
import s from './Connections.module.css';
const { useEffect, useState, useRef, useCallback, useMemo } = React;
const { useEffect, useState, useRef, useCallback } = React;
const paddingBottom = 30;
@ -29,13 +29,14 @@ function arrayToIdKv(items) {
function formatConnectionDataItem(i, prevKv) {
const { id, metadata, upload, download, start, chains, rule } = i;
// eslint-disable-next-line prefer-const
let { host, destinationPort, destinationIP } = metadata;
// host could be an empty string if it's direct IP connection
if (host === '') host = destinationIP;
const metadataNext = {
...metadata,
// merge host and destinationPort into one column
host: host + ':' + destinationPort
host: host + ':' + destinationPort,
};
// const started = formatDistance(new Date(start), now);
const ret = {
@ -45,7 +46,7 @@ function formatConnectionDataItem(i, prevKv) {
start: 0 - new Date(start),
chains: chains.reverse().join(' / '),
rule,
...metadataNext
...metadataNext,
};
const prev = prevKv[id];
ret.downloadSpeedCurr = download - (prev ? prev.download : 0);
@ -77,35 +78,44 @@ function Conn({ apiConfig }) {
() => setIsCloseAllModalOpen(false),
[]
);
const [isRefreshPaused, setIsRefreshPaused] = useState(false);
const toggleIsRefreshPaused = useCallback(() => {
setIsRefreshPaused((x) => !x);
}, []);
const closeAllConnections = useCallback(() => {
connAPI.closeAllConnections(apiConfig);
closeCloseAllModal();
}, [apiConfig, closeCloseAllModal]);
const iconClose = useMemo(() => <IconClose width={16} />, []);
const prevConnsRef = useRef(conns);
const read = useCallback(
({ connections }) => {
const prevConnsKv = arrayToIdKv(prevConnsRef.current);
const x = connections.map(c => formatConnectionDataItem(c, prevConnsKv));
const x = connections.map((c) =>
formatConnectionDataItem(c, prevConnsKv)
);
const closed = [];
for (const c of prevConnsRef.current) {
const idx = x.findIndex(conn => conn.id === c.id);
const idx = x.findIndex((conn) => conn.id === c.id);
if (idx < 0) closed.push(c);
}
setClosedConns(prev => {
setClosedConns((prev) => {
// keep max 100 entries
return [...closed, ...prev].slice(0, 101);
});
// if previous connections and current connections are both empty
// arrays, we wont update state to avaoid rerender
if (x && (x.length !== 0 || prevConnsRef.current.length !== 0)) {
if (
x &&
(x.length !== 0 || prevConnsRef.current.length !== 0) &&
!isRefreshPaused
) {
prevConnsRef.current = x;
setConns(x);
} else {
prevConnsRef.current = x;
}
},
[setConns]
[setConns, isRefreshPaused]
);
useEffect(() => {
return connAPI.fetchData(apiConfig, read);
@ -135,18 +145,33 @@ function Conn({ apiConfig }) {
<div
style={{
height: containerHeight - paddingBottom,
overflow: 'auto'
overflow: 'auto',
}}
>
<TabPanel>
<>{renderTableOrPlaceholder(conns)}</>
<div className="fabgrp">
<Button
text="Close"
start={iconClose}
<Fab
icon={
isRefreshPaused ? <Play size={16} /> : <Pause size={16} />
}
mainButtonStyles={
isRefreshPaused
? {
background: '#e74c3c',
}
: {}
}
position={fabPosition}
text={isRefreshPaused ? 'Resume Refresh' : 'Pause Refresh'}
onClick={toggleIsRefreshPaused}
>
<Action
text="Close All Connections"
onClick={openCloseAllModal}
/>
</div>
>
<IconClose size={10} />
</Action>
</Fab>
</TabPanel>
<TabPanel>{renderTableOrPlaceholder(closedConns)}</TabPanel>
</div>
@ -161,8 +186,8 @@ function Conn({ apiConfig }) {
);
}
const mapState = s => ({
apiConfig: getClashAPIConfig(s)
const mapState = (s) => ({
apiConfig: getClashAPIConfig(s),
});
export default connect(mapState)(Conn);

View file

@ -11,9 +11,8 @@ import Equalizer from './svg/Equalizer';
import { Zap } from 'react-feather';
import ProxyProviderList from './ProxyProviderList';
import { Fab } from 'react-tiny-fab';
import { Fab, position as fabPosition } from './shared/Fab';
import './rtf.css';
import s0 from './Proxies.module.css';
import {
@ -96,7 +95,8 @@ function Proxies({ dispatch, groupNames, delay, proxyProviders, apiConfig }) {
icon={<Zap width={16} />}
onClick={requestDelayAllFn}
text="Test Latency"
></Fab>
position={fabPosition}
/>
</>
);
}

View file

@ -18,10 +18,10 @@ const colorMap = {
// orange
bad: '#e67f3c',
// bad: '#F56C6C',
na: '#909399'
na: '#909399',
};
function getLabelColor({ number, error } = {}) {
function getLabelColor({ number } = {}) {
if (number < 200) {
return colorMap.good;
} else if (number < 400) {
@ -52,10 +52,10 @@ type ProxyProps = {
// connect injected
// TODO refine type
proxy: any,
latency: any
latency: any,
};
function ProxySmallImpl({ now, name, proxy, latency }: ProxyProps) {
function ProxySmallImpl({ now, name, latency }: ProxyProps) {
const color = useMemo(() => getLabelColor(latency), [latency]);
const title = useMemo(() => {
let ret = name;
@ -79,7 +79,7 @@ function Proxy({ now, name, proxy, latency }: ProxyProps) {
<div
className={cx(s0.proxy, {
[s0.now]: now,
[s0.error]: latency && latency.error
[s0.error]: latency && latency.error,
})}
>
<div className={s0.proxyName}>{name}</div>
@ -100,7 +100,7 @@ const mapState = (s, { name }) => {
const delay = getDelay(s);
return {
proxy: proxies[name],
latency: delay[name]
latency: delay[name],
};
};

View file

@ -1,8 +1,8 @@
import React from 'react';
import Button from './Button';
import { FixedSizeList as List, areEqual } from 'react-window';
import { RotateCw } from 'react-feather';
import { Fab, position as fabPosition } from './shared/Fab';
import { connect } from './StateProvider';
import { getClashAPIConfig } from '../store/app';
import ContentHeader from './ContentHeader';
@ -31,9 +31,9 @@ const Row = memo(({ index, style, data }) => {
);
}, areEqual);
const mapState = s => ({
const mapState = (s) => ({
apiConfig: getClashAPIConfig(s),
rules: getRules(s)
rules: getRules(s),
});
export default connect(mapState)(Rules);
@ -63,9 +63,13 @@ function Rules({ dispatch, apiConfig, rules }) {
{Row}
</List>
</div>
<div className="fabgrp">
<Button text="Refresh" start={refreshIcon} onClick={fetchRulesHooked} />
</div>
<Fab
icon={refreshIcon}
text="Refresh"
onClick={fetchRulesHooked}
position={fabPosition}
/>
</div>
);
}

View file

@ -9,7 +9,7 @@ const {
useEffect,
useCallback,
useContext,
useState
useState,
} = React;
export { immer };
@ -58,7 +58,7 @@ export default function Provider({ initialState, actions = {}, children }) {
);
const boundActions = useMemo(() => bindActions(actions, dispatch), [
actions,
dispatch
dispatch,
]);
return (
@ -73,7 +73,7 @@ export default function Provider({ initialState, actions = {}, children }) {
}
export function connect(mapStateToProps) {
return Component => {
return (Component) => {
const MemoComponent = memo(Component);
function Connected(props) {
const state = useContext(StateContext);
@ -88,8 +88,8 @@ export function connect(mapStateToProps) {
// steal from https://github.com/reduxjs/redux/blob/master/src/bindActionCreators.ts
function bindAction(action, dispatch) {
return function() {
return dispatch(action.apply(this, arguments));
return function (...args) {
return dispatch(action.apply(this, args));
};
}

View file

@ -8,23 +8,27 @@ import Input from './Input';
import Button from './Button';
import { LoadingDot } from './shared/Basic';
const noop = () => {
/* empty */
};
const paneStyle = {
padding: '20px 0'
padding: '20px 0',
};
const optionsRule = [
{
label: 'Global',
value: 'Global'
value: 'Global',
},
{
label: 'Rule',
value: 'Rule'
value: 'Rule',
},
{
label: 'Direct',
value: 'Direct'
}
value: 'Direct',
},
];
const Pane = ({ children, style }) => (
@ -34,7 +38,7 @@ const Pane = ({ children, style }) => (
function useToggle(initialState = false) {
const [onoff, setonoff] = React.useState(initialState);
const handleChange = React.useCallback(() => {
setonoff(x => !x);
setonoff((x) => !x);
}, []);
return [onoff, handleChange];
}
@ -59,7 +63,7 @@ class StyleGuide extends PureComponent {
name="test"
options={optionsRule}
value="Rule"
onChange={() => {}}
onChange={noop}
/>
</Pane>
<Pane>

View file

@ -4,10 +4,10 @@ import PropTypes from 'prop-types';
import s0 from './ToggleSwitch.module.css';
function ToggleSwitch({ options, value, name, onChange }) {
const idxSelected = useMemo(() => options.map(o => o.value).indexOf(value), [
options,
value
]);
const idxSelected = useMemo(
() => options.map((o) => o.value).indexOf(value),
[options, value]
);
const w = (100 / options.length).toPrecision(3);
return (
<div>
@ -16,12 +16,12 @@ function ToggleSwitch({ options, value, name, onChange }) {
className={s0.slider}
style={{
width: w + '%',
left: idxSelected * w + '%'
left: idxSelected * w + '%',
}}
/>
{options.map((o, idx) => {
const id = `${name}-${o.label}`;
let className = idx === 0 ? '' : 'border-left';
const className = idx === 0 ? '' : 'border-left';
return (
<label htmlFor={id} key={id} className={className}>
<input
@ -45,7 +45,7 @@ ToggleSwitch.propTypes = {
options: PropTypes.array,
value: PropTypes.string,
name: PropTypes.string,
onChange: PropTypes.func
onChange: PropTypes.func,
};
export default React.memo(ToggleSwitch);

View file

@ -0,0 +1,9 @@
import { Fab, Action } from 'react-tiny-fab';
import './rtf.css';
export const position = {
right: 10,
bottom: 10,
};
export { Fab, Action };

View file

@ -12,10 +12,16 @@
list-style: none;
}
.rtf.open .rtf--mb > * {
transform-origin: center center;
transform: rotate(360deg);
/* transform-origin: center center; */
/* transform: rotate(360deg); */
transition: ease-in-out transform 0.2s;
}
.rtf.open .rtf--mb {
background: rgba(56, 124, 236, 0.92);
box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2),
0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);
}
.rtf.open .rtf--mb > ul {
list-style: none;
margin: 0;
@ -200,8 +206,9 @@
}
.rtf--ab {
height: 48px;
width: 48px;
height: 40px;
width: 40px;
margin-right: 4px;
background-color: #aaaaaa;
display: inline-flex;
justify-content: center;
@ -216,7 +223,6 @@
-webkit-user-drag: none;
font-weight: bold;
color: #f1f1f1;
margin-right: 4px;
font-size: 16px;
z-index: 10000;
}

View file

@ -198,7 +198,7 @@ export function requestDelayAll(apiConfig) {
function retrieveGroupNamesFrom(proxies) {
let groupNames = [];
let globalAll;
let proxyNames = [];
const proxyNames = [];
for (const prop in proxies) {
const p = proxies[prop];
if (p.all && Array.isArray(p.all)) {

View file

@ -13,7 +13,7 @@
"lib": ["dom", "es2015", "es2016", "es2017", "esnext"],
"forceConsistentCasingInFileNames": true,
"experimentalDecorators": true,
"noImplicitAny": true,
"noImplicitAny": false,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noImplicitThis": true,

540
yarn.lock
View file

@ -896,9 +896,9 @@
"@babel/plugin-transform-react-jsx-source" "^7.9.0"
"@babel/runtime-corejs3@^7.8.3":
version "7.8.7"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz#8209d9dff2f33aa2616cb319c83fe159ffb07b8c"
integrity sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q==
version "7.9.6"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz#67aded13fffbbc2cb93247388cf84d77a4be9a71"
integrity sha512-6toWAfaALQjt3KMZQc6fABqZwUDDuWzz+cAfPhqyEnzxvdWOAkjwPNxgF8xlmo7OWLsSjaKjsskpKHRLaMArOA==
dependencies:
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
@ -1041,10 +1041,10 @@
react-dev-utils "^9.1.0"
sockjs-client "^1.4.0"
"@jest/types@^25.4.0":
version "25.4.0"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59"
integrity sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw==
"@jest/types@^25.5.0":
version "25.5.0"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^1.1.1"
@ -1205,9 +1205,9 @@
"@types/istanbul-lib-report" "*"
"@types/jest@^25.2.1":
version "25.2.1"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.1.tgz#9544cd438607955381c1bdbdb97767a249297db5"
integrity sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA==
version "25.2.2"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.2.tgz#6a752e7a00f69c3e790ea00c345029d5cefa92bf"
integrity sha512-aRctFbG8Pb7DSLzUt/fEtL3q/GKb9mretFuYhRub2J0q6NhzBYbx9HTQzHrWgBNIxYOlxGNVe6Z54cpbUt+Few==
dependencies:
jest-diff "^25.2.1"
pretty-format "^25.2.1"
@ -1242,10 +1242,17 @@
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
"@types/react@^16.9.34":
version "16.9.34"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.34.tgz#f7d5e331c468f53affed17a8a4d488cd44ea9349"
integrity sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow==
"@types/react-dom@^16.9.8":
version "16.9.8"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423"
integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@^16.9.35":
version "16.9.35"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368"
integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ==
dependencies:
"@types/prop-types" "*"
csstype "^2.2.0"
@ -1311,75 +1318,76 @@
integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
"@types/yargs@^15.0.0":
version "15.0.4"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299"
integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==
version "15.0.5"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79"
integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==
dependencies:
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^2.30.0":
version "2.30.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.30.0.tgz#312a37e80542a764d96e8ad88a105316cdcd7b05"
integrity sha512-PGejii0qIZ9Q40RB2jIHyUpRWs1GJuHP1pkoCiaeicfwO9z7Fx03NQzupuyzAmv+q9/gFNHu7lo1ByMXe8PNyg==
"@typescript-eslint/eslint-plugin@2.32.1-alpha.2":
version "2.32.1-alpha.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.32.1-alpha.2.tgz#8c752a13bdf336bc463862dd4780332bd3b7ee88"
integrity sha512-XpqVYKEcnXRXk16POr/6oacpxAy49ZRdU5CS08xM74OGYWZIJJCSXf82luAInMjVvaT/n8x8IbAf+Qpu55dmcw==
dependencies:
"@typescript-eslint/experimental-utils" "2.30.0"
"@typescript-eslint/experimental-utils" "2.32.1-alpha.2+08f93e69"
functional-red-black-tree "^1.0.1"
regexpp "^3.0.0"
tsutils "^3.17.1"
"@typescript-eslint/experimental-utils@2.30.0":
version "2.30.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.30.0.tgz#9845e868c01f3aed66472c561d4b6bac44809dd0"
integrity sha512-L3/tS9t+hAHksy8xuorhOzhdefN0ERPDWmR9CclsIGOUqGKy6tqc/P+SoXeJRye5gazkuPO0cK9MQRnolykzkA==
"@typescript-eslint/experimental-utils@2.32.1-alpha.2+08f93e69":
version "2.32.1-alpha.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.32.1-alpha.2.tgz#54b01c2985bf69b62b2708172a5e2d9d8906ded4"
integrity sha512-FBGgt1kEUqzZJPS2SrDkEEwea4UD3sr+AJqwtOFsl+gOq4uh0Ib3kSfyqF/LkocwZGE6pbAKd2t91bjhf+HjNA==
dependencies:
"@types/json-schema" "^7.0.3"
"@typescript-eslint/typescript-estree" "2.30.0"
"@typescript-eslint/typescript-estree" "2.32.1-alpha.2+08f93e69"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
"@typescript-eslint/experimental-utils@^2.5.0":
version "2.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz#5d2261c8038ec1698ca4435a8da479c661dc9242"
integrity sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ==
version "2.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.33.0.tgz#000f1e5f344fbea1323dc91cc174805d75f99a03"
integrity sha512-qzPM2AuxtMrRq78LwyZa8Qn6gcY8obkIrBs1ehqmQADwkYzTE1Pb4y2W+U3rE/iFkSWcWHG2LS6MJfj6SmHApg==
dependencies:
"@types/json-schema" "^7.0.3"
"@typescript-eslint/typescript-estree" "2.23.0"
"@typescript-eslint/typescript-estree" "2.33.0"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
"@typescript-eslint/parser@^2.30.0":
version "2.30.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.30.0.tgz#7681c305a6f4341ae2579f5e3a75846c29eee9ce"
integrity sha512-9kDOxzp0K85UnpmPJqUzdWaCNorYYgk1yZmf4IKzpeTlSAclnFsrLjfwD9mQExctLoLoGAUXq1co+fbr+3HeFw==
"@typescript-eslint/parser@2.32.1-alpha.2":
version "2.32.1-alpha.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.32.1-alpha.2.tgz#91bdf459b075da0c467422ca8c2949381a9fbedc"
integrity sha512-IyWkWZLuunNFkbcRI3FnMA5lrmKW7bOr6p2wr7JqaaGhG6431nIZcvrR9lzOBD7NC8rXzC+C1TdYmGb04qxQzQ==
dependencies:
"@types/eslint-visitor-keys" "^1.0.0"
"@typescript-eslint/experimental-utils" "2.30.0"
"@typescript-eslint/typescript-estree" "2.30.0"
"@typescript-eslint/experimental-utils" "2.32.1-alpha.2+08f93e69"
"@typescript-eslint/typescript-estree" "2.32.1-alpha.2+08f93e69"
eslint-visitor-keys "^1.1.0"
"@typescript-eslint/typescript-estree@2.23.0":
version "2.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz#d355960fab96bd550855488dcc34b9a4acac8d36"
integrity sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw==
"@typescript-eslint/typescript-estree@2.32.1-alpha.2+08f93e69":
version "2.32.1-alpha.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.32.1-alpha.2.tgz#27bfe86a5f53970a4a338cecdccc23ccd5dcd231"
integrity sha512-6UsCwEcPro0r07bUI35A3mcssdnnc8QRlFtTvLzjz3euy8F0mOdy4HROYqqu82eiTr3oXstO0l4SL5yANvHXdw==
dependencies:
debug "^4.1.1"
eslint-visitor-keys "^1.1.0"
glob "^7.1.6"
is-glob "^4.0.1"
lodash "^4.17.15"
semver "^6.3.0"
semver "^7.3.2"
tsutils "^3.17.1"
"@typescript-eslint/typescript-estree@2.30.0":
version "2.30.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.30.0.tgz#1b8e848b55144270255ffbfe4c63291f8f766615"
integrity sha512-nI5WOechrA0qAhnr+DzqwmqHsx7Ulr/+0H7bWCcClDhhWkSyZR5BmTvnBEyONwJCTWHfc5PAQExX24VD26IAVw==
"@typescript-eslint/typescript-estree@2.33.0":
version "2.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.33.0.tgz#33504c050ccafd38f397a645d4e9534d2eccbb5c"
integrity sha512-d8rY6/yUxb0+mEwTShCQF2zYQdLlqihukNfG9IUlLYz5y1CH6G/9XYbrxQLq3Z14RNvkCC6oe+OcFlyUpwUbkg==
dependencies:
debug "^4.1.1"
eslint-visitor-keys "^1.1.0"
glob "^7.1.6"
is-glob "^4.0.1"
lodash "^4.17.15"
semver "^6.3.0"
semver "^7.3.2"
tsutils "^3.17.1"
"@webassemblyjs/ast@1.9.0":
@ -1545,10 +1553,10 @@ accepts@~1.3.7:
mime-types "~2.1.24"
negotiator "0.6.2"
acorn-jsx@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384"
integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==
acorn-jsx@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
acorn-walk@^7.1.1:
version "7.1.1"
@ -1560,11 +1568,6 @@ acorn@^6.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
acorn@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c"
integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==
acorn@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
@ -2170,28 +2173,27 @@ cacache@^12.0.3:
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==
cacache@^15.0.3:
version "15.0.3"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.3.tgz#2225c2d1dd8e872339950d6a39c051e0e9334392"
integrity sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ==
dependencies:
chownr "^1.1.2"
figgy-pudding "^3.5.1"
chownr "^2.0.0"
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 "^3.1.1"
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"
mkdirp "^1.0.3"
move-file "^2.0.0"
p-map "^4.0.0"
promise-inflight "^1.0.1"
rimraf "^2.7.1"
ssri "^7.0.0"
rimraf "^3.0.2"
ssri "^8.0.0"
tar "^6.0.2"
unique-filename "^1.1.1"
cache-base@^1.0.1:
@ -2281,7 +2283,7 @@ caniuse-lite@^1.0.30001038, caniuse-lite@^1.0.30001039:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001042.tgz#c91ec21ec2d270bd76dbc2ce261260c292b8c93c"
integrity sha512-igMQ4dlqnf4tWv0xjaaE02op9AJ2oQzXKjWf4EuAHFN694Uo9/EfPVIPJcmn2WkU9RqozCxx5e2KPcVClHDbDw==
chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
chalk@2.4.2, chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@ -2369,11 +2371,16 @@ chokidar@^2.0.4, chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
chownr@^1.1.1, chownr@^1.1.2:
chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
chownr@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
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"
@ -2470,6 +2477,11 @@ clone@^1.0.2:
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
clsx@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.0.tgz#62937c6adfea771247c34b54d320fb99624f5702"
integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA==
coa@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
@ -2665,9 +2677,9 @@ core-js-compat@^3.6.2:
semver "7.0.0"
core-js-pure@^3.0.0:
version "3.6.4"
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a"
integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==
version "3.6.5"
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
core-js@^3.6.2:
version "3.6.5"
@ -2731,7 +2743,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
cross-spawn@6.0.5, cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
@ -2742,7 +2754,7 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
cross-spawn@^7.0.0:
cross-spawn@^7.0.0, cross-spawn@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6"
integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==
@ -2943,10 +2955,10 @@ damerau-levenshtein@^1.0.4:
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414"
integrity sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==
date-fns@^2.8.1:
version "2.12.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.12.0.tgz#01754c8a2f3368fc1119cf4625c3dad8c1845ee6"
integrity sha512-qJgn99xxKnFgB1qL4jpxU7Q2t0LOn1p8KMIveef3UZD7kqjT3tpFNNdXJelEHhE+rUgffriXriw/sOSU+cS1Hw==
date-fns@^2.13.0:
version "2.13.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.13.0.tgz#d7b8a0a2d392e8d88a8024d0a46b980bbfdbd708"
integrity sha512-xm0c61mevGF7f0XpCGtDTGpzEFC/1fpLXHbmFpxZZQJuvByIK2ozm6cSYuU+nxFYOPh2EuCfzUwlTEFwKG+h5w==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
version "2.6.9"
@ -2984,7 +2996,7 @@ dedent@^0.7.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
deep-is@~0.1.3:
deep-is@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
@ -3395,6 +3407,22 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
eslint-config-airbnb-base@^14.1.0:
version "14.1.0"
resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4"
integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==
dependencies:
confusing-browser-globals "^1.0.9"
object.assign "^4.1.0"
object.entries "^1.1.1"
eslint-config-prettier@^6.11.0:
version "6.11.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1"
integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==
dependencies:
get-stdin "^6.0.0"
eslint-config-react-app@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df"
@ -3441,7 +3469,7 @@ eslint-plugin-flowtype@4.x:
dependencies:
lodash "^4.17.15"
eslint-plugin-import@2.x:
eslint-plugin-import@^2.20.2:
version "2.20.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d"
integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==
@ -3459,10 +3487,10 @@ eslint-plugin-import@2.x:
read-pkg-up "^2.0.0"
resolve "^1.12.0"
eslint-plugin-jest@^23.6.0:
version "23.8.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz#6f28b41c67ef635f803ebd9e168f6b73858eb8d4"
integrity sha512-xwbnvOsotSV27MtAe7s8uGWOori0nUsrXh2f1EnpmXua8sDfY6VZhHAhHg2sqK7HBNycRQExF074XSZ7DvfoFg==
eslint-plugin-jest@^23.10.0:
version "23.11.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.11.0.tgz#6e01d83ea74c1eefd60811655bbc288bd8ab2e7d"
integrity sha512-qedvh6mcMgoLFHjITtG40yKOCu5Fa1GMYesDOclU30ZvtVkf+DaH0fnCn1ysOX/QMdk2SGhQvxvYLowcLaM0GA==
dependencies:
"@typescript-eslint/experimental-utils" "^2.5.0"
@ -3481,15 +3509,15 @@ eslint-plugin-jsx-a11y@6.x:
has "^1.0.3"
jsx-ast-utils "^2.2.1"
eslint-plugin-react-hooks@2.x:
version "2.5.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0"
integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==
eslint-plugin-react-hooks@^4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.2.tgz#03700ca761eacc1b6436074c456f90a8e331ff28"
integrity sha512-kAMRjNztrLW1rK+81X1NwMB2LqG+nc7Q8AibnG8/VyWhQK8SP6JotCFG+HL4u1EjziplxVz4jARdR8gGk8pLDA==
eslint-plugin-react@7.x:
version "7.19.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666"
integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==
version "7.20.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz#f98712f0a5e57dfd3e5542ef0604b8739cd47be3"
integrity sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==
dependencies:
array-includes "^3.1.1"
doctrine "^2.1.0"
@ -3500,10 +3528,14 @@ eslint-plugin-react@7.x:
object.values "^1.1.1"
prop-types "^15.7.2"
resolve "^1.15.1"
semver "^6.3.0"
string.prototype.matchall "^4.0.2"
xregexp "^4.3.0"
eslint-plugin-simple-import-sort@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-5.0.3.tgz#9ae258ddada6efffc55e47a134afbd279eb31fc6"
integrity sha512-1rf3AWiHeWNCQdAq0iXNnlccnH1UDnelGgrPbjBBHE8d2hXVtOudcmy0vTF4hri3iJ0MKz8jBhmH6lJ0ZWZLHQ==
eslint-scope@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
@ -3520,13 +3552,6 @@ eslint-scope@^5.0.0:
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint-utils@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
dependencies:
eslint-visitor-keys "^1.1.0"
eslint-utils@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd"
@ -3539,22 +3564,22 @@ 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.x:
version "6.8.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
eslint@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.0.0.tgz#c35dfd04a4372110bd78c69a8d79864273919a08"
integrity sha512-qY1cwdOxMONHJfGqw52UOpZDeqXy8xmD0u8CT6jIstil72jkhURC704W8CFyTPDPllz4z4lu0Ql1+07PG/XdIg==
dependencies:
"@babel/code-frame" "^7.0.0"
ajv "^6.10.0"
chalk "^2.1.0"
cross-spawn "^6.0.5"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.0.1"
doctrine "^3.0.0"
eslint-scope "^5.0.0"
eslint-utils "^1.4.3"
eslint-utils "^2.0.0"
eslint-visitor-keys "^1.1.0"
espree "^6.1.2"
esquery "^1.0.1"
espree "^7.0.0"
esquery "^1.2.0"
esutils "^2.0.2"
file-entry-cache "^5.0.1"
functional-red-black-tree "^1.0.1"
@ -3567,28 +3592,27 @@ eslint@6.x:
is-glob "^4.0.0"
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.3.0"
levn "^0.4.1"
lodash "^4.17.14"
minimatch "^3.0.4"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
optionator "^0.8.3"
optionator "^0.9.1"
progress "^2.0.0"
regexpp "^2.0.1"
semver "^6.1.2"
strip-ansi "^5.2.0"
strip-json-comments "^3.0.1"
regexpp "^3.1.0"
semver "^7.2.1"
strip-ansi "^6.0.0"
strip-json-comments "^3.1.0"
table "^5.2.3"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^6.1.2:
version "6.1.2"
resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d"
integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==
espree@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.0.0.tgz#8a7a60f218e69f120a842dc24c5a88aa7748a74e"
integrity sha512-/r2XEx5Mw4pgKdyb7GNLQNsu++asx/dltf/CI8RFi9oGHxmQFgvLbc5Op4U6i8Oaj+kdslhJtVlEZeAqH5qOTw==
dependencies:
acorn "^7.1.0"
acorn-jsx "^5.1.0"
acorn "^7.1.1"
acorn-jsx "^5.2.0"
eslint-visitor-keys "^1.1.0"
esprima@^4.0.0:
@ -3596,12 +3620,12 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
esquery@^1.2.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
dependencies:
estraverse "^4.0.0"
estraverse "^5.1.0"
esrecurse@^4.1.0:
version "4.2.1"
@ -3610,11 +3634,16 @@ esrecurse@^4.1.0:
dependencies:
estraverse "^4.1.0"
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
estraverse@^4.1.0, estraverse@^4.1.1:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@ -3799,7 +3828,7 @@ fast-json-stable-stringify@^2.0.0:
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
fast-levenshtein@~2.0.6:
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=
@ -4119,6 +4148,11 @@ get-own-enumerable-property-symbols@^3.0.0:
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
get-stdin@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
@ -4266,7 +4300,7 @@ globby@^7.1.1:
pify "^3.0.0"
slash "^1.0.0"
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.2:
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.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==
@ -4453,10 +4487,10 @@ html-minifier-terser@^5.0.1:
relateurl "^0.2.7"
terser "^4.6.3"
html-webpack-plugin@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.2.1.tgz#2a8b421ad19eb622397394f34ad6975a14bf0fac"
integrity sha512-zTTPxKJ8bgRe4RVDzT1MZW8ysW5wwDfJmD3AN+7mw2MKMWZJibZzBgHaDqnL6FJg1kvk38sQPMJNmI8Q1Ntr9A==
html-webpack-plugin@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.3.0.tgz#53bf8f6d696c4637d5b656d3d9863d89ce8174fd"
integrity sha512-C0fzKN8yQoVLTelcJxZfJCE+aAvQiY2VUf3UuKrR4a9k5UMWYOtpDLsaXwATbcVCnI05hUS7L9ULQHWLZhyi3w==
dependencies:
"@types/html-minifier-terser" "^5.0.0"
"@types/tapable" "^1.0.5"
@ -5023,24 +5057,24 @@ isobject@^3.0.0, isobject@^3.0.1:
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
jest-diff@^25.2.1:
version "25.4.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634"
integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug==
version "25.5.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9"
integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==
dependencies:
chalk "^3.0.0"
diff-sequences "^25.2.6"
jest-get-type "^25.2.6"
pretty-format "^25.4.0"
pretty-format "^25.5.0"
jest-get-type@^25.2.6:
version "25.2.6"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
jest-worker@^25.4.0:
version "25.4.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384"
integrity sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw==
jest-worker@^26.0.0:
version "26.0.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.0.0.tgz#4920c7714f0a96c6412464718d0c58a3df3fb066"
integrity sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw==
dependencies:
merge-stream "^2.0.0"
supports-color "^7.0.0"
@ -5158,23 +5192,23 @@ levenary@^1.1.1:
dependencies:
leven "^3.1.0"
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
dependencies:
prelude-ls "~1.1.2"
type-check "~0.3.2"
prelude-ls "^1.2.1"
type-check "~0.4.0"
lines-and-columns@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
lint-staged@^10.2.1:
version "10.2.1"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.1.tgz#def64534c2a5f28e5b723a4bd970347d5b015339"
integrity sha512-UPeqH0z+WzM5Gd2Ip/YfqA16SLiX3fCiC/in9hKioMDDMUUTN8YQbj0hupgQpyR5YZN35KCW9d4kjvH9XGN+3Q==
lint-staged@^10.2.2:
version "10.2.2"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.2.tgz#901403c120eb5d9443a0358b55038b04c8a7db9b"
integrity sha512-78kNqNdDeKrnqWsexAmkOU3Z5wi+1CsQmUmfCuYgMTE8E4rAIX8RHW7xgxwAZ+LAayb7Cca4uYX4P3LlevzjVg==
dependencies:
chalk "^4.0.0"
commander "^5.0.0"
@ -5583,6 +5617,14 @@ minipass@^3.0.0, minipass@^3.1.1:
dependencies:
yallist "^4.0.0"
minizlib@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3"
integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==
dependencies:
minipass "^3.0.0"
yallist "^4.0.0"
mississippi@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
@ -5614,6 +5656,11 @@ mkdirp@^0.5.1, mkdirp@^0.5.3:
dependencies:
minimist "^1.2.5"
mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
@ -5643,6 +5690,13 @@ move-concurrently@^1.0.1:
rimraf "^2.5.4"
run-queue "^1.0.3"
move-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/move-file/-/move-file-2.0.0.tgz#83ffa309b5d7f69d518b28e1333e2ffadf331e3e"
integrity sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ==
dependencies:
path-exists "^4.0.0"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@ -5976,17 +6030,17 @@ opener@^1.5.1:
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
optionator@^0.8.3:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
optionator@^0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
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"
deep-is "^0.1.3"
fast-levenshtein "^2.0.6"
levn "^0.4.1"
prelude-ls "^1.2.1"
type-check "^0.4.0"
word-wrap "^1.2.3"
original@^1.0.0:
version "1.0.2"
@ -6076,13 +6130,6 @@ p-map@^2.0.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-map@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
@ -6767,10 +6814,10 @@ postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.
source-map "^0.6.1"
supports-color "^6.1.0"
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prepend-http@^1.0.0:
version "1.0.4"
@ -6790,12 +6837,12 @@ pretty-error@^2.1.1:
renderkid "^2.0.1"
utila "~0.4"
pretty-format@^25.2.1, pretty-format@^25.4.0:
version "25.4.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830"
integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ==
pretty-format@^25.2.1, pretty-format@^25.5.0:
version "25.5.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
dependencies:
"@jest/types" "^25.4.0"
"@jest/types" "^25.5.0"
ansi-regex "^5.0.0"
ansi-styles "^4.0.0"
react-is "^16.12.0"
@ -7042,10 +7089,10 @@ react-modal@^3.11.1:
react-lifecycles-compat "^3.0.0"
warning "^4.0.3"
react-refresh@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.1.tgz#5500506ad6fc891fdd057d0bf3581f9310abc6a2"
integrity sha512-xZIKi49RtLUUSAZ4a4ut2xr+zr4+glOD5v0L413B55MPvlg4EQ6Ctx8PD4CmjlPGoAWmSCTmmkY59TErizNsow==
react-refresh@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.2.tgz#24bb0858eac92b0d7b0dd561747f0c9fd6c60327"
integrity sha512-n8GXxo3DwM2KtFEL69DAVhGc4A1THn2qjmfvSo3nze0NLCoPbywazeJPqdp0RdSGLmyhQzeyA+XPXOobbYlkzg==
react-router-dom@^6.0.0-alpha.1:
version "6.0.0-alpha.2"
@ -7083,10 +7130,10 @@ react-tabs@^3.1.0:
classnames "^2.2.0"
prop-types "^15.5.0"
react-tiny-fab@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/react-tiny-fab/-/react-tiny-fab-3.4.1.tgz#f44b04559a9fb95360c08e2834b9389998a1f83a"
integrity sha512-R2lQl0i9rSSODNk3AurUTsjUX8Vay9VY2FlekZjsPKoTynUn7dhVtrNysnewohoyAzxALPl+p+UX+nFM1RyqOQ==
react-tiny-fab@^3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/react-tiny-fab/-/react-tiny-fab-3.5.0.tgz#214887a715a68639e574c6eb1029dcac13c6fbec"
integrity sha512-KjWzs7fsTTvrmCZrtKVV8EKdfoC7BgWCePujtWfczpXiUCECtBYkhP+EvBYLRgU6BAHdtduBfybfN4pTCpw2Zw==
react-window@^1.8.5:
version "1.8.5"
@ -7208,12 +7255,7 @@ regexp.prototype.flags@^1.3.0:
define-properties "^1.1.3"
es-abstract "^1.17.0-next.1"
regexpp@^2.0.1:
version "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:
regexpp@^3.0.0, regexpp@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
@ -7347,7 +7389,14 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1:
dependencies:
path-parse "^1.0.6"
resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1:
resolve@^1.15.1:
version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
dependencies:
path-parse "^1.0.6"
resolve@^1.3.2, resolve@^1.8.1:
version "1.15.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
@ -7392,13 +7441,20 @@ rimraf@2.6.3:
dependencies:
glob "^7.1.3"
rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1:
rimraf@^2.5.4, rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
@ -7507,11 +7563,16 @@ semver@7.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
semver@^6.0.0, semver@^6.1.2, semver@^6.3.0:
semver@^6.0.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.2.1, semver@^7.3.2:
version "7.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
send@0.17.1:
version "0.17.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
@ -7813,12 +7874,11 @@ 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==
ssri@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808"
integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==
dependencies:
figgy-pudding "^3.5.1"
minipass "^3.1.1"
stable@^0.1.8:
@ -8049,10 +8109,10 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
strip-json-comments@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
strip-json-comments@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
style-loader@^1.2.1:
version "1.2.1"
@ -8155,6 +8215,18 @@ tapable@^1.0.0, tapable@^1.1.3:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
tar@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39"
integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==
dependencies:
chownr "^2.0.0"
fs-minipass "^2.0.0"
minipass "^3.0.0"
minizlib "^2.1.0"
mkdirp "^1.0.3"
yallist "^4.0.0"
terser-webpack-plugin@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c"
@ -8170,22 +8242,22 @@ terser-webpack-plugin@^1.4.3:
webpack-sources "^1.4.0"
worker-farm "^1.7.0"
terser-webpack-plugin@^2.3.1:
version "2.3.6"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz#a4014b311a61f87c6a1b217ef4f5a75bd0665a69"
integrity sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg==
terser-webpack-plugin@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz#31928c9330a582fb5ec6f90805337289b85cb8fe"
integrity sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw==
dependencies:
cacache "^13.0.1"
cacache "^15.0.3"
find-cache-dir "^3.3.1"
jest-worker "^25.4.0"
jest-worker "^26.0.0"
p-limit "^2.3.0"
schema-utils "^2.6.6"
serialize-javascript "^3.0.0"
source-map "^0.6.1"
terser "^4.6.12"
terser "^4.6.13"
webpack-sources "^1.4.3"
terser@^4.1.2, terser@^4.6.12:
terser@^4.1.2:
version "4.6.12"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.12.tgz#44b98aef8703fdb09a3491bf79b43faffc5b4fee"
integrity sha512-fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==
@ -8194,6 +8266,15 @@ terser@^4.1.2, terser@^4.6.12:
source-map "~0.6.1"
source-map-support "~0.5.12"
terser@^4.6.13:
version "4.6.13"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.13.tgz#e879a7364a5e0db52ba4891ecde007422c56a916"
integrity sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==
dependencies:
commander "^2.20.0"
source-map "~0.6.1"
source-map-support "~0.5.12"
terser@^4.6.3:
version "4.6.11"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.11.tgz#12ff99fdd62a26de2a82f508515407eb6ccd8a9f"
@ -8302,10 +8383,10 @@ tryer@^1.0.1:
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
ts-loader@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.2.tgz#465bc904aea4c331e9550e7c7d75dd17a0b7c24c"
integrity sha512-DwpZFB67RoILQHx42dMjSgv2STpacsQu5X+GD/H9ocd8IhU0m8p3b/ZrIln2KmcucC6xep2PdEMEblpWT71euA==
ts-loader@^7.0.4:
version "7.0.4"
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-7.0.4.tgz#5d9b95227de5afb91fdd9668f8920eb193cfe0cc"
integrity sha512-5du6OQHl+4ZjO4crEyoYUyWSrmmo7bAO+inkaILZ68mvahqrfoa4nn0DRmpQ4ruT4l+cuJCgF0xD7SBIyLeeow==
dependencies:
chalk "^2.3.0"
enhanced-resolve "^4.0.0"
@ -8313,11 +8394,16 @@ ts-loader@^7.0.2:
micromatch "^4.0.0"
semver "^6.0.0"
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3:
version "1.11.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==
tslib@^1.8.1:
version "1.13.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
tsutils@^3.17.1:
version "3.17.1"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
@ -8330,12 +8416,12 @@ tty-browserify@0.0.0:
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
dependencies:
prelude-ls "~1.1.2"
prelude-ls "^1.2.1"
type-fest@^0.11.0:
version "0.11.0"
@ -8366,9 +8452,9 @@ typedarray@^0.0.6:
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^3.8.3:
version "3.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
version "3.9.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9"
integrity sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw==
unicode-canonical-property-names-ecmascript@^1.0.4:
version "1.0.4"
@ -8731,7 +8817,7 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
word-wrap@~1.2.3:
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==