From 4c2e1ccdd7ef6e72b42fffcf77977cb1ceafed93 Mon Sep 17 00:00:00 2001 From: Peter Pan Date: Fri, 3 Jul 2020 14:58:56 +0800 Subject: [PATCH] feat: simplize histogram chart tooltip (#696) --- frontend/.github/semantic.yml | 5 - frontend/package.json | 10 +- frontend/packages/cli/package.json | 2 +- .../HistogramPage/HistogramChart.tsx | 56 ++- frontend/packages/core/components/Navbar.tsx | 9 +- .../packages/core/components/Preloader.tsx | 2 +- .../packages/core/components/StackChart.tsx | 55 ++- frontend/packages/core/next.config.js | 1 - frontend/packages/core/package.json | 6 +- frontend/packages/core/pages/_app.tsx | 16 +- frontend/packages/core/pages/_document.tsx | 3 + frontend/packages/core/types/global.d.ts | 10 +- frontend/packages/core/utils/fetch.ts | 21 +- frontend/packages/i18n/package.json | 10 +- frontend/packages/mock/package.json | 2 +- frontend/packages/netron/package.json | 4 +- frontend/packages/server/package.json | 2 +- frontend/packages/serverless/package.json | 2 +- frontend/yarn.lock | 423 +++++++++++++----- 19 files changed, 461 insertions(+), 178 deletions(-) delete mode 100644 frontend/.github/semantic.yml diff --git a/frontend/.github/semantic.yml b/frontend/.github/semantic.yml deleted file mode 100644 index 40b69276..00000000 --- a/frontend/.github/semantic.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Always validate the PR title AND all the commits -titleAndCommits: true -# Allows use of Merge commits (eg on github: "Merge branch 'master' into feature/ride-unicorns") -# this is only relevant when using commitsOnly: true (or titleAndCommits: true) -allowMergeCommits: true diff --git a/frontend/package.json b/frontend/package.json index ffd3fea5..e6c41c5a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -38,19 +38,19 @@ "version": "yarn format && git add -A" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "3.4.0", - "@typescript-eslint/parser": "3.4.0", + "@typescript-eslint/eslint-plugin": "3.5.0", + "@typescript-eslint/parser": "3.5.0", "eslint": "7.3.1", "eslint-config-prettier": "6.11.0", "eslint-plugin-prettier": "3.1.4", - "eslint-plugin-react": "7.20.0", - "eslint-plugin-react-hooks": "4.0.0", + "eslint-plugin-react": "7.20.3", + "eslint-plugin-react-hooks": "4.0.5", "husky": "4.2.5", "lerna": "3.22.1", "lint-staged": "10.2.11", "prettier": "2.0.5", "rimraf": "3.0.2", - "typescript": "3.9.5", + "typescript": "3.9.6", "yarn": "1.22.4" }, "engines": { diff --git a/frontend/packages/cli/package.json b/frontend/packages/cli/package.json index 062a558d..dccd19f5 100644 --- a/frontend/packages/cli/package.json +++ b/frontend/packages/cli/package.json @@ -45,7 +45,7 @@ "@types/yargs": "15.0.5", "cross-env": "7.0.2", "ts-node": "8.10.2", - "typescript": "3.9.5" + "typescript": "3.9.6" }, "engines": { "node": ">=10", diff --git a/frontend/packages/core/components/HistogramPage/HistogramChart.tsx b/frontend/packages/core/components/HistogramPage/HistogramChart.tsx index fd80d254..304bc55c 100644 --- a/frontend/packages/core/components/HistogramPage/HistogramChart.tsx +++ b/frontend/packages/core/components/HistogramPage/HistogramChart.tsx @@ -144,37 +144,61 @@ const HistogramChart: FunctionComponent = ({cid, run, tag, if (!data || highlight == null) { return ''; } - const series = (params as EChartOption.Tooltip.Format[]).filter( + const series = (params as EChartOption.Tooltip.Format[]).find( s => s.data[1] === (data as OverlayData).data[highlight][0][1] ); - return [ - series[0].seriesName, - ...series.map(s => `${formatTooltipXValue(s.data[2])}, ${formatTooltipYValue(s.data[3])}`) - ].join('
'); + return series?.seriesName ?? ''; }, [highlight, data] ), - [Modes.Offset]: useCallback( - (step: number, dots: [number, number, number][]) => - [ - `${t('common:time-mode.step')}${step}`, - ...dots - .filter(d => d[1] === step) - .map(d => `${formatTooltipXValue(d[0])}, ${formatTooltipYValue(d[2])}`) - ].join('
'), - [t] - ) + [Modes.Offset]: useCallback((dot: [number, number, number]) => dot[2], []) } as const; + const pointerFormatter = { + [Modes.Overlay]: useCallback((params: {value: number; axisDimension: 'x' | 'y'}) => { + if (params.axisDimension === 'x') { + return formatTooltipXValue(params.value); + } + if (params.axisDimension === 'y') { + return formatTooltipYValue(params.value); + } + return '' as never; + }, []), + [Modes.Offset]: useCallback((params: {axisDimension: 'x' | 'y'}, dot: [number, number, number]) => { + if (params.axisDimension === 'x') { + return formatTooltipXValue(dot?.[0]); + } + if (params.axisDimension === 'y') { + return formatTooltipYValue(dot?.[1]); + } + return '' as never; + }, []) + }; + const options = useMemo( () => ({ ...chartOptions[mode], color: [run.colors[0]], tooltip: { formatter: formatter[mode] + }, + axisPointer: { + label: { + formatter: pointerFormatter[mode] + } + }, + xAxis: { + axisPointer: { + snap: mode === Modes.Overlay + } + }, + yAxis: { + axisPointer: { + snap: mode === Modes.Overlay + } } }), - [mode, run, formatter] + [mode, run, formatter, pointerFormatter] ); const mousemove = useCallback((echarts: ECharts, {offsetX, offsetY}: {offsetX: number; offsetY: number}) => { diff --git a/frontend/packages/core/components/Navbar.tsx b/frontend/packages/core/components/Navbar.tsx index 3f956d3c..b641b77f 100644 --- a/frontend/packages/core/components/Navbar.tsx +++ b/frontend/packages/core/components/Navbar.tsx @@ -16,10 +16,13 @@ import {InitConfig} from '@visualdl/i18n'; import Language from '~/components/Language'; import ee from '~/utils/event'; import {getApiToken} from '~/utils/fetch'; +import queryString from 'query-string'; import styled from 'styled-components'; import useNavItems from '~/hooks/useNavItems'; import {useRouter} from 'next/router'; +const API_TOKEN_KEY: string = globalThis.__vdl_api_token_key__ || ''; + const Nav = styled.nav` background-color: ${navbarBackgroundColor}; color: ${textInvertColor}; @@ -107,10 +110,12 @@ const Navbar: FunctionComponent = () => { path += `/${subpath}`; } path += '/index'; - if (process.env.API_TOKEN_KEY) { + if (API_TOKEN_KEY) { const id = getApiToken(); if (id) { - path += `?${process.env.API_TOKEN_KEY}=${encodeURIComponent(id)}`; + path += `?${queryString.stringify({ + [API_TOKEN_KEY]: id + })}`; } } return path; diff --git a/frontend/packages/core/components/Preloader.tsx b/frontend/packages/core/components/Preloader.tsx index 28e0e914..46ff7004 100644 --- a/frontend/packages/core/components/Preloader.tsx +++ b/frontend/packages/core/components/Preloader.tsx @@ -20,7 +20,7 @@ type PreloaderProps = { }; const Preloader: FunctionComponent = ({url, as}) => - process.env.API_TOKEN_KEY ? null : ( + process.env.API_TOKEN_KEY || globalThis.__vdl_api_token_key__ ? null : ( diff --git a/frontend/packages/core/components/StackChart.tsx b/frontend/packages/core/components/StackChart.tsx index 2336b020..809adcd1 100644 --- a/frontend/packages/core/components/StackChart.tsx +++ b/frontend/packages/core/components/StackChart.tsx @@ -120,6 +120,36 @@ const StackChart = React.forwardRef [makePolyPoints] ); + const [highlight, setHighlight] = useState(null); + const [dots, setDots] = useState<[number, number, number][]>([]); + const tooltipRef = useRef(null); + const [tooltip, setTooltip] = useState(''); + const highLightRef = useRef(highlight); + const dotsRef = useRef(dots); + useEffect(() => { + highLightRef.current = highlight; + }, [highlight]); + useEffect(() => { + dotsRef.current = dots; + }, [dots]); + + const pointerLabelFormatter = options?.axisPointer?.label?.formatter; + + // formatter change will cause echarts rerender axis pointer label + // so we need to use 2 refs instead of dots and highlight to get rid of dependencies of these two variables + const axisPointerLabelFormatter = useCallback( + params => { + if (!pointerLabelFormatter || highLightRef.current == null) { + return ''; + } + if ('string' === typeof pointerLabelFormatter) { + return pointerLabelFormatter; + } + return pointerLabelFormatter(params, dotsRef.current[highLightRef.current]); + }, + [pointerLabelFormatter] + ); + const chartOptions = useMemo(() => { // eslint-disable-next-line @typescript-eslint/no-unused-vars const {color, colorAlt, toolbox, series, ...defaults} = chart; @@ -133,9 +163,17 @@ const StackChart = React.forwardRef min: minY, max: maxY }, + axisPointer: { + label: { + formatter: axisPointerLabelFormatter + } + }, xAxis: { min: minX, - max: maxX + max: maxX, + axisPointer: { + type: 'none' + } }, yAxis: { inverse: true, @@ -147,6 +185,9 @@ const StackChart = React.forwardRef }, axisLabel: { formatter: (value: number) => (value < minY ? '' : value + '') + }, + axisPointer: { + type: 'none' } }, grid: { @@ -174,12 +215,7 @@ const StackChart = React.forwardRef options, defaults ); - }, [options, title, rawData, minX, maxX, minY, maxY, negativeY, renderItem]); - - const [highlight, setHighlight] = useState(null); - const [dots, setDots] = useState<[number, number, number][]>([]); - const tooltipRef = useRef(null); - const [tooltip, setTooltip] = useState(''); + }, [options, title, rawData, minX, maxX, minY, maxY, negativeY, renderItem, axisPointerLabelFormatter]); const mouseout = useCallback(() => { setHighlight(null); @@ -220,7 +256,8 @@ const StackChart = React.forwardRef break; } } - setHighlight(step == null ? null : data.findIndex(row => row[1] === step)); + const highlight = step == null ? null : data.findIndex(row => row[1] === step); + setHighlight(highlight); // find nearest x axis point let dots: [number, number, number][] = []; @@ -247,7 +284,7 @@ const StackChart = React.forwardRef if (chartOptions.tooltip?.formatter) { setTooltip( // eslint-disable-next-line @typescript-eslint/no-explicit-any - step == null ? '' : (chartOptions.tooltip?.formatter as any)?.(step, dots) + highlight == null ? '' : (chartOptions.tooltip?.formatter as any)?.(dots[highlight]) ); if (tooltipRef.current) { if (step == null) { diff --git a/frontend/packages/core/next.config.js b/frontend/packages/core/next.config.js index 6c2bd84f..8c989a5f 100644 --- a/frontend/packages/core/next.config.js +++ b/frontend/packages/core/next.config.js @@ -31,7 +31,6 @@ module.exports = { DEFAULT_LANGUAGE, LOCALE_PATH, LANGUAGES, - API_TOKEN_KEY: process.env.API_TOKEN_KEY || '', PUBLIC_PATH: publicPath, API_URL: apiUrl }, diff --git a/frontend/packages/core/package.json b/frontend/packages/core/package.json index 40c03018..f823cc6c 100644 --- a/frontend/packages/core/package.json +++ b/frontend/packages/core/package.json @@ -64,7 +64,7 @@ "tippy.js": "6.2.3" }, "devDependencies": { - "@babel/core": "7.10.3", + "@babel/core": "7.10.4", "@types/d3-format": "1.3.1", "@types/echarts": "4.6.3", "@types/enzyme": "3.10.5", @@ -82,7 +82,7 @@ "babel-plugin-emotion": "10.0.33", "babel-plugin-styled-components": "1.10.7", "babel-plugin-typescript-to-proptypes": "1.3.2", - "copy-webpack-plugin": "6.0.2", + "copy-webpack-plugin": "6.0.3", "core-js": "3.6.5", "cross-env": "7.0.2", "css-loader": "3.6.0", @@ -93,7 +93,7 @@ "jest": "26.1.0", "ora": "4.0.4", "ts-jest": "26.1.1", - "typescript": "3.9.5", + "typescript": "3.9.6", "worker-plugin": "4.0.3" }, "engines": { diff --git a/frontend/packages/core/pages/_app.tsx b/frontend/packages/core/pages/_app.tsx index 1299dc50..af3895dd 100644 --- a/frontend/packages/core/pages/_app.tsx +++ b/frontend/packages/core/pages/_app.tsx @@ -12,12 +12,14 @@ import {ToastContainer} from 'react-toastify'; import queryString from 'query-string'; import {withRouter} from 'next/router'; +const API_TOKEN_KEY: string = globalThis.__vdl_api_token_key__ || ''; + class VDLApp extends App { constructor(props: AppProps) { super(props); - if (process.browser && process.env.API_TOKEN_KEY) { + if (process.browser && API_TOKEN_KEY) { const query = queryString.parse(window.location.search); - setApiToken(query[process.env.API_TOKEN_KEY]); + setApiToken(query[API_TOKEN_KEY]); } } @@ -25,16 +27,16 @@ class VDLApp extends App { Router.events.on('routeChangeStart', () => NProgress.start()); Router.events.on('routeChangeComplete', (url: string) => { NProgress.done(); - if (process.env.API_TOKEN_KEY) { + if (API_TOKEN_KEY) { const id = getApiToken(); const parsed = queryString.parseUrl(url); - if (id && !parsed.query[process.env.API_TOKEN_KEY]) { + if (id && !parsed.query[API_TOKEN_KEY]) { this.props.router.replace( queryString.stringifyUrl({ url: parsed.url, query: { ...parsed.query, - [process.env.API_TOKEN_KEY]: id + [API_TOKEN_KEY]: id } }), undefined, @@ -82,8 +84,8 @@ class VDLApp extends App { static async getInitialProps(appContext: AppContext) { const appProps = await App.getInitialProps(appContext); - if (process.env.API_TOKEN_KEY) { - setApiToken(appContext.router.query[process.env.API_TOKEN_KEY]); + if (API_TOKEN_KEY) { + setApiToken(appContext.router.query[API_TOKEN_KEY]); } return {...appProps}; } diff --git a/frontend/packages/core/pages/_document.tsx b/frontend/packages/core/pages/_document.tsx index abb604a4..1b468941 100644 --- a/frontend/packages/core/pages/_document.tsx +++ b/frontend/packages/core/pages/_document.tsx @@ -59,6 +59,9 @@ export default class VDLDocument extends Document { +
diff --git a/frontend/packages/core/types/global.d.ts b/frontend/packages/core/types/global.d.ts index e38273b3..2733caae 100644 --- a/frontend/packages/core/types/global.d.ts +++ b/frontend/packages/core/types/global.d.ts @@ -1,17 +1,21 @@ declare global { interface Window { - __visualdl_instance_id__?: string; + __visualdl_instance_id__?: string | string[]; + __vdl_api_token_key__?: string; } namespace globalThis { // eslint-disable-next-line no-var - var __visualdl_instance_id__: string | undefined; + var __visualdl_instance_id__: string | string[] | undefined; + // eslint-disable-next-line no-var + var __vdl_api_token_key__: string | undefined; } } declare namespace NodeJS { interface Global { - __visualdl_instance_id__?: string; + __visualdl_instance_id__?: string | string[]; + __vdl_api_token_key__?: string; } } diff --git a/frontend/packages/core/utils/fetch.ts b/frontend/packages/core/utils/fetch.ts index 91ab126a..9859cd5b 100644 --- a/frontend/packages/core/utils/fetch.ts +++ b/frontend/packages/core/utils/fetch.ts @@ -3,28 +3,33 @@ import fetch from 'isomorphic-unfetch'; +const API_TOKEN_KEY: string = globalThis.__vdl_api_token_key__ || ''; + const API_TOKEN_HEADER = 'X-VisualDL-Instance-ID'; function addApiToken(options?: RequestInit): RequestInit | undefined { - if (!process.env.API_TOKEN_KEY || !globalThis.__visualdl_instance_id__) { + const id = getApiToken(); + if (!API_TOKEN_KEY || !id) { return options; } const {headers, ...rest} = options || {}; + const newHeaders = new Headers(headers); + if (Array.isArray(id)) { + id.forEach(value => newHeaders.append(API_TOKEN_HEADER, value)); + } else { + newHeaders.append(API_TOKEN_HEADER, id); + } return { ...rest, - headers: { - ...(headers || {}), - [API_TOKEN_HEADER]: globalThis.__visualdl_instance_id__ - } + headers: newHeaders }; } export function setApiToken(id?: string | string[] | null) { - const instanceId = Array.isArray(id) ? id[0] : id; - globalThis.__visualdl_instance_id__ = instanceId || ''; + globalThis.__visualdl_instance_id__ = id || ''; } -export function getApiToken() { +export function getApiToken(): string | string[] | null { return globalThis.__visualdl_instance_id__ || ''; } diff --git a/frontend/packages/i18n/package.json b/frontend/packages/i18n/package.json index 6d5a0fb4..7ac21c41 100644 --- a/frontend/packages/i18n/package.json +++ b/frontend/packages/i18n/package.json @@ -37,11 +37,11 @@ "dependencies": { "detect-node": "2.0.4", "hoist-non-react-statics": "3.3.2", - "i18next": "19.5.1", + "i18next": "19.5.3", "i18next-browser-languagedetector": "5.0.0", - "i18next-fs-backend": "1.0.6", - "i18next-http-backend": "1.0.15", - "i18next-http-middleware": "3.0.0", + "i18next-fs-backend": "1.0.7", + "i18next-http-backend": "1.0.16", + "i18next-http-middleware": "3.0.2", "path-match": "1.2.4", "prop-types": "15.7.2", "react-i18next": "11.7.0", @@ -53,7 +53,7 @@ "@types/node": "14.0.14", "@types/react": "16.9.41", "@types/react-dom": "16.9.8", - "typescript": "3.9.5" + "typescript": "3.9.6" }, "peerDependencies": { "express": "^4.17.1", diff --git a/frontend/packages/mock/package.json b/frontend/packages/mock/package.json index bbf7361e..99bdba5b 100644 --- a/frontend/packages/mock/package.json +++ b/frontend/packages/mock/package.json @@ -39,7 +39,7 @@ "@types/express": "4.17.6", "@types/faker": "4.1.12", "@types/node": "14.0.14", - "typescript": "3.9.5" + "typescript": "3.9.6" }, "peerDependencies": { "express": "^4.17.1" diff --git a/frontend/packages/netron/package.json b/frontend/packages/netron/package.json index 8e2b9bd7..2a43d0b8 100644 --- a/frontend/packages/netron/package.json +++ b/frontend/packages/netron/package.json @@ -41,14 +41,14 @@ }, "devDependencies": { "autoprefixer": "9.8.4", - "copy-webpack-plugin": "6.0.2", + "copy-webpack-plugin": "6.0.3", "css-loader": "3.6.0", "html-webpack-plugin": "4.3.0", "mini-css-extract-plugin": "0.9.0", "postcss-loader": "3.0.0", "rimraf": "3.0.2", "sass": "1.26.9", - "sass-loader": "8.0.2", + "sass-loader": "9.0.0", "terser": "4.8.0", "webpack": "4.43.0" }, diff --git a/frontend/packages/server/package.json b/frontend/packages/server/package.json index 926f1ece..6accab10 100644 --- a/frontend/packages/server/package.json +++ b/frontend/packages/server/package.json @@ -56,7 +56,7 @@ "shelljs": "0.8.4", "ts-loader": "7.0.5", "ts-node": "8.10.2", - "typescript": "3.9.5", + "typescript": "3.9.6", "webpack": "4.43.0", "webpack-cli": "3.3.12", "webpack-dev-middleware": "3.7.2" diff --git a/frontend/packages/serverless/package.json b/frontend/packages/serverless/package.json index e799a03f..f5532b39 100644 --- a/frontend/packages/serverless/package.json +++ b/frontend/packages/serverless/package.json @@ -37,7 +37,7 @@ "cross-env": "7.0.2", "rimraf": "3.0.2", "ts-node": "8.10.2", - "typescript": "3.9.5" + "typescript": "3.9.6" }, "engines": { "node": ">=10", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 7194c9b0..7888901b 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -68,6 +68,13 @@ dependencies: "@babel/highlight" "^7.10.3" +"@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== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/compat-data@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" @@ -77,19 +84,19 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@7.10.3", "@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e" - integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== - dependencies: - "@babel/code-frame" "^7.10.3" - "@babel/generator" "^7.10.3" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helpers" "^7.10.1" - "@babel/parser" "^7.10.3" - "@babel/template" "^7.10.3" - "@babel/traverse" "^7.10.3" - "@babel/types" "^7.10.3" +"@babel/core@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" + integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -119,6 +126,28 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.1.0", "@babel/core@^7.7.5": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e" + integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helpers" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/generator@^7.10.1": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" @@ -139,6 +168,16 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" + integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== + dependencies: + "@babel/types" "^7.10.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/generator@^7.7.7", "@babel/generator@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" @@ -248,6 +287,15 @@ "@babel/template" "^7.10.3" "@babel/types" "^7.10.3" +"@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== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + "@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" @@ -271,6 +319,13 @@ dependencies: "@babel/types" "^7.10.3" +"@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== + dependencies: + "@babel/types" "^7.10.4" + "@babel/helper-get-function-arity@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" @@ -292,6 +347,13 @@ dependencies: "@babel/types" "^7.10.1" +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" + integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== + dependencies: + "@babel/types" "^7.10.4" + "@babel/helper-member-expression-to-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" @@ -313,6 +375,13 @@ dependencies: "@babel/types" "^7.10.1" +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== + dependencies: + "@babel/types" "^7.10.4" + "@babel/helper-module-transforms@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" @@ -326,6 +395,19 @@ "@babel/types" "^7.10.1" lodash "^4.17.13" +"@babel/helper-module-transforms@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" + integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + lodash "^4.17.13" + "@babel/helper-module-transforms@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" @@ -346,6 +428,13 @@ dependencies: "@babel/types" "^7.10.1" +"@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== + dependencies: + "@babel/types" "^7.10.4" + "@babel/helper-optimise-call-expression@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" @@ -391,6 +480,16 @@ "@babel/traverse" "^7.10.1" "@babel/types" "^7.10.1" +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + "@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" @@ -409,6 +508,14 @@ "@babel/template" "^7.10.1" "@babel/types" "^7.10.1" +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== + dependencies: + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + "@babel/helper-simple-access@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" @@ -424,6 +531,13 @@ dependencies: "@babel/types" "^7.10.1" +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -441,6 +555,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15" integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw== +"@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.9.0", "@babel/helper-validator-identifier@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" @@ -465,6 +584,15 @@ "@babel/traverse" "^7.10.1" "@babel/types" "^7.10.1" +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + "@babel/helpers@^7.7.4": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" @@ -492,6 +620,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" @@ -511,6 +648,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== +"@babel/parser@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" + integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== + "@babel/parser@^7.7.7", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" @@ -1105,14 +1247,6 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-typescript" "^7.9.0" -"@babel/runtime-corejs3@^7.8.3": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.6.tgz#67aded13fffbbc2cb93247388cf84d77a4be9a71" - integrity sha512-6toWAfaALQjt3KMZQc6fABqZwUDDuWzz+cAfPhqyEnzxvdWOAkjwPNxgF8xlmo7OWLsSjaKjsskpKHRLaMArOA== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - "@babel/runtime@7.9.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" @@ -1152,6 +1286,15 @@ "@babel/parser" "^7.10.3" "@babel/types" "^7.10.3" +"@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== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + "@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" @@ -1191,6 +1334,21 @@ globals "^11.1.0" lodash "^4.17.13" +"@babel/traverse@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" + integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" @@ -1242,6 +1400,15 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" + integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -3102,51 +3269,66 @@ resolved "https://registry.yarnpkg.com/@types/zrender/-/zrender-4.0.0.tgz#a6806f12ec4eccaaebd9b0d816f049aca6188fbd" integrity sha512-s89GOIeKFiod2KSqHkfd2rzx+T2DVu7ihZCBEBnhFrzvQPUmzvDSBot9Fi1DfMQm9Odg+rTqoMGC38RvrwJK2w== -"@typescript-eslint/eslint-plugin@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.4.0.tgz#8378062e6be8a1d049259bdbcf27ce5dfbeee62b" - integrity sha512-wfkpiqaEVhZIuQRmudDszc01jC/YR7gMSxa6ulhggAe/Hs0KVIuo9wzvFiDbG3JD5pRFQoqnf4m7REDsUvBnMQ== +"@typescript-eslint/eslint-plugin@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.5.0.tgz#e7736e0808b5fb947a5f9dd949ae6736a7226b84" + integrity sha512-m4erZ8AkSjoIUOf8s4k2V1xdL2c1Vy0D3dN6/jC9d7+nEqjY3gxXCkgi3gW/GAxPaA4hV8biaCoTVdQmfAeTCQ== dependencies: - "@typescript-eslint/experimental-utils" "3.4.0" + "@typescript-eslint/experimental-utils" "3.5.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.4.0.tgz#8a44dfc6fb7f1d071937b390fe27608ebda122b8" - integrity sha512-rHPOjL43lOH1Opte4+dhC0a/+ks+8gOBwxXnyrZ/K4OTAChpSjP76fbI8Cglj7V5GouwVAGaK+xVwzqTyE/TPw== +"@typescript-eslint/experimental-utils@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.5.0.tgz#d09f9ffb890d1b15a7ffa9975fae92eee05597c4" + integrity sha512-zGNOrVi5Wz0jcjUnFZ6QUD0MCox5hBuVwemGCew2qJzUX5xPoyR+0EzS5qD5qQXL/vnQ8Eu+nv03tpeFRwLrDg== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "3.4.0" + "@typescript-eslint/types" "3.5.0" + "@typescript-eslint/typescript-estree" "3.5.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.4.0.tgz#fe52b68c5cb3bba3f5d875bd17adb70420d49d8d" - integrity sha512-ZUGI/de44L5x87uX5zM14UYcbn79HSXUR+kzcqU42gH0AgpdB/TjuJy3m4ezI7Q/jk3wTQd755mxSDLhQP79KA== +"@typescript-eslint/parser@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.5.0.tgz#9ff8c11877c48df24e10e19d7bf542ee0359500d" + integrity sha512-sU07VbYB70WZHtgOjH/qfAp1+OwaWgrvD1Km1VXqRpcVxt971PMTU7gJtlrCje0M+Sdz7xKAbtiyIu+Y6QdnVA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "3.4.0" - "@typescript-eslint/typescript-estree" "3.4.0" + "@typescript-eslint/experimental-utils" "3.5.0" + "@typescript-eslint/types" "3.5.0" + "@typescript-eslint/typescript-estree" "3.5.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.4.0.tgz#6a787eb70b48969e4cd1ea67b057083f96dfee29" - integrity sha512-zKwLiybtt4uJb4mkG5q2t6+W7BuYx2IISiDNV+IY68VfoGwErDx/RfVI7SWL4gnZ2t1A1ytQQwZ+YOJbHHJ2rw== +"@typescript-eslint/types@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.5.0.tgz#4e3d2a2272268d8ec3e3e4a37152a64956682639" + integrity sha512-Dreqb5idi66VVs1QkbAwVeDmdJG+sDtofJtKwKCZXIaBsINuCN7Jv5eDIHrS0hFMMiOvPH9UuOs4splW0iZe4Q== + +"@typescript-eslint/typescript-estree@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.5.0.tgz#dfc895db21a381b84f24c2a719f5bf9c600dcfdc" + integrity sha512-Na71ezI6QP5WVR4EHxwcBJgYiD+Sre9BZO5iJK2QhrmRPo/42+b0no/HZIrdD1sjghzlYv7t+7Jis05M1uMxQg== dependencies: + "@typescript-eslint/types" "3.5.0" + "@typescript-eslint/visitor-keys" "3.5.0" debug "^4.1.1" - eslint-visitor-keys "^1.1.0" glob "^7.1.6" is-glob "^4.0.1" lodash "^4.17.15" semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.5.0.tgz#73c1ea2582f814735e4afdc1cf6f5e3af78db60a" + integrity sha512-7cTp9rcX2sz9Z+zua9MCOX4cqp5rYyFD5o8LlbSpXrMTXoRdngTtotRZEkm8+FNMHPWYFhitFK+qt/brK8BVJQ== + dependencies: + eslint-visitor-keys "^1.1.0" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -3641,7 +3823,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-includes@^3.0.3, array-includes@^3.1.1: +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== @@ -3688,6 +3870,15 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.17.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== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -5127,21 +5318,21 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.2.tgz#10efc6ad219a61acbf2f5fb50af83da38431bc34" - integrity sha512-9Gm8X0c6eXlKnmltMPFCBeGOKjtcRIyTt4VaO3k1TkNgVTe5Ov2lYsYVuyLp0kp8DItO3apewflM+1GYgh6V2Q== +copy-webpack-plugin@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz#2b3d2bfc6861b96432a65f0149720adbd902040b" + integrity sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA== dependencies: cacache "^15.0.4" - fast-glob "^3.2.2" + fast-glob "^3.2.4" find-cache-dir "^3.3.1" glob-parent "^5.1.1" globby "^11.0.1" loader-utils "^2.0.0" normalize-path "^3.0.0" - p-limit "^2.3.0" + p-limit "^3.0.1" schema-utils "^2.7.0" - serialize-javascript "^3.1.0" + serialize-javascript "^4.0.0" webpack-sources "^1.4.3" core-js-compat@^3.6.2: @@ -5152,11 +5343,6 @@ core-js-compat@^3.6.2: browserslist "^4.8.5" semver "7.0.0" -core-js-pure@^3.0.0: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== - core-js@3.6.5: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" @@ -6618,27 +6804,27 @@ eslint-plugin-prettier@3.1.4: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-react-hooks@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.0.tgz#81196b990043cde339e25c6662aeebe32ac52d01" - integrity sha512-YKBY+kilK5wrwIdQnCF395Ya6nDro3EAMoe+2xFkmyklyhF16fH83TrQOo9zbZIDxBsXFgBbywta/0JKRNFDkw== +eslint-plugin-react-hooks@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.5.tgz#4879003aa38e5d05d0312175beb6e4a1f617bfcf" + integrity sha512-3YLSjoArsE2rUwL8li4Yxx1SUg3DQWp+78N3bcJQGWVZckcp+yeQGsap/MSq05+thJk57o+Ww4PtZukXGL02TQ== -eslint-plugin-react@7.20.0: - version "7.20.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz#f98712f0a5e57dfd3e5542ef0604b8739cd47be3" - integrity sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA== +eslint-plugin-react@7.20.3: + version "7.20.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz#0590525e7eb83890ce71f73c2cf836284ad8c2f1" + integrity sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg== dependencies: array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" + jsx-ast-utils "^2.4.1" + object.entries "^1.1.2" object.fromentries "^2.0.2" object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.15.1" + resolve "^1.17.0" string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" eslint-scope@^4.0.3: version "4.0.3" @@ -7012,7 +7198,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.1.1, fast-glob@^3.2.2: +fast-glob@^3.1.1: version "3.2.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== @@ -7024,6 +7210,18 @@ fast-glob@^3.1.1, fast-glob@^3.2.2: micromatch "^4.0.2" picomatch "^2.2.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== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -8093,27 +8291,27 @@ i18next-browser-languagedetector@5.0.0: dependencies: "@babel/runtime" "^7.5.5" -i18next-fs-backend@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/i18next-fs-backend/-/i18next-fs-backend-1.0.6.tgz#1cf5f78c7801bfcd4ff4c6989ac3b14b6ff1a252" - integrity sha512-/XC6e08DDWcTNZTUYL2KPPMFpCdksc1FDWJwJur+Nh9MlDVSTE7q1YsOApxhA+lX2iIdJbTAsN72l//vo7OcUw== +i18next-fs-backend@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/i18next-fs-backend/-/i18next-fs-backend-1.0.7.tgz#00ca4587e306f8948740408389dda73461a5d07f" + integrity sha512-aAZ3rvshe1Zbl6JSCWrWWqbZS5JpmVNG+84YqLcgdYcm9uAxzw4xWxnA/a3044Nm2PKXE62CT+pIZjk7OEYtTw== -i18next-http-backend@1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-1.0.15.tgz#e1be47f29ec211b2064169c497b8dc55aab66924" - integrity sha512-AOGNcB47n0S4GANyVhGUeLRzUUgvh6Lf5vNs/+G3cCP2Mri0OseO2rX0VLHE6PcL21mswW7ka1nmjGKviXKnjQ== +i18next-http-backend@1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-1.0.16.tgz#19752548484f13efcef55ffa366f30d40216dffc" + integrity sha512-IsRfJl2alhCxhu+8jWCz7ZsGqjOWm6gu9vJ6TKmSWIvTISKPn32SGWUM0Uk8ChtrIyW7bXNudKwCEDLzar84Dw== dependencies: node-fetch "2.6.0" -i18next-http-middleware@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/i18next-http-middleware/-/i18next-http-middleware-3.0.0.tgz#82533e87bfd5fbb18e2f7cc07efcac924075e883" - integrity sha512-ciFHoWDF/SGdVRqOzeuUgFUGJTd/J8fyo6YDeArNmNGBBkffL2chMT9L090LOPhlV3TAji1FeskVxAHZjsaupA== +i18next-http-middleware@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/i18next-http-middleware/-/i18next-http-middleware-3.0.2.tgz#69b24e81f134c67d9a356fea43c2c09a507edcc4" + integrity sha512-h6n6+4k6EbYjtACPSslEkpf3Qf404QpENGb87auMSA77QBna9dUBWNAzG3jmqzK9cV4p8ZjsQTrwMzu+xyYaXw== -i18next@19.5.1: - version "19.5.1" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.5.1.tgz#d5fdc7b2dafd1a183f2188d65dfdb78ef9f35264" - integrity sha512-e6lGMiTyb51F9PPInUTTDg8YbwcWXZYX18svaX2NUUWEphJKP7oG5HMlbZ+K84AXqw4AeBnwRrOlS9ickqcCBg== +i18next@19.5.3: + version "19.5.3" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.5.3.tgz#1e8416072c1e1cd0c83afab430e94957a5165a74" + integrity sha512-R7ie0TdTpBhybNa2eDhTkJKSCDe7pPsHx6/q0RTtHPFw1mrFp0PEtpUqOPy4KaIRwJc8n2N/phTp+HiOBP5Biw== dependencies: "@babel/runtime" "^7.10.1" @@ -9335,12 +9533,12 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" - integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== +jsx-ast-utils@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" + integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== dependencies: - array-includes "^3.0.3" + array-includes "^3.1.1" object.assign "^4.1.0" keyv@^3.0.0: @@ -10799,7 +10997,7 @@ object.assign@4.1.0, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.1.0, object.entries@^1.1.1: +object.entries@^1.1.0, object.entries@^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== @@ -10980,13 +11178,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-limit@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.1.tgz#584784ac0722d1aed09f19f90ed2999af6ce2839" + integrity sha512-mw/p92EyOzl2MhauKodw54Rx5ZK4624rNfgNaBguFZkHzyUG9WsDzFF5/yQVEJinbJDdP4jEfMN+uBquiGnaLg== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -12786,7 +12991,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.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.15.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -12978,6 +13183,17 @@ sass-loader@8.0.2: schema-utils "^2.6.1" semver "^6.3.0" +sass-loader@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-9.0.0.tgz#06f2624c8d9efc2d989997d351aaad2d46ee1b44" + integrity sha512-GRHB5AT35QXVKbdqKMSU29x0tVDIFSUZeTzK7SGlHu4sm2dhRqGfMx5HnIdiMyRvLJJHaWmmabR1h0gNSHipPw== + dependencies: + clone-deep "^4.0.1" + loader-utils "^2.0.0" + neo-async "^2.6.1" + schema-utils "^2.7.0" + semver "^7.3.2" + sass@1.26.9: version "1.26.9" resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.9.tgz#73c10cbb88c12b22a9e0107725bfd62296f4978f" @@ -13102,10 +13318,10 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serialize-javascript@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" @@ -14438,10 +14654,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.9.5: - version "3.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36" - integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ== +typescript@3.9.6: + version "3.9.6" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a" + integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== uglify-js@^3.1.4: version "3.9.3" @@ -15175,13 +15391,6 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -xregexp@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" - integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== - dependencies: - "@babel/runtime-corejs3" "^7.8.3" - xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" -- GitLab