diff --git a/client2/package.json b/client2/package.json index d48f1ca6..71f4b70c 100644 --- a/client2/package.json +++ b/client2/package.json @@ -12,13 +12,10 @@ "go:build": "cd .. && make REBUILD_CLIENT=0 build", "go:run": "sudo ../AdguardHome" }, - "husky": { - "hooks": { - "pre-commit": "yarn lint" - } - }, "license": "ISC", "dependencies": { + "@adguard/translate": "^0.2.0", + "@ant-design/icons": "^4.4.0", "@sentry/react": "^5.27.0", "antd": "^4.7.2", "classnames": "^2.2.6", @@ -29,7 +26,8 @@ "qs": "^6.9.4", "react": "^17.0.0", "react-dom": "^17.0.0", - "react-router-dom": "^5.2.0" + "react-router-dom": "^5.2.0", + "recharts": "^2.0.3" }, "devDependencies": { "@types/classnames": "^2.2.10", @@ -56,7 +54,6 @@ "file-loader": "^6.1.1", "html-webpack-plugin": "^4.5.0", "http-proxy-middleware": "^1.0.6", - "husky": "^4.3.0", "less": "^3.12.2", "less-loader": "^5.0.0", "mini-css-extract-plugin": "^1.1.1", diff --git a/client2/scripts/generator/src/generateEntities.ts b/client2/scripts/generator/src/generateEntities.ts index b12e02a7..7ace9fa1 100644 --- a/client2/scripts/generator/src/generateEntities.ts +++ b/client2/scripts/generator/src/generateEntities.ts @@ -4,7 +4,7 @@ import * as path from 'path'; import * as morph from 'ts-morph'; import { ENT_DIR } from '../../consts'; -import { TYPES, toCamel, schemaParamParser } from './utils'; +import { TYPES, toCamel, schemaParamParser, uncapitalize } from './utils'; const { Project, QuoteKind } = morph; @@ -125,14 +125,37 @@ class EntitiesGenerator { '', ]); - const { properties: sProps, required } = this.schemas[sName]; + + const { properties: sProps, required, $ref, additionalProperties } = this.schemas[sName]; + if ($ref) { + const temp = $ref.split('/'); + const importSchemaName = `${temp[temp.length - 1]}`; + entityFile.addImportDeclaration({ + defaultImport: importSchemaName, + moduleSpecifier: `./${importSchemaName}`, + namedImports: [`I${importSchemaName}`], + }); + + entityFile.addTypeAlias({ + name: `I${sName}`, + type: `I${importSchemaName}`, + isExported: true, + }) + + entityFile.addStatements(`export default ${importSchemaName};`); + this.entities.push(entityFile); + return; + } const importEntities: { type: string, isClass: boolean }[] = []; const entityInterface = entityFile.addInterface({ name: `I${sName}`, isExported: true, }); + const sortedSProps = Object.keys(sProps || {}).sort(); + const additionalPropsOnly = additionalProperties && sortedSProps.length === 0; + // add server response interface to entityFile sortedSProps.forEach((sPropName) => { const [ @@ -153,6 +176,23 @@ class EntitiesGenerator { ), }); }); + if (additionalProperties) { + const [ + pType, isArray, isClass, isImport, isAdditional + ] = schemaParamParser(additionalProperties, this.openapi); + + if (isImport) { + importEntities.push({ type: pType, isClass }); + } + const type = isAdditional + ? `{ [key: string]: ${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''} }` + : `${isClass ? 'I' : ''}${pType}${isArray ? '[]' : ''}`; + entityInterface.addIndexSignature({ + keyName: 'key', + keyType: 'string', + returnType: additionalPropsOnly ? type : `${type} | undefined`, + }); + } // add import const imports: { type: string, isClass: boolean }[] = []; @@ -310,7 +350,18 @@ class EntitiesGenerator { } } }); - + if (additionalProperties) { + const [ + pType, isArray, isClass, isImport, isAdditional + ] = schemaParamParser(additionalProperties, this.openapi); + const type = `Record`; + + entityClass.addProperty({ + name: additionalPropsOnly ? 'data' : `${uncapitalize(pType)}Data`, + isReadonly: true, + type: type, + }); + } // add constructor; const ctor = entityClass.addConstructor({ parameters: [{ @@ -319,6 +370,20 @@ class EntitiesGenerator { }], }); ctor.setBodyText((w) => { + if (additionalProperties) { + const [ + pType, isArray, isClass, isImport, isAdditional + ] = schemaParamParser(additionalProperties, this.openapi); + w.writeLine(`this.${additionalPropsOnly ? 'data' : `${uncapitalize(pType)}Data`} = Object.entries(props).reduce>((prev, [key, value]) => {`); + if (isClass) { + w.writeLine(` prev[key] = new ${pType}(value!);`); + } else { + w.writeLine(' prev[key] = value!;') + } + w.writeLine(' return prev;'); + w.writeLine('}, {})'); + return; + } sortedSProps.forEach((sPropName) => { const [ pType, isArray, isClass, , isAdditional @@ -369,6 +434,7 @@ class EntitiesGenerator { w.writeLine('}'); } }); + }); // add serialize method; @@ -378,6 +444,20 @@ class EntitiesGenerator { returnType: `I${sName}`, }); serialize.setBodyText((w) => { + if (additionalProperties) { + const [ + pType, isArray, isClass, isImport, isAdditional + ] = schemaParamParser(additionalProperties, this.openapi); + w.writeLine(`return Object.entries(this.${additionalPropsOnly ? 'data' : `${uncapitalize(pType)}Data`}).reduce>((prev, [key, value]) => {`); + if (isClass) { + w.writeLine(` prev[key] = value.serialize();`); + } else { + w.writeLine(' prev[key] = value;') + } + w.writeLine(' return prev;'); + w.writeLine('}, {})'); + return; + } w.writeLine(`const data: I${sName} = {`); const unReqFields: string[] = []; sortedSProps.forEach((sPropName) => { @@ -442,6 +522,10 @@ class EntitiesGenerator { returnType: `string[]`, }) validate.setBodyText((w) => { + if (additionalPropsOnly) { + w.writeLine('return []') + return; + } w.writeLine('const validate = {'); Object.keys(sProps || {}).forEach((sPropName) => { const [pType, isArray, isClass, , isAdditional] = schemaParamParser(sProps[sPropName], this.openapi); @@ -502,7 +586,7 @@ class EntitiesGenerator { }); update.addParameter({ name: 'props', - type: `Partial`, + type: additionalPropsOnly ? `I${sName}` : `Partial`, }); update.setBodyText((w) => { w.writeLine(`return new ${sName}({ ...this.serialize(), ...props });`); }); diff --git a/client2/scripts/generator/src/utils.ts b/client2/scripts/generator/src/utils.ts index 3ab2ef26..5183b6c5 100644 --- a/client2/scripts/generator/src/utils.ts +++ b/client2/scripts/generator/src/utils.ts @@ -8,6 +8,9 @@ const toCamel = (s: string) => { const capitalize = (s: string) => { return s[0].toUpperCase() + s.slice(1); }; +const uncapitalize = (s: string) => { + return s[0].toLowerCase() + s.slice(1); +}; const TYPES = { integer: 'number', float: 'number', @@ -37,7 +40,13 @@ const schemaParamParser = (schemaProp: any, openApi: any): [string, boolean, boo type = `${temp[temp.length - 1]}`; - const cl = openApi ? openApi.components.schemas[temp[temp.length - 1]] : {}; + const cl = openApi ? openApi.components.schemas[type] : {}; + + if (cl.$ref) { + const link = schemaParamParser(cl, openApi); + link.shift(); + return [type, ...link] as any; + } if (cl.type === 'string' && cl.enum) { isImport = true; @@ -71,4 +80,4 @@ const schemaParamParser = (schemaProp: any, openApi: any): [string, boolean, boo return [type, isArray, isClass, isImport, isAdditional]; }; -export { TYPES, toCamel, capitalize, schemaParamParser }; +export { TYPES, toCamel, capitalize, uncapitalize, schemaParamParser }; diff --git a/client2/scripts/webpack/webpack.config.dev.js b/client2/scripts/webpack/webpack.config.dev.js index 3a12f12e..2d5c1c8a 100644 --- a/client2/scripts/webpack/webpack.config.dev.js +++ b/client2/scripts/webpack/webpack.config.dev.js @@ -7,10 +7,11 @@ const Webpack = require('webpack'); const { getDevServerConfig } = require('./helpers'); const baseConfig = require('./webpack.config.base'); +const devHost = process.env.DEV_HOST const target = getDevServerConfig(); const options = { - target: `http://${target.host}:${target.port}`, // target host + target: devHost || `http://${target.host}:${target.port}`, // target host changeOrigin: true, // needed for virtual hosted sites }; const apiProxy = proxy.createProxyMiddleware(options); diff --git a/client2/scripts/webpack/webpack.config.prod.js b/client2/scripts/webpack/webpack.config.prod.js index 958c7e68..c0bddae4 100644 --- a/client2/scripts/webpack/webpack.config.prod.js +++ b/client2/scripts/webpack/webpack.config.prod.js @@ -46,9 +46,6 @@ module.exports = merge(baseConfig, { }, use: [{ loader: MiniCssExtractPlugin.loader, - options: { - esModules: true, - } }, 'css-loader', 'postcss-loader', { loader: 'less-loader', options: { @@ -62,9 +59,6 @@ module.exports = merge(baseConfig, { use: [ { loader: MiniCssExtractPlugin.loader, - options: { - esModules: true, - } }, { loader: 'css-loader', diff --git a/client2/src/components/App.tsx b/client2/src/components/App.tsx deleted file mode 100644 index f27d5c17..00000000 --- a/client2/src/components/App.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { observer } from 'mobx-react-lite'; -import React, { FC, useContext } from 'react'; -import Store from 'Store'; -import Icons from 'Lib/theme/Icons'; - -const App: FC = observer(() => { - const store = useContext(Store); - return ( -
- {store.ui.currentLang} - -
- ); -}); - -export default App; diff --git a/client2/src/components/App/App.tsx b/client2/src/components/App/App.tsx new file mode 100644 index 00000000..cddb50c6 --- /dev/null +++ b/client2/src/components/App/App.tsx @@ -0,0 +1,20 @@ +import React, { FC } from 'react'; +import { BrowserRouter } from 'react-router-dom'; + +import Icons from 'Common/ui/Icons'; +import Routes from './Routes'; + +import { ErrorBoundary } from './Errors'; + +const App: FC = () => { + return ( + + + + + + + ); +}; + +export default App; diff --git a/client2/src/components/App/Dashboard/Dashboard.tsx b/client2/src/components/App/Dashboard/Dashboard.tsx new file mode 100644 index 00000000..02846ca1 --- /dev/null +++ b/client2/src/components/App/Dashboard/Dashboard.tsx @@ -0,0 +1,136 @@ +import React, { FC, useContext } from 'react'; +import { Row, Col } from 'antd'; +import { observer } from 'mobx-react-lite'; + +import Store from 'Store'; +import { InnerLayout } from 'Common/ui/layouts'; +import theme from 'Lib/theme'; +import { BlockCard, TopDomains, BlockedQueries, TopClients, ServerStatistics } from './components'; + +const Dashboard:FC = observer(() => { + const store = useContext(Store); + const { + dashboard: { stats, filteringConfig }, + system: { status }, + ui: { intl }, + } = store; + + if (!stats || !filteringConfig) { + return null; + } + + const { + numBlockedFiltering, + numReplacedParental, + numReplacedSafebrowsing, + replacedParental, + replacedSafebrowsing, + avgProcessingTime, + blockedFiltering, + + topBlockedDomains, + topQueriedDomains, + dnsQueries, + numDnsQueries, + + } = stats; + + const { filters } = filteringConfig!; + const allFilters = filters?.length; + const allRules = filters?.reduce((prev, e) => prev + (e.rulesCount || 0), 0); + const enabled = filters?.filter((e) => e.enabled).length; + + return ( + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* TODO: fix chart */} + + + + + +
+
+ ); +}); + +export default Dashboard; diff --git a/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.module.pcss b/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.module.pcss new file mode 100644 index 00000000..62eb6b4f --- /dev/null +++ b/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.module.pcss @@ -0,0 +1,20 @@ +.container { + display: flex; + flex-flow: column; + padding: 24px; + background-color: var(--white); +} + +.title { + font-size: 14px; + line-height: 22px; + margin-bottom: 4px; + color: var(--gray700); +} + +.overal { + font-size: 30px; + line-height: 38px; + margin-bottom: 18px; + color: var(--gray900); +} \ No newline at end of file diff --git a/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.tsx b/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.tsx new file mode 100644 index 00000000..b962db01 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/BlockCard/BlockCard.tsx @@ -0,0 +1,35 @@ +import React, { FC } from 'react'; +import { AreaChart, Area, ResponsiveContainer } from 'recharts'; + +import s from './BlockCard.module.pcss'; + +interface BlockCardProps { + overal: number | string; + data?: number[]; + text?: string; + color?: string; + title: string; +} + +const BlockCard: FC = ({ overal, data, color, title, text }) => { + return ( +
+
{title}
+
{overal}
+ {data && ( + + ({ name: 'data', value: n }))}> + + + + )} + {text && ( +
+ {text} +
+ )} +
+ ); +}; + +export default BlockCard; diff --git a/client2/src/components/App/Dashboard/components/BlockCard/index.ts b/client2/src/components/App/Dashboard/components/BlockCard/index.ts new file mode 100644 index 00000000..085552ae --- /dev/null +++ b/client2/src/components/App/Dashboard/components/BlockCard/index.ts @@ -0,0 +1 @@ +export { default as BlockCard } from './BlockCard'; diff --git a/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.module.pcss b/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.module.pcss new file mode 100644 index 00000000..7520f474 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.module.pcss @@ -0,0 +1,16 @@ +.container { + display: flex; + flex-flow: column; + padding: 24px; + background-color: var(--white); +} + +.title { + font-size: 14px; + line-height: 22px; + margin-bottom: 4px; + color: var(--gray700); +} +.pie { + padding: 34px 0px; +} \ No newline at end of file diff --git a/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.tsx b/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.tsx new file mode 100644 index 00000000..7b8eec9d --- /dev/null +++ b/client2/src/components/App/Dashboard/components/BlockedQueries/BlockedQueries.tsx @@ -0,0 +1,76 @@ +import theme from 'Lib/theme'; +import React, { FC, useContext, useState } from 'react'; +import { PieChart, Pie, ResponsiveContainer, Sector, Cell } from 'recharts'; + +import Store from 'Store'; + +import s from './BlockedQueries.module.pcss'; + +interface BlockCardProps { + ads: number; + trackers: number; + other: number; +} + +const renderActiveShape = (props: any): any => { + const { + cx, cy, innerRadius, outerRadius, startAngle, endAngle, + fill, payload, percent, + } = props; + return ( + + {payload.name} + {Math.round(percent * 100)}% + + + ); +}; + +const BlockedQueries: FC = ({ ads, trackers, other }) => { + const store = useContext(Store); + const [activeIndex, setActiveIndex] = useState(0); + const { ui: { intl } } = store; + const data = [ + { name: intl.getMessage('other'), value: other, color: theme.chartColors.gray700 }, + { name: intl.getMessage('ads'), value: ads, color: theme.chartColors.red }, + { name: intl.getMessage('trackers'), value: trackers, color: theme.chartColors.orange }, + ]; + const onChart: any = (_: any, index: number) => { + setActiveIndex(index); + }; + return ( +
+
{intl.getMessage('dashboard_blocked_queries')}
+
+ + + + {data.map((entry, index) => ( + + ))} + + + +
+
+ ); +}; + +export default BlockedQueries; diff --git a/client2/src/components/App/Dashboard/components/BlockedQueries/index.ts b/client2/src/components/App/Dashboard/components/BlockedQueries/index.ts new file mode 100644 index 00000000..019ab9c9 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/BlockedQueries/index.ts @@ -0,0 +1 @@ +export { default as BlockedQueries } from './BlockedQueries'; diff --git a/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.module.pcss b/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.module.pcss new file mode 100644 index 00000000..cc8003da --- /dev/null +++ b/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.module.pcss @@ -0,0 +1,46 @@ +.container { + display: flex; + flex-flow: column; + background-color: var(--white); + margin-top: 24px; +} + +.title { + padding: 24px; + font-size: 16px; + font-weight: 500; + line-height: 22px; + border-bottom: 1px solid var(--gray300); + color: var(--gray900); +} + +.card { + padding: 24px; + height: 100%; +} + +.cardBorder { + border-right: 1px solid var(--gray300); + + &:last-of-type { + border-right: 0; + } +} + +.cardTitle { + font-weight: 500; + margin-bottom: 12px; +} + +.cardDesc { + color: var(--gray700); +} + +.cardValue { + color: var(--gray900); + font-size: 30px; +} + +.chart { + margin-top: 24px; +} \ No newline at end of file diff --git a/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.tsx b/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.tsx new file mode 100644 index 00000000..1ec98476 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/ServerStatistics/ServerStatistics.tsx @@ -0,0 +1,89 @@ +import React, { FC, useContext } from 'react'; +import { Row, Col } from 'antd'; +import { AreaChart, Area, ResponsiveContainer } from 'recharts'; + +import Store from 'Store'; +import theme from 'Lib/theme'; + +import s from './ServerStatistics.module.pcss'; + +const ServerStatistics: FC = () => { + const store = useContext(Store); + const { ui: { intl } } = store; + + const data = [0, 10, 2, 14, 12, 24, 5, 8, 10, 0, 3, 5, 7, 8, 3]; + return ( +
+
{intl.getMessage('dashboard_server_statistics')}
+ + +
+
+ Average server load +
+
+
+ Processes: 213 +
+
+ Cores: 2 +
+
+ + ({ name: 'data', value: n }))}> + + + +
+ + +
+
+ Memory usage +
+
+ 236 Mb +
+ + ({ name: 'data', value: n }))}> + + + +
+ + +
+
+ DNS cashe size +
+
+ 2 363 records +
+
+
+ 32 Mb +
+
+
+ + +
+
+ Upstream servers data +
+
+
+ Processes: 213 +
+
+ Cores: 2 +
+
+
+ +
+
+ ); +}; + +export default ServerStatistics; diff --git a/client2/src/components/App/Dashboard/components/ServerStatistics/index.ts b/client2/src/components/App/Dashboard/components/ServerStatistics/index.ts new file mode 100644 index 00000000..98228599 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/ServerStatistics/index.ts @@ -0,0 +1 @@ +export { default as ServerStatistics } from './ServerStatistics'; diff --git a/client2/src/components/App/Dashboard/components/TopClients/TopClients.module.pcss b/client2/src/components/App/Dashboard/components/TopClients/TopClients.module.pcss new file mode 100644 index 00000000..d4b4b01a --- /dev/null +++ b/client2/src/components/App/Dashboard/components/TopClients/TopClients.module.pcss @@ -0,0 +1,43 @@ +.container { + display: flex; + flex-flow: column; + background-color: var(--white); +} + +.title { + font-size: 16px; + line-height: 22px; + margin-bottom: 4px; + padding: 24px; + color: var(--gray900); +} + +.table { + position: relative; +} + +.tableTitle { + color: var(--gray700); + background-color: #fafafa; + padding: 24px; + position: sticky; + top: 0; +} + +.tableGrid { + display: grid; + grid-template-columns: 4fr 1fr 1fr 1.5fr 1fr .5fr; + padding: 16px 24px; + border-bottom: 1px solid var(--gray300); + + &:last-of-type { + border-bottom: 0; + } + + > div { + align-self: center; + } +} +.ids { + color: var(--gray700) +} \ No newline at end of file diff --git a/client2/src/components/App/Dashboard/components/TopClients/TopClients.tsx b/client2/src/components/App/Dashboard/components/TopClients/TopClients.tsx new file mode 100644 index 00000000..9e743964 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/TopClients/TopClients.tsx @@ -0,0 +1,71 @@ +import React, { FC, useContext } from 'react'; +import { Button } from 'antd'; +import cn from 'classnames'; +import { observer } from 'mobx-react-lite'; + +import Store from 'Store'; + +import s from './TopClients.module.pcss'; + +const TopClients: FC = observer(() => { + const store = useContext(Store); + const { ui: { intl }, dashboard } = store; + const { clientsInfo, stats } = dashboard; + const topClients = new Map(); + stats?.topClients?.forEach((client) => { + const [id, requests] = Object.entries(client.numberData); + topClients.set(id, requests); + }); + const clients = Array.from(clientsInfo.entries()); + + return ( +
+
{intl.getMessage('Top Clients')}
+
+
+
{intl.getMessage('client_table_header')}
+
{intl.getMessage('requests')}
+
{intl.getMessage('show_blocked_responses')}
+
%
+
+
+
+ {clients.map(([id, c]) => { + const request = topClients.get(id); + return ( +
+
+ {c.name} +
+ {c.ids?.map((cid) => ( +
{cid}
+ ))} +
+
+
+ {request} +
+
+ API + {/* TODO: api */} +
+
+ API / {request} +
+
+ +
+
+ ... +
+
+ ); + })} +
+
+ ); +}); + +export default TopClients; diff --git a/client2/src/components/App/Dashboard/components/TopClients/index.ts b/client2/src/components/App/Dashboard/components/TopClients/index.ts new file mode 100644 index 00000000..b495d493 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/TopClients/index.ts @@ -0,0 +1 @@ +export { default as TopClients } from './TopClients'; diff --git a/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.module.pcss b/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.module.pcss new file mode 100644 index 00000000..b61ab72a --- /dev/null +++ b/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.module.pcss @@ -0,0 +1,62 @@ +.container { + display: flex; + flex-flow: column; + background-color: var(--white); +} + +.title { + padding: 24px; + font-size: 16px; + font-weight: 500; + line-height: 22px; + border-bottom: 1px solid var(--gray300); + margin-bottom: 16px; + color: var(--gray900); +} + +.content { + padding: 24px; + +} + +.overal { + font-size: 24px; + line-height: 32px; + margin-bottom: 24px; + color: var(--gray900); +} + +.table { + position: relative; + overflow-y: auto; + max-height: 280px; + width: 100%; +} + +.tableHeader { + /* TODO: color */ + position: sticky; + top: 0; + width: inherit; + background-color: #fafafa; + font-weight: 500; + z-index: 10; +} + +.tableRow { + display: grid; + grid-template-columns: 3fr 1fr 1.5fr; + grid-column-gap: 10px; + padding: 8px 16px; + border-bottom: 1px solid var(--gray300); +} + +.domain { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +.progress { + display: flex; +} \ No newline at end of file diff --git a/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.tsx b/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.tsx new file mode 100644 index 00000000..35fe686f --- /dev/null +++ b/client2/src/components/App/Dashboard/components/TopDomains/TopDomains.tsx @@ -0,0 +1,73 @@ +import React, { FC, useContext } from 'react'; +import { Progress } from 'antd'; +import cn from 'classnames'; +import { AreaChart, Area, ResponsiveContainer } from 'recharts'; + +import TopArrayEntry from 'Entities/TopArrayEntry'; +import theme from 'Lib/theme'; +import Store from 'Store'; + +import s from './TopDomains.module.pcss'; + +interface TopDomainsProps { + title: string; + overal: number; + chartData: number[]; + tableData: TopArrayEntry[]; + color: string; + useValueColor?: boolean; +} + +const TopDomains: FC = ( + { title, overal, chartData, tableData, color, useValueColor }, +) => { + const store = useContext(Store); + const { ui: { intl } } = store; + const data = tableData.map((e) => { + const [domain, value] = Object.entries(e.numberData)[0]; + return { domain, value }; + }); + + return ( +
+
{title}
+
+
+ {overal.toLocaleString('en')} + + ({ name: 'data', value: n }))}> + + + +
+
+
+
+ {intl.getMessage('domain')} +
+
+ {intl.getMessage('all_queries')} +
+
+ % +
+
+ {data.map(({ domain, value }) => ( +
+
{domain}
+
{value}
+ +
+ ))} +
+
+
+ ); +}; + +export default TopDomains; diff --git a/client2/src/components/App/Dashboard/components/TopDomains/index.ts b/client2/src/components/App/Dashboard/components/TopDomains/index.ts new file mode 100644 index 00000000..79fcc1b8 --- /dev/null +++ b/client2/src/components/App/Dashboard/components/TopDomains/index.ts @@ -0,0 +1 @@ +export { default as TopDomains } from './TopDomains'; diff --git a/client2/src/components/App/Dashboard/components/index.ts b/client2/src/components/App/Dashboard/components/index.ts new file mode 100644 index 00000000..9fc2523c --- /dev/null +++ b/client2/src/components/App/Dashboard/components/index.ts @@ -0,0 +1,5 @@ +export { BlockCard } from './BlockCard'; +export { TopClients } from './TopClients'; +export { TopDomains } from './TopDomains'; +export { BlockedQueries } from './BlockedQueries'; +export { ServerStatistics } from './ServerStatistics'; diff --git a/client2/src/components/App/Dashboard/index.ts b/client2/src/components/App/Dashboard/index.ts new file mode 100644 index 00000000..449ae567 --- /dev/null +++ b/client2/src/components/App/Dashboard/index.ts @@ -0,0 +1 @@ +export { default } from './Dashboard'; diff --git a/client2/src/components/App/Errors/ErrorBoundary.tsx b/client2/src/components/App/Errors/ErrorBoundary.tsx new file mode 100644 index 00000000..42204783 --- /dev/null +++ b/client2/src/components/App/Errors/ErrorBoundary.tsx @@ -0,0 +1,31 @@ +import React, { Component, ReactNode } from 'react'; +import cn from 'classnames'; + +import s from './Errors.module.pcss'; + +export default class ErrorBoundary extends Component { + state = { + isError: false, + }; + + static getDerivedStateFromError(): { isError: boolean } { + return { isError: true }; + } + + render(): ReactNode { + const { isError } = this.state; + const { children } = this.props; + + if (isError) { + return ( +
+
+ Something went wrong +
+
+ ); + } + + return children; + } +} diff --git a/client2/src/components/App/Errors/Errors.module.pcss b/client2/src/components/App/Errors/Errors.module.pcss new file mode 100644 index 00000000..92e6f908 --- /dev/null +++ b/client2/src/components/App/Errors/Errors.module.pcss @@ -0,0 +1,79 @@ +.content { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + max-width: 455px; + min-height: calc(100vh - var(--header-height) - 64px); + margin: 0 auto; + text-align: center; + + &_boundary { + min-height: 100vh; + } +} + +.title { + margin-bottom: 8px; + font-size: 18px; + font-weight: 500; + + @media (--s-viewport) { + margin-bottom: 20px; + font-size: 24px; + } +} + +.code { + position: relative; + margin-bottom: 32px; + font-size: 120px; + font-weight: 700; + line-height: 108px; + color: var(--morning); + user-select: none; + + @media (--s-viewport) { + margin-bottom: 54px; + font-size: 180px; + line-height: 162px; + } +} + +.warning { + width: 160px; + height: 173px; + + @media (--s-viewport) { + width: 243px; + height: 262px; + } + + &_code { + position: absolute; + top: -20px; + left: 50%; + transform: translateX(-50%); + + @media (--s-viewport) { + top: -34px; + } + } +} + +.error { + margin-bottom: 10px; + cursor: pointer; +} + +.desc { + margin-bottom: 8px; + max-width: 384px; + font-size: 13px; + color: var(--gray); + + @media (--s-viewport) { + margin-bottom: 20px; + font-size: 14px; + } +} diff --git a/client2/src/components/App/Errors/index.ts b/client2/src/components/App/Errors/index.ts new file mode 100644 index 00000000..e5d6dda2 --- /dev/null +++ b/client2/src/components/App/Errors/index.ts @@ -0,0 +1 @@ +export { default as ErrorBoundary } from './ErrorBoundary'; diff --git a/client2/src/components/App/Header/Header.module.pcss b/client2/src/components/App/Header/Header.module.pcss new file mode 100644 index 00000000..78f6f067 --- /dev/null +++ b/client2/src/components/App/Header/Header.module.pcss @@ -0,0 +1,81 @@ +.header { + position: relative; + z-index: 1; + color: var(--gray900); + background-color: var(--white); + box-shadow: 0 1px 4px 0 rgba(0, 21, 41, 0.12); +} + +.top, +.bottom { + padding: 12px 16px; + + @media (--l-viewport) { + padding: 12px 32px; + } +} + +.top { + background-color: var(--black); + + @media (--l-viewport) { + display: none; + } +} + +.bottom { + display: flex; + flex-direction: column; + + @media (--l-viewport) { + align-items: center; + flex-direction: row; + height: var(--header-height); + } +} + +.icon { + margin-right: 10px; +} + +.status { + display: flex; + align-items: center; + margin-bottom: 12px; + + @media (--l-viewport) { + margin: 0 16px 0 0; + } +} + +.action { + min-width: 80px; + margin-right: auto; +} + +.languages, +.user { + display: none; + + @media (--l-viewport) { + display: flex; + align-items: center; + } +} + +.user { + margin-right: 32px; +} + +.menu { + color: var(--white); + background-color: transparent; + border: 0; + + &:hover, + &:focus, + &:active { + color: var(--gray400); + background-color: transparent; + } +} diff --git a/client2/src/components/App/Header/Header.tsx b/client2/src/components/App/Header/Header.tsx new file mode 100644 index 00000000..d5da7456 --- /dev/null +++ b/client2/src/components/App/Header/Header.tsx @@ -0,0 +1,60 @@ +import React, { FC, useContext } from 'react'; +import { Button } from 'antd'; +import { MenuOutlined } from '@ant-design/icons'; +import { observer } from 'mobx-react-lite'; + +import { Icon, LangSelect } from 'Common/ui'; +import Store from 'Store'; + +import s from './Header.module.pcss'; + +const Header: FC = observer(() => { + const store = useContext(Store); + const { ui: { intl }, system, ui } = store; + const { status, profile } = system; + + const updateServerStatus = () => { + system.switchServerStatus(!status?.protectionEnabled); + }; + + return ( +
+
+
+
+
+ + {status?.protectionEnabled + ? intl.getMessage('header_adguard_status_enabled') + : intl.getMessage('header_adguard_status_disabled')} +
+ + {profile?.name && ( +
+ + {profile?.name} +
+ )} +
+ +
+
+
+ ); +}); + +export default Header; diff --git a/client2/src/components/App/Header/index.ts b/client2/src/components/App/Header/index.ts new file mode 100644 index 00000000..579f1ac2 --- /dev/null +++ b/client2/src/components/App/Header/index.ts @@ -0,0 +1 @@ +export { default } from './Header'; diff --git a/client2/src/components/App/Login/ForgotPassword.tsx b/client2/src/components/App/Login/ForgotPassword.tsx new file mode 100644 index 00000000..f19b8a60 --- /dev/null +++ b/client2/src/components/App/Login/ForgotPassword.tsx @@ -0,0 +1,65 @@ +import React, { FC, useContext } from 'react'; +import { Button } from 'antd'; +import cn from 'classnames'; + +import { CommonLayout } from 'Common/ui/layouts'; +import { code } from 'Common/formating'; +import { Link } from 'Common/ui'; +import Store from 'Store'; +import theme from 'Lib/theme'; + +import s from './Login.module.pcss'; +import { RoutePath } from '../Routes/Paths'; + +const ForgotPassword: FC = () => { + const store = useContext(Store); + const { ui: { intl } } = store; + + return ( + +
+
+ {intl.getMessage('login_password_title')} +
+ +

+ {intl.getMessage('login_password_hash')} +

+ +
+
+ {intl.getMessage('login_password_step_1')} +
+
+ {intl.getMessage('login_password_step_2', { code })} +
+
+ {intl.getMessage('login_password_step_3', { code })} +
+
+ {intl.getMessage('login_password_step_4')} +
+
+ {intl.getMessage('login_password_step_5')} +
+
+ +

+ {intl.getMessage('login_password_result')} +

+ + + + +
+
+ ); +}; + +export default ForgotPassword; diff --git a/client2/src/components/App/Login/Login.module.pcss b/client2/src/components/App/Login/Login.module.pcss new file mode 100644 index 00000000..ae887cd9 --- /dev/null +++ b/client2/src/components/App/Login/Login.module.pcss @@ -0,0 +1,34 @@ +.title { + margin-bottom: 12px; + font-size: 28px; + text-align: center; + + &_form { + margin-bottom: 32px; + } +} + +.link { + display: inline-block; + vertical-align: middle; + margin-top: 32px; + font-size: 16px; + text-align: center; +} + +.paragraph { + font-size: 16px; + margin: 0 0 14px; +} + +.list { + margin-bottom: 16px; + padding-left: 20px; + font-size: 16px; +} + +.step { + margin-bottom: 5px; + display: list-item; + list-style: decimal; +} diff --git a/client2/src/components/App/Login/Login.tsx b/client2/src/components/App/Login/Login.tsx new file mode 100644 index 00000000..844e03f9 --- /dev/null +++ b/client2/src/components/App/Login/Login.tsx @@ -0,0 +1,102 @@ +import React, { FC, useContext } from 'react'; +import { Button } from 'antd'; +import { observer } from 'mobx-react-lite'; +import { Formik, FormikHelpers } from 'formik'; +import cn from 'classnames'; + +import { Input } from 'Common/controls'; +import { CommonLayout } from 'Common/ui/layouts'; +import { Link } from 'Common/ui'; +import { RoutePath } from 'Components/App/Routes/Paths'; +import Store from 'Store'; +import theme from 'Lib/theme'; + +import s from './Login.module.pcss'; + +type FormValues = { + name: string; + password: string; +}; + +const Login: FC = observer(() => { + const store = useContext(Store); + const { ui: { intl }, login } = store; + + const onSubmit = async (values: FormValues, { setSubmitting }: FormikHelpers) => { + const { name, password } = values; + + const error = await login.login({ + name, + password, + }); + + if (error) { + setSubmitting(false); + } + }; + + const initialValues: FormValues = { + name: '', + password: '', + }; + + return ( + +
+
+ {intl.getMessage('login')} +
+ + + {({ + values, + handleSubmit, + setFieldValue, + isSubmitting, + }) => ( +
+ setFieldValue('name', v)} + autoFocus + /> + setFieldValue('password', v)} + /> + +
+ )} +
+ +
+ + {intl.getMessage('login_password_link')} + +
+
+
+ ); +}); + +export default Login; diff --git a/client2/src/components/App/Login/index.ts b/client2/src/components/App/Login/index.ts new file mode 100644 index 00000000..3da6e50e --- /dev/null +++ b/client2/src/components/App/Login/index.ts @@ -0,0 +1,2 @@ +export { default as Login } from './Login'; +export { default as ForgotPassword } from './ForgotPassword'; diff --git a/client2/src/components/App/Routes/Paths.ts b/client2/src/components/App/Routes/Paths.ts new file mode 100644 index 00000000..f722a790 --- /dev/null +++ b/client2/src/components/App/Routes/Paths.ts @@ -0,0 +1,63 @@ +import qs from 'qs'; +import { Locale } from 'Localization'; + +const BasicPath = '/'; +const pathBuilder = (path: string) => (`${BasicPath}${path}`); + +export enum RoutePath { + Dashboard = 'Dashboard', + FiltersBlocklist = 'FiltersBlocklist', + FiltersAllowlist = 'FiltersAllowlist', + FiltersRewrites = 'FiltersRewrites', + FiltersServices = 'FiltersServices', + FiltersCustom = 'FiltersCustom', + QueryLog = 'QueryLog', + SetupGuide = 'SetupGuide', + SettingsGeneral = 'SettingsGeneral', + SettingsDns = 'SettingsDns', + SettingsEncryption = 'SettingsEncryption', + SettingsClients = 'SettingsClients', + SettingsDhcp = 'SettingsDhcp', + Login = 'Login', + ForgotPassword = 'ForgotPassword', +} + +export const Paths: Record = { + Dashboard: pathBuilder('dashboard'), + FiltersBlocklist: pathBuilder('filters/blocklists'), + FiltersAllowlist: pathBuilder('filters/allowlists'), + FiltersRewrites: pathBuilder('filters/rewrites'), + FiltersServices: pathBuilder('filters/services'), + FiltersCustom: pathBuilder('filters/custom'), + QueryLog: pathBuilder('logs'), + SetupGuide: pathBuilder('guide'), + SettingsGeneral: pathBuilder('settings/general'), + SettingsDns: pathBuilder('settings/dns'), + SettingsEncryption: pathBuilder('settings/encryption'), + SettingsClients: pathBuilder('settings/clients'), + SettingsDhcp: pathBuilder('settings/dhcp'), + Login: pathBuilder(''), + ForgotPassword: pathBuilder('forgot_password'), +}; + +export enum LinkParamsKeys {} +export enum QueryParams {} +export type LinkParams = Partial>; + +export const linkPathBuilder = ( + route: RoutePath, + params?: LinkParams, + lang?: Locale, + query?: Partial>, +) => { + let path = Paths[route]; // .replace(BasicPath, `/${lang}`); + if (params) { + Object.keys(params).forEach((key: unknown) => { + path = path.replace(`:${key}`, String(params[key as LinkParamsKeys])); + }); + } + if (query) { + path += `?${qs.stringify(query)}`; + } + return path; +}; diff --git a/client2/src/components/App/Routes/Routes.module.pcss b/client2/src/components/App/Routes/Routes.module.pcss new file mode 100644 index 00000000..e1561e76 --- /dev/null +++ b/client2/src/components/App/Routes/Routes.module.pcss @@ -0,0 +1,3 @@ +.app { + min-height: 100vh; +} \ No newline at end of file diff --git a/client2/src/components/App/Routes/Routes.tsx b/client2/src/components/App/Routes/Routes.tsx new file mode 100644 index 00000000..ad6df6cd --- /dev/null +++ b/client2/src/components/App/Routes/Routes.tsx @@ -0,0 +1,76 @@ +import React, { FC, useContext } from 'react'; +import { Layout } from 'antd'; +import { Switch, Route, Redirect } from 'react-router-dom'; +import { observer } from 'mobx-react-lite'; + +import Store from 'Store'; +import { Paths } from './Paths'; + +import Dashboard from '../Dashboard'; +import { Login, ForgotPassword } from '../Login'; +import Sidebar from '../Sidebar'; +import Header from '../Header'; +import SetupGuide from '../SetupGuide'; +import { GeneralSettings } from '../Settings'; + +import s from './Routes.module.pcss'; + +const { Content } = Layout; + +const AuthRoutes: FC = React.memo(() => { + return ( + + + + + ); +}); + +const AppRoutes: FC = observer(() => { + return ( + + + +
+ + + + + + + + + + + ); +}); + +const Routes: FC = observer(() => { + const store = useContext(Store); + const { login: { loggedIn } } = store; + if (loggedIn) { + return ; + } + return ; +}); + +export default Routes; diff --git a/client2/src/components/App/Routes/index.ts b/client2/src/components/App/Routes/index.ts new file mode 100644 index 00000000..edc668a3 --- /dev/null +++ b/client2/src/components/App/Routes/index.ts @@ -0,0 +1 @@ +export { default } from './Routes'; diff --git a/client2/src/components/App/Settings/GeneralSettings/GeneralSettings.tsx b/client2/src/components/App/Settings/GeneralSettings/GeneralSettings.tsx new file mode 100644 index 00000000..00a273bb --- /dev/null +++ b/client2/src/components/App/Settings/GeneralSettings/GeneralSettings.tsx @@ -0,0 +1,52 @@ +import React, { FC, useContext, useEffect } from 'react'; +import { Tabs, Grid } from 'antd'; +import { observer } from 'mobx-react-lite'; + +import { InnerLayout } from 'Common/ui'; +import Store from 'Store'; + +import { General, QueryLog, Statistics, TAB_KEY } from './components'; + +const { useBreakpoint } = Grid; +const { TabPane } = Tabs; + +const GeneralSettings: FC = observer(() => { + const store = useContext(Store); + const { ui: { intl }, generalSettings } = store; + const { inited } = generalSettings; + const screens = useBreakpoint(); + + useEffect(() => { + if (!inited) { + generalSettings.init(); + } + }, [inited]); + + if (!inited) { + return null; + } + + const tabsPosition = screens.lg ? 'left' : 'top'; + + return ( + + + + + + + + + + + + + + ); +}); + +export default GeneralSettings; diff --git a/client2/src/components/App/Settings/GeneralSettings/components/Common.module.pcss b/client2/src/components/App/Settings/GeneralSettings/components/Common.module.pcss new file mode 100644 index 00000000..e1570e85 --- /dev/null +++ b/client2/src/components/App/Settings/GeneralSettings/components/Common.module.pcss @@ -0,0 +1,45 @@ +.title { + font-size: 20px; + font-weight: 500; + color: var(--gray900); + margin-bottom: 48px; + display: flex; + justify-content: space-between; +} + +.radio { + display: block; + height: 30px; + line-height: 30px; + + &:first-of-type { + margin-top: -12px; + } +} +.save { + display: block; + margin-top: 24px; +} + +.item { + display: flex; + justify-content: space-between; + margin-bottom: 24px; +} + +.nameTitle { + color: var(--black); +} +.nameDesc { + color: var(--gray700); + margin-right: 40px; + + @media (--m-viewport) { + margin-right: 200px; + } +} +.select { + margin-bottom: 24px; + margin-top: -12px; + width: 200px; +} \ No newline at end of file diff --git a/client2/src/components/App/Settings/GeneralSettings/components/General.tsx b/client2/src/components/App/Settings/GeneralSettings/components/General.tsx new file mode 100644 index 00000000..72847496 --- /dev/null +++ b/client2/src/components/App/Settings/GeneralSettings/components/General.tsx @@ -0,0 +1,169 @@ +import React, { FC, useContext } from 'react'; +import { Button, Switch, Select } from 'antd'; +import { Formik, FormikHelpers } from 'formik'; +import { observer } from 'mobx-react-lite'; + +import { Link } from 'Common/ui'; +import Store from 'Store'; +import { RoutePath } from 'Paths'; + +import { s } from '.'; + +const { Option } = Select; + +const General: FC = observer(() => { + const store = useContext(Store); + const { ui: { intl }, generalSettings } = store; + const { + safebrowsing, + filteringConfig, + parental, + safesearch, + } = generalSettings; + + const initialValues = { + ...filteringConfig!.serialize(), + safebrowsing, + parental, + safesearch, + }; + + type InitialValues = typeof initialValues; + + const onSubmit = async (values: InitialValues, helpers: FormikHelpers) => { + // await generalSettings.updateQueryLogConfig(values); + if (initialValues.parental !== values.parental) { + generalSettings[values.parental ? 'parentalEnable' : 'parentalDisable'](); + } + if (initialValues.safesearch !== values.safesearch) { + generalSettings[values.safesearch ? 'safebrowsingEnable' : 'safebrowsingDisable'](); + } + if (initialValues.safebrowsing !== values.safebrowsing) { + generalSettings[values.safebrowsing ? 'safebrowsingEnable' : 'safebrowsingDisable'](); + } + if (initialValues.enabled !== values.enabled + || initialValues.interval !== values.interval) { + generalSettings.updateFilteringConfig({ + interval: values.interval, + enabled: values.enabled, + }); + } + helpers.setSubmitting(false); + }; + + const filtersLink = (e: string) => { + // TODO: fix link + return {e}; + }; + + return ( + <> +
+ {intl.getMessage('filter_category_general')} +
+ + {({ + handleSubmit, + values, + setFieldValue, + isSubmitting, + dirty, + }) => ( +
+
+
+
+ {intl.getMessage('block_domain_use_filters_and_hosts')} +
+
+ {intl.getMessage('filters_block_toggle_hint', { a: filtersLink })} +
+
+ setFieldValue('enabled', e)}/> +
+
+
+
+ {intl.getMessage('filters_interval')} +
+
+
+ +
+
+
+ {intl.getMessage('use_adguard_browsing_sec')} +
+
+ {intl.getMessage('use_adguard_browsing_sec_hint')} +
+
+ setFieldValue('safebrowsing', e)}/> +
+
+
+
+ {intl.getMessage('use_adguard_parental')} +
+
+ {intl.getMessage('use_adguard_parental_hint')} +
+
+ setFieldValue('parental', e)}/> +
+
+
+
+ {intl.getMessage('enforce_safe_search')} +
+
+ {intl.getMessage('enforce_save_search_hint')} +
+
+ setFieldValue('safesearch', e)}/> +
+ {dirty && ( + + )} +
+ )} +
+ + ); +}); + +export default General; diff --git a/client2/src/components/App/Settings/GeneralSettings/components/QueryLog.tsx b/client2/src/components/App/Settings/GeneralSettings/components/QueryLog.tsx new file mode 100644 index 00000000..c13bf599 --- /dev/null +++ b/client2/src/components/App/Settings/GeneralSettings/components/QueryLog.tsx @@ -0,0 +1,124 @@ +import React, { FC, useContext, useState } from 'react'; +import { Radio, Button, Switch } from 'antd'; +import { Formik, FormikHelpers } from 'formik'; +import { observer } from 'mobx-react-lite'; + +import { notifySuccess, ConfirmModalLayout } from 'Common/ui'; +import { IQueryLogConfig } from 'Entities/QueryLogConfig'; +import Store from 'Store'; + +import { s } from '.'; + +const { Group } = Radio; + +const QueryLog: FC = observer(() => { + const store = useContext(Store); + const [showConfirm, setShowConfirm] = useState(false); + const { ui: { intl }, generalSettings } = store; + const { + queryLogConfig, + } = generalSettings; + + const onSubmit = async (values: IQueryLogConfig, helpers: FormikHelpers) => { + await generalSettings.updateQueryLogConfig(values); + helpers.setSubmitting(false); + }; + + const onReset = async () => { + const result = await generalSettings.querylogClear(); + if (result) { + notifySuccess(intl.getMessage('query_log_cleared')); + } + }; + + return ( + <> +
+ {intl.getMessage('query_log_configuration')} + +
+ setShowConfirm(false)} + title={intl.getMessage('query_log_clear')} + buttonText={intl.getMessage('query_log_clear')} + > + {intl.getMessage('query_log_confirm_clear')} + + + {({ + handleSubmit, + values, + setFieldValue, + isSubmitting, + dirty, + }) => ( +
+
+
+
+ {intl.getMessage('query_log_enable')} +
+
+ setFieldValue('enabled', e)}/> +
+
+
+
+ {intl.getMessage('anonymize_client_ip')} +
+
+ {intl.getMessage('anonymize_client_ip_desc')} +
+
+ setFieldValue('anonymize_client_ip', e)}/> +
+
+
+
+ {intl.getMessage('query_log_retention')} +
+
+ {intl.getMessage('query_log_retention_confirm')} +
+
+
+ setFieldValue('interval', e.target.value)}> + + {intl.getMessage('interval_24_hour')} + + + {intl.getPlural('interval_days', 7, { count: 7 })} + + + {intl.getPlural('interval_days', 30, { count: 30 })} + + + {intl.getPlural('interval_days', 90, { count: 90 })} + + + {dirty && ( + + )} +
+ )} +
+ + ); +}); + +export default QueryLog; diff --git a/client2/src/components/App/Settings/GeneralSettings/components/Statistics.tsx b/client2/src/components/App/Settings/GeneralSettings/components/Statistics.tsx new file mode 100644 index 00000000..7b6e2112 --- /dev/null +++ b/client2/src/components/App/Settings/GeneralSettings/components/Statistics.tsx @@ -0,0 +1,105 @@ +import React, { FC, useContext, useState } from 'react'; +import { Radio, Button } from 'antd'; +import { Formik, FormikHelpers } from 'formik'; +import { observer } from 'mobx-react-lite'; + +import { notifySuccess, ConfirmModalLayout } from 'Common/ui'; +import { IStatsConfig } from 'Entities/StatsConfig'; +import Store from 'Store'; + +import { s } from '.'; + +const { Group } = Radio; + +const Statistics: FC = observer(() => { + const store = useContext(Store); + const [showConfirm, setShowConfirm] = useState(false); + const { ui: { intl }, generalSettings } = store; + const { + statsConfig, + } = generalSettings; + + const onSubmit = async (values: IStatsConfig, helpers: FormikHelpers) => { + await generalSettings.updateStatsConfig(values); + helpers.setSubmitting(false); + }; + + const onReset = async () => { + const result = await generalSettings.statsReset(); + if (result) { + notifySuccess(intl.getMessage('stats_reset')); + } + }; + + return ( + <> +
+ {intl.getMessage('statistics_configuration')} + +
+ setShowConfirm(false)} + title={intl.getMessage('statistics_clear')} + buttonText={intl.getMessage('statistics_clear')} + > + {intl.getMessage('statistics_clear_confirm')} + + + {({ + handleSubmit, + values, + setFieldValue, + isSubmitting, + dirty, + }) => ( +
+
+
+
+ {intl.getMessage('statistics_retention')} +
+
+ {intl.getMessage('statistics_retention_desc')} +
+
+
+ setFieldValue('interval', e.target.value)}> + + {intl.getMessage('interval_24_hour')} + + + {intl.getPlural('interval_days', 7, { count: 7 })} + + + {intl.getPlural('interval_days', 30, { count: 30 })} + + + {intl.getPlural('interval_days', 90, { count: 90 })} + + + {dirty && ( + + )} +
+ )} +
+ + ); +}); + +export default Statistics; diff --git a/client2/src/components/App/Settings/GeneralSettings/components/index.ts b/client2/src/components/App/Settings/GeneralSettings/components/index.ts new file mode 100644 index 00000000..872b4789 --- /dev/null +++ b/client2/src/components/App/Settings/GeneralSettings/components/index.ts @@ -0,0 +1,9 @@ +export { default as General } from './General'; +export { default as QueryLog } from './QueryLog'; +export { default as Statistics } from './Statistics'; +export enum TAB_KEY { + GENERAL = 'GENERAL', + QUERY_LOG = 'QUERY_LOG', + STATISTICS = 'STATISTICS', +} +export { default as s } from './Common.module.pcss'; diff --git a/client2/src/components/App/Settings/GeneralSettings/index.ts b/client2/src/components/App/Settings/GeneralSettings/index.ts new file mode 100644 index 00000000..103dbe79 --- /dev/null +++ b/client2/src/components/App/Settings/GeneralSettings/index.ts @@ -0,0 +1 @@ +export { default as GeneralSettings } from './GeneralSettings'; diff --git a/client2/src/components/App/Settings/index.ts b/client2/src/components/App/Settings/index.ts new file mode 100644 index 00000000..dfb1ece8 --- /dev/null +++ b/client2/src/components/App/Settings/index.ts @@ -0,0 +1 @@ +export { GeneralSettings } from './GeneralSettings'; diff --git a/client2/src/components/App/SetupGuide/SetupGuide.module.pcss b/client2/src/components/App/SetupGuide/SetupGuide.module.pcss new file mode 100644 index 00000000..c4ac60c5 --- /dev/null +++ b/client2/src/components/App/SetupGuide/SetupGuide.module.pcss @@ -0,0 +1,31 @@ +.title { + margin-bottom: 16px; + font-size: 20px; + font-weight: 500; + + @media (--m-viewport) { + margin-bottom: 24px; + } +} + +.text { + margin-bottom: 32px; + font-size: 14px; + color: var(--gray900); + + p { + margin: 0 0 5px; + } +} + +.addresses { + margin-top: 16px; +} + +.address { + font-family: var(--font-family-monospace); + font-size: 16px; + font-weight: 600; + word-break: break-all; + color: var(--green400); +} diff --git a/client2/src/components/App/SetupGuide/SetupGuide.tsx b/client2/src/components/App/SetupGuide/SetupGuide.tsx new file mode 100644 index 00000000..f4c5a760 --- /dev/null +++ b/client2/src/components/App/SetupGuide/SetupGuide.tsx @@ -0,0 +1,92 @@ +import React, { FC, useContext } from 'react'; +import { Tabs, Grid } from 'antd'; + +import { InnerLayout } from 'Common/ui'; +import { externalLink, p } from 'Common/formating'; +import { DHCP_LINK } from 'Consts/common'; +import Store from 'Store'; + +import s from './SetupGuide.module.pcss'; + +const { useBreakpoint } = Grid; +const { TabPane } = Tabs; + +const SetupGuide: FC = () => { + const store = useContext(Store); + const { ui: { intl }, system } = store; + const screens = useBreakpoint(); + const tabsPosition = screens.lg ? 'left' : 'top'; + + const { status } = system; + + const tabs = [ + { + key: intl.getMessage('router'), + text: intl.getMessage('install_configure_router', { p }), + }, + { + key: 'Windows', + text: intl.getMessage('install_configure_windows', { p }), + }, + { + key: 'macOS', + text: intl.getMessage('install_configure_macos', { p }), + }, + { + key: 'Linux', + text: intl.getMessage('install_configure_router', { p }), + }, + { + key: 'Android', + text: intl.getMessage('install_configure_android', { p }), + }, + { + key: 'iOS', + text: intl.getMessage('install_configure_ios', { p }), + }, + ]; + + const addresses = ( + <> +
+ {intl.getMessage('install_configure_adresses')} + {status?.dnsAddresses && ( +
+ {status.dnsAddresses.map((address) => ( +
+ {address} +
+ ))} +
+ )} +
+
+ {intl.getMessage('install_configure_dhcp', { dhcp: externalLink(DHCP_LINK) })} +
+ + ); + + return ( + + + {tabs.map((tab) => ( + +
+ {intl.getMessage('install_configure_how_to_title', { value: tab.key })} +
+
+ {tab.text} +
+ {addresses} +
+ ))} +
+
+ ); +}; + +export default SetupGuide; diff --git a/client2/src/components/App/SetupGuide/index.tsx b/client2/src/components/App/SetupGuide/index.tsx new file mode 100644 index 00000000..97a2bb20 --- /dev/null +++ b/client2/src/components/App/SetupGuide/index.tsx @@ -0,0 +1 @@ +export { default } from './SetupGuide'; diff --git a/client2/src/components/App/Sidebar/Sidebar.module.pcss b/client2/src/components/App/Sidebar/Sidebar.module.pcss new file mode 100644 index 00000000..6942d66a --- /dev/null +++ b/client2/src/components/App/Sidebar/Sidebar.module.pcss @@ -0,0 +1,23 @@ +.logo { + width: 118px; + height: 31px; + margin: 20px; +} + +.icon { + width: 16px; + height: 16px; + margin-right: 10px; +} + +.menu { + display: flex; + flex-direction: column; + min-height: calc(100% - 71px); +} + +.logout { + @media (--m-viewport) { + margin-top: auto!important; + } +} diff --git a/client2/src/components/App/Sidebar/Sidebar.tsx b/client2/src/components/App/Sidebar/Sidebar.tsx new file mode 100644 index 00000000..f7485bc7 --- /dev/null +++ b/client2/src/components/App/Sidebar/Sidebar.tsx @@ -0,0 +1,116 @@ +import React, { FC, useContext } from 'react'; +import { Layout, Menu, Grid } from 'antd'; +import { observer } from 'mobx-react-lite'; +import { PieChartOutlined, FormOutlined, TableOutlined, ProfileOutlined, SettingOutlined } from '@ant-design/icons'; + +import Store from 'Store'; +import { Link, Icon, Mask } from 'Common/ui'; +import { RoutePath, linkPathBuilder } from 'Components/App/Routes/Paths'; + +import s from './Sidebar.module.pcss'; + +const { Sider } = Layout; +const { Item: MenuItem, SubMenu } = Menu; +const { useBreakpoint } = Grid; + +const Sidebar: FC = observer(() => { + const store = useContext(Store); + const screens = useBreakpoint(); + const { ui: { intl, sidebarOpen, toggleSidebar } } = store; + + if (!Object.keys(screens).length) { + return null; + } + + const handleSidebar = () => { + if (!screens.xl) { + toggleSidebar(); + } + }; + + return ( + <> + + + + + + + {intl.getMessage('dashboard')} + + + + + + {intl.getMessage('filters')} + + + + + + {intl.getMessage('query_log')} + + + + + + {intl.getMessage('setup_guide')} + + + } + title={intl.getMessage('settings')} + > + + + {intl.getMessage('general_settings')} + + + + + {intl.getMessage('dns_settings')} + + + + + {intl.getMessage('encryption_settings')} + + + + + {intl.getMessage('client_settings')} + + + + + {intl.getMessage('dhcp_settings')} + + + + + + + {intl.getMessage('sign_out')} + + + + + + + ); +}); + +export default Sidebar; diff --git a/client2/src/components/App/Sidebar/index.ts b/client2/src/components/App/Sidebar/index.ts new file mode 100644 index 00000000..e842a859 --- /dev/null +++ b/client2/src/components/App/Sidebar/index.ts @@ -0,0 +1 @@ +export { default } from './Sidebar'; diff --git a/client2/src/components/App/index.ts b/client2/src/components/App/index.ts new file mode 100644 index 00000000..9122fa1a --- /dev/null +++ b/client2/src/components/App/index.ts @@ -0,0 +1 @@ +export { default } from './App'; diff --git a/client2/src/components/Install/Install.tsx b/client2/src/components/Install/Install.tsx index 701ce626..3e7d797e 100644 --- a/client2/src/components/Install/Install.tsx +++ b/client2/src/components/Install/Install.tsx @@ -2,9 +2,10 @@ import React, { FC } from 'react'; import { Layout } from 'antd'; import { Formik, FormikHelpers } from 'formik'; import { observer } from 'mobx-react-lite'; +import cn from 'classnames'; import { IInitialConfigurationBeta } from 'Entities/InitialConfigurationBeta'; -import Icons from 'Lib/theme/Icons'; +import Icons from 'Common/ui/Icons'; import { DEFAULT_DNS_ADDRESS, DEFAULT_DNS_PORT, @@ -109,8 +110,8 @@ const InstallForm: FC = observer(() => { const Install: FC = () => { return ( - - + + diff --git a/client2/src/components/Install/components/ConfigureDevices/ConfigureDevices.tsx b/client2/src/components/Install/components/ConfigureDevices/ConfigureDevices.tsx index 8fbcb933..fc305adf 100644 --- a/client2/src/components/Install/components/ConfigureDevices/ConfigureDevices.tsx +++ b/client2/src/components/Install/components/ConfigureDevices/ConfigureDevices.tsx @@ -3,10 +3,11 @@ import { Tabs, Grid } from 'antd'; import cn from 'classnames'; import { FormikHelpers } from 'formik'; +import { DHCP_LINK } from 'Consts/common'; +import { danger, externalLink, p } from 'Common/formating'; +import { DEFAULT_DNS_PORT, DEFAULT_IP_ADDRESS, DEFAULT_IP_PORT } from 'Consts/install'; import Store from 'Store/installStore'; import theme from 'Lib/theme'; -import { danger, p } from 'Common/formating'; -import { DEFAULT_DNS_PORT, DEFAULT_IP_ADDRESS, DEFAULT_IP_PORT } from 'Consts/install'; import { FormValues } from '../../Install'; import StepButtons from '../StepButtons'; @@ -26,17 +27,6 @@ const ConfigureDevices: FC = ({ const screens = useBreakpoint(); const tabsPosition = screens.md ? 'left' : 'top'; - const dhcp = (e: string) => ( - - {e} - - ); - const allIps = addresses?.interfaces.reduce((all, data) => { const { ipAddresses } = data; if (ipAddresses) { @@ -138,7 +128,7 @@ const ConfigureDevices: FC = ({
- {intl.getMessage('install_configure_dhcp', { dhcp })} + {intl.getMessage('install_configure_dhcp', { dhcp: externalLink(DHCP_LINK) })}
; + onBlur?: (e: FocusEvent) => void; + shape?: ButtonShape; + size?: ButtonSize; + type: ButtonType; + block?: boolean; +} + +const Button: FC = ({ + children, + className, + danger, + dataAttrs, + disabled, + htmlType, + // icon, + id, + onClick, + onBlur, + shape, +}) => { + const buttonClass = cn( + className, + ); + + return ( + + // : )} + id={id} + onClick={onClick} + onBlur={onBlur} + shape={shape} + > + {children} + + ); +}; + +export default Button; diff --git a/client2/src/components/common/controls/Button/index.ts b/client2/src/components/common/controls/Button/index.ts new file mode 100644 index 00000000..efe8c800 --- /dev/null +++ b/client2/src/components/common/controls/Button/index.ts @@ -0,0 +1 @@ +export { default } from './Button'; diff --git a/client2/src/components/common/controls/Radio/Radio.tsx b/client2/src/components/common/controls/Radio/Radio.tsx index dc67100a..5b816858 100644 --- a/client2/src/components/common/controls/Radio/Radio.tsx +++ b/client2/src/components/common/controls/Radio/Radio.tsx @@ -6,7 +6,7 @@ import s from './Radio.module.pcss'; const { Group } = Radio; -interface AdminInterfaceProps { +interface RadioProps { options: { label: string; desc?: string; @@ -16,7 +16,7 @@ interface AdminInterfaceProps { value: string | number; } -const RadioComponent: FC = observer(({ +const RadioComponent: FC = observer(({ options, onSelect, value, }) => { if (options.length === 0) { diff --git a/client2/src/components/common/controls/index.ts b/client2/src/components/common/controls/index.ts index 6ff1fe13..3746e6fe 100644 --- a/client2/src/components/common/controls/index.ts +++ b/client2/src/components/common/controls/index.ts @@ -1,3 +1,4 @@ export { default as Radio } from './Radio'; export { Input } from './Input'; export { Switch } from './Switch'; +export { default as Button } from './Button'; diff --git a/client2/src/components/common/formating/code.tsx b/client2/src/components/common/formating/code.tsx new file mode 100644 index 00000000..60de648c --- /dev/null +++ b/client2/src/components/common/formating/code.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import theme from 'Lib/theme'; + +const code = (e: string) => { + return ( + + {e} + + ); +}; + +export default code; diff --git a/client2/src/components/common/formating/externalLink.tsx b/client2/src/components/common/formating/externalLink.tsx new file mode 100644 index 00000000..14e0cad5 --- /dev/null +++ b/client2/src/components/common/formating/externalLink.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import theme from 'Lib/theme'; + +export const externalLink = (link: string) => (e: string) => ( + + {e} + +); diff --git a/client2/src/components/common/formating/index.ts b/client2/src/components/common/formating/index.ts index 6bed9429..7b1322b1 100644 --- a/client2/src/components/common/formating/index.ts +++ b/client2/src/components/common/formating/index.ts @@ -1,2 +1,4 @@ export { default as danger } from './danger'; export { default as p } from './p'; +export { default as code } from './code'; +export { externalLink } from './externalLink'; diff --git a/client2/src/components/common/ui/Icon/Icon.tsx b/client2/src/components/common/ui/Icon/Icon.tsx index 55f5b027..261852b3 100644 --- a/client2/src/components/common/ui/Icon/Icon.tsx +++ b/client2/src/components/common/ui/Icon/Icon.tsx @@ -1,6 +1,6 @@ import React, { FC } from 'react'; import cn from 'classnames'; -import { IconType } from 'Lib/theme/Icons'; +import { IconType } from 'Common/ui/Icons'; import s from './Icon.module.pcss'; @@ -22,4 +22,4 @@ const Icon: FC = ({ icon, color, className, onClick }) => { }; export default Icon; -export { IconType } from 'Lib/theme/Icons'; +export { IconType } from 'Common/ui/Icons'; diff --git a/client2/src/lib/theme/Icons/Icon.pcss b/client2/src/components/common/ui/Icons/Icon.pcss similarity index 100% rename from client2/src/lib/theme/Icons/Icon.pcss rename to client2/src/components/common/ui/Icons/Icon.pcss diff --git a/client2/src/lib/theme/Icons/index.tsx b/client2/src/components/common/ui/Icons/index.tsx similarity index 50% rename from client2/src/lib/theme/Icons/index.tsx rename to client2/src/components/common/ui/Icons/index.tsx index a94c2c5c..dcf0e338 100644 --- a/client2/src/lib/theme/Icons/index.tsx +++ b/client2/src/components/common/ui/Icons/index.tsx @@ -4,7 +4,13 @@ import './Icon.pcss'; export type IconType = 'logo' | 'visibility_disable' | - 'visibility_enable'; + 'visibility_enable' | + 'logo_shield' | + 'logo_light' | + 'sign_out' | + 'user' | + 'language' | + 'close_big'; const Icons: FC = () => ( @@ -18,6 +24,16 @@ const Icons: FC = () => ( + + + + + + + + + + @@ -26,6 +42,42 @@ const Icons: FC = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); diff --git a/client2/src/components/common/ui/LangSelect/LangSelect.module.pcss b/client2/src/components/common/ui/LangSelect/LangSelect.module.pcss new file mode 100644 index 00000000..1342ea34 --- /dev/null +++ b/client2/src/components/common/ui/LangSelect/LangSelect.module.pcss @@ -0,0 +1,10 @@ +.wrap { + display: inline-flex; + align-items: center; +} + +.icon { + font-size: 22px; + margin-right: 10px; + color: var(--gray700); +} diff --git a/client2/src/components/common/ui/LangSelect/LangSelect.tsx b/client2/src/components/common/ui/LangSelect/LangSelect.tsx new file mode 100644 index 00000000..24bc15b2 --- /dev/null +++ b/client2/src/components/common/ui/LangSelect/LangSelect.tsx @@ -0,0 +1,23 @@ +import React, { FC, useContext } from 'react'; + +import { Icon } from 'Common/ui'; +import Store from 'Store'; +import { LANGUAGES } from 'Localization'; + +import s from './LangSelect.module.pcss'; + +const LangSelector: FC = () => { + const store = useContext(Store); + const { ui: { currentLang } } = store; + + const lang = LANGUAGES.find((e) => e.code === currentLang)!; + + return ( +
+ + {lang.name} +
+ ); +}; + +export default LangSelector; diff --git a/client2/src/components/common/ui/LangSelect/index.tsx b/client2/src/components/common/ui/LangSelect/index.tsx new file mode 100644 index 00000000..25f35f87 --- /dev/null +++ b/client2/src/components/common/ui/LangSelect/index.tsx @@ -0,0 +1 @@ +export { default } from './LangSelect'; diff --git a/client2/src/components/common/ui/Link.tsx b/client2/src/components/common/ui/Link.tsx new file mode 100644 index 00000000..5abbc0a1 --- /dev/null +++ b/client2/src/components/common/ui/Link.tsx @@ -0,0 +1,63 @@ +import React, { FC, MouseEvent } from 'react'; +import { Link as L, LinkProps as LProps } from 'react-router-dom'; +import cn from 'classnames'; + +import { linkPathBuilder, RoutePath, LinkParams, LinkParamsKeys } from 'Paths'; + +interface LinkProps { + to: RoutePath; + props?: LinkParams; + className?: string; + type?: LProps['type']; + stop?: boolean; + disabled?: boolean; + onClick?: () => void; + id?: string; +} + +const Link: FC = ({ + to, children, className, props, type, stop, disabled, onClick, id, +}) => { + if (props) { + Object.keys(props).forEach((key: unknown) => { + if (!props[key as LinkParamsKeys]) { + throw new Error(`Got wrong ${key} propKey: ${props[key as LinkParamsKeys]} in Link`); + } + }); + } + + const handleClick = (e: MouseEvent) => { + if (stop) { + e.stopPropagation(); + } + if (onClick) { + onClick(); + } + }; + + if (disabled) { + return ( +
+ {children} +
+ ); + } + + return ( + + {children} + + ); +}; + +export default Link; diff --git a/client2/src/components/common/ui/Mask/Mask.module.pcss b/client2/src/components/common/ui/Mask/Mask.module.pcss new file mode 100644 index 00000000..7c7e1930 --- /dev/null +++ b/client2/src/components/common/ui/Mask/Mask.module.pcss @@ -0,0 +1,26 @@ +.mask { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + height: 100%; + background-color: rgba(0, 0, 0, 0.45); + opacity: 0; + visibility: hidden; + transition: opacity var(--transition); + cursor: pointer; + + &_visible { + opacity: 1; + visibility: visible; + } + + @media (--l-viewport) { + &_visible { + opacity: 0; + visibility: hidden; + } + } +} diff --git a/client2/src/components/common/ui/Mask/Mask.tsx b/client2/src/components/common/ui/Mask/Mask.tsx new file mode 100644 index 00000000..162b2349 --- /dev/null +++ b/client2/src/components/common/ui/Mask/Mask.tsx @@ -0,0 +1,23 @@ +import React, { FC } from 'react'; +import cn from 'classnames'; + +import s from './Mask.module.pcss'; + +interface MaskProps { + open: boolean; + handle: () => void; +} + +const Mask: FC = ({ open, handle }) => { + return ( +
+ ); +}; + +export default Mask; diff --git a/client2/src/components/common/ui/Mask/index.ts b/client2/src/components/common/ui/Mask/index.ts new file mode 100644 index 00000000..7933fa49 --- /dev/null +++ b/client2/src/components/common/ui/Mask/index.ts @@ -0,0 +1 @@ +export { default } from './Mask'; diff --git a/client2/src/components/common/ui/index.ts b/client2/src/components/common/ui/index.ts index f725111d..c505ed48 100644 --- a/client2/src/components/common/ui/index.ts +++ b/client2/src/components/common/ui/index.ts @@ -1,2 +1,6 @@ export { default as Icon } from './Icon'; export { notifyError, notifySuccess } from './Notifications'; +export { default as Link } from './Link'; +export { default as LangSelect } from './LangSelect'; +export { default as Mask } from './Mask'; +export { CommonLayout, InnerLayout, CommonModalLayout, ConfirmModalLayout } from './layouts'; diff --git a/client2/src/components/common/ui/layouts/CommonLayout.tsx b/client2/src/components/common/ui/layouts/CommonLayout.tsx new file mode 100644 index 00000000..e0c73cb3 --- /dev/null +++ b/client2/src/components/common/ui/layouts/CommonLayout.tsx @@ -0,0 +1,16 @@ +import { Layout } from 'antd'; +import React, { FC } from 'react'; + +interface CommonLayoutProps { + className?: string; +} + +const CommonLayout: FC = ({ children, className }) => { + return ( + + {children} + + ); +}; + +export default CommonLayout; diff --git a/client2/src/components/common/ui/layouts/CommonModalLayout.tsx b/client2/src/components/common/ui/layouts/CommonModalLayout.tsx new file mode 100644 index 00000000..8e62049e --- /dev/null +++ b/client2/src/components/common/ui/layouts/CommonModalLayout.tsx @@ -0,0 +1,87 @@ +import React, { FC, useContext, useEffect } from 'react'; +import { Modal, Button } from 'antd'; +import cn from 'classnames'; + +import { Icon } from 'Common/ui'; +import Store from 'Store'; + +interface CommonModalLayoutProps { + visible: boolean; + title: string; + buttonText?: string; + className?: string; + width?: number; + onClose: () => void; + onSubmit?: () => void; + noFooter?: boolean; + disabled?: boolean; + centered?: boolean; +} + +const CommonModalLayout: FC = ({ + visible, + children, + title, + buttonText, + className, + width, + onClose, + onSubmit, + noFooter, + disabled, + centered, +}) => { + const store = useContext(Store); + const { ui: { intl } } = store; + + useEffect(() => { + const onEnter = (e: KeyboardEvent) => { + if (e.key === 'Enter' && onSubmit) { + onSubmit(); + } + }; + if (onSubmit) { + window.addEventListener('keyup', onEnter); + } + return () => { + window.removeEventListener('keyup', onEnter); + }; + }, [onSubmit]); + const footer = noFooter ? null : [ + , + , + ]; + + return ( + } + width={width || 480} + centered={centered} + > + {children} + + ); +}; + +export default CommonModalLayout; diff --git a/client2/src/components/common/ui/layouts/ConfirmModalLayout.tsx b/client2/src/components/common/ui/layouts/ConfirmModalLayout.tsx new file mode 100644 index 00000000..503b858c --- /dev/null +++ b/client2/src/components/common/ui/layouts/ConfirmModalLayout.tsx @@ -0,0 +1,34 @@ +import React, { FC } from 'react'; + +import CommonModalLayout from './CommonModalLayout'; + +interface DeleteModalLayoutProps { + visible: boolean; + title: string; + buttonText: string; + onClose: () => void; + onConfirm?: () => void; +} + +const DeleteModalLayout: FC = ({ + visible, + children, + title, + buttonText, + onClose, + onConfirm, +}) => { + return ( + + {children} + + ); +}; + +export default DeleteModalLayout; diff --git a/client2/src/components/common/ui/layouts/InnerLayout.tsx b/client2/src/components/common/ui/layouts/InnerLayout.tsx new file mode 100644 index 00000000..4ecab818 --- /dev/null +++ b/client2/src/components/common/ui/layouts/InnerLayout.tsx @@ -0,0 +1,41 @@ +import { Layout } from 'antd'; +import React, { FC } from 'react'; +import cn from 'classnames'; + +import theme from 'Lib/theme'; + +interface InnerLayoutProps { + title: string; + className?: string; + containerClassName?: string; +} + +const InnerLayout: FC = ({ + children, title, className, containerClassName, +}) => { + return ( + +
+
+
+ {title} +
+
+ {children} +
+
+ ); +}; + +export default InnerLayout; diff --git a/client2/src/components/common/ui/layouts/index.ts b/client2/src/components/common/ui/layouts/index.ts new file mode 100644 index 00000000..3751f879 --- /dev/null +++ b/client2/src/components/common/ui/layouts/index.ts @@ -0,0 +1,4 @@ +export { default as CommonLayout } from './CommonLayout'; +export { default as InnerLayout } from './InnerLayout'; +export { default as ConfirmModalLayout } from './ConfirmModalLayout'; +export { default as CommonModalLayout } from './CommonModalLayout'; diff --git a/client2/src/lib/ant/Modal.pcss b/client2/src/lib/ant/Modal.pcss new file mode 100644 index 00000000..c0c98671 --- /dev/null +++ b/client2/src/lib/ant/Modal.pcss @@ -0,0 +1,47 @@ +.modal { + & .ant-modal-close-x { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + color: var(--black); + border-radius: 2px; + background-color: var(--white); + transition: background-color 0.3s; + + &:hover, + &:focus { + background-color: var(--cloud); + } + + &:active { + background-color: var(--borders-white); + } + + & svg { + width: 20px; + height: 20px; + } + + @media (--s-viewport) { + width: 40px; + height: 40px; + + & svg { + width: 24px; + height: 24px; + } + } + } + + & .ant-modal-close { + top: 11px; + right: 8px; + + @media (--s-viewport) { + top: 15px; + right: 15px; + } + } +} diff --git a/client2/src/lib/ant/Sidebar.pcss b/client2/src/lib/ant/Sidebar.pcss new file mode 100644 index 00000000..a0d55dfe --- /dev/null +++ b/client2/src/lib/ant/Sidebar.pcss @@ -0,0 +1,26 @@ +.sidebar { + position: fixed; + top: 0; + height: 100vh; + font-weight: 500; + overflow: auto; + z-index: 1041; + scrollbar-width: none; + + &::-webkit-scrollbar { + display: none; + } + + @media (--l-viewport) { + position: sticky; + z-index: 1040; + } + + & .ant-menu-item-group { + @media (--m-viewport) { + &:last-child { + margin-top: auto; + } + } + } +} \ No newline at end of file diff --git a/client2/src/lib/ant/Tabs.pcss b/client2/src/lib/ant/Tabs.pcss new file mode 100644 index 00000000..0b110210 --- /dev/null +++ b/client2/src/lib/ant/Tabs.pcss @@ -0,0 +1,45 @@ +.tabs { + border-radius: 2px; + background-color: var(--white); + + & .ant-tabs-tab { + padding: 10px 16px; + margin-right: 10px; + color: var(--gray900); + transition: color var(--transition), background var(--transition); + + &.ant-tabs-tab-active { + background-color: #E6F4EA; + } + } + + &.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab { + @media (--l-viewport) { + min-width: 230px; + margin-bottom: 7px; + padding: 10px 24px; + } + } + + &.ant-tabs-left > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane { + @media (--l-viewport) { + padding: 24px 40px; + } + } + + & .ant-tabs-nav { + margin-bottom: 0; + } + + & .ant-tabs-tabpane { + padding: 24px 16px; + } + + & .ant-tabs-nav-list { + padding: 0 16px; + + @media (--l-viewport) { + padding: 24px 0; + } + } +} diff --git a/client2/src/lib/ant/ant-overrides.less b/client2/src/lib/ant/ant-overrides.less index 1f683335..1de4b6e5 100644 --- a/client2/src/lib/ant/ant-overrides.less +++ b/client2/src/lib/ant/ant-overrides.less @@ -3,6 +3,10 @@ @text-color: #000; @link-hover-color: #4d995f; @link-active-color: #4d995f; +@text-selection-bg: #e7efff; +@layout-body-background: #f3f3f3; +@layout-header-background: #131313; +@menu-dark-submenu-bg: #131313; @font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif; @font-size-base: 14px; diff --git a/client2/src/lib/ant/ant.less b/client2/src/lib/ant/ant.less index bc24c3bc..a4e7d2ec 100644 --- a/client2/src/lib/ant/ant.less +++ b/client2/src/lib/ant/ant.less @@ -1,2 +1,6 @@ @import '~antd/dist/antd.less'; @import './ant-overrides.less'; + +::selection { + color: #000; +} diff --git a/client2/src/lib/ant/index.ts b/client2/src/lib/ant/index.ts index 7eba91c1..9fd16b8d 100644 --- a/client2/src/lib/ant/index.ts +++ b/client2/src/lib/ant/index.ts @@ -1,4 +1,7 @@ import './Radio.pcss'; +import './Sidebar.pcss'; +import './Tabs.pcss'; +import './Modal.pcss'; const insertStyles = true; export default insertStyles; diff --git a/client2/src/lib/apis/clients.ts b/client2/src/lib/apis/clients.ts index faaf22fb..187bcc9c 100644 --- a/client2/src/lib/apis/clients.ts +++ b/client2/src/lib/apis/clients.ts @@ -1,4 +1,6 @@ import qs from 'qs'; +import AccessListResponse, { IAccessListResponse } from 'Entities/AccessListResponse'; +import AccessSetRequest, { IAccessSetRequest } from 'Entities/AccessSetRequest'; import Client, { IClient } from 'Entities/Client'; import ClientDelete, { IClientDelete } from 'Entities/ClientDelete'; import ClientUpdate, { IClientUpdate } from 'Entities/ClientUpdate'; @@ -8,6 +10,40 @@ import ClientsFindEntry, { IClientsFindEntry } from 'Entities/ClientsFindEntry'; // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. export default class ClientsApi { + static async accessList(): Promise { + return await fetch(`/control/access/list`, { + method: 'GET', + }).then(async (res) => { + if (res.status === 200) { + return res.json(); + } else { + return new Error(String(res.status)); + } + }) + } + + static async accessSet(accesssetrequest: IAccessSetRequest): Promise { + const haveError: string[] = []; + const accesssetrequestValid = new AccessSetRequest(accesssetrequest); + haveError.push(...accesssetrequestValid.validate()); + if (haveError.length > 0) { + return Promise.resolve(haveError); + } + return await fetch(`/control/access/set`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(accesssetrequestValid.serialize()), + }).then(async (res) => { + if (res.status === 200) { + return res.status; + } else { + return new Error(String(res.status)); + } + }) + } + static async clientsAdd(client: IClient): Promise { const haveError: string[] = []; const clientValid = new Client(client); diff --git a/client2/src/lib/apis/dhcp.ts b/client2/src/lib/apis/dhcp.ts index 99eef065..2d2df29f 100644 --- a/client2/src/lib/apis/dhcp.ts +++ b/client2/src/lib/apis/dhcp.ts @@ -2,6 +2,7 @@ import DhcpConfig, { IDhcpConfig } from 'Entities/DhcpConfig'; import DhcpSearchResult, { IDhcpSearchResult } from 'Entities/DhcpSearchResult'; import DhcpStaticLease, { IDhcpStaticLease } from 'Entities/DhcpStaticLease'; import DhcpStatus, { IDhcpStatus } from 'Entities/DhcpStatus'; +import NetInterfaces, { INetInterfaces } from 'Entities/NetInterfaces'; // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. @@ -40,6 +41,18 @@ export default class DhcpApi { }) } + static async dhcpInterfaces(): Promise { + return await fetch(`/control/dhcp/interfaces`, { + method: 'GET', + }).then(async (res) => { + if (res.status === 200) { + return res.json(); + } else { + return new Error(String(res.status)); + } + }) + } + static async dhcpRemoveStaticLease(dhcpstaticlease: IDhcpStaticLease): Promise { const haveError: string[] = []; const dhcpstaticleaseValid = new DhcpStaticLease(dhcpstaticlease); diff --git a/client2/src/lib/apis/mobileconfig.ts b/client2/src/lib/apis/mobileconfig.ts index 0d4603c6..5abeffa0 100644 --- a/client2/src/lib/apis/mobileconfig.ts +++ b/client2/src/lib/apis/mobileconfig.ts @@ -3,9 +3,10 @@ import qs from 'qs'; // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. export default class MobileconfigApi { - static async mobileConfigDoH(host?: string): Promise { + static async mobileConfigDoH(host?: string, client_id?: string): Promise { const queryParams = { host: host, + client_id: client_id, } return await fetch(`/control/apple/doh.mobileconfig?${qs.stringify(queryParams, { arrayFormat: 'comma' })}`, { method: 'GET', @@ -18,9 +19,10 @@ export default class MobileconfigApi { }) } - static async mobileConfigDoT(host?: string): Promise { + static async mobileConfigDoT(host?: string, client_id?: string): Promise { const queryParams = { host: host, + client_id: client_id, } return await fetch(`/control/apple/dot.mobileconfig?${qs.stringify(queryParams, { arrayFormat: 'comma' })}`, { method: 'GET', diff --git a/client2/src/lib/consts/common.ts b/client2/src/lib/consts/common.ts index 77ad1796..668536b0 100644 --- a/client2/src/lib/consts/common.ts +++ b/client2/src/lib/consts/common.ts @@ -1 +1,3 @@ export const DEFAULT_NOTIFICATION_DURATION = 5; + +export const DHCP_LINK = 'https://github.com/AdguardTeam/AdGuardHome/wiki/DHCP'; diff --git a/client2/src/lib/entities/AccessList.ts b/client2/src/lib/entities/AccessList.ts new file mode 100644 index 00000000..7d127465 --- /dev/null +++ b/client2/src/lib/entities/AccessList.ts @@ -0,0 +1,76 @@ +// This file was autogenerated. Please do not change. +// All changes will be overwrited on commit. +export interface IAccessList { + allowed_clients?: string[]; + blocked_hosts?: string[]; + disallowed_clients?: string[]; +} + +export default class AccessList { + readonly _allowed_clients: string[] | undefined; + + /** */ + get allowedClients(): string[] | undefined { + return this._allowed_clients; + } + + readonly _blocked_hosts: string[] | undefined; + + /** */ + get blockedHosts(): string[] | undefined { + return this._blocked_hosts; + } + + readonly _disallowed_clients: string[] | undefined; + + /** */ + get disallowedClients(): string[] | undefined { + return this._disallowed_clients; + } + + constructor(props: IAccessList) { + if (props.allowed_clients) { + this._allowed_clients = props.allowed_clients; + } + if (props.blocked_hosts) { + this._blocked_hosts = props.blocked_hosts; + } + if (props.disallowed_clients) { + this._disallowed_clients = props.disallowed_clients; + } + } + + serialize(): IAccessList { + const data: IAccessList = { + }; + if (typeof this._allowed_clients !== 'undefined') { + data.allowed_clients = this._allowed_clients; + } + if (typeof this._blocked_hosts !== 'undefined') { + data.blocked_hosts = this._blocked_hosts; + } + if (typeof this._disallowed_clients !== 'undefined') { + data.disallowed_clients = this._disallowed_clients; + } + return data; + } + + validate(): string[] { + const validate = { + allowed_clients: !this._allowed_clients ? true : this._allowed_clients.reduce((result, p) => result && typeof p === 'string', true), + disallowed_clients: !this._disallowed_clients ? true : this._disallowed_clients.reduce((result, p) => result && typeof p === 'string', true), + blocked_hosts: !this._blocked_hosts ? true : this._blocked_hosts.reduce((result, p) => result && typeof p === 'string', true), + }; + const isError: string[] = []; + Object.keys(validate).forEach((key) => { + if (!(validate as any)[key]) { + isError.push(key); + } + }); + return isError; + } + + update(props: Partial): AccessList { + return new AccessList({ ...this.serialize(), ...props }); + } +} diff --git a/client2/src/lib/entities/AccessListResponse.ts b/client2/src/lib/entities/AccessListResponse.ts new file mode 100644 index 00000000..c4443f0a --- /dev/null +++ b/client2/src/lib/entities/AccessListResponse.ts @@ -0,0 +1,6 @@ +import AccessList, { IAccessList } from './AccessList'; + +// This file was autogenerated. Please do not change. +// All changes will be overwrited on commit. +export type IAccessListResponse = IAccessList; +export default AccessList; diff --git a/client2/src/lib/entities/AccessSetRequest.ts b/client2/src/lib/entities/AccessSetRequest.ts new file mode 100644 index 00000000..45ebbab1 --- /dev/null +++ b/client2/src/lib/entities/AccessSetRequest.ts @@ -0,0 +1,6 @@ +import AccessList, { IAccessList } from './AccessList'; + +// This file was autogenerated. Please do not change. +// All changes will be overwrited on commit. +export type IAccessSetRequest = IAccessList; +export default AccessList; diff --git a/client2/src/lib/entities/AddressesInfo.ts b/client2/src/lib/entities/AddressesInfo.ts index dc814eeb..af864b17 100644 --- a/client2/src/lib/entities/AddressesInfo.ts +++ b/client2/src/lib/entities/AddressesInfo.ts @@ -1,10 +1,10 @@ -import NetInterface, { INetInterface } from './NetInterface'; +import NetInterfaces, { INetInterfaces } from './NetInterfaces'; // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. export interface IAddressesInfo { dns_port: number; - interfaces: { [key: string]: INetInterface }; + interfaces: INetInterfaces; web_port: number; } @@ -23,10 +23,9 @@ export default class AddressesInfo { return typeof dnsPort === 'number'; } - readonly _interfaces: { [key: string]: NetInterface }; + readonly _interfaces: NetInterfaces; - /** */ - get interfaces(): { [key: string]: NetInterface } { + get interfaces(): NetInterfaces { return this._interfaces; } @@ -46,16 +45,14 @@ export default class AddressesInfo { constructor(props: IAddressesInfo) { this._dns_port = props.dns_port; - this._interfaces = Object.keys(props.interfaces).reduce((prev, key) => { - return { ...prev, [key]: new NetInterface(props.interfaces[key])}; - },{}) + this._interfaces = new NetInterfaces(props.interfaces); this._web_port = props.web_port; } serialize(): IAddressesInfo { const data: IAddressesInfo = { dns_port: this._dns_port, - interfaces: Object.keys(this._interfaces).reduce>((prev, key) => ({ ...prev, [key]: this._interfaces[key].serialize() }), {}), + interfaces: this._interfaces.serialize(), web_port: this._web_port, }; return data; @@ -65,6 +62,7 @@ export default class AddressesInfo { const validate = { dns_port: typeof this._dns_port === 'number', web_port: typeof this._web_port === 'number', + interfaces: this._interfaces.validate().length === 0, }; const isError: string[] = []; Object.keys(validate).forEach((key) => { diff --git a/client2/src/lib/entities/ClientFindSubEntry.ts b/client2/src/lib/entities/ClientFindSubEntry.ts index 670d2da3..8d067549 100644 --- a/client2/src/lib/entities/ClientFindSubEntry.ts +++ b/client2/src/lib/entities/ClientFindSubEntry.ts @@ -15,7 +15,7 @@ export interface IClientFindSubEntry { upstreams?: string[]; use_global_blocked_services?: boolean; use_global_settings?: boolean; - whois_info?: IWhoisInfo[]; + whois_info?: IWhoisInfo; } export default class ClientFindSubEntry { @@ -98,9 +98,9 @@ export default class ClientFindSubEntry { return this._use_global_settings; } - readonly _whois_info: WhoisInfo[] | undefined; + readonly _whois_info: WhoisInfo | undefined; - get whoisInfo(): WhoisInfo[] | undefined { + get whoisInfo(): WhoisInfo | undefined { return this._whois_info; } @@ -142,7 +142,7 @@ export default class ClientFindSubEntry { this._use_global_settings = props.use_global_settings; } if (props.whois_info) { - this._whois_info = props.whois_info.map((p) => new WhoisInfo(p)); + this._whois_info = new WhoisInfo(props.whois_info); } } @@ -186,7 +186,7 @@ export default class ClientFindSubEntry { data.use_global_settings = this._use_global_settings; } if (typeof this._whois_info !== 'undefined') { - data.whois_info = this._whois_info.map((p) => p.serialize()); + data.whois_info = this._whois_info.serialize(); } return data; } @@ -203,7 +203,7 @@ export default class ClientFindSubEntry { use_global_blocked_services: !this._use_global_blocked_services ? true : typeof this._use_global_blocked_services === 'boolean', blocked_services: !this._blocked_services ? true : this._blocked_services.reduce((result, p) => result && typeof p === 'string', true), upstreams: !this._upstreams ? true : this._upstreams.reduce((result, p) => result && typeof p === 'string', true), - whois_info: !this._whois_info ? true : this._whois_info.reduce((result, p) => result && p.validate().length === 0, true), + whois_info: !this._whois_info ? true : this._whois_info.validate().length === 0, disallowed: !this._disallowed ? true : typeof this._disallowed === 'boolean', disallowed_rule: !this._disallowed_rule ? true : typeof this._disallowed_rule === 'string' && !this._disallowed_rule ? true : this._disallowed_rule, }; diff --git a/client2/src/lib/entities/ClientsFindEntry.ts b/client2/src/lib/entities/ClientsFindEntry.ts index 9dd3099c..8b220a78 100644 --- a/client2/src/lib/entities/ClientsFindEntry.ts +++ b/client2/src/lib/entities/ClientsFindEntry.ts @@ -1,31 +1,33 @@ +import ClientFindSubEntry, { IClientFindSubEntry } from './ClientFindSubEntry'; + // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. export interface IClientsFindEntry { + [key: string]: IClientFindSubEntry; } export default class ClientsFindEntry { + readonly data: Record; + constructor(props: IClientsFindEntry) { + this.data = Object.entries(props).reduce>((prev, [key, value]) => { + prev[key] = new ClientFindSubEntry(value!); + return prev; + }, {}) } serialize(): IClientsFindEntry { - const data: IClientsFindEntry = { - }; - return data; + return Object.entries(this.data).reduce>((prev, [key, value]) => { + prev[key] = value.serialize(); + return prev; + }, {}) } validate(): string[] { - const validate = { - }; - const isError: string[] = []; - Object.keys(validate).forEach((key) => { - if (!(validate as any)[key]) { - isError.push(key); - } - }); - return isError; + return [] } - update(props: Partial): ClientsFindEntry { + update(props: IClientsFindEntry): ClientsFindEntry { return new ClientsFindEntry({ ...this.serialize(), ...props }); } } diff --git a/client2/src/lib/entities/DhcpSearchResultOtherServer.ts b/client2/src/lib/entities/DhcpSearchResultOtherServer.ts index 36f2bc64..be50bbdd 100644 --- a/client2/src/lib/entities/DhcpSearchResultOtherServer.ts +++ b/client2/src/lib/entities/DhcpSearchResultOtherServer.ts @@ -16,7 +16,8 @@ export default class DhcpSearchResultOtherServer { readonly _found: string | undefined; /** - * Description: yes|no|error + * Description: The result of searching the other DHCP server. + * * Example: no */ get found(): string | undefined { diff --git a/client2/src/lib/entities/DhcpSearchResultStaticIP.ts b/client2/src/lib/entities/DhcpSearchResultStaticIP.ts index 7b27411a..f3fc2155 100644 --- a/client2/src/lib/entities/DhcpSearchResultStaticIP.ts +++ b/client2/src/lib/entities/DhcpSearchResultStaticIP.ts @@ -16,7 +16,8 @@ export default class DhcpSearchResultStaticIP { readonly _static: string | undefined; /** - * Description: yes|no|error + * Description: The result of determining static IP address. + * * Example: yes */ get static(): string | undefined { diff --git a/client2/src/lib/entities/Filter.ts b/client2/src/lib/entities/Filter.ts index 71255c8c..c7f3ff87 100644 --- a/client2/src/lib/entities/Filter.ts +++ b/client2/src/lib/entities/Filter.ts @@ -3,9 +3,9 @@ export interface IFilter { enabled: boolean; id: number; - lastUpdated: string; + last_updated: string; name: string; - rulesCount: number; + rules_count: number; url: string; } @@ -34,14 +34,14 @@ export default class Filter { return typeof id === 'number'; } - readonly _lastUpdated: string; + readonly _last_updated: string; /** * Description: undefined * Example: 2018-10-30T12:18:57+03:00 */ get lastUpdated(): string { - return this._lastUpdated; + return this._last_updated; } static lastUpdatedValidate(lastUpdated: string): boolean { @@ -62,14 +62,14 @@ export default class Filter { return typeof name === 'string' && !!name.trim(); } - readonly _rulesCount: number; + readonly _rules_count: number; /** * Description: undefined * Example: 5912 */ get rulesCount(): number { - return this._rulesCount; + return this._rules_count; } static rulesCountValidate(rulesCount: number): boolean { @@ -94,9 +94,9 @@ export default class Filter { constructor(props: IFilter) { this._enabled = props.enabled; this._id = props.id; - this._lastUpdated = props.lastUpdated.trim(); + this._last_updated = props.last_updated.trim(); this._name = props.name.trim(); - this._rulesCount = props.rulesCount; + this._rules_count = props.rules_count; this._url = props.url.trim(); } @@ -104,9 +104,9 @@ export default class Filter { const data: IFilter = { enabled: this._enabled, id: this._id, - lastUpdated: this._lastUpdated, + last_updated: this._last_updated, name: this._name, - rulesCount: this._rulesCount, + rules_count: this._rules_count, url: this._url, }; return data; @@ -116,9 +116,9 @@ export default class Filter { const validate = { enabled: typeof this._enabled === 'boolean', id: typeof this._id === 'number', - lastUpdated: typeof this._lastUpdated === 'string' && !this._lastUpdated ? true : this._lastUpdated, + last_updated: typeof this._last_updated === 'string' && !this._last_updated ? true : this._last_updated, name: typeof this._name === 'string' && !this._name ? true : this._name, - rulesCount: typeof this._rulesCount === 'number', + rules_count: typeof this._rules_count === 'number', url: typeof this._url === 'string' && !this._url ? true : this._url, }; const isError: string[] = []; diff --git a/client2/src/lib/entities/Login.ts b/client2/src/lib/entities/Login.ts index 9b642f45..808c6f6e 100644 --- a/client2/src/lib/entities/Login.ts +++ b/client2/src/lib/entities/Login.ts @@ -1,11 +1,18 @@ // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. export interface ILogin { + name?: string; password?: string; - username?: string; } export default class Login { + readonly _name: string | undefined; + + /** */ + get name(): string | undefined { + return this._name; + } + readonly _password: string | undefined; /** */ @@ -13,37 +20,30 @@ export default class Login { return this._password; } - readonly _username: string | undefined; - - /** */ - get username(): string | undefined { - return this._username; - } - constructor(props: ILogin) { + if (typeof props.name === 'string') { + this._name = props.name.trim(); + } if (typeof props.password === 'string') { this._password = props.password.trim(); } - if (typeof props.username === 'string') { - this._username = props.username.trim(); - } } serialize(): ILogin { const data: ILogin = { }; + if (typeof this._name !== 'undefined') { + data.name = this._name; + } if (typeof this._password !== 'undefined') { data.password = this._password; } - if (typeof this._username !== 'undefined') { - data.username = this._username; - } return data; } validate(): string[] { const validate = { - username: !this._username ? true : typeof this._username === 'string' && !this._username ? true : this._username, + name: !this._name ? true : typeof this._name === 'string' && !this._name ? true : this._name, password: !this._password ? true : typeof this._password === 'string' && !this._password ? true : this._password, }; const isError: string[] = []; diff --git a/client2/src/lib/entities/NetInterface.ts b/client2/src/lib/entities/NetInterface.ts index 3f3d6e3e..c11d7a2c 100644 --- a/client2/src/lib/entities/NetInterface.ts +++ b/client2/src/lib/entities/NetInterface.ts @@ -12,7 +12,8 @@ export default class NetInterface { readonly _flags: string; /** - * Description: undefined + * Description: Flags could be any combination of the following values, divided by the "|" character: "up", "broadcast", "loopback", "pointtopoint" and "multicast". + * * Example: up|broadcast|multicast */ get flags(): string { diff --git a/client2/src/lib/entities/NetInterfaces.ts b/client2/src/lib/entities/NetInterfaces.ts new file mode 100644 index 00000000..29a33304 --- /dev/null +++ b/client2/src/lib/entities/NetInterfaces.ts @@ -0,0 +1,33 @@ +import NetInterface, { INetInterface } from './NetInterface'; + +// This file was autogenerated. Please do not change. +// All changes will be overwrited on commit. +export interface INetInterfaces { + [key: string]: INetInterface; +} + +export default class NetInterfaces { + readonly data: Record; + + constructor(props: INetInterfaces) { + this.data = Object.entries(props).reduce>((prev, [key, value]) => { + prev[key] = new NetInterface(value!); + return prev; + }, {}) + } + + serialize(): INetInterfaces { + return Object.entries(this.data).reduce>((prev, [key, value]) => { + prev[key] = value.serialize(); + return prev; + }, {}) + } + + validate(): string[] { + return [] + } + + update(props: INetInterfaces): NetInterfaces { + return new NetInterfaces({ ...this.serialize(), ...props }); + } +} diff --git a/client2/src/lib/entities/QueryLogItem.ts b/client2/src/lib/entities/QueryLogItem.ts index caf7819c..6dffead3 100644 --- a/client2/src/lib/entities/QueryLogItem.ts +++ b/client2/src/lib/entities/QueryLogItem.ts @@ -8,6 +8,7 @@ export interface IQueryLogItem { answer?: IDnsAnswer[]; answer_dnssec?: boolean; client?: string; + client_id?: string; client_proto?: any; elapsedMs?: string; filterId?: number; @@ -38,13 +39,25 @@ export default class QueryLogItem { readonly _client: string | undefined; /** - * Description: undefined + * Description: The client's IP address. + * * Example: 192.168.0.1 */ get client(): string | undefined { return this._client; } + readonly _client_id: string | undefined; + + /** + * Description: The client ID, if provided in DOH, DOQ, or DOT. + * + * Example: cli123 + */ + get clientId(): string | undefined { + return this._client_id; + } + readonly _client_proto: any | undefined; get clientProto(): any | undefined { @@ -156,6 +169,9 @@ export default class QueryLogItem { if (typeof props.client === 'string') { this._client = props.client.trim(); } + if (typeof props.client_id === 'string') { + this._client_id = props.client_id.trim(); + } if (props.client_proto) { this._client_proto = props.client_proto; } @@ -206,6 +222,9 @@ export default class QueryLogItem { if (typeof this._client !== 'undefined') { data.client = this._client; } + if (typeof this._client_id !== 'undefined') { + data.client_id = this._client_id; + } if (typeof this._client_proto !== 'undefined') { data.client_proto = this._client_proto; } @@ -252,6 +271,7 @@ export default class QueryLogItem { upstream: !this._upstream ? true : typeof this._upstream === 'string' && !this._upstream ? true : this._upstream, answer_dnssec: !this._answer_dnssec ? true : typeof this._answer_dnssec === 'boolean', client: !this._client ? true : typeof this._client === 'string' && !this._client ? true : this._client, + client_id: !this._client_id ? true : typeof this._client_id === 'string' && !this._client_id ? true : this._client_id, elapsedMs: !this._elapsedMs ? true : typeof this._elapsedMs === 'string' && !this._elapsedMs ? true : this._elapsedMs, question: !this._question ? true : this._question.validate().length === 0, filterId: !this._filterId ? true : typeof this._filterId === 'number', diff --git a/client2/src/lib/entities/ServerStatus.ts b/client2/src/lib/entities/ServerStatus.ts index a17df251..d70f0adf 100644 --- a/client2/src/lib/entities/ServerStatus.ts +++ b/client2/src/lib/entities/ServerStatus.ts @@ -2,11 +2,11 @@ // All changes will be overwrited on commit. export interface IServerStatus { dhcp_available?: boolean; - dns_address: string; + dns_addresses: string[]; dns_port: number; + http_port: number; language: string; protection_enabled: boolean; - querylog_enabled: boolean; running: boolean; version: string; } @@ -18,18 +18,18 @@ export default class ServerStatus { return this._dhcp_available; } - readonly _dns_address: string; + readonly _dns_addresses: string[]; /** * Description: undefined * Example: 127.0.0.1 */ - get dnsAddress(): string { - return this._dns_address; + get dnsAddresses(): string[] { + return this._dns_addresses; } - static dnsAddressValidate(dnsAddress: string): boolean { - return typeof dnsAddress === 'string' && !!dnsAddress.trim(); + static dnsAddressesValidate(dnsAddresses: string[]): boolean { + return dnsAddresses.reduce((result, p) => result && (typeof p === 'string' && !!p.trim()), true); } readonly _dns_port: number; @@ -54,6 +54,28 @@ export default class ServerStatus { return dnsPort >= 1 && dnsPort <= 65535; } + readonly _http_port: number; + + /** + * Description: undefined + * Example: 80 + */ + get httpPort(): number { + return this._http_port; + } + + static get httpPortMinValue() { + return 1; + } + + static get httpPortMaxValue() { + return 65535; + } + + static httpPortValidate(httpPort: number): boolean { + return httpPort >= 1 && httpPort <= 65535; + } + readonly _language: string; /** @@ -78,16 +100,6 @@ export default class ServerStatus { return typeof protectionEnabled === 'boolean'; } - readonly _querylog_enabled: boolean; - - get querylogEnabled(): boolean { - return this._querylog_enabled; - } - - static querylogEnabledValidate(querylogEnabled: boolean): boolean { - return typeof querylogEnabled === 'boolean'; - } - readonly _running: boolean; get running(): boolean { @@ -116,22 +128,22 @@ export default class ServerStatus { if (typeof props.dhcp_available === 'boolean') { this._dhcp_available = props.dhcp_available; } - this._dns_address = props.dns_address.trim(); + this._dns_addresses = props.dns_addresses; this._dns_port = props.dns_port; + this._http_port = props.http_port; this._language = props.language.trim(); this._protection_enabled = props.protection_enabled; - this._querylog_enabled = props.querylog_enabled; this._running = props.running; this._version = props.version.trim(); } serialize(): IServerStatus { const data: IServerStatus = { - dns_address: this._dns_address, + dns_addresses: this._dns_addresses, dns_port: this._dns_port, + http_port: this._http_port, language: this._language, protection_enabled: this._protection_enabled, - querylog_enabled: this._querylog_enabled, running: this._running, version: this._version, }; @@ -143,11 +155,11 @@ export default class ServerStatus { validate(): string[] { const validate = { - dns_address: typeof this._dns_address === 'string' && !this._dns_address ? true : this._dns_address, + dns_addresses: this._dns_addresses.reduce((result, p) => result && typeof p === 'string', true), dns_port: this._dns_port >= 1 && this._dns_port <= 65535, + http_port: this._http_port >= 1 && this._http_port <= 65535, protection_enabled: typeof this._protection_enabled === 'boolean', dhcp_available: !this._dhcp_available ? true : typeof this._dhcp_available === 'boolean', - querylog_enabled: typeof this._querylog_enabled === 'boolean', running: typeof this._running === 'boolean', version: typeof this._version === 'string' && !this._version ? true : this._version, language: typeof this._language === 'string' && !this._language ? true : this._language, diff --git a/client2/src/lib/entities/Stats.ts b/client2/src/lib/entities/Stats.ts index 6f01139d..bae0e1b5 100644 --- a/client2/src/lib/entities/Stats.ts +++ b/client2/src/lib/entities/Stats.ts @@ -107,7 +107,7 @@ export default class Stats { readonly _time_units: string | undefined; /** - * Description: Time units (hours | days) + * Description: Time units * Example: hours */ get timeUnits(): string | undefined { diff --git a/client2/src/lib/entities/TopArrayEntry.ts b/client2/src/lib/entities/TopArrayEntry.ts index 52916fd2..2720683a 100644 --- a/client2/src/lib/entities/TopArrayEntry.ts +++ b/client2/src/lib/entities/TopArrayEntry.ts @@ -2,6 +2,7 @@ // All changes will be overwrited on commit. export interface ITopArrayEntry { domain_or_ip?: number; + [key: string]: number | undefined; } export default class TopArrayEntry { @@ -11,19 +12,20 @@ export default class TopArrayEntry { return this._domain_or_ip; } + readonly numberData: Record; + constructor(props: ITopArrayEntry) { - if (typeof props.domain_or_ip === 'number') { - this._domain_or_ip = props.domain_or_ip; - } + this.numberData = Object.entries(props).reduce>((prev, [key, value]) => { + prev[key] = value!; + return prev; + }, {}) } serialize(): ITopArrayEntry { - const data: ITopArrayEntry = { - }; - if (typeof this._domain_or_ip !== 'undefined') { - data.domain_or_ip = this._domain_or_ip; - } - return data; + return Object.entries(this.numberData).reduce>((prev, [key, value]) => { + prev[key] = value; + return prev; + }, {}) } validate(): string[] { diff --git a/client2/src/lib/entities/UpstreamsConfigResponse.ts b/client2/src/lib/entities/UpstreamsConfigResponse.ts index 9b342400..5d827a7e 100644 --- a/client2/src/lib/entities/UpstreamsConfigResponse.ts +++ b/client2/src/lib/entities/UpstreamsConfigResponse.ts @@ -1,31 +1,31 @@ // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. export interface IUpstreamsConfigResponse { + [key: string]: string; } export default class UpstreamsConfigResponse { + readonly data: Record; + constructor(props: IUpstreamsConfigResponse) { + this.data = Object.entries(props).reduce>((prev, [key, value]) => { + prev[key] = value!; + return prev; + }, {}) } serialize(): IUpstreamsConfigResponse { - const data: IUpstreamsConfigResponse = { - }; - return data; + return Object.entries(this.data).reduce>((prev, [key, value]) => { + prev[key] = value; + return prev; + }, {}) } validate(): string[] { - const validate = { - }; - const isError: string[] = []; - Object.keys(validate).forEach((key) => { - if (!(validate as any)[key]) { - isError.push(key); - } - }); - return isError; + return [] } - update(props: Partial): UpstreamsConfigResponse { + update(props: IUpstreamsConfigResponse): UpstreamsConfigResponse { return new UpstreamsConfigResponse({ ...this.serialize(), ...props }); } } diff --git a/client2/src/lib/entities/VersionInfo.ts b/client2/src/lib/entities/VersionInfo.ts index 7df508ea..59d4b937 100644 --- a/client2/src/lib/entities/VersionInfo.ts +++ b/client2/src/lib/entities/VersionInfo.ts @@ -4,6 +4,7 @@ export interface IVersionInfo { announcement?: string; announcement_url?: string; can_autoupdate?: boolean; + disabled: boolean; new_version?: string; } @@ -35,6 +36,17 @@ export default class VersionInfo { return this._can_autoupdate; } + readonly _disabled: boolean; + + /** */ + get disabled(): boolean { + return this._disabled; + } + + static disabledValidate(disabled: boolean): boolean { + return typeof disabled === 'boolean'; + } + readonly _new_version: string | undefined; /** @@ -55,6 +67,7 @@ export default class VersionInfo { if (typeof props.can_autoupdate === 'boolean') { this._can_autoupdate = props.can_autoupdate; } + this._disabled = props.disabled; if (typeof props.new_version === 'string') { this._new_version = props.new_version.trim(); } @@ -62,6 +75,7 @@ export default class VersionInfo { serialize(): IVersionInfo { const data: IVersionInfo = { + disabled: this._disabled, }; if (typeof this._announcement !== 'undefined') { data.announcement = this._announcement; @@ -80,6 +94,7 @@ export default class VersionInfo { validate(): string[] { const validate = { + disabled: typeof this._disabled === 'boolean', new_version: !this._new_version ? true : typeof this._new_version === 'string' && !this._new_version ? true : this._new_version, announcement: !this._announcement ? true : typeof this._announcement === 'string' && !this._announcement ? true : this._announcement, announcement_url: !this._announcement_url ? true : typeof this._announcement_url === 'string' && !this._announcement_url ? true : this._announcement_url, diff --git a/client2/src/lib/entities/WhoisInfo.ts b/client2/src/lib/entities/WhoisInfo.ts index f0f2db74..aa5ee628 100644 --- a/client2/src/lib/entities/WhoisInfo.ts +++ b/client2/src/lib/entities/WhoisInfo.ts @@ -1,45 +1,31 @@ // This file was autogenerated. Please do not change. // All changes will be overwrited on commit. export interface IWhoisInfo { - key?: string; + [key: string]: string; } export default class WhoisInfo { - readonly _key: string | undefined; - - get key(): string | undefined { - return this._key; - } + readonly data: Record; constructor(props: IWhoisInfo) { - if (typeof props.key === 'string') { - this._key = props.key.trim(); - } + this.data = Object.entries(props).reduce>((prev, [key, value]) => { + prev[key] = value!; + return prev; + }, {}) } serialize(): IWhoisInfo { - const data: IWhoisInfo = { - }; - if (typeof this._key !== 'undefined') { - data.key = this._key; - } - return data; + return Object.entries(this.data).reduce>((prev, [key, value]) => { + prev[key] = value; + return prev; + }, {}) } validate(): string[] { - const validate = { - key: !this._key ? true : typeof this._key === 'string' && !this._key ? true : this._key, - }; - const isError: string[] = []; - Object.keys(validate).forEach((key) => { - if (!(validate as any)[key]) { - isError.push(key); - } - }); - return isError; + return [] } - update(props: Partial): WhoisInfo { + update(props: IWhoisInfo): WhoisInfo { return new WhoisInfo({ ...this.serialize(), ...props }); } } diff --git a/client2/src/lib/theme/Content.module.pcss b/client2/src/lib/theme/Content.module.pcss new file mode 100644 index 00000000..8f2246df --- /dev/null +++ b/client2/src/lib/theme/Content.module.pcss @@ -0,0 +1,51 @@ +.content { + min-height: 100vh; + + &_auth { + @media (--m-viewport) { + background-color: var(--gray100); + background-image: url('../../assets/img/install.png'); + background-position: center 20px; + background-repeat: no-repeat; + background-size: 100%; + } + } + + &_inner { + min-height: calc(100vh - var(--header-height)); + } +} + +.container { + width: 100%; + margin: 0 auto; + padding: 16px; + + @media (--l-viewport) { + padding: 24px; + } + + &_auth { + max-width: 432px; + padding: 24px 16px 40px; + + @media (--m-viewport) { + padding: 40px 16px; + } + } +} + +.header { + margin-bottom: 16px; + padding: 0 16px; + + @media (--m-viewport) { + margin-bottom: 24px; + padding: 0 24px; + } +} + +.title { + font-size: 16px; + font-weight: 600; +} diff --git a/client2/src/lib/theme/Install.module.pcss b/client2/src/lib/theme/Install.module.pcss index 5e000bbb..39b5d682 100644 --- a/client2/src/lib/theme/Install.module.pcss +++ b/client2/src/lib/theme/Install.module.pcss @@ -1,26 +1,3 @@ -.layout { - min-height: 100vh; - background-color: var(--gray100); - - @media (--m-viewport) { - background-image: url('../../assets/img/install.png'); - background-position: center 20px; - background-repeat: no-repeat; - background-size: 100%; - } -} - -.container { - width: 100%; - max-width: 432px; - margin: 0 auto; - padding: 24px 16px 40px; - - @media (--m-viewport) { - padding: 40px 16px; - } -} - .title, .subtitle, .text { diff --git a/client2/src/lib/theme/Link.module.pcss b/client2/src/lib/theme/Link.module.pcss index d3731b42..b0751d90 100644 --- a/client2/src/lib/theme/Link.module.pcss +++ b/client2/src/lib/theme/Link.module.pcss @@ -11,4 +11,17 @@ &:active { color: var(--green400); } + + &.gray { + color: var(--gray900); + + &:hover, + &:focus { + color: var(--gray700); + } + + &:active { + color: var(--gray700); + } + } } diff --git a/client2/src/lib/theme/Text.module.pcss b/client2/src/lib/theme/Text.module.pcss index 5ff8bf11..55a5f4e3 100644 --- a/client2/src/lib/theme/Text.module.pcss +++ b/client2/src/lib/theme/Text.module.pcss @@ -22,8 +22,20 @@ font-weight: 400; } +.code { + padding: 3px 5px; + font-size: 14px; + font-family: var(--font-family-monospace); + background-color: var(--gray300); + border-radius: 2px; +} + .danger { text-transform: uppercase; color: var(--red400); font-weight: bold; } + +.center { + text-align: center; +} diff --git a/client2/src/lib/theme/colors.ts b/client2/src/lib/theme/colors.ts new file mode 100644 index 00000000..09b157b8 --- /dev/null +++ b/client2/src/lib/theme/colors.ts @@ -0,0 +1,8 @@ +export const colors = { + red: '#c23814', + orange: '#eb9300', + purple: '#b267a0', + green: '#67b279', + gray300: '#d8d8d8', + gray700: '#888888', +}; diff --git a/client2/src/lib/theme/index.ts b/client2/src/lib/theme/index.ts index d60feaca..c215d1a0 100644 --- a/client2/src/lib/theme/index.ts +++ b/client2/src/lib/theme/index.ts @@ -2,12 +2,17 @@ import form from './Form.module.pcss'; import text from './Text.module.pcss'; import install from './Install.module.pcss'; import link from './Link.module.pcss'; +import content from './Content.module.pcss'; + +import { colors } from './colors'; const theme = { form, + chartColors: colors, text, install, link, + content, }; export default theme; diff --git a/client2/src/localization/Translator/Translator.ts b/client2/src/localization/Translator/Translator.ts deleted file mode 100644 index 06b50cd1..00000000 --- a/client2/src/localization/Translator/Translator.ts +++ /dev/null @@ -1,82 +0,0 @@ -import translator from './lib/translator'; -import { AllowedValues } from './lib/formatter'; -import { getForm, GenericLocales, AvailableLocales } from './lib/plural'; - -type ExternalFormater = (data: any) => any; - -class Translator { - private _currentLocale: Locale; - - private _formatter: ExternalFormater = (data: string[]) => data.join(''); - - get currentLocale() { - return this._currentLocale; - } - - defaultLocale: Locale; - - updateTranslator = (locale: Locale) => { - return new Translator( - this.defaultLocale, - this.messages, - locale, - this._formatter, - ); - }; - - messages: Record; - - constructor( - defaultLocale: Locale, - messages: Record, - currentLocale?: Locale, - formatter?: ExternalFormater, - ) { - this.defaultLocale = defaultLocale; - this._currentLocale = currentLocale ?? defaultLocale; - this.messages = messages; - - if (formatter) { - this._formatter = formatter; - } - } - - public getMessage( - id: string, - params: AllowedValues = {}, - ): string { - const str = this.messages[this._currentLocale][id] - || this.messages[this.defaultLocale][id] - || id; - - const tranlation = translator(str, params); - return this._formatter(tranlation); - } - - public getPlural( - id: string, - number: number, - params: AllowedValues = {}, - ): string { - let locale: Locale | null = null; - if (this.messages[this._currentLocale][id]) { - locale = this._currentLocale; - } else if (this.messages[this.defaultLocale][id]) { - locale = this.defaultLocale; - } - const str = this.messages[this._currentLocale][id] - || this.messages[this.defaultLocale][id] - || id; - - if (!locale) { - throw new Error(`No translation for id: ${id}, neither in current locale: ${this._currentLocale} nor defaulkt locale ${this.defaultLocale}`); - } - - return this._formatter(translator( - getForm(str, number, locale as AvailableLocales, id), - { count: number, ...params }, - )); - } -} - -export default Translator; diff --git a/client2/src/localization/Translator/index.ts b/client2/src/localization/Translator/index.ts deleted file mode 100644 index 87f17fbc..00000000 --- a/client2/src/localization/Translator/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default } from './Translator'; -export { SupportedLangs, GenericLocales, AvailableLocales, checkFormsExternal as checkForms } from './lib/plural'; diff --git a/client2/src/localization/Translator/lib/formatter.ts b/client2/src/localization/Translator/lib/formatter.ts deleted file mode 100644 index 15735f6a..00000000 --- a/client2/src/localization/Translator/lib/formatter.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { - isTextNode, - isTagNode, - isPlaceholderNode, - isVoidTagNode, - NODE, -} from './nodes'; - -/** - * Checks if target is function - * @param target - * @returns {boolean} - */ -const isFunction = (target: any) => { - return typeof target === 'function'; -}; - -type FormatingFunc = (chunks: string) => T; -export type AllowedValues = Record>; - -/** - * This function accepts an AST (abstract syntax tree) which is a result - * of the parser function call, and converts tree nodes into array of strings replacing node - * values with provided values. - * Values is a map with functions or strings, where each key is related to placeholder value - * or tag value - * e.g. - * string "text tag text %placeholder%" is parsed into next AST - * - * [ - * { type: 'text', value: 'text ' }, - * { - * type: 'tag', - * value: 'tag', - * children: [{ type: 'text', value: 'tag text' }], - * }, - * { type: 'text', value: ' ' }, - * { type: 'placeholder', value: 'placeholder' } - * ]; - * - * this AST after format and next values - * - * { - * // here used template strings, but it can be react components as well - * tag: (chunks) => `${chunks}`, - * placeholder: 'placeholder text' - * } - * - * will return next array - * - * [ 'text ', 'tag text', ' ', 'placeholder text' ] - * - * as you can see, was replaced by , and placeholder was replaced by placeholder text - * - * @param ast - AST (abstract syntax tree) - * @param values - * @returns {[]} - */ -const format = (ast: NODE[], values: AllowedValues) => { - const result: (string | T)[] = []; - let i = 0; - while (i < ast.length) { - const currentNode = ast[i]; - // if current node is text node, there is nothing to change, append value to the result - if (isTextNode(currentNode)) { - result.push(currentNode.value); - } else if (isTagNode(currentNode)) { - const children = [...format(currentNode.children ? currentNode.children : [], values)].join(''); - const value = values[currentNode.value]; - if (typeof value === 'string' || typeof value === 'number' || typeof value === 'function') { - if (isFunction(value)) { - result.push((value as FormatingFunc)(children)); - } else { - result.push(value.toString()); - } - } else { - throw new Error(`Value ${currentNode.value} wasn't provided`); - } - } else if (isVoidTagNode(currentNode)) { - const value = values[currentNode.value]; - if (typeof value === 'string' || typeof value === 'number') { - result.push(value.toString()); - } else { - throw new Error(`Value ${currentNode.value} wasn't provided`); - } - } else if (isPlaceholderNode(currentNode)) { - const value = values[currentNode.value]; - if (typeof value === 'string' || typeof value === 'number') { - result.push(value.toString()); - } else { - throw new Error(`Value ${currentNode.value} wasn't provided`); - } - } - i += 1; - } - - return result; -}; - -export default format; diff --git a/client2/src/localization/Translator/lib/nodes.ts b/client2/src/localization/Translator/lib/nodes.ts deleted file mode 100644 index 20f3835a..00000000 --- a/client2/src/localization/Translator/lib/nodes.ts +++ /dev/null @@ -1,50 +0,0 @@ -export enum NODE_TYPES { - PLACEHOLDER = 'placeholder', - TEXT = 'text', - TAG = 'tag', - VOID_TAG = 'void_tag', -} - -export interface NODE { - type: NODE_TYPES; - value: string | keyof HTMLElementTagNameMap; - children?: NODE[]; -} - -export const isTextNode = (node: NODE) => { - return node?.type === NODE_TYPES.TEXT; -}; - -export const isTagNode = (node: NODE) => { - return node?.type === NODE_TYPES.TAG; -}; - -export const isPlaceholderNode = (node: NODE) => { - return node?.type === NODE_TYPES.PLACEHOLDER; -}; - -export const isVoidTagNode = (node: NODE) => { - return node?.type === NODE_TYPES.VOID_TAG; -}; - -export const placeholderNode = (value: string) => { - return { type: NODE_TYPES.PLACEHOLDER, value }; -}; - -export const textNode = (str: string) => { - return { type: NODE_TYPES.TEXT, value: str }; -}; - -export const tagNode = (tagName: keyof HTMLElementTagNameMap, children: NODE[]) => { - const value = tagName.trim(); - return { type: NODE_TYPES.TAG, value, children }; -}; - -export const voidTagNode = (tagName: keyof HTMLElementTagNameMap) => { - const value = tagName.trim(); - return { type: NODE_TYPES.VOID_TAG, value }; -}; - -export const isNode = (checked: any) => { - return !!checked?.type; -}; diff --git a/client2/src/localization/Translator/lib/parser.ts b/client2/src/localization/Translator/lib/parser.ts deleted file mode 100644 index 0c2134f0..00000000 --- a/client2/src/localization/Translator/lib/parser.ts +++ /dev/null @@ -1,335 +0,0 @@ -/* eslint-disable no-param-reassign */ -import { - tagNode, - textNode, - isNode, - placeholderNode, - voidTagNode, - NODE, -} from './nodes'; - -enum STATE { - /** - * parser function switches to the text state when parses simple text, - * or content between open and close tags - */ - TEXT = 'text', - - /** - * parser function switches to the tag state when meets open tag brace ("<"), and switches back, - * when meets closing tag brace (">") - */ - TAG = 'tag', - - /** - * Parser function switches to the placeholder state when meets in the text - * open placeholders brace ("{") and switches back to the text state, - * when meets close placeholder brace ("}") - */ - PLACEHOLDER = 'placeholder', -} - -enum CONTROL_CHARS { - TAG_OPEN_BRACE = '<', - TAG_CLOSE_BRACE = '>', - CLOSING_TAG_MARK = '/', - PLACEHOLDER_MARK = '%', -} - -interface Context { - /** - * Stack is used to keep and search nested tag nodes - * @type {*[]} - */ - stack: (NODE | keyof HTMLElementTagNameMap)[]; - /** - * Result is stack where function allocates nodes - * @type {*[]} - */ - result: NODE[]; - /** - * Current char index - * @type {number} - */ - currIdx: number; - /** - * Saves index of the last state change from the text state, - * used to restore parsed text if we moved into other state wrongly - */ - lastTextStateChangeIdx: number; - /** - * Accumulated tag value - */ - tag: string; - /** - * Accumulated text value - */ - text: string; - /** - * Accumulated placeholder value - */ - placeholder: string; - /** - * Parsed string - */ - str: string; - /** - * Currently parsed char - */ - currChar: string; -} - -/** - * Checks if text length is enough to create text node - * If text node created, then if stack is not empty it is pushed into stack, - * otherwise into result - * @param context - */ -const createTextNodeIfPossible = (context: Context) => { - const { text } = context; - - if (text.length > 0) { - const node = textNode(text); - if (context.stack.length > 0) { - context.stack.push(node); - } else { - context.result.push(node); - } - } - - context.text = ''; -}; - -/** - * Handles text state - * @returns {function} - */ -const textStateHandler = (context: Context) => { - const { currChar, currIdx } = context; - - // switches to the tag state - if (currChar === CONTROL_CHARS.TAG_OPEN_BRACE) { - context.lastTextStateChangeIdx = currIdx; - return STATE.TAG; - } - - // switches to the placeholder state - if (currChar === CONTROL_CHARS.PLACEHOLDER_MARK) { - context.lastTextStateChangeIdx = currIdx; - return STATE.PLACEHOLDER; - } - - // remains in the text state - context.text += currChar; - return STATE.TEXT; -}; - -/** - * Handles placeholder state - * @param context - * @returns {string} - */ -const placeholderStateHandler = (context: Context) => { - const { - currChar, - currIdx, - lastTextStateChangeIdx, - placeholder, - stack, - result, - str, - } = context; - - if (currChar === CONTROL_CHARS.PLACEHOLDER_MARK) { - // if distance between current index and last state change equal to 1, - // it means that placeholder mark was escaped by itself e.g. "%%", - // so we return to the text state - if (currIdx - lastTextStateChangeIdx === 1) { - context.text += str.substring(lastTextStateChangeIdx, currIdx); - return STATE.TEXT; - } - - createTextNodeIfPossible(context); - const node = placeholderNode(placeholder); - - // push node to the appropriate stack - if (stack.length > 0) { - stack.push(node); - } else { - result.push(node); - } - - context.placeholder = ''; - return STATE.TEXT; - } - - context.placeholder += currChar; - return STATE.PLACEHOLDER; -}; - -/** - * Switches current state to the tag state and returns tag state handler - * @returns {function} - */ -const tagStateHandler = (context: Context) => { - const { - currChar, - text, - stack, - result, - lastTextStateChangeIdx, - currIdx, - str, - } = context; - - let { tag } = context; - - // if found tag end ">" - if (currChar === CONTROL_CHARS.TAG_CLOSE_BRACE) { - // if the tag is close tag e.g. - if (tag.indexOf(CONTROL_CHARS.CLOSING_TAG_MARK) === 0) { - // remove slash from tag - tag = tag.substring(1); - - let children: NODE[] = []; - if (text.length > 0) { - children.push(textNode(text)); - context.text = ''; - } - - let pairTagFound = false; - // looking for the pair to the close tag - while (!pairTagFound && stack.length > 0) { - const lastFromStack = stack.pop(); - // if tag from stack equal to close tag - if (lastFromStack === tag) { - // create tag node - const node = tagNode(tag as keyof HTMLElementTagNameMap, children); - // and add it to the appropriate stack - if (stack.length > 0) { - stack.push(node); - } else { - result.push(node); - } - children = []; - pairTagFound = true; - } else if (isNode(lastFromStack)) { - // add nodes between close tag and open tag to the children - children.unshift(lastFromStack as NODE); - } else { - throw new Error(`String has unbalanced tags: ${str}`); - } - if (stack.length === 0 && children.length > 0) { - throw new Error(`String has unbalanced tags: ${str}`); - } - } - context.tag = ''; - return STATE.TEXT; - } - - // if the tag is void tag e.g. - if (tag.lastIndexOf(CONTROL_CHARS.CLOSING_TAG_MARK) === tag.length - 1) { - tag = tag.substring(0, tag.length - 1); - createTextNodeIfPossible(context); - const node = voidTagNode(tag as keyof HTMLElementTagNameMap); - // add node to the appropriate stack - if (stack.length > 0) { - stack.push(node); - } else { - result.push(node); - } - context.tag = ''; - return STATE.TEXT; - } - - createTextNodeIfPossible(context); - stack.push(tag as keyof HTMLElementTagNameMap); - context.tag = ''; - return STATE.TEXT; - } - - // If we meet open tag "<" it means that we wrongly moved into tag state - if (currChar === CONTROL_CHARS.TAG_OPEN_BRACE) { - context.text += str.substring(lastTextStateChangeIdx, currIdx); - context.lastTextStateChangeIdx = currIdx; - context.tag = ''; - return STATE.TAG; - } - - context.tag += currChar; - return STATE.TAG; -}; - -/** - * Parses string into AST (abstract syntax tree) and returns it - * e.g. - * parse("String to translate") -> - * ``` - * [ - * { type: 'text', value: 'String to ' }, - * { type: 'tag', value: 'a', children: [{ type: 'text', value: 'translate' }] } - * ]; - * ``` - * Empty string is parsed into empty AST (abstract syntax tree): "[]" - * If founds unbalanced tags, it throws error about it - * - * @param {string} str - message in simplified ICU like syntax without plural support - * @returns {[]} - */ -const parser = (str = '') => { - const context: Context = { - str, - stack: [], - result: [], - currIdx: 0, - lastTextStateChangeIdx: 0, - tag: '', - text: '', - placeholder: '', - currChar: '', - }; - - const STATE_HANDLERS = { - [STATE.TEXT]: textStateHandler, - [STATE.PLACEHOLDER]: placeholderStateHandler, - [STATE.TAG]: tagStateHandler, - }; - - // Start from text state - let currentState = STATE.TEXT; - - while (context.currIdx < str.length) { - context.currChar = str[context.currIdx]; - const currentStateHandler: (c: Context) => STATE = STATE_HANDLERS[currentState]; - currentState = currentStateHandler(context); - context.currIdx += 1; - } - - const { - result, - text, - stack, - lastTextStateChangeIdx, - } = context; - - // Means that tag or placeholder nodes were not closed, so we consider them as text - if (currentState !== STATE.TEXT) { - const restText = str.substring(lastTextStateChangeIdx); - if ((restText + text).length > 0) { - result.push(textNode(text + restText)); - } - } else { - // eslint-disable-next-line no-lonely-if - if (text.length > 0) { - result.push(textNode(text)); - } - } - - if (stack.length > 0) { - throw new Error(`String has unbalanced tags ${context.str}`); - } - - return result; -}; - -export default parser; diff --git a/client2/src/localization/Translator/lib/plural.ts b/client2/src/localization/Translator/lib/plural.ts deleted file mode 100644 index a705fcca..00000000 --- a/client2/src/localization/Translator/lib/plural.ts +++ /dev/null @@ -1,394 +0,0 @@ -/* eslint-disable no-nested-ternary */ -export type SupportedLangs = 'az' | 'bo' | 'dz' | 'id' | 'ja' | 'jv' | 'ka' | 'km' | 'kn' | 'ko' | 'ms' | 'th' | 'tr' | 'vi' | 'zh' | 'af' | 'bn' | 'bg' | 'ca' | 'da' | 'de' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'fi' | 'fo' | 'fur' | 'fy' | 'gl' | 'gu' | 'ha' | 'he' | 'hu' | 'is' | 'it' | 'ku' | 'lb' | 'ml' | 'mn' | 'mr' | 'nah' | 'nb' | 'ne' | 'nl' | 'nn' | 'no' | 'oc' | 'om' | 'or' | 'pa' | 'pap' | 'ps' | 'pt' | 'so' | 'sq' | 'sv' | 'sw' | 'ta' | 'te' | 'tk' | 'ur' | 'zu' | 'am' | 'bh' | 'fil' | 'fr' | 'gun' | 'hi' | 'hy' | 'ln' | 'mg' | 'nso' | 'xbr' | 'ti' | 'wa' | 'be' | 'bs' | 'hr' | 'ru' | 'sr' | 'uk' | 'cs' | 'sk' | 'ga' | 'lt' | 'sl' | 'mk' | 'mt' | 'lv' | 'pl' | 'cy' | 'ro' | 'ar'; - -export type GenericLocales = { - [key in SupportedLangs]: SupportedLangs; -}; - -export enum AvailableLocales { - az = 'az', - bo = 'bo', - dz = 'dz', - id = 'id', - ja = 'ja', - jv = 'jv', - ka = 'ka', - km = 'km', - kn = 'kn', - ko = 'ko', - ms = 'ms', - th = 'th', - tr = 'tr', - vi = 'vi', - zh = 'zh', - af = 'af', - bn = 'bn', - bg = 'bg', - ca = 'ca', - da = 'da', - de = 'de', - el = 'el', - en = 'en', - eo = 'eo', - es = 'es', - et = 'et', - eu = 'eu', - fa = 'fa', - fi = 'fi', - fo = 'fo', - fur = 'fur', - fy = 'fy', - gl = 'gl', - gu = 'gu', - ha = 'ha', - he = 'he', - hu = 'hu', - is = 'is', - it = 'it', - ku = 'ku', - lb = 'lb', - ml = 'ml', - mn = 'mn', - mr = 'mr', - nah = 'nah', - nb = 'nb', - ne = 'ne', - nl = 'nl', - nn = 'nn', - no = 'no', - oc = 'oc', - om = 'om', - or = 'or', - pa = 'pa', - pap = 'pap', - ps = 'ps', - pt = 'pt', - so = 'so', - sq = 'sq', - sv = 'sv', - sw = 'sw', - ta = 'ta', - te = 'te', - tk = 'tk', - ur = 'ur', - zu = 'zu', - am = 'am', - bh = 'bh', - fil = 'fil', - fr = 'fr', - gun = 'gun', - hi = 'hi', - hy = 'hy', - ln = 'ln', - mg = 'mg', - nso = 'nso', - xbr = 'xbr', - ti = 'ti', - wa = 'wa', - be = 'be', - bs = 'bs', - hr = 'hr', - ru = 'ru', - sr = 'sr', - uk = 'uk', - cs = 'cs', - sk = 'sk', - ga = 'ga', - lt = 'lt', - sl = 'sl', - mk = 'mk', - mt = 'mt', - lv = 'lv', - pl = 'pl', - cy = 'cy', - ro = 'ro', - ar = 'ar', -} -export const getPluralFormId = (locale: AvailableLocales, number: number) => { - if (number === 0) { - return 0; - } - const slavNum = ((number % 10 === 1) && (number % 100 !== 11)) - ? 1 - : ( - ((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) - || (number % 100 >= 20)) - ) - ? 2 - : 3); - const supportedForms: Record = { - [AvailableLocales.az]: 1, - [AvailableLocales.bo]: 1, - [AvailableLocales.dz]: 1, - [AvailableLocales.id]: 1, - [AvailableLocales.ja]: 1, - [AvailableLocales.jv]: 1, - [AvailableLocales.ka]: 1, - [AvailableLocales.km]: 1, - [AvailableLocales.kn]: 1, - [AvailableLocales.ko]: 1, - [AvailableLocales.ms]: 1, - [AvailableLocales.th]: 1, - [AvailableLocales.tr]: 1, - [AvailableLocales.vi]: 1, - [AvailableLocales.zh]: 1, - - [AvailableLocales.af]: (number === 1) ? 1 : 2, - [AvailableLocales.bn]: (number === 1) ? 1 : 2, - [AvailableLocales.bg]: (number === 1) ? 1 : 2, - [AvailableLocales.ca]: (number === 1) ? 1 : 2, - [AvailableLocales.da]: (number === 1) ? 1 : 2, - [AvailableLocales.de]: (number === 1) ? 1 : 2, - [AvailableLocales.el]: (number === 1) ? 1 : 2, - [AvailableLocales.en]: (number === 1) ? 1 : 2, - [AvailableLocales.eo]: (number === 1) ? 1 : 2, - [AvailableLocales.es]: (number === 1) ? 1 : 2, - [AvailableLocales.et]: (number === 1) ? 1 : 2, - [AvailableLocales.eu]: (number === 1) ? 1 : 2, - [AvailableLocales.fa]: (number === 1) ? 1 : 2, - [AvailableLocales.fi]: (number === 1) ? 1 : 2, - [AvailableLocales.fo]: (number === 1) ? 1 : 2, - [AvailableLocales.fur]: (number === 1) ? 1 : 2, - [AvailableLocales.fy]: (number === 1) ? 1 : 2, - [AvailableLocales.gl]: (number === 1) ? 1 : 2, - [AvailableLocales.gu]: (number === 1) ? 1 : 2, - [AvailableLocales.ha]: (number === 1) ? 1 : 2, - [AvailableLocales.he]: (number === 1) ? 1 : 2, - [AvailableLocales.hu]: (number === 1) ? 1 : 2, - [AvailableLocales.is]: (number === 1) ? 1 : 2, - [AvailableLocales.it]: (number === 1) ? 1 : 2, - [AvailableLocales.ku]: (number === 1) ? 1 : 2, - [AvailableLocales.lb]: (number === 1) ? 1 : 2, - [AvailableLocales.ml]: (number === 1) ? 1 : 2, - [AvailableLocales.mn]: (number === 1) ? 1 : 2, - [AvailableLocales.mr]: (number === 1) ? 1 : 2, - [AvailableLocales.nah]: (number === 1) ? 1 : 2, - [AvailableLocales.nb]: (number === 1) ? 1 : 2, - [AvailableLocales.ne]: (number === 1) ? 1 : 2, - [AvailableLocales.nl]: (number === 1) ? 1 : 2, - [AvailableLocales.nn]: (number === 1) ? 1 : 2, - [AvailableLocales.no]: (number === 1) ? 1 : 2, - [AvailableLocales.oc]: (number === 1) ? 1 : 2, - [AvailableLocales.om]: (number === 1) ? 1 : 2, - [AvailableLocales.or]: (number === 1) ? 1 : 2, - [AvailableLocales.pa]: (number === 1) ? 1 : 2, - [AvailableLocales.pap]: (number === 1) ? 1 : 2, - [AvailableLocales.ps]: (number === 1) ? 1 : 2, - [AvailableLocales.pt]: (number === 1) ? 1 : 2, - [AvailableLocales.so]: (number === 1) ? 1 : 2, - [AvailableLocales.sq]: (number === 1) ? 1 : 2, - [AvailableLocales.sv]: (number === 1) ? 1 : 2, - [AvailableLocales.sw]: (number === 1) ? 1 : 2, - [AvailableLocales.ta]: (number === 1) ? 1 : 2, - [AvailableLocales.te]: (number === 1) ? 1 : 2, - [AvailableLocales.tk]: (number === 1) ? 1 : 2, - [AvailableLocales.ur]: (number === 1) ? 1 : 2, - [AvailableLocales.zu]: (number === 1) ? 1 : 2, - - // how it works with 0? - [AvailableLocales.am]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.bh]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.fil]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.fr]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.gun]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.hi]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.hy]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.ln]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.mg]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.nso]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.xbr]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.ti]: ((number === 0) || (number === 1)) ? 0 : 1, - [AvailableLocales.wa]: ((number === 0) || (number === 1)) ? 0 : 1, - - [AvailableLocales.be]: slavNum, - [AvailableLocales.bs]: slavNum, - [AvailableLocales.hr]: slavNum, - [AvailableLocales.ru]: slavNum, - [AvailableLocales.sr]: slavNum, - [AvailableLocales.uk]: slavNum, - - [AvailableLocales.cs]: (number === 1) ? 1 : (((number >= 2) && (number <= 4)) ? 2 : 3), - [AvailableLocales.sk]: (number === 1) ? 1 : (((number >= 2) && (number <= 4)) ? 2 : 3), - [AvailableLocales.ga]: (number === 1) ? 1 : ((number === 2) ? 2 : 3), - [AvailableLocales.lt]: ((number % 10 === 1) && (number % 100 !== 11)) - ? 1 - : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) - ? 2 - : 3), - [AvailableLocales.sl]: (number % 100 === 1) - ? 1 - : ((number % 100 === 2) - ? 2 - : (((number % 100 === 3) || (number % 100 === 4)) - ? 3 - : 4)), - [AvailableLocales.mk]: (number % 10 === 1) ? 1 : 2, - [AvailableLocales.mt]: (number === 1) - ? 1 - : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) - ? 2 - : (((number % 100 > 10) && (number % 100 < 20)) - ? 3 - : 4)), - [AvailableLocales.lv]: (number === 0) - ? 0 - : (((number % 10 === 1) && (number % 100 !== 11)) - ? 1 - : 2), - [AvailableLocales.pl]: (number === 1) - ? 1 - : ( - ((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) - || (number % 100 > 14)) - ) - ? 2 - : 3), - [AvailableLocales.cy]: (number === 1) - ? 0 - : ((number === 2) - ? 1 - : (((number === 8) || (number === 11)) - ? 2 - : 3)), - [AvailableLocales.ro]: (number === 1) - ? 1 - : (((number === 1) || ((number % 100 > 0) && (number % 100 < 20))) - ? 2 - : 3), - [AvailableLocales.ar]: (number === 0) - ? 0 - : ((number === 1) - ? 1 - : ((number === 2) - ? 2 - : (((number % 100 >= 3) && (number % 100 <= 10)) - ? 3 - : (((number % 100 >= 11) && (number % 100 <= 99)) - ? 4 - : 5)))), - - }; - return supportedForms[locale]; -}; -export const pluraFormsCount: Record = { - [AvailableLocales.az]: 2, - [AvailableLocales.bo]: 2, - [AvailableLocales.dz]: 2, - [AvailableLocales.id]: 2, - [AvailableLocales.ja]: 2, - [AvailableLocales.jv]: 2, - [AvailableLocales.ka]: 2, - [AvailableLocales.km]: 2, - [AvailableLocales.kn]: 2, - [AvailableLocales.ko]: 2, - [AvailableLocales.ms]: 2, - [AvailableLocales.th]: 2, - [AvailableLocales.tr]: 2, - [AvailableLocales.vi]: 2, - [AvailableLocales.zh]: 2, - [AvailableLocales.af]: 3, - [AvailableLocales.bn]: 3, - [AvailableLocales.bg]: 3, - [AvailableLocales.ca]: 3, - [AvailableLocales.da]: 3, - [AvailableLocales.de]: 3, - [AvailableLocales.el]: 3, - [AvailableLocales.en]: 3, - [AvailableLocales.eo]: 3, - [AvailableLocales.es]: 3, - [AvailableLocales.et]: 3, - [AvailableLocales.eu]: 3, - [AvailableLocales.fa]: 3, - [AvailableLocales.fi]: 3, - [AvailableLocales.fo]: 3, - [AvailableLocales.fur]: 3, - [AvailableLocales.fy]: 3, - [AvailableLocales.gl]: 3, - [AvailableLocales.gu]: 3, - [AvailableLocales.ha]: 3, - [AvailableLocales.he]: 3, - [AvailableLocales.hu]: 3, - [AvailableLocales.is]: 3, - [AvailableLocales.it]: 3, - [AvailableLocales.ku]: 3, - [AvailableLocales.lb]: 3, - [AvailableLocales.ml]: 3, - [AvailableLocales.mn]: 3, - [AvailableLocales.mr]: 3, - [AvailableLocales.nah]: 3, - [AvailableLocales.nb]: 3, - [AvailableLocales.ne]: 3, - [AvailableLocales.nl]: 3, - [AvailableLocales.nn]: 3, - [AvailableLocales.no]: 3, - [AvailableLocales.oc]: 3, - [AvailableLocales.om]: 3, - [AvailableLocales.or]: 3, - [AvailableLocales.pa]: 3, - [AvailableLocales.pap]: 3, - [AvailableLocales.ps]: 3, - [AvailableLocales.pt]: 3, - [AvailableLocales.so]: 3, - [AvailableLocales.sq]: 3, - [AvailableLocales.sv]: 3, - [AvailableLocales.sw]: 3, - [AvailableLocales.ta]: 3, - [AvailableLocales.te]: 3, - [AvailableLocales.tk]: 3, - [AvailableLocales.ur]: 3, - [AvailableLocales.zu]: 3, - [AvailableLocales.am]: 2, - [AvailableLocales.bh]: 2, - [AvailableLocales.fil]: 2, - [AvailableLocales.fr]: 2, - [AvailableLocales.gun]: 2, - [AvailableLocales.hi]: 2, - [AvailableLocales.hy]: 2, - [AvailableLocales.ln]: 2, - [AvailableLocales.mg]: 2, - [AvailableLocales.nso]: 2, - [AvailableLocales.xbr]: 2, - [AvailableLocales.ti]: 2, - [AvailableLocales.wa]: 2, - [AvailableLocales.be]: 4, - [AvailableLocales.bs]: 4, - [AvailableLocales.hr]: 4, - [AvailableLocales.ru]: 4, - [AvailableLocales.sr]: 4, - [AvailableLocales.uk]: 4, - [AvailableLocales.cs]: 4, - [AvailableLocales.sk]: 4, - [AvailableLocales.ga]: 4, - [AvailableLocales.lt]: 4, - [AvailableLocales.sl]: 5, - [AvailableLocales.mk]: 3, - [AvailableLocales.mt]: 5, - [AvailableLocales.lv]: 3, - [AvailableLocales.pl]: 4, - [AvailableLocales.cy]: 4, - [AvailableLocales.ro]: 4, - [AvailableLocales.ar]: 6, -}; - -const PLURAL_STRING_DELIMITER = '|'; - -export const checkForms = (str: string, locale: AvailableLocales, id: string) => { - const forms = str.split(PLURAL_STRING_DELIMITER); - if (forms.length !== pluraFormsCount[locale]) { - throw new Error(`Invalid plural string "${id}" for locale ${locale}: ${forms.length} given; need: ${pluraFormsCount[locale]}`); - } -}; -export const checkFormsExternal = (str: string, locale: AvailableLocales, id: string) => { - try { - checkForms(str, locale, id); - return true; - } catch (error) { - return false; - } -}; -export const getForm = (str: string, number: number, locale: AvailableLocales, id: string) => { - checkForms(str, locale, id); - const forms = str.split(PLURAL_STRING_DELIMITER); - const currentForm = getPluralFormId(locale, number); - return forms[currentForm].trim(); -}; diff --git a/client2/src/localization/Translator/lib/translator.ts b/client2/src/localization/Translator/lib/translator.ts deleted file mode 100644 index e791d065..00000000 --- a/client2/src/localization/Translator/lib/translator.ts +++ /dev/null @@ -1,9 +0,0 @@ -import parser from './parser'; -import format, { AllowedValues } from './formatter'; - -const translator = (message: string, values: AllowedValues) => { - const astMessage = parser(message); - const formatted = format(astMessage, values); - return formatted; -}; -export default translator; diff --git a/client2/src/localization/Translator/lib/validator.ts b/client2/src/localization/Translator/lib/validator.ts deleted file mode 100644 index 3ad7317d..00000000 --- a/client2/src/localization/Translator/lib/validator.ts +++ /dev/null @@ -1,60 +0,0 @@ -import parser from './parser'; -import { isTextNode, NODE } from './nodes'; - -/** - * Compares two AST (abstract syntax tree) structures, - * view tests for examples - * @param baseAst - * @param targetAst - * @returns {boolean} - */ -const areAstStructuresSame = (baseAst: NODE[], targetAst: NODE[]) => { - const textNodeFilter = (node: NODE) => { - return !isTextNode(node); - }; - - const filteredBaseAst = baseAst.filter(textNodeFilter); - - const filteredTargetAst = targetAst.filter(textNodeFilter); - - // if AST structures have different lengths, they are not equal - if (filteredBaseAst.length !== filteredTargetAst.length) { - return false; - } - - for (let i = 0; i < filteredBaseAst.length; i += 1) { - const baseNode = filteredBaseAst[i]; - - const targetNode = filteredTargetAst.find((node) => { - return node.type === baseNode.type && node.value === baseNode.value; - }); - - if (!targetNode) { - return false; - } - - if (targetNode.children && baseNode.children) { - const areChildrenSame = areAstStructuresSame(baseNode.children, targetNode.children); - if (!areChildrenSame) { - return false; - } - } - } - - return true; -}; - -/** - * Validates translation against base string by AST (abstract syntax tree) structure - * @param baseStr - * @param targetStr - * @returns {boolean} - */ -export const isTargetStrValid = (baseStr: string, targetStr: string) => { - const baseAst = parser(baseStr); - const targetAst = parser(targetStr); - - const result = areAstStructuresSame(baseAst, targetAst); - - return result; -}; diff --git a/client2/src/localization/index.ts b/client2/src/localization/index.ts index 1006227e..a5a02eae 100644 --- a/client2/src/localization/index.ts +++ b/client2/src/localization/index.ts @@ -1,6 +1,9 @@ -import T from './Translator'; -import { Locale } from './locales'; +import { Locale, DatePickerLocale, messages, DEFAULT_LOCALE, LANGUAGES } from './locales'; -export { messages, DatePickerLocale, Locale, DEFAULT_LOCALE, LANGUAGES, reactFormater } from './locales'; -export type Translator = T; -export default T; +export { Locale, DatePickerLocale, messages, DEFAULT_LOCALE, LANGUAGES }; +export const i18n = (lang: Locale) => ({ + getMessage: (key: string) => messages[lang][key], + getUILanguage: () => lang, + getBaseMessage: (key: string) => messages[DEFAULT_LOCALE][key] || key, + getBaseUILanguage: () => DEFAULT_LOCALE, +}); diff --git a/client2/src/localization/locales/en.json b/client2/src/localization/locales/en.json index f6801463..a0094f6a 100644 --- a/client2/src/localization/locales/en.json +++ b/client2/src/localization/locales/en.json @@ -7,6 +7,34 @@ "next": "Next", "port": "Port", "router": "Router", + "username": "Username", + "sign_in": "Sign in", + "sign_out": "Sign out", + "dashboard": "Dashboard", + "setup_guide": "Setup guide", + "query_log": "Query Log", + "filters": "Filters", + "settings": "Settings", + "general_settings": "General settings", + "dns_settings": "DNS settings", + "encryption_settings": "Encryption settings", + "client_settings": "Client settings", + "dhcp_settings": "DHCP settings", + "disable": "Disable", + "disabled": "Disabled", + "enable": "Enable", + "clear": "Clear", + "cancel": "Cancel", + + "login_password_title": "Reset Password", + "login_password_link": "Forgot password?", + "login_password_hash": "AdGuard Home stores passwords as a BCrypt-encoded hash. Here's what you need to do to change the password:", + "login_password_step_1": "Stop AdGuard Home", + "login_password_step_2": "Edit AdGuardHome.yaml", + "login_password_step_3": "Find password field there", + "login_password_step_4": "Replace it with the new value. You can use .htpasswd password generator tool or any online BCrypt generator tool (there are many available online).", + "login_password_step_5": "Start AdGuard Home", + "login_password_result": "Now you'll be able to log in to web interface using your new password.", "install_admin_interface_port_desc": "Now it is working at 3000 port, just in case, but we recomended to use 80 port. Using this ports allow to access to Web interface like to common site", "install_admin_interface_port": "Which port will be used", @@ -44,5 +72,66 @@ "install_configure_android": "

From the Android Menu home screen, tap Settings.

Tap Wi-Fi on the menu. The screen listing all of the available networks will be shown (it is impossible to set custom DNS for mobile connection).

Long press the network you're connected to, and tap Modify Network.

On some devices, you may need to check the box for Advanced to see further settings. To adjust your Android DNS settings, you will need to switch the IP settings from DHCP to Static.

Change set DNS 1 and DNS 2 values to your AdGuard Home server addresses.

", "install_configure_ios": "

From the home screen, tap Settings.

Choose Wi-Fi in the left menu (it is impossible to configure DNS for mobile networks).

Tap on the name of the currently active network.

In the DNS field enter your AdGuard Home server addresses.

", "install_configure_adresses": "AdGuard Home addresses:", - "install_configure_dhcp": "You can't set a custom DNS server on some types of routers. In this case it may help if you set up AdGuard Home as a DHCP server. Otherwise, you should search for the manual on how to customize DNS servers for your particular router model." + "install_configure_dhcp": "You can't set a custom DNS server on some types of routers. In this case it may help if you set up AdGuard Home as a DHCP server. Otherwise, you should search for the manual on how to customize DNS servers for your particular router model.", + + "header_adguard_status_enabled": "AdGuard Home is enabled", + "header_adguard_status_disabled": "AdGuard Home is disabled", + "header_server_uptime": "Server uptime is %value%", + + "top_clients": "Top clients", + "client_table_header": "Client", + "requests": "Requests", + "show_blocked_responses": "Blocked", + + "filter_category_general": "General", + "query_log_configuration": "Logs configuration", + "statistics_configuration": "Statistics configuration", + "statistics_clear": " Clear statistics", + "interval_24_hour": "24 hours", + "interval_days": "| %count% day | %count% days", + "interval_hours": "| %count% hour | %count% hours", + "save_btn": "Save", + "stats_reset": "Statistics reseted succesfully", + "statistics_retention": "Statistics retention", + "statistics_retention_desc": "If you decrease the interval value, some data will be lost", + "query_log_enable": "Enable log", + "query_log_clear": "Clear query logs", + "query_log_retention": "Query logs retention", + "query_log_cleared": "The query log has been successfully cleared", + "anonymize_client_ip": "Anonymize client IP", + "anonymize_client_ip_desc": "Don't save the full IP address of the client in logs and statistics", + "query_log_retention_confirm": "If you decrease the interval value, some data will be lost", + "query_log_confirm_clear": "Are you sure you want to clear the entire query log?", + "query_log_reset": "Query log cleared succesfully", + "statistics_clear_confirm": "Are you sure you want to clear statistics?", + + "stats_query_domain": "Top queried domains", + "top_blocked_domains": "Top blocked domains", + "domain": "Domain", + "all_queries": "All queries", + + "block_domain_use_filters_and_hosts": "Block domains using filters and hosts files", + "filters_interval": "Filters update interval", + "filters_block_toggle_hint": "You can setup blocking rules in the Filters settings.", + "use_adguard_browsing_sec": "Use AdGuard browsing security web service", + "use_adguard_browsing_sec_hint": "AdGuard Home will check if domain is blacklisted by the browsing security web service. It will use privacy-friendly lookup API to perform the check: only a short prefix of the domain name SHA256 hash is sent to the server.", + "use_adguard_parental": "Use AdGuard parental control web service", + "use_adguard_parental_hint": "AdGuard Home will check if domain contains adult materials. It uses the same privacy-friendly API as the browsing security web service.", + "enforce_safe_search": "Enforce safe search", + "enforce_save_search_hint": "AdGuard Home can enforce safe search in the following search engines: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.", + + "dashboard_blocked_ads": "Blocked Ads", + "dashboard_blocked_trackers": "Blocked trackers", + "dashboard_filter_rules": "Count of filter rules", + "dashboard_blocked_queries": "Blocked queries", + "dashboard_filter_rules_count": "%enabled% of %all% filters", + "dashboard_server_statistics": "Internal server statistic", + "other" : "Other", + "ads" : "Ads", + "trackers" : "Trackers", + "stats_adult": "Blocked adult websites", + "stats_malware_phishing": "Blocked malware/phishing", + "average_processing_time": "Average processing time", + "milliseconds_abbreviation": "ms" + } diff --git a/client2/src/localization/locales/index.ts b/client2/src/localization/locales/index.ts index ec51ba71..98266112 100644 --- a/client2/src/localization/locales/index.ts +++ b/client2/src/localization/locales/index.ts @@ -1,4 +1,3 @@ -import React from 'react'; import 'dayjs/locale/ru'; import { PickerLocale } from 'antd/es/date-picker/generatePicker'; @@ -22,15 +21,9 @@ export const messages: Record> = { [Locale.en]: enLang, }; +// TODO get languages and default locale from .twosky file export const DEFAULT_LOCALE = Locale.en; -export const reactFormater = (data: (JSX.Element | string)[]) => { - if (data.every((d) => typeof d === 'string')) { - return data.join(''); - } - return React.Children.toArray(data); -}; - export const LANGUAGES: { code: Locale; name: string }[] = [ { code: Locale.en, diff --git a/client2/src/main.pcss b/client2/src/main.pcss index 852b3e20..9d7573ba 100644 --- a/client2/src/main.pcss +++ b/client2/src/main.pcss @@ -5,20 +5,27 @@ --gray400: #a4a4a4; --gray700: #888888; --gray900: #4d4d4d; - --black: #000000; + --black: #131313; --green400: #67b279; --green700: #4d995f; --red400: #c23814; + --text-selection: #e7efff; + --header-height: 48px; --transition: 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif; --font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace; } body { - font-size: 14px; + font-size: 16px; color: var(--gray900); } +::selection { + background: var(--text-selection); + color: var(--black); +} + @custom-media --m-viewport (min-width: 768px); @custom-media --l-viewport (min-width: 992px); @custom-media --xl-viewport (min-width: 1200px); diff --git a/client2/src/store/store.ts b/client2/src/store/store.ts index 24edb778..4debd161 100644 --- a/client2/src/store/store.ts +++ b/client2/src/store/store.ts @@ -1,11 +1,32 @@ import { createContext } from 'react'; import UI from './stores/ui'; +import Login from './stores/Login'; +import Dashboard from './stores/Dasnboard'; +import System from './stores/System'; +import GeneralSettings from './stores/GeneralSettings'; export class Store { ui: UI; + login: Login; + + dashboard: Dashboard; + + system: System; + + generalSettings: GeneralSettings; + constructor() { this.ui = new UI(this); + this.login = new Login(this); + this.dashboard = new Dashboard(this); + this.system = new System(this); + this.generalSettings = new GeneralSettings(this); + } + + init() { + this.dashboard.init(); + this.system.init(); } } diff --git a/client2/src/store/stores/Dasnboard.ts b/client2/src/store/stores/Dasnboard.ts new file mode 100644 index 00000000..c4aa3062 --- /dev/null +++ b/client2/src/store/stores/Dasnboard.ts @@ -0,0 +1,120 @@ +import { flow, makeAutoObservable, observable } from 'mobx'; + +import clientsApi from 'Apis/clients'; +import statsApi from 'Apis/stats'; +import filteringApi from 'Apis/filtering'; +import tlsApi from 'Apis/tls'; + +import { errorChecker } from 'Helpers/apiErrors'; +import { Store } from 'Store'; +import Stats, { IStats } from 'Entities/Stats'; +import StatsConfig, { IStatsConfig } from 'Entities/StatsConfig'; +import TlsConfig, { ITlsConfig } from 'Entities/TlsConfig'; +import { IClientsFindEntry } from 'Entities/ClientsFindEntry'; +import ClientFindSubEntry from 'Entities/ClientFindSubEntry'; +import FilterStatus, { IFilterStatus } from 'Entities/FilterStatus'; + +import { IStore } from './utils'; + +export default class Dashboard implements IStore { + rootStore: Store; + + inited = false; + + stats: Stats | undefined; + + statsConfig: StatsConfig | undefined; + + clientsInfo: Map; + + tlsConfig: TlsConfig | undefined; + + filteringConfig: FilterStatus | undefined; + + constructor(rootStore: Store) { + this.rootStore = rootStore; + makeAutoObservable(this, { + rootStore: false, + inited: observable, + init: flow, + + getStatsConfig: flow, + getTlsConfig: flow, + getClient: flow, + filteringStatus: flow, + + stats: observable.ref, + statsConfig: observable.ref, + clientsInfo: observable.ref, + tlsConfig: observable.ref, + filteringConfig: observable.ref, + }); + this.clientsInfo = new Map(); + if (this.rootStore.login.loggedIn) { + this.init(); + } + } + + * init() { + yield this.getStatsConfig(); + yield this.getTlsConfig(); + yield this.getStats(); + yield this.filteringStatus(); + this.inited = true; + } + + * getStats() { + const response = yield statsApi.stats(); + const { result } = errorChecker(response); + if (result) { + this.stats = new Stats(result); + if (this.stats.topClients) { + // TODO: fix bycicle + const topClients = this.stats.topClients.map((e) => { + return Object.keys(e.numberData)[0]; + }); + let firstClient = topClients.shift(); + firstClient += '&'; + const topClientsReq = firstClient + topClients.map((ip, index) => `ip${index + 1}=${ip}`).join('&'); + yield this.getClient(topClientsReq); + } + } + } + + * getClient(ip: string) { + // if & is encoding set in clientsFind qs options - encode: false + const response = yield clientsApi.clientsFind(ip); + const { result } = errorChecker(response); + if (result) { + this.clientsInfo = new Map(); + result.forEach((client) => { + const [clientIp, data] = Object.entries(client)[0]; + this.clientsInfo.set(clientIp, new ClientFindSubEntry(data)); + }); + } + } + + * getStatsConfig() { + const response = yield statsApi.statsInfo(); + const { result } = errorChecker(response); + if (result) { + this.statsConfig = new StatsConfig(result); + } + } + + * getTlsConfig() { + const response = yield tlsApi.tlsStatus(); + const { result } = errorChecker(response); + if (result) { + this.tlsConfig = new TlsConfig(result); + } + } + + * filteringStatus() { + const response = yield filteringApi.filteringStatus(); + const { result } = errorChecker(response); + if (result) { + this.filteringConfig = new FilterStatus(result); + } + } +} diff --git a/client2/src/store/stores/GeneralSettings.ts b/client2/src/store/stores/GeneralSettings.ts new file mode 100644 index 00000000..6b5e8287 --- /dev/null +++ b/client2/src/store/stores/GeneralSettings.ts @@ -0,0 +1,218 @@ +import { flow, makeAutoObservable, observable } from 'mobx'; +import { Store } from 'Store'; + +import statsApi from 'Apis/stats'; +import queryApi from 'Apis/log'; +import safeBrowsingApi from 'Apis/safebrowsing'; +import filteringApi from 'Apis/filtering'; +import parentalApi from 'Apis/parental'; +import safesearchApi from 'Apis/safesearch'; + +import StatsConfig, { IStatsConfig } from 'Entities/StatsConfig'; +import QueryLogConfig, { IQueryLogConfig } from 'Entities/QueryLogConfig'; +import FilterConfig, { IFilterConfig } from 'Entities/FilterConfig'; +import FilterStatus, { IFilterStatus } from 'Entities/FilterStatus'; + +import { errorChecker } from 'Helpers/apiErrors'; + +import { IStore } from './utils'; + +export default class SomeStore implements IStore { + rootStore: Store; + + inited = false; + + statsConfig: StatsConfig | undefined; + + queryLogConfig: QueryLogConfig | undefined; + + safebrowsing: boolean | undefined; + + filteringConfig: FilterConfig | undefined; + + parental: boolean | undefined; + + safesearch: boolean | undefined; + + constructor(rootStore: Store) { + this.rootStore = rootStore; + makeAutoObservable(this, { + rootStore: false, + inited: observable, + init: flow, + + statsConfig: observable.ref, + queryLogConfig: observable.ref, + safebrowsing: observable, + filteringConfig: observable.ref, + parental: observable, + safesearch: observable, + + updateStatsConfig: flow, + statsInfo: flow, + statsReset: flow, + updateQueryLogConfig: flow, + queryLogInfo: flow, + querylogClear: flow, + safebrowsingDisable: flow, + safebrowsingEnable: flow, + safebrowsingStatus: flow, + updateFilteringConfig: flow, + filteringStatus: flow, + parentalDisable: flow, + parentalEnable: flow, + parentalStatus: flow, + safesearchDisable: flow, + safesearchEnable: flow, + safesearchStatus: flow, + }); + } + + * init() { + yield this.statsInfo(); + yield this.queryLogInfo(); + yield this.safebrowsingStatus(); + yield this.filteringStatus(); + yield this.parentalStatus(); + yield this.safesearchStatus(); + this.inited = yield true; + } + + * updateStatsConfig(statsconfig: IStatsConfig) { + const response = yield statsApi.statsConfig(statsconfig); + const { result } = errorChecker(response); + if (result) { + yield this.statsInfo(); + } + } + + * statsInfo() { + const response = yield statsApi.statsInfo(); + const { result } = errorChecker(response); + if (result) { + this.statsConfig = new StatsConfig(result); + } + } + + * statsReset() { + const response = yield statsApi.statsReset(); + const { result } = errorChecker(response); + if (result) { + yield this.statsInfo(); + return true; + } + } + + * updateQueryLogConfig(querylogconfig: IQueryLogConfig) { + const response = yield queryApi.queryLogConfig(querylogconfig); + const { result } = errorChecker(response); + if (result) { + yield this.queryLogInfo(); + } + } + + * queryLogInfo() { + const response = yield queryApi.queryLogInfo(); + const { result } = errorChecker(response); + if (result) { + this.queryLogConfig = new QueryLogConfig(result); + } + } + + * querylogClear() { + const response = yield queryApi.querylogClear(); + const { result } = errorChecker(response); + if (result) { + yield this.queryLogInfo(); + } + } + + * safebrowsingDisable() { + const response = yield safeBrowsingApi.safebrowsingDisable(); + const { result } = errorChecker(response); + if (result) { + this.safebrowsing = false; + } + } + + * safebrowsingEnable() { + const response = yield safeBrowsingApi.safebrowsingEnable(); + const { result } = errorChecker(response); + if (result) { + this.safebrowsing = true; + } + } + + * safebrowsingStatus() { + const response = yield safeBrowsingApi.safebrowsingStatus(); + const { result } = errorChecker(response); + if (result) { + this.safebrowsing = result.enabled; + } + } + + * updateFilteringConfig(filterconfig: IFilterConfig) { + const response = yield filteringApi.filteringConfig(filterconfig); + const { result } = errorChecker(response); + if (result) { + yield this.filteringStatus(); + } + } + + * filteringStatus() { + const response = yield filteringApi.filteringStatus(); + const { result } = errorChecker(response); + if (result) { + this.filteringConfig = new FilterStatus(result); + } + } + + * parentalDisable() { + const response = yield parentalApi.parentalDisable(); + const { result } = errorChecker(response); + if (result) { + this.parental = false; + } + } + + * parentalEnable() { + // TODO: remove magic; + const response = yield parentalApi.parentalEnable('sensitivity=TEEN'); + const { result } = errorChecker(response); + if (result) { + this.parental = true; + } + } + + * parentalStatus() { + const response = yield parentalApi.parentalStatus(); + const { result } = errorChecker(response); + if (result) { + this.parental = result.enabled; + } + } + + * safesearchDisable() { + const response = yield safesearchApi.safesearchDisable(); + const { result } = errorChecker(response); + if (result) { + this.safesearch = false; + } + } + + * safesearchEnable() { + const response = yield safesearchApi.safesearchEnable(); + const { result } = errorChecker(response); + if (result) { + this.safesearch = true; + } + } + + * safesearchStatus() { + const response = yield safesearchApi.safesearchStatus(); + const { result } = errorChecker(response); + if (result) { + this.safesearch = result.enabled; + } + } +} diff --git a/client2/src/store/stores/Install.ts b/client2/src/store/stores/Install.ts index bd861ef2..92b2ff06 100644 --- a/client2/src/store/stores/Install.ts +++ b/client2/src/store/stores/Install.ts @@ -6,7 +6,7 @@ import { IInitialConfigurationBeta } from 'Entities/InitialConfigurationBeta'; import { errorChecker } from 'Helpers/apiErrors'; import { flow, makeAutoObservable } from 'mobx'; -import { Store } from 'Store'; +import { Store } from 'Store/installStore'; export default class Install { rootStore: Store; diff --git a/client2/src/store/stores/Login.ts b/client2/src/store/stores/Login.ts new file mode 100644 index 00000000..b1534731 --- /dev/null +++ b/client2/src/store/stores/Login.ts @@ -0,0 +1,45 @@ +import { flow, makeAutoObservable, observable } from 'mobx'; +import globalApi from 'Apis/global'; + +import { Store } from 'Store'; +import { errorChecker } from 'Helpers/apiErrors'; +import ProfileInfo, { IProfileInfo } from 'Entities/ProfileInfo'; +import { ILogin } from 'Entities/Login'; + +export default class Login { + rootStore: Store; + + loggedIn = false; + + constructor(rootStore: Store) { + this.rootStore = rootStore; + makeAutoObservable(this, { + loggedIn: observable, + rootStore: false, + checkLoggedIn: flow, + login: flow, + }); + this.checkLoggedIn(); + } + + * checkLoggedIn() { + const response = yield globalApi.getProfile(); + const { result } = errorChecker(response); + if (result) { + this.loggedIn = true; + this.rootStore.system.setProfile(new ProfileInfo(result)); + this.rootStore.init(); + } + // TODO: make smth with result, to not duplicate the request; + } + + * login(login: ILogin) { + const response = yield globalApi.login(login); + const { result, error } = errorChecker(response); + if (result === 200) { + this.loggedIn = true; + return; + } + return error; + } +} diff --git a/client2/src/store/stores/System.ts b/client2/src/store/stores/System.ts new file mode 100644 index 00000000..41652998 --- /dev/null +++ b/client2/src/store/stores/System.ts @@ -0,0 +1,75 @@ +import { flow, makeAutoObservable, observable, action } from 'mobx'; +import globalApi from 'Apis/global'; + +import { Store } from 'Store'; +import { errorChecker } from 'Helpers/apiErrors'; +import ProfileInfo, { IProfileInfo } from 'Entities/ProfileInfo'; +import ServerStatus, { IServerStatus } from 'Entities/ServerStatus'; + +import { IStore } from './utils'; + +export default class System implements IStore { + rootStore: Store; + + inited = false; + + status: ServerStatus | undefined; + + profile: ProfileInfo | undefined; + + constructor(rootStore: Store) { + this.rootStore = rootStore; + makeAutoObservable(this, { + rootStore: false, + inited: observable, + getServerStatus: flow, + init: flow, + setProfile: action, + switchServerStatus: flow, + getProfile: flow, + status: observable, + profile: observable, + }); + if (this.rootStore.login.loggedIn) { + this.init(); + } + } + + * init() { + yield this.getServerStatus(); + if (!this.profile) { + yield this.getProfile(); + } + this.inited = true; + } + + setProfile(profile: ProfileInfo) { + this.profile = profile; + } + + * getProfile() { + const response = yield globalApi.getProfile(); + const { result } = errorChecker(response); + if (result) { + this.profile = new ProfileInfo(result); + } + } + + * getServerStatus() { + const response = yield globalApi.status(); + const { result } = errorChecker(response); + if (result) { + this.status = new ServerStatus(result); + } + } + + * switchServerStatus(enable: boolean) { + const response = yield globalApi.dnsConfig({ + protection_enabled: enable, + }); + const { result } = errorChecker(response); + if (result) { + yield this.getServerStatus(); + } + } +} diff --git a/client2/src/store/stores/ui.ts b/client2/src/store/stores/ui.ts index 648127a7..c0d0377e 100644 --- a/client2/src/store/stores/ui.ts +++ b/client2/src/store/stores/ui.ts @@ -1,25 +1,36 @@ -import { makeAutoObservable, observable } from 'mobx'; +import React from 'react'; +import { makeAutoObservable, observable, action } from 'mobx'; +import { translate } from '@adguard/translate'; -import Translator, { DEFAULT_LOCALE, messages, Locale, reactFormater } from 'Localization'; +import { Locale, DEFAULT_LOCALE, i18n } from 'Localization'; import { Store } from 'Store'; +import { Store as InstallStore } from 'Store/installStore'; export default class UI { - rootStore: Store; + rootStore: Store | InstallStore; currentLang = DEFAULT_LOCALE; - intl = new Translator(Locale.en, messages, DEFAULT_LOCALE, reactFormater); + intl = translate.createReactTranslator(i18n(this.currentLang), React); - constructor(rootStore: Store) { + sidebarOpen = false; + + constructor(rootStore: Store | InstallStore) { this.rootStore = rootStore; makeAutoObservable(this, { intl: observable.struct, rootStore: false, + sidebarOpen: observable, + toggleSidebar: action, }); } updateLang = (lang: Locale) => { this.currentLang = lang; - this.intl = this.intl.updateTranslator(lang); + this.intl = translate.createReactTranslator(i18n(this.currentLang), React); + }; + + toggleSidebar = () => { + this.sidebarOpen = !this.sidebarOpen; }; } diff --git a/client2/src/store/stores/utils.ts b/client2/src/store/stores/utils.ts new file mode 100644 index 00000000..df679d58 --- /dev/null +++ b/client2/src/store/stores/utils.ts @@ -0,0 +1,38 @@ +import { Store } from 'Store'; + +export interface IStore { + rootStore: Store; + init: () => void; + inited: boolean; +} +/* +Each store should implement IStore to work properly if user not loggged in +and after log in like: + +import { flow, makeAutoObservable, observable } from 'mobx'; +import { Store } from 'Store'; +import { IStore } from './utils'; + +export default class SomeStore implements IStore { + rootStore: Store; + + inited = false; + + constructor(rootStore: Store) { + this.rootStore = rootStore; + makeAutoObservable(this, { + rootStore: false, + inited: observable, + init: flow, + }); + if (this.rootStore.login.loggedIn) { + this.init(); + } + } + + * init() { + this.inited = true; + } +} + +*/ diff --git a/client2/tsconfig.json b/client2/tsconfig.json index 5c70b792..fa3398ad 100644 --- a/client2/tsconfig.json +++ b/client2/tsconfig.json @@ -24,7 +24,7 @@ "Helpers/*": ["lib/helpers/*"], "Lib/*": ["lib/*"], "Localization": ["localization/index"], - "Routes": ["lib/routes"], + "Paths": ["components/App/Routes/Paths"], "Store": ["store/store"], "Store/*": ["store/*"] }, @@ -32,7 +32,8 @@ "react", "react-dom", "node" - ] + ], + "useDefineForClassFields": true }, "include": ["src/**/*", "./declaration.d.ts"], "exclude": ["./node_modules/**/*", "./scripts/generator/**/*"] diff --git a/client2/yarn.lock b/client2/yarn.lock index a0891ba1..d171bb54 100644 --- a/client2/yarn.lock +++ b/client2/yarn.lock @@ -2,46 +2,39 @@ # yarn lockfile v1 -"@ant-design/colors@^3.1.0": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-3.2.2.tgz#5ad43d619e911f3488ebac303d606e66a8423903" - integrity sha512-YKgNbG2dlzqMhA9NtI3/pbY16m3Yl/EeWBRa+lB1X1YaYxHrxNexiQYCLTWO/uDvAjLFMEDU+zR901waBtMtjQ== - dependencies: - tinycolor2 "^1.4.1" +"@adguard/translate@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@adguard/translate/-/translate-0.2.0.tgz#6b74b037167ec0cae32e6b7423cb35eb1b08a1b3" + integrity sha512-zvpaEKMABcCCuEr7WpGRGgfdzp8L0OMuM0KUI7uwWapX+/i75ifffbWnKxi/LUdZDJu8kJPnmLN/DD5hngZuQQ== -"@ant-design/colors@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-4.0.5.tgz#d7d100d7545cca8f624954604a6892fc48ba5aae" - integrity sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q== +"@ant-design/colors@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-5.0.1.tgz#09670f2f44a7473d7bc01be901c48ec10f12c7a4" + integrity sha512-x1TUaRILaqy3zgFNo+kIqOa3eTYPt81H1/3E4dCjDP4Qvk/xaPEizLDFdRUcIx0cWwyu2LklwfyLHWpbYK8v6A== dependencies: - tinycolor2 "^1.4.1" - -"@ant-design/css-animation@^1.7.2": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.3.tgz#60a1c970014e86b28f940510d69e503e428f1136" - integrity sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA== + "@ctrl/tinycolor" "^3.3.1" "@ant-design/icons-svg@^4.0.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.1.0.tgz#480b025f4b20ef7fe8f47d4a4846e4fee84ea06c" integrity sha512-Fi03PfuUqRs76aI3UWYpP864lkrfPo0hluwGqh7NJdLhvH4iRDc3jbJqZIvRDLHKbXrvAfPPV3+zjUccfFvWOQ== -"@ant-design/icons@^4.2.1", "@ant-design/icons@^4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.2.2.tgz#6533c5a02aec49238ec4748074845ad7d85a4f5e" - integrity sha512-DrVV+wcupnHS7PehJ6KiTcJtAR5c25UMgjGECCc6pUT9rsvw0AuYG+a4HDjfxEQuDqKTHwW+oX/nIvCymyLE8Q== +"@ant-design/icons@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-4.4.0.tgz#d4e4ba5910454e1d3f67a802d2aad9ee75a51dea" + integrity sha512-+X44IouK56JbP3r7zM+Zoykv5wQlXBlxY0NTaFXGpiyYSS/Bh6HIo9aTF62QkSuDTqA3UpeNVTRFioKKRmkWDQ== dependencies: - "@ant-design/colors" "^3.1.0" + "@ant-design/colors" "^5.0.0" "@ant-design/icons-svg" "^4.0.0" - "@babel/runtime" "^7.10.4" + "@babel/runtime" "^7.11.2" classnames "^2.2.6" insert-css "^2.0.0" rc-util "^5.0.1" -"@ant-design/react-slick@~0.27.0": - version "0.27.11" - resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.27.11.tgz#ce788312ed8e64fcba2f7bb4556f47486b407c6e" - integrity sha512-KPJ1lleHW11bameFauI77Lb9N7O/4ulT1kplVdRQykWLv3oKVSGKVaekC3DM/Z0MYmKfCXCucpFnfgGMEHNM+w== +"@ant-design/react-slick@~0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-0.28.1.tgz#2e0720838cb57ab8818384dcc96b2a8c61fcd01e" + integrity sha512-Uk+GNexHOmiK3BMk/xvliNsNt+LYnN49u5o4lqeuMKXJlNqE9kGpEF03KpxDqu/zybO0/0yAJALha8oPtR5iHA== dependencies: "@babel/runtime" "^7.10.4" classnames "^2.2.5" @@ -49,73 +42,72 @@ lodash "^4.17.15" resize-observer-polyfill "^1.5.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/core@>=7.9.0": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" + "@babel/generator" "^7.12.10" "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" lodash "^4.17.19" - resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" - integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== +"@babel/generator@^7.12.10", "@babel/generator@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" + integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.12.11" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== +"@babel/helper-function-name@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" + integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-get-function-arity" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/types" "^7.12.11" -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== +"@babel/helper-get-function-arity@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" + integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.10" -"@babel/helper-member-expression-to-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" - integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== +"@babel/helper-member-expression-to-functions@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.12.7" "@babel/helper-module-imports@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" - integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.12.5" "@babel/helper-module-transforms@^7.12.1": version "7.12.1" @@ -132,22 +124,22 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== +"@babel/helper-optimise-call-expression@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" + integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.10" "@babel/helper-replace-supers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" - integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" + integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/helper-member-expression-to-functions" "^7.12.7" + "@babel/helper-optimise-call-expression" "^7.12.10" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.11" "@babel/helper-simple-access@^7.12.1": version "7.12.1" @@ -156,26 +148,26 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== +"@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" + integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.11" -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/helpers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" - integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== +"@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== dependencies: "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" "@babel/highlight@^7.10.4": version "7.10.4" @@ -186,48 +178,48 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" - integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== +"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" + integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" - integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== +"@babel/template@^7.10.4", "@babel/template@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" -"@babel/traverse@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" - integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== +"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" + integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/code-frame" "^7.12.11" + "@babel/generator" "^7.12.11" + "@babel/helper-function-name" "^7.12.11" + "@babel/helper-split-export-declaration" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/types" "^7.12.12" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" - integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== +"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" + "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" to-fast-properties "^2.0.0" @@ -236,6 +228,16 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== +"@ctrl/tinycolor@^3.3.1": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.3.3.tgz#980487763bc7c9238d6d88d1ac0dee2d4df3df68" + integrity sha512-v75yutF4BDMv9weDQVM+K5XEfjiODhugSV729pnoxtBDO61ij2CsDnQa4N4E9xGaH3/FX5ASZjnajljT2F71tA== + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" + integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== + "@dsherret/to-absolute-glob@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1f6475dc8bd974cea07a2daf3864b317b1dd332c" @@ -244,10 +246,10 @@ is-absolute "^1.0.0" is-negated-glob "^1.0.0" -"@eslint/eslintrc@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" - integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -256,100 +258,101 @@ ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.4" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.4" 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== + version "1.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.0.tgz#4ef8a53d727b9e43facf35404caf55ebf92cfec8" + integrity sha512-Iv2iq0JuyYjKeFkSR4LPaCdDZwlGK9X2cP/01nJcp3yMJ1FjNd9vpiEYvLUgzBxKPg2SFmaOhizoQsPc0LWeOQ== dependencies: mkdirp "^1.0.4" + rimraf "^2.7.1" -"@sentry/browser@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.27.0.tgz#35b77f076fb5f08c91eff23f3c067ee15df0ab90" - integrity sha512-AByUVSy5YctTxWGA6HaeTkZXDCmHbeurqLkR6U9h4HzEHZq3laxrYQ1HiWcaW1IgFDqZcEmD14kDOVY4GhF3QQ== +"@sentry/browser@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-5.30.0.tgz#c28f49d551db3172080caef9f18791a7fd39e3b3" + integrity sha512-rOb58ZNVJWh1VuMuBG1mL9r54nZqKeaIlwSlvzJfc89vyfd7n6tQ1UXMN383QBz/MS5H5z44Hy5eE+7pCrYAfw== dependencies: - "@sentry/core" "5.27.0" - "@sentry/types" "5.27.0" - "@sentry/utils" "5.27.0" + "@sentry/core" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" tslib "^1.9.3" -"@sentry/core@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.27.0.tgz#661b2fd1beecaa37c013a6c364330fa29c847b3c" - integrity sha512-ddvAxVszsHzFzGedii1NxfKU3GxAEGJV5eXNlA2hqS0/OKl+IOjuI6aJjg55LMTEEejqr9djXqDMk6y5av6UKg== +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== dependencies: - "@sentry/hub" "5.27.0" - "@sentry/minimal" "5.27.0" - "@sentry/types" "5.27.0" - "@sentry/utils" "5.27.0" + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" tslib "^1.9.3" -"@sentry/hub@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.27.0.tgz#dcd7b36d216997f0283bd3334cbce8004d56ef89" - integrity sha512-Qe4nndgDEY8n3kKEWJTw5M201dgsoB9ZQ10483cVpGCtOfZZuzXEr4EaLG3BefH8YFvlgUP3YlxD7XFoJioRjg== +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== dependencies: - "@sentry/types" "5.27.0" - "@sentry/utils" "5.27.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" tslib "^1.9.3" -"@sentry/minimal@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.27.0.tgz#8c2fdcf9cd1e59d8ff1848a7905bac304f8e206b" - integrity sha512-KidWjo2jNd8IwPhEIDC0YddjwuIdVxTEsmpRkZ6afuiR5rMQsiqA0EwsndWiAjs67qxQRj/VD/1Xghxe0nHzXQ== +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== dependencies: - "@sentry/hub" "5.27.0" - "@sentry/types" "5.27.0" + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" tslib "^1.9.3" "@sentry/react@^5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.27.0.tgz#ef503b0c28b03088f1de7693f75276ccc96c5e14" - integrity sha512-7dYKhQ6tgDgAed1neXjID9mEviX9IzL/OkG+hU8zffUqcUtMziVHtvozf3ePz75ReRR/Bumc6fGnSMlnEcwbKg== + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-5.30.0.tgz#320e05f766b6a26faefa8d76d1101fd50c69f541" + integrity sha512-dvn4mqCgbeEuUXEGp5P9PaW5j4GWTFUSdx/yG8f9IxNZv5zM+7otjog9ukrubFZvlxVxD/PrIxK0MhadfFY/Dw== dependencies: - "@sentry/browser" "5.27.0" - "@sentry/minimal" "5.27.0" - "@sentry/types" "5.27.0" - "@sentry/utils" "5.27.0" + "@sentry/browser" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" -"@sentry/types@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.27.0.tgz#cea288d02c727ef83541768b8738e6a829dfc831" - integrity sha512-coB2bMDxmzTwIWcXbzbnE2JtEqDkvmK9+KyZZNI/Mk3wwabFYqL7hOnqXB45/+hx+6l9/siWmB1l5um3tzqdOw== +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== -"@sentry/utils@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.27.0.tgz#21c15401b43041b1208521465c09c64eafc2e0ff" - integrity sha512-XrdoxOsjqF9AVmeCefNgY0r3lvZBj34bzsG3TI8Z1bjQKB3iF/2yAI/bdo+sUqAiJiiPSk5p6SiPkyeTsSdBhg== +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== dependencies: - "@sentry/types" "5.27.0" + "@sentry/types" "5.30.0" tslib "^1.9.3" "@stylelint/postcss-css-in-js@^0.37.2": @@ -359,13 +362,13 @@ dependencies: "@babel/core" ">=7.9.0" -"@stylelint/postcss-markdown@^0.36.1": - version "0.36.1" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz#829b87e6c0f108014533d9d7b987dc9efb6632e8" - integrity sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw== +"@stylelint/postcss-markdown@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391" + integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ== dependencies: - remark "^12.0.0" - unist-util-find-all-after "^3.0.1" + remark "^13.0.0" + unist-util-find-all-after "^3.0.2" "@ts-morph/common@~0.6.0": version "0.6.0" @@ -385,9 +388,9 @@ integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== "@types/classnames@^2.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.10.tgz#cc658ca319b6355399efc1f5b9e818f1a24bf999" - integrity sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ== + version "2.2.11" + resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf" + integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw== "@types/eslint-scope@^3.7.0": version "3.7.0" @@ -405,10 +408,10 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.45": - version "0.0.45" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" - integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== +"@types/estree@*", "@types/estree@^0.0.46": + version "0.0.46" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" + integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== "@types/glob@^7.1.1": version "7.1.3" @@ -437,36 +440,43 @@ integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== "@types/http-proxy@^1.17.4": - version "1.17.4" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" - integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== + version "1.17.5" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.5.tgz#c203c5e6e9dc6820d27a40eb1e511c70a220423d" + integrity sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q== dependencies: "@types/node" "*" "@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/mdast@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + dependencies: + "@types/unist" "*" + "@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/minimist@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" - integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" + integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== "@types/node@*": - version "14.14.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.0.tgz#f1091b6ad5de18e8e91bdbd43ec63f13de372538" - integrity sha512-BfbIHP9IapdupGhq/hc+jT5dyiBVZ2DdeC5WwJWQWDb0GijQlzUFAeIQn/2GtvZcd2HVUU7An8felIICFTC2qg== + version "14.14.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" + integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -494,16 +504,16 @@ integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== "@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== + version "16.9.10" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.10.tgz#4485b0bec3d41f856181b717f45fd7831101156f" + integrity sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw== dependencies: - "@types/react" "*" + "@types/react" "^16" "@types/react-redux@^7.1.9": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.9.tgz#280c13565c9f13ceb727ec21e767abe0e9b4aec3" - integrity sha512-mpC0jqxhP4mhmOl3P4ipRsgTgbNofMRXJb08Ms6gekViLj61v1hOZEKWDCyWsdONr6EjEA6ZHXC446wdywDe0w== + version "7.1.16" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.16.tgz#0fbd04c2500c12105494c83d4a3e45c084e3cb21" + integrity sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" @@ -511,26 +521,34 @@ redux "^4.0.0" "@types/react-router-dom@^5.1.6": - version "5.1.6" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.6.tgz#07b14e7ab1893a837c8565634960dc398564b1fb" - integrity sha512-gjrxYqxz37zWEdMVvQtWPFMFj1dRDb4TGOcgyOfSXTrEXdF92L00WE3C471O3TV/RF1oskcStkXsOU0Ete4s/g== + version "5.1.7" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.7.tgz#a126d9ea76079ffbbdb0d9225073eb5797ab7271" + integrity sha512-D5mHD6TbdV/DNHYsnwBTv+y73ei+mMjrkGrla86HthE4/PVvL1J94Bu3qABU+COXzpL23T1EZapVVpwHuBXiUg== dependencies: "@types/history" "*" "@types/react" "*" "@types/react-router" "*" "@types/react-router@*": - version "5.1.8" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.8.tgz#4614e5ba7559657438e17766bb95ef6ed6acc3fa" - integrity sha512-HzOyJb+wFmyEhyfp4D4NYrumi+LQgQL/68HvJO+q6XtuHSDvw6Aqov7sCAhjbNq3bUPgPqbdvjXC5HeB2oEAPg== + version "5.1.11" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.11.tgz#b01ce4cb21bf7d6b32edc862fc1e2c0088044b5b" + integrity sha512-ofHbZMlp0Y2baOHgsWBQ4K3AttxY61bDMkwTiBOkPg7U6C/3UwwB5WaIx28JmSVi/eX3uFEMRo61BV22fDQIvg== dependencies: "@types/history" "*" "@types/react" "*" -"@types/react@*", "@types/react@^16.9.53": - version "16.9.53" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.53.tgz#40cd4f8b8d6b9528aedd1fff8fcffe7a112a3d23" - integrity sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw== +"@types/react@*": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.0.tgz#5af3eb7fad2807092f0046a1302b7823e27919b8" + integrity sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/react@^16", "@types/react@^16.9.53": + version "16.14.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.2.tgz#85dcc0947d0645349923c04ccef6018a1ab7538c" + integrity sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -546,30 +564,30 @@ integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== "@types/uglify-js@*": - version "3.11.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.0.tgz#2868d405cc45cd9dc3069179052103032c33afbc" - integrity sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q== + version "3.11.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.1.tgz#97ff30e61a0aa6876c270b5f538737e2d6ab8ceb" + integrity sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q== dependencies: source-map "^0.6.1" -"@types/unist@^2.0.0", "@types/unist@^2.0.2": +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== "@types/webpack-sources@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.0.0.tgz#08216ab9be2be2e1499beaebc4d469cec81e82a7" - integrity sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.7.3" "@types/webpack@^4.41.8": - version "4.41.23" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.23.tgz#1925f42a7325be4ae0fce38329f1cc27768fcda7" - integrity sha512-ojA4CupZg8RCzVJLugWlvqrHpT59GWhqFxbinlsnvk10MjQCWB+ot7XDACctbWhnhtdhYK7+HOH1JxkVLiZhMg== + version "4.41.26" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -579,27 +597,28 @@ source-map "^0.6.0" "@typescript-eslint/eslint-plugin@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.5.0.tgz#4ff9c1d8535ae832e239f0ef6d7210592d9b0b07" - integrity sha512-mjb/gwNcmDKNt+6mb7Aj/TjKzIJjOPcoCJpjBQC9ZnTRnBt1p4q5dJSSmIqAtsZ/Pff5N+hJlbiPc5bl6QN4OQ== + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.1.tgz#22dd301ce228aaab3416b14ead10b1db3e7d3180" + integrity sha512-5JriGbYhtqMS1kRcZTQxndz1lKMwwEXKbwZbkUZNnp6MJX0+OVXnG0kOlBZP4LUAxEyzu3cs+EXd/97MJXsGfw== dependencies: - "@typescript-eslint/experimental-utils" "4.5.0" - "@typescript-eslint/scope-manager" "4.5.0" + "@typescript-eslint/experimental-utils" "4.14.1" + "@typescript-eslint/scope-manager" "4.14.1" debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.5.0.tgz#547fe1158609143ce60645383aa1d6f83ada28df" - integrity sha512-bW9IpSAKYvkqDGRZzayBXIgPsj2xmmVHLJ+flGSoN0fF98pGoKFhbunIol0VF2Crka7z984EEhFi623Rl7e6gg== +"@typescript-eslint/experimental-utils@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.1.tgz#a5c945cb24dabb96747180e1cfc8487f8066f471" + integrity sha512-2CuHWOJwvpw0LofbyG5gvYjEyoJeSvVH2PnfUQSn0KQr4v8Dql2pr43ohmx4fdPQ/eVoTSFjTi/bsGEXl/zUUQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.5.0" - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/typescript-estree" "4.5.0" + "@typescript-eslint/scope-manager" "4.14.1" + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/typescript-estree" "4.14.1" eslint-scope "^5.0.0" eslint-utils "^2.0.0" @@ -614,15 +633,23 @@ debug "^4.1.1" "@typescript-eslint/parser@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.5.0.tgz#b2d659f25eec0041c7bc5660b91db1eefe8d7122" - integrity sha512-xb+gmyhQcnDWe+5+xxaQk5iCw6KqXd8VQxGiTeELTMoYeRjpocZYYRP1gFVM2C8Yl0SpUvLa1lhprwqZ00w3Iw== + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.14.1.tgz#3bd6c24710cd557d8446625284bcc9c6d52817c6" + integrity sha512-mL3+gU18g9JPsHZuKMZ8Z0Ss9YP1S5xYZ7n68Z98GnPq02pYNQuRXL85b9GYhl6jpdvUc45Km7hAl71vybjUmw== dependencies: - "@typescript-eslint/scope-manager" "4.5.0" - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/typescript-estree" "4.5.0" + "@typescript-eslint/scope-manager" "4.14.1" + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/typescript-estree" "4.14.1" debug "^4.1.1" +"@typescript-eslint/scope-manager@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.14.1.tgz#8444534254c6f370e9aa974f035ced7fe713ce02" + integrity sha512-F4bjJcSqXqHnC9JGUlnqSa3fC2YH5zTtmACS1Hk+WX/nFB0guuynVK5ev35D4XZbdKjulXBAQMyRr216kmxghw== + dependencies: + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/visitor-keys" "4.14.1" + "@typescript-eslint/scope-manager@4.4.1": version "4.4.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.4.1.tgz#d19447e60db2ce9c425898d62fa03b2cce8ea3f9" @@ -631,23 +658,29 @@ "@typescript-eslint/types" "4.4.1" "@typescript-eslint/visitor-keys" "4.4.1" -"@typescript-eslint/scope-manager@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.5.0.tgz#8dfd53c3256d4357e7d66c2fc8956835f4d239be" - integrity sha512-C0cEO0cTMPJ/w4RA/KVe4LFFkkSh9VHoFzKmyaaDWAnPYIEzVCtJ+Un8GZoJhcvq+mPFXEsXa01lcZDHDG6Www== - dependencies: - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/visitor-keys" "4.5.0" +"@typescript-eslint/types@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.1.tgz#b3d2eb91dafd0fd8b3fce7c61512ac66bd0364aa" + integrity sha512-SkhzHdI/AllAgQSxXM89XwS1Tkic7csPdndUuTKabEwRcEfR8uQ/iPA3Dgio1rqsV3jtqZhY0QQni8rLswJM2w== "@typescript-eslint/types@4.4.1": version "4.4.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.4.1.tgz#c507b35cf523bc7ba00aae5f75ee9b810cdabbc1" integrity sha512-KNDfH2bCyax5db+KKIZT4rfA8rEk5N0EJ8P0T5AJjo5xrV26UAzaiqoJCxeaibqc0c/IvZxp7v2g3difn2Pn3w== -"@typescript-eslint/types@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.5.0.tgz#98256e07bad1c8d15d0c9627ebec82fd971bb3c3" - integrity sha512-n2uQoXnyWNk0Les9MtF0gCK3JiWd987JQi97dMSxBOzVoLZXCNtxFckVqt1h8xuI1ix01t+iMY4h4rFMj/303g== +"@typescript-eslint/typescript-estree@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.1.tgz#20d3b8c8e3cdc8f764bdd5e5b0606dd83da6075b" + integrity sha512-M8+7MbzKC1PvJIA8kR2sSBnex8bsR5auatLCnVlNTJczmJgqRn8M+sAlQfkEq7M4IY3WmaNJ+LJjPVRrREVSHQ== + dependencies: + "@typescript-eslint/types" "4.14.1" + "@typescript-eslint/visitor-keys" "4.14.1" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" "@typescript-eslint/typescript-estree@4.4.1": version "4.4.1" @@ -663,19 +696,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.5.0.tgz#d50cf91ae3a89878401111031eb6fb6d03554f64" - integrity sha512-gN1mffq3zwRAjlYWzb5DanarOPdajQwx5MEWkWCk0XvqC8JpafDTeioDoow2L4CA/RkYZu7xEsGZRhqrTsAG8w== +"@typescript-eslint/visitor-keys@4.14.1": + version "4.14.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.1.tgz#e93c2ff27f47ee477a929b970ca89d60a117da91" + integrity sha512-TAblbDXOI7bd0C/9PE1G+AFo7R5uc+ty1ArDoxmrC1ah61Hn6shURKy7gLdRb1qKJmjHkqu5Oq+e4Kt0jwf1IA== dependencies: - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/visitor-keys" "4.5.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" + "@typescript-eslint/types" "4.14.1" + eslint-visitor-keys "^2.0.0" "@typescript-eslint/visitor-keys@4.4.1": version "4.4.1" @@ -685,170 +712,143 @@ "@typescript-eslint/types" "4.4.1" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.5.0.tgz#b59f26213ac597efe87f6b13cf2aabee70542af0" - integrity sha512-UHq4FSa55NDZqscRU//O5ROFhHa9Hqn9KWTEvJGTArtTQp5GKv9Zqf6d/Q3YXXcFv4woyBml7fJQlQ+OuqRcHA== +"@webassemblyjs/ast@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" + integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== dependencies: - "@typescript-eslint/types" "4.5.0" - eslint-visitor-keys "^2.0.0" + "@webassemblyjs/helper-numbers" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== +"@webassemblyjs/floating-point-hex-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" + integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== + +"@webassemblyjs/helper-api-error@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" + integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== + +"@webassemblyjs/helper-buffer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" + integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== + +"@webassemblyjs/helper-numbers@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" + integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@xtuc/long" "4.2.2" -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== +"@webassemblyjs/helper-wasm-bytecode@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" + integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@webassemblyjs/helper-wasm-section@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" + integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== +"@webassemblyjs/ieee754@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" + integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/leb128@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" + integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/utf8@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" + integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== +"@webassemblyjs/wasm-edit@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" + integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/helper-wasm-section" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-opt" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" + "@webassemblyjs/wast-printer" "1.11.0" -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/wasm-gen@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" + integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/wasm-opt@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" + integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-buffer" "1.11.0" + "@webassemblyjs/wasm-gen" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/wasm-parser@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" + integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/helper-api-error" "1.11.0" + "@webassemblyjs/helper-wasm-bytecode" "1.11.0" + "@webassemblyjs/ieee754" "1.11.0" + "@webassemblyjs/leb128" "1.11.0" + "@webassemblyjs/utf8" "1.11.0" -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== +"@webassemblyjs/wast-printer@1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" + integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" + "@webassemblyjs/ast" "1.11.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.0.tgz#2aff5f1ebc6f793c13ba9b2a701d180eab17f5ee" + integrity sha512-Un0SdBoN1h4ACnIO7EiCjWuyhNI0Jl96JC+63q6xi4HDUYRZn8Auluea9D+v9NWKc5J4sICVEltdBaVjLX39xw== -"@webpack-cli/info@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.1.0.tgz#c596d5bc48418b39df00c5ed7341bf0f102dbff1" - integrity sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ== +"@webpack-cli/info@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.1.tgz#af98311f983d0b9fce7284cfcf1acaf1e9f4879c" + integrity sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ== dependencies: envinfo "^7.7.3" -"@webpack-cli/serve@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.1.0.tgz#13ad38f89b6e53d1133bac0006a128217a6ebf92" - integrity sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg== +"@webpack-cli/serve@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.2.2.tgz#1f8eee44f96524756268f5e3f43e9d943f864d41" + integrity sha512-03GkWxcgFfm8+WIwcsqJb9agrSDNDDoxaNnexPnCCexP5SCE4IgFd9lNpSy+K2nFqVMpgTFw6SwbmVAVTndVew== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -868,7 +868,7 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.2.0: +acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== @@ -879,16 +879,9 @@ acorn@^7.4.0: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" - integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== - -add-dom-event-listener@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" - integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== - dependencies: - object-assign "4.x" + version "8.0.5" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7" + integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg== aggregate-error@^3.0.0: version "3.1.0" @@ -908,7 +901,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -918,6 +911,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -968,59 +971,55 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: color-convert "^2.0.1" antd-dayjs-webpack-plugin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/antd-dayjs-webpack-plugin/-/antd-dayjs-webpack-plugin-1.0.1.tgz#cc31cc05c9bd69652a4bddab19eb49726bebe0d5" - integrity sha512-1UWGAnv856s5r/2bi6KJvWMeevDEHwFFdHaymZElW5kbH06A/xP7JcZ75UdYoxqny3scD22DWErbGg+vQ9RNdg== + version "1.0.6" + resolved "https://registry.yarnpkg.com/antd-dayjs-webpack-plugin/-/antd-dayjs-webpack-plugin-1.0.6.tgz#7d98bcb51422248b8cd4a32e352a0425a3bffa3a" + integrity sha512-UlK3BfA0iE2c5+Zz/Bd2iPAkT6cICtrKG4/swSik5MZweBHtgmu1aUQCHvICdiv39EAShdZy/edfP6mlkS/xXg== antd@^4.7.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/antd/-/antd-4.7.2.tgz#6be4c34de141786bbc5425c743d0a3b990042641" - integrity sha512-baMyvvNRB0rqhUxi4cSaH4AG9Cd2W7TjAJnOrVTow8y5E45g3JU31+dAVUHWvtht6LTiWh4BLiKfCdZrSYBeEA== + version "4.11.2" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.11.2.tgz#28c20409e2d186d8915cdc6eacf1cfb2b82d9b5b" + integrity sha512-cdjPRlmamETae6c2uvQHRXDN5/T7I/zPiByaeolbq/FRG14JYv9hyUaydXI7n4s6rynPQ2Q6bFdCQ+/r9xZYbA== dependencies: - "@ant-design/colors" "^4.0.5" - "@ant-design/css-animation" "^1.7.2" - "@ant-design/icons" "^4.2.1" - "@ant-design/react-slick" "~0.27.0" + "@ant-design/colors" "^5.0.0" + "@ant-design/icons" "^4.4.0" + "@ant-design/react-slick" "~0.28.1" "@babel/runtime" "^7.11.2" array-tree-filter "^2.1.0" classnames "^2.2.6" copy-to-clipboard "^3.2.0" lodash "^4.17.20" moment "^2.25.3" - omit.js "^2.0.2" - raf "^3.4.1" - rc-animate "~3.1.0" rc-cascader "~1.4.0" rc-checkbox "~2.3.0" - rc-collapse "~2.0.0" - rc-dialog "~8.4.0" - rc-drawer "~4.1.0" + rc-collapse "~3.1.0" + rc-dialog "~8.5.1" + rc-drawer "~4.2.0" rc-dropdown "~3.2.0" - rc-field-form "~1.12.0" - rc-image "~3.2.1" + rc-field-form "~1.18.0" + rc-image "~5.1.1" rc-input-number "~6.1.0" rc-mentions "~1.5.0" - rc-menu "~8.8.2" - rc-motion "^2.2.0" + rc-menu "~8.10.0" + rc-motion "^2.4.0" rc-notification "~4.5.2" - rc-pagination "~3.1.0" - rc-picker "~2.3.0" + rc-pagination "~3.1.2" + rc-picker "~2.5.1" rc-progress "~3.1.0" - rc-rate "~2.8.2" - rc-resize-observer "^0.2.3" - rc-select "~11.4.0" - rc-slider "~9.5.2" + rc-rate "~2.9.0" + rc-resize-observer "^1.0.0" + rc-select "~12.1.0" + rc-slider "~9.7.1" rc-steps "~4.1.0" rc-switch "~3.2.0" - rc-table "~7.10.0" + rc-table "~7.12.0" rc-tabs "~11.7.0" rc-textarea "~0.3.0" rc-tooltip "~5.0.0" - rc-tree "~3.10.0" - rc-tree-select "~4.1.1" - rc-trigger "~5.0.3" - rc-upload "~3.3.1" - rc-util "^5.1.0" + rc-tree "~4.1.0" + rc-tree-select "~4.3.0" + rc-trigger "^5.2.1" + rc-upload "~3.3.4" + rc-util "^5.7.0" scroll-into-view-if-needed "^2.2.25" warning "^4.0.3" @@ -1059,11 +1058,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-back@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90" - integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg== - array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -1079,13 +1073,15 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== +array-includes@^3.1.1, array-includes@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" is-string "^1.0.5" array-tree-filter@^2.1.0: @@ -1116,20 +1112,22 @@ array-unique@^0.3.2: integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.flat@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" array.prototype.flatmap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" - integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" function-bind "^1.1.1" arrify@^1.0.1: @@ -1147,11 +1145,6 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -1168,9 +1161,9 @@ async-limiter@~1.0.0: integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-validator@^3.0.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.4.0.tgz#871b3e594124bf4c4eb7bcd1a9e78b44f3b09cae" - integrity sha512-VrFk4eYiJAWKskEz115iiuCf9O0ftnMMPXrOFMqyzGH2KxO7YwncKyn/FgOOP+0MDHMfXL7gLExagCutaZGigA== + version "3.5.1" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.1.tgz#cd62b9688b2465f48420e27adb47760ab1b5559f" + integrity sha512-DDmKA7sdSAJtTVeNZHrnr2yojfFaoeW8MfQN8CeuXg8DDQHTqKk9Fdv38dSvnesHoO8MUwMI2HphOeSyIF+wmQ== async@^2.6.2: version "2.6.3" @@ -1190,15 +1183,15 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.0.1.tgz#e2d9000f84ebd98d77b7bc16f8adb2ff1f7bb946" - integrity sha512-aQo2BDIsoOdemXUAOBpFv4ZQa2DrOtEufarYhtFsK1088Ca0TUwu/aQWf0M3mrILXZ3mTIVn1lR3hPW8acacsw== + version "10.2.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.2.3.tgz#2834b55b75cfc10fa80c66000a66dc94b7136804" + integrity sha512-vlz+iv+EnLkVaTgX8wApfYzmK3LUfK8Z9XAnmflzxMy/+oFuNK8fVGQV79SOpBv4jxk2YQJimw4hXIKZ29570A== dependencies: - browserslist "^4.14.5" - caniuse-lite "^1.0.30001137" + browserslist "^4.16.1" + caniuse-lite "^1.0.30001178" colorette "^1.2.1" + fraction.js "^4.0.13" normalize-range "^0.1.2" - num2fraction "^1.2.2" postcss-value-parser "^4.1.0" autoprefixer@^9.6.1, autoprefixer@^9.8.6: @@ -1323,15 +1316,16 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.6.4: - version "4.14.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" - integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^4.6.4: + version "4.16.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" + integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== dependencies: - caniuse-lite "^1.0.30001135" - electron-to-chromium "^1.3.571" - escalade "^3.1.0" - node-releases "^1.1.61" + caniuse-lite "^1.0.30001173" + colorette "^1.2.1" + electron-to-chromium "^1.3.634" + escalade "^3.1.1" + node-releases "^1.1.69" buffer-from@^1.0.0: version "1.1.1" @@ -1391,13 +1385,13 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" - get-intrinsic "^1.0.0" + get-intrinsic "^1.0.2" caller-callsite@^2.0.0: version "2.0.0" @@ -1424,12 +1418,12 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" + pascal-case "^3.1.2" + tslib "^2.0.3" camelcase-css@^2.0.1: version "2.0.1" @@ -1450,10 +1444,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.1.0.tgz#27dc176173725fb0adf8a48b647f4d7871944d78" - integrity sha512-WCMml9ivU60+8rEJgELlFp1gxFcEGxwYleE3bziHEDeqsqAWGHdimB7beBFGjLzVNgPGyDsfgXLQEYMpmIFnVQ== +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-api@^3.0.0: version "3.0.0" @@ -1465,17 +1459,12 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001135, caniuse-lite@^1.0.30001137: - version "1.0.30001150" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001150.tgz#6d0d829da654b0b233576de00335586bc2004df1" - integrity sha512-kiNKvihW0m36UhAFnl7bOAv0i1K1f6wpfVtTF5O5O82XzgtBnb05V0XeV3oZ968vfg2sRNChsHw8ASH2hDfoYQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173, caniuse-lite@^1.0.30001178: + version "1.0.30001180" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001180.tgz#67abcd6d1edf48fa5e7d1e84091d1d65ab76e33b" + integrity sha512-n8JVqXuZMVSPKiPiypjFtDTXc4jWIdjxull0f92WLo7e1MSi3uJ3NvveakSh/aCl1QKFAvIz3vIj0v+0K+FrXw== -ccount@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" - integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== - -chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.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== @@ -1492,11 +1481,6 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -character-entities-html4@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" - integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== - character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -1543,11 +1527,6 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1615,14 +1594,9 @@ coa@^2.0.2: q "^1.1.2" code-block-writer@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-10.1.0.tgz#54fc410ebef2af836d9c2314ac40af7d7b37eee9" - integrity sha512-RG9hpXtWFeUWhuUav1YuP/vGcyncW+t90yJLk9fNZs1De2OuHTHKAKThVCokt29PYq5RoJ0QSZaIZ+rvPO23hA== - -collapse-white-space@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" - integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-10.1.1.tgz#ad5684ed4bfb2b0783c8b131281ae84ee640a42f" + integrity sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw== collection-visit@^1.0.0: version "1.0.0" @@ -1677,16 +1651,6 @@ colorette@^1.2.1: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== -command-line-usage@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f" - integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== - dependencies: - array-back "^4.0.1" - chalk "^2.4.2" - table-layout "^1.0.1" - typical "^5.2.0" - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -1698,20 +1662,15 @@ commander@^4.1.1: integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" - integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -compare-versions@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" - integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== - component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1747,10 +1706,10 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -confusing-browser-globals@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== +confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== connect-history-api-fallback@^1.6.0: version "1.6.0" @@ -1791,6 +1750,13 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +copy-anything@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.1.tgz#2afbce6da684bdfcbec93752fa762819cb480d9a" + integrity sha512-lA57e7viQHOdPQcrytv5jFeudZZOXuyk47lZym279FiDQ8jeZomXiGuVf6ffMKkJ+3TIai3J1J3yi6M+/4U35g== + dependencies: + is-what "^3.7.1" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -1804,9 +1770,9 @@ copy-to-clipboard@^3.2.0: toggle-selection "^1.0.6" copy-webpack-plugin@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz#8015e4d5c5e637ab7b39c76daa9e03c7a4bf1ae5" - integrity sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q== + version "6.4.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz#138cd9b436dbca0a6d071720d5414848992ec47e" + integrity sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA== dependencies: cacache "^15.0.5" fast-glob "^3.2.4" @@ -1846,6 +1812,11 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1857,7 +1828,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1895,15 +1866,15 @@ css-has-pseudo@^0.10.0: postcss-selector-parser "^5.0.0-rc.4" css-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.0.tgz#f0a48dfacc3ab9936a05ee16a09e7f313872e117" - integrity sha512-9g35eXRBgjvswyJWoqq/seWp+BOxvUl8IinVNTsUBFFxtwfEYvlmEn6ciyn0liXGbGh5HyJjPGCuobDSfqMIVg== + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.0.1.tgz#9e4de0d6636a6266a585bd0900b422c85539d25f" + integrity sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw== dependencies: - camelcase "^6.1.0" + camelcase "^6.2.0" cssesc "^3.0.0" icss-utils "^5.0.0" loader-utils "^2.0.0" - postcss "^8.1.1" + postcss "^8.1.4" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -1924,16 +1895,6 @@ css-select-base-adapter@^0.1.1: resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - css-select@^2.0.0, css-select@^2.0.2: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" @@ -1952,18 +1913,18 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== dependencies: - mdn-data "2.0.6" + mdn-data "2.0.14" source-map "^0.6.1" -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-unit-converter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" + integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== css-what@^3.2.1: version "3.4.2" @@ -2054,16 +2015,75 @@ cssnano@^4.1.10: postcss "^7.0.0" csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: - css-tree "1.0.0-alpha.39" + css-tree "^1.1.2" csstype@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" - integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== + version "3.0.6" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" + integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== + +d3-array@^2.3.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.11.0.tgz#5ed6a2869bc7d471aec8df9ff6ed9fef798facc4" + integrity sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw== + dependencies: + internmap "^1.0.0" + +"d3-color@1 - 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e" + integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ== + +"d3-format@1 - 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767" + integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA== + +"d3-interpolate@1.2.0 - 2", d3-interpolate@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163" + integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ== + dependencies: + d3-color "1 - 2" + +"d3-path@1 - 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-2.0.0.tgz#55d86ac131a0548adae241eebfb56b4582dd09d8" + integrity sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA== + +d3-scale@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.2.3.tgz#be380f57f1f61d4ff2e6cbb65a40593a51649cfd" + integrity sha512-8E37oWEmEzj57bHcnjPVOBS3n4jqakOeuv1EDdQSiSrYnMCBdMd3nc4HtKk7uia8DUHcY/CGuJ42xxgtEYrX0g== + dependencies: + d3-array "^2.3.0" + d3-format "1 - 2" + d3-interpolate "1.2.0 - 2" + d3-time "1 - 2" + d3-time-format "2 - 3" + +d3-shape@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-2.0.0.tgz#2331b62fa784a2a1daac47a7233cfd69301381fd" + integrity sha512-djpGlA779ua+rImicYyyjnOjeubyhql1Jyn1HK0bTyawuH76UQRWXd+pftr67H6Fa8hSwetkgb/0id3agKWykw== + dependencies: + d3-path "1 - 2" + +"d3-time-format@2 - 3": + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-3.0.0.tgz#df8056c83659e01f20ac5da5fdeae7c08d5f1bb6" + integrity sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag== + dependencies: + d3-time "1 - 2" + +"d3-time@1 - 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.0.0.tgz#ad7c127d17c67bd57a4c61f3eaecb81108b1e0ab" + integrity sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q== date-fns@^2.15.0: version "2.16.1" @@ -2071,9 +2091,9 @@ date-fns@^2.15.0: integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== dayjs@^1.8.30, dayjs@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.3.tgz#b7f94b22ad2a136a4ca02a01ab68ae893fe1a268" - integrity sha512-V+1SyIvkS+HmNbN1G7A9+ERbFTV9KTXu6Oor98v2xHmzzpp52OIJhQuJSTywWuBY5pyAEmlwbCi1Me87n/SLOw== + version "1.10.4" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2" + integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" @@ -2082,17 +2102,17 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.1.1, debug@^3.2.5: +debug@^3.1.1, debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" @@ -2109,6 +2129,11 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js-light@^2.4.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" + integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2126,11 +2151,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2272,6 +2292,13 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -2294,9 +2321,9 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" - integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== domhandler@^2.3.0: version "2.4.2" @@ -2305,14 +2332,6 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -2321,13 +2340,13 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -dot-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" - integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + no-case "^3.0.4" + tslib "^2.0.3" dot-prop@^5.2.0: version "5.3.0" @@ -2341,10 +2360,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.571: - version "1.3.582" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.582.tgz#1adfac5affce84d85b3d7b3dfbc4ade293a6ffc4" - integrity sha512-0nCJ7cSqnkMC+kUuPs0YgklFHraWGl/xHqtZWWtOeVtyi+YqkoAOMGuZQad43DscXCQI/yizcTa3u6B5r+BLww== +electron-to-chromium@^1.3.634: + version "1.3.645" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.645.tgz#c0b269ae2ecece5aedc02dd4586397d8096affb1" + integrity sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g== emoji-regex@^7.0.1: version "7.0.3" @@ -2374,21 +2393,21 @@ end-of-stream@^1.1.0: once "^1.4.0" enhanced-resolve@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.3.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.4.0.tgz#a8bcf23b00affac9455cf71efd80844f4054f4dc" - integrity sha512-ZmqfWURB2lConOBM1JdCVfPyMRv5RdKWktLXO6123p97ovVm2CLBgw9t5MBj3jJWA6eHyOeIws9iJQoGFR4euQ== +enhanced-resolve@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c" + integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw== dependencies: graceful-fs "^4.2.4" - tapable "^2.0.0" + tapable "^2.2.0" enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" @@ -2403,9 +2422,9 @@ entities@^1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== envinfo@^7.7.3: version "7.7.3" @@ -2413,9 +2432,9 @@ envinfo@^7.7.3: integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== errno@^0.1.1, errno@^0.1.3: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" @@ -2426,7 +2445,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.2: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== @@ -2443,23 +2462,30 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstrac string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" -es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== +es-abstract@^1.18.0-next.1: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.0.2" has "^1.0.3" has-symbols "^1.0.1" is-callable "^1.2.2" - is-negative-zero "^2.0.0" + is-negative-zero "^2.0.1" is-regex "^1.1.1" - object-inspect "^1.8.0" + object-inspect "^1.9.0" object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + +es-module-lexer@^0.3.26: + version "0.3.26" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" + integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== es-to-primitive@^1.2.1: version "1.2.1" @@ -2470,7 +2496,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.0: +escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== @@ -2485,7 +2511,7 @@ escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5: 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.2.0, eslint-config-airbnb-base@^14.2.0: +eslint-config-airbnb-base@14.2.0: version "14.2.0" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q== @@ -2494,6 +2520,15 @@ eslint-config-airbnb-base@14.2.0, eslint-config-airbnb-base@^14.2.0: object.assign "^4.1.0" object.entries "^1.1.2" +eslint-config-airbnb-base@^14.2.0: + version "14.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" + eslint-config-airbnb-typescript@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-12.0.0.tgz#4bb6b4b72b1cfc45ef1fa0607735679ceb9a3814" @@ -2575,9 +2610,9 @@ eslint-plugin-react-hooks@^4.2.0: integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== eslint-plugin-react@^7.21.5: - version "7.21.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" - integrity sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g== + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== dependencies: array-includes "^3.1.1" array.prototype.flatmap "^1.2.3" @@ -2617,12 +2652,12 @@ eslint-visitor-keys@^2.0.0: integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== eslint@^7.11.0: - version "7.11.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.11.0.tgz#aaf2d23a0b5f1d652a08edacea0c19f7fadc0b3b" - integrity sha512-G9+qtYVCHaDi1ZuWzBsOWo2wSwd70TXnU6UHA3cTYHp7gCTXZcpggWFoUVAMRarg68qtPoNfFbzPh+VdOgmwmw== + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.18.0.tgz#7fdcd2f3715a41fe6295a16234bd69aed2c75e67" + integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" + "@eslint/eslintrc" "^0.3.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -2632,10 +2667,10 @@ eslint@^7.11.0: eslint-scope "^5.1.1" eslint-utils "^2.1.0" eslint-visitor-keys "^2.0.0" - espree "^7.3.0" + espree "^7.3.1" esquery "^1.2.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + file-entry-cache "^6.0.0" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" globals "^12.1.0" @@ -2646,7 +2681,7 @@ eslint@^7.11.0: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -2655,17 +2690,17 @@ eslint@^7.11.0: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^5.2.3" + table "^6.0.4" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: acorn "^7.4.0" - acorn-jsx "^5.2.0" + acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" esprima@^4.0.0: @@ -2707,7 +2742,7 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.1: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -2737,19 +2772,19 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== +execa@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" strip-final-newline "^2.0.0" execall@^2.0.0: @@ -2847,10 +2882,10 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== +fast-glob@^3.1.1, fast-glob@^3.2.4, fast-glob@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -2875,37 +2910,30 @@ fastest-levenshtein@^1.0.12: integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + version "1.10.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" + integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA== dependencies: reusify "^1.0.4" -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: +faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" file-loader@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" - integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" @@ -2984,26 +3012,18 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-versions@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" - integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - semver-regex "^2.0.0" + flatted "^3.1.0" + rimraf "^3.0.2" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== flatten@^1.0.2: version "1.0.3" @@ -3011,9 +3031,9 @@ flatten@^1.0.2: integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== follow-redirects@^1.0.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + version "1.13.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" + integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== for-in@^1.0.2: version "1.0.2" @@ -3021,16 +3041,15 @@ for-in@^1.0.2: integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= formik@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.0.tgz#04c067f6b832aa15cae055f6df6f4aa485b5be35" - integrity sha512-l47RfvejhfHNh8rTRVaCaPfx8nyeYDSTLaEqRvLX4qkWnrrq9ByGVCWggVR+0TVtzc5Ub1gLUuVu9UKuGwfhjA== + version "2.2.6" + resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.6.tgz#378a4bafe4b95caf6acf6db01f81f3fe5147559d" + integrity sha512-Kxk2zQRafy56zhLmrzcbryUpMBvT0tal5IvcifK5+4YNGelKsnrODFJ0sZQRMQboblWNym4lAW3bt+tf2vApSA== dependencies: deepmerge "^2.1.1" hoist-non-react-statics "^3.3.0" lodash "^4.17.14" lodash-es "^4.17.14" react-fast-compare "^2.0.1" - scheduler "^0.18.0" tiny-warning "^1.0.2" tslib "^1.10.0" @@ -3039,6 +3058,11 @@ forwarded@~0.1.2: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +fraction.js@^4.0.13: + version "4.0.13" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe" + integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -3061,14 +3085,14 @@ fs-extra@^8.1.0: universalify "^0.1.0" fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -3108,19 +3132,19 @@ generic-names@^2.0.1: loader-utils "^1.1.0" gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" - integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e" + integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg== dependencies: function-bind "^1.1.1" has "^1.0.3" @@ -3138,12 +3162,10 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" @@ -3210,10 +3232,10 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +globby@^11.0.1, globby@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" @@ -3347,6 +3369,13 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +hosted-git-info@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" + integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== + dependencies: + lru-cache "^6.0.0" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -3373,9 +3402,9 @@ html-comment-regex@^1.1.0: integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== html-entities@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== html-minifier-terser@^5.0.1: version "5.1.1" @@ -3396,21 +3425,21 @@ html-tags@^3.1.0: integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== html-webpack-plugin@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" - integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== + version "4.5.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz#40aaf1b5cb78f2f23a83333999625c20929cda65" + integrity sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" "@types/webpack" "^4.41.8" html-minifier-terser "^5.0.1" loader-utils "^1.2.3" - lodash "^4.17.15" + lodash "^4.17.20" pretty-error "^2.1.1" tapable "^1.1.3" util.promisify "1.0.0" -htmlparser2@^3.10.0, htmlparser2@^3.10.1, htmlparser2@^3.3.0: +htmlparser2@^3.10.0, htmlparser2@^3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -3460,9 +3489,9 @@ http-errors@~1.7.2: toidentifier "1.0.0" http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== http-proxy-middleware@0.19.1: version "0.19.1" @@ -3494,26 +3523,10 @@ http-proxy@^1.17.0, http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -husky@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" - integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== - dependencies: - chalk "^4.0.0" - ci-info "^2.0.0" - compare-versions "^3.6.0" - cosmiconfig "^7.0.0" - find-versions "^3.2.0" - opencollective-postinstall "^2.0.2" - pkg-dir "^4.2.0" - please-upgrade-node "^3.2.0" - slash "^3.0.0" - which-pm-runs "^1.0.0" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== iconv-lite@0.4.24: version "0.4.24" @@ -3535,9 +3548,9 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: postcss "^7.0.14" icss-utils@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.0.0.tgz#03ed56c3accd32f9caaf1752ebf64ef12347bb84" - integrity sha512-aF2Cf/CkEZrI/vsu5WI/I+akFgdbwQHVE9YRZxATrhH4PVIe6a3BIjwjEcW+z+jP/hNh+YvM3lAAn1wJQ6opSg== + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== ignore@^4.0.6: version "4.0.6" @@ -3563,9 +3576,9 @@ import-fresh@^2.0.0: resolve-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -3619,7 +3632,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3630,9 +3643,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== insert-css@^2.0.0: version "2.0.0" @@ -3648,13 +3661,18 @@ internal-ip@^4.3.0: ipaddr.js "^1.9.0" internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: - es-abstract "^1.17.0-next.1" + get-intrinsic "^1.1.0" has "^1.0.3" - side-channel "^1.0.2" + side-channel "^1.0.4" + +internmap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.0.tgz#3c6bf0944b0eae457698000412108752bbfddb56" + integrity sha512-SdoDWwNOTE2n4JWUsLn4KXZGuZPjPF9yyOGc8bnfWnBQh7BD/l80rzSznKc/r4Y0aQ7z3RTk9X+tV4tHBpu+dA== interpret@^2.2.0: version "2.2.0" @@ -3713,11 +3731,6 @@ is-alphabetical@^1.0.0: resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -is-alphanumeric@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" - integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= - is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -3756,9 +3769,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" @@ -3777,13 +3790,6 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" - integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== - dependencies: - has "^1.0.3" - is-core-module@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" @@ -3889,10 +3895,10 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number@^3.0.0: version "3.0.0" @@ -4012,21 +4018,16 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" -is-whitespace-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" - integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== +is-what@^3.7.1: + version "3.12.0" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.12.0.tgz#f4405ce4bd6dd420d3ced51a026fb90e03705e55" + integrity sha512-2ilQz5/f/o9V7WRWJQmpFYNmQFZ9iM+OXRonZKcYgTkCzjb949Vi4h282PD1UfmgHk666rcWonbRJ++KI41VGw== is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-word-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" - integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== - is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" @@ -4059,16 +4060,7 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -jest-worker@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" - integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^26.6.1: +jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -4083,9 +4075,9 @@ jest-worker@^26.6.1: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -4110,6 +4102,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -4122,7 +4119,7 @@ json2mq@^0.2.0: dependencies: string-convert "^0.2.0" -json3@^3.3.2: +json3@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== @@ -4149,21 +4146,21 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" "jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" - integrity sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== dependencies: - array-includes "^3.1.1" - object.assign "^4.1.1" + array-includes "^3.1.2" + object.assign "^4.1.2" killable@^1.0.1: version "1.0.1" @@ -4199,10 +4196,10 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -known-css-properties@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.19.0.tgz#5d92b7fa16c72d971bda9b7fe295bdf61836ee5b" - integrity sha512-eYboRV94Vco725nKMlpkn3nV2+96p9c3gKXRsYqAJSswSENvBhN7n5L+uDhY58xQa0UukWsDMTGELzmD8Q+wTA== +known-css-properties@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.20.0.tgz#0570831661b47dd835293218381166090ff60e96" + integrity sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw== last-call-webpack-plugin@^3.0.0: version "3.0.0" @@ -4222,10 +4219,11 @@ less-loader@^5.0.0: pify "^4.0.1" less@^3.12.2: - version "3.12.2" - resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" - integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== + version "3.13.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.13.1.tgz#0ebc91d2a0e9c0c6735b83d496b0ab0583077909" + integrity sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw== dependencies: + copy-anything "^2.0.1" tslib "^1.10.0" optionalDependencies: errno "^0.1.1" @@ -4236,11 +4234,6 @@ less@^3.12.2: native-request "^1.0.5" source-map "~0.6.0" -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -4249,14 +4242,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -line-column@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" - integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= - dependencies: - isarray "^1.0.0" - isobject "^2.0.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" @@ -4272,12 +4257,12 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -loader-runner@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.1.0.tgz#f70bc0c29edbabdf2043e7ee73ccc3fe1c96b42d" - integrity sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA== +loader-runner@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" + integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -4326,9 +4311,9 @@ locate-path@^6.0.0: p-locate "^5.0.0" lodash-es@^4.17.14: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" - integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.20.tgz#29f6332eefc60e849f869c264bc71126ad61e8f7" + integrity sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA== lodash._reinterpolate@^3.0.0: version "3.0.0" @@ -4390,7 +4375,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5, lodash@~4.17.4: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -4407,7 +4392,7 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -longest-streak@^2.0.1: +longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== @@ -4419,12 +4404,12 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - tslib "^1.10.0" + tslib "^2.0.3" lru-cache@^6.0.0: version "6.0.0" @@ -4475,40 +4460,49 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -markdown-escapes@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" - integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== - -markdown-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" - integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== - dependencies: - repeat-string "^1.0.0" - mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -mdast-util-compact@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" - integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA== +mdast-util-from-markdown@^0.8.0: + version "0.8.4" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz#2882100c1b9fc967d3f83806802f303666682d32" + integrity sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw== dependencies: - unist-util-visit "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + +mdast-util-to-markdown@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.2.tgz#8fe6f42a2683c43c5609dfb40407c095409c85b4" + integrity sha512-iRczns6WMvu0hUw02LXsPDJshBIwtUPbvHBWo19IQeU0YqmzlA8Pd30U8V7uiI0VPkxzS7A/NXBXH6u+HS87Zg== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== mdn-data@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -4530,22 +4524,23 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" -meow@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" - integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.2.2" + decamelize "^1.2.0" decamelize-keys "^1.1.0" hard-rejection "^2.1.0" minimist-options "4.1.0" - normalize-package-data "^2.5.0" + normalize-package-data "^3.0.0" read-pkg-up "^7.0.1" redent "^3.0.0" trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" + type-fest "^0.18.0" + yargs-parser "^20.2.3" merge-descriptors@1.0.1: version "1.0.1" @@ -4567,6 +4562,14 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +micromark@~2.11.0: + version "2.11.2" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.2.tgz#e8b6a05f54697d2d3d27fc89600c6bc40dd05f35" + integrity sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -4594,22 +4597,17 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -"mime-db@>= 1.43.0 < 2": +mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: - mime-db "1.44.0" + mime-db "1.45.0" mime@1.6.0, mime@^1.4.1: version "1.6.0" @@ -4617,9 +4615,9 @@ mime@1.6.0, mime@^1.4.1: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.4: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1" + integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== mimic-fn@^2.1.0: version "2.1.0" @@ -4632,17 +4630,17 @@ min-indent@^1.0.0: integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-create-react-context@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz#df60501c83151db69e28eac0ef08b4002efab040" - integrity sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA== + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== dependencies: - "@babel/runtime" "^7.5.5" + "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" mini-css-extract-plugin@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.1.1.tgz#4ab9948b7be38cf3a730cb4c9a881eb7f62baadb" - integrity sha512-pzlnOi/lMkwIkdb7zoRQvbkW18AFCQffouSBpxy+e3pnKTKMC5IuMVHYndexKZmacfsOZS2LXCe8gIgkrC+yqg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.4.tgz#706e69632cdcdb8b15bf8e638442a0dba304a9c8" + integrity sha512-dNjqyeogUd8ucUgw5sxm1ahvSfSUgef7smbmATRSbDm4EmNx5kQA6VdUEhEeCKSjX6CTYjb5vxgMUvRjqP3uHg== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" @@ -4739,14 +4737,14 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mobx-react-lite@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.0.1.tgz#417f54a819d1e3e00c073077f29373399c95b005" - integrity sha512-Ue8uGgT5iOjMyNf5ptoFW7BTvyLIwggzIkoFpwORrqf73TPqu47iLpz/DNvaba3v40kSsEpp050qYroMNuA1xw== + version "3.1.7" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.1.7.tgz#8896e9ec4f3d2117ddc0a5bfc60802c39a5258f4" + integrity sha512-G6kgur98RrEpoi563ERzxlSwn606xY6Ay4BOtfYXl/QaHZYXbhbCe3YJGROPU2ao4f2bfhnt8iZW3YnBW2BqXQ== mobx@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.0.1.tgz#ec23520848527bf7834d7b4c0b54b2a8eb6e7c14" - integrity sha512-Pk6uJXZ34yqd661yRmS6z/9avm4FOGXpFpVjnEfiYYOsZXnAxv1fpYjxTCEZ9tuwk0Xe1qnUUlgm+rJtGe0YJA== + version "6.0.5" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.0.5.tgz#617e716b7aa81d5b700598af3bb1643ff2144410" + integrity sha512-Q3/GiSj/QyazDn1n44PjdiMlokCE6gVs85BnFR0xCJmkF2d34k/ZnWAEG7wGbnJYEi+0f5CdvzDquBiKeo56bA== moment@^2.24.0, moment@^2.25.3: version "2.29.1" @@ -4763,11 +4761,16 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -4797,10 +4800,10 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@^3.1.12: - version "3.1.12" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" - integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanomatch@^1.2.9: version "1.2.13" @@ -4820,9 +4823,9 @@ nanomatch@^1.2.9: to-regex "^3.0.1" native-request@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.7.tgz#ff742dc555b4c8f2f1c14b548639ba174e573856" - integrity sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ== + version "1.0.8" + resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.8.tgz#8f66bf606e0f7ea27c0e5995eb2f5d03e33ae6fb" + integrity sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag== natural-compare@^1.4.0: version "1.4.0" @@ -4844,23 +4847,23 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" - integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - lower-case "^2.0.1" - tslib "^1.10.0" + lower-case "^2.0.2" + tslib "^2.0.3" node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-releases@^1.1.61: - version "1.1.64" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.64.tgz#71b4ae988e9b1dd7c1ffce58dd9e561752dfebc5" - integrity sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg== +node-releases@^1.1.69: + version "1.1.70" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" + integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" @@ -4872,6 +4875,16 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" + integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== + dependencies: + hosted-git-info "^3.0.6" + resolve "^1.17.0" + semver "^7.3.2" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -4906,14 +4919,14 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -nth-check@^1.0.2, nth-check@~1.0.1: +nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -4925,7 +4938,7 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= -object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -4940,14 +4953,14 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-hash@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" - integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09" + integrity sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ== -object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.8.0, object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-is@^1.0.1: version "1.1.4" @@ -4969,42 +4982,44 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" - integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" has-symbols "^1.0.1" object-keys "^1.1.1" object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" has "^1.0.3" object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072" + integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" has "^1.0.3" object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" + integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" object.pick@^1.3.0: version "1.3.0" @@ -5014,13 +5029,13 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.0, object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" has "^1.0.3" obuf@^1.0.0, obuf@^1.1.2: @@ -5028,11 +5043,6 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -omit.js@^2.0.0, omit.js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" - integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -5052,18 +5062,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -5117,12 +5122,12 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^2.0.0" + yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" @@ -5182,12 +5187,12 @@ p-try@^2.0.0: integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== param-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" - integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - dot-case "^3.0.3" - tslib "^1.10.0" + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" @@ -5224,9 +5229,9 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" @@ -5238,13 +5243,13 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascal-case@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" - integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + no-case "^3.0.4" + tslib "^2.0.3" pascalcase@^0.1.1: version "0.1.1" @@ -5375,13 +5380,6 @@ pkg-dir@^5.0.0: dependencies: find-up "^5.0.0" -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - portfinder@^1.0.26: version "1.0.28" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" @@ -5574,9 +5572,9 @@ postcss-focus-within@^3.0.0: postcss "^7.0.2" postcss-font-variant@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" - integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== dependencies: postcss "^7.0.2" @@ -5630,13 +5628,13 @@ postcss-inline-svg@^4.1.0: postcss "^7.0.17" postcss-value-parser "^4.0.0" -postcss-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-3.0.1.tgz#e467efdce80ca02e072c60b42e0b35ad2f950a94" - integrity sha512-m1DgECmEbOK9JhGkdctaP9ZRVheJuEnkk2eb/d3K+5uN10C3S004Ng6Hat4Aha7PsLt824x0xwrT7rVwGRVLHg== +postcss-js@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-3.0.3.tgz#2f0bd370a2e8599d45439f6970403b5873abda33" + integrity sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw== dependencies: camelcase-css "^2.0.1" - postcss "^8.1.0" + postcss "^8.1.6" postcss-lab-function@^2.0.1: version "2.0.1" @@ -5655,15 +5653,15 @@ postcss-less@^3.1.4: postcss "^7.0.14" postcss-loader@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.0.4.tgz#b2d005b52e008a44991cf8123bee207e635eb53e" - integrity sha512-pntA9zIR14drQo84yGTjQJg1m7T0DkXR4vXYHBngiRZdJtEeCrojL6lOpqUanMzG375lIJbT4Yug85zC/AJWGw== + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.2.0.tgz#f6993ea3e0f46600fb3ee49bbd010448123a7db4" + integrity sha512-mqgScxHqbiz1yxbnNcPdKYo/6aVt+XExURmEbQlviFVWogDbM4AJ0A/B+ZBpYsJrTRxKw7HyRazg9x0Q9SWwLA== dependencies: cosmiconfig "^7.0.0" klona "^2.0.4" loader-utils "^2.0.0" schema-utils "^3.0.0" - semver "^7.3.2" + semver "^7.3.4" postcss-logical@^3.0.0: version "3.0.0" @@ -5747,14 +5745,14 @@ postcss-minify-selectors@^4.0.2: postcss-selector-parser "^3.0.0" postcss-mixins@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-7.0.1.tgz#f46a18abef1eea727b4f0b6198aada1cae20cafc" - integrity sha512-9VLSce+dkPYmeD7/MmPh5HTQch1HEO4avtkrT8x0t8F8TOd+gfUMkJXS82Kx1qV4c2pkMdhq4M5aEnZHYRJWiA== + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-7.0.2.tgz#9c5b9db70aa74095402062b3cf38431259b58971" + integrity sha512-er22AZ/2C1P+jZOL4ZExVEz0XuPWJWWy7SySbb2HWFmAgXG8F4qaOmMaRTdLfSK1AbgWxRT+KQ8GQ2i5kOn1aw== dependencies: globby "^11.0.1" - postcss-js "^3.0.1" + postcss-js "^3.0.3" postcss-simple-vars "^6.0.1" - sugarss "^3.0.1" + sugarss "^3.0.3" postcss-modules-extract-imports@^2.0.0: version "2.0.0" @@ -5833,9 +5831,9 @@ postcss-modules@^3.2.2: string-hash "^1.1.1" postcss-nested@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.1.tgz#e7a77f7a806a09c8de0f2c163d8e3d09f00f3139" - integrity sha512-ZHNSAoHrMtbEzjq+Qs4R0gHijpXc6F1YUv4TGmGaz7rtfMvVJBbu5hMOH+CrhEaljQpEmx5N/P8i1pXTkbVAmg== + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.3.tgz#2f46d77a06fc98d9c22344fd097396f5431386db" + integrity sha512-R2LHPw+u5hFfDgJG748KpGbJyTv7Yr33/2tIMWxquYuHTd9EXu27PYnKi7BxMXLtzKC0a0WVsqHtd7qIluQu/g== dependencies: postcss-selector-parser "^6.0.4" @@ -6037,9 +6035,9 @@ postcss-replace-overflow-wrap@^3.0.0: postcss "^7.0.2" postcss-reporter@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.1.tgz#463780d0d8d64f356403eba901fdeae71d988f2b" - integrity sha512-R9AK80KIqqMb+lwGRBcRkXS7r96VCTxrZvvrfibyA/dWjqctwx7leHMCC05A9HbW8PnChwOWwrmISwp5HQu5wg== + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.2.tgz#03e9e7381c1afe40646f9c22e7aeeb860e051065" + integrity sha512-JyQ96NTQQsso42y6L1H1RqHfWH1C3Jr0pt91mVv5IdYddZAE9DUZxuferNgk6q0o6vBVOrfVJb10X1FgDzjmDw== dependencies: colorette "^1.2.1" lodash.difference "^4.5.0" @@ -6047,7 +6045,6 @@ postcss-reporter@^7.0.1: lodash.get "^4.4.2" lodash.groupby "^4.6.0" lodash.sortby "^4.7.0" - log-symbols "^4.0.0" postcss-resolve-nested-selector@^0.1.1: version "0.1.1" @@ -6085,9 +6082,9 @@ postcss-selector-matches@^4.0.0: postcss "^7.0.2" postcss-selector-not@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" - integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== dependencies: balanced-match "^1.0.0" postcss "^7.0.2" @@ -6121,9 +6118,9 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector util-deprecate "^1.0.2" postcss-simple-vars@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-6.0.1.tgz#7733415a7b57f5cb9b5a15cdd6b0546c505e7ad6" - integrity sha512-P1M+APrquBXOPKtk/LlWptuPBwTCjMgxZxv1lkpjG9RdOx8ewi8USOclPCt75xG7UT7viDUB3p3qy2ffPBefjQ== + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-6.0.2.tgz#cc0cc7745fb53c83245df99aaf4452475b454eda" + integrity sha512-tABK0OVtCa88TgJjgosa/1aLgiF4hTJBJxUjVE5idTGA0597OVdzWZvbySAF+HKo/sZidxSSpnWhUycDrxO8LA== postcss-svgo@^4.0.2: version "4.0.2" @@ -6149,7 +6146,7 @@ postcss-unique-selectors@^4.0.1: postcss "^7.0.0" uniqs "^2.0.0" -postcss-value-parser@^3.0.0: +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== @@ -6184,7 +6181,7 @@ postcss@^6.0.8, postcss@^6.0.9: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== @@ -6193,14 +6190,13 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2 source-map "^0.6.1" supports-color "^6.1.0" -postcss@^8.1.0, postcss@^8.1.1, postcss@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.2.tgz#9731fcaa4f7b0bef47121821bdae9eeb609a324c" - integrity sha512-mToqEVFq8jF9TFhlIK4HhE34zknFJuNTgqtsr60vUvrWn+9TIYugCwiV1JZRxCuOrej2jjstun1bn4Bc7/1HkA== +postcss@^8.1.2, postcss@^8.1.4, postcss@^8.1.6: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04" + integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== dependencies: colorette "^1.2.1" - line-column "^1.0.2" - nanoid "^3.1.12" + nanoid "^3.1.20" source-map "^0.6.1" prelude-ls@^1.2.1: @@ -6231,7 +6227,7 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -6282,9 +6278,9 @@ qs@6.7.0: integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== qs@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" - integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== querystring@0.2.0: version "0.2.0" @@ -6301,7 +6297,12 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -raf@^3.4.0, raf@^3.4.1: +raf-schd@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" + integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== + +raf@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== @@ -6331,9 +6332,9 @@ raw-body@2.4.0: unpipe "1.0.0" rc-align@^4.0.0: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.8.tgz#276c3f5dfadf0de4bb95392cb81568c9e947a668" - integrity sha512-2sRUkmB8z4UEXzaS+lDHzXMoR8HrtKH9nn2yHlHVNyUTnaucjMFbdEoCk+hO1g7cpIgW0MphG8i0EH2scSesfw== + version "4.0.9" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.9.tgz#46d8801c4a139ff6a65ad1674e8efceac98f85f2" + integrity sha512-myAM2R4qoB6LqBul0leaqY8gFaiECDJ3MtQDmzDo9xM9NRT/04TvWOYd2YHU9zvGzqk9QXF6S9/MifzSKDZeMw== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -6341,63 +6342,54 @@ rc-align@^4.0.0: rc-util "^5.3.0" resize-observer-polyfill "^1.5.1" -rc-animate@3.x, rc-animate@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.1.1.tgz#defdd863f56816c222534e4dc68feddecd081386" - integrity sha512-8wg2Zg3EETy0k/9kYuis30NJNQg1D6/WSQwnCiz6SvyxQXNet/rVraRz3bPngwY6rcU2nlRvoShiYOorXyF7Sg== - dependencies: - "@ant-design/css-animation" "^1.7.2" - classnames "^2.2.6" - raf "^3.4.0" - rc-util "^4.15.3" - rc-cascader@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.0.tgz#d731ea8e07433558627941036091a2820e895474" - integrity sha512-6kgQljDQEKjVAVRkZtvvoi+2qv4u42M6oLuvt4ZDBa16r3X9ZN8TAq3atVyC840ivbGKlHT50OcdVx/iwiHc1w== + version "1.4.2" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.4.2.tgz#caa81098e3ef4d5f823f9156f6d8d6dbd6321afa" + integrity sha512-JVuLGrSi+3G8DZyPvlKlGVWJjhoi9NTz6REHIgRspa5WnznRkKGm2ejb0jJtz0m2IL8Q9BG4ZA2sXuqAu71ltQ== dependencies: + "@babel/runtime" "^7.12.5" array-tree-filter "^2.1.0" rc-trigger "^5.0.4" rc-util "^5.0.1" warning "^4.0.1" rc-checkbox@~2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.1.tgz#2a61bc43017c783bd2e9f1a67553bf8efe7aa4d3" - integrity sha512-i290/iTqmZ0WtI2UPIryqT9rW6O99+an4KeZIyZDH3r+Jbb6YdddaWNdzq7g5m9zaNhJvgjf//wJtC4fvve2Tg== + version "2.3.2" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-2.3.2.tgz#f91b3678c7edb2baa8121c9483c664fa6f0aefc1" + integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" -rc-collapse@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-2.0.1.tgz#99e7655acd9c237b72369a39dcb5c713451e1e92" - integrity sha512-sRNqwQovzQoptTh7dCwj3kfxrdor2oNXrGSBz+QJxSFS7N3Ujgf8X/KlN2ElCkwBKf7nNv36t9dwH0HEku4wJg== +rc-collapse@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.1.0.tgz#4ce5e612568c5fbeaf368cc39214471c1461a1a1" + integrity sha512-EwpNPJcLe7b+5JfyaxM9ZNnkCgqArt3QQO0Cr5p5plwz/C9h8liAmjYY5I4+hl9lAjBqb7ZwLu94+z+rt5g1WQ== dependencies: - "@ant-design/css-animation" "^1.7.2" + "@babel/runtime" "^7.10.1" classnames "2.x" - rc-animate "3.x" + rc-motion "^2.3.4" rc-util "^5.2.1" shallowequal "^1.1.0" -rc-dialog@~8.4.0: - version "8.4.3" - resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.4.3.tgz#de8650ce7d1fcb6c1f7e065b94a6894b9a5a54a4" - integrity sha512-LHsWXb+2Cy4vEOeJcPvk9M0WSr80Gi438ov5rXt3E6XB4j+53Z+vMFRr+TagnVuOVQRCLmmzT4qutfm2U1OK6w== +rc-dialog@~8.5.0, rc-dialog@~8.5.1: + version "8.5.1" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-8.5.1.tgz#df316dd93e1685d7df1f5e4164ee35cba4a9af88" + integrity sha512-EcLgHHjF3Jp4C+TFceO2j7gIrpx0YIhY6ronki5QJDL/z+qWYozY5RNh4rnv4a6R21SPVhV+SK+gMMlMHZ/YRQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" rc-motion "^2.3.0" - rc-util "^5.0.1" + rc-util "^5.6.1" -rc-drawer@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.1.0.tgz#d7bf0bc030300b62d282bc04e053b9acad6b08b4" - integrity sha512-kjeQFngPjdzAFahNIV0EvEBoIKMOnvUsAxpkSPELoD/1DuR4nLafom5ryma+TIxGwkFJ92W6yjsMi1U9aiOTeQ== +rc-drawer@~4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-4.2.2.tgz#5fd8b18ce20575ff22b36e0c5ddbe363c13db555" + integrity sha512-zw48FATkAmJrEnfeRWiMqvKAzqGzUDLN1UXlluB7q7GgbR6mJFvc+QsmNrgxsFuMz86Lh9mKSIi7rXlPINmuzw== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" - rc-util "^5.0.1" + rc-util "^5.7.0" rc-dropdown@^3.1.3, rc-dropdown@~3.2.0: version "3.2.0" @@ -6408,39 +6400,38 @@ rc-dropdown@^3.1.3, rc-dropdown@~3.2.0: classnames "^2.2.6" rc-trigger "^5.0.4" -rc-field-form@~1.12.0: - version "1.12.1" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.12.1.tgz#e7f5dc5cc5a267420fd50e1e3ae3352e650c1425" - integrity sha512-c09NVEoGFtwqpTJH4Tw1D8UUitKrrTCW2UAFcJ57FHTg5zReozzgjrrv3UiKDVjbbFzikDLdYz3CzdWMlqVHXg== +rc-field-form@~1.18.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.18.1.tgz#41027816c80d1acf6f51db085d34c2c35213a701" + integrity sha512-/YRnelnHLxygl/ROGhFqfCT+uAZ5xLvu3qjtlETOneb7fXKk7tqp+RGfYqZ4uNViXlsfxox3qqMMTVet6wYfEA== dependencies: "@babel/runtime" "^7.8.4" async-validator "^3.0.3" rc-util "^5.0.0" -rc-image@~3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-3.2.2.tgz#5d2b7d474dd01ea7af2cbc84fe6af3de8905b3fe" - integrity sha512-8D1pj4qTdC93IfeTPstGFBwpDRZPC565emm4VevrtyFoD9QHBF6kp9kOtzk0JAmbybLAQuX4GGNcwoc7tbZ9Zw== +rc-image@~5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-5.1.4.tgz#e251101159db80c3e33276aaa4669a991c7486c0" + integrity sha512-hilxwwEAYJXocY6i+lEdEibvHVOLgN43EQFfjKFiiruRNiUQzGWcdCseyaeTZgInTDrf+QWZP6MujlZjtEbpkA== dependencies: - "@ant-design/icons" "^4.2.2" "@babel/runtime" "^7.11.2" classnames "^2.2.6" - rc-dialog "~8.4.0" + rc-dialog "~8.5.0" rc-util "^5.0.6" rc-input-number@~6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-6.1.1.tgz#818c426942d1b4dc4d6d2639d741ca67773a9118" - integrity sha512-9t2xf1G0YEism7FAXAvF1huBk7ZNABPBf6NL+3/aDL123WiT/vhhod4cldiDWTM1Yb2EDKR//ZIa546ScdsUaA== + version "6.1.3" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-6.1.3.tgz#d558be65793429807cc2cdc360af407599d80283" + integrity sha512-qCLWK9NuuKGTsPXjRU/XvSOX7EKdnHlOpg59nPjYSDdH/czsAHZyYq50O6b6RF2TMPOjVpmsZQoMjNJYcnn6JA== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" rc-util "^5.0.1" rc-mentions@~1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.5.2.tgz#94559a369de73e7cc92f343badaf94499fb410a7" - integrity sha512-GqV0tOtHY3pLpOsFCxJ2i6Ad8AVfxFmz0NlD/8rb8IG8pMpthJKcdfnXlNZRx3Fa9O4YEgJpdSY1WEbmlx2DWQ== + version "1.5.3" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.5.3.tgz#b92bebadf8ad9fb3586ba1af922d63b49d991c67" + integrity sha512-NG/KB8YiKBCJPHHvr/QapAb4f9YzLJn7kDHtmI1K6t7ZMM5YgrjIxNNhoRKKP9zJvb9PdPts69Hbg4ZMvLVIFQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" @@ -6449,52 +6440,61 @@ rc-mentions@~1.5.0: rc-trigger "^5.0.4" rc-util "^5.0.1" -rc-menu@^8.0.1, rc-menu@^8.6.1, rc-menu@~8.8.2: - version "8.8.3" - resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.8.3.tgz#feb8ba0371dd342fbf1052d4fcca7b669b0bf66a" - integrity sha512-C9sT0SBXmUbVWRUseXASousacRVPnOm5aXdyJR569WIvZwbs2IncpGNmAcft1R5ZuFE3Y+SZZ5FYvtGtbCzkIQ== +rc-menu@^8.0.1, rc-menu@^8.6.1, rc-menu@~8.10.0: + version "8.10.5" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-8.10.5.tgz#44b7381c650cc76020dfd65753b535f415012179" + integrity sha512-8Ets93wQFy9IysmgRUm1VGdrEz6XfZTM0jQOqOPLYNXah5HgAmCh4xT0UOygfHB3IWiQeqDgr2uPB4uVhwI2+Q== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" mini-store "^3.0.1" - omit.js "^2.0.0" rc-motion "^2.0.1" - rc-trigger "^5.0.4" - rc-util "^5.0.1" + rc-trigger "^5.1.2" + rc-util "^5.7.0" resize-observer-polyfill "^1.5.0" shallowequal "^1.1.0" -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.3.3.tgz#308fe27f2d2b4d6e951297740294fff32d13c15b" - integrity sha512-eOpPDFz6Y+gX1Nd3/AZOhS+Cqv9CiyJ+hrfAinfemJv+fiiVLv/NkFYe2fqw0onNeGiTKJaDF5Ah4Hm006K5yw== +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.1.tgz#323f47c8635e6b2bc0cba2dfad25fc415b58e1dc" + integrity sha512-TWLvymfMu8SngPx5MDH8dQ0D2RYbluNTfam4hY/dNNx9RQ3WtGuZ/GXHi2ymLMzH+UNd6EEFYkOuR5JTTtm8Xg== dependencies: "@babel/runtime" "^7.11.1" classnames "^2.2.1" rc-util "^5.2.1" rc-notification@~4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.2.tgz#7836fc04068e00a764fca944074101faa144d503" - integrity sha512-rIgQip4BzUbHpDXDdNc2EFgIh1gxI97UjUbhU8hzdsjytBVstIEHXH36EgHTGllMkOhL9PkQOByg+mgV+I60ZQ== + version "4.5.4" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-4.5.4.tgz#1292e163003db4b9162c856a4630e5d0f1359356" + integrity sha512-VsN0ouF4uglE5g3C9oDsXLNYX0Sz++ZNUFYCswkxhpImYJ9u6nJOpyA71uOYDVCu6bAF54Y5Hi/b+EcnMzkepg== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" rc-motion "^2.2.0" rc-util "^5.0.1" -rc-pagination@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.1.tgz#6a3b28f871181b7fad298a15a91f1de6f6e6304a" - integrity sha512-8chFRHXRXRhdPO2Tlmm4hnA/1FnO2hYSoop6FaukQ9/IaCugsVVcXo7OqZ03YJY+aWQLtS6tDsb+sAapCCmljw== +rc-overflow@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.0.2.tgz#f56bcd920029979989f576d55084b81f9632c19c" + integrity sha512-GXj4DAyNxm4f57LvXLwhJaZoJHzSge2l2lQq64MZP7NJAfLpQqOLD+v9JMV9ONTvDPZe8kdzR+UMmkAn7qlzFA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.5.1" + +rc-pagination@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.1.3.tgz#afd779839fefab2cb14248d5e7b74027960bb48b" + integrity sha512-Z7CdC4xGkedfAwcUHPtfqNhYwVyDgkmhkvfsmoByCOwAd89p42t5O5T3ORar1wRmVWf3jxk/Bf4k0atenNvlFA== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" -rc-picker@~2.3.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.3.3.tgz#c58c4270891f92aad02d0404d1699285f9321fd9" - integrity sha512-ah4ucCnAs8ss7GgV7sF7MGgRlyfP4753z+OjnF4X7cIrntygklQqiFDBZYS02RX773vhJ+jc6AbyoR7hI4aGng== +rc-picker@~2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.2.tgz#36d91b8cdddbf8b2474af29c2853b77502a7fb01" + integrity sha512-rQLgvjyFrxjiWlR+Q7CyXdTOP/gHbiXlBca7irOtuEb6HMRLdm+/OfIB7xaaPHgdkv1ZOsxCk8zCEX6j0qf24g== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" @@ -6506,49 +6506,49 @@ rc-picker@~2.3.0: shallowequal "^1.1.0" rc-progress@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.1.tgz#f7ba5eb33cc438862513ab5a71739feaf6b3ef4f" - integrity sha512-1ns3pW7ll9bHfdXtlVLF+vngdvlxiCDtiqwXnZFEdurst11JTiPxVdeqnCNbhWx5hP4kCKkAPqG1N0FVfTSUGA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.3.tgz#d77d8fd26d9d948d72c2a28b64b71a6e86df2426" + integrity sha512-Jl4fzbBExHYMoC6HBPzel0a9VmhcSXx24LVt/mdhDM90MuzoMCJjXZAlhA0V0CJi+SKjMhfBoIQ6Lla1nD4QNw== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" -rc-rate@~2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.8.2.tgz#d82d237d74fd4aef3e0581d2700b646cdd1cd8a2" - integrity sha512-f9T/D+ZwWQrWHkpidpQbnXpnVMGMC4eSRAkwuu88a8Qv1C/9LNc4AErazoh8tpnZBFqq19F3j0Glv+sDgkfEig== +rc-rate@~2.9.0: + version "2.9.1" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.9.1.tgz#e43cb95c4eb90a2c1e0b16ec6614d8c43530a731" + integrity sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" rc-util "^5.0.1" -rc-resize-observer@^0.2.0, rc-resize-observer@^0.2.1, rc-resize-observer@^0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-0.2.6.tgz#c1b642f6d1293e34c4e3715f47f69443a167b825" - integrity sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA== +rc-resize-observer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.0.0.tgz#97fb89856f62fec32ab6e40933935cf58e2e102d" + integrity sha512-RgKGukg1mlzyGdvzF7o/LGFC8AeoMH9aGzXTUdp6m+OApvmRdUuOscq/Y2O45cJA+rXt1ApWlpFoOIioXL3AGg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" rc-util "^5.0.0" resize-observer-polyfill "^1.5.1" -rc-select@^11.1.1, rc-select@~11.4.0: - version "11.4.2" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-11.4.2.tgz#5b431ee7b2cc6e439886ca855774fc116e6fe6fb" - integrity sha512-DQHYwMcvAajnnlahKkYIW47AVTXgxpGj9CWbe+juXgvxawQRFUdd8T8L2Q05aOkMy02UTG0Qrs7EZfHmn5QHbA== +rc-select@^12.0.0, rc-select@~12.1.0: + version "12.1.2" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-12.1.2.tgz#7f5f06838b8a8c86516acb66ead26adbc55fbc16" + integrity sha512-WEcqj4ljz5kgp/yPN4RDQEZRvjGkwdk1PugpFrtd6tY+YqwKZs7vSZt6xphVIvWlmtwmZMe7e9G1U8XykUN0+g== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" rc-motion "^2.0.1" + rc-overflow "^1.0.0" rc-trigger "^5.0.4" rc-util "^5.0.1" rc-virtual-list "^3.2.0" - warning "^4.0.3" -rc-slider@~9.5.2: - version "9.5.4" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.5.4.tgz#4bbb1c7810037adad030c82a1e47e1b331405449" - integrity sha512-24goJnWhmWi0ojNZMoPSMni2wh73IPqEK0TJh7rWn10hPLLKgG8x3KRR0g4uUdCS9APHyosqxGXUIJKGydJXVg== +rc-slider@~9.7.1: + version "9.7.1" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.1.tgz#63535177a74a3ee44f090909e8c6f98426eb9dba" + integrity sha512-r9r0dpFA3PEvxBhIfVi1lVzxuSogWxeY+tGvi2AqMM1rPgaOXQ7WbtT+9kVFkJ9K8TntA/vYPgiCCKfN29KTkw== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" @@ -6574,63 +6574,62 @@ rc-switch@~3.2.0: classnames "^2.2.1" rc-util "^5.0.1" -rc-table@~7.10.0: - version "7.10.3" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.10.3.tgz#f667e3d7d8a00c490beb83086ed9f3a04df6850f" - integrity sha512-iX96RaERJiTsmO8wljxjCHhsPMTge/0BB1dHS4I+5xegr+bud8a2KV4mX3rYcrnVjYueTqmtXH2K6EQYNhpOGw== +rc-table@~7.12.0: + version "7.12.3" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.12.3.tgz#c86e93b40dc3e2b8aae9e54ad7aa5a64ff7d261e" + integrity sha512-R87lx28os4Ftm/9x+MamwzLw+Dtp9yxihceAgLA/9JS9QP/sqej1qlO+3T/Uw4paZqCg9SpW0XzLI1MandviWA== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" - rc-resize-observer "^0.2.0" + rc-resize-observer "^1.0.0" rc-util "^5.4.0" shallowequal "^1.1.0" rc-tabs@~11.7.0: - version "11.7.0" - resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.7.0.tgz#e03a03fbf5b8d04a1c9f12f24a621b1d7ff6a093" - integrity sha512-nYwQcgML2drM0iau4aa6HI4qyyZSW0WpspCAtO5KGjXwHzUJcvv3qgLVuoQOWQaDDHXkI9Jj8U7Y/Hcrdyj1Kw== + version "11.7.3" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-11.7.3.tgz#32a30e59c6992d60fb58115ba0bf2652b337ed43" + integrity sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w== dependencies: "@babel/runtime" "^7.11.2" classnames "2.x" - raf "^3.4.1" rc-dropdown "^3.1.3" rc-menu "^8.6.1" - rc-resize-observer "^0.2.1" - rc-util "^5.0.0" + rc-resize-observer "^1.0.0" + rc-util "^5.5.0" rc-textarea@^0.3.0, rc-textarea@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.1.tgz#e81e1ef6f0e29729f9f80bb266cf6769dd7ab69a" - integrity sha512-bO5Ol5uD6A++aWI6BJ0Pa/8OZcGeacP9LxIGkUqkCwPyOG3kaLOsWb8ya4xCfrsC2P4vDTsHsJmmmG5wuXGFRg== + version "0.3.4" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-0.3.4.tgz#1408a64c87b5e76db5c847699ef9ab5ee97dd6f9" + integrity sha512-ILUYx831ZukQPv3m7R4RGRtVVWmL1LV4ME03L22mvT56US0DGCJJaRTHs4vmpcSjFHItph5OTmhodY4BOwy81A== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" - omit.js "^2.0.0" - rc-resize-observer "^0.2.3" + rc-resize-observer "^1.0.0" + rc-util "^5.7.0" rc-tooltip@^5.0.1, rc-tooltip@~5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.0.1.tgz#b82c4259604d2cb62ca610ed7932dd37fc6ef61d" - integrity sha512-3AnxhUS0j74xAV3khrKw8o6rg+Ima3nw09DJBezMPnX3ImQUAnayWsPSlN1mEnihjA43rcFkGM1emiKE+CXyMQ== + version "5.0.2" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-5.0.2.tgz#e48258fc9931bd9281102b2d9eacc5b986cf3258" + integrity sha512-A4FejSG56PzYtSNUU4H1pVzfhtkV/+qMT2clK0CsSj+9mbc4USEtpWeX6A/jjVL+goBOMKj8qlH7BCZmZWh/Nw== dependencies: "@babel/runtime" "^7.11.2" rc-trigger "^5.0.0" -rc-tree-select@~4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.1.2.tgz#bf012c3c32cf2e82fc7ffbdd60cb596163a290a0" - integrity sha512-2tRwZ4ChY+BarVKHoPR65kSZtopgwKCig6ngJiiTVgYfRdAhfdQp2j2+L8YW9TkosYGmwgTOhmlphlG3QNy7Pg== +rc-tree-select@~4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.3.0.tgz#714a4fe658aa73f2a7b0aa4bd6e43be63194a6ce" + integrity sha512-EEXB9dKBsJNJuKIU5NERZsaJ71GDGIj5uWLl7A4XiYr2jXM4JICfScvvp3O5jHMDfhqmgpqNc0z90mHkgh3hKg== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" - rc-select "^11.1.1" - rc-tree "^3.8.0" + rc-select "^12.0.0" + rc-tree "^4.0.0" rc-util "^5.0.5" -rc-tree@^3.8.0, rc-tree@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-3.10.0.tgz#897498b3756f6c84f41ad2b244ee9489abf43b7f" - integrity sha512-kf7J/f2E2T8Kfta3/1BIg65AzTmXOgOjn0KOpvD3KI/gqkfKMRKUS1ybkxW39JUPpKwdeOHFnYH+nFFMq7tkfg== +rc-tree@^4.0.0, rc-tree@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-4.1.1.tgz#d40f418b31b75e61886e3969481df1444232c98b" + integrity sha512-ufq7CkWfvTQa+xMPzEWYfOjTfsEALlPr0/IyujEG4+4d8NdaR3e+0dc8LkkVWoe1VCcXV2FQqAsgr2z/ThFUrQ== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" @@ -6638,62 +6637,52 @@ rc-tree@^3.8.0, rc-tree@~3.10.0: rc-util "^5.0.0" rc-virtual-list "^3.0.1" -rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@~5.0.3: - version "5.0.7" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.0.7.tgz#c2f6e988756c76f84b63ff1071e02affc56495ec" - integrity sha512-4QzwHL0IaXmSZnMfJV45dR3Cy4XgsQy2m0LySBAFiZYaH5EN3qnq2lOtg5aU4T36g4146fHpfGa7mtJpCgkwhg== +rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-5.2.1.tgz#54686220b884ed1e0750c4f2411fbb34d4928c99" + integrity sha512-XZilSlSDnb0L/R3Ff2xo9C0Fho2aBDoAn8u3coM60XdLqTCo24nsOh1bfAMm0uIB1qVjh5eqeyFqnBPmXi8pJg== dependencies: "@babel/runtime" "^7.11.2" classnames "^2.2.6" rc-align "^4.0.0" rc-motion "^2.0.0" - rc-util "^5.3.4" + rc-util "^5.5.0" -rc-upload@~3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.3.1.tgz#ad8658b2a796031930b35d2b07ab312b7cd4c9ed" - integrity sha512-KWkJbVM9BwU8qi/2jZwmZpAcdRzDkuyfn/yAOLu+nm47dyd6//MtxzQD3XZDFkC6jQ6D5FmlKn6DhmOfV3v43w== +rc-upload@~3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-3.3.4.tgz#b0668d18661595c69c0621cec220fd116cc79952" + integrity sha512-v2sirR4JL31UTHD/f0LGUdd+tpFaOVUTPeIEjAXRP9kRN8TFhqOgcXl5ixtyqj90FmtRUmKmafCv0EmhBQUHqQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" rc-util "^5.2.0" -rc-util@^4.15.3: - version "4.21.1" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05" - integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg== - dependencies: - add-dom-event-listener "^1.1.0" - prop-types "^15.5.10" - react-is "^16.12.0" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.1.0, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.3.4, rc-util@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.4.0.tgz#688eaeecfdae9dae2bfdf10bedbe884591dba004" - integrity sha512-kXDn1JyLJTAWLBFt+fjkTcUtXhxKkipQCobQmxIEVrX62iXgo24z8YKoWehWfMxPZFPE+RXqrmEu9j5kHz/Lrg== +rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.5, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.7.0.tgz#776b14cf5bbfc24f419fd40c42ffadddda0718fc" + integrity sha512-0hh5XkJ+vBDeMJsHElqT1ijMx+gC3gpClwQ10h/5hccrrgrMx8VUem183KLlH1YrWCfMMPmDXWWNnwsn+p6URw== dependencies: + "@babel/runtime" "^7.12.5" react-is "^16.12.0" shallowequal "^1.1.0" rc-virtual-list@^3.0.1, rc-virtual-list@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.2.0.tgz#21e70f42b22f510d38ceb1ba339b89b865686fcd" - integrity sha512-NZb+Z4tGkfrCNXprVUlLJxoRVIELwLmlY5nHwiV3pj4eA9Of8thpQwtT+AomwcZjKhC7R/EDtpk2ATMJXX5s3Q== + version "3.2.6" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.2.6.tgz#2c92a40f4425e19881b38134d6bd286a11137d2d" + integrity sha512-8FiQLDzm3c/tMX0d62SQtKDhLH7zFlSI6pWBAPt+TUntEqd3Lz9zFAmpvTu8gkvUom/HCsDSZs4wfV4wDPWC0Q== dependencies: classnames "^2.2.6" - rc-resize-observer "^0.2.3" + rc-resize-observer "^1.0.0" rc-util "^5.0.7" react-dom@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.0.tgz#f8266e4d9861584553ccbd186d596a1c7dd8dcb4" - integrity sha512-OGnFbxCjI2TMAZYMVxi4hqheJiN8rCEVVrL7XIGzCB6beNc4Am8M47HtkvxODZw9QgjmAPKpLba9FTu4fC1byA== + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - scheduler "^0.20.0" + scheduler "^0.20.1" react-fast-compare@^2.0.1: version "2.0.4" @@ -6710,6 +6699,16 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-resize-detector@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-5.2.0.tgz#992083834432308c551a8251a2c52306d9d16718" + integrity sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A== + dependencies: + lodash "^4.17.20" + prop-types "^15.7.2" + raf-schd "^4.0.2" + resize-observer-polyfill "^1.5.1" + react-router-dom@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" @@ -6739,10 +6738,30 @@ react-router@5.2.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" +react-smooth@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-1.0.6.tgz#18b964f123f7bca099e078324338cd8739346d0a" + integrity sha512-B2vL4trGpNSMSOzFiAul9kFAsxTukL9Wyy9EXtkQy3GJr6sZqW9e1nShdVOJ3hRYamPZ94O17r3Q0bjSw3UYtg== + dependencies: + lodash "~4.17.4" + prop-types "^15.6.0" + raf "^3.4.0" + react-transition-group "^2.5.0" + +react-transition-group@^2.5.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.9.0.tgz#df9cdb025796211151a436c69a8f3b97b5b07c8d" + integrity sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg== + dependencies: + dom-helpers "^3.4.0" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-lifecycles-compat "^3.0.4" + react@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.0.tgz#ad96d5fa1a33bb9b06d0cc52672f7992d84aa662" - integrity sha512-rG9bqS3LMuetoSUKHN8G3fMNuQOePKDThK6+2yXFWtoeTDLVNh/QCaxT+Jr+rNf4lwNXpx+atdn3Aa0oi8/6eQ== + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -6821,6 +6840,29 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +recharts-scale@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.3.tgz#040b4f638ed687a530357292ecac880578384b59" + integrity sha512-t8p5sccG9Blm7c1JQK/ak9O8o95WGhNXD7TXg/BW5bYbVlr6eCeRBNpgyigD4p6pSSMehC5nSvBUPj6F68rbFA== + dependencies: + decimal.js-light "^2.4.1" + +recharts@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.0.4.tgz#0ffaa9437762ed0bf021968af42154777f97c94c" + integrity sha512-XwFRhyOW6APMKvrCqN8e1IPHAQi7lmrOqp48LKi40NFI8WjFWHgTaTfwBBMsGCnTJSezJEEd/41L3bo/tfevkw== + dependencies: + classnames "^2.2.5" + d3-interpolate "^2.0.1" + d3-scale "^3.2.3" + d3-shape "^2.0.0" + eventemitter3 "^4.0.1" + lodash "^4.17.19" + react-resize-detector "^5.2.0" + react-smooth "^1.0.6" + recharts-scale "^0.4.2" + reduce-css-calc "^2.1.7" + rechoir@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" @@ -6836,10 +6878,13 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== +reduce-css-calc@^2.1.7: + version "2.1.8" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03" + integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== + dependencies: + css-unit-converter "^1.1.1" + postcss-value-parser "^3.3.0" redux@^4.0.0: version "4.0.5" @@ -6863,12 +6908,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" @@ -6880,56 +6925,28 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -remark-parse@^8.0.0: - version "8.0.3" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" - integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== dependencies: - ccount "^1.0.0" - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^2.0.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^2.0.0" - vfile-location "^3.0.0" - xtend "^4.0.1" + mdast-util-from-markdown "^0.8.0" -remark-stringify@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5" - integrity sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A== +remark-stringify@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" + integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^2.0.0" - mdast-util-compact "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^3.0.0" - unherit "^1.0.4" - xtend "^4.0.1" + mdast-util-to-markdown "^0.6.0" -remark@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/remark/-/remark-12.0.1.tgz#f1ddf68db7be71ca2bad0a33cd3678b86b9c709f" - integrity sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw== +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" + integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== dependencies: - remark-parse "^8.0.0" - remark-stringify "^8.0.0" - unified "^9.0.0" + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" remove-trailing-separator@^1.0.1: version "1.1.0" @@ -6937,13 +6954,13 @@ remove-trailing-separator@^1.0.1: integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= renderkid@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.4.tgz#d325e532afb28d3f8796ffee306be8ffd6fc864c" - integrity sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== dependencies: - css-select "^1.1.0" + css-select "^2.0.2" dom-converter "^0.2" - htmlparser2 "^3.3.0" + htmlparser2 "^3.10.1" lodash "^4.17.20" strip-ansi "^3.0.0" @@ -6952,21 +6969,21 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.0.0, repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.0.0, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -replace-ext@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -7021,15 +7038,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== - dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" - -resolve@^1.9.0: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.9.0: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== @@ -7062,14 +7071,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.6.3: +rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -7084,9 +7086,9 @@ rimraf@^3.0.2: glob "^7.1.3" run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + version "1.1.10" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" + integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -7115,18 +7117,10 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" - integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -scheduler@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.0.tgz#3ff543696b169613afadb09d3fb3fe998d234dd2" - integrity sha512-XegIgta1bIaz2LdaL6eg1GEcE42g0BY9qFXCqlZ/+s2MuEKfigFCW6DEGBlZzeVFlwDmVusrWEyFtBo4sbkkdA== +scheduler@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -7170,23 +7164,13 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.10.7: +selfsigned@^1.10.8: version "1.10.8" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== dependencies: node-forge "^0.10.0" -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -semver-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" - integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== - "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -7197,10 +7181,12 @@ semver@^6.0.0, semver@^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== +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" send@0.17.1: version "0.17.1" @@ -7312,15 +7298,16 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -side-channel@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" - integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g== +side-channel@^1.0.3, side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - es-abstract "^1.18.0-next.0" - object-inspect "^1.8.0" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -7337,15 +7324,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -7385,26 +7363,26 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== dependencies: - debug "^3.2.5" + debug "^3.2.6" eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.4.7" -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== dependencies: - faye-websocket "^0.10.0" + faye-websocket "^0.11.3" uuid "^3.4.0" - websocket-driver "0.6.5" + websocket-driver "^0.7.4" source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" @@ -7472,9 +7450,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" - integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== spdy-transport@^3.0.0: version "3.0.0" @@ -7528,11 +7506,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -state-toggle@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" - integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -7575,32 +7548,33 @@ string-width@^4.2.0: strip-ansi "^6.0.0" string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + version "4.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a" + integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.1" has-symbols "^1.0.1" internal-slot "^1.0.2" regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + side-channel "^1.0.3" -string.prototype.trimend@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" - integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" -string.prototype.trimstart@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" - integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" string_decoder@^1.1.1: version "1.3.0" @@ -7616,15 +7590,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" - integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg== - dependencies: - character-entities-html4 "^1.0.0" - character-entities-legacy "^1.0.0" - xtend "^4.0.0" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -7705,37 +7670,37 @@ stylelint-webpack-plugin@^2.1.1: schema-utils "^3.0.0" stylelint@^13.7.2: - version "13.7.2" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.7.2.tgz#6f3c58eea4077680ed0ceb0d064b22b100970486" - integrity sha512-mmieorkfmO+ZA6CNDu1ic9qpt4tFvH2QUB7vqXgrMVHe5ENU69q7YDq0YUg/UHLuCsZOWhUAvcMcLzLDIERzSg== + version "13.9.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.9.0.tgz#93921ee6e11d4556b9f31131f485dc813b68e32a" + integrity sha512-VVWH2oixOAxpWL1vH+V42ReCzBjW2AeqskSAbi8+3OjV1Xg3VZkmTcAqBZfRRvJeF4BvYuDLXebW3tIHxgZDEg== dependencies: "@stylelint/postcss-css-in-js" "^0.37.2" - "@stylelint/postcss-markdown" "^0.36.1" + "@stylelint/postcss-markdown" "^0.36.2" autoprefixer "^9.8.6" balanced-match "^1.0.0" chalk "^4.1.0" cosmiconfig "^7.0.0" - debug "^4.1.1" + debug "^4.3.1" execall "^2.0.0" - fast-glob "^3.2.4" + fast-glob "^3.2.5" fastest-levenshtein "^1.0.12" - file-entry-cache "^5.0.1" + file-entry-cache "^6.0.0" get-stdin "^8.0.0" global-modules "^2.0.0" - globby "^11.0.1" + globby "^11.0.2" globjoin "^0.1.4" html-tags "^3.1.0" ignore "^5.1.8" import-lazy "^4.0.0" imurmurhash "^0.1.4" - known-css-properties "^0.19.0" + known-css-properties "^0.20.0" lodash "^4.17.20" log-symbols "^4.0.0" mathml-tag-names "^2.1.3" - meow "^7.1.1" + meow "^9.0.0" micromatch "^4.0.2" normalize-selector "^0.2.0" - postcss "^7.0.32" + postcss "^7.0.35" postcss-html "^0.36.0" postcss-less "^3.1.4" postcss-media-query-parser "^0.2.3" @@ -7743,7 +7708,7 @@ stylelint@^13.7.2: postcss-safe-parser "^4.0.2" postcss-sass "^0.4.4" postcss-scss "^2.1.1" - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^6.0.4" postcss-syntax "^0.36.2" postcss-value-parser "^4.1.0" resolve-from "^5.0.0" @@ -7754,8 +7719,8 @@ stylelint@^13.7.2: style-search "^0.1.0" sugarss "^2.0.0" svg-tags "^1.0.0" - table "^6.0.1" - v8-compile-cache "^2.1.1" + table "^6.0.7" + v8-compile-cache "^2.2.0" write-file-atomic "^3.0.3" sugarss@^2.0.0: @@ -7765,12 +7730,12 @@ sugarss@^2.0.0: dependencies: postcss "^7.0.2" -sugarss@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-3.0.1.tgz#1e4e315b3b321eec477ef9617c8964bcf3833b0c" - integrity sha512-xW0tTjuJdd3VSsPH2dLgNDzESka1+Ul3GYVziyhX7GyXQboOARDaeEU++IjhOZPnoKoMENsU0tvtrCKr1sJwlw== +sugarss@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-3.0.3.tgz#bb2489961b98fbd15e4e35d6b9f4f2ee5547a6cb" + integrity sha512-uxa2bbuc+w7ov7DyYIhF6bM0qZF3UkFT5/nE8AJgboiVnKsBDbwxs++dehEIe1JNhpMaGJc37wGQ2QrrWey2Sg== dependencies: - postcss "^8.1.0" + postcss "^8.1.6" supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" @@ -7822,32 +7787,12 @@ symbol-observable@^1.2.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== -table-layout@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.1.tgz#8411181ee951278ad0638aea2f779a9ce42894f9" - integrity sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q== +table@^6.0.4, table@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -table@^6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.3.tgz#e5b8a834e37e27ad06de2e0fda42b55cfd8a0123" - integrity sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw== - dependencies: - ajv "^6.12.4" + ajv "^7.0.2" lodash "^4.17.20" slice-ansi "^4.0.0" string-width "^4.2.0" @@ -7857,15 +7802,15 @@ 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== -tapable@^2.0.0, tapable@^2.1.1: +tapable@^2.1.1, tapable@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== tar@^6.0.2: - version "6.0.5" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" - integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -7874,29 +7819,17 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" -terser-webpack-plugin@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.0.0.tgz#88f58d27d1c8244965c59540d3ccda1598fc958c" - integrity sha512-rf7l5a9xamIVX3enQeTl0MY2MNeZClo5yPX/tVPy22oY0nzu0b45h7JqyFi/bygqKWtzXMnml0u12mArhQPsBQ== +terser-webpack-plugin@^5.0.0, terser-webpack-plugin@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" + integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== dependencies: - jest-worker "^26.5.0" - p-limit "^3.0.2" + jest-worker "^26.6.2" + p-limit "^3.1.0" schema-utils "^3.0.0" serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^5.3.5" - -terser-webpack-plugin@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz#ec60542db2421f45735c719d2e17dabfbb2e3e42" - integrity sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ== - dependencies: - jest-worker "^26.6.1" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.3.8" + terser "^5.5.1" terser@^4.6.3: version "4.8.0" @@ -7907,16 +7840,7 @@ terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.3.5: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.7.tgz#798a4ae2e7ff67050c3e99fcc4e00725827d97e2" - integrity sha512-lJbKdfxWvjpV330U4PBZStCT9h3N9A4zZVA5Y4k9sCWXknrpdyxi1oMsRKLmQ/YDMDxSBKIh88v0SkdhdqX06w== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - -terser@^5.3.8: +terser@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== @@ -7950,11 +7874,6 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -tinycolor2@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" - integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -8007,47 +7926,38 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== -trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" - integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== - -trim@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= - trough@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== ts-loader@^8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.6.tgz#8f47d203ef8fc95826a292a09f97a02bf1f57565" - integrity sha512-c8XkRbhKxFLbiIwZR7FBGWDq0MIz/QSpx3CGpj0abJxD5YVX8oDhQkJLeGbXUPRIlaX4Ajmr77fOiFVZ3gSU7g== + version "8.0.14" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.14.tgz#e46ac1f8dcb88808d0b1335d2eae65b74bd78fe8" + integrity sha512-Jt/hHlUnApOZjnSjTmZ+AbD5BGlQFx3f1D0nYuNKwz0JJnuDGHJas6az+FlWKwwRTu+26GXpv249A8UAnYUpqA== dependencies: - chalk "^2.3.0" + chalk "^4.1.0" enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" + loader-utils "^2.0.0" micromatch "^4.0.0" - semver "^6.0.0" + semver "^7.3.4" ts-morph@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-8.1.2.tgz#f0bee6be6fbd8c3174ac5d6c0423a035e36c2bbd" - integrity sha512-5w4TzmMzECrBunIku1T6/Y0Y2IJ9sHT6hAlfF59WugXnsq1dv6DSioA+s6LgUiswxjgaJgZndOKgu8BrLcYjKw== + version "8.2.0" + resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-8.2.0.tgz#41d83cd501cbd897eb029ac489d6d5b927555c57" + integrity sha512-NHHWu+7I2/AOZiTni5w3f+xCfIxrkzPCcQbTGa81Yk3pr23a4h9xLLEE6tIGuYIubWjkjr9QVC3ITqgmA5touQ== dependencies: "@dsherret/to-absolute-glob" "^2.0.2" "@ts-morph/common" "~0.6.0" code-block-writer "^10.1.0" ts-node@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3" - integrity sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg== + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== dependencies: arg "^4.1.0" + create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" source-map-support "^0.5.17" @@ -8068,10 +7978,15 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + version "3.20.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" + integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== dependencies: tslib "^1.8.1" @@ -8082,10 +7997,10 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.6.0: version "0.6.0" @@ -8112,30 +8027,22 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.0.3, typescript@~4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" - integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== +typescript@^4.0.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" + integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== -typical@^5.0.0, typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== +typescript@~4.0.2: + version "4.0.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" + integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= -unherit@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" - integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== - dependencies: - inherits "^2.0.0" - xtend "^4.0.0" - -unified@^9.0.0: +unified@^9.1.0: version "9.2.0" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== @@ -8181,24 +8088,17 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unist-util-find-all-after@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz#95cc62f48812d879b4685a0512bf1b838da50e9a" - integrity sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw== +unist-util-find-all-after@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6" + integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ== dependencies: unist-util-is "^4.0.0" unist-util-is@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de" - integrity sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ== - -unist-util-remove-position@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc" - integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== - dependencies: - unist-util-visit "^2.0.0" + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.4.tgz#3e9e8de6af2eb0039a59f50c9b3e99698a924f50" + integrity sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA== unist-util-stringify-position@^2.0.0: version "2.0.3" @@ -8207,32 +8107,15 @@ unist-util-stringify-position@^2.0.0: dependencies: "@types/unist" "^2.0.2" -unist-util-visit-parents@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" - integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - -unist-util-visit@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" - integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^4.0.0" - unist-util-visit-parents "^3.0.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -8258,9 +8141,9 @@ upath@^1.1.1: integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -8278,7 +8161,7 @@ url-loader@^4.1.1: mime-types "^2.1.27" schema-utils "^3.0.0" -url-parse@^1.4.3: +url-parse@^1.4.3, url-parse@^1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== @@ -8337,12 +8220,7 @@ uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== - -v8-compile-cache@^2.2.0: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== @@ -8370,11 +8248,6 @@ vendors@^1.0.0: resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== -vfile-location@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.1.0.tgz#81cd8a04b0ac935185f4fce16f270503fc2f692f" - integrity sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g== - vfile-message@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" @@ -8384,13 +8257,12 @@ vfile-message@^2.0.0: unist-util-stringify-position "^2.0.0" vfile@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.0.tgz#26c78ac92eb70816b01d4565e003b7e65a2a0e01" - integrity sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw== + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: "@types/unist" "^2.0.0" is-buffer "^2.0.0" - replace-ext "1.0.0" unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" @@ -8402,9 +8274,9 @@ warning@^4.0.1, warning@^4.0.3: loose-envify "^1.0.0" watchpack@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.1.tgz#2f2192c542c82a3bcde76acd3411470c120426a8" - integrity sha512-vO8AKGX22ZRo6PiOFM9dC0re8IcKh8Kd/aH2zeqUc6w4/jBGlTy2P7fTC6ekT0NjVeGjgU2dGC5rNstKkeLEQg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.0.tgz#e63194736bf3aa22026f7b191cd57907b0f9f696" + integrity sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -8417,28 +8289,29 @@ wbuf@^1.1.0, wbuf@^1.7.3: minimalistic-assert "^1.0.0" webpack-cli@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.2.0.tgz#10a09030ad2bd4d8b0f78322fba6ea43ec56aaaa" - integrity sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA== + version "4.4.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.4.0.tgz#38c7fa01ea31510f5c490245dd1bb28018792f1b" + integrity sha512-/Qh07CXfXEkMu5S8wEpjuaw2Zj/CC0hf/qbTDp6N8N7JjdGuaOjZ7kttz+zhuJO/J5m7alQEhNk9lsc4rC6xgQ== dependencies: - "@webpack-cli/info" "^1.1.0" - "@webpack-cli/serve" "^1.1.0" + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.0.0" + "@webpack-cli/info" "^1.2.1" + "@webpack-cli/serve" "^1.2.2" colorette "^1.2.1" - command-line-usage "^6.1.0" commander "^6.2.0" enquirer "^2.3.6" - execa "^4.1.0" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" import-local "^3.0.2" interpret "^2.2.0" - leven "^3.1.0" rechoir "^0.7.0" v8-compile-cache "^2.2.0" - webpack-merge "^4.2.2" + webpack-merge "^5.7.3" webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -8447,9 +8320,9 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-server@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + version "3.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -8471,11 +8344,11 @@ webpack-dev-server@^3.11.0: p-retry "^3.0.1" portfinder "^1.0.26" schema-utils "^1.0.0" - selfsigned "^1.10.7" + selfsigned "^1.10.8" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" + sockjs "^0.3.21" + sockjs-client "^1.5.0" spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" @@ -8493,17 +8366,10 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-merge@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.2.0.tgz#31cbcc954f8f89cd4b06ca8d97a38549f7f3f0c9" - integrity sha512-QBglJBg5+lItm3/Lopv8KDDK01+hjdg2azEwi/4vKJ8ZmGPdtJsTpjtNNOW3a4WiqzXdCATtTudOZJngE7RKkA== +webpack-merge@^5.2.0, webpack-merge@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== dependencies: clone-deep "^4.0.1" wildcard "^2.0.0" @@ -8525,43 +8391,36 @@ webpack-sources@^2.1.1: source-map "^0.6.1" webpack@^5.10.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.10.0.tgz#6f77c31522a2c525152d9c344f9765d168b3df08" - integrity sha512-P0bHAXmIz0zsNcHNLqFmLY1ZtrT+jtBr7FqpuDtA2o7GiHC+zBsfhgK7SmJ1HG7BAEb3G9JoMdSVi7mEDvG3Zg== + version "5.18.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.18.0.tgz#bbcf13094aa0da0534d513f27d7ee72d74e499c6" + integrity sha512-RmiP/iy6ROvVe/S+u0TrvL/oOmvP+2+Bs8MWjvBwwY/j82Q51XJyDJ75m0QAGntL1Wx6B//Xc0+4VPP/hlNHmw== dependencies: "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.45" - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@types/estree" "^0.0.46" + "@webassemblyjs/ast" "1.11.0" + "@webassemblyjs/wasm-edit" "1.11.0" + "@webassemblyjs/wasm-parser" "1.11.0" acorn "^8.0.4" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.3.1" + enhanced-resolve "^5.7.0" + es-module-lexer "^0.3.26" eslint-scope "^5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.4" json-parse-better-errors "^1.0.2" - loader-runner "^4.1.0" + loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" pkg-dir "^5.0.0" schema-utils "^3.0.0" tapable "^2.1.1" - terser-webpack-plugin "^5.0.3" + terser-webpack-plugin "^5.1.1" watchpack "^2.0.0" webpack-sources "^2.1.1" -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= - dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -8580,11 +8439,6 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -8609,14 +8463,6 @@ word-wrap@^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== -wordwrapjs@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.0.tgz#9aa9394155993476e831ba8e59fb5795ebde6800" - integrity sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.0.0" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -8641,13 +8487,6 @@ write-file-atomic@^3.0.3: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -8655,11 +8494,6 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -xtend@^4.0.0, xtend@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" @@ -8683,13 +8517,10 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.3: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@^20.2.3: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs@^13.3.2: version "13.3.2" @@ -8711,3 +8542,13 @@ yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==