added: modal prompt to close previous connections when switch proxy
This commit is contained in:
parent
bbb9f55183
commit
201f6904c2
9 changed files with 414 additions and 228 deletions
14
package.json
14
package.json
|
@ -34,7 +34,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.9.6",
|
"@babel/runtime": "^7.9.6",
|
||||||
"@hsjs/react-cache": "0.0.0-alpha.aa94237",
|
"@hsjs/react-cache": "0.0.0-alpha.aa94237",
|
||||||
"@sentry/browser": "^5.15.0",
|
"@sentry/browser": "^5.16.1",
|
||||||
"chart.js": "^2.9.2",
|
"chart.js": "^2.9.2",
|
||||||
"clsx": "^1.1.0",
|
"clsx": "^1.1.0",
|
||||||
"core-js": "^3.6.2",
|
"core-js": "^3.6.2",
|
||||||
|
@ -77,13 +77,13 @@
|
||||||
"@types/jest": "^25.2.1",
|
"@types/jest": "^25.2.1",
|
||||||
"@types/react": "^16.9.35",
|
"@types/react": "^16.9.35",
|
||||||
"@types/react-dom": "^16.9.8",
|
"@types/react-dom": "^16.9.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^3.0.0",
|
"@typescript-eslint/eslint-plugin": "^3.1.0",
|
||||||
"@typescript-eslint/parser": "^3.0.0",
|
"@typescript-eslint/parser": "^3.1.0",
|
||||||
"autoprefixer": "^9.7.3",
|
"autoprefixer": "^9.7.3",
|
||||||
"babel-eslint": "10.x",
|
"babel-eslint": "10.x",
|
||||||
"babel-loader": "^8.0.5",
|
"babel-loader": "^8.0.5",
|
||||||
"clean-webpack-plugin": "^3.0.0",
|
"clean-webpack-plugin": "^3.0.0",
|
||||||
"copy-webpack-plugin": "^6.0.1",
|
"copy-webpack-plugin": "^6.0.2",
|
||||||
"css-loader": "^3.4.2",
|
"css-loader": "^3.4.2",
|
||||||
"cssnano": "^4.1.7",
|
"cssnano": "^4.1.7",
|
||||||
"eslint": "^7.0.0",
|
"eslint": "^7.0.0",
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
"fork-ts-checker-webpack-plugin": "^4.1.5",
|
"fork-ts-checker-webpack-plugin": "^4.1.5",
|
||||||
"html-webpack-plugin": "^4.3.0",
|
"html-webpack-plugin": "^4.3.0",
|
||||||
"husky": "^4.0.0",
|
"husky": "^4.0.0",
|
||||||
"lint-staged": "^10.2.2",
|
"lint-staged": "^10.2.9",
|
||||||
"mini-css-extract-plugin": "^0.9.0",
|
"mini-css-extract-plugin": "^0.9.0",
|
||||||
"postcss-custom-media": "^7.0.8",
|
"postcss-custom-media": "^7.0.8",
|
||||||
"postcss-extend-rule": "^3.0.0",
|
"postcss-extend-rule": "^3.0.0",
|
||||||
|
@ -115,9 +115,9 @@
|
||||||
"react-refresh": "^0.8.2",
|
"react-refresh": "^0.8.2",
|
||||||
"resize-observer-polyfill": "^1.5.1",
|
"resize-observer-polyfill": "^1.5.1",
|
||||||
"style-loader": "^1.2.1",
|
"style-loader": "^1.2.1",
|
||||||
"terser-webpack-plugin": "^3.0.1",
|
"terser-webpack-plugin": "^3.0.3",
|
||||||
"ts-loader": "^7.0.5",
|
"ts-loader": "^7.0.5",
|
||||||
"typescript": "^3.8.3",
|
"typescript": "^3.9.5",
|
||||||
"webpack": "^4.41.6",
|
"webpack": "^4.41.6",
|
||||||
"webpack-bundle-analyzer": "^3.6.0",
|
"webpack-bundle-analyzer": "^3.6.0",
|
||||||
"webpack-cli": "^3.3.10",
|
"webpack-cli": "^3.3.10",
|
||||||
|
|
|
@ -82,4 +82,15 @@ async function closeAllConnections(apiConfig) {
|
||||||
return await fetch(url + endpoint, { ...init, method: 'DELETE' });
|
return await fetch(url + endpoint, { ...init, method: 'DELETE' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function fetchConns(apiConfig) {
|
||||||
|
const { url, init } = getURLAndInit(apiConfig);
|
||||||
|
return await fetch(url + endpoint, { ...init });
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function closeConnById(apiConfig, id) {
|
||||||
|
const { url: baseURL, init } = getURLAndInit(apiConfig);
|
||||||
|
const url = `${baseURL}${endpoint}/${id}`;
|
||||||
|
return await fetch(url, { ...init, method: 'DELETE' });
|
||||||
|
}
|
||||||
|
|
||||||
export { fetchData, closeAllConnections };
|
export { fetchData, closeAllConnections };
|
||||||
|
|
50
src/components/proxies/ClosePrevConns.tsx
Normal file
50
src/components/proxies/ClosePrevConns.tsx
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
import * as React from 'react';
|
||||||
|
|
||||||
|
import Button from '../Button';
|
||||||
|
import { FlexCenter } from '../shared/Styled';
|
||||||
|
|
||||||
|
const { useRef, useEffect } = React;
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
onClickPrimaryButton?: () => void;
|
||||||
|
onClickSecondaryButton?: () => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function ClosePrevConns({
|
||||||
|
onClickPrimaryButton,
|
||||||
|
onClickSecondaryButton,
|
||||||
|
}: Props) {
|
||||||
|
const primaryButtonRef = useRef<HTMLButtonElement>(null);
|
||||||
|
const secondaryButtonRef = useRef<HTMLButtonElement>(null);
|
||||||
|
useEffect(() => {
|
||||||
|
primaryButtonRef.current.focus();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleKeyDown = (e: React.KeyboardEvent) => {
|
||||||
|
if (e.keyCode === 39) {
|
||||||
|
secondaryButtonRef.current.focus();
|
||||||
|
} else if (e.keyCode === 37) {
|
||||||
|
primaryButtonRef.current.focus();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div onKeyDown={handleKeyDown}>
|
||||||
|
<h2>Close Connections?</h2>
|
||||||
|
<p>
|
||||||
|
Click "Yes" to close those connections that are still using the old
|
||||||
|
selected proxy in this group
|
||||||
|
</p>
|
||||||
|
<div style={{ height: 30 }} />
|
||||||
|
<FlexCenter>
|
||||||
|
<Button onClick={onClickPrimaryButton} ref={primaryButtonRef}>
|
||||||
|
Yes
|
||||||
|
</Button>
|
||||||
|
<div style={{ width: 20 }} />
|
||||||
|
<Button onClick={onClickSecondaryButton} ref={secondaryButtonRef}>
|
||||||
|
No
|
||||||
|
</Button>
|
||||||
|
</FlexCenter>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
|
@ -1,12 +1,13 @@
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
import { connect } from '../StateProvider';
|
import { connect, useStoreActions } from '../StateProvider';
|
||||||
|
|
||||||
import Button from '../Button';
|
import Button from '../Button';
|
||||||
import ContentHeader from '../ContentHeader';
|
import ContentHeader from '../ContentHeader';
|
||||||
import { ProxyGroup } from './ProxyGroup';
|
import { ProxyGroup } from './ProxyGroup';
|
||||||
import BaseModal from '../shared/BaseModal';
|
import BaseModal from '../shared/BaseModal';
|
||||||
import Settings from './Settings';
|
import Settings from './Settings';
|
||||||
|
import { ClosePrevConns } from './ClosePrevConns';
|
||||||
import Equalizer from '../svg/Equalizer';
|
import Equalizer from '../svg/Equalizer';
|
||||||
import { Zap } from 'react-feather';
|
import { Zap } from 'react-feather';
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@ import {
|
||||||
getDelay,
|
getDelay,
|
||||||
getProxyGroupNames,
|
getProxyGroupNames,
|
||||||
getProxyProviders,
|
getProxyProviders,
|
||||||
|
getShowModalClosePrevConns,
|
||||||
fetchProxies,
|
fetchProxies,
|
||||||
requestDelayAll,
|
requestDelayAll,
|
||||||
} from '../../store/proxies';
|
} from '../../store/proxies';
|
||||||
|
@ -26,7 +28,14 @@ import { getClashAPIConfig } from '../../store/app';
|
||||||
|
|
||||||
const { useState, useEffect, useCallback, useRef } = React;
|
const { useState, useEffect, useCallback, useRef } = React;
|
||||||
|
|
||||||
function Proxies({ dispatch, groupNames, delay, proxyProviders, apiConfig }) {
|
function Proxies({
|
||||||
|
dispatch,
|
||||||
|
groupNames,
|
||||||
|
delay,
|
||||||
|
proxyProviders,
|
||||||
|
apiConfig,
|
||||||
|
showModalClosePrevConns,
|
||||||
|
}) {
|
||||||
const refFetchedTimestamp = useRef<{ startAt?: number; completeAt?: number }>(
|
const refFetchedTimestamp = useRef<{ startAt?: number; completeAt?: number }>(
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
|
@ -69,6 +78,10 @@ function Proxies({ dispatch, groupNames, delay, proxyProviders, apiConfig }) {
|
||||||
setIsSettingsModalOpen(false);
|
setIsSettingsModalOpen(false);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const {
|
||||||
|
proxies: { closeModalClosePrevConns, closePrevConnsAndTheModal },
|
||||||
|
} = useStoreActions();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className={s0.topBar}>
|
<div className={s0.topBar}>
|
||||||
|
@ -84,7 +97,7 @@ function Proxies({ dispatch, groupNames, delay, proxyProviders, apiConfig }) {
|
||||||
</BaseModal>
|
</BaseModal>
|
||||||
<ContentHeader title="Proxies" />
|
<ContentHeader title="Proxies" />
|
||||||
<div>
|
<div>
|
||||||
{groupNames.map((groupName) => {
|
{groupNames.map((groupName: string) => {
|
||||||
return (
|
return (
|
||||||
<div className={s0.group} key={groupName}>
|
<div className={s0.group} key={groupName}>
|
||||||
<ProxyGroup
|
<ProxyGroup
|
||||||
|
@ -105,6 +118,15 @@ function Proxies({ dispatch, groupNames, delay, proxyProviders, apiConfig }) {
|
||||||
text="Test Latency"
|
text="Test Latency"
|
||||||
position={fabPosition}
|
position={fabPosition}
|
||||||
/>
|
/>
|
||||||
|
<BaseModal
|
||||||
|
isOpen={showModalClosePrevConns}
|
||||||
|
onRequestClose={closeModalClosePrevConns}
|
||||||
|
>
|
||||||
|
<ClosePrevConns
|
||||||
|
onClickPrimaryButton={() => closePrevConnsAndTheModal(apiConfig)}
|
||||||
|
onClickSecondaryButton={closeModalClosePrevConns}
|
||||||
|
/>
|
||||||
|
</BaseModal>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -131,6 +153,7 @@ const mapState = (s) => ({
|
||||||
groupNames: getProxyGroupNames(s),
|
groupNames: getProxyGroupNames(s),
|
||||||
proxyProviders: getProxyProviders(s),
|
proxyProviders: getProxyProviders(s),
|
||||||
delay: getDelay(s),
|
delay: getDelay(s),
|
||||||
|
showModalClosePrevConns: getShowModalClosePrevConns(s),
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(mapState)(Proxies);
|
export default connect(mapState)(Proxies);
|
||||||
|
|
5
src/components/shared/Styled.module.css
Normal file
5
src/components/shared/Styled.module.css
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.FlexCenter {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
6
src/components/shared/Styled.tsx
Normal file
6
src/components/shared/Styled.tsx
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import * as React from 'react';
|
||||||
|
import s from './Styled.module.css';
|
||||||
|
|
||||||
|
export function FlexCenter({ children }: { children: React.ReactNode }) {
|
||||||
|
return <div className={s.FlexCenter}>{children}</div>;
|
||||||
|
}
|
|
@ -1,20 +1,59 @@
|
||||||
import * as proxiesAPI from '../api/proxies';
|
import * as proxiesAPI from '../api/proxies';
|
||||||
|
import * as connAPI from '../api/connections';
|
||||||
import { getLatencyTestUrl } from './app';
|
import { getLatencyTestUrl } from './app';
|
||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
type PrimitiveProxyType = 'Shadowsocks' | 'Snell' | 'Socks5' | 'Http' | 'Vmess';
|
||||||
type ProxyProvider = {
|
|
||||||
name: string,
|
type LatencyHistory = Array<{ time: string; delay: number }>;
|
||||||
type: 'Proxy',
|
|
||||||
updatedAt: string,
|
type ProxyItem = {
|
||||||
vehicleType: 'HTTP' | 'File' | 'Compatible',
|
name: string;
|
||||||
proxies: Array<{
|
type: PrimitiveProxyType;
|
||||||
history: Array<{ time: string, delay: number }>,
|
history: LatencyHistory;
|
||||||
name: string,
|
all?: string[];
|
||||||
// Shadowsocks, Http ...
|
now?: string;
|
||||||
type: string,
|
|
||||||
}>,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type ProxyProvider = {
|
||||||
|
name: string;
|
||||||
|
type: 'Proxy';
|
||||||
|
updatedAt: string;
|
||||||
|
vehicleType: 'HTTP' | 'File' | 'Compatible';
|
||||||
|
proxies: Array<ProxyItem>;
|
||||||
|
};
|
||||||
|
|
||||||
|
type FormattedProxyProvider = Omit<ProxyProvider, 'proxies'> & {
|
||||||
|
proxies: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
type ProxiesDict = { [name: string]: ProxyItem };
|
||||||
|
|
||||||
|
type ProxiesState = {
|
||||||
|
proxies: ProxiesDict;
|
||||||
|
delay: { [key: string]: { number: number } };
|
||||||
|
groupNames: string[];
|
||||||
|
proxyProviders?: FormattedProxyProvider[];
|
||||||
|
dangleProxyNames?: string[];
|
||||||
|
|
||||||
|
showModalClosePrevConns: boolean;
|
||||||
|
switchProxyCtx?: {
|
||||||
|
to: { groupName: string; itemName: string };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
type GlobalState = {
|
||||||
|
proxies: ProxiesState;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const initialState: ProxiesState = {
|
||||||
|
proxies: {},
|
||||||
|
delay: {},
|
||||||
|
groupNames: [],
|
||||||
|
showModalClosePrevConns: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
const noop = () => null;
|
||||||
|
|
||||||
// see all types:
|
// see all types:
|
||||||
// https://github.com/Dreamacro/clash/blob/master/constant/adapters.go
|
// https://github.com/Dreamacro/clash/blob/master/constant/adapters.go
|
||||||
|
|
||||||
|
@ -32,22 +71,33 @@ const NonProxyTypes = [
|
||||||
'Unknown',
|
'Unknown',
|
||||||
];
|
];
|
||||||
|
|
||||||
export const getProxies = (s) => s.proxies.proxies;
|
export const getProxies = (s: GlobalState) => s.proxies.proxies;
|
||||||
export const getDelay = (s) => s.proxies.delay;
|
export const getDelay = (s: GlobalState) => s.proxies.delay;
|
||||||
export const getProxyGroupNames = (s) => s.proxies.groupNames;
|
export const getProxyGroupNames = (s: GlobalState) => s.proxies.groupNames;
|
||||||
export const getProxyProviders = (s) => s.proxies.proxyProviders || [];
|
export const getProxyProviders = (s: GlobalState) =>
|
||||||
export const getDangleProxyNames = (s) => s.proxies.dangleProxyNames;
|
s.proxies.proxyProviders || [];
|
||||||
|
export const getDangleProxyNames = (s: GlobalState) =>
|
||||||
|
s.proxies.dangleProxyNames;
|
||||||
|
export const getShowModalClosePrevConns = (s: GlobalState) =>
|
||||||
|
s.proxies.showModalClosePrevConns;
|
||||||
|
|
||||||
export function fetchProxies(apiConfig) {
|
type APIConfig = {
|
||||||
return async (dispatch, getState) => {
|
hostname: string;
|
||||||
|
port: string;
|
||||||
|
secret?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function fetchProxies(apiConfig: APIConfig) {
|
||||||
|
return async (dispatch: any, getState: any) => {
|
||||||
const [proxiesData, providersData] = await Promise.all([
|
const [proxiesData, providersData] = await Promise.all([
|
||||||
proxiesAPI.fetchProxies(apiConfig),
|
proxiesAPI.fetchProxies(apiConfig),
|
||||||
proxiesAPI.fetchProviderProxies(apiConfig),
|
proxiesAPI.fetchProviderProxies(apiConfig),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const [proxyProviders, providerProxies] = formatProxyProviders(
|
const {
|
||||||
providersData.providers
|
providers: proxyProviders,
|
||||||
);
|
proxies: providerProxies,
|
||||||
|
} = formatProxyProviders(providersData.providers);
|
||||||
const proxies = { ...providerProxies, ...proxiesData.proxies };
|
const proxies = { ...providerProxies, ...proxiesData.proxies };
|
||||||
const [groupNames, proxyNames] = retrieveGroupNamesFrom(proxies);
|
const [groupNames, proxyNames] = retrieveGroupNamesFrom(proxies);
|
||||||
|
|
||||||
|
@ -58,14 +108,8 @@ export function fetchProxies(apiConfig) {
|
||||||
const name = proxyNames[i];
|
const name = proxyNames[i];
|
||||||
const { history } = proxies[name] || { history: [] };
|
const { history } = proxies[name] || { history: [] };
|
||||||
const h = history[history.length - 1];
|
const h = history[history.length - 1];
|
||||||
if (h) {
|
if (h && h.delay) {
|
||||||
const ret = { error: '' };
|
delayNext[name] = { number: h.delay };
|
||||||
if (h.delay === 0) {
|
|
||||||
ret.error = 'LikelyTimeout';
|
|
||||||
} else {
|
|
||||||
ret.number = h.delay;
|
|
||||||
}
|
|
||||||
delayNext[name] = ret;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +119,7 @@ export function fetchProxies(apiConfig) {
|
||||||
if (!providerProxies[v]) dangleProxyNames.push(v);
|
if (!providerProxies[v]) dangleProxyNames.push(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch('store/proxies#fetchProxies', (s) => {
|
dispatch('store/proxies#fetchProxies', (s: GlobalState) => {
|
||||||
s.proxies.proxies = proxies;
|
s.proxies.proxies = proxies;
|
||||||
s.proxies.groupNames = groupNames;
|
s.proxies.groupNames = groupNames;
|
||||||
s.proxies.delay = delayNext;
|
s.proxies.delay = delayNext;
|
||||||
|
@ -85,7 +129,7 @@ export function fetchProxies(apiConfig) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateProviderByName(apiConfig, name) {
|
export function updateProviderByName(apiConfig: APIConfig, name: string) {
|
||||||
return async (dispatch) => {
|
return async (dispatch) => {
|
||||||
try {
|
try {
|
||||||
await proxiesAPI.updateProviderByName(apiConfig, name);
|
await proxiesAPI.updateProviderByName(apiConfig, name);
|
||||||
|
@ -115,30 +159,119 @@ export function healthcheckProviderByName(apiConfig, name) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function switchProxy(apiConfig, name1, name2) {
|
async function closeGroupConns(
|
||||||
|
apiConfig: APIConfig,
|
||||||
|
groupName: string,
|
||||||
|
exceptionItemName: string
|
||||||
|
) {
|
||||||
|
const res = await connAPI.fetchConns(apiConfig);
|
||||||
|
if (!res.ok) {
|
||||||
|
console.log('unable to fetch all connections', res.statusText);
|
||||||
|
/* throw new Error(); */
|
||||||
|
}
|
||||||
|
const json = await res.json();
|
||||||
|
const connections = json.connections;
|
||||||
|
const idsToClose = [];
|
||||||
|
for (const conn of connections) {
|
||||||
|
if (
|
||||||
|
// include the groupName
|
||||||
|
conn.chains.indexOf(groupName) > -1 &&
|
||||||
|
// but not include the itemName
|
||||||
|
conn.chains.indexOf(exceptionItemName) < 0
|
||||||
|
) {
|
||||||
|
idsToClose.push(conn.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.all(
|
||||||
|
idsToClose.map((id) => connAPI.closeConnById(apiConfig, id).catch(noop))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolveChain(
|
||||||
|
proxies: ProxiesDict,
|
||||||
|
groupName: string,
|
||||||
|
itemName: string
|
||||||
|
) {
|
||||||
|
const chain = [itemName, groupName];
|
||||||
|
|
||||||
|
let child: ProxyItem;
|
||||||
|
let childKey = itemName;
|
||||||
|
while ((child = proxies[childKey]) && child.now) {
|
||||||
|
chain.unshift(child.now);
|
||||||
|
childKey = child.now;
|
||||||
|
}
|
||||||
|
return chain;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function switchProxyImpl(
|
||||||
|
dispatch: any,
|
||||||
|
apiConfig: APIConfig,
|
||||||
|
groupName: string,
|
||||||
|
itemName: string
|
||||||
|
) {
|
||||||
|
try {
|
||||||
|
const res = await proxiesAPI.requestToSwitchProxy(
|
||||||
|
apiConfig,
|
||||||
|
groupName,
|
||||||
|
itemName
|
||||||
|
);
|
||||||
|
if (res.ok === false) {
|
||||||
|
throw new Error(`failed to switch proxy: res.statusText`);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
// eslint-disable-next-line no-console
|
||||||
|
console.log(err, 'failed to swith proxy');
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
|
||||||
|
dispatch(fetchProxies(apiConfig));
|
||||||
|
dispatch('showModalClosePrevConns', (s: GlobalState) => {
|
||||||
|
s.proxies.showModalClosePrevConns = true;
|
||||||
|
s.proxies.switchProxyCtx = { to: { groupName, itemName } };
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function closeModalClosePrevConns() {
|
||||||
|
return (dispatch) => {
|
||||||
|
dispatch('closeModalClosePrevConns', (s: GlobalState) => {
|
||||||
|
s.proxies.showModalClosePrevConns = false;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function closePrevConnsAndTheModal(apiConfig: APIConfig) {
|
||||||
|
return async (dispatch, getState) => {
|
||||||
|
const s = getState();
|
||||||
|
const switchTo = s.proxies.switchProxyCtx?.to;
|
||||||
|
if (!switchTo) {
|
||||||
|
dispatch(closeModalClosePrevConns());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// we must have fetched the proxies before
|
||||||
|
// so the proxies here is fresh
|
||||||
|
const proxies = s.proxies.proxies;
|
||||||
|
const chain = resolveChain(proxies, switchTo.groupName, switchTo.itemName);
|
||||||
|
closeGroupConns(apiConfig, switchTo.groupName, chain[0]);
|
||||||
|
|
||||||
|
dispatch('closePrevConnsAndTheModal', (s: GlobalState) => {
|
||||||
|
s.proxies.showModalClosePrevConns = false;
|
||||||
|
s.proxies.switchProxyCtx = undefined;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function switchProxy(apiConfig, groupName, itemName) {
|
||||||
return async (dispatch) => {
|
return async (dispatch) => {
|
||||||
proxiesAPI
|
// switch proxy asynchronously
|
||||||
.requestToSwitchProxy(apiConfig, name1, name2)
|
switchProxyImpl(dispatch, apiConfig, groupName, itemName).catch(noop);
|
||||||
.then(
|
|
||||||
(res) => {
|
|
||||||
if (res.ok === false) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log('failed to swith proxy', res.statusText);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
(err) => {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log(err, 'failed to swith proxy');
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then(() => {
|
|
||||||
dispatch(fetchProxies(apiConfig));
|
|
||||||
});
|
|
||||||
// optimistic UI update
|
// optimistic UI update
|
||||||
dispatch('store/proxies#switchProxy', (s) => {
|
dispatch('store/proxies#switchProxy', (s) => {
|
||||||
const proxies = s.proxies.proxies;
|
const proxies = s.proxies.proxies;
|
||||||
if (proxies[name1] && proxies[name1].now) {
|
if (proxies[groupName] && proxies[groupName].now) {
|
||||||
proxies[name1].now = name2;
|
proxies[groupName].now = itemName;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -234,14 +367,24 @@ function retrieveGroupNamesFrom(proxies) {
|
||||||
return [groupNames, proxyNames];
|
return [groupNames, proxyNames];
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatProxyProviders(providersInput) {
|
type ProvidersRaw = {
|
||||||
|
[key: string]: ProxyProvider;
|
||||||
|
};
|
||||||
|
|
||||||
|
function formatProxyProviders(
|
||||||
|
providersInput: ProvidersRaw
|
||||||
|
): {
|
||||||
|
providers: Array<FormattedProxyProvider>;
|
||||||
|
proxies: { [key: string]: ProxyItem };
|
||||||
|
} {
|
||||||
const keys = Object.keys(providersInput);
|
const keys = Object.keys(providersInput);
|
||||||
const providers = [];
|
const providers = [];
|
||||||
const proxies = {};
|
const proxies = {};
|
||||||
for (let i = 0; i < keys.length; i++) {
|
for (let i = 0; i < keys.length; i++) {
|
||||||
const provider = providersInput[keys[i]];
|
const provider: ProxyProvider = providersInput[keys[i]];
|
||||||
if (provider.name === 'default' || provider.vehicleType === 'Compatible')
|
if (provider.name === 'default' || provider.vehicleType === 'Compatible') {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
const proxiesArr = provider.proxies;
|
const proxiesArr = provider.proxies;
|
||||||
const names = [];
|
const names = [];
|
||||||
for (let j = 0; j < proxiesArr.length; j++) {
|
for (let j = 0; j < proxiesArr.length; j++) {
|
||||||
|
@ -255,13 +398,14 @@ function formatProxyProviders(providersInput) {
|
||||||
providers.push(provider);
|
providers.push(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
return [providers, proxies];
|
return {
|
||||||
|
providers,
|
||||||
|
proxies,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export const initialState = {
|
export const actions = {
|
||||||
proxies: {},
|
requestDelayForProxies,
|
||||||
delay: {},
|
closeModalClosePrevConns,
|
||||||
groupNames: [],
|
closePrevConnsAndTheModal,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const actions = { requestDelayForProxies };
|
|
0
src/types.ts
Normal file
0
src/types.ts
Normal file
259
yarn.lock
259
yarn.lock
|
@ -1098,6 +1098,13 @@
|
||||||
"@nodelib/fs.scandir" "2.1.3"
|
"@nodelib/fs.scandir" "2.1.3"
|
||||||
fastq "^1.6.0"
|
fastq "^1.6.0"
|
||||||
|
|
||||||
|
"@npmcli/move-file@^1.0.1":
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464"
|
||||||
|
integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==
|
||||||
|
dependencies:
|
||||||
|
mkdirp "^1.0.4"
|
||||||
|
|
||||||
"@pmmmwh/react-refresh-webpack-plugin@^0.2.0":
|
"@pmmmwh/react-refresh-webpack-plugin@^0.2.0":
|
||||||
version "0.2.0"
|
version "0.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.2.0.tgz#e2a684d430f74ad6465680d9a5869f52f307ec1e"
|
resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.2.0.tgz#e2a684d430f74ad6465680d9a5869f52f307ec1e"
|
||||||
|
@ -1125,68 +1132,61 @@
|
||||||
style-value-types "^3.1.7"
|
style-value-types "^3.1.7"
|
||||||
tslib "^1.10.0"
|
tslib "^1.10.0"
|
||||||
|
|
||||||
"@samverschueren/stream-to-observable@^0.3.0":
|
|
||||||
version "0.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
|
|
||||||
integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
|
|
||||||
dependencies:
|
|
||||||
any-observable "^0.3.0"
|
|
||||||
|
|
||||||
"@scarf/scarf@^1.0.4":
|
"@scarf/scarf@^1.0.4":
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.0.5.tgz#accee0bce88a9047672f7c8faf3cada59c996b81"
|
resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.0.5.tgz#accee0bce88a9047672f7c8faf3cada59c996b81"
|
||||||
integrity sha512-9WKaGVpQH905Aqkk+BczFEeLQxS07rl04afFRPUG9IcSlOwmo5EVVuuNu0d4M9LMYucObvK0LoAe+5HfMW2QhQ==
|
integrity sha512-9WKaGVpQH905Aqkk+BczFEeLQxS07rl04afFRPUG9IcSlOwmo5EVVuuNu0d4M9LMYucObvK0LoAe+5HfMW2QhQ==
|
||||||
|
|
||||||
"@sentry/browser@^5.15.0":
|
"@sentry/browser@^5.16.1":
|
||||||
version "5.15.5"
|
version "5.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.15.5.tgz#d9a51f1388581067b50d30ed9b1aed2cbb333a36"
|
resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.16.1.tgz#7a5ad85d9002de1495b1f63c3a4edb688a27f644"
|
||||||
integrity sha512-rqDvjk/EvogfdbZ4TiEpxM/lwpPKmq23z9YKEO4q81+1SwJNua53H60dOk9HpRU8nOJ1g84TMKT2Ov8H7sqDWA==
|
integrity sha512-uXXKRGLWDqwaKO09K1GTTV0Yj+OfELVs+0cDDYqPDow+DlIXyx0gSnZPd0caCqFllUy8JSxb4S9OprYinvks2A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sentry/core" "5.15.5"
|
"@sentry/core" "5.16.1"
|
||||||
"@sentry/types" "5.15.5"
|
"@sentry/types" "5.16.1"
|
||||||
"@sentry/utils" "5.15.5"
|
"@sentry/utils" "5.16.1"
|
||||||
tslib "^1.9.3"
|
tslib "^1.9.3"
|
||||||
|
|
||||||
"@sentry/core@5.15.5":
|
"@sentry/core@5.16.1":
|
||||||
version "5.15.5"
|
version "5.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.15.5.tgz#40ea79bff5272d3fbbeeb4a98cdc59e1adbd2c92"
|
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.16.1.tgz#c5c2f5d3391440f62b3e4dbefafc776449c45c35"
|
||||||
integrity sha512-enxBLv5eibBMqcWyr+vApqeix8uqkfn0iGsD3piKvoMXCgKsrfMwlb/qo9Ox0lKr71qIlZVt+9/A2vZohdgnlg==
|
integrity sha512-CDKUAUWefZ+bx7tUGm7pgkuJbwn+onAlwzKkLGVg730IP+N/AWSpVtbvFTPiel2+NPiFhWX5/F0SpxDMLPRKfg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sentry/hub" "5.15.5"
|
"@sentry/hub" "5.16.1"
|
||||||
"@sentry/minimal" "5.15.5"
|
"@sentry/minimal" "5.16.1"
|
||||||
"@sentry/types" "5.15.5"
|
"@sentry/types" "5.16.1"
|
||||||
"@sentry/utils" "5.15.5"
|
"@sentry/utils" "5.16.1"
|
||||||
tslib "^1.9.3"
|
tslib "^1.9.3"
|
||||||
|
|
||||||
"@sentry/hub@5.15.5":
|
"@sentry/hub@5.16.1":
|
||||||
version "5.15.5"
|
version "5.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.15.5.tgz#f5abbcdbe656a70e2ff02c02a5a4cffa0f125935"
|
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.16.1.tgz#e35d507a134a6ab4c572304dc1143b6bccfa9b45"
|
||||||
integrity sha512-zX9o49PcNIVMA4BZHe//GkbQ4Jx+nVofqU/Il32/IbwKhcpPlhGX3c1sOVQo4uag3cqd/JuQsk+DML9TKkN0Lw==
|
integrity sha512-Og4zxp0lM9yS6TyKbZ5lQR94f/fNOalodm71Dk4qfBWi0OzfFCVpO4fPOhHtbXEsvMNg5xh0Pe8ezqX3CZ3hTw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sentry/types" "5.15.5"
|
"@sentry/types" "5.16.1"
|
||||||
"@sentry/utils" "5.15.5"
|
"@sentry/utils" "5.16.1"
|
||||||
tslib "^1.9.3"
|
tslib "^1.9.3"
|
||||||
|
|
||||||
"@sentry/minimal@5.15.5":
|
"@sentry/minimal@5.16.1":
|
||||||
version "5.15.5"
|
version "5.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.15.5.tgz#a0e4e071f01d9c4d808094ae7203f6c4cca9348a"
|
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.16.1.tgz#71d16c20a0a396ab3da07b19cb444b4459fd2b11"
|
||||||
integrity sha512-zQkkJ1l9AjmU/Us5IrOTzu7bic4sTPKCatptXvLSTfyKW7N6K9MPIIFeSpZf9o1yM2sRYdK7GV08wS2eCT3JYw==
|
integrity sha512-RCwEKLneV5BQlv1MEmsCR3I5jajHgVGusBgwGgnFv+4Cn4cNC7OHWH4QbuZ3IHOEHJl7YS074BeluM+7jn0+Tw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sentry/hub" "5.15.5"
|
"@sentry/hub" "5.16.1"
|
||||||
"@sentry/types" "5.15.5"
|
"@sentry/types" "5.16.1"
|
||||||
tslib "^1.9.3"
|
tslib "^1.9.3"
|
||||||
|
|
||||||
"@sentry/types@5.15.5":
|
"@sentry/types@5.16.1":
|
||||||
version "5.15.5"
|
version "5.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.15.5.tgz#16c97e464cf09bbd1d2e8ce90d130e781709076e"
|
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.16.1.tgz#ba69dbf096d121b4197fdd54c35ac941b53d0b6a"
|
||||||
integrity sha512-F9A5W7ucgQLJUG4LXw1ZIy4iLevrYZzbeZ7GJ09aMlmXH9PqGThm1t5LSZlVpZvUfQ2rYA8NU6BdKJSt7B5LPw==
|
integrity sha512-uERNhBdsiWvWG7qTC9QVsvFmOSL8rFfy8usEXeH3l4oCQao9TvGUvXJv6gRfiWmoiJZ1A0608Lj15CORygdbng==
|
||||||
|
|
||||||
"@sentry/utils@5.15.5":
|
"@sentry/utils@5.16.1":
|
||||||
version "5.15.5"
|
version "5.16.1"
|
||||||
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.15.5.tgz#dec1d4c79037c4da08b386f5d34409234dcbfb15"
|
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.16.1.tgz#c663858ab04bbb0cba6660fb37a4ccdb30cc2ec8"
|
||||||
integrity sha512-Nl9gl/MGnzSkuKeo3QaefoD/OJrFLB8HmwQ7HUbTXb6E7yyEzNKAQMHXGkwNAjbdYyYbd42iABP6Y5F/h39NtA==
|
integrity sha512-hn2jTc6ZH1lXGij7yqkV6cGhEYxsdjqB5P4MjfrRHB5bk5opY9R89bsAhs1rpanTdwv6Ul0ieR1z18gdIgUf0g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sentry/types" "5.15.5"
|
"@sentry/types" "5.16.1"
|
||||||
tslib "^1.9.3"
|
tslib "^1.9.3"
|
||||||
|
|
||||||
"@types/anymatch@*":
|
"@types/anymatch@*":
|
||||||
|
@ -1363,24 +1363,24 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@^3.0.0":
|
"@typescript-eslint/eslint-plugin@^3.1.0":
|
||||||
version "3.0.2"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.0.2.tgz#4a114a066e2f9659b25682ee59d4866e15a17ec3"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.1.0.tgz#4ac00ecca3bbea740c577f1843bc54fa69c3def2"
|
||||||
integrity sha512-ER3bSS/A/pKQT/hjMGCK8UQzlL0yLjuCZ/G8CDFJFVTfl3X65fvq2lNYqOG8JPTfrPa2RULCdwfOyFjZEMNExQ==
|
integrity sha512-D52KwdgkjYc+fmTZKW7CZpH5ZBJREJKZXRrveMiRCmlzZ+Rw9wRVJ1JAmHQ9b/+Ehy1ZeaylofDB9wwXUt83wg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/experimental-utils" "3.0.2"
|
"@typescript-eslint/experimental-utils" "3.1.0"
|
||||||
functional-red-black-tree "^1.0.1"
|
functional-red-black-tree "^1.0.1"
|
||||||
regexpp "^3.0.0"
|
regexpp "^3.0.0"
|
||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
tsutils "^3.17.1"
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
"@typescript-eslint/experimental-utils@3.0.2":
|
"@typescript-eslint/experimental-utils@3.1.0":
|
||||||
version "3.0.2"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.0.2.tgz#bb2131baede8df28ec5eacfa540308ca895e5fee"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.1.0.tgz#2d5dba7c2ac2a3da3bfa3f461ff64de38587a872"
|
||||||
integrity sha512-4Wc4EczvoY183SSEnKgqAfkj1eLtRgBQ04AAeG+m4RhTVyaazxc1uI8IHf0qLmu7xXe9j1nn+UoDJjbmGmuqXQ==
|
integrity sha512-Zf8JVC2K1svqPIk1CB/ehCiWPaERJBBokbMfNTNRczCbQSlQXaXtO/7OfYz9wZaecNvdSvVADt6/XQuIxhC79w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/json-schema" "^7.0.3"
|
"@types/json-schema" "^7.0.3"
|
||||||
"@typescript-eslint/typescript-estree" "3.0.2"
|
"@typescript-eslint/typescript-estree" "3.1.0"
|
||||||
eslint-scope "^5.0.0"
|
eslint-scope "^5.0.0"
|
||||||
eslint-utils "^2.0.0"
|
eslint-utils "^2.0.0"
|
||||||
|
|
||||||
|
@ -1394,14 +1394,14 @@
|
||||||
eslint-scope "^5.0.0"
|
eslint-scope "^5.0.0"
|
||||||
eslint-utils "^2.0.0"
|
eslint-utils "^2.0.0"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^3.0.0":
|
"@typescript-eslint/parser@^3.1.0":
|
||||||
version "3.0.2"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.0.2.tgz#a92ef339added9bf7fb92605ac99c93ef243e834"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.1.0.tgz#9c02ba5d88ad2355672f39e6cd4176f172dd47f8"
|
||||||
integrity sha512-80Z7s83e8QXHNUspqVlWwb4t5gdz/1bBBmafElbK1wwAwiD/yvJsFyHRxlEpNrt4rdK6eB3p+2WEFkEDHAKk9w==
|
integrity sha512-NcDSJK8qTA2tPfyGiPes9HtVKLbksmuYjlgGAUs7Ld2K0swdWibnCq9IJx9kJN8JJdgUJSorFiGaPHBgH81F/Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/eslint-visitor-keys" "^1.0.0"
|
"@types/eslint-visitor-keys" "^1.0.0"
|
||||||
"@typescript-eslint/experimental-utils" "3.0.2"
|
"@typescript-eslint/experimental-utils" "3.1.0"
|
||||||
"@typescript-eslint/typescript-estree" "3.0.2"
|
"@typescript-eslint/typescript-estree" "3.1.0"
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@2.34.0":
|
"@typescript-eslint/typescript-estree@2.34.0":
|
||||||
|
@ -1417,10 +1417,10 @@
|
||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
tsutils "^3.17.1"
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@3.0.2":
|
"@typescript-eslint/typescript-estree@3.1.0":
|
||||||
version "3.0.2"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.0.2.tgz#67a1ce4307ebaea43443fbf3f3be7e2627157293"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.1.0.tgz#eaff52d31e615e05b894f8b9d2c3d8af152a5dd2"
|
||||||
integrity sha512-cs84mxgC9zQ6viV8MEcigfIKQmKtBkZNDYf8Gru2M+MhnA6z9q0NFMZm2IEzKqAwN8lY5mFVd1Z8DiHj6zQ3Tw==
|
integrity sha512-+4nfYauqeQvK55PgFrmBWFVYb6IskLyOosYEmhH3mSVhfBp9AIJnjExdgDmKWoOBHRcPM8Ihfm2BFpZf0euUZQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
@ -1713,11 +1713,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||||
"@types/color-name" "^1.1.1"
|
"@types/color-name" "^1.1.1"
|
||||||
color-convert "^2.0.1"
|
color-convert "^2.0.1"
|
||||||
|
|
||||||
any-observable@^0.3.0:
|
|
||||||
version "0.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
|
|
||||||
integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
|
|
||||||
|
|
||||||
anymatch@^2.0.0:
|
anymatch@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
|
||||||
|
@ -2180,11 +2175,12 @@ cacache@^12.0.2:
|
||||||
unique-filename "^1.1.1"
|
unique-filename "^1.1.1"
|
||||||
y18n "^4.0.0"
|
y18n "^4.0.0"
|
||||||
|
|
||||||
cacache@^15.0.3:
|
cacache@^15.0.4:
|
||||||
version "15.0.3"
|
version "15.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.3.tgz#2225c2d1dd8e872339950d6a39c051e0e9334392"
|
resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.4.tgz#b2c23cf4ac4f5ead004fb15a0efb0a20340741f1"
|
||||||
integrity sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ==
|
integrity sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw==
|
||||||
dependencies:
|
dependencies:
|
||||||
|
"@npmcli/move-file" "^1.0.1"
|
||||||
chownr "^2.0.0"
|
chownr "^2.0.0"
|
||||||
fs-minipass "^2.0.0"
|
fs-minipass "^2.0.0"
|
||||||
glob "^7.1.4"
|
glob "^7.1.4"
|
||||||
|
@ -2195,7 +2191,6 @@ cacache@^15.0.3:
|
||||||
minipass-flush "^1.0.5"
|
minipass-flush "^1.0.5"
|
||||||
minipass-pipeline "^1.2.2"
|
minipass-pipeline "^1.2.2"
|
||||||
mkdirp "^1.0.3"
|
mkdirp "^1.0.3"
|
||||||
move-file "^2.0.0"
|
|
||||||
p-map "^4.0.0"
|
p-map "^4.0.0"
|
||||||
promise-inflight "^1.0.1"
|
promise-inflight "^1.0.1"
|
||||||
rimraf "^3.0.2"
|
rimraf "^3.0.2"
|
||||||
|
@ -2479,11 +2474,6 @@ cliui@^5.0.0:
|
||||||
strip-ansi "^5.2.0"
|
strip-ansi "^5.2.0"
|
||||||
wrap-ansi "^5.1.0"
|
wrap-ansi "^5.1.0"
|
||||||
|
|
||||||
clone@^1.0.2:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
|
|
||||||
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
|
|
||||||
|
|
||||||
clsx@^1.1.0:
|
clsx@^1.1.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
|
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
|
||||||
|
@ -2657,21 +2647,21 @@ copy-descriptor@^0.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
|
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
|
||||||
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
|
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
|
||||||
|
|
||||||
copy-webpack-plugin@^6.0.1:
|
copy-webpack-plugin@^6.0.2:
|
||||||
version "6.0.1"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.1.tgz#2a9718898728e916623eccf48b9dfb06089d702d"
|
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.2.tgz#10efc6ad219a61acbf2f5fb50af83da38431bc34"
|
||||||
integrity sha512-tcbZnGtQ70b4vtYGUNg8uUYri/80H1On3AC+wPsVOKSj7xbDinYuxAZPAeI3/3hxjjuwoGTHN5BeSksQ4kGUTw==
|
integrity sha512-9Gm8X0c6eXlKnmltMPFCBeGOKjtcRIyTt4VaO3k1TkNgVTe5Ov2lYsYVuyLp0kp8DItO3apewflM+1GYgh6V2Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
cacache "^15.0.3"
|
cacache "^15.0.4"
|
||||||
fast-glob "^3.2.2"
|
fast-glob "^3.2.2"
|
||||||
find-cache-dir "^3.3.1"
|
find-cache-dir "^3.3.1"
|
||||||
glob-parent "^5.1.1"
|
glob-parent "^5.1.1"
|
||||||
globby "^11.0.0"
|
globby "^11.0.1"
|
||||||
loader-utils "^2.0.0"
|
loader-utils "^2.0.0"
|
||||||
normalize-path "^3.0.0"
|
normalize-path "^3.0.0"
|
||||||
p-limit "^2.3.0"
|
p-limit "^2.3.0"
|
||||||
schema-utils "^2.6.6"
|
schema-utils "^2.7.0"
|
||||||
serialize-javascript "^3.0.0"
|
serialize-javascript "^3.1.0"
|
||||||
webpack-sources "^1.4.3"
|
webpack-sources "^1.4.3"
|
||||||
|
|
||||||
core-js-compat@^3.6.2:
|
core-js-compat@^3.6.2:
|
||||||
|
@ -3016,13 +3006,6 @@ deep-is@^0.1.3:
|
||||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||||
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
|
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
|
||||||
|
|
||||||
defaults@^1.0.3:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
|
|
||||||
integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
|
|
||||||
dependencies:
|
|
||||||
clone "^1.0.2"
|
|
||||||
|
|
||||||
define-properties@^1.1.2, define-properties@^1.1.3:
|
define-properties@^1.1.2, define-properties@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||||
|
@ -3255,11 +3238,6 @@ electron-to-chromium@^1.3.413:
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.455.tgz#fd65a3f5db6ffa83eb7c84f16ea9b1b7396f537d"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.455.tgz#fd65a3f5db6ffa83eb7c84f16ea9b1b7396f537d"
|
||||||
integrity sha512-4lwnxp+ArqOX9hiLwLpwhfqvwzUHFuDgLz4NTiU3lhygUzWtocIJ/5Vix+mWVNE2HQ9aI1k2ncGe5H/0OktMvA==
|
integrity sha512-4lwnxp+ArqOX9hiLwLpwhfqvwzUHFuDgLz4NTiU3lhygUzWtocIJ/5Vix+mWVNE2HQ9aI1k2ncGe5H/0OktMvA==
|
||||||
|
|
||||||
elegant-spinner@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94"
|
|
||||||
integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA==
|
|
||||||
|
|
||||||
elliptic@^6.0.0:
|
elliptic@^6.0.0:
|
||||||
version "6.5.2"
|
version "6.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
|
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
|
||||||
|
@ -4300,10 +4278,10 @@ globby@8.0.2:
|
||||||
pify "^3.0.0"
|
pify "^3.0.0"
|
||||||
slash "^1.0.0"
|
slash "^1.0.0"
|
||||||
|
|
||||||
globby@^11.0.0:
|
globby@^11.0.1:
|
||||||
version "11.0.0"
|
version "11.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154"
|
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
|
||||||
integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==
|
integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
array-union "^2.1.0"
|
array-union "^2.1.0"
|
||||||
dir-glob "^3.0.1"
|
dir-glob "^3.0.1"
|
||||||
|
@ -5220,10 +5198,10 @@ lines-and-columns@^1.1.6:
|
||||||
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
|
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
|
||||||
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
|
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
|
||||||
|
|
||||||
lint-staged@^10.2.2:
|
lint-staged@^10.2.9:
|
||||||
version "10.2.7"
|
version "10.2.9"
|
||||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.7.tgz#6e47860af3d86a6a01849cbf8ba80f7754aae6eb"
|
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.9.tgz#6013ecfa80829cd422446b545fd30a96bca3098c"
|
||||||
integrity sha512-srod2bTpF8riaLz+Bgr6v0mI/nSntE8M9jbh4WwAhoosx0G7RKEUIG7mI5Nu5SMbTF9o8GROPgK0Lhf5cDnUUw==
|
integrity sha512-ziRAuXEqvJLSXg43ezBpHxRW8FOJCXISaXU//BWrxRrp5cBdRkIx7g5IsB3OI45xYGE0S6cOacfekSjDyDKF2g==
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
cli-truncate "2.1.0"
|
cli-truncate "2.1.0"
|
||||||
|
@ -5231,8 +5209,9 @@ lint-staged@^10.2.2:
|
||||||
cosmiconfig "^6.0.0"
|
cosmiconfig "^6.0.0"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
dedent "^0.7.0"
|
dedent "^0.7.0"
|
||||||
|
enquirer "^2.3.5"
|
||||||
execa "^4.0.1"
|
execa "^4.0.1"
|
||||||
listr2 "^2.0.2"
|
listr2 "^2.1.0"
|
||||||
log-symbols "^4.0.0"
|
log-symbols "^4.0.0"
|
||||||
micromatch "^4.0.2"
|
micromatch "^4.0.2"
|
||||||
normalize-path "^3.0.0"
|
normalize-path "^3.0.0"
|
||||||
|
@ -5240,25 +5219,19 @@ lint-staged@^10.2.2:
|
||||||
string-argv "0.3.1"
|
string-argv "0.3.1"
|
||||||
stringify-object "^3.3.0"
|
stringify-object "^3.3.0"
|
||||||
|
|
||||||
listr2@^2.0.2:
|
listr2@^2.1.0:
|
||||||
version "2.0.4"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.0.4.tgz#b39100b0a227ec5659dcf76ddc516211fc168d61"
|
resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.1.3.tgz#f527e197de12ad8c488c566921fa2da34cbc67f6"
|
||||||
integrity sha512-oJaAcplPsa72rKW0eg4P4LbEJjhH+UO2I8uqR/I2wzHrVg16ohSfUy0SlcHS21zfYXxtsUpL8YXGHjyfWMR0cg==
|
integrity sha512-6oy3QhrZAlJGrG8oPcRp1hix1zUpb5AvyvZ5je979HCyf48tIj3Hn1TG5+rfyhz30t7HfySH/OIaVbwrI2kruA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@samverschueren/stream-to-observable" "^0.3.0"
|
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
cli-cursor "^3.1.0"
|
|
||||||
cli-truncate "^2.1.0"
|
cli-truncate "^2.1.0"
|
||||||
elegant-spinner "^2.0.0"
|
|
||||||
enquirer "^2.3.5"
|
|
||||||
figures "^3.2.0"
|
figures "^3.2.0"
|
||||||
indent-string "^4.0.0"
|
indent-string "^4.0.0"
|
||||||
log-update "^4.0.0"
|
log-update "^4.0.0"
|
||||||
p-map "^4.0.0"
|
p-map "^4.0.0"
|
||||||
pad "^3.2.0"
|
|
||||||
rxjs "^6.5.5"
|
rxjs "^6.5.5"
|
||||||
through "^2.3.8"
|
through "^2.3.8"
|
||||||
uuid "^7.0.2"
|
|
||||||
|
|
||||||
load-json-file@^2.0.0:
|
load-json-file@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
|
@ -5672,7 +5645,7 @@ mkdirp@^0.5.1, mkdirp@^0.5.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.5"
|
minimist "^1.2.5"
|
||||||
|
|
||||||
mkdirp@^1.0.3:
|
mkdirp@^1.0.3, mkdirp@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||||
|
@ -5706,13 +5679,6 @@ move-concurrently@^1.0.1:
|
||||||
rimraf "^2.5.4"
|
rimraf "^2.5.4"
|
||||||
run-queue "^1.0.3"
|
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:
|
ms@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||||
|
@ -6156,13 +6122,6 @@ p-try@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
|
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
|
||||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||||
|
|
||||||
pad@^3.2.0:
|
|
||||||
version "3.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1"
|
|
||||||
integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg==
|
|
||||||
dependencies:
|
|
||||||
wcwidth "^1.0.1"
|
|
||||||
|
|
||||||
pako@~1.0.5:
|
pako@~1.0.5:
|
||||||
version "1.0.11"
|
version "1.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
||||||
|
@ -7562,7 +7521,7 @@ schema-utils@^2.6.5:
|
||||||
ajv "^6.12.0"
|
ajv "^6.12.0"
|
||||||
ajv-keywords "^3.4.1"
|
ajv-keywords "^3.4.1"
|
||||||
|
|
||||||
schema-utils@^2.6.6:
|
schema-utils@^2.6.6, schema-utils@^2.7.0:
|
||||||
version "2.7.0"
|
version "2.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
|
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
|
||||||
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
|
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
|
||||||
|
@ -7625,7 +7584,7 @@ serialize-javascript@^2.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
|
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
|
||||||
integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
|
integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
|
||||||
|
|
||||||
serialize-javascript@^3.0.0:
|
serialize-javascript@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea"
|
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea"
|
||||||
integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==
|
integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==
|
||||||
|
@ -8268,17 +8227,17 @@ terser-webpack-plugin@^1.4.3:
|
||||||
webpack-sources "^1.4.0"
|
webpack-sources "^1.4.0"
|
||||||
worker-farm "^1.7.0"
|
worker-farm "^1.7.0"
|
||||||
|
|
||||||
terser-webpack-plugin@^3.0.1:
|
terser-webpack-plugin@^3.0.3:
|
||||||
version "3.0.2"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.2.tgz#fdc501c73847d8904f6a80c5009b11ee2d11b8eb"
|
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-3.0.3.tgz#23bda2687b197f878a743373b9411d917adc2e45"
|
||||||
integrity sha512-QeBHLJzKJHCnrPNlZj5EmOF6wwvzpVGDHvTrySIH8+jZEXfcKKCiriRmF6945rKzuZDnkOEU/LDv7qtPiiyP/Q==
|
integrity sha512-bZFnotuIKq5Rqzrs+qIwFzGdKdffV9epG5vDSEbYzvKAhPeR5RbbrQysfPgbIIMhNAQtZD2hGwBfSKUXjXZZZw==
|
||||||
dependencies:
|
dependencies:
|
||||||
cacache "^15.0.3"
|
cacache "^15.0.4"
|
||||||
find-cache-dir "^3.3.1"
|
find-cache-dir "^3.3.1"
|
||||||
jest-worker "^26.0.0"
|
jest-worker "^26.0.0"
|
||||||
p-limit "^2.3.0"
|
p-limit "^2.3.0"
|
||||||
schema-utils "^2.6.6"
|
schema-utils "^2.6.6"
|
||||||
serialize-javascript "^3.0.0"
|
serialize-javascript "^3.1.0"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
terser "^4.6.13"
|
terser "^4.6.13"
|
||||||
webpack-sources "^1.4.3"
|
webpack-sources "^1.4.3"
|
||||||
|
@ -8472,10 +8431,10 @@ typedarray@^0.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||||
|
|
||||||
typescript@^3.8.3:
|
typescript@^3.9.5:
|
||||||
version "3.9.3"
|
version "3.9.5"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36"
|
||||||
integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
|
integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==
|
||||||
|
|
||||||
unicode-canonical-property-names-ecmascript@^1.0.4:
|
unicode-canonical-property-names-ecmascript@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
|
@ -8632,11 +8591,6 @@ uuid@^3.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
|
||||||
integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
|
integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
|
||||||
|
|
||||||
uuid@^7.0.2:
|
|
||||||
version "7.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
|
|
||||||
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
|
|
||||||
|
|
||||||
v8-compile-cache@2.0.3:
|
v8-compile-cache@2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
|
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
|
||||||
|
@ -8691,13 +8645,6 @@ watchpack@^1.6.1:
|
||||||
graceful-fs "^4.1.2"
|
graceful-fs "^4.1.2"
|
||||||
neo-async "^2.5.0"
|
neo-async "^2.5.0"
|
||||||
|
|
||||||
wcwidth@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
|
|
||||||
integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
|
|
||||||
dependencies:
|
|
||||||
defaults "^1.0.3"
|
|
||||||
|
|
||||||
webpack-bundle-analyzer@^3.6.0:
|
webpack-bundle-analyzer@^3.6.0:
|
||||||
version "3.8.0"
|
version "3.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16"
|
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16"
|
||||||
|
|
Loading…
Reference in a new issue