diff --git a/content/Home.md b/content/Home.md index ed28581c3d..3c5a3906eb 100644 --- a/content/Home.md +++ b/content/Home.md @@ -1,9 +1,3 @@ -import { HomeImages } from 'src/components/Home/HomeImages' -import { Link } from 'src/components/Link/Link' -import { LinkExternal } from 'src/components/Link/LinkExternal' -import { NameTable } from 'src/components/Common/NameTable' -import { CladeSchema } from 'src/components/Variants/CladeSchema.tsx' - **Click on a variant button to start exploring!** CoVariants provides an overview of SARS-CoV-2 variants and mutations that are of interest. Here, you can find out what mutations define a variant, what impact they might have (with links to papers and resources), where variants are found, and see the variants in Nextstrain builds! @@ -11,18 +5,16 @@ CoVariants provides an overview of SARS-CoV-2 variants and mutations that are of Click one of the colored buttons to look at a particular [Variant](/variants) - to read information, see graphs and the protein structure, and link out to focused Nextstrain builds. To look at many variants at once, check out the [Per Variant](/per-variant) and [Per Country](/per-country) pages, where you can view a lot of data in the same place, and compare variants and countries! - **What do the names mean?** + CoVariants uses the Nextstrain naming system for variants ([read more here](https://nextstrain.org/blog/2021-01-06-updated-SARS-CoV-2-clade-naming/)). However, the fact that there's multiple naming systems is confusing! See the table below to help find the variant you're interested in. - How are all these variants/clades related to each other? CoVariants follows the Nextstrain Clade schema, where variants can descend from other variants. Here's a chart to show the overall relationships of Nextstrain Clades: - This project is free and open source. The content, derived data, code used to generate the data, and code that implements this web application can be found on GitHub: [github.com/hodcroftlab/covariants](https://github.com/hodcroftlab/covariants/). diff --git a/content/clusters/22A22B_Spike.md b/content/clusters/22A22B_Spike.md index 616e1b0f21..f5e1f47bf6 100644 --- a/content/clusters/22A22B_Spike.md +++ b/content/clusters/22A22B_Spike.md @@ -8,8 +8,8 @@ import { LinkExternal } from 'src/components/Link/LinkExternal' In a background (which does not have the deletion), the and deletion allows and to be detected through "S gene drop out" or "S gene target failure (SGTF)" in certain qPCR assays. -- In South Africa, and rapidly replaced , with estimated growth advantages over estimated at 0.08 and 0.12, respectively (similar to the estimated advantage of over ). As well as immune evasion (see points below), waning immunity after the initial may be a factor in the increased transmission advantage ([Tegally et al., medRxiv](https://www.medrxiv.org/content/10.1101/2022.05.01.22274406v1)) +- In South Africa, and rapidly replaced , with estimated growth advantages over estimated at 0.08 and 0.12, respectively (similar to the estimated advantage of over ). As well as immune evasion (see points below), waning immunity after the initial may be a factor in the increased transmission advantage ([Tegally et al., medRxiv](https://www.medrxiv.org/content/10.1101/2022.05.01.22274406v1)) - Neutralizing immunity against and dropped 7.6- and 7.5-fold, respectively, compared to , in unvaccinated individuals who had been infected with . In vaccinated (Pfizer or J&J) individuals who had been infected with , titers dropped 3.2- and 2.6-fold, respectively ([Khan et al., medRxiv](https://www.medrxiv.org/content/10.1101/2022.04.29.22274477v1)) - Neutralizing titers against and were reduced compared to in vaccinated (CoronaVac) individuals, with a stronger reduction in vaccinated individuals who had been previously infected with ([Cao et al. bioRxiv](https://www.biorxiv.org/content/10.1101/2022.04.30.489997v1)) - ACE2 binding affinity was markedly reduced in and , compared with , possibly due to the mutation and a reversion at ([Cao et al., bioRxiv](https://www.biorxiv.org/content/10.1101/2022.04.30.489997v1)) -- and escape many of the same monoclonal antibodies as (see paper for full chart) (Cao et al., bioRxiv) \ No newline at end of file +- and escape many of the same monoclonal antibodies as (see paper for full chart) (Cao et al., bioRxiv) diff --git a/content/clusters/22C.Omicron.md b/content/clusters/22C.Omicron.md index a513632553..3b90344c90 100644 --- a/content/clusters/22C.Omicron.md +++ b/content/clusters/22C.Omicron.md @@ -23,7 +23,7 @@ As with all variants,
- Neutralizing titers against were reduced compared to in vaccinated (CoronaVac) individuals ([Cao et al., bioRxiv](https://www.biorxiv.org/content/10.1101/2022.04.30.489997v1)) -- ACE2 binding affinity was increased in , compared with and other variants ([Cao et al., bioRxiv](https://www.biorxiv.org/content/10.1101/2022.04.30.489997v1)) +- ACE2 binding affinity was increased in , compared with and other variants ([Cao et al., bioRxiv](https://www.biorxiv.org/content/10.1101/2022.04.30.489997v1)) does not have any additional amino-acid mutations outside of spike, compared to . @@ -32,4 +32,4 @@ As with all variants, dev/null \ && npm install -g nodemon@${NODEMON_VERSION} yarn@${YARN_VERSION} >/dev/null \ && npm config set scripts-prepend-node-path auto +# Calm down the (in)famous chatter from yarn +RUN set -euxo pipefail >/dev/null \ +&& sed -i'' "s/this.reporter.warn(this.reporter.lang('incompatibleResolutionVersion', pattern, reqPattern));//g" "${NODE_DIR}/lib/node_modules/yarn/lib/cli.js" \ +&& sed -i'' "s/_this2\.reporter.warn(_this2\.reporter.lang('ignoredScripts'));//g" "${NODE_DIR}/lib/node_modules/yarn/lib/cli.js" \ +&& sed -i'' 's/_this3\.reporter\.warn(_this3\.reporter\.lang(peerError.*;//g' "/opt/node/lib/node_modules/yarn/lib/cli.js" + + # Install Python dependencies COPY requirements.txt / RUN set -euxo pipefail >/dev/null \ diff --git a/infra/data/lambda-at-edge/OriginRequest.lambda.js b/infra/data/lambda-at-edge/OriginRequest.lambda.js new file mode 100644 index 0000000000..0d6e1caee1 --- /dev/null +++ b/infra/data/lambda-at-edge/OriginRequest.lambda.js @@ -0,0 +1,42 @@ +/* eslint-disable prefer-destructuring,sonarjs/no-collapsible-if,unicorn/no-lonely-if */ +// Implements rewrite of non-compressed to .gz URLs using AWS +// Lambda@Edge. This is useful if you have precompressed your files. +// +// Usage: +// Create an AWS Lambda function and attach it to "Origin Request" event of a +// Cloudfront distribution + +const ARCHIVE_EXTS = ['.7z', '.br', '.bz2', '.gz', '.lzma', '.xz', '.zip', '.zst'] + +function getHeader(headers, headerName) { + const header = headers[headerName.toLowerCase()] + if (!header || !header[0] || !header[0].value) { + return undefined + } + return header[0].value +} + +function acceptsEncoding(headers, encoding) { + const ae = getHeader(headers, 'Accept-Encoding') + if (!ae || typeof ae != 'string') { + return false + } + return ae.split(',').some((e) => e.trim().toLowerCase().startsWith(encoding.toLowerCase())) +} + +function handler(event, context, callback) { + const request = event.Records[0].cf.request + const headers = request.headers + + // If not an archive file (which are not precompressed), rewrite the URL to + // get the corresponding .gz file + if (ARCHIVE_EXTS.every((ext) => !request.uri.endsWith(ext))) { + if (acceptsEncoding(headers, 'gzip')) { + request.uri += '.gz' + } + } + + callback(null, request) +} + +exports.handler = handler diff --git a/infra/data/lambda-at-edge/ViewerResponse.lambda.js b/infra/data/lambda-at-edge/ViewerResponse.lambda.js new file mode 100644 index 0000000000..b4b5b0e2bd --- /dev/null +++ b/infra/data/lambda-at-edge/ViewerResponse.lambda.js @@ -0,0 +1,63 @@ +// Adds additional headers to the response, including security headers and CORS. +// Suited for serving data and APIs. +// +// See also: +// - https://securityheaders.com/ +// +// Usage: Create an AWS Lambda@Edge function and attach it to "Viewer Response" +// event of a Cloudfront distribution + +const NEW_HEADERS = { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'GET, OPTIONS', + 'Content-Security-Policy': `default-src 'none'; frame-ancestors 'none'`, + 'Strict-Transport-Security': 'max-age=15768000; includeSubDomains; preload', + 'X-Content-Type-Options': 'nosniff', + 'X-DNS-Prefetch-Control': 'off', + 'X-Download-Options': 'noopen', + 'X-Frame-Options': 'DENY', + 'X-XSS-Protection': '1; mode=block', +} + +function addHeaders(headersObject) { + return Object.fromEntries( + Object.entries(headersObject).map(([header, value]) => [header.toLowerCase(), [{ key: header, value }]]), + ) +} + +const HEADERS_TO_REMOVE = new Set(['server', 'via']) + +function filterHeaders(headers) { + return Object.entries(headers).reduce((result, [key, value]) => { + if (HEADERS_TO_REMOVE.has(key.toLowerCase())) { + return result + } + + if (key.toLowerCase().includes('powered-by')) { + return result + } + + return { ...result, [key.toLowerCase()]: value } + }, {}) +} + +function modifyHeaders({ response }) { + let newHeaders = addHeaders(NEW_HEADERS) + + newHeaders = { + ...response.headers, + ...newHeaders, + } + + newHeaders = filterHeaders(newHeaders) + + return newHeaders +} + +exports.handler = (event, context, callback) => { + const { request, response } = event.Records[0].cf + response.headers = modifyHeaders({ request, response }) + callback(null, response) +} + +exports.modifyHeaders = modifyHeaders diff --git a/infra/find-lambda-at-edge-logs.sh b/infra/find-lambda-at-edge-logs.sh new file mode 100755 index 0000000000..b9c8fe449e --- /dev/null +++ b/infra/find-lambda-at-edge-logs.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Inspired by https://stackoverflow.com/a/54096479/526860 + +FUNCTION_NAME=$1 + +for region in $(aws --output text ec2 describe-regions | cut -f 4); do + for loggroup in $(aws --output text logs describe-log-groups --log-group-name "/aws/lambda/us-east-1.$FUNCTION_NAME" --region $region --query 'logGroups[].logGroupName'); do + printf "$region\tconsole.aws.amazon.com/cloudwatch/home?region=$region#logsV2:log-groups/log-group/\$252Faws\$252Flambda\$252Fus-east-1.$FUNCTION_NAME\n" + done +done diff --git a/infra/iam-role-trust-for-lambda-at-edge.json b/infra/iam-role-trust-for-lambda-at-edge.json new file mode 100644 index 0000000000..e39c731082 --- /dev/null +++ b/infra/iam-role-trust-for-lambda-at-edge.json @@ -0,0 +1,15 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com", + "edgelambda.amazonaws.com" + ] + }, + "Action": "sts:AssumeRole" + } + ] +} diff --git a/infra/s3-cors-permissions.json b/infra/s3-cors-permissions.json new file mode 100644 index 0000000000..d705ef494a --- /dev/null +++ b/infra/s3-cors-permissions.json @@ -0,0 +1,9 @@ +[ + { + "AllowedHeaders": ["*"], + "AllowedMethods": ["GET", "HEAD"], + "AllowedOrigins": ["*"], + "ExposeHeaders": [], + "MaxAgeSeconds": 3000 + } +] diff --git a/infra/web/lambda-at-edge/OriginRequest.lambda.js b/infra/web/lambda-at-edge/OriginRequest.lambda.js new file mode 100644 index 0000000000..902e15aa61 --- /dev/null +++ b/infra/web/lambda-at-edge/OriginRequest.lambda.js @@ -0,0 +1,44 @@ +/* eslint-disable prefer-destructuring */ +// Implements rewrite of non-compressed to .gz or .br URLs using AWS +// Lambda@Edge. This is useful if you have precompressed your files. +// +// Usage: +// Create an AWS Lambda function and attach it to "Origin Request" event of a +// Cloudfront distribution + +const ARCHIVE_EXTS = ['.7z', '.br', '.bz2', '.gz', '.lzma', '.xz', '.zip', '.zst'] + +function getHeader(headers, headerName) { + const header = headers[headerName.toLowerCase()] + if (!header || !header[0] || !header[0].value) { + return undefined + } + return header[0].value +} + +function acceptsEncoding(headers, encoding) { + const ae = getHeader(headers, 'Accept-Encoding') + if (!ae || typeof ae != 'string') { + return false + } + return ae.split(',').some((e) => e.trim().toLowerCase().startsWith(encoding.toLowerCase())) +} + +function handler(event, context, callback) { + const request = event.Records[0].cf.request + const headers = request.headers + + // If not an archive file (which are not precompressed), rewrite the URL to + // get the corresponding .gz file + if (ARCHIVE_EXTS.every((ext) => !request.uri.endsWith(ext))) { + if (acceptsEncoding(headers, 'br')) { + request.uri += '.br' + } else if (acceptsEncoding(headers, 'gzip')) { + request.uri += '.gz' + } + } + + callback(null, request) +} + +exports.handler = handler diff --git a/web/infra/lambda-at-edge/modifyOutgoingHeaders.lambda.js b/infra/web/lambda-at-edge/ViewerResponse.lambda.js similarity index 53% rename from web/infra/lambda-at-edge/modifyOutgoingHeaders.lambda.js rename to infra/web/lambda-at-edge/ViewerResponse.lambda.js index 5c17d84d5c..92bfc51e9e 100644 --- a/web/infra/lambda-at-edge/modifyOutgoingHeaders.lambda.js +++ b/infra/web/lambda-at-edge/ViewerResponse.lambda.js @@ -1,25 +1,21 @@ -// Adds some of the security headers to requests using AWS Lambda@Edge -// See https://securityheaders.com/ +// Adds additional headers to the response, including security headers. +// Suited for websites. // -// Usage: Create an AWS Lambda function and attach this to "Viewer Response" event of a Cloudfront distribution +// See also: +// - https://securityheaders.com/ +// +// Usage: Create an AWS Lambda@Edge function and attach it to "Viewer Response" +// event of a Cloudfront distribution const FEATURE_POLICY = { - 'accelerometer': `'none'`, - 'autoplay': `'none'`, - 'camera': `'none'`, - 'document-domain': `'none'`, - 'encrypted-media': `'none'`, - 'fullscreen': `'none'`, - 'geolocation': `'none'`, - 'gyroscope': `'none'`, - 'magnetometer': `'none'`, - 'microphone': `'none'`, - 'midi': `'none'`, - 'payment': `'none'`, - 'picture-in-picture': `'none'`, - 'sync-xhr': `'none'`, - 'usb': `'none'`, - 'xr-spatial-tracking': `'none'`, + accelerometer: `'none'`, + camera: `'none'`, + geolocation: `'none'`, + gyroscope: `'none'`, + magnetometer: `'none'`, + microphone: `'none'`, + payment: `'none'`, + usb: `'none'`, } function generateFeaturePolicyHeader(featurePolicyObject) { @@ -28,9 +24,26 @@ function generateFeaturePolicyHeader(featurePolicyObject) { .join('; ') } +const PERMISSIONS_POLICY = { + 'accelerometer': '()', + 'camera': '()', + 'geolocation': '()', + 'gyroscope': '()', + 'magnetometer': '()', + 'microphone': '()', + 'payment': '()', + 'usb': '()', + 'interest-cohort': '()', +} + +function generatePermissionsPolicyHeader(permissionsPolicyObject) { + return Object.entries(permissionsPolicyObject) + .map(([policy, value]) => `${policy}=${value}`) + .join(', ') +} + const NEW_HEADERS = { - 'Content-Security-Policy': - "default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src *; frame-src https://nextstrain.org", + 'Content-Security-Policy': `default-src 'self' *.pangenome.org; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: *.pangenome.org plausible.io maxcdn.bootstrapcdn.com; style-src 'self' 'unsafe-inline' maxcdn.bootstrapcdn.com fonts.googleapis.com; font-src 'self' maxcdn.bootstrapcdn.com fonts.googleapis.com fonts.gstatic.com;img-src 'self' data:; connect-src *; frame-src 'self' player.vimeo.com`, 'Referrer-Policy': 'no-referrer', 'Strict-Transport-Security': 'max-age=15768000; includeSubDomains; preload', 'X-Content-Type-Options': 'nosniff', @@ -39,6 +52,7 @@ const NEW_HEADERS = { 'X-Frame-Options': 'SAMEORIGIN', 'X-XSS-Protection': '1; mode=block', 'Feature-Policy': generateFeaturePolicyHeader(FEATURE_POLICY), + 'Permissions-Policy': generatePermissionsPolicyHeader(PERMISSIONS_POLICY), } function addHeaders(headersObject) { @@ -63,7 +77,7 @@ function filterHeaders(headers) { }, {}) } -function modifyHeaders({ request, response }) { +function modifyHeaders({ response }) { let newHeaders = addHeaders(NEW_HEADERS) newHeaders = { @@ -73,18 +87,6 @@ function modifyHeaders({ request, response }) { newHeaders = filterHeaders(newHeaders) - const url = request.uri || request.url - if (url.startsWith('/_next')) { - const cacheHeaders = addHeaders({ - 'Cache-Control': 'public,max-age=31536000,immutable', - }) - - newHeaders = { - ...newHeaders, - ...cacheHeaders, - } - } - return newHeaders } diff --git a/scripts/convert_to_web_app_json_v2.py b/scripts/convert_to_web_app_json_v2.py new file mode 100755 index 0000000000..d3d93d6b2f --- /dev/null +++ b/scripts/convert_to_web_app_json_v2.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +Converts Covariants v1 data to Covariants v2 data +""" +import json +from collections import defaultdict +from os import makedirs +from os.path import abspath, dirname, join +from typing import Dict, List + +THIS_DIR = abspath(dirname(__file__)) +PROJECT_ROOT = abspath(dirname(THIS_DIR)) +IN_DIR = join(PROJECT_ROOT, "web/data") +OUT_DIR = join(PROJECT_ROOT, "web/data/v2") + + +def mkdir(dirpath): + makedirs(dirpath, exist_ok=True) + + +def json_read(filepath: str): + with open(filepath, "r") as f: + return json.load(f) + + +def json_write(obj: dict, filepath: str): + mkdir(dirname(filepath)) + with open(filepath, "w") as f: + return json.dump(obj, f, indent=2) + + +def json_stringify(obj: dict): + return json.dumps(obj, indent=2, default=lambda o: o.__dict__) + + +def json_print(obj: dict): + print(json_stringify(obj)) + + +def find_continent(world_continent_map: Dict[str, List], country: str): + """ Find continent name given a country """ + for continent, countries in world_continent_map.items(): + if country in countries: + return continent + raise ValueError(f"Continent not found for country '{country}' in 'region_country.json'") + + +def get_geography_json(): + per_country = json_read(join(IN_DIR, "perCountryData.json")) + world_continent_map = json_read(join(IN_DIR, "region_country.json")) + + regions = defaultdict() + for region in per_country["regions"]: + region_name = region["region"] + countries = [distribution["country"] for distribution in region["distributions"]] + + continents = defaultdict(list) + if region_name == "World": + # Partition world countries into continents + for country in countries: + continent = find_continent(world_continent_map, country) + continents[continent].append(country) + else: + # Let's imagine regions "US" and "Switzerland" have 1 pseudo-continent, of the same name as region + continents = {region_name: countries} + + region_data = {"continents": continents, "countries": countries} + + regions.update({region_name: region_data}) + + geography = { + "regions": regions, + } + + json_print(geography) + json_write(geography, join(OUT_DIR, "geography.json")) + + +if __name__ == '__main__': + get_geography_json() diff --git a/web/.env.example b/web/.env.example index 5b9b4530ef..001037118b 100644 --- a/web/.env.example +++ b/web/.env.example @@ -1,21 +1,20 @@ FULL_DOMAIN=autodetect +DATA_ROOT_URL=https://data.master.covariants.org WEB_PORT_DEV=3000 WEB_PORT_PROD=8080 WEB_PORT_ANALYZE=8888 NEXT_TELEMETRY_DISABLED=0 +RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=false DEV_ENABLE_TYPE_CHECKS=1 DEV_ENABLE_ESLINT=1 -DEV_ENABLE_STYLELINT=0 PROD_ENABLE_SOURCE_MAPS=1 PROD_ENABLE_TYPE_CHECKS=1 PROD_ENABLE_ESLINT=1 -PROD_ENABLE_STYLELINT=0 -ANALYZE=0 PROFILE=0 WATCH_POLL=0 diff --git a/web/.env.vercel b/web/.env.vercel index 4217b55edf..0d8e826b6e 100644 --- a/web/.env.vercel +++ b/web/.env.vercel @@ -5,15 +5,15 @@ WEB_PORT_PROD=null WEB_PORT_ANALYZE=8888 NEXT_TELEMETRY_DISABLED=0 +RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=false DEV_ENABLE_TYPE_CHECKS=1 DEV_ENABLE_ESLINT=1 -DEV_ENABLE_STYLELINT=1 PROD_ENABLE_SOURCE_MAPS=1 PROD_ENABLE_TYPE_CHECKS=0 PROD_ENABLE_ESLINT=0 -PROD_ENABLE_STYLELINT=0 -ANALYZE=0 PROFILE=0 + +WATCH_POLL=0 diff --git a/web/.eslintrc.js b/web/.eslintrc.js index a028740b65..2ba19b2c8c 100644 --- a/web/.eslintrc.js +++ b/web/.eslintrc.js @@ -79,9 +79,13 @@ module.exports = { '@typescript-eslint/naming-convention': 'off', '@typescript-eslint/no-empty-function': 'off', '@typescript-eslint/no-shadow': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/unbound-method': ['off'], + 'array-func/no-unnecessary-this-arg': 'off', 'array-func/prefer-array-from': 'off', - 'camelcase': 'warn', + 'camelcase': 'off', 'cflint/no-substr': 'warn', 'cflint/no-this-assignment': 'warn', 'import/extensions': [ @@ -136,6 +140,7 @@ module.exports = { 'unicorn/no-abusive-eslint-disable': 'warn', 'unicorn/no-array-callback-reference': 'off', 'unicorn/no-array-for-each': 'off', + 'unicorn/no-array-method-this-argument': 'off', 'unicorn/no-array-reduce': 'off', 'unicorn/no-fn-reference-in-iterator': 'off', 'unicorn/no-null': 'off', diff --git a/web/config/next/lib/getEnvVars.ts b/web/config/next/lib/getEnvVars.ts index ce2556f6b8..3c87df5f09 100644 --- a/web/config/next/lib/getEnvVars.ts +++ b/web/config/next/lib/getEnvVars.ts @@ -2,24 +2,22 @@ import { getbool, getenv } from '../../../lib/getenv' import { getDomain } from '../../../lib/getDomain' export function getEnvVars() { - const BABEL_ENV = getenv('BABEL_ENV') const NODE_ENV = getenv('NODE_ENV') - const ANALYZE = getbool('ANALYZE') - const PROFILE = getbool('PROFILE') const PRODUCTION = NODE_ENV === 'production' + const PROFILE = getbool('PROFILE') const DOMAIN = getDomain() const DOMAIN_STRIPPED = DOMAIN.replace('https://', '').replace('http://', '') const WATCH_POLL = getbool('WATCH_POLL', false) + const DATA_ROOT_URL = getenv('DATA_ROOT_URL') const common = { - BABEL_ENV, NODE_ENV, - ANALYZE, - PROFILE, PRODUCTION, + PROFILE, DOMAIN, DOMAIN_STRIPPED, WATCH_POLL, + DATA_ROOT_URL, } if (PRODUCTION) { @@ -28,7 +26,6 @@ export function getEnvVars() { ENABLE_SOURCE_MAPS: getbool('PROD_ENABLE_SOURCE_MAPS'), ENABLE_ESLINT: getbool('PROD_ENABLE_ESLINT'), ENABLE_TYPE_CHECKS: getbool('PROD_ENABLE_TYPE_CHECKS'), - ENABLE_STYLELINT: getbool('PROD_ENABLE_STYLELINT'), } } @@ -37,6 +34,5 @@ export function getEnvVars() { ENABLE_SOURCE_MAPS: true, ENABLE_ESLINT: getbool('DEV_ENABLE_ESLINT'), ENABLE_TYPE_CHECKS: getbool('DEV_ENABLE_TYPE_CHECKS'), - ENABLE_STYLELINT: getbool('DEV_ENABLE_STYLELINT'), } } diff --git a/web/config/next/loaders/removeDebugPackageLoader.js b/web/config/next/loaders/removeDebugPackageLoader.js new file mode 100644 index 0000000000..787ce8fb5a --- /dev/null +++ b/web/config/next/loaders/removeDebugPackageLoader.js @@ -0,0 +1,22 @@ +function stripDebugRequire(source) { + return source + .replace( + /__importDefault\s*\(\s*require\s*\(\s*["']\s*debug\s*["']\s*\)\s*\)/g, + '{ default() { return function () {} } }\n', + ) + .replace( + /_interopRequireDefault\s*\(\s*require\s*\(\s*["']\s*debug\s*["']\s*\)\s*\)/g, + '{ default() { return function () {} } }\n', + ) + .replace(/.*?require\(\s*["']debug["']\s*\).*/g, '(function(){return function () {}})\n') + .replace(/import\s+(.+)\s+from\s+["']debug["']/g, 'const $1 = (function(){ return function () {} })\n') +} + +/** + * Webpack loader which removes imports and requires of the `debug` package from JavaScript. + * This is especially important in presence of WebWorkers: `debug` package uses `windows` global, which is not + * present in WebWorker environment. + */ +export default function removeDebugPackageLoader(source) { + this.callback(null, stripDebugRequire(source)) +} diff --git a/web/config/next/next.config.ts b/web/config/next/next.config.ts index c408ea3804..df4f35d581 100644 --- a/web/config/next/next.config.ts +++ b/web/config/next/next.config.ts @@ -19,6 +19,7 @@ import getWithFriendlyConsole from './withFriendlyConsole' import getWithLodash from './withLodash' import { getWithRobotsTxt } from './withRobotsTxt' import getWithTypeChecking from './withTypeChecking' +import withoutDebugPackage from './withoutDebugPackage' import withSvg from './withSvg' import withIgnore from './withIgnore' import withoutMinification from './withoutMinification' @@ -28,18 +29,15 @@ import withWebpackWatchPoll from './withWebpackWatchPoll' import withUrlAsset from './withUrlAsset' const { - // BABEL_ENV, - // NODE_ENV, - // ANALYZE, - PROFILE, PRODUCTION, + PROFILE, ENABLE_SOURCE_MAPS, ENABLE_ESLINT, ENABLE_TYPE_CHECKS, - // ENABLE_STYLELINT, DOMAIN, DOMAIN_STRIPPED, WATCH_POLL, + DATA_ROOT_URL, } = getEnvVars() const BRANCH_NAME = getGitBranch() @@ -54,10 +52,9 @@ const clientEnv = { COMMIT_HASH: getGitCommitHash(), DOMAIN, DOMAIN_STRIPPED, + DATA_ROOT_URL, } -console.info(`Client-side Environment:\n${JSON.stringify(clientEnv, null, 2)}`) - const nextConfig: NextConfig = { distDir: `.build/${process.env.NODE_ENV}/tmp`, pageExtensions: ['js', 'jsx', 'ts', 'tsx', 'md', 'mdx', 'all-contributorsrc'], @@ -66,10 +63,9 @@ const nextConfig: NextConfig = { pagesBufferLength: 2, }, modern: false, - // reactStrictMode: true, + reactStrictMode: false, + reactRoot: true, experimental: { - // reactMode: 'concurrent', - // reactRoot: true, scrollRestoration: true, }, swcMinify: true, @@ -93,6 +89,9 @@ const nextConfig: NextConfig = { config.experiments.topLevelAwait = true return config }, + async rewrites() { + return [{ source: '/variants/:variant', destination: '/' }] + }, } const withMDX = getWithMDX({ @@ -100,7 +99,7 @@ const withMDX = getWithMDX({ options: { remarkPlugins: [ // prettier-ignore - require('remark-breaks'), + require("remark-breaks"), require('remark-images'), require('remark-math'), require('remark-slug'), @@ -130,7 +129,7 @@ const withFriendlyConsole = getWithFriendlyConsole({ clearConsole: false, projectRoot: path.resolve(moduleRoot), packageName: pkg.name || 'web', - progressBarColor: '#6529ff', + progressBarColor: '#3a5f0b', }) const withExtraWatch = getWithExtraWatch({ @@ -181,6 +180,7 @@ const config = withPlugins( [withResolve], [withRobotsTxt], [withUrlAsset], + PRODUCTION && [withoutDebugPackage], ].filter(Boolean), nextConfig, ) diff --git a/web/config/next/withTypeChecking.ts b/web/config/next/withTypeChecking.ts index f2b162acb6..667b0d52b9 100644 --- a/web/config/next/withTypeChecking.ts +++ b/web/config/next/withTypeChecking.ts @@ -43,10 +43,12 @@ const getWithTypeChecking = configOverwrite: { compilerOptions: { ...tsConfig.compilerOptions, + allowJs: false, skipLibCheck: true, sourceMap: false, inlineSourceMap: false, declarationMap: false, + tsBuildInfoFile: '.cache/.tsbuildinfo.webpackplugin', }, include: [ 'lib/**/*.js', diff --git a/web/config/next/withoutDebugPackage.ts b/web/config/next/withoutDebugPackage.ts new file mode 100644 index 0000000000..51f4ab2804 --- /dev/null +++ b/web/config/next/withoutDebugPackage.ts @@ -0,0 +1,16 @@ +import path from 'path' + +import type { NextConfig } from 'next' + +import { addWebpackLoader } from './lib/addWebpackLoader' + +export default function withoutDebugPackage(nextConfig: NextConfig) { + return addWebpackLoader(nextConfig, (_webpackConfig, _context) => ({ + test: /\.(ts|tsx|js|jsx)$/i, + use: [ + { + loader: path.resolve(__dirname, 'loaders', 'removeDebugPackageLoader.js'), + }, + ], + })) +} diff --git a/web/data/region_country.json b/web/data/region_country.json index a717b2a1f9..2f1d499b88 100644 --- a/web/data/region_country.json +++ b/web/data/region_country.json @@ -1,8 +1,8 @@ -{ - "Africa" : ["Algeria","Angola","Kenya","Benin","Botswana","Burkina Faso","Burundi","Cabo Verde","Cameroon","Central African Republic","Chad","Union of the Comoros","Republic of the Congo","Côte d'Ivoire","Democratic Republic of the Congo","Djibouti","Egypt","Equatorial Guinea","Eswatini","Ethiopia","Gabon","Gambia","Ghana","Nigeria","Guinea","Guinea-Bissau","Lesotho","Liberia","Libya","Madagascar","Malawi","Mali","Mauritius","Morocco","Mozambique","Namibia","Zimbabwe","Niger","Rwanda","Senegal","Seychelles","Sierra Leone","Somalia","South Africa","South Sudan","Sudan","Togo","Tunisia","Uganda","Zambia"], - "Asia" : ["Afghanistan","China","Armenia","Bahrain","Bangladesh","Israel","Brunei","Cambodia","Georgia","Hong Kong","India","Iran","Indonesia","Iraq","Palestine","Japan","Philippines","Jordan","Kazakhstan","Kuwait","Lebanon","Malaysia","Maldives","Mongolia","Myanmar","Nepal","Vietnam","United Arab Emirates","Oman","Pakistan","Qatar","Saudi Arabia","Singapore","South Korea","Sri Lanka","Taiwan","Thailand","Timor-Leste","Uzbekistan","Laos"], - "Europe" : ["Albania","Andorra","United Kingdom","Austria","Poland","Slovakia","Azerbaijan","Belarus","Belgium","France","Romania","Spain","Netherlands","Portugal","Switzerland","Slovenia","Bosnia and Herzegovina","Bulgaria","Ukraine","Croatia","Cyprus","Czech Republic","Denmark","Estonia","Finland","Germany","Greece","Hungary","Iceland","Ireland","Italy","Kosovo","Latvia","Liechtenstein","Lithuania","Luxembourg","Malta","Moldova","Monaco","Montenegro","Russia","North Macedonia","Norway","Serbia","Sweden","Turkey"], - "North America" : ["Antigua and Barbuda","Bahamas","Barbados","Belize","Bermuda","Canada","Costa Rica","Cuba","Dominica","Dominican Republic","El Salvador","Guadeloupe","Grenada","USA","Guatemala","Haiti","Honduras","Jamaica","Mexico","Panama","Saint Barthélemy","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Vincent and the Grenadines","Sint Maarten"], - "Oceania" : ["Australia","Fiji","New Zealand","Papua New Guinea","Solomon Islands","French Polynesia","Vanuatu"], - "South America" : ["Argentina","Aruba","Bolivia","Bonaire","Brazil","Chile","Colombia","Curacao","Ecuador","Guyana","Paraguay","Peru","Suriname","Trinidad and Tobago","Uruguay","Venezuela"] -} +{ + "Africa" : ["Algeria","Angola","Kenya","Benin","Botswana","Burkina Faso","Burundi","Cabo Verde","Cameroon","Central African Republic","Chad","Union of the Comoros","Republic of the Congo","Côte d'Ivoire","Democratic Republic of the Congo","Djibouti","Egypt","Equatorial Guinea","Eswatini","Ethiopia","Gabon","Gambia","Ghana","Nigeria","Guinea","Guinea-Bissau","Lesotho","Liberia","Libya","Madagascar","Malawi","Mali","Mauritius","Morocco","Mozambique","Namibia","Zimbabwe","Niger","Rwanda","Senegal","Seychelles","Sierra Leone","Somalia","South Africa","South Sudan","Sudan","Togo","Tunisia","Uganda","Zambia"], + "Asia" : ["Afghanistan","China","Armenia","Bahrain","Bangladesh","Israel","Brunei","Cambodia","Georgia","Hong Kong","India","Iran","Indonesia","Iraq","Palestine","Japan","Philippines","Jordan","Kazakhstan","Kyrgyzstan","Kuwait","Lebanon","Malaysia","Maldives","Mongolia","Myanmar","Nepal","Vietnam","United Arab Emirates","Oman","Pakistan","Qatar","Saudi Arabia","Singapore","South Korea","Sri Lanka","Taiwan","Thailand","Timor-Leste","Uzbekistan","Laos"], + "Europe" : ["Albania","Andorra","United Kingdom","Austria","Poland","Slovakia","Azerbaijan","Belarus","Belgium","France","Romania","Spain","Netherlands","Portugal","Switzerland","Slovenia","Bosnia and Herzegovina","Bulgaria","Ukraine","Croatia","Cyprus","Czech Republic","Denmark","Estonia","Finland","Germany","Greece","Hungary","Iceland","Ireland","Italy","Kosovo","Latvia","Liechtenstein","Lithuania","Luxembourg","Malta","Moldova","Monaco","Montenegro","Russia","North Macedonia","Norway","Serbia","Sweden","Turkey"], + "North America" : ["Antigua and Barbuda","Bahamas","Barbados","Belize","Bermuda","Canada","Costa Rica","Cuba","Dominica","Dominican Republic","El Salvador","Guadeloupe","Grenada","USA","Guatemala","Haiti","Honduras","Jamaica","Mexico","Panama","Saint Barthélemy","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Vincent and the Grenadines","Sint Maarten"], + "Oceania" : ["Australia","Fiji","New Zealand","Papua New Guinea","Solomon Islands","French Polynesia","Vanuatu"], + "South America" : ["Argentina","Aruba","Bolivia","Bonaire","Brazil","Chile","Colombia","Curacao","Ecuador","Guyana","Nicaragua","Paraguay","Peru","Suriname","Trinidad and Tobago","Uruguay","Venezuela"] +} diff --git a/web/data/v2/geography.json b/web/data/v2/geography.json new file mode 100644 index 0000000000..04123fb164 --- /dev/null +++ b/web/data/v2/geography.json @@ -0,0 +1,464 @@ +{ + "regions": { + "World": { + "continents": { + "North America": [ + "USA", + "Canada", + "Mexico", + "Costa Rica", + "Panama", + "Sint Maarten", + "Jamaica", + "Guatemala", + "Guadeloupe", + "Dominican Republic", + "Belize", + "El Salvador", + "Saint Martin", + "Haiti", + "Bahamas" + ], + "Europe": [ + "United Kingdom", + "Germany", + "Denmark", + "France", + "Sweden", + "Spain", + "Belgium", + "Netherlands", + "Switzerland", + "Italy", + "Ireland", + "Poland", + "Turkey", + "Slovenia", + "Norway", + "Czech Republic", + "Luxembourg", + "Russia", + "Slovakia", + "Portugal", + "Croatia", + "Lithuania", + "Finland", + "Austria", + "Bulgaria", + "Greece", + "Romania", + "Latvia", + "Estonia", + "Iceland", + "Kosovo", + "Serbia", + "Bosnia and Herzegovina", + "Ukraine", + "Liechtenstein", + "Cyprus", + "Montenegro", + "Malta", + "North Macedonia", + "Moldova", + "Hungary", + "Andorra", + "Belarus" + ], + "Asia": [ + "Japan", + "India", + "Israel", + "South Korea", + "Indonesia", + "Malaysia", + "Thailand", + "Singapore", + "Philippines", + "Hong Kong", + "Bahrain", + "Vietnam", + "Bangladesh", + "Pakistan", + "Brunei", + "Cambodia", + "Qatar", + "Nepal", + "Sri Lanka", + "Taiwan", + "Georgia", + "China", + "Lebanon", + "Iran", + "Mongolia", + "Maldives", + "Kazakhstan", + "Iraq", + "Jordan", + "Laos", + "Kuwait", + "United Arab Emirates", + "Saudi Arabia", + "Oman", + "Kyrgyzstan" + ], + "South America": [ + "Brazil", + "Peru", + "Chile", + "Colombia", + "Argentina", + "Ecuador", + "Aruba", + "Trinidad and Tobago", + "Paraguay", + "Curacao", + "Bonaire", + "Suriname", + "Venezuela", + "Nicaragua", + "Uruguay", + "Bolivia" + ], + "Oceania": [ + "Australia", + "New Zealand", + "Papua New Guinea", + "Fiji", + "Solomon Islands" + ], + "Africa": [ + "South Africa", + "Kenya", + "Nigeria", + "Mauritius", + "Botswana", + "Ghana", + "Senegal", + "Morocco", + "Seychelles", + "Malawi", + "Mozambique", + "Benin", + "Zambia", + "Cameroon", + "Eswatini", + "Uganda", + "Djibouti", + "Angola", + "Gambia", + "Tunisia", + "Namibia", + "Zimbabwe", + "Togo", + "C\u00f4te d'Ivoire", + "Egypt", + "Ethiopia", + "Algeria", + "Democratic Republic of the Congo", + "Cabo Verde", + "Guinea", + "Madagascar", + "Rwanda", + "Gabon", + "Republic of the Congo", + "Sudan", + "South Sudan" + ] + }, + "countries": [ + "USA", + "United Kingdom", + "Germany", + "Denmark", + "France", + "Japan", + "Canada", + "Sweden", + "Brazil", + "Spain", + "Belgium", + "India", + "Netherlands", + "Switzerland", + "Australia", + "Italy", + "Israel", + "Ireland", + "Poland", + "Turkey", + "Slovenia", + "Mexico", + "Norway", + "South Korea", + "Czech Republic", + "Luxembourg", + "Russia", + "Slovakia", + "Portugal", + "Croatia", + "Lithuania", + "Finland", + "South Africa", + "Austria", + "Peru", + "Indonesia", + "Chile", + "Malaysia", + "New Zealand", + "Thailand", + "Singapore", + "Bulgaria", + "Greece", + "Philippines", + "Romania", + "Colombia", + "Latvia", + "Estonia", + "Argentina", + "Hong Kong", + "Iceland", + "Bahrain", + "Kenya", + "Costa Rica", + "Ecuador", + "Vietnam", + "Bangladesh", + "Panama", + "Nigeria", + "Pakistan", + "Brunei", + "Aruba", + "Mauritius", + "Cambodia", + "Qatar", + "Botswana", + "Nepal", + "Sri Lanka", + "Trinidad and Tobago", + "Sint Maarten", + "Ghana", + "Taiwan", + "Jamaica", + "Georgia", + "Guatemala", + "Paraguay", + "Curacao", + "Guadeloupe", + "Papua New Guinea", + "China", + "Bonaire", + "Lebanon", + "Dominican Republic", + "Senegal", + "Iran", + "Kosovo", + "Serbia", + "Bosnia and Herzegovina", + "Ukraine", + "Mongolia", + "Liechtenstein", + "Maldives", + "Morocco", + "Seychelles", + "Cyprus", + "Malawi", + "Kazakhstan", + "Mozambique", + "Benin", + "Suriname", + "Zambia", + "Cameroon", + "Montenegro", + "Belize", + "Eswatini", + "Iraq", + "Uganda", + "Jordan", + "Djibouti", + "Angola", + "Malta", + "Gambia", + "Tunisia", + "Namibia", + "North Macedonia", + "Zimbabwe", + "Laos", + "Togo", + "Moldova", + "Kuwait", + "C\u00f4te d'Ivoire", + "Venezuela", + "Egypt", + "Ethiopia", + "United Arab Emirates", + "Fiji", + "Saudi Arabia", + "Algeria", + "Democratic Republic of the Congo", + "Cabo Verde", + "El Salvador", + "Guinea", + "Hungary", + "Madagascar", + "Rwanda", + "Nicaragua", + "Oman", + "Saint Martin", + "Gabon", + "Republic of the Congo", + "Uruguay", + "Andorra", + "Haiti", + "Sudan", + "Solomon Islands", + "Bahamas", + "Bolivia", + "Belarus", + "South Sudan", + "Kyrgyzstan" + ] + }, + "United States": { + "continents": { + "United States": [ + "California", + "New York", + "Texas", + "Colorado", + "Massachusetts", + "Florida", + "Minnesota", + "Washington", + "North Carolina", + "Illinois", + "New Jersey", + "Arizona", + "Michigan", + "Utah", + "Pennsylvania", + "Virginia", + "Georgia", + "Maryland", + "Wisconsin", + "Tennessee", + "Ohio", + "Connecticut", + "Oregon", + "Indiana", + "Nevada", + "New Mexico", + "Missouri", + "Louisiana", + "West Virginia", + "Kentucky", + "South Carolina", + "Nebraska", + "Vermont", + "Iowa", + "Kansas", + "Rhode Island", + "Wyoming", + "Hawaii", + "North Dakota", + "Oklahoma", + "Delaware", + "Alabama", + "Arkansas", + "Maine", + "Mississippi", + "Washington DC", + "Idaho", + "Montana", + "Alaska", + "Puerto Rico", + "New Hampshire", + "South Dakota", + "Northern Mariana Islands", + "Virgin Islands", + "USA", + "Guam", + "American Samoa" + ] + }, + "countries": [ + "California", + "New York", + "Texas", + "Colorado", + "Massachusetts", + "Florida", + "Minnesota", + "Washington", + "North Carolina", + "Illinois", + "New Jersey", + "Arizona", + "Michigan", + "Utah", + "Pennsylvania", + "Virginia", + "Georgia", + "Maryland", + "Wisconsin", + "Tennessee", + "Ohio", + "Connecticut", + "Oregon", + "Indiana", + "Nevada", + "New Mexico", + "Missouri", + "Louisiana", + "West Virginia", + "Kentucky", + "South Carolina", + "Nebraska", + "Vermont", + "Iowa", + "Kansas", + "Rhode Island", + "Wyoming", + "Hawaii", + "North Dakota", + "Oklahoma", + "Delaware", + "Alabama", + "Arkansas", + "Maine", + "Mississippi", + "Washington DC", + "Idaho", + "Montana", + "Alaska", + "Puerto Rico", + "New Hampshire", + "South Dakota", + "Northern Mariana Islands", + "Virgin Islands", + "USA", + "Guam", + "American Samoa" + ] + }, + "Switzerland": { + "continents": { + "Switzerland": [ + "Region 3", + "Region 1", + "Region 5", + "Region 2", + "Region 6", + "Region 4" + ] + }, + "countries": [ + "Region 3", + "Region 1", + "Region 5", + "Region 2", + "Region 6", + "Region 4" + ] + } + } +} \ No newline at end of file diff --git a/web/infra/lambda-at-edge/basicAuth.js b/web/infra/lambda-at-edge/basicAuth.js deleted file mode 100644 index c10e0d2572..0000000000 --- a/web/infra/lambda-at-edge/basicAuth.js +++ /dev/null @@ -1,30 +0,0 @@ -// Implements basic authentication using AWS Lambda@Edge -// This is insecure due to hardcoded credentials and is only suited for blocking crawlers -// -// Usage: Create an AWS Lambda function and attach this to "Viewer Request" event of a Cloudfront distribution - -const USERNAME = 'nextstrain' -const PASSWORD = 'nextstrain' -const BASIC_AUTH_STRING = `Basic ${Buffer.from(`${USERNAME}:${PASSWORD}`).toString('base64')}` - -exports.handler = (event, context, callback) => { - // Get request and request headers - const request = event.Records[0].cf.request - const headers = request.headers - - // Require Basic authentication - if (typeof headers.authorization == 'undefined' || headers.authorization[0].value != BASIC_AUTH_STRING) { - const body = 'Unauthorized' - const response = { - status: '401', - statusDescription: 'Unauthorized', - body, - headers: { - 'www-authenticate': [{ key: 'WWW-Authenticate', value: 'Basic' }], - }, - } - callback(null, response) - } - - callback(null, request) -} diff --git a/web/package.json b/web/package.json index 3d6734bdb5..55c498f3a6 100644 --- a/web/package.json +++ b/web/package.json @@ -43,10 +43,6 @@ "eslint:ci": "yarn eslint --max-warnings=0", "tsc": "tsc --project tsconfig.json --noEmit", "tsc:watch": "yarn tsc --watch", - "stylelint": "stylelint \"**/*.*(css|scss)\"", - "stylelint:fix": "yarn stylelint --fix", - "stylelint:watch": "nodemon --config config/nodemon/stylelint.json", - "stylelint:fix:watch": "nodemon --config config/nodemon/stylelint.fix.json", "format": "prettier --check \"**/*.{js,jsx,ts,tsx,json,html,css,less,scss,yml,yaml}\"", "format:fix": "yarn format --write", "test": "yarn test:nowatch --watch --verbose ", @@ -58,188 +54,188 @@ "run:node": "cross-env NODE_ENV=development BABEL_ENV=development babel-node --config-file \"./babel-node.config.js\" --extensions '.ts'", "run:node:prod": "cross-env NODE_ENV=production BABEL_ENV=production babel-node --config-file \"./babel-node.config.js\" --extensions '.ts'", "monkey-patch": "yarn run:node tools/monkeyPatch.ts", - "stills": "yarn run:node tools/generateStillImages.ts" + "stills": "yarn run:node tools/generateStillImages.ts", + "serve:data": "babel-node --config-file \"./babel-node.config.js\" --extensions \".ts\" ./tools/server/dataServer.ts" }, "dependencies": { + "@mdx-js/react": "1.6.22", + "@tanstack/query-core": "4.19.1", + "@tanstack/react-query": "4.19.1", + "@tanstack/react-query-devtools": "4.19.1", "animate.css": "4.1.1", - "autoprefixer": "10.4.5", - "axios": "0.27.2", + "autoprefixer": "10.4.13", + "axios": "1.2.1", "bootstrap": "4.5.2", - "bootstrap-icons": "1.8.1", - "classnames": "2.3.1", - "core-js": "3.22.3", - "country-flag-icons": "1.4.26", + "bootstrap-icons": "1.10.2", + "classnames": "2.3.2", + "core-js": "3.26.1", + "countries-list": "2.6.1", + "country-flag-icons": "1.5.5", "css.escape": "1.5.1", "fast-copy": "2.1.3", - "history": "5.3.0", - "immutable": "4.0.0", + "fast-memoize": "2.5.2", + "fasy": "9.0.2", + "flag-icon-css": "4.1.7", + "i18next": "19.9.2", "intersection-observer": "0.12.2", "is-absolute-url": "3.0.3", "iso-3166-1-alpha-2": "1.0.0", "lodash": "4.17.21", - "luxon": "2.3.2", - "marked": "4.0.14", - "merge-anything": "5.0.2", - "moment": "2.29.3", + "luxon": "3.1.1", + "marked": "4.2.4", + "merge-anything": "5.1.4", "next": "12.1.6", - "next-compose-plugins": "2.2.1", + "numbro": "2.3.6", "papaparse": "5.3.2", "polished": "4.2.2", + "pretty-bytes": "5.6.0", "prop-types": "15.8.1", - "react": "18.1.0", + "react": "18.2.0", "react-aspect-ratio": "1.1.2", "react-copy-to-clipboard": "5.1.0", - "react-dom": "18.1.0", + "react-dom": "18.2.0", "react-error-boundary": "3.1.4", "react-gif-player": "0.4.2", - "react-helmet": "6.1.0", - "react-icons": "4.3.1", - "react-intersection-observer": "9.4.0", - "react-loader-spinner": "5.1.4", - "react-query": "3.38.0", + "react-i18next": "11.18.6", + "react-icons": "4.7.1", + "react-intersection-observer": "9.4.1", + "react-loader-spinner": "5.3.4", "react-reactstrap-pagination": "2.0.3", - "react-resize-detector": "7.0.0", - "react-select": "5.3.1", - "react-share": "4.4.0", - "react-super-responsive-table": "5.2.0", - "react-toggle": "4.1.2", + "react-resize-detector": "7.1.2", + "react-select": "5.7.0", + "react-share": "4.4.1", + "react-super-responsive-table": "5.2.1", + "react-toggle": "4.1.3", "reactstrap": "8.10.1", - "recharts": "2.1.9", + "recharts": "2.2.0", + "recoil": "0.7.6", "reflect-metadata": "0.1.13", - "regenerator-runtime": "0.13.9", + "regenerator-runtime": "0.13.11", "resize-observer-polyfill": "1.5.1", + "route-parser": "0.0.5", "serialize-javascript": "6.0.0", - "styled-components": "5.3.5", + "styled-components": "5.3.6", "typeface-droid-sans-mono": "0.0.44", "typeface-open-sans": "0.0.75", "url-join": "4.0.1" }, "devDependencies": { - "@babel/core": "7.17.9", - "@babel/node": "7.16.8", - "@babel/plugin-proposal-decorators": "7.17.9", - "@babel/preset-env": "7.16.11", - "@babel/preset-typescript": "7.16.7", + "@babel/core": "7.20.5", + "@babel/node": "7.20.5", + "@babel/plugin-proposal-decorators": "7.20.5", + "@babel/preset-env": "7.20.2", + "@babel/preset-typescript": "7.18.6", + "@babel/runtime": "7.20.5", "@mdx-js/loader": "1.6.22", - "@mdx-js/react": "1.6.22", - "@next/eslint-plugin-next": "12.1.5", - "@next/mdx": "12.1.5", + "@next/eslint-plugin-next": "13.0.6", + "@next/mdx": "12.3.4", "@nuxt/friendly-errors-webpack-plugin": "2.5.2", - "@primer/css": "19.8.2", "@schemastore/package": "0.0.6", - "@svgr/webpack": "5.5.0", - "@testing-library/jest-dom": "5.16.4", - "@testing-library/react": "13.1.1", - "@testing-library/user-event": "14.1.1", + "@svgr/webpack": "6.5.1", + "@testing-library/jest-dom": "5.16.5", + "@testing-library/react": "13.4.0", + "@testing-library/user-event": "14.4.3", "@types/classnames": "2.3.0", - "@types/compare-versions": "3.3.0", - "@types/compression-webpack-plugin": "9.0.0", - "@types/connect-history-api-fallback": "1.3.5", - "@types/copy-webpack-plugin": "6.4.3", - "@types/express": "4.17.13", + "@types/compression": "1.7.2", + "@types/copy-webpack-plugin": "8.0.1", + "@types/express": "4.17.14", "@types/extra-watch-webpack-plugin": "1.0.3", "@types/friendly-errors-webpack-plugin": "0.1.4", "@types/fs-extra": "9.0.13", - "@types/history": "4.7.11", - "@types/jest": "27.4.1", - "@types/jest-axe": "3.5.3", - "@types/js-yaml": "4.0.5", - "@types/lodash": "4.14.182", + "@types/jest": "29.2.4", + "@types/jest-axe": "3.5.5", + "@types/lodash": "4.14.191", "@types/lodash-webpack-plugin": "0.11.6", - "@types/luxon": "2.3.1", + "@types/luxon": "3.1.0", "@types/mdx-js__react": "1.5.5", - "@types/node": "17.0.30", - "@types/papaparse": "5.3.2", - "@types/react": "18.0.8", - "@types/react-copy-to-clipboard": "5.0.2", - "@types/react-dom": "18.0.3", - "@types/react-helmet": "6.1.5", + "@types/morgan": "1.9.3", + "@types/node": "18.11.11", + "@types/papaparse": "5.3.5", + "@types/react": "18.0.26", + "@types/react-copy-to-clipboard": "5.0.4", + "@types/react-dom": "18.0.9", "@types/react-loader-spinner": "3.1.3", "@types/react-toggle": "4.0.3", - "@types/reactstrap": "8.7.1", "@types/rimraf": "3.0.2", - "@types/semver": "7.3.9", + "@types/route-parser": "0.1.4", "@types/serialize-javascript": "5.0.2", - "@types/styled-components": "5.1.25", + "@types/styled-components": "5.1.26", "@types/url-join": "4.0.1", "@types/webpackbar": "4.0.3", - "@typescript-eslint/eslint-plugin": "5.21.0", - "@typescript-eslint/parser": "5.21.0", - "@typescript-eslint/typescript-estree": "5.21.0", - "allow-methods": "3.0.0", + "@typescript-eslint/eslint-plugin": "5.45.1", + "@typescript-eslint/parser": "5.45.1", + "@typescript-eslint/typescript-estree": "5.45.1", + "allow-methods": "4.1.2", "babel-plugin-parameter-decorator": "1.0.16", "babel-plugin-transform-typescript-metadata": "0.3.2", - "compression-webpack-plugin": "9.2.0", - "connect-history-api-fallback": "1.6.0", - "copy-webpack-plugin": "10.2.4", + "compression": "1.7.4", + "copy-webpack-plugin": "11.0.0", "cross-env": "7.0.3", - "css-loader": "6.7.1", - "dotenv": "16.0.0", - "eslint": "8.14.0", + "css-loader": "6.7.2", + "dotenv": "16.0.3", + "eslint": "8.29.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-base": "15.0.0", "eslint-config-airbnb-typescript": "17.0.0", - "eslint-config-next": "12.1.5", + "eslint-config-next": "13.0.6", "eslint-config-prettier": "8.5.0", "eslint-config-react-app": "7.0.1", "eslint-formatter-codeframe": "7.32.1", - "eslint-import-resolver-ts": "0.4.2", "eslint-import-resolver-typescript": "2.7.1", "eslint-plugin-array-func": "3.1.7", "eslint-plugin-cflint": "1.0.0", "eslint-plugin-cypress": "2.12.1", "eslint-plugin-flowtype": "8.0.3", "eslint-plugin-import": "2.26.0", - "eslint-plugin-jest": "26.1.5", - "eslint-plugin-jest-dom": "4.0.1", + "eslint-plugin-jest": "27.1.6", + "eslint-plugin-jest-dom": "4.0.3", "eslint-plugin-json": "3.1.0", - "eslint-plugin-jsx-a11y": "6.5.1", + "eslint-plugin-jsx-a11y": "6.6.1", "eslint-plugin-lodash": "7.4.0", "eslint-plugin-no-loops": "0.3.0", "eslint-plugin-no-secrets": "0.8.9", "eslint-plugin-node": "11.1.0", "eslint-plugin-only-ascii": "0.0.0", - "eslint-plugin-only-warn": "1.0.3", - "eslint-plugin-prettier": "4.0.0", - "eslint-plugin-promise": "6.0.0", - "eslint-plugin-react": "7.29.4", - "eslint-plugin-react-hooks": "4.5.0", + "eslint-plugin-only-warn": "1.1.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-react": "7.31.11", + "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-react-perf": "3.3.1", "eslint-plugin-security": "1.5.0", - "eslint-plugin-sonarjs": "0.13.0", + "eslint-plugin-sonarjs": "0.17.0", "eslint-plugin-unicorn": "42.0.0", - "express": "4.18.0", - "express-static-gzip": "2.1.5", + "express": "4.18.2", + "express-static-gzip": "2.1.7", "extra-watch-webpack-plugin": "1.0.3", - "fasy": "9.0.0", "file-loader": "6.2.0", "fork-ts-checker-webpack-plugin": "6.5.0", - "fs-extra": "10.1.0", + "fs-extra": "11.1.0", "gif-frames": "1.0.1", + "glob": "8.0.3", "identity-obj-proxy": "3.0.0", "is-interactive": "1.0.0", - "jest": "28.0.3", - "jest-axe": "6.0.0", - "jest-chain": "1.1.5", - "jest-extended": "2.0.0", + "jest": "29.3.1", + "jest-axe": "7.0.0", + "jest-chain": "1.1.6", + "jest-extended": "3.2.0", "jest-raw-loader": "1.0.1", - "jest-runner-eslint": "1.0.0", - "jest-styled-components": "7.0.8", + "jest-runner-eslint": "1.1.0", + "jest-styled-components": "7.1.1", "jest-transformer-mdx": "3.3.0", - "jest-watch-typeahead": "1.1.0", - "js-yaml": "4.1.0", + "jest-watch-typeahead": "2.2.1", "json-loader": "0.5.7", "lodash-webpack-plugin": "0.11.6", - "map.prototype.tojson": "0.1.3", - "next-transpile-modules": "9.0.0", - "nodemon": "2.0.16", + "morgan": "1.10.0", + "next-compose-plugins": "2.2.1", + "next-transpile-modules": "10.0.0", + "nodemon": "2.0.20", "npm-run-all": "4.1.5", "postcss-flexbugs-fixes": "5.0.2", - "postcss-loader": "6.2.1", - "postcss-preset-env": "7.4.4", - "prettier": "2.6.2", + "postcss-loader": "7.0.2", + "postcss-preset-env": "7.8.3", + "prettier": "2.8.1", "raw-loader": "4.0.2", - "recoil": "0.7.2", "remark-autolink-headings": "6.0.1", "remark-breaks": "2.0.1", "remark-images": "2.0.0", @@ -247,41 +243,47 @@ "remark-slug": "6.0.0", "remark-toc": "7.0.0", "rimraf": "3.0.2", - "sass": "1.51.0", - "set.prototype.tojson": "0.1.1", - "source-map-loader": "3.0.1", + "sass": "1.56.1", + "source-map-loader": "4.0.1", "style-loader": "3.3.1", - "svgo": "1.3.2", - "ts-essentials": "9.1.2", + "svgo": "3.0.2", + "ts-essentials": "9.3.0", "ts-toolbelt": "9.6.0", - "typescript": "4.6.4", + "typescript": "4.9.3", "url-loader": "4.1.1", "utility-types": "3.10.0", - "webpack": "5.72.0", - "webpack-cli": "4.9.2", + "webpack": "5.75.0", + "webpack-cli": "5.0.1", "webpackbar": "5.0.2" }, "resolutions": { - "@babel/node": "7.16.8", - "@babel/plugin-proposal-decorators": "7.17.9", - "@babel/preset-env": "7.16.11", - "@babel/preset-typescript": "7.16.7", - "@next/eslint-plugin-next": "12.1.5", - "@types/react": "18.0.8", - "@types/react-dom": "18.0.3", - "@typescript-eslint/eslint-plugin": "5.21.0", - "@typescript-eslint/parser": "5.21.0", - "@typescript-eslint/typescript-estree": "5.21.0", + "@babel/core": "7.20.5", + "@babel/node": "7.20.5", + "@babel/plugin-proposal-decorators": "7.20.5", + "@babel/preset-env": "7.20.2", + "@babel/preset-typescript": "7.18.6", + "@babel/runtime": "7.20.5", + "@mdx-js/loader": "1.6.22", + "@mdx-js/react": "1.6.22", + "@next/mdx": "12.3.4", + "@tanstack/query-core": "4.19.1", + "@tanstack/react-query": "4.19.1", + "@tanstack/react-query-devtools": "4.19.1", + "@typescript-eslint/eslint-plugin": "5.45.1", + "@typescript-eslint/parser": "5.45.1", + "@typescript-eslint/typescript-estree": "5.45.1", + "axios": "1.2.1", "babel-plugin-parameter-decorator": "1.0.16", "babel-plugin-transform-typescript-metadata": "0.3.2", - "compression-webpack-plugin": "9.2.0", - "core-js": "3.22.3", - "css-loader": "6.7.1", - "eslint": "8.14.0", + "bootstrap": "4.5.2", + "classnames": "2.3.2", + "core-js": "3.26.1", + "css-loader": "6.7.2", + "eslint": "8.29.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-base": "15.0.0", "eslint-config-airbnb-typescript": "17.0.0", - "eslint-config-next": "12.1.5", + "eslint-config-next": "13.0.6", "eslint-config-prettier": "8.5.0", "eslint-config-react-app": "7.0.1", "eslint-formatter-codeframe": "7.32.1", @@ -292,39 +294,49 @@ "eslint-plugin-cypress": "2.12.1", "eslint-plugin-flowtype": "8.0.3", "eslint-plugin-import": "2.26.0", - "eslint-plugin-jest": "26.1.5", - "eslint-plugin-jest-dom": "4.0.1", + "eslint-plugin-jest": "27.1.6", + "eslint-plugin-jest-dom": "4.0.3", "eslint-plugin-json": "3.1.0", - "eslint-plugin-jsx-a11y": "6.5.1", + "eslint-plugin-jsx-a11y": "6.6.1", "eslint-plugin-lodash": "7.4.0", "eslint-plugin-no-loops": "0.3.0", "eslint-plugin-no-secrets": "0.8.9", "eslint-plugin-node": "11.1.0", "eslint-plugin-only-ascii": "0.0.0", - "eslint-plugin-only-warn": "1.0.3", - "eslint-plugin-prettier": "4.0.0", - "eslint-plugin-promise": "6.0.0", - "eslint-plugin-react": "7.29.4", - "eslint-plugin-react-hooks": "4.5.0", + "eslint-plugin-only-warn": "1.1.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-react": "7.31.11", + "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-react-perf": "3.3.1", "eslint-plugin-security": "1.5.0", - "eslint-plugin-sonarjs": "0.13.0", + "eslint-plugin-sonarjs": "0.17.0", "eslint-plugin-unicorn": "42.0.0", + "file-loader": "6.2.0", + "i18next": "19.9.2", + "json-loader": "0.5.7", "lodash": "4.17.21", - "marked": "4.0.14", - "moment": "2.29.3", - "next": "12.1.6", - "papaparse": "5.2.0", - "postcss-loader": "6.2.1", - "react": "18.1.0", - "react-dom": "18.1.0", - "react-error-boundary": "2.2.3", + "luxon": "3.1.1", + "next": "12.3.4", + "papaparse": "5.3.2", + "prettier": "2.8.1", + "raw-loader": "4.0.2", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-error-boundary": "3.1.4", + "react-i18next": "11.18.6", + "reactstrap": "8.10.1", + "recharts": "2.2.0", + "recoil": "0.7.6", "reflect-metadata": "0.1.13", + "regenerator-runtime": "0.13.11", + "sass": "1.56.1", + "source-map-loader": "4.0.1", "style-loader": "3.3.1", - "styled-components": "5.3.5", - "svgo": "1.3.2", - "ts-toolbelt": "9.6.0", - "typescript": "4.6.4", - "webpack": "5.72.0" + "styled-components": "5.3.6", + "typescript": "4.9.3", + "url-loader": "4.1.1", + "webpack": "5.75.0", + "webpack-cli": "5.0.1" } } diff --git a/web/src/components/Acknowledgements/AcknowledgementEpiIsl.tsx b/web/src/components/Acknowledgements/AcknowledgementEpiIsl.tsx deleted file mode 100644 index d2a0b67ee0..0000000000 --- a/web/src/components/Acknowledgements/AcknowledgementEpiIsl.tsx +++ /dev/null @@ -1,179 +0,0 @@ -import React, { useMemo, useState, useCallback } from 'react' - -import Axios from 'axios' -import { get } from 'lodash' -import { useQuery } from 'react-query' -import { AcknowledgementsError } from 'src/components/Acknowledgements/AcknowledgementsError' -import styled from 'styled-components' -import { Popover as PopoverBase, PopoverBody as PopoverBodyBase, PopoverHeader as PopoverHeaderBase } from 'reactstrap' -import { ThreeDots as ThreeDotsLoader } from 'react-loader-spinner' - -export const Popover = styled(PopoverBase)` - .popover { - width: 500px; - max-width: unset !important; - - @media (max-width: 575.98px) { - width: 300px; - } - } -` - -export const PopoverBody = styled(PopoverBodyBase)` - .popover-inner { - } -` - -export const PopoverHeader = styled(PopoverHeaderBase)` - display: flex; -` - -export const PopoverHeaderText = styled.span` - font-size: 20px; - margin: auto; -` - -export const EpiIslText = styled.span` - text-decoration: #777 underline dashed; -` - -export interface AcknowledgementEpiIslDatum { - origLab: string - submLab: string - authors: string -} - -export function getEpiIslUrl(epiIsl: string) { - const accessionIdComponents = epiIsl.split('_') - if (accessionIdComponents.length < 3) { - return undefined - } - - const id = accessionIdComponents[2] - if (id.length < 4) { - return undefined - } - - const first = id.slice(-4, -2) // 2 characters from the end, skipping the two last - const second = id.slice(-2) // the last 2 characters - return `https://www.epicov.org/acknowledgement/${first}/${second}/${epiIsl}.json` -} - -function getString(obj: unknown, objPath: string, defaultValue?: string): string { - const property: string | unknown = get(obj, objPath, defaultValue) - if (typeof property !== 'string') { - return defaultValue ?? '-' - } - return property -} - -export function validateEpiIslData(data: unknown): AcknowledgementEpiIslDatum { - const origLab = getString(data, 'covv_orig_lab', '-') - const submLab = getString(data, 'covv_subm_lab', '-') - const authors = getString(data, 'covv_authors', '-') - return { origLab, submLab, authors } -} - -export function useQueryAcknowledgementData(epiIsl: string) { - const url: string | undefined = useMemo(() => getEpiIslUrl(epiIsl), [epiIsl]) - - return useQuery( - ['acknowledgement_data', epiIsl], - async () => { - if (!url) { - throw new Error( - `Unable to fetch acknowledgements data from GISAID: Unable to construct request URL: EPI ISL is incorrect: "${epiIsl}"`, - ) - } - const res = await Axios.get(url) - if (!res.data) { - throw new Error( - `Unable to fetch acknowledgements data from GISAID: request to URL "${url}" resulted in no data`, - ) - } - return validateEpiIslData(res.data) - }, - { - staleTime: Number.POSITIVE_INFINITY, - refetchOnMount: false, - refetchOnWindowFocus: false, - refetchOnReconnect: true, - refetchInterval: Number.POSITIVE_INFINITY, - }, - ) -} - -export interface AcknowledgementEpiIslPopupProps { - target: string - isOpen: boolean - epiIsl: string -} - -export function AcknowledgementEpiIslPopup({ target, isOpen, epiIsl }: AcknowledgementEpiIslPopupProps) { - const { isLoading, isFetching, isError, data, error } = useQueryAcknowledgementData(epiIsl) - - return ( - - - {`GISAID.org/${epiIsl}`} - - - {(isLoading || isFetching) && ( -
-
- -
-
- )} - {isError && error && } - {data && ( -
-

- {'Originating lab: '} - {data.origLab} -

-

- {'Submitting lab: '} - {data.submLab} -

-

- {'Authors: '} - {data.authors} -

-
- )} -
-
- ) -} - -export interface AcknowledgementEpiIslProps { - epiIsl: string -} - -export function AcknowledgementEpiIsl({ epiIsl }: AcknowledgementEpiIslProps) { - // Suggested by GISAID: - // Demo: https://pandemicprepardness.org/demos/popupdemo/popup-demo.html - // Download: https://pandemicprepardness.org/downloads/GISAID-Acknowledgement-JS-Library.zip - // Example JSON URL: 'https://www.epicov.org/acknowledgement/49/39/EPI_ISL_1014939.json' - - const [popoverOpen, setPopoverOpen] = useState(false) - const id = useMemo(() => CSS.escape(epiIsl), [epiIsl]) - const handleMouseOver = useCallback(() => setPopoverOpen(true), []) - const handleMouseLeave = useCallback(() => setPopoverOpen(false), []) - - return ( - - - {epiIsl} - - {popoverOpen && } - - ) -} diff --git a/web/src/components/Acknowledgements/AcknowledgementsCard.tsx b/web/src/components/Acknowledgements/AcknowledgementsCard.tsx deleted file mode 100644 index aac2ca048c..0000000000 --- a/web/src/components/Acknowledgements/AcknowledgementsCard.tsx +++ /dev/null @@ -1,131 +0,0 @@ -import axios from 'axios' -import React, { useCallback, useMemo, useState } from 'react' - -import { Oval as OvalLoader } from 'react-loader-spinner' -import { useQuery } from 'react-query' -import PaginationComponent from 'react-reactstrap-pagination' -import { CardBody } from 'reactstrap' -import { AcknowledgementEpiIsl } from 'src/components/Acknowledgements/AcknowledgementEpiIsl' -import { AcknowledgementsError } from 'src/components/Acknowledgements/AcknowledgementsError' -import { CardCollapsible } from 'src/components/Common/CardCollapsible' - -import type { ClusterDatum } from 'src/io/getClusters' -import styled from 'styled-components' - -export interface AcknowledgementsKeysDatum { - numChunks: number -} - -export type AcknowledgementsKeysData = Record - -export interface AcknowledgementsKeysJson { - acknowledgements: AcknowledgementsKeysData -} - -export const PaginationContainer = styled.div` - display: flex; - & > * { - margin: 0 auto; - } -` - -export const Pagination = styled(PaginationComponent)`` - -export function useQueryAcknowledgements(cluster: string, page: number) { - const url = useMemo(() => { - const pageString = page.toString().padStart(3, '0') - return `acknowledgements/${cluster}/${pageString}.json` - }, [cluster, page]) - - return useQuery( - ['acknowledgements_page', cluster, page], - async () => { - const res = await axios.get(url) - if (!res.data) { - throw new Error(`Unable to fetch acknowledgements data: request to URL "${url}" resulted in no data`) - } - return res.data as string[] - }, - { - staleTime: Number.POSITIVE_INFINITY, - refetchOnMount: false, - refetchOnWindowFocus: false, - refetchOnReconnect: true, - refetchInterval: Number.POSITIVE_INFINITY, - }, - ) -} - -export interface AcknowledgementsCardBodyProps { - cluster: ClusterDatum - numPages: number -} - -export function AcknowledgementsCardBody({ cluster, numPages }: AcknowledgementsCardBodyProps) { - const [page, setPage] = useState(0) - const handlePagination = useCallback((page: number) => setPage(page - 1) /* one-based to zero-based */, []) - const { isLoading, isFetching, isError, data: epiIsls, error } = useQueryAcknowledgements(cluster.build_name, page) - - const body = useMemo(() => { - if (isLoading || isFetching) { - return ( -
-
- -
-
- ) - } - if (isError && error) { - return - } - return null - }, [error, isError, isFetching, isLoading]) - - const epiIslsComponents = useMemo(() => { - if (epiIsls) { - return epiIsls.map((epiIsl) => ( - - - {', '} - - )) - } - return null - }, [cluster.display_name, epiIsls]) - - return ( - - - - - -
{body}
-
{epiIslsComponents}
-
- ) -} - -export interface AcknowledgementsCardProps { - cluster: ClusterDatum - numPages: number -} - -export function AcknowledgementsCard({ cluster, numPages }: AcknowledgementsCardProps) { - const [collapsed, setCollapsed] = useState(true) - return ( - - {!collapsed && } - - ) -} diff --git a/web/src/components/Acknowledgements/AcknowledgementsContent.md b/web/src/components/Acknowledgements/AcknowledgementsContent.md deleted file mode 100644 index 163e28f9cf..0000000000 --- a/web/src/components/Acknowledgements/AcknowledgementsContent.md +++ /dev/null @@ -1,4 +0,0 @@ -We gratefully acknowledge all data contributors, i.e. the Authors and their Originating laboratories responsible for obtaining the specimens, and their Submitting laboratories for generating the genetic sequence and metadata and sharing via the GISAID Initiative1, on which this research is based. - -1Elbe, S., and Buckland-Merrett, G. (2017) Data, disease and diplomacy: GISAID’s innovative contribution to global health. Global Challenges, 1:33-46. DOI: 10.1002/gch2.1018PMCID: 31565258 - diff --git a/web/src/components/Acknowledgements/AcknowledgementsError.tsx b/web/src/components/Acknowledgements/AcknowledgementsError.tsx deleted file mode 100644 index 2dc817b8e7..0000000000 --- a/web/src/components/Acknowledgements/AcknowledgementsError.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react' - -import { UncontrolledAlert } from 'reactstrap' -import { get } from 'lodash' - -import { LinkExternal } from 'src/components/Link/LinkExternal' -import { URL_GITHUB } from 'src/constants' - -export function getErrorDetails(error: unknown) { - let name: string | undefined - let message: string | undefined - let url: string | undefined - if (error instanceof Error) { - ;({ name, message } = error) - const urlMaybe: unknown = get(error, 'config.url') - if (typeof urlMaybe === 'string' && urlMaybe.length > 0) { - url = urlMaybe - } - } else if (typeof error === 'string') { - name = 'Error' - message = error - } else { - name = 'UnknownError' - message = 'Unknown error has occurred' - } - - return { name, message, url } -} - -export function AcknowledgementsError({ error }: { error: unknown }) { - const { name, message, url } = getErrorDetails(error) - - return ( - -

{'Error has occurred'}

-

- {url && `Attempted to fetch acknowledgements data from "${url}", but received an error:`} -
- {`${name}: ${message}`} -

-

- {"If you believe it's a bug, please report it to developers, but creating a new issue on "} - {'GitHub'} -

-
- ) -} diff --git a/web/src/components/Acknowledgements/AcknowledgementsPage.tsx b/web/src/components/Acknowledgements/AcknowledgementsPage.tsx deleted file mode 100644 index 0fba221631..0000000000 --- a/web/src/components/Acknowledgements/AcknowledgementsPage.tsx +++ /dev/null @@ -1,95 +0,0 @@ -import axios from 'axios' -import React, { useMemo } from 'react' - -import { get } from 'lodash' -import { Oval as OvalLoader } from 'react-loader-spinner' -import { useQuery } from 'react-query' -import { AcknowledgementsError } from 'src/components/Acknowledgements/AcknowledgementsError' -import styled from 'styled-components' -import { Col, Container, Row } from 'reactstrap' - -import { getClusters } from 'src/io/getClusters' -import { Layout } from 'src/components/Layout/Layout' -import { AcknowledgementsCard, AcknowledgementsKeysJson } from 'src/components/Acknowledgements/AcknowledgementsCard' - -import AcknowledgementsContent from './AcknowledgementsContent.md' -import { PageHeading } from '../Common/PageHeading' - -export const AcknowledgementsPageContainer = styled(Container)` - max-width: 1200px; - padding: 0 0.5rem; -` - -const clusters = getClusters() - -export function useQueryAcknowledgementsKeys() { - return useQuery( - ['acknowledgements_keys'], - async () => { - const url = '/acknowledgements/acknowledgements_keys.json' - const res = await axios.get(url) - if (!res.data) { - throw new Error(`Unable to fetch acknowledgement keys data: request to URL "${url}" resulted in no data`) - } - const json = res.data as AcknowledgementsKeysJson - return clusters.map((cluster) => { - const { numChunks } = get(json.acknowledgements, cluster.build_name, { numChunks: 0 }) - return { cluster, numChunks } - }) - }, - { - staleTime: Number.POSITIVE_INFINITY, - refetchOnMount: false, - refetchOnWindowFocus: false, - refetchOnReconnect: true, - refetchInterval: Number.POSITIVE_INFINITY, - }, - ) -} - -export function AcknowledgementsPage() { - const { isLoading, isFetching, isError, data, error } = useQueryAcknowledgementsKeys() - - const body = useMemo(() => { - if (isLoading || isFetching) { - return ( -
-
- -
-
- ) - } - if (isError && error) { - return - } - if (data) { - return data.map((datum) => ( - - )) - } - return null - }, [data, error, isError, isFetching, isLoading]) - - return ( - - - - - {'Acknowledgements'} - - - - - - - - - - - {body} - - - - ) -} diff --git a/web/src/components/Cases/CasesPage.tsx b/web/src/components/Cases/CasesPage.tsx deleted file mode 100644 index a56c123649..0000000000 --- a/web/src/components/Cases/CasesPage.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import React, { useCallback, useMemo } from 'react' -import { Col, Row } from 'reactstrap' -import { useRecoilState } from 'recoil' - -import { CenteredEditable, Editable } from 'src/components/Common/Editable' -import { ColCustom } from 'src/components/Common/ColCustom' -import { Layout } from 'src/components/Layout/Layout' -import { MainFlex, SidebarFlex, WrapperFlex } from 'src/components/Common/PlotLayout' - -import { getPerCountryCasesData, filterClusters, filterCountries } from 'src/io/getPerCountryCasesData' -import { clustersCasesAtom, disableAllClusters, enableAllClusters, toggleCluster } from 'src/state/ClustersForCaseData' -import { - continentsCasesAtom, - countriesCasesAtom, - disableAllCountries, - enableAllCountries, - toggleContinent, - toggleCountry, -} from 'src/state/PlacesForCaseData' -import { CountryFlag } from 'src/components/Common/CountryFlag' -import { PageHeading } from 'src/components/Common/PageHeading' -import { SharingPanel } from 'src/components/Common/SharingPanel' -import { DistributionSidebar } from 'src/components/DistributionSidebar/DistributionSidebar' -import { CasesPlotCard } from './CasesPlotCard' - -import IntroContent from '../../../../content/PerCountryCasesIntro.md' - -const enabledFilters = ['clusters', 'countriesWithIcons'] - -export function CasesPage() { - const [countries, setCountries] = useRecoilState(countriesCasesAtom) - const [continents, setContinents] = useRecoilState(continentsCasesAtom) - const [clusters, setClusters] = useRecoilState(clustersCasesAtom) - - const { perCountryCasesDistributions } = useMemo(() => getPerCountryCasesData(), []) - - const { enabledClusters, withClustersFiltered } = useMemo(() => { - const { withCountriesFiltered } = filterCountries(countries, perCountryCasesDistributions) - const filteredClusters = filterClusters(clusters, withCountriesFiltered) - const { enabledClusters, withClustersFiltered } = filteredClusters - return { enabledClusters, withClustersFiltered } - }, [countries, perCountryCasesDistributions, clusters]) - - const casesComponents = useMemo( - () => - withClustersFiltered.map(({ country, distribution }) => ( - - - - )), - [enabledClusters, withClustersFiltered], - ) - - const handleClusterCheckedChange = useCallback( - (cluster: string) => { - setClusters((oldClusters) => toggleCluster(oldClusters, cluster)) - }, - [setClusters], - ) - - const handleClusterSelectAll = useCallback(() => { - setClusters((oldClusters) => enableAllClusters(oldClusters)) - }, [setClusters]) - - const handleClusterDeselectAll = useCallback(() => { - setClusters((oldClusters) => disableAllClusters(oldClusters)) - }, [setClusters]) - - const handleCountryCheckedChange = useCallback( - (countryName: string) => { - setCountries((oldCountries) => toggleCountry(oldCountries, countryName)) - }, - [setCountries], - ) - - const handleContinentCheckedChange = useCallback( - (continentName: string) => { - setContinents((oldContinents) => toggleContinent(oldContinents, continentName)) - }, - [setContinents], - ) - - const handleCountrySelectAll = useCallback(() => { - setCountries(enableAllCountries) - }, [setCountries]) - - const handleCountryDeselectAll = useCallback(() => { - setCountries(disableAllCountries) - }, [setCountries]) - - return ( - - - - {'Estimated Cases by Variant'} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {casesComponents} - - - - - - - - - ) -} diff --git a/web/src/components/Cases/CasesPlot.tsx b/web/src/components/Cases/CasesPlot.tsx deleted file mode 100644 index 9288d4d1c2..0000000000 --- a/web/src/components/Cases/CasesPlot.tsx +++ /dev/null @@ -1,117 +0,0 @@ -/* eslint-disable camelcase */ -import React, { CSSProperties, useMemo, useRef } from 'react' - -import dynamic from 'next/dynamic' -import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip, Label } from 'recharts' -import { DateTime } from 'luxon' - -import type { PerCountryCasesDistributionDatum } from 'src/io/getPerCountryCasesData' -import { ticks, timeDomain } from 'src/io/getParams' -import { CLUSTER_NAME_OTHERS, getClusterColor } from 'src/io/getClusters' -import { formatDateHumanely } from 'src/helpers/format' -import { adjustTicks } from 'src/helpers/adjustTicks' -import { PlotPlaceholder } from 'src/components/Common/PlotPlaceholder' -import { ChartContainer } from 'src/components/Common/ChartContainer' -import { useTheme } from 'styled-components' -import { CasesPlotTooltip } from './CasesPlotTooltip' - -const CHART_MARGIN = { left: 10, top: 12, bottom: 6, right: 12 } -const ALLOW_ESCAPE_VIEW_BOX = { x: false, y: true } - -export interface CasesPlotProps { - cluster_names: string[] - distribution: PerCountryCasesDistributionDatum[] -} - -export function CasesPlotComponent({ cluster_names, distribution }: CasesPlotProps) { - const theme = useTheme() - const chartRef = useRef(null) - - const data = distribution.map(({ week, stand_total_cases, stand_estimated_cases }) => { - const weekSec = DateTime.fromFormat(week, 'yyyy-MM-dd').toSeconds() - return { week: weekSec, ...stand_estimated_cases, total: stand_total_cases } - }) - - const yAxisLabelStyle: CSSProperties = useMemo( - () => ({ - textAnchor: 'middle', - fontSize: '80%', - fill: theme.gray800, - }), - [theme], - ) - - return ( - - {({ width, height }) => { - const adjustedTicks = adjustTicks(ticks, width ?? 0, theme.plot.tickWidthMin).slice(1) // slice ensures first tick is not outside domain - return ( - - - - - - {cluster_names.map((cluster) => ( - - ))} - - - - - - - - ) - }} - - ) -} - -export const CasesPlot = dynamic(() => Promise.resolve(CasesPlotComponent), { - ssr: false, - loading: PlotPlaceholder, -}) diff --git a/web/src/components/Cases/CasesPlotCard.tsx b/web/src/components/Cases/CasesPlotCard.tsx deleted file mode 100644 index a13f6f6a23..0000000000 --- a/web/src/components/Cases/CasesPlotCard.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* eslint-disable camelcase */ -import React from 'react' -import { Card, CardBody, CardHeader, Col, Row } from 'reactstrap' -import styled from 'styled-components' - -import type { PerCountryCasesDistributionDatum } from 'src/io/getPerCountryCasesData' -import { PlotCardTitle } from 'src/components/Common/PlotCardTitle' -import { CountryFlagProps } from 'src/components/Common/CountryFlag' -import { USStateCodeProps } from 'src/components/Common/USStateCode' -import { CasesPlot } from 'src/components/Cases/CasesPlot' - -const FlagAlignment = styled.span` - display: flex; - align-items: center; - > * + * { - margin-left: 0.5em; - } -` -export interface CasesPlotCardProps { - country: string - distribution: PerCountryCasesDistributionDatum[] - cluster_names: string[] - Icon?: React.ComponentType -} - -export function CasesPlotCard({ country, distribution, cluster_names, Icon }: CasesPlotCardProps) { - return ( - - - - - {Icon && } - {country} - - - - - - - - - - - - - - - ) -} diff --git a/web/src/components/Cases/CasesPlotTooltip.tsx b/web/src/components/Cases/CasesPlotTooltip.tsx deleted file mode 100644 index 64ea0d4412..0000000000 --- a/web/src/components/Cases/CasesPlotTooltip.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import React from 'react' - -import { sortBy, reverse } from 'lodash' -import styled from 'styled-components' -import { Props as DefaultTooltipContentProps } from 'recharts/types/component/DefaultTooltipContent' - -import { formatDateBiweekly, formatInteger, formatProportion } from 'src/helpers/format' -import { getClusterColor } from 'src/io/getClusters' -import { ColoredBox } from '../Common/ColoredBox' - -const EPSILON = 1e-2 - -const Tooltip = styled.div` - display: flex; - flex-direction: column; - - padding: 5px 10px; - background-color: ${(props) => props.theme.gray100}; - box-shadow: ${(props) => props.theme.shadows.slight}; - border-radius: 3px; -` - -const TooltipTitle = styled.h1` - font-size: 1rem; - margin: 5px auto; - font-weight: 600; -` - -const TooltipTable = styled.table` - padding: 30px 35px; - font-size: 0.9rem; - border: none; - min-width: 250px; - - & > tbody > tr:nth-child(odd) { - background-color: ${(props) => props.theme.gray200}; - } -` - -const TooltipTableBody = styled.tbody`` - -export const ClusterNameText = styled.span` - font-family: ${(props) => props.theme.font.monospace}; -` - -export function CasesPlotTooltip(props: DefaultTooltipContentProps) { - const { payload } = props - if (!payload || payload.length === 0) { - return null - } - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument - const week = formatDateBiweekly(payload[0]?.payload.week) - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument - const total: number = formatInteger(payload[0]?.payload.total ?? 0) - - const payloadSorted = reverse(sortBy(payload, 'value')) - - return ( - - {week} - - - - - {'Variant'} - {'Est. cases'} - {'Freq'} - - - - {payloadSorted.map(({ name, value }) => ( - - - - {name} - - {value !== undefined && value > EPSILON ? formatInteger(value) : '-'} - - {value !== undefined && value > EPSILON ? formatProportion(value / total) : '-'} - - - ))} - - - - - {'Total'} - - - {total} - {'1.00'} - - - - - ) -} diff --git a/web/src/components/ClusterButtonPanel/ClusterButton.tsx b/web/src/components/ClusterButtonPanel/ClusterButton.tsx index 5c4e61b354..96a045c727 100644 --- a/web/src/components/ClusterButtonPanel/ClusterButton.tsx +++ b/web/src/components/ClusterButtonPanel/ClusterButton.tsx @@ -1,93 +1,48 @@ -/* eslint-disable camelcase */ -import React from 'react' - -import { ClusterDatum } from 'src/io/getClusters' +import React, { useCallback, useMemo } from 'react' +import { isEqual } from 'lodash' +import { useSetRecoilState } from 'recoil' +import { useRouter } from 'next/router' import styled from 'styled-components' -import { Link } from '../Link/Link' - -const ClusterButtonComponent = styled(Link)<{ $isCurrent: boolean; $color: string }>` - display: flex; - width: 200px; - height: 55px; - margin: 3px; - - border: none; - border-left: 30px solid ${(props) => props.$color}; - border-radius: 3px; - cursor: pointer; +import type { ClusterDatum } from 'src/io/getClusters' +import { currentClusterAtom } from 'src/state/Clusters' +import { VariantLinkBadge as VariantLinkBadgeBase } from 'src/components/Common/MutationBadge' - box-shadow: ${({ $isCurrent, theme }) => ($isCurrent ? theme.shadows.normal : theme.shadows.light)}; - background-color: ${({ $isCurrent, theme }) => ($isCurrent ? theme.white : theme.gray100)}; - text-decoration: none; - - &:active, - &:focus, - &:hover { - text-decoration: none; +const VariantLinkBadge = styled(VariantLinkBadgeBase)<{ $isCurrent: boolean }>` + @media (min-width: ${(props) => props.theme.grid.md}) { + display: block; } - @media (min-width: 992px) { - } + transform: scale(1.2); + margin-bottom: 0.5rem; - @media (max-width: 991.98px) { - width: 180px; - height: 45px; - } - - @media (max-width: 767.98px) { - width: 160px; - height: 40px; - } + opacity: ${(props) => !props.$isCurrent && 0.75}; - @media (max-width: 575.98px) { - width: 150px; - height: 32px; + & > span { + border-radius: 4px; + border: ${(props) => (props.$isCurrent ? props.theme.green : 'transparent')} solid 1px; } -` - -const ClusterTitle = styled.h2<{ $isCurrent: boolean }>` - font-family: ${(props) => props.theme.font.monospace}; - font-size: 1rem; - @media (max-width: 991.98px) { - font-size: 0.8rem; - margin: auto 7px; - } - - @media (max-width: 767.98px) { - font-size: 0.75rem; - margin: auto 5px; - } - - @media (max-width: 575.98px) { - font-size: 0.7rem; - margin: auto 4px; - } - - margin: auto 5px; - - color: ${({ $isCurrent, theme }) => ($isCurrent ? theme.gray700 : theme.gray600)}; - text-decoration: none; - - &:active, - &:focus, &:hover { - color: ${(props) => props.theme.gray700}; - text-decoration: none; + opacity: 1; } ` export interface ClusterButtonProps { cluster: ClusterDatum - isCurrent: boolean } -export function ClusterButton({ cluster, isCurrent }: ClusterButtonProps) { - const { display_name, col, build_name } = cluster +export function ClusterButton({ cluster }: ClusterButtonProps) { + const { asPath } = useRouter() + const { display_name, build_name } = cluster + const setCurrentCluster = useSetRecoilState(currentClusterAtom) + + const isCurrent = useMemo(() => { + return isEqual(asPath, `/variants/${build_name}`) + }, [asPath, build_name]) + + const onClick = useCallback(() => { + setCurrentCluster(cluster) + }, [cluster, setCurrentCluster]) - return ( - - {display_name} - - ) + return } diff --git a/web/src/components/ClusterButtonPanel/ClusterButtonGroup.tsx b/web/src/components/ClusterButtonPanel/ClusterButtonGroup.tsx index b5531d6e6b..f1b78058e1 100644 --- a/web/src/components/ClusterButtonPanel/ClusterButtonGroup.tsx +++ b/web/src/components/ClusterButtonPanel/ClusterButtonGroup.tsx @@ -1,29 +1,22 @@ import React, { useMemo, useState } from 'react' - import styled from 'styled-components' import { Button } from 'reactstrap' - import type { ClusterDatum } from 'src/io/getClusters' import { ClusterButton } from 'src/components/ClusterButtonPanel/ClusterButton' const ClusterGroupContainer = styled.div` display: flex; flex-direction: column; + margin: 0 1rem; + width: 100%; ` const ClusterGroupWrapper = styled.div` display: flex; - flex-wrap: wrap; - flex: 1 1; + flex: 0; ` -const ClusterGroup = styled.div` - display: flex; - flex-wrap: wrap; - flex: 1 0; - margin: auto; - justify-content: center; -` +const ClusterGroup = styled.div`` const ShowMoreButton = styled(Button)` margin: 0 auto; @@ -46,7 +39,7 @@ export function ClusterButtonOptional({ cluster, isCurrent, showNonImportant }: return null } - return + return } export interface ClusterButtonGroupProps { @@ -56,7 +49,7 @@ export interface ClusterButtonGroupProps { export function ClusterButtonGroup({ clusterGroup, currentCluster }: ClusterButtonGroupProps) { const [showNonImportant, setShowNonImportant] = useState(false) - const toggleShowNonImportant = useMemo(() => (_: unknown) => setShowNonImportant(!showNonImportant), [showNonImportant]) // prettier-ignore + const toggleShowNonImportant = useMemo(() => (_: unknown) => setShowNonImportant(!showNonImportant), [showNonImportant]); // prettier-ignore return ( diff --git a/web/src/components/ClusterButtonPanel/ClusterButtonPanel.tsx b/web/src/components/ClusterButtonPanel/ClusterButtonPanel.tsx index d300a6ae05..55203c9a06 100644 --- a/web/src/components/ClusterButtonPanel/ClusterButtonPanel.tsx +++ b/web/src/components/ClusterButtonPanel/ClusterButtonPanel.tsx @@ -1,18 +1,14 @@ -import React from 'react' - -import { Card, CardBody, CardHeader, Row } from 'reactstrap' -import { ClusterButtonGroup } from 'src/components/ClusterButtonPanel/ClusterButtonGroup' - -import { ClusterDatum, getClusters, getClustersGrouped } from 'src/io/getClusters' +import { get, groupBy, isNil } from 'lodash' +import React, { useMemo } from 'react' import styled from 'styled-components' - -const clusters = getClusters().filter((cluster) => !cluster.has_no_page) -const clustersGrouped = getClustersGrouped(clusters) +import { Card, CardBody, CardHeader, Row, RowProps } from 'reactstrap' +import { ClusterDatum, useClusters } from 'src/io/getClusters' +import { ClusterButtonGroup } from 'src/components/ClusterButtonPanel/ClusterButtonGroup' +import { useTranslationSafe } from 'src/helpers/useTranslationSafe' const ClustersRow = styled(Row)` display: flex; - flex-wrap: wrap; - flex-direction: column; + flex-direction: row; ` const ClusterGroupCard = styled(Card)` @@ -21,41 +17,59 @@ const ClusterGroupCard = styled(Card)` border: 0; box-shadow: none; margin-bottom: 0.5rem; + background: none; ` const ClusterGroupHeader = styled(CardHeader)` - flex: 0 0 100%; - text-align: center; - width: 100%; background: none; - color: ${(props) => props.theme.gray700}; + color: ${(props) => props.theme.gray300}; font-size: 1.1rem; font-weight: 700; - text-transform: capitalize; ` const ClusterGroupBody = styled(CardBody)` display: flex; padding: 0; margin: auto; + background: none; ` -export interface ClusterPanelProps { +export interface ClusterPanelProps extends RowProps { currentCluster?: ClusterDatum className?: string } -export function ClusterButtonPanel({ currentCluster, className }: ClusterPanelProps) { - return ( - - {Object.entries(clustersGrouped).map(([clusterType, clusterGroup]) => ( +export function ClusterButtonPanel({ currentCluster, ...restProps }: ClusterPanelProps) { + const { t } = useTranslationSafe() + const clusters = useClusters() + + const clusterButtons = useMemo(() => { + const clustersWithType = clusters.filter((cluster) => !isNil(cluster.type)) + const clustersGrouped = groupBy(clustersWithType, 'type') + + return Object.entries(clustersGrouped).map(([clusterType, clusterGroup]) => { + const clusterTypeHeading = get( + { + variant: t('Variants'), + mutation: t('Mutations'), + }, + clusterType, + 'Other', + ) + return ( - {clusterType} + {clusterTypeHeading.toUpperCase()} - ))} + ) + }) + }, [clusters, currentCluster, t]) + + return ( + + {clusterButtons} ) } diff --git a/web/src/components/ClusterButtonPanel/ClusterButtonPanelLayout.tsx b/web/src/components/ClusterButtonPanel/ClusterButtonPanelLayout.tsx deleted file mode 100644 index 3d144a8d0e..0000000000 --- a/web/src/components/ClusterButtonPanel/ClusterButtonPanelLayout.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React, { PropsWithChildren } from 'react' - -import styled from 'styled-components' - -import type { ClusterDatum } from 'src/io/getClusters' -import { ClusterButtonPanel } from './ClusterButtonPanel' - -const FlexContainer = styled.div` - display: flex; - flex-direction: row; - max-width: calc(100ch + 256px); - margin: 0 auto; - - @media (max-width: 767.98px) { - flex-direction: column; - } -` - -const FlexFixed = styled.div` - flex: 0 0; - flex-basis: 180px; - - flex-wrap: wrap; - - @media (min-width: 1120px) { - border-right: 2px solid ${(props) => props.theme.gray200}; - padding-right: 1rem; - } -` - -const FlexGrowing = styled.div` - display: flex; - flex: 1 0; -` - -export interface ClusterButtonPanelLayoutProps { - currentCluster?: ClusterDatum -} - -export function ClusterButtonPanelLayout({ - children, - currentCluster, -}: PropsWithChildren) { - return ( - - - - - - {children} - - ) -} diff --git a/web/src/components/ClusterDistribution/ClusterDistributionPage.tsx b/web/src/components/ClusterDistribution/ClusterDistributionPage.tsx deleted file mode 100644 index ff627c2b9e..0000000000 --- a/web/src/components/ClusterDistribution/ClusterDistributionPage.tsx +++ /dev/null @@ -1,258 +0,0 @@ -import React, { useCallback, useMemo } from 'react' - -import { Card, CardBody, Col, Form, FormGroup, Input, Label, Row } from 'reactstrap' -import { useRecoilState } from 'recoil' -import { SharingPanel } from 'src/components/Common/SharingPanel' -import { - clustersAtom, - ClustersDataFlavor, - disableAllClusters, - enableAllClusters, - toggleCluster, -} from 'src/state/Clusters' -import { - continentsAtom, - countriesAtom, - disableAllCountries, - enableAllCountries, - toggleContinent, - toggleCountry, -} from 'src/state/Places' -import { tooltipSortAtom, TooltipSortCriterion } from 'src/state/TooltipSort' -import styled from 'styled-components' - -import { getPerClusterData, filterClusters, filterCountries } from 'src/io/getPerClusterData' -import { ClusterDistributionPlotCard } from 'src/components/ClusterDistribution/ClusterDistributionPlotCard' -import { ColCustom } from 'src/components/Common/ColCustom' -import { Dropdown as DropdownBase } from 'src/components/Common/Dropdown' -import { stringToOption } from 'src/components/Common/DropdownOption' -import { Editable, CenteredEditable } from 'src/components/Common/Editable' -import { MainFlex, SidebarFlex, WrapperFlex } from 'src/components/Common/PlotLayout' -import { DistributionSidebar } from 'src/components/DistributionSidebar/DistributionSidebar' -import { Layout } from 'src/components/Layout/Layout' -import { PageHeading } from 'src/components/Common/PageHeading' - -import PerClusterIntro from '../../../../content/PerClusterIntro.md' - -const Dropdown = styled(DropdownBase)` - min-width: 130px; -` - -const enabledFilters = ['countries', 'clusters'] - -export interface SortByDropdownProps { - perCountryTooltipSortBy: TooltipSortCriterion - onSortByChange(perCountryTooltipSortBy: TooltipSortCriterion): void -} - -const sortByOptions = Object.entries(TooltipSortCriterion).map(([key, value]) => ({ value, label: key })) - -export function SortByDropdown({ perCountryTooltipSortBy, onSortByChange }: SortByDropdownProps) { - const handleSortByChange = useCallback( - (value: string) => onSortByChange(TooltipSortCriterion[value as keyof typeof TooltipSortCriterion]), - [onSortByChange], - ) - - return ( - - - - ) -} - -export interface SortReverseCheckboxProps { - reverse: boolean - setReverse(reverse: boolean): void -} - -export function SortReverseCheckbox({ reverse, setReverse }: SortReverseCheckboxProps) { - const onChange = useCallback(() => setReverse(!reverse), [setReverse, reverse]) - - return ( - - - - ) -} - -const StickyRow = styled(Row)` - position: sticky; - top: 0; - z-index: 1; - align-self: flex-start; -` - -export function ClusterDistributionPage() { - const [countries, setCountries] = useRecoilState(countriesAtom(undefined)) - const [continents, setContinents] = useRecoilState(continentsAtom(undefined)) - const [clusters, setClusters] = useRecoilState( - clustersAtom({ dataFlavor: ClustersDataFlavor.PerCluster, region: 'World' }), - ) - - const [tooltipSort, setTooltipSort] = useRecoilState(tooltipSortAtom) - const perCountryTooltipSortBy = tooltipSort.criterion - const perCountryTooltipSortReversed = tooltipSort.reversed - - const { clusterBuildNames, clusterDistributions } = getPerClusterData() - - const setSortBy = useCallback( - (criterion: TooltipSortCriterion) => { - setTooltipSort((tooltipSort) => ({ ...tooltipSort, criterion })) - }, - [setTooltipSort], - ) - - const setSortReversed = useCallback( - (reversed: boolean) => { - setTooltipSort((tooltipSort) => ({ ...tooltipSort, reversed })) - }, - [setTooltipSort], - ) - - const { withClustersFiltered } = useMemo( - () => filterClusters(clusters, clusterDistributions), - [clusterDistributions, clusters], - ) - const { enabledCountries, withCountriesFiltered } = - /* prettier-ignore */ - useMemo(() => filterCountries(countries, withClustersFiltered), [countries, withClustersFiltered]) - - const clusterDistributionComponents = useMemo( - () => - withCountriesFiltered.map(({ cluster, distribution }) => ( - - - - )), - [clusterBuildNames, enabledCountries, withCountriesFiltered], - ) - - const handleClusterCheckedChange = useCallback( - (cluster: string) => { - setClusters((oldClusters) => toggleCluster(oldClusters, cluster)) - }, - [setClusters], - ) - - const handleClusterSelectAll = useCallback(() => { - setClusters((oldClusters) => enableAllClusters(oldClusters)) - }, [setClusters]) - - const handleClusterDeselectAll = useCallback(() => { - setClusters((oldClusters) => disableAllClusters(oldClusters)) - }, [setClusters]) - - const handleCountryCheckedChange = useCallback( - (countryName: string) => { - setCountries((oldCountries) => toggleCountry(oldCountries, countryName)) - }, - [setCountries], - ) - - const handleContinentCheckedChange = useCallback( - (continentName: string) => { - setContinents((oldContinents) => toggleContinent(oldContinents, continentName)) - }, - [setContinents], - ) - - const handleCountrySelectAll = useCallback(() => { - setCountries(enableAllCountries) - }, [setCountries]) - - const handleCountryDeselectAll = useCallback(() => { - setCountries(disableAllCountries) - }, [setCountries]) - - return ( - - - - {'Overview of Variants/Mutations'} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
-
- -
- - - - {clusterDistributionComponents} - - -
-
-
- -
-
- ) -} diff --git a/web/src/components/ClusterDistribution/ClusterDistributionPlot.tsx b/web/src/components/ClusterDistribution/ClusterDistributionPlot.tsx deleted file mode 100644 index 567cb0e49c..0000000000 --- a/web/src/components/ClusterDistribution/ClusterDistributionPlot.tsx +++ /dev/null @@ -1,142 +0,0 @@ -/* eslint-disable camelcase */ -import React, { useMemo } from 'react' - -import { get } from 'lodash' -import { DateTime } from 'luxon' -import { CartesianGrid, Line, LineChart, Tooltip, XAxis, YAxis } from 'recharts' -import { useTheme } from 'styled-components' - -import { ticks, timeDomain } from 'src/io/getParams' -import { getCountryColor, getCountryStrokeDashArray } from 'src/io/getCountryColor' -import { formatDateHumanely, formatProportion } from 'src/helpers/format' -import { adjustTicks } from 'src/helpers/adjustTicks' -import type { ClusterDistributionDatum } from 'src/io/getPerClusterData' -import { ClusterDistributionPlotTooltip } from 'src/components/ClusterDistribution/ClusterDistributionPlotTooltip' -import { ChartContainer } from 'src/components/Common/ChartContainer' - -const getValueOrig = (country: string) => (value: ClusterDistributionDatum) => { - const orig = get(value.orig, country, false) - if (orig) { - return get(value.frequencies, country) - } - - return undefined -} - -const getValueInterp = (country: string) => (value: ClusterDistributionDatum) => { - const interp = get(value.interp, country, false) - if (interp) { - return get(value.frequencies, country) - } - - return undefined -} - -const allowEscapeViewBox = { x: false, y: true } - -interface LinePlotProps { - width: number - height: number - country_names: string[] - distribution: ClusterDistributionDatum[] -} - -function LinePlot({ width, height, country_names, distribution }: LinePlotProps) { - const theme = useTheme() - - const data = useMemo( - () => - distribution.map(({ week, ...rest }) => { - const weekSec = DateTime.fromFormat(week, 'yyyy-MM-dd').toSeconds() - return { week: weekSec, ...rest } - }), - [distribution], - ) - - const { adjustedTicks, domainX, domainY } = useMemo(() => { - const adjustedTicks = adjustTicks(ticks, width ?? 0, theme.plot.tickWidthMin) - const domainX = [adjustedTicks[0], timeDomain[1]] - const domainY = [0, 1] - return { adjustedTicks, domainX, domainY } - }, [theme.plot.tickWidthMin, width]) - - const lines = useMemo(() => { - const linesOrig = country_names.map((country) => ( - - )) - - const linesInterp = country_names.map((country) => ( - - )) - - return [...linesOrig, linesInterp] - }, [country_names]) - - return ( - - - - - - - - {lines} - - ) -} - -export interface ClusterDistributionPlotProps { - country_names: string[] - distribution: ClusterDistributionDatum[] -} - -export function ClusterDistributionPlot({ country_names, distribution }: ClusterDistributionPlotProps) { - return ( - - {({ width, height }) => ( - - )} - - ) -} diff --git a/web/src/components/ClusterDistribution/ClusterDistributionPlotCard.tsx b/web/src/components/ClusterDistribution/ClusterDistributionPlotCard.tsx deleted file mode 100644 index cc0ad18110..0000000000 --- a/web/src/components/ClusterDistribution/ClusterDistributionPlotCard.tsx +++ /dev/null @@ -1,50 +0,0 @@ -/* eslint-disable camelcase */ -import React from 'react' - -import { Card, CardBody, CardHeader, Col, Row } from 'reactstrap' -import styled from 'styled-components' - -import type { ClusterDistributionDatum } from 'src/io/getPerClusterData' -import { Link } from 'src/components/Link/Link' -import { PlotCardTitle } from 'src/components/Common/PlotCardTitle' -import { ClusterDistributionPlot } from 'src/components/ClusterDistribution/ClusterDistributionPlot' - -export interface ClusterDistributionPlotCardProps { - clusterBuildName: string - clusterDisplayName: string - distribution: ClusterDistributionDatum[] - country_names: string[] -} - -const GreyLink = styled(Link)` - color: ${(props) => props.theme.gray700}; -` - -export function ClusterDistributionPlotCard({ - clusterBuildName, - clusterDisplayName, - distribution, - country_names, -}: ClusterDistributionPlotCardProps) { - const url = `/variants/${clusterBuildName}` - - return ( - - - - {clusterDisplayName} - - - - - - - - - - - - - - ) -} diff --git a/web/src/components/ClusterDistribution/ClusterDistributionPlotTooltip.tsx b/web/src/components/ClusterDistribution/ClusterDistributionPlotTooltip.tsx deleted file mode 100644 index d8f057790e..0000000000 --- a/web/src/components/ClusterDistribution/ClusterDistributionPlotTooltip.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import React from 'react' - -import { get, sortBy, reverse, uniqBy } from 'lodash' -import { useRecoilValue } from 'recoil' -import { ColoredHorizontalLineIcon } from 'src/components/Common/ColoredHorizontalLineIcon' -import { tooltipSortAtom } from 'src/state/TooltipSort' -import { theme } from 'src/theme' -import styled from 'styled-components' - -import type { Props as DefaultTooltipContentProps } from 'recharts/types/component/DefaultTooltipContent' -import { formatDateWeekly, formatProportion } from 'src/helpers/format' -import { getCountryColor, getCountryStrokeDashArray } from 'src/io/getCountryColor' - -const EPSILON = 1e-2 - -const Tooltip = styled.div` - display: flex; - flex-direction: column; - - padding: 5px 10px; - background-color: ${(props) => props.theme.plot.tooltip.background}; - box-shadow: ${(props) => props.theme.shadows.slight}; - border-radius: 3px; -` - -const TooltipTitle = styled.h3` - font-size: 1rem; - font-weight: 600; - margin: 5px auto; -` - -const TooltipTable = styled.table` - padding: 30px 35px; - font-size: 0.9rem; - border: none; - min-width: 250px; - - background-color: ${(props) => props.theme.plot.tooltip.table.backgroundEven}; - - & > tbody > tr:nth-child(odd) { - background-color: ${(props) => props.theme.plot.tooltip.table.backgroundOdd}; - } -` - -const TooltipFooter = styled.div` - margin: 5px; -` - -const TooltipTableBody = styled.tbody`` - -export type ClusterDistributionPlotTooltipProps = DefaultTooltipContentProps - -export function ClusterDistributionPlotTooltip(props: ClusterDistributionPlotTooltipProps) { - const { criterion, reversed } = useRecoilValue(tooltipSortAtom) - - const { payload } = props - if (!payload || payload.length === 0) { - return null - } - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const data = payload[0]?.payload as ClusterDistributionDatum - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument - const week = formatDateWeekly(data?.week) - - let payloadSorted = sortBy(payload, criterion === 'country' ? 'name' : 'value') - - // sortBy sorts in ascending order, but if sorting by frequency the natural/non-reversed order is descending - - if ((criterion !== 'frequency' && reversed) || (criterion === 'frequency' && !reversed)) { - payloadSorted = reverse(payloadSorted) - } - - const payloadUnique = uniqBy(payloadSorted, (payload) => payload.name) - - return ( - - {week} - - - - - {'Country'} - - {'Frequency'} - - - - {payloadUnique.map(({ name, value, payload }) => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - const interpolated = !get(payload?.orig, name, false) // eslint-disable-line @typescript-eslint/no-unsafe-member-access - const country = name ?? '?' - return ( - - - - {country} - - {interpolated && '*'} - - {value !== undefined && value > EPSILON ? formatProportion(value) : '-'} - - - ) - })} - - - - - {'* Interpolated values'} - - - ) -} diff --git a/web/src/components/Common/Card.tsx b/web/src/components/Common/Card.tsx deleted file mode 100644 index c0839ede07..0000000000 --- a/web/src/components/Common/Card.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import styled from 'styled-components' - -import { Card as ReactstrapCard, CardHeader as ReactstrapCardHeader, CardBody as ReactstrapCardBody } from 'reactstrap' - -/* Level 1 */ -export const CardL1 = styled(ReactstrapCard)` - border: none; - border-image: none; - margin: 10px 5px; - border-radius: 3px; -` - -export const CardL1Header = styled(ReactstrapCardHeader)` - border: none; - border-image: none; - background-color: #666; - color: #ddd; - padding: 5px 5px; - display: flex; - height: 48px; -` - -export const CardL1Body = styled(ReactstrapCardBody)` - border: 0; - border-image: none; - margin: 3px 2px; - padding: 6px; -` - -/* Level 2 */ -export const CardL2 = styled(ReactstrapCard)` - margin: 5px; - box-shadow: none; - border-image: none; - border: #dfe2e6 1px solid; -` - -export const CardL2Header = styled(ReactstrapCardHeader)` - font-weight: bold; - font-size: 1.1rem; - padding: 7px 5px; -` - -export const CardL2Body = styled(ReactstrapCardBody)` - margin: 3px 2px; - padding: 5px; - min-height: 180px; -` diff --git a/web/src/components/Common/CardCollapsible.tsx b/web/src/components/Common/CardCollapsible.tsx deleted file mode 100644 index 29a111d330..0000000000 --- a/web/src/components/Common/CardCollapsible.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React, { PropsWithChildren, useCallback } from 'react' - -import styled from 'styled-components' -import { MdArrowDropDown } from 'react-icons/md' -import { Card as CardBase, CardHeader as CardHeaderBase, Collapse } from 'reactstrap' - -const Card = styled(CardBase)`` - -const CardHeader = styled(CardHeaderBase)` - display: flex; - cursor: pointer; -` - -const CollapseIcon = styled(MdArrowDropDown)<{ $rotated?: boolean }>` - display: inline; - fill: ${(props) => props.theme.gray650}; - transition: transform linear 0.25s; - transform: rotate(${(props) => (props.$rotated ? '-90deg' : '0deg')}); -` - -export interface CollapsibleCardProps { - className?: string - collapsed: boolean - setCollapsed: (collapsed: boolean) => void - title?: React.ReactNode -} - -export function CardCollapsible({ - className, - title, - collapsed, - setCollapsed, - children, -}: PropsWithChildren) { - const toggle = useCallback(() => setCollapsed(!collapsed), [collapsed, setCollapsed]) - - return ( - - - - {title} - - - {children} - - ) -} diff --git a/web/src/components/Common/CardCollapsibleUncontrolled.tsx b/web/src/components/Common/CardCollapsibleUncontrolled.tsx deleted file mode 100644 index 03619955a8..0000000000 --- a/web/src/components/Common/CardCollapsibleUncontrolled.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React, { PropsWithChildren, useState } from 'react' - -import { CardCollapsible } from 'src/components/Common/CardCollapsible' - -export interface CollapsibleCardProps { - className?: string - collapsedByDefault?: boolean - title?: React.ReactNode -} - -export function CardCollapsibleUncontrolled({ - className, - collapsedByDefault = false, - title, - children, -}: PropsWithChildren) { - const [collapsed, setCollapsed] = useState(collapsedByDefault) - - return ( - - {children} - - ) -} diff --git a/web/src/components/Common/ChangelogButton.tsx b/web/src/components/Common/ChangelogButton.tsx deleted file mode 100644 index f37cd0f054..0000000000 --- a/web/src/components/Common/ChangelogButton.tsx +++ /dev/null @@ -1,248 +0,0 @@ -import { MDXProvider } from '@mdx-js/react' -import React, { PropsWithChildren, useCallback, useState } from 'react' - -import { - Button, - ButtonProps, - Col, - Container, - Modal as ReactstrapModal, - ModalBody as ReactstrapModalBody, - ModalFooter as ReactstrapModalFooter, - ModalHeader as ReactstrapModalHeader, - Row, -} from 'reactstrap' -import styled from 'styled-components' - -import { LinkExternal } from 'src/components/Link/LinkExternal' -import Changelog from '../../../../CHANGELOG.md' - -export const ButtonOk = styled(Button)` - width: 100px; -` - -export const ModalHeader = styled(ReactstrapModalHeader)` - .modal-title { - width: 100%; - } - - @media (max-width: 992px) { - padding: 0.25rem; - margin: 0.5rem; - margin-bottom: 0; - } -` - -export const Modal = styled(ReactstrapModal)` - height: 100%; - - @media (max-width: 1200px) { - min-width: 80vw; - } - - @media (min-width: 1199.98px) { - min-width: 957px; - } - - @media (min-width: 991.98px) { - margin: 0.1vh auto; - } - - // fullscreen on mobile - @media (max-width: 992px) { - max-width: unset; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: 0; - padding: 0; - - .modal-content { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - margin: 0; - } - } -` - -export const ModalBody = styled(ReactstrapModalBody)` - @media (min-width: 991.98px) { - max-height: 66vh; - margin: auto; - } - - overflow-y: auto; - - // prettier-ignore - background: - linear-gradient(#ffffff 33%, rgba(255,255,255, 0)), - linear-gradient(rgba(255,255,255, 0), #ffffff 66%) 0 100%, - radial-gradient(farthest-side at 50% 0, rgba(119,119,119, 0.5), rgba(0,0,0,0)), - radial-gradient(farthest-side at 50% 100%, rgba(119,119,119, 0.5), rgba(0,0,0,0)) 0 100%; - background-color: #ffffff; - background-repeat: no-repeat; - background-attachment: local, local, scroll, scroll; - background-size: 100% 24px, 100% 24px, 100% 8px, 100% 8px; - - h1:first-child, - h2:first-child { - border-top: none; - padding-top: 0; - margin-top: 0; - } - - code { - padding: 2px; - background-color: #eaeaea; - border-radius: 2px; - } - - pre { - padding: 2px; - background-color: #eaeaea; - border-radius: 2px; - } -` - -export const ModalFooter = styled(ReactstrapModalFooter)` - margin: 0; - padding: 0; -` - -export const H1 = styled.h1` - font-size: 2.5rem; - font-weight: bold; - - @media (max-width: 992px) { - font-size: 2rem; - } -` - -export const H2 = styled.h2` - border-top: #ccc solid 1px; - padding-top: 1rem; - font-size: 2rem; - font-weight: bold; - margin-top: 2rem; - - @media (max-width: 992px) { - font-size: 1.75rem; - margin-top: 1.25rem; - } -` - -export const H3 = styled.h3` - font-size: 1.75rem; - font-weight: bold; - margin-top: 1.75rem; - - @media (max-width: 992px) { - font-size: 1.5rem; - margin-top: 1.2rem; - } -` - -export const H4 = styled.h4` - font-size: 1.33rem; - font-weight: bold; - margin-top: 2rem; - - @media (max-width: 992px) { - font-size: 1.2rem; - margin-top: 1.2rem; - } -` - -export const H5 = styled.h5` - font-size: 1.1rem; - font-weight: bold; - margin-top: 1.1rem; - - @media (max-width: 992px) { - font-size: 1rem; - margin-top: 1.1rem; - } -` - -export const H6 = styled.h6` - font-size: 1rem; - font-weight: bold; -` - -export const Blockquote = styled.blockquote` - padding: 6px 8px; - border-radius: 3px; - background-color: #f4ebbd; -` - -export const MarkdownWrapper = styled.article` - text-align: justify; -` - -const components = { - h1: H1, - h2: H2, - h3: H3, - h4: H4, - h5: H5, - h6: H6, - a: LinkExternal, - blockquote: Blockquote, - wrapper: MarkdownWrapper, -} - -export function ChangelogButton({ children, ...props }: PropsWithChildren) { - const [showChangelog, setShowChangelog] = useState(false) - - const toggleOpen = useCallback(() => { - setShowChangelog(!showChangelog) - }, [showChangelog]) - - const open = useCallback(() => { - setShowChangelog(true) - }, []) - - const close = useCallback(() => { - setShowChangelog(false) - }, []) - - const text = 'Recent updates' - const closeText = 'Close this window' - - return ( - <> - - - - -

{text}

-
- - - - - - - - - - - - - {'OK'} - - - - - -
- - ) -} diff --git a/web/src/components/Common/ChartContainer.tsx b/web/src/components/Common/ChartContainer.tsx deleted file mode 100644 index 5f3ec810bc..0000000000 --- a/web/src/components/Common/ChartContainer.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React, { useMemo } from 'react' -import { useResizeDetector } from 'react-resize-detector' -import { Props as ResizeDetectorProps } from 'react-resize-detector/build/ResizeDetector' -import { useInView } from 'react-intersection-observer' - -import { theme } from 'src/theme' -import { ChartContainerInner, ChartContainerOuter } from './PlotLayout' -import { FadeIn } from './FadeIn' - -type ChartContainerDimensions = { - width: number - height: number -} - -export interface ChartContainerProps { - resizeOptions?: ResizeDetectorProps - children: (dimensions: ChartContainerDimensions) => React.ReactNode -} - -export function ChartContainer({ children, resizeOptions }: ChartContainerProps) { - const { width = 0, ref: resizeRef } = useResizeDetector({ handleWidth: true, ...resizeOptions }) - const { inView, ref: intersectionRef } = useInView({ fallbackInView: true }) - const dimensions = useMemo(() => ({ width, height: width / theme.plot.aspectRatio }), [width]) - const childrenWithDims = useMemo(() => children(dimensions), [children, dimensions]) - - return ( - - -
- {inView && {childrenWithDims}} -
-
-
- ) -} diff --git a/web/src/components/Common/CheckboxWithIcon.tsx b/web/src/components/Common/CheckboxWithIcon.tsx new file mode 100644 index 0000000000..23c23f1cbe --- /dev/null +++ b/web/src/components/Common/CheckboxWithIcon.tsx @@ -0,0 +1,39 @@ +import React, { ReactNode, useCallback } from 'react' +import { FormGroup, Input, Label } from 'reactstrap' +import { SetterOrUpdater } from 'src/types' +import styled from 'styled-components' + +export interface CheckboxWithIconProps { + label?: string + Icon?: ReactNode + checked: boolean + setChecked: SetterOrUpdater +} + +export function CheckboxWithIcon({ label, Icon = null, checked, setChecked }: CheckboxWithIconProps) { + const onChange = useCallback(() => { + setChecked((checkedPrev) => !checkedPrev) + }, [setChecked]) + + return ( + + + + ) +} + +const FlagAlignment = styled.span` + display: inline-flex; + align-items: center; + margin-left: 0.25em; + + > * + * { + margin-left: 0.5em; + } +` diff --git a/web/src/components/Common/ClusterSidebarLayout.tsx b/web/src/components/Common/ClusterSidebarLayout.tsx deleted file mode 100644 index a0b85a3d20..0000000000 --- a/web/src/components/Common/ClusterSidebarLayout.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import styled from 'styled-components' - -export const NarrowPageContainer = styled.div` - display: flex; - flex-direction: column; - max-width: 1500px; - margin: auto; -` diff --git a/web/src/components/Common/ColCustom.tsx b/web/src/components/Common/ColCustom.tsx deleted file mode 100644 index fb39d689ec..0000000000 --- a/web/src/components/Common/ColCustom.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' - -import { Col } from 'reactstrap' -import type { ColProps as ReactstrapColProps } from 'reactstrap/lib/Col' - -export interface ColProps extends Omit { - readonly xxl?: number -} - -const WIDTHS = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'] - -function ColCustom({ ...restProps }: ColProps) { - return -} - -export { ColCustom } diff --git a/web/src/components/Common/ColoredBox.tsx b/web/src/components/Common/ColoredBox.tsx deleted file mode 100644 index f639020f12..0000000000 --- a/web/src/components/Common/ColoredBox.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from 'styled-components' - -export const ColoredBox = styled.div<{ $color: string; $size: number; $aspect: number }>` - display: inline-block; - margin: auto; - margin-right: ${(props) => props.$size / 2}px; - background-color: ${(props) => props.$color}; - width: ${(props) => props.$size * props.$aspect}px; - height: ${(props) => props.$size}px; - border-radius: 2px; -` diff --git a/web/src/components/Common/ColoredCircle.tsx b/web/src/components/Common/ColoredCircle.tsx deleted file mode 100644 index d0b076448d..0000000000 --- a/web/src/components/Common/ColoredCircle.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import styled from 'styled-components' - -export const ColoredCircle = styled.div<{ $color: string; $size: number }>` - display: inline-block; - margin: auto; - margin-right: ${(props) => props.$size / 2}px; - background-color: ${(props) => props.$color}; - width: ${(props) => props.$size}px; - height: ${(props) => props.$size}px; - border-radius: ${(props) => props.$size / 2}px; -` diff --git a/web/src/components/Common/ColoredHorizontalLineIcon.tsx b/web/src/components/Common/ColoredHorizontalLineIcon.tsx deleted file mode 100644 index e0427cc60e..0000000000 --- a/web/src/components/Common/ColoredHorizontalLineIcon.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React, { SVGProps } from 'react' - -export interface ColoredLineProps extends SVGProps { - width: number - height: number - stroke: string - strokeWidth?: number - strokeDasharray?: string - className?: string -} - -export function ColoredHorizontalLineIcon({ - width, - height, - stroke, - strokeWidth = 1, - strokeDasharray, - className, - ...restProps -}: ColoredLineProps) { - return ( - - - - - - ) -} diff --git a/web/src/components/Common/CountryFlag.tsx b/web/src/components/Common/CountryFlag.tsx deleted file mode 100644 index 0bacc407cb..0000000000 --- a/web/src/components/Common/CountryFlag.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -import React, { FC, ReactElement, SVGProps, useMemo } from 'react' - -import iso3311a2 from 'iso-3166-1-alpha-2' -import Flags from 'country-flag-icons/react/3x2' - -import Africa from 'src/assets/images/continents/Africa.svg' -import Asia from 'src/assets/images/continents/Asia.svg' -import Europe from 'src/assets/images/continents/Europe.svg' -import NorthAmerica from 'src/assets/images/continents/North America.svg' -import Oceania from 'src/assets/images/continents/Oceania.svg' -import SouthAmerica from 'src/assets/images/continents/South America.svg' - -import { FlagWrapper } from './FlagWrapper' - -export const missingCountryCodes: Record = { - 'Bolivia': 'BO', - 'Bonaire': 'BQ', - 'Brunei': 'BN', - 'Curacao': 'CW', - 'Democratic Republic of the Congo': 'CD', - 'Eswatini': 'SZ', - 'Iran': 'IR', - 'Kosovo': 'XK', - 'Moldova': 'MD', - 'North Macedonia': 'MK', - 'Republic of the Congo': 'CD', - 'Russia': 'RU', - 'Saint Martin': 'SX', - 'Sint Maarten': 'SX', - 'South Korea': 'KR', - 'USA': 'US', - 'Venezuela': 'VE', - 'Vietnam': 'VN', -} - -export const ContinentIcons: Record>> = { - 'Africa': Africa, - 'Asia': Asia, - 'Europe': Europe, - 'North America': NorthAmerica, - 'Oceania': Oceania, - 'South America': SouthAmerica, -} - -export function getFlagComponent(country: string, withFallback?: boolean): ReactElement | null { - const countryCode = missingCountryCodes[country] ?? iso3311a2.getCode(country) ?? '?' - - const Flag = Flags[countryCode] - if (Flag) { - return ( - - - - ) - } - - const ContinentIcon = ContinentIcons[country] - if (ContinentIcon) { - return ( - - - - ) - } - - return withFallback ? : null -} - -export interface CountryFlagProps extends SVGProps { - country: string - withFallback?: boolean -} - -export function CountryFlag({ country, withFallback = false }: CountryFlagProps) { - const Flag = useMemo(() => getFlagComponent(country, withFallback), [country, withFallback]) - // eslint-disable-next-line react/jsx-no-useless-fragment - return <>{Flag} -} diff --git a/web/src/components/Common/Dropdown.tsx b/web/src/components/Common/Dropdown.tsx index 51fb7ce2e3..2b0e07ff7c 100644 --- a/web/src/components/Common/Dropdown.tsx +++ b/web/src/components/Common/Dropdown.tsx @@ -1,51 +1,91 @@ -import React, { useCallback } from 'react' +import React, { ReactNode, useCallback, useMemo, useState } from 'react' +import styled from 'styled-components' +import { + Dropdown as DropdownBase, + DropdownToggle as DropdownToggleBase, + DropdownMenu as DropdownMenuBase, + DropdownItem as DropdownItemBase, + DropdownProps as DropdownBaseProps, +} from 'reactstrap' +import { MdArrowDropDown } from 'react-icons/md' +import { rgba } from 'polished' -import Select from 'react-select' -import type { ActionMeta, OnChangeValue } from 'react-select/dist/declarations/src/types' -import type { StateManagerProps } from 'react-select/dist/declarations/src/useStateManager' - -import { DropdownOption } from 'src/components/Common/DropdownOption' - -export type IsMultiValue = false +export interface DropdownEntry { + key: string + value: ReactNode +} -export interface DropdownProps extends StateManagerProps, IsMultiValue> { - identifier: string - defaultOption?: DropdownOption - onValueChange?(value: string): void - onOptionChange?(option: DropdownOption): void +export interface DropdownProps extends DropdownBaseProps { + entries: DropdownEntry[] + currentEntry: DropdownEntry + setCurrentEntry(key: DropdownEntry): void } -export function Dropdown({ - className, - identifier, - options, - defaultOption, - value, - onOptionChange, - onValueChange, - ...restProps -}: DropdownProps) { - const handleChange = useCallback( - (option: OnChangeValue, IsMultiValue>, _actionMeta: ActionMeta>) => { - if (option) { - onValueChange?.(option.value) - onOptionChange?.(option) - } - }, - [onOptionChange, onValueChange], - ) +export function Dropdown({ currentEntry, setCurrentEntry, entries, ...restProps }: DropdownProps) { + const [dropdownOpen, setDropdownOpen] = useState(false) + const toggle = useCallback(() => setDropdownOpen((prevState) => !prevState), []) + const onClick = useCallback((entry: DropdownEntry) => () => setCurrentEntry(entry), [setCurrentEntry]) + const menuItems = useMemo(() => { + return entries.map((entry) => { + return ( + + {entry.value} + + ) + }) + }, [currentEntry, entries, onClick]) return ( - + ) +} + +export interface DropdownOption { + value: ValueType + label: string +} + +export function stringToOption(value: string): DropdownOption { + return { value, label: value } +} + +export function stringsToOptions(values: string[]): DropdownOption[] { + return values.map(stringToOption) +} diff --git a/web/src/components/Common/Editable.tsx b/web/src/components/Common/Editable.tsx deleted file mode 100644 index 749ab7b7c6..0000000000 --- a/web/src/components/Common/Editable.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import React, { PropsWithChildren, useMemo } from 'react' - -import styled from 'styled-components' -import { FaGithub } from 'react-icons/fa' - -import { URL_GITHUB } from 'src/constants' -import { LinkExternal } from 'src/components/Link/LinkExternal' -import { theme } from 'src/theme' - -const Container = styled.div` - margin: 0 auto; - padding: 0.65rem 1rem; - border-radius: 3px; -` - -const Flex = styled.div` - display: flex; - justify-content: flex-end; - margin-bottom: 12px; -` - -const LinkWrapper = styled.span` - box-shadow: ${(props) => props.theme.shadows.light}; - border-radius: 5px; - padding: 0 5px; -` - -const ProposeChangesText = styled.span` - font-size: 0.85rem; -` - -const ContentWrapper = styled.div` - p, - ul { - max-width: 100ch; - margin-left: auto; - margin-right: auto; - } - - & > * { - margin-bottom: 0; - } - - & > * + * { - margin-top: 1.5rem; - } - - & > p + h2, - & > p + h3 { - margin-top: 3rem; - } -` - -export interface EditableBodyProps { - githubUrl?: string - text?: string -} - -export function EditableHeader({ githubUrl, text }: EditableBodyProps) { - const href = useMemo(() => `${URL_GITHUB}/${githubUrl ?? ''}`, [githubUrl]) - const icon = useMemo(() => , []) - const titleText = useMemo(() => text ?? 'Propose changes to this section', [text]) - - if (!githubUrl) { - return null - } - - return ( - - - - {titleText} - - - - ) -} - -export interface EditableProps { - githubUrl?: string - text?: string -} - -export function Editable({ githubUrl, text, children, ...restProps }: PropsWithChildren) { - return ( - - - {children} - - ) -} - -export const CenteredEditable = styled(Editable)` - max-width: 100ch; - margin-left: auto; - margin-right: auto; -` diff --git a/web/src/components/Common/FadeIn.tsx b/web/src/components/Common/FadeIn.tsx deleted file mode 100644 index af4db8992b..0000000000 --- a/web/src/components/Common/FadeIn.tsx +++ /dev/null @@ -1,35 +0,0 @@ -// https://www.joshwcomeau.com/snippets/react-components/fade-in/ - -import React, { PropsWithChildren } from 'react' -import styled, { keyframes } from 'styled-components' - -export interface FadeInProps { - duration?: number - delay?: number -} - -export function FadeIn({ duration = 300, delay = 0, children }: PropsWithChildren) { - return ( - - {children} - - ) -} - -const fadeIn = keyframes` - from { - opacity: 0; - } - to { - opacity: 1; - } -` - -const Wrapper = styled.div<{ $delay?: number; $duration?: number }>` - @media (prefers-reduced-motion: no-preference) { - animation-name: ${fadeIn}; - animation-fill-mode: backwards; - animation-delay: ${(props) => props.$delay}ms; - animation-duration: ${(props) => props.$duration}ms; - } -` diff --git a/web/src/components/Common/FlagWrapper.tsx b/web/src/components/Common/GeoIconCommon.tsx similarity index 81% rename from web/src/components/Common/FlagWrapper.tsx rename to web/src/components/Common/GeoIconCommon.tsx index 6fef9f136c..bbe887cd23 100644 --- a/web/src/components/Common/FlagWrapper.tsx +++ b/web/src/components/Common/GeoIconCommon.tsx @@ -1,10 +1,11 @@ import styled from 'styled-components' -export const FlagWrapper = styled.div` +export const GeoIconWrapper = styled.div` height: calc(1em + 2px); width: calc(1.5em + 2px); border: 1px solid #ced4da; display: flex; + > * { width: 100%; height: 100%; diff --git a/web/src/components/Common/GeoIconContinent.tsx b/web/src/components/Common/GeoIconContinent.tsx new file mode 100644 index 0000000000..06935d9c77 --- /dev/null +++ b/web/src/components/Common/GeoIconContinent.tsx @@ -0,0 +1,31 @@ +import { get } from 'lodash' +import React, { ComponentType, Fragment, SVGProps, useMemo } from 'react' +import dynamic from 'next/dynamic' +import { GeoIconWrapper } from 'src/components/Common/GeoIconCommon' + +type S = SVGProps + +const Africa = dynamic(() => import('src/assets/images/continents/Africa.svg'), { ssr: false }) +const Asia = dynamic(() => import('src/assets/images/continents/Asia.svg'), { ssr: false }) +const Europe = dynamic(() => import('src/assets/images/continents/Europe.svg'), { ssr: false }) +const NorthAmerica = dynamic(() => import('src/assets/images/continents/North America.svg'), { ssr: false }) +const Oceania = dynamic(() => import('src/assets/images/continents/Oceania.svg'), { ssr: false }) +const SouthAmerica = dynamic(() => import('src/assets/images/continents/South America.svg'), { ssr: false }) + +export function GeoIconContinent({ continent }: { continent: string }) { + const Icon = useMemo(() => get(CONTINENT_ICONS, continent, Fragment), [continent]) + return ( + + + + ) +} + +const CONTINENT_ICONS: Record> = { + 'Africa': Africa, + 'Asia': Asia, + 'Europe': Europe, + 'North America': NorthAmerica, + 'Oceania': Oceania, + 'South America': SouthAmerica, +} diff --git a/web/src/components/Common/GeoIconCountry.tsx b/web/src/components/Common/GeoIconCountry.tsx new file mode 100644 index 0000000000..190d87b4ea --- /dev/null +++ b/web/src/components/Common/GeoIconCountry.tsx @@ -0,0 +1,44 @@ +import { get } from 'lodash' +import React, { Fragment, useMemo } from 'react' +import iso3311a2 from 'iso-3166-1-alpha-2' +import flags from 'country-flag-icons/react/3x2' +import { GeoIconWrapper } from 'src/components/Common/GeoIconCommon' + +export function GeoIconCountry({ country }: { country: string }) { + const Icon = useMemo(() => { + const countryCode = getCountryCode(country) + return get(flags, countryCode, Fragment) + }, [country]) + return ( + + + + ) +} + +function getCountryCode(country: string) { + return MISSING_COUNTRY_CODES[country] ?? iso3311a2.getCode(country) ?? '?' +} + +const MISSING_COUNTRY_CODES: Record = { + 'Laos': 'LA', + 'Bolivia': 'BO', + 'Bonaire': 'BQ', + 'Brunei': 'BN', + 'Cabo Verde': 'CV', + 'Curacao': 'CW', + 'Democratic Republic of the Congo': 'CD', + 'Eswatini': 'SZ', + 'Iran': 'IR', + 'Kosovo': 'XK', + 'Moldova': 'MD', + 'North Macedonia': 'MK', + 'Republic of the Congo': 'CD', + 'Russia': 'RU', + 'Saint Martin': 'SX', + 'Sint Maarten': 'SX', + 'South Korea': 'KR', + 'USA': 'US', + 'Venezuela': 'VE', + 'Vietnam': 'VN', +} diff --git a/web/src/components/Common/USStateCode.tsx b/web/src/components/Common/GeoIconUsState.tsx similarity index 74% rename from web/src/components/Common/USStateCode.tsx rename to web/src/components/Common/GeoIconUsState.tsx index 7470ebbf38..95369b60ad 100644 --- a/web/src/components/Common/USStateCode.tsx +++ b/web/src/components/Common/GeoIconUsState.tsx @@ -1,7 +1,20 @@ -import React, { SVGProps } from 'react' +import { get } from 'lodash' +import React, { useMemo } from 'react' import styled from 'styled-components' +import { GeoIconWrapper } from 'src/components/Common/GeoIconCommon' -import { FlagWrapper } from './FlagWrapper' +export function GeoIconUsState({ state }: { state: string }) { + const Icon = useMemo(() => { + const stateCode = get(STATE_NAME_TO_CODE, state, '??') + return ( + + {stateCode[0]} + {stateCode[1]} + + ) + }, [state]) + return {Icon} +} const FlagText = styled.span` background: #fff; @@ -10,15 +23,17 @@ const FlagText = styled.span` letter-spacing: 0.05em; text-align: center; font-family: ${(props) => props.theme.font.monospace}; + & > :first-child { color: #d80027; } + & > :last-child { color: #2e52b2; } ` -export const nameToCode: Record = { +export const STATE_NAME_TO_CODE: Record = { 'Alabama': 'AL', 'Alaska': 'AK', 'Arizona': 'AZ', @@ -76,24 +91,3 @@ export const nameToCode: Record = { 'Wisconsin': 'WI', 'Wyoming': 'WY', } - -export interface USStateCodeProps extends SVGProps { - country: string - state?: string - withFallback?: boolean -} - -export function USStateCode({ country, state = country, withFallback = false }: USStateCodeProps) { - const stateCode = nameToCode[state] - const fallback = withFallback ? : null - return stateCode ? ( - - - {stateCode[0]} - {stateCode[1]} - - - ) : ( - fallback - ) -} diff --git a/web/src/components/Common/GifPlayer.tsx b/web/src/components/Common/GifPlayer.tsx deleted file mode 100644 index 5bc482a1c8..0000000000 --- a/web/src/components/Common/GifPlayer.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import dynamic from 'next/dynamic' - -const GifPlayer = dynamic(() => import('react-gif-player'), { ssr: false }) - -export default GifPlayer diff --git a/web/src/components/Common/LastUpdated.tsx b/web/src/components/Common/LastUpdated.tsx deleted file mode 100644 index a7a12292ce..0000000000 --- a/web/src/components/Common/LastUpdated.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React, { HTMLProps } from 'react' -import styled from 'styled-components' -import classNames from 'classnames' - -import { getLastUpdatedDate, getLastUpdatedFull } from 'src/io/getLastUpdatedDate' - -const LAST_UPDATED_DATE = `Last updated: ${getLastUpdatedDate()}` -const LAST_UPDATED_FULL = `Last updated on: ${getLastUpdatedFull()}` - -const LastUpdatedText = styled.small` - font-size: 0.9rem; -` - -export function LastUpdated({ className }: HTMLProps) { - return ( - - - {LAST_UPDATED_DATE} - - - ) -} diff --git a/web/src/components/Common/LinkOpenInNewTab.tsx b/web/src/components/Common/LinkOpenInNewTab.tsx deleted file mode 100644 index a61a9e3006..0000000000 --- a/web/src/components/Common/LinkOpenInNewTab.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React, { PropsWithChildren } from 'react' - -import styled from 'styled-components' -import { GoLinkExternal } from 'react-icons/go' - -import { LinkExternal } from 'src/components/Link/LinkExternal' - -const ProposeChangesLink = styled(LinkExternal)` - color: ${(props) => props.theme.gray500}; - text-decoration: none; - - &:hover { - color: ${(props) => props.theme.gray500}; - text-decoration: none; - } -` - -const ProposeChangesIcon = styled.span` - margin-right: 0.25rem; - color: ${(props) => props.theme.gray500}; -` - -const ProposeChangesText = styled.span` - font-size: 0.85rem; -` - -export interface LinkOpenInNewTabProps { - href: string - text?: string -} - -export function LinkOpenInNewTab({ href, text, children, ...restProps }: PropsWithChildren) { - return ( - - - - - {text ?? 'Propose changes to this section'} - - ) -} diff --git a/web/src/components/Common/MdxWrapper.tsx b/web/src/components/Common/MdxWrapper.tsx deleted file mode 100644 index 5abca6f037..0000000000 --- a/web/src/components/Common/MdxWrapper.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react' - -import styled from 'styled-components' - -export const MdxSection = styled.section` - margin: 10px 5px; - padding: 0.65rem 2rem; - background-color: ${(props) => props.theme.gray100}; - box-shadow: ${(props) => props.theme.shadows.slight}; - border-radius: 3px; -` - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function MdxWrapper(props: any) { - return -} diff --git a/web/src/components/Common/MutationBadge.tsx b/web/src/components/Common/MutationBadge.tsx index 8edc3fb8e5..f95edef6af 100644 --- a/web/src/components/Common/MutationBadge.tsx +++ b/web/src/components/Common/MutationBadge.tsx @@ -1,24 +1,18 @@ -/* eslint-disable camelcase */ import React, { useMemo } from 'react' - import { get } from 'lodash' import { parseVariant } from 'src/components/Common/parseVariant' import styled from 'styled-components' - import type { Mutation, MutationColors } from 'src/types' import { theme } from 'src/theme' import { AMINOACID_COLORS, CLADE_COLORS, GENE_COLORS, NUCLEOTIDE_COLORS } from 'src/colors' -import { getClusterNames, getClusters } from 'src/io/getClusters' -import { LinkSmart } from 'src/components/Link/LinkSmart' +import { LinkSmart, LinkSmartProps } from 'src/components/Link/LinkSmart' import { parseAminoacidMutation } from 'src/components/Common/parseAminoacidMutation' import { parseNucleotideMutation } from 'src/components/Common/parseNucleotideMutation' import { formatMutation } from 'src/components/Common/formatMutation' import { AMINOACID_NAMES, GENE_NAMES, GREEK_ALPHABET, NUCELOTIDE_NAMES } from 'src/names' import { colorHash } from 'src/helpers/colorHash' import { rainbow } from 'src/helpers/colorRainbow' - -const clusters = getClusters() -const clusterNames = getClusterNames() +import { useClusterNames, useClusterUrl } from 'src/io/getClusters' const DEFAULT_COLOR = theme.gray700 const DEFAULT_TEXT_COLOR = theme.gray100 @@ -64,10 +58,6 @@ export const WhoText = styled.span<{ $color: string }>` background-color: ${(props) => props.$color}; ` -export const ColoredComponent = styled.span<{ $color: string }>` - background-color: ${(props) => props.$color}; -` - export const ParentText = styled.span<{ $backgroundColor: string; $color: string }>` padding-top: 1px; padding-bottom: 1px; @@ -115,23 +105,6 @@ export function aminoacidMutationFromStringMaybe(mutation: Mutation | string): M return mutation } -export function formatMutationMaybe(mutation: Mutation | string) { - if (typeof mutation === 'string') { - return mutation - } - return formatMutation(mutation) -} - -export function formatVariantUrl(mutation: string) { - const cluster = clusters.find(({ display_name }) => display_name === mutation) - if (!cluster) { - console.warn(`Variant not recognized: ${mutation}. Known variants: ${clusterNames.join(', ')}`) - return undefined - } - - return `/variants/${cluster.build_name}` -} - export interface MutationBadgeProps { prefix?: string mutation: Mutation @@ -259,15 +232,16 @@ export function variantToObjectAndString(mutation: Mutation | string) { return { mutationObj, mutationStr } } -export interface VariantLinkBadgeProps { +export interface VariantLinkBadgeProps extends LinkSmartProps { name: Mutation | string - href?: string prefix?: string } -export function VariantLinkBadge({ name, href, prefix }: VariantLinkBadgeProps) { +export function VariantLinkBadge({ name, href, prefix, ...restProps }: VariantLinkBadgeProps) { + const clusterNames = useClusterNames() const { mutationObj, mutationStr } = useMemo(() => variantToObjectAndString(name), [name]) - const url = useMemo(() => href ?? formatVariantUrl(mutationStr), [href, mutationStr]) + const clusterUrl = useClusterUrl(mutationStr) + const url = useMemo(() => href?.toString() ?? clusterUrl, [clusterUrl, href]) if (!mutationObj) { return {`VariantLinkBadge: Invalid mutation: ${JSON.stringify(name)}`} @@ -279,14 +253,14 @@ export function VariantLinkBadge({ name, href, prefix }: VariantLinkBadgeProps) { // prettier-ignore `VariantLinkBadge: Variant not recognized: ${JSON.stringify(name)}.` + - `Known variants: ${clusterNames.join(', ')}` + `Known variants: ${clusterNames.join(", ")}` } ) } return ( - + ) @@ -302,7 +276,7 @@ export interface LineageLinkBadgeProps { export function LineageLinkBadge({ name, href, prefix, report }: LineageLinkBadgeProps) { const url = useMemo( // prettier-ignore - () => (href ?? (report ? `https://cov-lineages.org/global_report_${name}.html` : '')), + () => (href ?? (report ? `https://cov-lineages.org/global_report_${name}.html` : "")), [href, report, name], ) const tooltip = useMemo(() => `Pango Lineage ${name}`, [name]) diff --git a/web/src/components/Common/NameTable.tsx b/web/src/components/Common/NameTable.tsx deleted file mode 100644 index cea8a9c73a..0000000000 --- a/web/src/components/Common/NameTable.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import React, { ReactNode, useMemo } from 'react' - -import { Table as TableBase, Thead, Tbody, Tr, Th, Td } from 'react-super-responsive-table' -import styled from 'styled-components' - -import { LinkExternal } from 'src/components/Link/LinkExternal' -import type { NameTableDatum, NameTableEntry } from 'src/io/getNameTable' -import { NAME_TABLE } from 'src/io/getNameTable' -import { LineageLinkBadge, Var, WhoBadge } from './MutationBadge' - -const Table = styled(TableBase)` - max-width: 800px; - margin-left: auto; - margin-right: auto; - border-collapse: collapse; - - & > thead > tr, - & > tbody > tr, - & > tbody > td { - border: #aaa solid 1px; - border-collapse: collapse; - } - - & > tbody > tr:nth-child(even) { - background-color: white; - } - - & > tbody > tr:nth-child(odd) { - background-color: #f5f5f5; - } - - & > thead > tr > th { - font-size: 0.9rem; - text-align: center; - height: 3rem; - border: #aaa solid 1px; - } - - & > tbody > tr > td { - font-family: ${(props) => props.theme.font.monospace}; - font-size: 0.8rem; - text-align: left; - border: #aaa solid 1px; - min-width: 100px; - padding: 2px; - } -` - -export function joinWithCommas(elems: ReactNode[]): ReactNode { - if (elems.length === 0) { - return ' ' - } - - return elems.reduce((prev, curr) => [prev, ', ', curr]) -} - -export interface NameTableEntryProps { - entry: NameTableEntry -} - -export function NameTableEntryComponent({ entry }: NameTableEntryProps) { - const { name, url } = entry - - if (!url) { - return {name} - } - - return {name} -} - -export interface NameTableRowProps { - datum: NameTableDatum -} - -export function NameTableRow({ datum }: NameTableRowProps) { - const { clade, lineages, who, others } = datum - - const lineageEntries = useMemo( - () => - joinWithCommas( - lineages.map((entry) => ( - - )), - ), - [lineages], - ) - - const otherEntries = useMemo( - () => joinWithCommas(others.map((entry) => )), - [others], - ) - - return ( - - - - - {lineageEntries} - {who && } - {otherEntries} - - ) -} - -export function NameTable() { - return ( - - - - - - - - - - - {NAME_TABLE.map((datum) => ( - - ))} - -
{'Nextstrain Clade'}{'Pango Lineage'} - - {'WHO Label'} - - {'Other'}
- ) -} diff --git a/web/src/components/Common/NextstrainLogo.tsx b/web/src/components/Common/NextstrainLogo.tsx deleted file mode 100644 index 0e93e0be00..0000000000 --- a/web/src/components/Common/NextstrainLogo.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react' - -import styled from 'styled-components' - -import NextstrainIconBase from 'src/assets/images/nextstrain_logo.svg' - -// Borrowed with modifications from Nextstrain.org -// https://github.com/nextstrain/nextstrain.org/blob/master/static-site/src/components/splash/title.jsx - -const TITLE_COLORS = [ - '#4377CD', - '#5097BA', - '#63AC9A', - '#7CB879', - '#9ABE5C', - '#B9BC4A', - '#D4B13F', - '#E49938', - '#E67030', - '#DE3C26', -] - -const Wrapper = styled.div` - display: flex; - height: 30px; -` - -const NextstrainIcon = styled(NextstrainIconBase)` - width: 28px; - height: 28px; - margin-right: 5px; -` - -const LetterSpan = styled.span<{ pos: number }>` - font-size: 20px; - color: ${(props) => TITLE_COLORS[props.pos]}; -` - -export function NextstrainLogo() { - return ( - - - - {'Nextstrain'.split('').map((letter, i) => ( - // eslint-disable-next-line react/no-array-index-key - - {letter} - - ))} - - - ) -} diff --git a/web/src/components/Common/PageHeading.tsx b/web/src/components/Common/PageHeading.tsx deleted file mode 100644 index ceea17ae8d..0000000000 --- a/web/src/components/Common/PageHeading.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import styled from 'styled-components' - -export const PageHeading = styled.h1` - text-align: center; - - @media (min-width: 768px) { - line-height: 1.2; - font-weight: 300; - margin: 1.5rem 0; - } - - @media (min-width: 1120px) { - font-size: 3rem; - margin-top 0; - } -` diff --git a/web/src/components/Common/PlotCardTitle.tsx b/web/src/components/Common/PlotCardTitle.tsx deleted file mode 100644 index aca64b38f3..0000000000 --- a/web/src/components/Common/PlotCardTitle.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import styled from 'styled-components' - -export const PlotCardTitle = styled.h1` - margin: auto; - font-size: ${(props) => props.theme.plot.titleFontSize}; -` diff --git a/web/src/components/Common/PlotLayout.tsx b/web/src/components/Common/PlotLayout.tsx deleted file mode 100644 index 00eff46326..0000000000 --- a/web/src/components/Common/PlotLayout.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import styled from 'styled-components' - -export const WrapperFlex = styled.section` - display: flex; - flex-wrap: wrap; - margin: -0.5rem; -` - -export const SidebarFlex = styled.aside` - @media only screen and (max-width: 768px) { - flex: 1 0 100%; - } - - @media only screen and (min-width: 768px) { - flex: 0 0 320px; - } -` - -export const MainFlex = styled.section` - flex: 1 0 350px; - margin-bottom: 300px; -` - -export const ChartContainerOuter = styled.div` - display: flex; - justify-content: space-evenly; - width: 100%; -` - -export const ChartContainerInner = styled.div` - flex: 0 1 100%; - width: 0; -` diff --git a/web/src/components/Common/PlotPlaceholder.tsx b/web/src/components/Common/PlotPlaceholder.tsx deleted file mode 100644 index 2531ce8acf..0000000000 --- a/web/src/components/Common/PlotPlaceholder.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' - -import styled from 'styled-components' -import { ThreeDots as ThreeDotsLoader } from 'react-loader-spinner' -import { ResponsiveContainer } from 'recharts' - -import { theme } from 'src/theme' -import { ChartContainerOuter, ChartContainerInner } from './PlotLayout' - -const LoadingSpinner = styled(ThreeDotsLoader)` - display: flex; - - svg { - margin: auto; - } -` - -export function PlotPlaceholder() { - return ( - - - - - - - - ) -} diff --git a/web/src/components/Common/PoweredBy.tsx b/web/src/components/Common/PoweredBy.tsx deleted file mode 100644 index 5d7e6b5436..0000000000 --- a/web/src/components/Common/PoweredBy.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import React from 'react' - -import { Col, Row } from 'reactstrap' -import { LinkExternal } from 'src/components/Link/LinkExternal' -import styled from 'styled-components' - -import { PROJECT_NAME, TEAM_NAME } from 'src/constants' -import VercelLogo from 'src/assets/images/vercel_logo.svg' -import NextJsLogo from 'src/assets/images/nextjs_logo.svg' -import { NextstrainLogo } from './NextstrainLogo' - -const Flex = styled.section` - max-width: 700px; - //width: 100%; -` - -const PoweredByH1 = styled.h1` - font-size: 1.33rem; - margin: 10px auto; -` - -const Ul = styled.ul` - list-style: none; - padding: 0; - - display: flex; - flex-direction: row; - flex-wrap: wrap; - width: 100%; -` - -const Li = styled.li` - flex: 1 0 150px; - display: flex; - width: 200px; - height: 50px; -` - -const Wrapper = styled.div` - margin: auto; -` - -const mainLinks = [ - { - title: 'Nextstrain', - url: `https://nextstrain.org?utm_source=${PROJECT_NAME}`, - alt: 'Link to Nextstrain.org with colorful Nextstrain logo', - icon: , - }, - { - title: 'Next.js', - url: `https://nextjs.com?utm_source=${TEAM_NAME}&utm_campaign=oss`, - alt: '', - icon: , - }, - { - title: 'Vercel', - url: `https://vercel.com?utm_source=${TEAM_NAME}&utm_campaign=oss`, - alt: '', - icon: , - }, -] - -export function PoweredBy() { - return ( - - - - - {'Powered by'} - - - - - - -
    - {mainLinks.map(({ title, url, alt, icon }) => ( -
  • - - - {icon} - - -
  • - ))} -
-
- -
- -
- ) -} diff --git a/web/src/components/Common/SeoApp.tsx b/web/src/components/Common/SeoApp.tsx deleted file mode 100644 index b71e2bbaf4..0000000000 --- a/web/src/components/Common/SeoApp.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' - -import Head from 'next/head' -import { useRouter } from 'next/router' -import urljoin from 'url-join' -import { get } from 'lodash' - -import { DOMAIN, SOCIAL_IMAGE_HEIGHT, SOCIAL_IMAGE_WIDTH, TWITTER_USERNAME_FRIENDLY } from 'src/constants' -import { SEO_DEFAULT, SEO_OVERRIDES } from 'src/seo/seoMetadata' - -const localeFull = 'en-US' - -export function SeoApp() { - const router = useRouter() - const pathname = router.asPath - const url = urljoin(DOMAIN, pathname) - - // eslint-disable-next-line prefer-const - let { name, description, image } = { ...SEO_DEFAULT, ...get(SEO_OVERRIDES, pathname, SEO_DEFAULT) } - - if (image) { - image = urljoin(DOMAIN, image) - } - - return ( - - {name} - - - - - - - - - - - - - - - - - - - - - - - - - - ) -} diff --git a/web/src/components/Common/SharingPanel.tsx b/web/src/components/Common/SharingPanel.tsx deleted file mode 100644 index 29a25c387f..0000000000 --- a/web/src/components/Common/SharingPanel.tsx +++ /dev/null @@ -1,168 +0,0 @@ -import React, { useCallback, useMemo, useState } from 'react' - -import urljoin from 'url-join' -import { useRouter } from 'next/router' -import styled from 'styled-components' -import { Button, Col, Row } from 'reactstrap' -import { CopyToClipboard } from 'react-copy-to-clipboard' -import { FaClipboard as FaClipboardBase, FaClipboardCheck as FaClipboardCheckBase } from 'react-icons/fa' - -import { - EmailIcon, - EmailShareButton, - FacebookIcon, - FacebookShareButton, - LinkedinIcon, - LinkedinShareButton, - TwitterIcon, - TwitterShareButton, - VKIcon, - VKShareButton, - WeiboIcon, - WeiboShareButton, - WhatsappIcon, - WhatsappShareButton, -} from 'react-share' - -import { - DOMAIN, - FACEBOOK_HASHTAG, - PROJECT_DESCRIPTION, - PROJECT_NAME, - TWITTER_HASHTAGS, - TWITTER_RELATED, - TWITTER_USERNAME_RAW, -} from 'src/constants' - -const SOCIAL_ICON_SIZE = 30 - -const FaClipboard = styled(FaClipboardBase)` - width: 18px; - height: 18px; - color: ${(props) => props.theme.gray600}; -` - -const FaClipboardCheck = styled(FaClipboardCheckBase)` - width: 18px; - height: 18px; - color: ${(props) => props.theme.success}; -` - -const CopyToClipBoardButton = styled(Button)` - padding: 0; - margin: 0; -` - -const SharingPanelH1 = styled.h1` - font-size: 1.33rem; - margin: 15px auto; -` - -const SharingPanelWrapper = styled.aside` - margin: 0 auto 15px; -` - -const SharingButton = styled.span` - margin: 3px; - - & > button, - & > button > svg { - width: ${SOCIAL_ICON_SIZE}px; - height: ${SOCIAL_ICON_SIZE}px; - border-radius: ${SOCIAL_ICON_SIZE / 2}px; - } -` - -function CopyToClipBoardComponent({ url }: { url: string }) { - const [isCopied, setIsCopied] = useState(false) - - const handleOnCopy = useCallback(() => setIsCopied(true), []) - - return ( - - - {isCopied ? : } - - - ) -} - -function getEmailBody(url: string) { - return `${PROJECT_NAME}: ${PROJECT_DESCRIPTION}\n${url}\n` -} - -export function SharingPanel() { - const { asPath } = useRouter() - const url = urljoin(DOMAIN, asPath) - const emailBody = useMemo(() => getEmailBody(url), [url]) - - return ( - - - - - {'Share'} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ) -} diff --git a/web/src/components/Common/TableSlim.tsx b/web/src/components/Common/TableSlim.tsx deleted file mode 100644 index 671e0e0c79..0000000000 --- a/web/src/components/Common/TableSlim.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React, { HTMLProps } from 'react' - -import { Table as ReactstrapTable } from 'reactstrap' -import styled from 'styled-components' - -export const TableSlim = styled(ReactstrapTable)` - & td { - padding: 0 0.5rem; - } - - & tr { - margin: 0; - padding: 0; - } - - & th { - margin: 0; - padding: 0 0.5rem; - } -` - -export const TableSlimWithBorders = styled(TableSlim)` - & td { - border: 1px solid #ccc; - } - - & th { - border: 1px solid #ccc; - } -` - -export const TableColumnSpacer = styled.td` - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -` - -export function TableRowSpacer(props: HTMLProps) { - return ( - - - - ) -} diff --git a/web/src/components/Common/TeamCredits.tsx b/web/src/components/Common/TeamCredits.tsx deleted file mode 100644 index b332a41ce7..0000000000 --- a/web/src/components/Common/TeamCredits.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import React from 'react' - -import { Col, Row } from 'reactstrap' -import styled from 'styled-components' -import { FaGithub, FaTwitter } from 'react-icons/fa' - -import { LinkExternal } from 'src/components/Link/LinkExternal' -import { TeamCreditsContributor } from 'src/components/Common/TeamCreditsContributor' -import { getContributors } from 'src/io/getContributors' - -const contributors = getContributors() - -const Flex = styled.section` - display: flex; - flex-direction: column; - width: 300px; - margin: 10px auto; -` - -const TeamCreditsH1 = styled.h1` - font-size: 1.33rem; - margin: 15px auto; -` - -const Ul = styled.ul` - list-style: none; - padding: 0; - - margin-top: 0.5rem; -` - -const Li = styled.li` - display: inline-block; - margin-left: 5px; - margin-right: 5px; -` - -const NameText = styled.h2` - font-size: 1.1rem; -` - -const AffiliationText = styled.small` - font-size: 0.8rem; -` - -const Portrait = styled.img` - margin: 0 auto; - width: 100px; - border-radius: 100px; -` - -const FlexContributors = styled.section` - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: space-evenly; - - width: 100%; - max-width: 1500px; - margin: 10px auto; -` - -const mainLinks = [ - { - title: 'Twitter', - url: `https://twitter.com/firefoxx66`, - alt: 'Link to Twitter, with blue Twitter bird logo', - icon: , - }, - { - title: 'GitHub', - url: 'https://github.com/emmahodcroft', - alt: 'Link to Github page, with grey Github Octocat logo', - icon: , - }, -] - -export function TeamCredits() { - return ( - - - - - {'CoVariants is brought to you by'} - - - - - - - - {'Emma Hodcroft, PhD'} - {'Institute of Social and Preventive Medicine'} - {'University of Bern, Switzerland'} - {'& SIB Swiss Insitute of Bioinformatics, Switzerland'} -
    - {mainLinks.map(({ title, url, alt, icon }) => ( -
  • - - {icon} - -
  • - ))} -
-
- -
- - - - - {contributors.map((contributor) => ( - - ))} - - - - -
- ) -} diff --git a/web/src/components/Common/TeamCreditsContributor.tsx b/web/src/components/Common/TeamCreditsContributor.tsx deleted file mode 100644 index 22500fab6e..0000000000 --- a/web/src/components/Common/TeamCreditsContributor.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react' - -import type { ContributorData } from 'json-loader!src/../../.all-contributorsrc' -import { LinkExternal as LinkExternalBase } from 'src/components/Link/LinkExternal' - -import styled from 'styled-components' - -const FlexOuter = styled.section` - display: flex; - flex: 0 0 150px; - - flex-direction: column; - padding: 15px; -` - -const FlexInner = styled.section` - display: flex; - height: 130px; - - flex-direction: column; - justify-content: flex-start; -` - -const LinkExternal = styled(LinkExternalBase)` - margin: 0 auto; - - text-align: center; - color: ${(props) => props.theme.gray650}; - - &:hover { - color: ${(props) => props.theme.gray650}; - text-decoration: none; - } -` - -const Portrait = styled.img` - margin: auto; - width: 66px; - border-radius: 50px; -` - -const NameText = styled.h2` - margin-top: 10px; - font-size: 0.9rem; - max-width: 130px; -` - -export interface ContributorProps { - contributor: ContributorData -} - -export function TeamCreditsContributor({ contributor }: ContributorProps) { - return ( - - - - - {contributor.name} - - - - ) -} diff --git a/web/src/components/Common/Toggle.tsx b/web/src/components/Common/Toggle.tsx deleted file mode 100644 index 97f7ebfca6..0000000000 --- a/web/src/components/Common/Toggle.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, { useCallback } from 'react' - -import type { StrictOmit } from 'ts-essentials' -import styled from 'styled-components' -import ReactToggle, { ToggleProps as ReactToggleProps } from 'react-toggle' -import 'react-toggle/style.css' - -export const ToggleBase = styled(ReactToggle)` - &.react-toggle-custom { - & > .react-toggle-track { - background-color: #9c3434; - } - - &.react-toggle--checked > .react-toggle-track { - background-color: #459f25; - } - - &:hover { - & > .react-toggle-track { - background-color: #b95353; - } - - &.react-toggle--checked > .react-toggle-track { - background-color: #5db240; - } - } - } -` - -export interface TogglePropsWithoutChildren extends StrictOmit { - identifier: string - onCheckedChanged: (checked: boolean) => void -} - -export type ToggleProps = React.PropsWithChildren - -export function Toggle({ identifier, className, onCheckedChanged, children, ...props }: ToggleProps) { - const onChange = useCallback( - (e: React.ChangeEvent) => { - onCheckedChanged(e.target.checked) - }, - [onCheckedChanged], - ) - - const Result = - - if (children) { - return ( - - ) - } - - return Result -} diff --git a/web/src/components/Common/ToggleTwoLabels.tsx b/web/src/components/Common/ToggleTwoLabels.tsx deleted file mode 100644 index ae459258ea..0000000000 --- a/web/src/components/Common/ToggleTwoLabels.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import React, { ReactNode, useCallback } from 'react' - -import styled from 'styled-components' -import ReactToggle, { ToggleProps as ReactToggleProps } from 'react-toggle' -import 'react-toggle/style.css' -import { StrictOmit } from 'ts-essentials' - -export const Label = styled.label` - flex: 0; - display: flex; - margin: 0 auto; - word-wrap: normal; - text-overflow: clip; - white-space: nowrap; -` - -export const ToggleTwoLabelsBase = styled(ReactToggle)` - &.react-toggle-two-labels-custom { - & > .react-toggle-track { - background-color: #aac; - } - - .react-toggle-thumb { - border-color: #aac; - } - - &.react-toggle--checked > .react-toggle-track { - background-color: #aac; - } - - &.react-toggle--checked .react-toggle-thumb { - border-color: #aac; - } - - &:hover { - & > .react-toggle-track { - background-color: #aac; - } - - &.react-toggle--checked > .react-toggle-track { - background-color: #aac; - } - } - } -` - -export interface ToggleTwoLabelsProps extends StrictOmit { - identifier: string - onCheckedChanged: (checked: boolean) => void - labelLeft?: ReactNode - labelRight?: ReactNode - className?: string -} - -export function ToggleTwoLabels({ - identifier, - onCheckedChanged, - labelLeft, - labelRight, - className, - ...props -}: ToggleTwoLabelsProps) { - const onChange = useCallback( - (e: React.ChangeEvent) => { - onCheckedChanged(e.target.checked) - }, - [onCheckedChanged], - ) - - return ( - - ) -} diff --git a/web/src/components/Common/__tests__/parseAminoacidMutation.test.ts b/web/src/components/Common/__tests__/parseAminoacidMutation.test.ts deleted file mode 100644 index 166bd73a96..0000000000 --- a/web/src/components/Common/__tests__/parseAminoacidMutation.test.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { parseAminoacidMutation } from 'src/components/Common/parseAminoacidMutation' - -describe('parseAminoacidMutation', () => { - it('should parse gene, ref, position, right', () => { - expect(parseAminoacidMutation('Gene1:V123S')).toStrictEqual({ gene: 'Gene1', left: 'V', pos: 123, right: 'S' }) - }) - - it('should parse different gene, ref, position, right', () => { - expect(parseAminoacidMutation('ORF1a:T2153I')).toStrictEqual({ - gene: 'ORF1a', - left: 'T', - pos: 2153, - right: 'I', - }) - }) - - it('should parse position', () => { - expect(parseAminoacidMutation('123')).toStrictEqual({ - gene: undefined, - left: undefined, - pos: 123, - right: undefined, - }) - }) - - it('should parse gene, position, right', () => { - expect(parseAminoacidMutation('S:123V')).toStrictEqual({ - gene: 'S', - left: undefined, - pos: 123, - right: 'V', - }) - }) - - it('should parse position, right', () => { - expect(parseAminoacidMutation('123V')).toStrictEqual({ - gene: undefined, - left: undefined, - pos: 123, - right: 'V', - }) - }) - - it('should parse gene, left, position', () => { - expect(parseAminoacidMutation('S:V123')).toStrictEqual({ - gene: 'S', - left: 'V', - pos: 123, - right: undefined, - }) - }) - - it('should parse left, position', () => { - expect(parseAminoacidMutation('V123')).toStrictEqual({ - gene: undefined, - left: 'V', - pos: 123, - right: undefined, - }) - }) - - it('should reject one letter', () => { - expect(parseAminoacidMutation('V')).toBeUndefined() - }) - - it('should reject multiple letters', () => { - expect(parseAminoacidMutation(':VS')).toBeUndefined() - }) - - it('should reject empty input', () => { - expect(parseAminoacidMutation('')).toBeUndefined() - }) - - it('should reject non-mutation-like input', () => { - expect(parseAminoacidMutation('hello!')).toBeUndefined() - }) - - it('should reject letters in position', () => { - expect(parseAminoacidMutation(':G1X3T')).toBeUndefined() - }) -}) diff --git a/web/src/components/Common/__tests__/parseNucleotideMutation.test.ts b/web/src/components/Common/__tests__/parseNucleotideMutation.test.ts deleted file mode 100644 index f67857c624..0000000000 --- a/web/src/components/Common/__tests__/parseNucleotideMutation.test.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { parseNucleotideMutation } from 'src/components/Common/parseNucleotideMutation' - -describe('parseNucleotideMutation', () => { - it('should parse left, position, right', () => { - expect(parseNucleotideMutation('A123C')).toStrictEqual({ left: 'A', pos: 123, right: 'C' }) - }) - - it('should parse position', () => { - expect(parseNucleotideMutation('123')).toStrictEqual({ left: undefined, pos: 123, right: undefined }) - }) - - it('should parse position, right', () => { - expect(parseNucleotideMutation('123C')).toStrictEqual({ left: undefined, pos: 123, right: 'C' }) - }) - - it('should parse left, position', () => { - expect(parseNucleotideMutation('A123')).toStrictEqual({ left: 'A', pos: 123, right: undefined }) - }) - - it('should parse different left, position, right', () => { - expect(parseNucleotideMutation('T43516N')).toStrictEqual({ left: 'T', pos: 43_516, right: 'N' }) - }) - - it('should parse left "-", position, right', () => { - expect(parseNucleotideMutation('-123C')).toStrictEqual({ left: '-', pos: 123, right: 'C' }) - }) - - it('should parse left, position, right "-"', () => { - expect(parseNucleotideMutation('A123-')).toStrictEqual({ left: 'A', pos: 123, right: '-' }) - }) - - it('should parse left "-", position and right "-"', () => { - expect(parseNucleotideMutation('-123-')).toStrictEqual({ left: '-', pos: 123, right: '-' }) - }) - - it('should reject empty', () => { - expect(parseNucleotideMutation('')).toBeUndefined() - }) - - it('should reject non-mutation-like input', () => { - expect(parseNucleotideMutation('hello!')).toBeUndefined() - }) - - it('should reject when no position', () => { - expect(parseNucleotideMutation('AC')).toBeUndefined() - }) - - it('should reject "-"', () => { - expect(parseNucleotideMutation('-')).toBeUndefined() - }) - - it('should reject one letter', () => { - expect(parseNucleotideMutation('A')).toBeUndefined() - }) - - it('should reject letters in position', () => { - expect(parseNucleotideMutation('G1X3T')).toBeUndefined() - }) -}) diff --git a/web/src/components/Common/__tests__/parseVariant.test.ts b/web/src/components/Common/__tests__/parseVariant.test.ts deleted file mode 100644 index dd2c215436..0000000000 --- a/web/src/components/Common/__tests__/parseVariant.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { parseVariant } from 'src/components/Common/parseVariant' - -describe('parseVariant', () => { - it('should accept "20A.EU2"', async () => { - expect(parseVariant('20A.EU2')).toEqual({ - parent: '20A', - parentDelimiter: undefined, - gene: undefined, - left: undefined, - pos: undefined, - right: undefined, - version: '.EU2', - }) - }) - - it('should accept "20E (EU1)"', async () => { - expect(parseVariant('20E (EU1)')).toEqual({ - parent: '20E', - parentDelimiter: undefined, - gene: undefined, - left: undefined, - pos: undefined, - right: undefined, - version: ' (EU1)', - }) - }) - - it('should accept "20I/501Y.V1"', async () => { - expect(parseVariant('20I/501Y.V1')).toEqual({ - parent: '20I', - parentDelimiter: '/', - gene: undefined, - left: undefined, - pos: 501, - right: 'Y', - version: '.V1', - }) - }) - - it('should accept "20C/S:452R"', async () => { - expect(parseVariant('20C/S:452R')).toEqual({ - parent: '20C', - parentDelimiter: '/', - gene: 'S', - left: undefined, - pos: 452, - right: 'R', - version: undefined, - }) - }) -}) diff --git a/web/src/components/Countries/CountriesPage.tsx b/web/src/components/Countries/CountriesPage.tsx new file mode 100644 index 0000000000..a5bdc83237 --- /dev/null +++ b/web/src/components/Countries/CountriesPage.tsx @@ -0,0 +1,7 @@ +import React from 'react' + +import { GeographyToggles } from 'src/components/Countries/GeographyToggles' + +export function CountriesPage() { + return +} diff --git a/web/src/components/Countries/GeographyToggles.tsx b/web/src/components/Countries/GeographyToggles.tsx new file mode 100644 index 0000000000..81b0ee95df --- /dev/null +++ b/web/src/components/Countries/GeographyToggles.tsx @@ -0,0 +1,156 @@ +import React, { useCallback, useMemo } from 'react' +import dynamic from 'next/dynamic' +import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' +import styled from 'styled-components' +import { Button, Col, Form, FormGroup, Row } from 'reactstrap' +import { useTranslationSafe } from 'src/helpers/useTranslationSafe' +import { Dropdown, DropdownEntry } from 'src/components/Common/Dropdown' +import { CheckboxWithIcon } from 'src/components/Common/CheckboxWithIcon' +import { + continentAtom, + continentNamesAtom, + countryAtom, + countryNamesAtom, + geographyDisableAllAtom, + geographyEnableAllAtom, + regionAtom, + regionsAtom, +} from 'src/state/Geography' + +const GeoIconCountry = dynamic(() => import('src/components/Common/GeoIconCountry').then((m) => m.GeoIconCountry)) +const GeoIconUsState = dynamic(() => import('src/components/Common/GeoIconUsState').then((m) => m.GeoIconUsState)) +const GeoIconContinent = dynamic(() => import('src/components/Common/GeoIconContinent').then((m) => m.GeoIconContinent)) + +const Container = styled.div` + display: flex; +` + +export function GeographyToggles() { + const region = useRecoilValue(regionAtom) + + const continents = useMemo(() => { + if (region !== 'World') { + return null + } + return ( + + + + + + ) + }, [region]) + + const countries = useMemo( + () => ( + + + + + + ), + [], + ) + + return ( + + + + {continents} + {countries} + + ) +} + +export function GeographySelectAll() { + const { t } = useTranslationSafe() + const region = useRecoilValue(regionAtom) + const selectAll = useSetRecoilState(geographyEnableAllAtom(region)) + const deselectAll = useSetRecoilState(geographyDisableAllAtom(region)) + return ( + + + + + + + + + ) +} + +export function CountryCheckboxes() { + const region = useRecoilValue(regionAtom) + const countryNames = useRecoilValue(countryNamesAtom(region)) + const countryCheckboxes = useMemo( + () => countryNames.map((country) => ), + [countryNames], + ) + return
{countryCheckboxes}
+} + +export function CountryCheckbox({ country }: { country: string }) { + const region = useRecoilValue(regionAtom) + const [countryEnabled, setCountryEnabled] = useRecoilState(countryAtom({ region, country })) + const Icon = useMemo(() => { + if (region === 'World') return + if (region === 'United States') return + return null + }, [country, region]) + return +} + +export function ContinentCheckboxes() { + const region = useRecoilValue(regionAtom) + const continentNames = useRecoilValue(continentNamesAtom(region)) + const continentCheckboxes = useMemo(() => { + return continentNames.map((continent) => { + return + }) + }, [continentNames]) + + if (region !== 'World') { + return null + } + return
{continentCheckboxes}
+} + +export function ContinentCheckbox({ continent }: { continent: string }) { + const region = useRecoilValue(regionAtom) + const [continentEnabled, setContinentEnabled] = useRecoilState(continentAtom({ region, continent })) + const Icon = useMemo(() => , [continent]) + return +} + +export function RegionSwitcher() { + const { t } = useTranslationSafe() + const regions = useRecoilValue(regionsAtom) + const [region, setRegion] = useRecoilState(regionAtom) + + const setCurrentEntry = useCallback((entry: DropdownEntry) => setRegion(entry.key), [setRegion]) + + const { entries } = useMemo(() => { + const entries = regions.map((region) => ({ key: region, value: t(region) })) + return { entries } + }, [regions, t]) + + const currentEntry = useMemo(() => { + const currentEntry = entries.find((entry) => entry.key === region) + if (!currentEntry) { + return entries[0] + } + return currentEntry + }, [entries, region]) + + return ( + + + + + + ) +} diff --git a/web/src/components/CountryDistribution/CountryDistributionPage.tsx b/web/src/components/CountryDistribution/CountryDistributionPage.tsx deleted file mode 100644 index 959ba66164..0000000000 --- a/web/src/components/CountryDistribution/CountryDistributionPage.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import React, { useCallback, useMemo } from 'react' -import { Col, Row } from 'reactstrap' -import { useRecoilState } from 'recoil' - -import { CenteredEditable, Editable } from 'src/components/Common/Editable' -import { ColCustom } from 'src/components/Common/ColCustom' -import { SharingPanel } from 'src/components/Common/SharingPanel' -import { RegionSwitcher } from 'src/components/CountryDistribution/RegionSwitcher' -import { DistributionSidebar } from 'src/components/DistributionSidebar/DistributionSidebar' -import { Layout } from 'src/components/Layout/Layout' -import { MainFlex, SidebarFlex, WrapperFlex } from 'src/components/Common/PlotLayout' -import { getRegionPerCountryContent } from 'src/io/getRegionContent' - -import { - filterClusters, - filterCountries, - getPerCountryIntroContentFilename, - getRegions, - getPerCountryData, -} from 'src/io/getPerCountryData' -import { - clustersAtom, - ClustersDataFlavor, - disableAllClusters, - enableAllClusters, - toggleCluster, -} from 'src/state/Clusters' -import { - continentsAtom, - countriesAtom, - disableAllCountries, - enableAllCountries, - regionAtom, - toggleContinent, - toggleCountry, -} from 'src/state/Places' -import { CountryDistributionPlotCard } from './CountryDistributionPlotCard' -import { CountryFlag } from '../Common/CountryFlag' -import { USStateCode } from '../Common/USStateCode' -import { PageHeading } from '../Common/PageHeading' - -const enabledFilters = ['clusters', 'countriesWithIcons'] -const { regionNames, regionsHaveData } = getRegions() - -export function CountryDistributionPage() { - const [region, setRegion] = useRecoilState(regionAtom) - const [countries, setCountries] = useRecoilState(countriesAtom(region)) - const [continents, setContinents] = useRecoilState(continentsAtom(region)) - const [clusters, setClusters] = useRecoilState(clustersAtom({ dataFlavor: ClustersDataFlavor.PerCountry, region })) - const { countryDistributions } = useMemo(() => getPerCountryData(region), [region]) - - const regionsTitle = useMemo(() => (region === 'World' ? 'Countries' : 'Regions'), [region]) - - const iconComponent = useMemo(() => { - if (region === 'World') return CountryFlag - if (region === 'United States') return USStateCode - return undefined - }, [region]) - - const { enabledClusters, withClustersFiltered } = useMemo(() => { - const { withCountriesFiltered } = filterCountries(countries, countryDistributions) - const filteredClusters = filterClusters(clusters, withCountriesFiltered) - const { enabledClusters, withClustersFiltered } = filteredClusters - return { enabledClusters, withClustersFiltered } - }, [countries, countryDistributions, clusters]) - - const countryDistributionComponents = useMemo( - () => - withClustersFiltered.map(({ country, distribution }) => ( - - - - )), - [enabledClusters, withClustersFiltered, iconComponent], - ) - - const handleClusterCheckedChange = useCallback( - (cluster: string) => { - setClusters((oldClusters) => toggleCluster(oldClusters, cluster)) - }, - [setClusters], - ) - - const handleClusterSelectAll = useCallback(() => { - setClusters((oldClusters) => enableAllClusters(oldClusters)) - }, [setClusters]) - - const handleClusterDeselectAll = useCallback(() => { - setClusters((oldClusters) => disableAllClusters(oldClusters)) - }, [setClusters]) - - const handleCountryCheckedChange = useCallback( - (countryName: string) => { - setCountries((oldCountries) => toggleCountry(oldCountries, countryName)) - }, - [setCountries], - ) - - const handleContinentCheckedChange = useCallback( - (continentName: string) => { - setContinents((oldContinents) => toggleContinent(oldContinents, continentName)) - }, - [setContinents], - ) - - const handleCountrySelectAll = useCallback(() => { - setCountries(enableAllCountries) - }, [setCountries]) - - const handleCountryDeselectAll = useCallback(() => { - setCountries(disableAllCountries) - }, [setCountries]) - - const IntroContent = useMemo(() => { - const contentFilename = getPerCountryIntroContentFilename(region) - return getRegionPerCountryContent(contentFilename) - }, [region]) - - return ( - - - - {'Overview of Variants in Countries'} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {countryDistributionComponents} - - - - - - - - - ) -} diff --git a/web/src/components/CountryDistribution/CountryDistributionPlot.tsx b/web/src/components/CountryDistribution/CountryDistributionPlot.tsx deleted file mode 100644 index 7fc2e7d32c..0000000000 --- a/web/src/components/CountryDistribution/CountryDistributionPlot.tsx +++ /dev/null @@ -1,115 +0,0 @@ -/* eslint-disable camelcase */ -import React, { useMemo } from 'react' - -import { AreaChart, Area, XAxis, YAxis, CartesianGrid, Tooltip } from 'recharts' -import { DateTime } from 'luxon' - -import type { CountryDistributionDatum } from 'src/io/getPerCountryData' -import { theme } from 'src/theme' -import { ticks, timeDomain } from 'src/io/getParams' -import { CLUSTER_NAME_OTHERS, getClusterColor } from 'src/io/getClusters' -import { formatDateHumanely, formatProportion } from 'src/helpers/format' -import { adjustTicks } from 'src/helpers/adjustTicks' -import { ChartContainer } from 'src/components/Common/ChartContainer' -import { CountryDistributionPlotTooltip } from './CountryDistributionPlotTooltip' - -const allowEscapeViewBox = { x: false, y: true } - -export interface AreaPlotProps { - width?: number - height?: number - cluster_names: string[] - distribution: CountryDistributionDatum[] -} - -function AreaPlot({ width, height, cluster_names, distribution }: AreaPlotProps) { - const data = useMemo( - () => - distribution.map(({ week, total_sequences, cluster_counts }) => { - const total_cluster_sequences = Object.values(cluster_counts) // prettier-ignore - .reduce((result, count = 0) => result + (count ?? 0), 0) - - const others = total_sequences - total_cluster_sequences - const weekSec = DateTime.fromFormat(week, 'yyyy-MM-dd').toSeconds() - return { week: weekSec, ...cluster_counts, others, total: total_sequences } - }), - [distribution], - ) - - const { adjustedTicks, domainX, domainY } = useMemo(() => { - const adjustedTicks = adjustTicks(ticks, width ?? 0, theme.plot.tickWidthMin).slice(1) // slice ensures first tick is not outside domain - const domainX = [timeDomain[0], timeDomain[1]] - const domainY = [0, 1] - return { adjustedTicks, domainX, domainY } - }, [width]) - - return ( - - - - - {cluster_names.map((cluster) => ( - - ))} - - - - - - - - ) -} - -export interface CountryDistributionPlotProps { - cluster_names: string[] - distribution: CountryDistributionDatum[] -} - -export function CountryDistributionPlot({ cluster_names, distribution }: CountryDistributionPlotProps) { - return ( - - {({ width, height }) => ( - - )} - - ) -} diff --git a/web/src/components/CountryDistribution/CountryDistributionPlotCard.tsx b/web/src/components/CountryDistribution/CountryDistributionPlotCard.tsx deleted file mode 100644 index cf05611917..0000000000 --- a/web/src/components/CountryDistribution/CountryDistributionPlotCard.tsx +++ /dev/null @@ -1,54 +0,0 @@ -/* eslint-disable camelcase */ -import React from 'react' -import { Card, CardBody, CardHeader, Col, Row } from 'reactstrap' -import styled from 'styled-components' - -import type { CountryDistributionDatum } from 'src/io/getPerCountryData' -import { PlotCardTitle } from 'src/components/Common/PlotCardTitle' -import { CountryFlagProps } from 'src/components/Common/CountryFlag' -import { USStateCodeProps } from 'src/components/Common/USStateCode' -import { CountryDistributionPlot } from 'src/components/CountryDistribution/CountryDistributionPlot' - -const FlagAlignment = styled.span` - display: flex; - align-items: center; - > * + * { - margin-left: 0.5em; - } -` -export interface CountryDistributionPlotCardProps { - country: string - distribution: CountryDistributionDatum[] - cluster_names: string[] - Icon?: React.ComponentType -} - -export function CountryDistributionPlotCard({ - country, - distribution, - cluster_names, - Icon, -}: CountryDistributionPlotCardProps) { - return ( - - - - - {Icon && } - {country} - - - - - - - - - - - - - - - ) -} diff --git a/web/src/components/CountryDistribution/CountryDistributionPlotTooltip.tsx b/web/src/components/CountryDistribution/CountryDistributionPlotTooltip.tsx deleted file mode 100644 index 8926975026..0000000000 --- a/web/src/components/CountryDistribution/CountryDistributionPlotTooltip.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import React from 'react' - -import { sortBy, reverse } from 'lodash' -import styled from 'styled-components' -import { Props as DefaultTooltipContentProps } from 'recharts/types/component/DefaultTooltipContent' - -import { formatDateBiweekly, formatInteger, formatProportion } from 'src/helpers/format' -import { getClusterColor } from 'src/io/getClusters' -import { ColoredBox } from '../Common/ColoredBox' - -const EPSILON = 1e-2 - -const Tooltip = styled.div` - display: flex; - flex-direction: column; - - padding: 5px 10px; - background-color: ${(props) => props.theme.gray100}; - box-shadow: ${(props) => props.theme.shadows.slight}; - border-radius: 3px; -` - -const TooltipTitle = styled.h1` - font-size: 1rem; - margin: 5px auto; - font-weight: 600; -` - -const TooltipTable = styled.table` - padding: 30px 35px; - font-size: 0.9rem; - border: none; - min-width: 250px; - - & > tbody > tr:nth-child(odd) { - background-color: ${(props) => props.theme.gray200}; - } -` - -const TooltipTableBody = styled.tbody`` - -export const ClusterNameText = styled.span` - font-family: ${(props) => props.theme.font.monospace}; -` - -export function CountryDistributionPlotTooltip(props: DefaultTooltipContentProps) { - const { payload } = props - if (!payload || payload.length === 0) { - return null - } - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument - const week = formatDateBiweekly(payload[0]?.payload.week) - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument - const total: number = formatInteger(payload[0]?.payload.total ?? 0) - - const payloadSorted = reverse(sortBy(payload, 'value')) - - return ( - - {week} - - - - - {'Variant'} - {'Num seq'} - {'Freq'} - - - - {payloadSorted.map(({ name, value }) => ( - - - - {name} - - {value !== undefined && value > EPSILON ? formatInteger(value) : '-'} - - {value !== undefined && value > EPSILON ? formatProportion(value / total) : '-'} - - - ))} - - - - - {'Total'} - - - {total} - {'1.00'} - - - - - ) -} diff --git a/web/src/components/CountryDistribution/RegionSwitcher.tsx b/web/src/components/CountryDistribution/RegionSwitcher.tsx deleted file mode 100644 index 067562b8f2..0000000000 --- a/web/src/components/CountryDistribution/RegionSwitcher.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React, { useCallback } from 'react' - -import { Button, Col, Row } from 'reactstrap' -import { safeZip } from 'src/helpers/safeZip' -import styled from 'styled-components' - -export const RegionSwitcherContainer = styled.div` - margin: 5px 5px; - padding: 0.65rem 1rem; - border-radius: 3px; -` - -export const RegionSwitcherHeading = styled.h4` - text-align: center; -` - -export const RegionButtonsContainer = styled.span` - display: flex; - flex-wrap: wrap; -` - -export const RegionButtonWrapper = styled.span` - display: flex; - flex-direction: column; - margin: auto; -` - -export const RegionButton = styled(Button)` - flex-wrap: wrap; - flex: 0; - width: 175px; - margin: 5px 5px; -` - -export interface RegionSwitcherProps { - regions: string[] - regionsHaveData: boolean[] - currentRegion: string - setCurrentRegion(region: string): void -} - -export function RegionSwitcher({ regions, regionsHaveData, currentRegion, setCurrentRegion }: RegionSwitcherProps) { - const onRegionButtonClick = useCallback((region: string) => () => setCurrentRegion(region), [setCurrentRegion]) - const getRegionButtonColor = (region: string) => (currentRegion === region ? 'success' : undefined) - - return ( - - - - {'Choose region'} - - - - - - - {safeZip(regions, regionsHaveData).map(([region, regionHaveData]) => ( - - - {region} - - - ))} - - - - - ) -} diff --git a/web/src/components/DistributionSidebar/ClusterFilters.tsx b/web/src/components/DistributionSidebar/ClusterFilters.tsx deleted file mode 100644 index 4801f3bab9..0000000000 --- a/web/src/components/DistributionSidebar/ClusterFilters.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import React, { useCallback } from 'react' - -import { - Button, - CardBody, - Col, - Container, - Form as FormBase, - FormGroup as FormGroupBase, - Input, - Label, - Row, -} from 'reactstrap' - -import type { Cluster } from 'src/state/Clusters' -import { getClusterColor } from 'src/io/getClusters' -import { ColoredBox } from 'src/components/Common/ColoredBox' -import { CardCollapsible } from 'src/components/Common/CardCollapsible' -import styled from 'styled-components' - -export const FormGroup = styled(FormGroupBase)` - flex: 1 0 320px; -` - -export const Form = styled(FormBase)` - display: flex; - flex-wrap: wrap; -` - -export const ClusterNameText = styled.span` - font-family: ${(props) => props.theme.font.monospace}; -` - -export interface ClusterFilterCheckboxProps { - cluster: string - enabled: boolean - onFilterChange(cluster: string): void -} - -export function ClusterFilterCheckbox({ cluster, enabled, onFilterChange }: ClusterFilterCheckboxProps) { - const onChange = useCallback(() => onFilterChange(cluster), [onFilterChange, cluster]) - - return ( - - - - ) -} - -export interface ClusterFiltersProps { - clusters: Cluster[] - collapsed: boolean - onFilterChange(cluster: string): void - onFilterSelectAll(): void - onFilterDeselectAll(): void - setCollapsed(collapsed: boolean): void -} - -export function ClusterFilters({ - clusters, - collapsed, - onFilterSelectAll, - onFilterDeselectAll, - onFilterChange, - setCollapsed, -}: ClusterFiltersProps) { - return ( - - - - - - - - - - - - - - -
- {clusters.map(({ cluster, enabled }) => ( - - ))} - - -
-
-
-
- ) -} diff --git a/web/src/components/DistributionSidebar/CountryFilters.tsx b/web/src/components/DistributionSidebar/CountryFilters.tsx deleted file mode 100644 index a2e38c0fa1..0000000000 --- a/web/src/components/DistributionSidebar/CountryFilters.tsx +++ /dev/null @@ -1,204 +0,0 @@ -import React, { useCallback, useMemo } from 'react' - -import { - Button, - CardBody as CardBodyBase, - Col, - Container, - Form as FormBase, - FormGroup as FormGroupBase, - Input, - Label, - Row, -} from 'reactstrap' -import { Continent, Country } from 'src/state/Places' -import styled, { useTheme } from 'styled-components' - -import type { CountryFlagProps } from 'src/components/Common/CountryFlag' -import { getCountryColor, getCountryStrokeDashArray } from 'src/io/getCountryColor' -import { CardCollapsible } from 'src/components/Common/CardCollapsible' -import { ColoredHorizontalLineIcon } from '../Common/ColoredHorizontalLineIcon' - -export const CardBody = styled(CardBodyBase)`` - -export const FormGroup = styled(FormGroupBase)` - flex: 1 0 320px; -` - -export const Form = styled(FormBase)` - display: flex; - flex-wrap: wrap; -` - -const FlagAlignment = styled.span` - display: inline-flex; - align-items: center; - margin-left: 0.25em; - > * + * { - margin-left: 0.5em; - } -` - -export interface IconOrLineComponentProps { - country: string - Icon?: React.ComponentType -} - -export function IconComponent({ country, Icon }: IconOrLineComponentProps) { - return ( - - {Icon && } - {country} - - ) -} -export function LineComponent({ country }: IconOrLineComponentProps) { - const theme = useTheme() - const { stroke, strokeDasharray } = useMemo(() => { - return { - stroke: getCountryColor(country), - strokeDasharray: getCountryStrokeDashArray(country), - } - }, [country]) - - return ( - <> - - {country} - - ) -} - -export interface CountryFilterCheckboxProps { - country: string - enabled: boolean - withIcons?: boolean - Icon?: React.ComponentType - onFilterChange(country: string): void -} - -export function CountryFilterCheckbox({ - country, - enabled, - withIcons, - Icon, - onFilterChange, -}: CountryFilterCheckboxProps) { - const onChange = useCallback(() => onFilterChange(country), [country, onFilterChange]) - const IconOrLine = useMemo(() => (withIcons ? IconComponent : LineComponent), [withIcons]) - - return ( - - - - ) -} - -export interface CountryFiltersProps { - countries: Country[] - continents: Continent[] - regionsTitle: string - collapsed: boolean - withIcons?: boolean - Icon?: React.ComponentType - onFilterChange(country: string): void - onFilterSelectRegion(regionName: string): void - onFilterSelectAll(): void - onFilterDeselectAll(): void - setCollapsed(collapsed: boolean): void -} - -export function CountryFilters({ - countries, - continents, - regionsTitle, - collapsed, - withIcons, - Icon, - onFilterSelectRegion, - onFilterSelectAll, - onFilterDeselectAll, - onFilterChange, - setCollapsed, -}: CountryFiltersProps) { - const handleContinentChange = useCallback( - (continent: string) => onFilterSelectRegion(continent), - [onFilterSelectRegion], - ) - - const continentCheckboxes = useMemo( - () => - continents.map(({ continent, enabled }) => { - return ( - - ) - }), - [Icon, continents, handleContinentChange], - ) - - const countryCheckboxes = useMemo( - () => - countries.map(({ country, enabled }) => ( - - )), - [Icon, countries, onFilterChange, withIcons], - ) - - return ( - - - - - - - - - - - - - {continents.length > 1 && ( - - -
{continentCheckboxes}
- -
- )} - - - -
{countryCheckboxes}
- -
-
-
-
- ) -} diff --git a/web/src/components/DistributionSidebar/DistributionSidebar.tsx b/web/src/components/DistributionSidebar/DistributionSidebar.tsx deleted file mode 100644 index e34721c547..0000000000 --- a/web/src/components/DistributionSidebar/DistributionSidebar.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { get } from 'lodash' -import React, { useState, useMemo } from 'react' -import { Col, Row } from 'reactstrap' -import { Cluster } from 'src/state/Clusters' - -import type { Continent, Country } from 'src/state/Places' -import { sortClusters } from 'src/io/getClusters' -import { ClusterFilters } from './ClusterFilters' -import { CountryFilters } from './CountryFilters' - -import { CountryFlagProps } from '../Common/CountryFlag' - -export interface DistributionSidebarProps { - countries: Country[] - continents: Continent[] - clusters?: Cluster[] - regionsTitle: string - clustersCollapsedByDefault?: boolean - countriesCollapsedByDefault?: boolean - enabledFilters: string[] - Icon?: React.ComponentType - onClusterFilterChange(cluster: string): void - onClusterFilterSelectAll(): void - onClusterFilterDeselectAll(): void - onCountryFilterChange(country: string): void - onRegionFilterChange(regionName: string): void - onCountryFilterSelectAll(): void - onCountryFilterDeselectAll(): void -} - -export function DistributionSidebar({ - countries, - continents, - clusters, - regionsTitle, - clustersCollapsedByDefault = true, - countriesCollapsedByDefault = true, - enabledFilters, - Icon, - onClusterFilterChange, - onClusterFilterSelectAll, - onClusterFilterDeselectAll, - onRegionFilterChange, - onCountryFilterChange, - onCountryFilterSelectAll, - onCountryFilterDeselectAll, -}: DistributionSidebarProps) { - const [clustersCollapsed, setClustersCollapsed] = useState(clustersCollapsedByDefault) - const [countriesCollapsed, setCountriesCollapsed] = useState(countriesCollapsedByDefault) - const clustersSorted = useMemo(() => sortClusters(clusters ?? []), [clusters]) - - const availableFilters: { [key: string]: React.ReactNode } = useMemo( - () => ({ - countries: ( - - ), - countriesWithIcons: ( - - ), - clusters: clusters && ( - - ), - }), - [ - Icon, - clustersCollapsed, - clusters, - clustersSorted, - countriesCollapsed, - onClusterFilterChange, - onClusterFilterDeselectAll, - onClusterFilterSelectAll, - onCountryFilterChange, - onCountryFilterDeselectAll, - onCountryFilterSelectAll, - onRegionFilterChange, - regionsTitle, - countries, - continents, - ], - ) - - return ( - - {enabledFilters.map((filterName) => get(availableFilters, filterName))} - - ) -} diff --git a/web/src/components/Error/ErrorBoundary.tsx b/web/src/components/Error/ErrorBoundary.tsx new file mode 100644 index 0000000000..b87570041f --- /dev/null +++ b/web/src/components/Error/ErrorBoundary.tsx @@ -0,0 +1,16 @@ +import React, { ReactNode } from 'react' + +import { ErrorBoundary as ErrorBoundaryBase, FallbackProps } from 'react-error-boundary' +import ErrorPage from 'src/pages/_error' + +export function ErrorFallback({ error }: FallbackProps) { + return +} + +export interface ErrorBoundaryProps { + children?: ReactNode +} + +export function ErrorBoundary({ children }: ErrorBoundaryProps) { + return {children} +} diff --git a/web/src/components/Error/ErrorContent.tsx b/web/src/components/Error/ErrorContent.tsx new file mode 100644 index 0000000000..793c6881e9 --- /dev/null +++ b/web/src/components/Error/ErrorContent.tsx @@ -0,0 +1,46 @@ +/* eslint-disable react/destructuring-assignment */ +import React, { useMemo } from 'react' +import { Col, Row } from 'reactstrap' + +import { ErrorGeneric } from 'src/components/Error/error-types/ErrorGeneric' +import { sanitizeError } from 'src/helpers/sanitizeError' +import { ErrorStack } from './ErrorStyles' + +export function ErrorContentMessage({ error }: { error: Error }) { + return +} + +export function ErrorContentStack({ error }: { error: Error }) { + const stackText = error?.stack?.replace(/webpack-internal:\/{3}\.\//g, '')?.replace(/https?:\/\/(.+):\d+\//g, '') + if (!stackText) { + return null + } + + return {stackText} +} + +export function ErrorContent(props: { error?: unknown }) { + const error = useMemo(() => sanitizeError(props.error), [props.error]) + + if (!props.error) { + return null + } + + return ( + + + + + + + + + + + + + + + + ) +} diff --git a/web/src/components/Error/ErrorContentExplanation.tsx b/web/src/components/Error/ErrorContentExplanation.tsx new file mode 100644 index 0000000000..fc3573f21b --- /dev/null +++ b/web/src/components/Error/ErrorContentExplanation.tsx @@ -0,0 +1,20 @@ +import React from 'react' + +import { LinkExternal } from 'src/components/Link/LinkExternal' +import { URL_GITHUB_ISSUES, URL_GITHUB_ISSUES_FRIENDLY } from 'src/constants' + +export function ErrorContentExplanation() { + return ( +
+ {'If you think it is a bug, report it at '} + + {URL_GITHUB_ISSUES_FRIENDLY} + + + { + ' so that developers could investigate this problem. Please provide as much details as possible about your input data, operating system, browser version and computer configuration. Include other details you deem useful for diagnostics. Share the example sequence data that allows to reproduce the problem, if possible.' + } + +
+ ) +} diff --git a/web/src/components/Error/ErrorStyles.tsx b/web/src/components/Error/ErrorStyles.tsx new file mode 100644 index 0000000000..009110cec7 --- /dev/null +++ b/web/src/components/Error/ErrorStyles.tsx @@ -0,0 +1,20 @@ +import styled from 'styled-components' + +export const ErrorContainer = styled.div` + display: flex; + flex-direction: column; + width: 100%; + + & a { + overflow-wrap: anywhere; + } +` + +export const ErrorMessage = styled.p` + overflow-wrap: break-word; + word-break: normal; +` + +export const ErrorStack = styled.pre` + white-space: pre-wrap; +` diff --git a/web/src/components/Error/error-types/ErrorGeneric.tsx b/web/src/components/Error/error-types/ErrorGeneric.tsx new file mode 100644 index 0000000000..79f0151460 --- /dev/null +++ b/web/src/components/Error/error-types/ErrorGeneric.tsx @@ -0,0 +1,21 @@ +import React, { useMemo } from 'react' + +import { ErrorContainer, ErrorMessage } from 'src/components/Error/ErrorStyles' + +export function ErrorGeneric({ error }: { error: Error }) { + const { errorTitle, message } = useMemo(() => { + const { name, message } = error + let errorTitle = `An error has occurred: ${name}` + if (name.toLowerCase().trim() === 'error') { + errorTitle = 'An error has occurred' + } + return { errorTitle, message } + }, [error]) + + return ( + +
{errorTitle}
+ {message} +
+ ) +} diff --git a/web/src/components/Faq/FaqPage.tsx b/web/src/components/Faq/FaqPage.tsx deleted file mode 100644 index 0da4e00f96..0000000000 --- a/web/src/components/Faq/FaqPage.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' - -import { Col, Container, Row } from 'reactstrap' -import { CenteredEditable } from 'src/components/Common/Editable' -import { PageHeading } from 'src/components/Common/PageHeading' -import { Layout } from 'src/components/Layout/Layout' - -import Faq from '../../../../content/Faq.md' - -export function FaqPage() { - return ( - - - - - {'Frequently asked questions'} - - - - - - - - - - - - - ) -} diff --git a/web/src/components/Home/HomePage.tsx b/web/src/components/Home/HomePage.tsx index 1dcd388d7a..f43d82ee89 100644 --- a/web/src/components/Home/HomePage.tsx +++ b/web/src/components/Home/HomePage.tsx @@ -1,34 +1,17 @@ import React from 'react' -import { Col, Row } from 'reactstrap' -import { ClusterButtonPanelLayout } from 'src/components/ClusterButtonPanel/ClusterButtonPanelLayout' - -import { NarrowPageContainer } from 'src/components/Common/ClusterSidebarLayout' -import { Editable } from 'src/components/Common/Editable' -import { Layout } from 'src/components/Layout/Layout' - +import styled from 'styled-components' import HomeContent from '../../../../content/Home.md' +const HomePageWrapper = styled.main` + margin: 0 auto; + max-width: ${(props) => props.theme.containerWidth.md}; +` + export function HomePage() { return ( - - - - -

CoVariants

- -
- - - - - - - - - - -
-
+ + + ) } diff --git a/web/src/components/Layout/Footer.tsx b/web/src/components/Layout/Footer.tsx index 512b89c486..ba3fc48de0 100644 --- a/web/src/components/Layout/Footer.tsx +++ b/web/src/components/Layout/Footer.tsx @@ -1,14 +1,8 @@ import React from 'react' - import { Col, Container, Row } from 'reactstrap' import styled from 'styled-components' - import { PROJECT_NAME, COMPANY_NAME } from 'src/constants' -import { SharingPanel } from 'src/components/Common/SharingPanel' import { LinkExternal } from 'src/components/Link/LinkExternal' -import { TeamCredits } from 'src/components/Common/TeamCredits' -import { PoweredBy } from 'src/components/Common/PoweredBy' - import { getCopyrightYearRange } from 'src/helpers/getCopyrightYearRange' import { getVersionString } from 'src/helpers/getVersionString' @@ -50,24 +44,6 @@ export function FooterContent() { return ( - - - - - - - - - - - - - - - - - - {`${PROJECT_NAME} (c) ${copyrightYearRange} ${COMPANY_NAME}`} diff --git a/web/src/components/Layout/Layout.tsx b/web/src/components/Layout/Layout.tsx index 264c139d89..82707379c8 100644 --- a/web/src/components/Layout/Layout.tsx +++ b/web/src/components/Layout/Layout.tsx @@ -1,66 +1,45 @@ import React, { PropsWithChildren } from 'react' -import { ChangelogButton } from 'src/components/Common/ChangelogButton' - import styled from 'styled-components' -import { Container as ContainerBase, Row, Col } from 'reactstrap' - -import GisaidLogoBase from 'src/assets/images/GISAID_logo.svg' - -import { LinkExternal } from 'src/components/Link/LinkExternal' -import { NavigationBar } from './NavigationBar' -import { FooterContent } from './Footer' -import { LastUpdated } from '../Common/LastUpdated' +import { HEIGHT_NAVBAR, NavigationBar } from 'src/components/Layout/NavigationBar' +// import { FooterContent } from 'src/components/Layout/Footer' +import { ClusterButtonPanel } from 'src/components/ClusterButtonPanel/ClusterButtonPanel' -const Container = styled(ContainerBase)` - min-height: 100%; - width: 100%; +const Header = styled.div` + height: ${HEIGHT_NAVBAR}px; ` -const HeaderRow = styled(Row)` +const Body = styled.div` + position: absolute; + top: ${HEIGHT_NAVBAR}px; + right: 0; + bottom: 0; + left: 0; display: flex; - flex-grow: 1; - flex-shrink: 0; - padding: 0; -` - -const HeaderCol = styled(Col)` - flex-grow: 1; - flex-shrink: 0; - padding: 0; + background-color: ${(props) => props.theme.bodyBg}; ` -const MainContainer = styled(ContainerBase)` - padding-bottom: 100px; -` - -const MainRow = styled(Row)`` - -const MainCol = styled(Col)`` - -const FooterRow = styled(Row)` - position: relative; - margin-top: -100px; /* negative value of footer height */ - height: 100px; - clear: both; - padding-top: 50px; - +const Sidebar = styled.div` + flex: 0 0 240px; display: flex; - flex-grow: 1; - flex-shrink: 0; + flex-direction: column; + background-color: rgba(18, 42, 113, 1); ` -const FooterCol = styled(Col)` - flex-grow: 1; - flex-shrink: 0; - padding: 0; +const Main = styled.div` + flex: 1; + display: flex; + flex-direction: column; ` -const GisaidText = styled.small` - font-size: 0.9rem; +const Content = styled.div` + flex: 1; + display: flex; + overflow: auto; ` -const GisaidLogo = styled(GisaidLogoBase)` - margin-bottom: 4px; +const Box = styled.div` + min-height: min-content; + display: flex; ` export interface LayoutProps { @@ -69,39 +48,31 @@ export interface LayoutProps { export function Layout({ children }: PropsWithChildren) { return ( - - - - - - - - - - - {'Enabled by data from '} - - - - - - - - - - - - - - {children} - - - - - - - - - +
+
+ +
+ + + + + + + + + + +
+ + + {children} + {/* */} + {/* */} + {/* */} + + +
+ +
) } diff --git a/web/src/components/Layout/NavigationBar.tsx b/web/src/components/Layout/NavigationBar.tsx index aac400bcb2..642fbb2d44 100644 --- a/web/src/components/Layout/NavigationBar.tsx +++ b/web/src/components/Layout/NavigationBar.tsx @@ -1,34 +1,29 @@ import { useRouter } from 'next/router' -import React, { useCallback, useState } from 'react' - +import React from 'react' import styled from 'styled-components' -import { - Collapse, - Nav as NavBase, - Navbar as NavbarBase, - NavbarToggler as NavbarTogglerBase, - NavItem as NavItemBase, - NavLink as NavLinkBase, -} from 'reactstrap' -import classNames from 'classnames' +import { Nav as NavBase, Navbar as NavbarBase, NavItem as NavItemBase } from 'reactstrap' import { FaGithub, FaTwitter } from 'react-icons/fa' - -import BrandLogoBase from 'src/assets/images/logo.svg' -import BrandLogoLargeBase from 'src/assets/images/logo_text_right.svg' - import { Link } from 'src/components/Link/Link' import { LinkExternal } from 'src/components/Link/LinkExternal' import { TWITTER_USERNAME_RAW, URL_GITHUB } from 'src/constants' +import { PoweredByGisaid } from 'src/components/Layout/PoweredByGisaid' +import BrandLogoBase from 'src/assets/images/logo.svg' +import BrandLogoLargeBase from 'src/assets/images/logo_text_right.svg' + +export const HEIGHT_NAVBAR = 69 let navLinksLeft: Record = { '/': 'Home', - '/faq': 'FAQ', + '/countries': 'Countries', '/variants': 'Variants', - '/per-country': 'Per country', - '/per-variant': 'Per variant', '/cases': 'Cases', - '/shared-mutations': 'Shared Mutations', - '/acknowledgements': 'Acknowledgements', + '/mutations': 'Mutations', + '/faq': 'FAQ', + '/credits': 'Credits', +} + +if (process.env.NODE_ENV === 'development' || process.env.DOMAIN?.includes('vercel')) { + navLinksLeft = { ...navLinksLeft, '/debug': 'Debug' } } export function matchingUrl(url: string, pathname: string): boolean { @@ -58,18 +53,15 @@ const navLinksRight = [ }, ] -if (process.env.NODE_ENV === 'development' || process.env.DOMAIN?.includes('vercel')) { - navLinksLeft = { ...navLinksLeft, '/debug-badges': 'Debug badges' } -} - export const Navbar = styled(NavbarBase)` - box-shadow: none; + min-height: ${HEIGHT_NAVBAR}px; + box-shadow: 0 2px 10px 2px #222f; + background: rgb(18, 42, 113); + background: linear-gradient(0deg, rgba(18, 42, 113, 1) 0%, rgb(79, 11, 136) 100%); ` export const Nav = styled(NavBase)` - & .nav-link { - padding: 5px; - } + background-color: transparent !important; ` export const NavWrappable = styled(NavBase)` @@ -77,21 +69,13 @@ export const NavWrappable = styled(NavBase)` scrollbar-width: none; -ms-overflow-style: none; + &::-webkit-scrollbar { display: none; } width: 100%; - background-image: linear-gradient(to right, white, white), linear-gradient(to right, white, white), - linear-gradient(to right, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)), - linear-gradient(to left, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)); - background-position: left center, right center, left center, right center; - background-repeat: no-repeat; - background-color: white; - background-size: 20px 100%, 20px 100%, 10px 100%, 10px 100%; - background-attachment: local, local, scroll, scroll; - & .nav-link { padding: 5px; } @@ -100,16 +84,7 @@ export const NavWrappable = styled(NavBase)` export const NavItem = styled(NavItemBase)` padding: 0; - flex-grow: 0; - flex-shrink: 0; - &.active { - background-color: #6bb24e; - border-radius: 5px; - } - - &.active > .nav-link { - color: white !important; } @media (max-width: 991.98px) { @@ -117,68 +92,101 @@ export const NavItem = styled(NavItemBase)` } ` -export const NavLink = styled(NavLinkBase)` +export const NavLink = styled(Link)<{ $active?: boolean }>` margin: 0 auto; + padding: 5px; + color: #ddda !important; + + font-weight: bold; + + ${(props) => + props.$active && + ` + color: #fff !important; + text-decoration: #fffa solid underline 3px; + `} ` -export const LinkRight = styled(LinkExternal)`` +const SIZE_NAV_BUTTON_RIGHT = 40 + +export const NavLinkRight = styled(LinkExternal)` + background-color: #fff; + opacity: 0.8; -export const NavbarToggler = styled(NavbarTogglerBase)` - border: none; + width: ${SIZE_NAV_BUTTON_RIGHT}px; + height: ${SIZE_NAV_BUTTON_RIGHT}px; + border-radius: ${SIZE_NAV_BUTTON_RIGHT}px; + margin: 0 0.25rem; + padding: 7px; + + &:hover { + opacity: 1; + } ` -export const BrandLogo = styled(BrandLogoBase)` +export const BrandLogoSmall = styled(BrandLogoBase)` height: 40px; - margin-left: 10px; - margin-right: 10px; - margin-top: 4px; + margin: auto; ` export const BrandLogoLarge = styled(BrandLogoLargeBase)` height: 40px; - margin: 7px 10px 10px; + margin-left: 10px; + margin-right: 10px; + margin-top: 5px; +` + +const BrandWrapper = styled.div` + margin-right: 2rem; + margin-left: 1rem; +` + +const BrandRowUpper = styled.div`` + +const BrandRowLower = styled.div` + position: relative; + top: -12px; + left: 50px; ` export function NavigationBar() { - const { pathname } = useRouter() - const [isOpen, setIsOpen] = useState(false) - const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen]) + const { asPath } = useRouter() return ( - - - - - - - - - - - {Object.entries(navLinksLeft).map(([url, text]) => { - return ( - - - {text} - - - ) - })} - - - - + ) + })} + + + ) } diff --git a/web/src/components/Layout/NavigationLogo.tsx b/web/src/components/Layout/NavigationLogo.tsx deleted file mode 100644 index 667914083b..0000000000 --- a/web/src/components/Layout/NavigationLogo.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react' - -import { PROJECT_NAME } from 'src/constants' - -export function NavigationLogo() { - return

{PROJECT_NAME}

-} diff --git a/web/src/components/Layout/PoweredByGisaid.tsx b/web/src/components/Layout/PoweredByGisaid.tsx new file mode 100644 index 0000000000..2afd3fc44c --- /dev/null +++ b/web/src/components/Layout/PoweredByGisaid.tsx @@ -0,0 +1,35 @@ +import React, { useMemo } from 'react' +import styled from 'styled-components' +import { useTranslationSafe } from 'src/helpers/useTranslationSafe' +import GisaidLogoBase from 'src/assets/images/GISAID_logo.svg' +import { LinkExternal } from 'src/components/Link/LinkExternal' +import classNames from 'classnames' + +const GisaidText = styled.small` + color: #fffd; + font-size: 0.75rem; +` + +const GisaidLogo = styled(GisaidLogoBase)`` + +export function PoweredByGisaid({ className }: { className?: string }) { + const { t } = useTranslationSafe() + + const { textBefore, textAfter } = useMemo(() => { + const [textBefore, textAfter] = t("Enabled by data from 'GISAID'").split("'GISAID'") + return { + textBefore: textBefore ? {textBefore} : null, + textAfter: textAfter ? {textAfter} : null, + } + }, [t]) + + return ( + + {textBefore} + + + + {textAfter} + + ) +} diff --git a/web/src/components/Link/Link.tsx b/web/src/components/Link/Link.tsx index c9f623aedc..980bdeda22 100644 --- a/web/src/components/Link/Link.tsx +++ b/web/src/components/Link/Link.tsx @@ -6,11 +6,13 @@ export interface LinkProps extends PropsWithChildren - {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} - {children} + + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */} + + {children} + ) } diff --git a/web/src/components/Link/LinkSmart.tsx b/web/src/components/Link/LinkSmart.tsx index ff514b0b7d..1da715e495 100644 --- a/web/src/components/Link/LinkSmart.tsx +++ b/web/src/components/Link/LinkSmart.tsx @@ -6,7 +6,7 @@ import isAbsoluteUrl from 'is-absolute-url' import { Link, LinkProps } from './Link' import { LinkExternal, LinkExternalProps } from './LinkExternal' -export interface LinkSmartProps extends StrictOmit { +export interface LinkSmartProps extends StrictOmit { href?: string } diff --git a/web/src/components/Loading/Loading.tsx b/web/src/components/Loading/Loading.tsx index a59824d311..e95aab600f 100644 --- a/web/src/components/Loading/Loading.tsx +++ b/web/src/components/Loading/Loading.tsx @@ -1,7 +1,8 @@ import React, { useEffect, useState } from 'react' -import LogoNextstrain from 'src/assets/images/logo.svg' +import Logo from 'src/assets/images/logo.svg' import styled from 'styled-components' +import { Oval as OvalLoader, ThreeDots as ThreeDotsLoader } from 'react-loader-spinner' const Container = styled.div` display: flex; @@ -10,7 +11,7 @@ const Container = styled.div` overflow: hidden; ` -const SpinningLogo = styled(LogoNextstrain)` +const SpinningLogo = styled(Logo)` margin: auto; width: 80px; height: 80px; @@ -24,7 +25,7 @@ const SpinningLogo = styled(LogoNextstrain)` const waitBeforeShow = 500 -function Loading() { +export function Loading() { const [isShown, setIsShown] = useState(false) useEffect(() => { @@ -44,4 +45,28 @@ function Loading() { ) } -export default Loading +export const LOADING = + +export function Spinner() { + return ( +
+
+ +
+
+ ) +} + +export const SPINNER = + +export function ThreeDots() { + return ( +
+
+ +
+
+ ) +} + +export const THREE_DOTS = diff --git a/web/src/components/MutationCounts/MutationCountsSummaryCard.tsx b/web/src/components/MutationCounts/MutationCountsSummaryCard.tsx deleted file mode 100644 index 429306026d..0000000000 --- a/web/src/components/MutationCounts/MutationCountsSummaryCard.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import React, { useMemo } from 'react' - -import { useQuery } from 'react-query' -import { Row, Col, CardHeader, Card, CardBody } from 'reactstrap' -import { LinkExternal } from 'src/components/Link/LinkExternal' - -import type { ClusterDatum } from 'src/io/getClusters' -import { getMutationCounts, MutationCountsDatum, MutationCountsGeneRecord } from 'src/io/getMutationCounts' -import { AminoacidMutationBadge } from 'src/components/Common/MutationBadge' -import { TableSlim } from 'src/components/Common/TableSlim' -import styled from 'styled-components' - -const MutationCountsSummaryCardBody = styled(CardBody)` - padding: 1rem; - padding-top: 0.5rem; -` -export const Table = styled(TableSlim)` - max-width: 350px; - margin: auto; - font-family: ${(props) => props.theme.font.monospace}; - font-size: 0.85rem; -` - -export const Caption = styled.caption` - caption-side: top; - text-align: center; - padding: 0; - color: ${(props) => props.theme.gray700}; - font-size: 1.1rem; - font-weight: bold; -` - -export function formatError(error: unknown) { - let message = 'Unable to load data: ' - if (error instanceof Error) { - message += error.message - } - return message -} - -export interface MutationCountsSummaryRowProps { - total: number - counts: MutationCountsDatum -} - -export function MutationCountsSummaryRow({ total, counts }: MutationCountsSummaryRowProps) { - const freq = useMemo(() => ((100 * counts.count) / total).toFixed(2), [counts.count, total]) - return ( - - - - - {counts.count} - {`${freq}%`} - - ) -} - -export interface MutationCountsSummarySubTableProps { - record: MutationCountsGeneRecord - title: string -} - -export function MutationCountsSummarySubTable({ record, title }: MutationCountsSummarySubTableProps) { - return ( - - - - - - - - - - - - - - - - {record.counts.map((counts) => ( - - ))} - -
{title}
{'Mutation'}{'Count'}{'Frequency'}
{'Total'}{record.total}{'100.00%'}
- ) -} - -export function useMutationCounts(clusterBuildName: string) { - return useQuery(['mutationCounts', clusterBuildName], async () => getMutationCounts(clusterBuildName), { - staleTime: Number.POSITIVE_INFINITY, - refetchOnMount: false, - refetchOnWindowFocus: false, - refetchOnReconnect: true, - refetchInterval: Number.POSITIVE_INFINITY, - }) -} - -export interface MutationCountsSummaryProps { - currentCluster: ClusterDatum -} - -export function MutationCountsSummaryCard({ currentCluster }: MutationCountsSummaryProps) { - const { data, isError, error, isLoading } = useMutationCounts(currentCluster.build_name) - - if (!data) { - return null - } - - const { S, others } = data - - return ( - - - {'Non-defining mutation counts (data from '} - - {'CoV-Spectrum'} - - {')'} - - - - - - - - - - - - - - - - - {isLoading &&
{'Loading...'}
} - {isError && ( -
-
{`Mutation counts are not yet available`}
-
{process.env.NODE_ENV === 'development' && formatError(error)}
-
- )} - -
- -
-
-
- ) -} diff --git a/web/src/components/SharedMutations/SharedMutations.tsx b/web/src/components/SharedMutations/SharedMutations.tsx deleted file mode 100644 index b7442fdf32..0000000000 --- a/web/src/components/SharedMutations/SharedMutations.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import React, { useMemo, useState } from 'react' - -import styled from 'styled-components' - -import type { MutationShared } from 'src/io/getMutationComparison' -import { - getMutationComparisonVariants, - getMutationComparisonSharedByPos, - getMutationComparisonSharedByCommonness, - getMutationComparisonIndividual, -} from 'src/io/getMutationComparison' -import { AminoacidMutationBadge } from 'src/components/Common/MutationBadge' -import { ToggleTwoLabels } from 'src/components/Common/ToggleTwoLabels' - -const variants = getMutationComparisonVariants() -const sharedByPos = getMutationComparisonSharedByPos() -const sharedByCommonness = getMutationComparisonSharedByCommonness() -const individual = getMutationComparisonIndividual() - -const Table = styled.table` - margin: 0 auto; -` - -const TableHeader = styled.thead` - border: #7b838a solid 1px; -` - -const TableBody = styled.tbody`` - -const Th = styled.th` - width: 120px; - height: 2.5rem; - border: ${(props) => props.theme.gray500} solid 1px; - color: ${(props) => props.theme.gray100}; - background-color: ${(props) => props.theme.gray650}; -` - -const Td = styled.td` - border: ${(props) => props.theme.gray300} solid 1px; -` - -const TdTitle = styled(Td)` - color: ${(props) => props.theme.gray100}; - background-color: ${(props) => props.theme.gray650}; - height: 2.5rem; -` - -const Tr = styled.tr` - text-align: center; - - &:nth-child(odd) { - background-color: ${(props) => props.theme.gray150}; - } -` - -const AdvancedToggleWrapper = styled.div` - flex: 0 0 100%; - display: flex; - transform: scale(0.8); -` - -export interface VariantProps { - variants: string[] - shared: MutationShared -} - -export function Variant({ variants, shared }: VariantProps) { - return ( - - {shared.presence.map((mutation, i) => ( - {mutation && } - ))} - - ) -} - -export function SharedMutations() { - const [byPos, setByPos] = useState(true) - const shared = useMemo(() => (byPos ? sharedByPos : sharedByCommonness), [byPos]) - - const nCols = variants.length - - return ( - - - - {variants.map((variant) => ( - - ))} - - - - - - - {'Shared mutations'} - - {'Sort by: '} - - - - - - <> - {shared.map((shared) => ( - - ))} - - - - {'Other mutations'} - - - <> - {individual.map(({ index, mutations }) => ( - - {mutations.map((mutation, i) => ( - - ))} - - ))} - - -
{variant}
- {mutation && } -
- ) -} diff --git a/web/src/components/SharedMutations/SharedMutationsPage.tsx b/web/src/components/SharedMutations/SharedMutationsPage.tsx deleted file mode 100644 index a07fdbcf2a..0000000000 --- a/web/src/components/SharedMutations/SharedMutationsPage.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react' - -import { Col, Container, Row } from 'reactstrap' -import styled from 'styled-components' - -import { Editable, CenteredEditable } from 'src/components/Common/Editable' -import { Layout } from 'src/components/Layout/Layout' - -import SharedMutationsIntro from '../../../../content/SharedMutations.md' -import { SharedMutations } from './SharedMutations' -import { PageHeading } from '../Common/PageHeading' - -export const SharedMutationsPageContainer = styled(Container)` - max-width: 1200px; -` - -export const SharedMutationsWrapper = styled.div` - display: block; - flex: 0; - overflow-x: auto; -` - -export const SharedMutationsWrapperInner = styled.div` - flex: 1; -` - -export function SharedMutationsPage() { - return ( - - - - - {'Shared mutations'} - - - - - - - - - - - - - - - - - - - - - - - ) -} diff --git a/web/src/components/Variants/CladeSchema.tsx b/web/src/components/Variants/CladeSchema.tsx deleted file mode 100644 index c10abda7da..0000000000 --- a/web/src/components/Variants/CladeSchema.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react' -import { LinkExternal } from 'src/components/Link/LinkExternal' - -import styled from 'styled-components' - -import CladeSchemaSvg from 'src/assets/images/clades.svg' - -const CladeSchemaFigure = styled.figure` - display: flex; - width: 100%; - max-width: 850px; - flex-direction: column; - margin: 0 auto; -` - -const CladeSchemaPicture = styled.picture` - flex: 0 1 100%; -` - -const CladeSchemaFigcaption = styled.figcaption` - flex: 1 1 100%; -` - -export function CladeSchema() { - return ( - - - - - - - {'Phylogenetic relationships of Nextstrain SARS-CoV-2 clades ('} - {'source'} - {'). Please credit/link to '} - {'Nextstrain'} - {' if using this figure.'} - - - - ) -} diff --git a/web/src/components/Variants/ClusterContentLoading.tsx b/web/src/components/Variants/ClusterContentLoading.tsx deleted file mode 100644 index f50884e98d..0000000000 --- a/web/src/components/Variants/ClusterContentLoading.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react' - -import { Col, Container, Row } from 'reactstrap' - -import { URL_GITHUB } from 'src/constants' -import { LinkExternal } from 'src/components/Link/LinkExternal' - -export type ClusterContentLoadingProps = { - error?: Error | null -} - -export function ClusterContentLoading({ error }: ClusterContentLoadingProps) { - if (!error) { - return null - } - - return ( - - - -

{'Details are not yet available for this variant'}

- -
- - - -

- {'Consider '} - {'contributing on Github'} -

- -
-
- ) -} diff --git a/web/src/components/Variants/DefiningMutations.tsx b/web/src/components/Variants/DefiningMutations.tsx index b621fe9f72..de0227677e 100644 --- a/web/src/components/Variants/DefiningMutations.tsx +++ b/web/src/components/Variants/DefiningMutations.tsx @@ -44,12 +44,12 @@ export function hasDefiningMutations(cluster: ClusterDatum) { // prettier-ignore const hasNonsynonymous = cluster.mutations?.nonsynonymous?.length !== undefined && - cluster.mutations?.nonsynonymous?.length > 0 + cluster.mutations?.nonsynonymous?.length > 0; // prettier-ignore const hasSynonymous = cluster.mutations?.synonymous?.length !== undefined && - cluster.mutations?.synonymous?.length > 0 + cluster.mutations?.synonymous?.length > 0; return hasNonsynonymous || hasSynonymous } diff --git a/web/src/components/Variants/PlotCard.tsx b/web/src/components/Variants/PlotCard.tsx deleted file mode 100644 index 76ee9c2933..0000000000 --- a/web/src/components/Variants/PlotCard.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React, { useMemo } from 'react' -import { getClusterDistribution, getCountryNames } from 'src/io/getPerClusterData' - -import styled from 'styled-components' -import { GoGraph } from 'react-icons/go' -import { Card, CardBody, Col, Row } from 'reactstrap' - -import { theme } from 'src/theme' -import { ClusterDistributionPlot } from 'src/components/ClusterDistribution/ClusterDistributionPlot' -import { ClusterDatum } from 'src/io/getClusters' - -import { Link } from '../Link/Link' - -const PlotCardTitleIcon = styled(GoGraph)` - margin: auto 5px; - width: 20px; - height: 20px; -` - -const PlotCardBody = styled(CardBody)` - padding: 0; -` - -const PlotCardHeading = styled.h1` - display: inline; - margin: auto 0; - font-size: 1.2rem; -` - -export interface PlotCardProps { - cluster: ClusterDatum -} - -export function PlotCardTitle({ cluster }: PlotCardProps) { - return ( - - - {`Distribution of ${cluster.display_name} per country`} - - - {'Compare'} - - - - ) -} - -export function PlotCard({ cluster }: PlotCardProps) { - const title = useMemo(() => , [cluster]) - const clusterDistribution = useMemo( - () => getClusterDistribution(cluster.display_name).distribution, - [cluster.display_name], - ) - const countryNames = useMemo(() => getCountryNames(), []) - - return ( - - {title} - - - - - - - - - ) -} diff --git a/web/src/components/Variants/ProteinCard.tsx b/web/src/components/Variants/ProteinCard.tsx index c5199c9727..7ea7f1ab13 100644 --- a/web/src/components/Variants/ProteinCard.tsx +++ b/web/src/components/Variants/ProteinCard.tsx @@ -1,16 +1,15 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react' - import styled from 'styled-components' import { SiMoleculer } from 'react-icons/si' import { Card, CardBody, CardHeader, Col, Container, Row } from 'reactstrap' - +import dynamic from 'next/dynamic' import { URL_GITHUB } from 'src/constants' import type { ClusterDatum } from 'src/io/getClusters' import { LinkExternal } from 'src/components/Link/LinkExternal' -import GifPlayer from 'src/components/Common/GifPlayer' - import GisaidLogo from 'src/assets/images/GISAID_logo.svg' +const GifPlayer = dynamic(() => import('react-gif-player'), { ssr: false }) + const ProteinCardTitleIcon = styled(SiMoleculer)` margin: auto 5px; width: 20px; diff --git a/web/src/components/Variants/VariantsPage.tsx b/web/src/components/Variants/VariantsPage.tsx index 2a982eab98..802e07e441 100644 --- a/web/src/components/Variants/VariantsPage.tsx +++ b/web/src/components/Variants/VariantsPage.tsx @@ -1,30 +1,17 @@ import React, { useMemo } from 'react' - -import { useRouter } from 'next/router' -import { ClusterButtonPanelLayout } from 'src/components/ClusterButtonPanel/ClusterButtonPanelLayout' -import { MutationCountsSummaryCard } from 'src/components/MutationCounts/MutationCountsSummaryCard' import styled from 'styled-components' import { Col, Row } from 'reactstrap' - +import { useRecoilValue } from 'recoil' import { theme } from 'src/theme' -import type { ClusterDatum } from 'src/io/getClusters' -import { getClusterContent } from 'src/io/getClusterContent' -import { getClusterRedirects, getClusters } from 'src/io/getClusters' import { LinkExternal } from 'src/components/Link/LinkExternal' -import { Layout } from 'src/components/Layout/Layout' -import { Editable } from 'src/components/Common/Editable' -import { NarrowPageContainer } from 'src/components/Common/ClusterSidebarLayout' import { DefiningMutations, hasDefiningMutations } from 'src/components/Variants/DefiningMutations' -import { VariantTitle } from 'src/components/Variants/VariantTitle' - import NextstrainIconBase from 'src/assets/images/nextstrain_logo.svg' - -import { PlotCard } from './PlotCard' -import { AquariaLinksCard } from './AquariaLinksCard' -import { ProteinCard } from './ProteinCard' - -const clusters = getClusters() -const clusterRedirects = getClusterRedirects() +import { AquariaLinksCard } from 'src/components/Variants/AquariaLinksCard' +import { ProteinCard } from 'src/components/Variants/ProteinCard' +import { currentClusterAtom } from 'src/state/Clusters' +import dynamic from 'next/dynamic' +// import { PlotCard } from 'src/components/Variants/PlotCard' +// import { MutationCountsSummaryCard } from 'src/components/MutationCounts/MutationCountsSummaryCard' const FlexContainer = styled.div` display: flex; @@ -46,11 +33,10 @@ const FlexFixed = styled.div` const FlexGrowing = styled.div` display: flex; + flex-direction: column; flex: 1 0; ` -const EditableClusterContent = styled(Editable)`` - const NextstrainIcon = styled(NextstrainIconBase)` display: inline; margin: auto; @@ -58,44 +44,14 @@ const NextstrainIcon = styled(NextstrainIconBase)` height: 25px; ` -export function useCurrentClusterName(clusterName?: string) { - const router = useRouter() - - if (clusterName) { - const clusterNewName = clusterRedirects.get(clusterName) - if (clusterNewName) { - void router.replace(`/variants/${clusterNewName}`) // eslint-disable-line no-void - return clusterNewName - } - } - - return clusterName -} - -export interface VariantsPageProps { - clusterName?: string -} - -export function VariantsPage({ clusterName: clusterNameUnsafe }: VariantsPageProps) { - const clusterName = useCurrentClusterName(clusterNameUnsafe) - const currentCluster = useMemo(() => clusters.find((cluster) => cluster.build_name === clusterName), [clusterName]) +const NEXTSTRAIN_ICON = - return ( - - - - - - {currentCluster && } - - - - ) +function getClusterContent(cluster: string) { + return dynamic(() => import(`../../../../content/clusters/${cluster}.md`), { ssr: false }) } -const NEXTSTRAIN_ICON = - -export function VariantsPageContent({ currentCluster }: { currentCluster: ClusterDatum }) { +export function VariantsPage() { + const currentCluster = useRecoilValue(currentClusterAtom) const ClusterContent = getClusterContent(currentCluster.build_name) const showDefiningMutations = useMemo(() => hasDefiningMutations(currentCluster), [currentCluster]) @@ -114,45 +70,45 @@ export function VariantsPageContent({ currentCluster }: { currentCluster: Cluste return ( - - - - {currentCluster.nextstrain_url ? ( - - {`Dedicated ${currentCluster.display_name} Nextstrain build`} - - ) : ( - {'No dedicated Nextstrain build is available'} - )} - - - - - - - - - - - - - - - - - - - - - - {AquariaSection} - - - - - - - + + + {currentCluster.nextstrain_url ? ( + + {`Dedicated ${currentCluster.display_name} Nextstrain build`} + + ) : ( + {'No dedicated Nextstrain build is available'} + )} + + + + + + + + + + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + + {/* */} + {/* */} + {/* */} + {/* */} + {/* */} + + + {AquariaSection} + + + + + + + {showDefiningMutations && ( diff --git a/web/src/components/Variants/VariantsPageIndex.tsx b/web/src/components/Variants/VariantsPageIndex.tsx deleted file mode 100644 index dc11487fe7..0000000000 --- a/web/src/components/Variants/VariantsPageIndex.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react' - -import { Col, Row } from 'reactstrap' - -import { NarrowPageContainer } from 'src/components/Common/ClusterSidebarLayout' -import { Editable } from 'src/components/Common/Editable' -import { Layout } from 'src/components/Layout/Layout' -import { PageHeading } from 'src/components/Common/PageHeading' - -import VariantsPageIntro from '../../../../content/VariantsPageIntro.md' -import { ClusterButtonPanelLayout } from '../ClusterButtonPanel/ClusterButtonPanelLayout' - -export function VariantsPageIndex() { - return ( - - - - - {'Overview of Variants/Mutations'} - - - - - - - - - - - - - - - ) -} diff --git a/web/src/constants.ts b/web/src/constants.ts index 02f3d76650..ff32d851b5 100644 --- a/web/src/constants.ts +++ b/web/src/constants.ts @@ -13,6 +13,8 @@ export const URL_MANIFEST_JSON = `${DOMAIN}/manifest.json` export const URL_GITHUB = 'https://github.com/hodcroftlab/covariants' as const export const URL_GITHUB_FRIENDLY = 'github.com/hodcroftlab/covariants' as const +export const URL_GITHUB_ISSUES = 'https://github.com/hodcroftlab/covariants/issues' as const +export const URL_GITHUB_ISSUES_FRIENDLY = 'github.com/hodcroftlab/covariants/issues' as const export const TWITTER_USERNAME_RAW = 'firefoxx66' as const export const TWITTER_USERNAME_FRIENDLY = `@${TWITTER_USERNAME_RAW}` diff --git a/web/src/helpers/ErrorInternal.ts b/web/src/helpers/ErrorInternal.ts new file mode 100644 index 0000000000..9a35e58a16 --- /dev/null +++ b/web/src/helpers/ErrorInternal.ts @@ -0,0 +1,9 @@ +import { URL_GITHUB_ISSUES } from 'src/constants' + +export class ErrorInternal extends Error { + public constructor(message: string) { + super( + `Internal Error: ${message}. This is an internal issue, likely due to a programming mistake. Please report it to developers at '${URL_GITHUB_ISSUES}' so that they could fix it.`, + ) + } +} diff --git a/web/src/helpers/urlQuery.ts b/web/src/helpers/urlQuery.ts index 6bbae2ea34..8ad4279c39 100644 --- a/web/src/helpers/urlQuery.ts +++ b/web/src/helpers/urlQuery.ts @@ -9,10 +9,6 @@ export async function setUrlQuery(query: ParsedUrlQuery) { export async function updateUrlQuery(newQuery: ParsedUrlQuery) { const { query: oldQuery } = parseUrl(Router.asPath) - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore: TS2589: Type instantiation is excessively deep and possibly infinite. - const query = merge(oldQuery, newQuery) as ParsedUrlQuery - + const query = merge(oldQuery, newQuery) return setUrlQuery(query) } diff --git a/web/src/helpers/useTranslationSafe.ts b/web/src/helpers/useTranslationSafe.ts new file mode 100644 index 0000000000..c8608eb29d --- /dev/null +++ b/web/src/helpers/useTranslationSafe.ts @@ -0,0 +1,22 @@ +import { useCallback } from 'react' +import { isString } from 'lodash' +import { useTranslation } from 'react-i18next' + +export interface UseTranslationSafeResult { + t: (key: string, options?: Record) => string +} + +export function useTranslationSafe(): UseTranslationSafeResult { + const response = useTranslation() + const t = useCallback( + (key: string, options?: Record): string => { + const res = response.t(key, options) + if (isString(res)) { + return res + } + return key + }, + [response], + ) + return { t } +} diff --git a/web/src/hooks/useAxiosQuery.ts b/web/src/hooks/useAxiosQuery.ts new file mode 100644 index 0000000000..0da82f4a93 --- /dev/null +++ b/web/src/hooks/useAxiosQuery.ts @@ -0,0 +1,44 @@ +import type { QueryKey, UseQueryOptions } from '@tanstack/react-query' +import { useQuery } from '@tanstack/react-query' +import { useMemo } from 'react' + +import { axiosFetch } from 'src/io/axiosFetch' + +const QUERY_OPTIONS_DEFAULT = { + staleTime: Number.POSITIVE_INFINITY, + refetchOnMount: false, + refetchOnWindowFocus: false, + refetchOnReconnect: true, + refetchInterval: Number.POSITIVE_INFINITY, +} + +function queryOptionsDefaulted(options: T) { + let newOptions = QUERY_OPTIONS_DEFAULT + if (options) { + newOptions = { ...newOptions, ...options } + } + return newOptions +} + +export type QueryOptions< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = Omit, 'initialData'> & { + initialData?: () => undefined +} + +export type UseAxiosQueryOptions = QueryOptions + +/** Makes a cached fetch request */ +export function useAxiosQuery(url: string, options?: UseAxiosQueryOptions): TData { + const newOptions = useMemo(() => queryOptionsDefaulted(options), [options]) + const res = useQuery([url], async () => axiosFetch(url), newOptions) + return useMemo(() => { + if (!res.data) { + throw new Error(`Fetch failed: ${url}`) + } + return res.data + }, [res.data, url]) +} diff --git a/web/src/hooks/useReloadPage.ts b/web/src/hooks/useReloadPage.ts new file mode 100644 index 0000000000..fe1e7d0b68 --- /dev/null +++ b/web/src/hooks/useReloadPage.ts @@ -0,0 +1,10 @@ +import { useCallback } from 'react' + +export function useReloadPage(url?: string | URL) { + return useCallback(() => { + window.history.replaceState(null, '', url) + window.location.reload() + // trigger React suspense forever, to display loading spinner until the page is refreshed + throw new Promise(() => {}) // eslint-disable-line @typescript-eslint/no-throw-literal + }, [url]) +} diff --git a/web/src/i18n/detectLocale.ts b/web/src/i18n/detectLocale.ts new file mode 100644 index 0000000000..d0212c3cb5 --- /dev/null +++ b/web/src/i18n/detectLocale.ts @@ -0,0 +1,40 @@ +import { LocaleKey } from './i18n' + +type NavigatorPlus = Navigator & { browserLanguage?: string; userLanguage?: string; systemLanguage?: string } + +export interface DetectLanguageParams { + defaultLanguage: LocaleKey + availableLocales: LocaleKey[] + shorten?: boolean +} + +export function detectLocale({ defaultLanguage, availableLocales, shorten = true }: DetectLanguageParams): LocaleKey { + if (typeof navigator === 'undefined') { + return defaultLanguage + } + + const navigatorLocal = (navigator ?? window.navigator) as NavigatorPlus | undefined + + let language + language = + navigatorLocal?.languages && navigatorLocal.languages.length > 0 + ? navigatorLocal.language[0] ?? navigatorLocal.language + : navigatorLocal?.browserLanguage ?? + navigatorLocal?.userLanguage ?? + navigatorLocal?.systemLanguage ?? + defaultLanguage + + if (!language) { + language = defaultLanguage + } + + if (shorten) { + language = language.slice(0, 2) + } + + if (availableLocales.includes(language as LocaleKey)) { + return language as LocaleKey + } + + return defaultLanguage +} diff --git a/web/src/i18n/i18n.ts b/web/src/i18n/i18n.ts new file mode 100644 index 0000000000..7dfa189e83 --- /dev/null +++ b/web/src/i18n/i18n.ts @@ -0,0 +1,207 @@ +import { ElementType, FC } from 'react' + +import type { StrictOmit } from 'ts-essentials' +import { get, isNil, mapValues } from 'lodash' + +import i18nOriginal, { i18n as I18N, Resource } from 'i18next' +import { initReactI18next } from 'react-i18next' + +import { Settings as LuxonSettings } from 'luxon' +import numbro from 'numbro' +import { languages } from 'countries-list' +import prettyBytesOriginal, { Options as PrettyBytesOptionsOriginal } from 'pretty-bytes' + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore +import numbroLanguages from 'numbro/dist/languages.min' + +import CN from 'flag-icon-css/flags/1x1/cn.svg' +import DE from 'flag-icon-css/flags/1x1/de.svg' +import ES from 'flag-icon-css/flags/1x1/es.svg' +import FR from 'flag-icon-css/flags/1x1/fr.svg' +import GB from 'flag-icon-css/flags/1x1/gb.svg' +import GR from 'flag-icon-css/flags/1x1/gr.svg' +import ID from 'flag-icon-css/flags/1x1/id.svg' +import IL from 'flag-icon-css/flags/1x1/il.svg' +import IN from 'flag-icon-css/flags/1x1/in.svg' +import IR from 'flag-icon-css/flags/1x1/ir.svg' +import IT from 'flag-icon-css/flags/1x1/it.svg' +import JP from 'flag-icon-css/flags/1x1/jp.svg' +import KR from 'flag-icon-css/flags/1x1/kr.svg' +import NL from 'flag-icon-css/flags/1x1/nl.svg' +import PK from 'flag-icon-css/flags/1x1/pk.svg' +import PT from 'flag-icon-css/flags/1x1/pt.svg' +import RU from 'flag-icon-css/flags/1x1/ru.svg' +import SA from 'flag-icon-css/flags/1x1/sa.svg' +import TH from 'flag-icon-css/flags/1x1/th.svg' +import TR from 'flag-icon-css/flags/1x1/tr.svg' +import VN from 'flag-icon-css/flags/1x1/vn.svg' + +import ar from './resources/ar/common.json' +import de from './resources/de/common.json' +import el from './resources/el/common.json' +import en from './resources/en/common.json' +import es from './resources/es/common.json' +import fa from './resources/fa/common.json' +import fr from './resources/fr/common.json' +import he from './resources/he/common.json' +import hi from './resources/hi/common.json' +import id from './resources/id/common.json' +import it from './resources/it/common.json' +import ja from './resources/ja/common.json' +import ko from './resources/ko/common.json' +import nl from './resources/nl/common.json' +import pt from './resources/pt/common.json' +import ru from './resources/ru/common.json' +import ta from './resources/ta/common.json' +import th from './resources/th/common.json' +import tr from './resources/tr/common.json' +import ur from './resources/ur/common.json' +import vi from './resources/vi/common.json' +import zh from './resources/zh/common.json' + +export const localized = { number: '{{value, localizedNumber}}' } as const +export const translations = { + ar, + de, + el, + en, + es, + fa, + fr, + he, + hi, + id, + it, + ja, + ko, + nl, + pt, + ru, + ta, + th, + tr, + ur, + vi, + zh, +} +export const flags = new Map() + +export type LocaleKey = keyof typeof translations + +export const DEFAULT_LOCALE_KEY: LocaleKey = 'en' +export const resources: Record = mapValues(translations, (value) => ({ translation: value })) + +export interface Locale { + readonly key: LocaleKey + readonly full: string + readonly name: string + readonly native: string + readonly Flag: ElementType +} + +export const locales: Record = { + en: { key: 'en', full: 'en-US', name: languages.en.name, native: languages.en.native, Flag: GB as FC }, + ar: { key: 'ar', full: 'ar-SA', name: languages.ar.name, native: languages.ar.native, Flag: SA as FC }, + de: { key: 'de', full: 'de-DE', name: languages.de.name, native: languages.de.native, Flag: DE as FC }, + el: { key: 'el', full: 'el-GR', name: languages.el.name, native: languages.el.native, Flag: GR as FC }, + es: { key: 'es', full: 'es-ES', name: languages.es.name, native: languages.es.native, Flag: ES as FC }, + fa: { key: 'fa', full: 'fa-IR', name: languages.fa.name, native: languages.fa.native, Flag: IR as FC }, + fr: { key: 'fr', full: 'fr-FR', name: languages.fr.name, native: languages.fr.native, Flag: FR as FC }, + he: { key: 'he', full: 'he-IL', name: languages.he.name, native: languages.he.native, Flag: IL as FC }, + hi: { key: 'hi', full: 'hi-IN', name: languages.hi.name, native: languages.hi.native, Flag: IN as FC }, + id: { key: 'id', full: 'id-ID', name: languages.id.name, native: languages.id.native, Flag: ID as FC }, + it: { key: 'it', full: 'it-IT', name: languages.it.name, native: languages.it.native, Flag: IT as FC }, + ja: { key: 'ja', full: 'ja-JP', name: languages.ja.name, native: languages.ja.native, Flag: JP as FC }, + ko: { key: 'ko', full: 'ko-KR', name: languages.ko.name, native: languages.ko.native, Flag: KR as FC }, + nl: { key: 'nl', full: 'nl-NL', name: languages.nl.name, native: languages.nl.native, Flag: NL as FC }, + pt: { key: 'pt', full: 'pt-PT', name: languages.pt.name, native: languages.pt.native, Flag: PT as FC }, + ru: { key: 'ru', full: 'ru-RU', name: languages.ru.name, native: languages.ru.native, Flag: RU as FC }, + ta: { key: 'ta', full: 'ta-IN', name: languages.ta.name, native: languages.ta.native, Flag: IN as FC }, + th: { key: 'th', full: 'th-TH', name: languages.th.name, native: languages.th.native, Flag: TH as FC }, + tr: { key: 'tr', full: 'tr-TR', name: languages.tr.name, native: languages.tr.native, Flag: TR as FC }, + ur: { key: 'ur', full: 'ur-PK', name: languages.ur.name, native: languages.ur.native, Flag: PK as FC }, + vi: { key: 'vi', full: 'vi-VN', name: languages.vi.name, native: languages.vi.native, Flag: VN as FC }, + zh: { key: 'zh', full: 'zh-CN', name: languages.zh.name, native: languages.zh.native, Flag: CN as FC }, +} as const + +export const localeKeys = Object.keys(locales) + +export const localesArray: Locale[] = Object.values(locales) + +export interface I18NInitParams { + localeKey: LocaleKey +} + +export type PrettyBytesOptions = StrictOmit + +export class PrettyBytes { + private localeKey: string = DEFAULT_LOCALE_KEY as string + + public setLocale(localeKey: string) { + this.localeKey = getLocaleWithKey(localeKey).key + } + + public format(numBytes: number, options?: PrettyBytesOptions) { + return prettyBytesOriginal(numBytes, { binary: true, ...options, locale: this.localeKey }) + } +} + +const prettyBytes = new PrettyBytes() + +export function i18nInit({ localeKey }: I18NInitParams) { + const enUS = numbro.languages()['en-US'] + const allNumbroLanguages = numbroLanguages as numbro.NumbroLanguage[] + Object.values(allNumbroLanguages).forEach((languageRaw) => { + // If a language object lacks some of the features, substitute these features from English + numbro.registerLanguage({ ...enUS, ...languageRaw }) + }) + + const i18n = i18nOriginal.use(initReactI18next).createInstance({ + resources, + lng: localeKey, + fallbackLng: DEFAULT_LOCALE_KEY, + debug: process.env.DEV_ENABLE_I18N_DEBUG === '1', + keySeparator: false, // Disable dots as key separators as we use dots in keys + nsSeparator: false, + interpolation: { escapeValue: false }, + initImmediate: true, + }) + + // eslint-disable-next-line no-void + void i18n.init() + + const locale = locales[localeKey] + LuxonSettings.defaultLocale = localeKey + numbro.setLanguage(locale.full) + + return i18n +} + +export function getLocaleWithKey(key: string) { + const locale = get(locales, key) as Locale + if (isNil(locale)) { + return { ...locales[DEFAULT_LOCALE_KEY], key: DEFAULT_LOCALE_KEY } + } + return locale +} + +export async function changeLocale(i18n: I18N, localeKey: string) { + if (localeKeys.includes(localeKey)) { + const locale = getLocaleWithKey(localeKey) + LuxonSettings.defaultLocale = localeKey + numbro.setLanguage(locale.full) + await i18n.changeLanguage(localeKey) + prettyBytes.setLocale(localeKey) + return true + } + return false +} + +const i18n = i18nInit({ localeKey: DEFAULT_LOCALE_KEY }) + +export { prettyBytes } + +export default i18n + +export { default as numbro } from 'numbro' diff --git a/web/src/i18n/resources/ar/common.json b/web/src/i18n/resources/ar/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/ar/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/de/common.json b/web/src/i18n/resources/de/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/de/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/el/common.json b/web/src/i18n/resources/el/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/el/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/en/common.json b/web/src/i18n/resources/en/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/en/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/es/common.json b/web/src/i18n/resources/es/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/es/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/fa/common.json b/web/src/i18n/resources/fa/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/fa/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/fr/common.json b/web/src/i18n/resources/fr/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/fr/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/he/common.json b/web/src/i18n/resources/he/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/he/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/hi/common.json b/web/src/i18n/resources/hi/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/hi/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/id/common.json b/web/src/i18n/resources/id/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/id/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/it/common.json b/web/src/i18n/resources/it/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/it/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/ja/common.json b/web/src/i18n/resources/ja/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/ja/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/ko/common.json b/web/src/i18n/resources/ko/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/ko/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/nl/common.json b/web/src/i18n/resources/nl/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/nl/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/pt/common.json b/web/src/i18n/resources/pt/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/pt/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/ru/common.json b/web/src/i18n/resources/ru/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/ru/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/ta/common.json b/web/src/i18n/resources/ta/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/ta/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/th/common.json b/web/src/i18n/resources/th/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/th/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/tr/common.json b/web/src/i18n/resources/tr/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/tr/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/ur/common.json b/web/src/i18n/resources/ur/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/ur/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/vi/common.json b/web/src/i18n/resources/vi/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/vi/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/i18n/resources/zh/common.json b/web/src/i18n/resources/zh/common.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/src/i18n/resources/zh/common.json @@ -0,0 +1 @@ +{} diff --git a/web/src/io/axiosFetch.ts b/web/src/io/axiosFetch.ts new file mode 100644 index 0000000000..6ff605aff9 --- /dev/null +++ b/web/src/io/axiosFetch.ts @@ -0,0 +1,59 @@ +import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios' +import { isNil } from 'lodash' +import serializeJavascript from 'serialize-javascript' +import { ErrorInternal } from 'src/helpers/ErrorInternal' +import { sanitizeError } from 'src/helpers/sanitizeError' + +export class HttpRequestError extends Error { + public readonly request?: AxiosRequestConfig + public readonly response?: AxiosResponse + + constructor(error_: AxiosError) { + super(error_.message) + this.request = error_.config + this.response = error_.response + } +} + +export async function axiosFetch( + url: string | undefined, + options?: AxiosRequestConfig, +): Promise { + if (isNil(url)) { + throw new ErrorInternal(`Attempted to fetch from an invalid URL: '${serializeJavascript(url)}'`) + } + + let res + try { + res = await axios.get(url, options) + } catch (error) { + throw axios.isAxiosError(error) ? new HttpRequestError(error) : sanitizeError(error) + } + + if (!res?.data) { + throw new Error(`Unable to fetch: request to URL "${serializeJavascript(url)}" resulted in no data`) + } + + return res.data as TData +} + +export async function axiosFetchMaybe(url?: string): Promise { + if (!url) { + return undefined + } + return axiosFetch(url) +} + +/** + * This version skips any transforms (such as JSON parsing) and returns plain string + */ +export async function axiosFetchRaw(url: string | undefined, options?: AxiosRequestConfig): Promise { + return axiosFetch(url, { ...options, transformResponse: [] }) +} + +export async function axiosFetchRawMaybe(url?: string): Promise { + if (!url) { + return undefined + } + return axiosFetchRaw(url) +} diff --git a/web/src/io/getClusterContent.ts b/web/src/io/getClusterContent.ts deleted file mode 100644 index c4c7756811..0000000000 --- a/web/src/io/getClusterContent.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { ComponentType } from 'react' - -export function getClusterContent(cluster: string) { - // eslint-disable-next-line global-require,import/no-dynamic-require,security/detect-non-literal-require,@typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-member-access,unicorn/prefer-module - return require(`../../../content/clusters/${cluster}.md`).default as ComponentType -} diff --git a/web/src/io/getClusters.ts b/web/src/io/getClusters.ts index 052404233d..6f61234207 100644 --- a/web/src/io/getClusters.ts +++ b/web/src/io/getClusters.ts @@ -1,14 +1,7 @@ -/* eslint-disable camelcase */ -import { groupBy, isNil } from 'lodash' -import { notUndefinedOrNull } from 'src/helpers/notUndefined' - +import urljoin from 'url-join' import type { Mutation } from 'src/types' -import type { Cluster } from 'src/state/Clusters' -import { theme } from 'src/theme' - -import clustersJson from 'src/../data/clusters.json' - -export const CLUSTER_NAME_OTHERS = 'others' as const +import { useAxiosQuery } from 'src/hooks/useAxiosQuery' +import { getDataRootUrl } from 'src/io/getDataRootUrl' export interface AquariaDatum { gene: string @@ -33,61 +26,21 @@ export type ClusterDatum = { has_no_page?: boolean } -export function getClusters(): ClusterDatum[] { - return clustersJson.clusters -} - -export function getDefaultCluster(): ClusterDatum { - return getClusters()[0] -} - -export function getClusterNames() { - return getClusters().map((cluster) => cluster.display_name) -} - -export function getClusterRedirects(): Map { - return getClusters().reduce((result, cluster) => { - if (cluster.old_build_names) { - cluster.old_build_names.forEach((oldName) => result.set(oldName, cluster.build_name)) - } - return result - }, new Map()) +export function useClusters() { + const { clusters } = useAxiosQuery<{ clusters: ClusterDatum[] }>(urljoin(getDataRootUrl(), 'clusters.json')) + return clusters.filter((cluster) => !cluster.has_no_page) } -export function getClusterBuildNames() { - return getClusters().map((cluster) => cluster.build_name) +export function useClusterNames() { + const clusters = useClusters() + return clusters.map((cluster) => cluster.display_name) } -export function getClusterOldBuildNames() { - return getClusters() - .flatMap((cluster) => cluster.old_build_names) - .filter(notUndefinedOrNull) -} - -export function getClusterColor(clusterName: string) { - if (clusterName === CLUSTER_NAME_OTHERS) { - return theme.clusters.color.others +export function useClusterUrl(displayName: string) { + const clusters = useClusters() + const cluster = clusters.find(({ display_name }) => display_name === displayName) + if (!cluster) { + return undefined } - - const clusters = getClusters() - const found = clusters.find(({ display_name }) => display_name === clusterName) - return found ? found.col : theme.clusters.color.unknown -} - -export type ClusterDataGrouped = Record - -export function getClustersGrouped(clusters: ClusterDatum[]): ClusterDataGrouped { - const clustersWithType = clusters.filter((cluster) => !isNil(cluster.type)) - return groupBy(clustersWithType, 'type') -} - -export function sortClusters(clusters: Cluster[]): Cluster[] { - const clusterNames = getClusterNames() - return clusterNames.reduce((result, name) => { - const cluster = clusters.find((cluster) => cluster.cluster === name) - if (cluster) { - result.push(cluster) - } - return result - }, [] as Cluster[]) + return `/variants/${cluster.build_name}` } diff --git a/web/src/io/getContributors.ts b/web/src/io/getContributors.ts deleted file mode 100644 index e109603c70..0000000000 --- a/web/src/io/getContributors.ts +++ /dev/null @@ -1,5 +0,0 @@ -import allContributors, { ContributorData } from 'json-loader!src/../../.all-contributorsrc' // eslint-disable-line import/no-extraneous-dependencies - -export function getContributors(): ContributorData[] { - return allContributors.contributors -} diff --git a/web/src/io/getCountryColor.ts b/web/src/io/getCountryColor.ts deleted file mode 100644 index e2ee0e8cd4..0000000000 --- a/web/src/io/getCountryColor.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { get } from 'lodash' - -import countriesToPlot from 'src/../data/countriesToPlot.json' -import countryStyles from 'src/../data/countryStyles.json' - -import { lineStyleToStrokeDashArray } from 'src/helpers/lineStyleToStrokeDashArray' - -export function getCountryStyle(country: string) { - return get, string>(countryStyles, country) ?? { c: '#555555', ls: '-' } -} - -export function getCountryColor(country: string) { - return getCountryStyle(country).c -} - -export function getCountryLineStyle(country: string) { - return getCountryStyle(country).ls -} - -export function getCountryStrokeDashArray(country: string) { - return lineStyleToStrokeDashArray(getCountryLineStyle(country)) -} - -export function shouldPlotCountry(country: string): boolean { - return get(countriesToPlot, country, 'False') === 'True' -} diff --git a/web/src/io/getDataRootUrl.ts b/web/src/io/getDataRootUrl.ts new file mode 100644 index 0000000000..bc46d8f45f --- /dev/null +++ b/web/src/io/getDataRootUrl.ts @@ -0,0 +1,9 @@ +import { ErrorInternal } from 'src/helpers/ErrorInternal' + +export function getDataRootUrl() { + const DATA_ROOT_URL = process.env.DATA_ROOT_URL // eslint-disable-line prefer-destructuring + if (!DATA_ROOT_URL) { + throw new ErrorInternal('The required environment variable DATA_ROOT_URL is not set') + } + return DATA_ROOT_URL +} diff --git a/web/src/io/getLastUpdatedDate.ts b/web/src/io/getLastUpdatedDate.ts deleted file mode 100644 index 4531811afa..0000000000 --- a/web/src/io/getLastUpdatedDate.ts +++ /dev/null @@ -1,15 +0,0 @@ -import updateJson from 'src/../data/update.json' - -import { DateTime } from 'luxon' - -export function getLastUpdatedDate() { - const utc = DateTime.fromISO(updateJson.lastUpdated, { zone: 'UTC' }) - const local = utc.toLocal() - return local.toISODate() -} - -export function getLastUpdatedFull() { - const utc = DateTime.fromISO(updateJson.lastUpdated, { zone: 'UTC' }) - const local = utc.toLocal() - return `${local.toJSDate().toLocaleString()} (${local.zoneName})` -} diff --git a/web/src/io/getMutationComparison.ts b/web/src/io/getMutationComparison.ts deleted file mode 100644 index edf69807c6..0000000000 --- a/web/src/io/getMutationComparison.ts +++ /dev/null @@ -1,27 +0,0 @@ -import mutationComparisonJson from 'src/../data/mutationComparison.json' - -export interface MutationShared { - pos: number - presence: (string | null)[] -} - -export interface MutationIndividualRow { - index: number - mutations: (string | null)[] -} - -export function getMutationComparisonVariants(): string[] { - return mutationComparisonJson.variants -} - -export function getMutationComparisonSharedByPos(): MutationShared[] { - return mutationComparisonJson.shared_by_pos -} - -export function getMutationComparisonSharedByCommonness(): MutationShared[] { - return mutationComparisonJson.shared_by_commonness -} - -export function getMutationComparisonIndividual(): MutationIndividualRow[] { - return mutationComparisonJson.individual -} diff --git a/web/src/io/getMutationCounts.ts b/web/src/io/getMutationCounts.ts deleted file mode 100644 index aca0d00e4a..0000000000 --- a/web/src/io/getMutationCounts.ts +++ /dev/null @@ -1,54 +0,0 @@ -import type { Mutation } from 'src/types' -import { parseAminoacidMutation } from 'src/components/Common/parseAminoacidMutation' -import { mapValues, sortBy } from 'lodash' - -export interface MutationCountsDatum { - mut: Mutation - count: number - key: string -} - -export interface MutationCountsGeneRecord { - total: number - counts: MutationCountsDatum[] -} - -export interface MutationCountsData { - S: MutationCountsGeneRecord - others: MutationCountsGeneRecord -} - -export interface MutationCountsJsonEntry { - mut: string - count: number -} - -export interface MutationCountsJsonGeneRecord { - total: number - counts: MutationCountsJsonEntry[] -} - -export interface MutationCountsJson { - S: MutationCountsJsonGeneRecord - others: MutationCountsJsonGeneRecord -} - -export function parseMutationCounts(data: MutationCountsJsonGeneRecord) { - let counts = data.counts.map((mutationCounts) => { - const mut = parseAminoacidMutation(mutationCounts.mut) - if (!mut) { - throw new Error(`Unable to parse mutation: ${mutationCounts.mut}`) - } - return { ...mutationCounts, mut, key: mutationCounts.mut } - }) - - counts = sortBy(counts, (count) => -count.count) - - return { ...data, counts } -} - -export async function getMutationCounts(clusterBuildName: string): Promise { - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,unicorn/no-await-expression-member - const data = (await import(`../../data/mutationCounts/${clusterBuildName}.json`)).default as MutationCountsJson - return mapValues(data, (datum) => parseMutationCounts(datum)) -} diff --git a/web/src/io/getNameTable.ts b/web/src/io/getNameTable.ts deleted file mode 100644 index c6e4d9a8c9..0000000000 --- a/web/src/io/getNameTable.ts +++ /dev/null @@ -1,19 +0,0 @@ -import nameTableJson from 'src/../data/nameTable.json' - -export interface NameTableEntry { - name: string - url?: string | null -} - -export interface NameTableDatum { - clade: string - who: string | null - lineages: NameTableEntry[] - others: NameTableEntry[] -} - -export function getNameTable(): NameTableDatum[] { - return nameTableJson.nameTable -} - -export const NAME_TABLE = getNameTable() diff --git a/web/src/io/getParams.ts b/web/src/io/getParams.ts deleted file mode 100644 index 5c663dacbb..0000000000 --- a/web/src/io/getParams.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { DateTime, Interval } from 'luxon' -import paramsJson from 'src/../data/params.json' -import { dateStringToSeconds } from 'src/helpers/format' - -export interface GlobalParams { - min_date: string - max_date: string -} - -export function getParams(): GlobalParams { - return paramsJson -} - -export const params = getParams() - -export function getTimeDomain(): [number, number] { - const minDate = dateStringToSeconds(params.min_date) - const maxDate = dateStringToSeconds(params.max_date) - return [minDate, maxDate] -} - -export function getTicks() { - const timeDomain = getTimeDomain() - const start = timeDomain[0] - const end = timeDomain[1] - return Interval.fromDateTimes( - // prettier-ignore - DateTime.fromSeconds(start).startOf('month'), - DateTime.fromSeconds(end).endOf('month'), - ) - .splitBy({ months: 1 }) - .map((d) => d.start.toSeconds()) -} - -export const timeDomain = getTimeDomain() -export const ticks = getTicks() diff --git a/web/src/io/getPerClusterData.ts b/web/src/io/getPerClusterData.ts deleted file mode 100644 index d9b004e086..0000000000 --- a/web/src/io/getPerClusterData.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { pickBy } from 'lodash' - -import type { Country } from 'src/state/Places' -import type { Cluster } from 'src/state/Clusters' -import { getClusters, sortClusters } from 'src/io/getClusters' - -import perClusterData from '../../data/perClusterData.json' - -export interface ClusterDistributionDatum { - week: string - frequencies: { - [country: string]: number | undefined - } - interp: { - [country: string]: boolean | undefined - } - orig: { - [country: string]: boolean | undefined - } -} - -export interface ClusterDistribution { - cluster: string - distribution: ClusterDistributionDatum[] -} - -export interface PerClusterDataRaw { - country_names: string[] - distributions: ClusterDistribution[] -} - -export interface PerClusterData { - clusters: Cluster[] - clusterBuildNames: Map - clusterDistributions: ClusterDistribution[] -} - -export function getPerClusterDataRaw(): PerClusterDataRaw { - return perClusterData as PerClusterDataRaw -} -export function getPerClusterData(): PerClusterData { - const perClusterData = getPerClusterDataRaw() - - const clusterNames = perClusterData.distributions.map(({ cluster }) => cluster).sort() - const clusters = sortClusters(clusterNames.map((cluster) => ({ cluster, enabled: true }))) - - const clusterBuildNames: Map = new Map(getClusters().map((c) => [c.display_name, c.build_name])) - - const clusterDistributions: ClusterDistribution[] = perClusterData.distributions - - return { - clusters, - clusterBuildNames, - clusterDistributions, - } -} - -export function getClusterDistribution(cluster: string): ClusterDistribution { - const perClusterData = getPerClusterDataRaw() - const clusterDistributions: ClusterDistribution[] = perClusterData.distributions - const clusterDistribution = clusterDistributions.find((dist) => dist.cluster === cluster) - if (!clusterDistribution) { - throw new Error(`Cluster distribution not found for cluster '${cluster}'`) - } - return clusterDistribution -} - -export function getCountryNames(): string[] { - const perClusterData = getPerClusterDataRaw() - return perClusterData.country_names -} - -export function filterCountries(countries: Country[], withClustersFiltered: ClusterDistribution[]) { - const enabledCountries = new Set( - countries.filter((country) => country.enabled).map((country) => country.country), - ) - - const withCountriesFiltered = withClustersFiltered.map(({ cluster, distribution }) => { - const distributionFiltered = distribution.map((dist) => { - const frequenciesFiltered = pickBy(dist.frequencies, (_0, country) => { - return enabledCountries.has(country) - }) - - return { ...dist, frequencies: frequenciesFiltered } - }) - return { cluster, distribution: distributionFiltered } - }) - - return { enabledCountries: Array.from(enabledCountries), withCountriesFiltered } -} - -export function filterClusters(clusters: Cluster[], clusterDistributions: ClusterDistribution[]) { - const enabledClusters = clusters.filter(({ enabled }) => enabled).map(({ cluster }) => cluster) - const withClustersFiltered = clusterDistributions.filter(({ cluster }) => { - return enabledClusters.includes(cluster) - }) - return { enabledClusters, withClustersFiltered } -} diff --git a/web/src/io/getPerCountryCasesData.ts b/web/src/io/getPerCountryCasesData.ts deleted file mode 100644 index 30510a80d6..0000000000 --- a/web/src/io/getPerCountryCasesData.ts +++ /dev/null @@ -1,137 +0,0 @@ -/* eslint-disable camelcase */ -import copy from 'fast-copy' -import { pickBy } from 'lodash' - -import type { Cluster } from 'src/state/Clusters' -import type { Country } from 'src/state/Places' -import { sortClusters } from 'src/io/getClusters' - -import perCountryCasesDataJson from 'src/../data/perCountryDataCaseCounts.json' - -export interface PerCountryCasesDatum { - cluster_names: string[] - distributions: PerCountryCasesDistribution[] - max_date: string - min_date: string - region: string - per_country_intro_content: string -} - -export interface PerCountryCasesDataRaw { - regions: PerCountryCasesDatum[] -} - -export interface PerCountryCasesDistributionDatum { - week: string - stand_total_cases: number - stand_estimated_cases: { - [key: string]: number | undefined - } -} - -export interface PerCountryCasesDistribution { - country: string - distribution: PerCountryCasesDistributionDatum[] -} - -export interface ClusterState { - [key: string]: { enabled: boolean } -} - -export interface PerCountryCasesData { - clusterNames: string[] - clusters: Cluster[] - countries: Country[] - perCountryCasesDistributions: PerCountryCasesDistribution[] - perCountryCasesIntroContent: string -} - -export function getPerCountryCasesDataRaw(): PerCountryCasesDataRaw { - return perCountryCasesDataJson as PerCountryCasesDataRaw -} - -export function getPerCountryCasesData(): PerCountryCasesData { - const allData = getPerCountryCasesDataRaw() - - const regionName = 'World' - - const perCountryCasesData: PerCountryCasesDatum | undefined = allData.regions.find( - (candidate) => candidate.region === regionName, - ) - if (!perCountryCasesData) { - throw new Error(`Region data not found for region: ${regionName}`) - } - - const clusterNames = copy(perCountryCasesData.cluster_names).sort() - const clusters = sortClusters(clusterNames.map((cluster) => ({ cluster, enabled: true }))) - - const perCountryCasesDistributions = perCountryCasesData.distributions - - const countries: Country[] = perCountryCasesData.distributions.map((distr) => ({ - country: distr.country, - enabled: true, - })) - - const perCountryCasesIntroContent = perCountryCasesData.per_country_intro_content - - return { - clusterNames, - clusters, - countries, - perCountryCasesDistributions, - perCountryCasesIntroContent, - } -} - -export function getPerCountryCasesIntroContentFilename(region: string): string { - const allData = getPerCountryCasesDataRaw() - const perCountryCasesData: PerCountryCasesDatum | undefined = allData.regions.find( - (candidate) => candidate.region === region, - ) - if (!perCountryCasesData) { - throw new Error(`Region data not found for region: ${region}`) - } - return perCountryCasesData.per_country_intro_content -} - -export function getRegions() { - const allData = getPerCountryCasesDataRaw() - const regionNames = allData.regions.map(({ region }) => region) - const regionsHaveData = allData.regions.map( - ({ cluster_names, distributions }) => cluster_names.length > 0 && distributions.length > 0, - ) - const defaultRegionName = regionNames[0] - - return { - regionNames, - regionsHaveData, - defaultRegionName, - } -} - -export function filterCountries(countries: Country[], perCountryCasesDistributions: PerCountryCasesDistribution[]) { - const enabledCountries = new Set( - countries.filter((country) => country.enabled).map((country) => country.country), - ) - const withCountriesFiltered = perCountryCasesDistributions.filter(({ country }) => { - return enabledCountries.has(country) - }) - return { enabledCountries, withCountriesFiltered } -} - -export function filterClusters(clusters: Cluster[], withCountriesFiltered: PerCountryCasesDistribution[]) { - const enabledClusters = clusters.filter(({ enabled }) => enabled).map(({ cluster }) => cluster) - - const withClustersFiltered = withCountriesFiltered.map(({ country, distribution }) => { - const distributionFiltered = distribution.map((dist) => { - const countsFiltered = pickBy(dist.stand_estimated_cases, (_0, cluster) => { - return enabledClusters.includes(cluster) - }) - - return { ...dist, cluster_counts: countsFiltered } - }) - return { country, distribution: distributionFiltered } - }) - - return { enabledClusters, withClustersFiltered } -} diff --git a/web/src/io/getPerCountryData.ts b/web/src/io/getPerCountryData.ts deleted file mode 100644 index b1da1a40d1..0000000000 --- a/web/src/io/getPerCountryData.ts +++ /dev/null @@ -1,125 +0,0 @@ -/* eslint-disable camelcase */ -import copy from 'fast-copy' -import { pickBy } from 'lodash' - -import type { Cluster } from 'src/state/Clusters' -import type { Country } from 'src/state/Places' - -import perCountryDataJson from 'src/../data/perCountryData.json' - -export interface PerCountryDatum { - cluster_names: string[] - distributions: CountryDistribution[] - max_date: string - min_date: string - region: string - per_country_intro_content: string -} - -export interface PerCountryDataRaw { - regions: PerCountryDatum[] -} - -export interface CountryDistributionDatum { - week: string - total_sequences: number - cluster_counts: { - [key: string]: number | undefined - } -} - -export interface CountryDistribution { - country: string - distribution: CountryDistributionDatum[] -} - -export interface ClusterState { - [key: string]: { enabled: boolean } -} - -export interface PerCountryData { - clusterNames: string[] - clusters: Cluster[] - countryDistributions: CountryDistribution[] - perCountryIntroContent: string -} - -export function getPerCountryDataRaw(): PerCountryDataRaw { - return perCountryDataJson as PerCountryDataRaw -} - -export function getPerCountryData(regionName: string): PerCountryData { - const allData = getPerCountryDataRaw() - - const perCountryData: PerCountryDatum | undefined = allData.regions.find( - (candidate) => candidate.region === regionName, - ) - if (!perCountryData) { - throw new Error(`Region data not found for region: ${regionName}`) - } - - const clusterNames = copy(perCountryData.cluster_names).sort() - const clusters = clusterNames.map((cluster) => ({ cluster, enabled: true })) - - const countryDistributions = perCountryData.distributions - - const perCountryIntroContent = perCountryData.per_country_intro_content - - return { - clusterNames, - clusters, - countryDistributions, - perCountryIntroContent, - } -} - -export function getPerCountryIntroContentFilename(region: string): string { - const allData = getPerCountryDataRaw() - const perCountryData: PerCountryDatum | undefined = allData.regions.find((candidate) => candidate.region === region) - if (!perCountryData) { - throw new Error(`Region data not found for region: ${region}`) - } - return perCountryData.per_country_intro_content -} - -export function getRegions() { - const allData = getPerCountryDataRaw() - const regionNames = allData.regions.map(({ region }) => region) - const regionsHaveData = allData.regions.map( - ({ cluster_names, distributions }) => cluster_names.length > 0 && distributions.length > 0, - ) - const defaultRegionName = regionNames[0] - - return { - regionNames, - regionsHaveData, - defaultRegionName, - } -} - -export function filterCountries(countries: Country[], countryDistributions: CountryDistribution[]) { - const enabledCountries = new Set( - countries.filter((country) => country.enabled).map((country) => country.country), - ) - const withCountriesFiltered = countryDistributions.filter(({ country }) => { - return enabledCountries.has(country) - }) - return { enabledCountries, withCountriesFiltered } -} - -export function filterClusters(clusters: Cluster[], withCountriesFiltered: CountryDistribution[]) { - const enabledClusters = clusters.filter(({ enabled }) => enabled).map(({ cluster }) => cluster) - - const withClustersFiltered = withCountriesFiltered.map(({ country, distribution }) => { - const distributionFiltered = distribution.map((dist) => { - const countsFiltered = pickBy(dist.cluster_counts, (_0, cluster) => { - return enabledClusters.includes(cluster) - }) - - return { ...dist, cluster_counts: countsFiltered } - }) - return { country, distribution: distributionFiltered } - }) - - return { enabledClusters, withClustersFiltered } -} diff --git a/web/src/io/getRegionContent.ts b/web/src/io/getRegionContent.ts deleted file mode 100644 index c5e629bd72..0000000000 --- a/web/src/io/getRegionContent.ts +++ /dev/null @@ -1,6 +0,0 @@ -import type { ComponentType } from 'react' - -export function getRegionPerCountryContent(regionContent: string) { - // eslint-disable-next-line global-require,import/no-dynamic-require,security/detect-non-literal-require,@typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-member-access,unicorn/prefer-module - return require(`../../../content/PerCountryIntro/${regionContent}`).default as ComponentType -} diff --git a/web/src/io/parseCsv.ts b/web/src/io/parseCsv.ts deleted file mode 100644 index 4f851e059f..0000000000 --- a/web/src/io/parseCsv.ts +++ /dev/null @@ -1,28 +0,0 @@ -import Papa, { ParseConfig } from 'papaparse' -import { appendDash } from '../helpers/appendDash' - -export function parseCsv(content: string): T[] { - const config: ParseConfig = { - header: true, - skipEmptyLines: 'greedy', - dynamicTyping: true, - comments: '#', - } - - const { data, errors, meta } = Papa.parse(content, config) - - if (errors.length > 0) { - throw new Error( - `CSV error: ${errors - .map((error) => error.message) - .map(appendDash) - .join('\n')}`, - ) - } else if (meta.aborted) { - throw new Error('CSV error: Aborted') - } else if (data.length === 0) { - throw new Error('CSV error: There was no data') - } - - return data -} diff --git a/web/src/pages/404.tsx b/web/src/pages/404.tsx new file mode 100644 index 0000000000..703e6efc27 --- /dev/null +++ b/web/src/pages/404.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { useRouter } from 'next/router' +import ErrorPage from './_error' + +export default function NotFoundPage() { + const { asPath } = useRouter() + const error: Error & { statusCode?: number } = new Error(`Page not found: ${asPath}`) + error.statusCode = 404 + return +} diff --git a/web/src/pages/500.tsx b/web/src/pages/500.tsx new file mode 100644 index 0000000000..2206a7e77a --- /dev/null +++ b/web/src/pages/500.tsx @@ -0,0 +1,8 @@ +import React from 'react' +import ErrorPage from './_error' + +export default function InternalServerErrorPage() { + const error: Error & { statusCode?: number } = new Error('Internal server error') + error.statusCode = 500 + return +} diff --git a/web/src/pages/_app.tsx b/web/src/pages/_app.tsx index 729a839d1c..d7eb261230 100644 --- a/web/src/pages/_app.tsx +++ b/web/src/pages/_app.tsx @@ -1,101 +1,120 @@ import 'reflect-metadata' import 'resize-observer-polyfill/dist/ResizeObserver.global' - import 'css.escape' - +import { isNil } from 'lodash' +import { isFalsy } from 'utility-types' +import Route from 'route-parser' import dynamic from 'next/dynamic' -import React, { useCallback, useMemo } from 'react' -import { QueryClient, QueryClientProvider } from 'react-query' +import React, { PropsWithChildren, Suspense, useCallback, useMemo } from 'react' +import { QueryClient, QueryClientConfig, QueryClientProvider } from '@tanstack/react-query' import { MutableSnapshot, RecoilRoot } from 'recoil' -import { ReactQueryDevtools } from 'react-query/devtools' - +import { ReactQueryDevtools } from '@tanstack/react-query-devtools' import type { AppProps } from 'next/app' -import { parseUrl } from 'src/helpers/parseUrl' -import { clustersAtom, ClustersDataFlavor, urlQueryToClusters } from 'src/state/Clusters' -import { clustersCasesAtom, urlQueryToClustersCases } from 'src/state/ClustersForCaseData' -import { continentsAtom, countriesAtom, regionAtom, urlQueryToPlaces } from 'src/state/Places' -import { continentsCasesAtom, countriesCasesAtom, urlQueryToPlacesCases } from 'src/state/PlacesForCaseData' import { ThemeProvider } from 'styled-components' import { MDXProvider } from '@mdx-js/react' - +import { I18nextProvider } from 'react-i18next' +import i18n from 'src/i18n/i18n' import { theme } from 'src/theme' +import { loadPolyfills } from 'src/polyfills' import { DOMAIN_STRIPPED } from 'src/constants' import { Plausible } from 'src/components/Common/Plausible' -import { SeoApp } from 'src/components/Common/SeoApp' +import { LOADING } from 'src/components/Loading/Loading' import { getMdxComponents } from 'src/components/Common/MdxComponents' -import { loadPolyfills } from 'src/polyfills' - +import { ErrorBoundary } from 'src/components/Error/ErrorBoundary' +import { Layout } from 'src/components/Layout/Layout' import 'src/styles/global.scss' +import { currentClusterAtom } from 'src/state/Clusters' +import { ClusterDatum, useClusters } from 'src/io/getClusters' +import { useRouter } from 'next/router' + +const VariantsPage = dynamic(() => import('src/components/Variants/VariantsPage').then((m) => m.VariantsPage)) +const NotFoundPage = dynamic(() => import('src/pages/404')) + +const REACT_QUERY_OPTIONS: QueryClientConfig = { + defaultOptions: { + queries: { + suspense: true, + retry: 1, + staleTime: Number.POSITIVE_INFINITY, + refetchOnMount: false, + refetchOnWindowFocus: false, + refetchOnReconnect: true, + refetchInterval: Number.POSITIVE_INFINITY, + }, + }, +} -function MyApp({ Component, pageProps, router }: AppProps) { - const queryClient = useMemo(() => new QueryClient(), []) - - // NOTE: We do manual parsing here, because router.query is randomly empty on the first few renders. - const { pathname, query } = useMemo(() => parseUrl(router.asPath), [router.asPath]) - - const initializeState = useCallback( - ({ set }: MutableSnapshot) => { - // Set initial state - switch (pathname) { - case '/per-country': { - const { region, continents, countries } = urlQueryToPlaces(query) - - set(regionAtom, region) - set(continentsAtom(region), continents) - set(countriesAtom(region), countries) - - const params = { dataFlavor: ClustersDataFlavor.PerCountry, region } - const clusters = urlQueryToClusters(query, params) - set(clustersAtom(params), clusters) - - break - } - case '/per-variant': { - const { region, continents, countries } = urlQueryToPlaces(query) - - set(continentsAtom(undefined), continents) - set(countriesAtom(undefined), countries) - - const params = { dataFlavor: ClustersDataFlavor.PerCluster, region } - const clusters = urlQueryToClusters(query, params) - set(clustersAtom(params), clusters) - - break - } - case '/cases': { - const { continents, countries } = urlQueryToPlacesCases(query) +const VARIANTS_ROUTE = new Route<{ clusterName?: string }>('/variants/:clusterName') - set(continentsCasesAtom, continents) - set(countriesCasesAtom, countries) +function matchVariantsRoute(clusters: ClusterDatum[], asPath: string) { + const routeMatch = VARIANTS_ROUTE.match(asPath) + if (!isFalsy(routeMatch) && !isNil(routeMatch?.clusterName)) { + return clusters.find((cluster) => cluster.build_name === routeMatch?.clusterName) + } + return undefined +} - const clusters = urlQueryToClustersCases(query) - set(clustersCasesAtom, clusters) +// HACK: primitive router. Replace with something more sturdy +function Router({ children }: PropsWithChildren) { + const { asPath, route } = useRouter() + const clusters = useClusters() + + const result = useMemo(() => { + const cluster = matchVariantsRoute(clusters, asPath) + if (cluster) { + return + } + if (asPath !== route) { + return + } + return children + }, [asPath, children, clusters, route]) - break - } - default: - break + const initializeState = useCallback( + ({ set, reset }: MutableSnapshot) => { + const cluster = matchVariantsRoute(clusters, asPath) + if (cluster) { + set(currentClusterAtom, cluster) + } else { + reset(currentClusterAtom) } }, - [pathname, query], + [asPath, clusters], ) return ( - - - - - - - - - - + {result} ) } +function MyApp({ Component, pageProps }: AppProps) { + const queryClient = useMemo(() => new QueryClient(REACT_QUERY_OPTIONS), []) + + return ( + + + + + + + + + + + + + + + + + + + + ) +} + async function run() { await loadPolyfills() return MyApp diff --git a/web/src/pages/_error.tsx b/web/src/pages/_error.tsx new file mode 100644 index 0000000000..8997b53d58 --- /dev/null +++ b/web/src/pages/_error.tsx @@ -0,0 +1,71 @@ +import React, { useMemo } from 'react' +import type { NextPageContext } from 'next' +import styled from 'styled-components' +import { Button, Col, Row } from 'reactstrap' +import { ErrorContent } from 'src/components/Error/ErrorContent' +import { ErrorContentExplanation } from 'src/components/Error/ErrorContentExplanation' +import { useReloadPage } from 'src/hooks/useReloadPage' + +export const MainContent = styled.main` + margin: 0 auto; + height: 100%; + max-width: 960px; +` + +export interface ErrorPageProps { + statusCode?: number + title?: string + error?: Error | undefined + showDetails?: boolean +} + +function ErrorPage({ title, error, showDetails = true }: ErrorPageProps) { + const reload = useReloadPage('/') + + const errorContent = useMemo(() => { + if (!showDetails || !error) { + return null + } + + return ( + + + + + + ) + }, [error, showDetails]) + + return ( + + + +

{title ?? 'An error has occurred'}

+ +
+ + {errorContent} + + + + + + + + + + + + +
+ ) +} + +ErrorPage.getInitialProps = ({ res, err }: NextPageContext): Promise | ErrorPageProps => { + const statusCode = res?.statusCode ?? err?.statusCode + return { statusCode, error: err ?? undefined } +} + +export default ErrorPage diff --git a/web/src/pages/acknowledgements.tsx b/web/src/pages/acknowledgements.tsx deleted file mode 100644 index 0b79ee2efe..0000000000 --- a/web/src/pages/acknowledgements.tsx +++ /dev/null @@ -1 +0,0 @@ -export { AcknowledgementsPage as default } from 'src/components/Acknowledgements/AcknowledgementsPage' diff --git a/web/src/pages/cases.tsx b/web/src/pages/cases.tsx deleted file mode 100644 index 2b988cb27b..0000000000 --- a/web/src/pages/cases.tsx +++ /dev/null @@ -1 +0,0 @@ -export { CasesPage as default } from 'src/components/Cases/CasesPage' diff --git a/web/src/pages/countries.tsx b/web/src/pages/countries.tsx new file mode 100644 index 0000000000..aaaa2eb361 --- /dev/null +++ b/web/src/pages/countries.tsx @@ -0,0 +1,11 @@ +import React, { Suspense } from 'react' +import { CountriesPage as Page } from 'src/components/Countries/CountriesPage' +import { LOADING } from 'src/components/Loading/Loading' + +export default function CountriesPage() { + return ( + + + + ) +} diff --git a/web/src/pages/debug-badges.tsx b/web/src/pages/debug-badges.tsx deleted file mode 100644 index b38483ab77..0000000000 --- a/web/src/pages/debug-badges.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React from 'react' - -import { Col, Row } from 'reactstrap' -import { Var, WhoBadge } from 'src/components/Common/MutationBadge' - -import { Layout } from 'src/components/Layout/Layout' -import { LinkSmart } from 'src/components/Link/LinkSmart' - -import { getClusterNames, getClusterBuildNames, getClusterOldBuildNames } from 'src/io/getClusters' -import { GREEK_ALPHABET } from 'src/names' - -const clusterNames = getClusterNames() -const clusterBuildNames = getClusterBuildNames() -const clusterOldBuildNames = getClusterOldBuildNames() - -const domain = process.env.DOMAIN ?? '' - -export default function DebugBadges() { - return ( - - - - {'Display names'} -
    - {clusterNames.map((name) => ( -
  • - -
  • - ))} -
- - - - {'Build names'} -
    - {clusterBuildNames.map((buildName) => { - const url = `${domain}/variants/${buildName}` - return ( -
  • - {url} -
  • - ) - })} -
- - - - {'Old build names'} -
    - {clusterOldBuildNames.map((oldBuildName) => { - const url = `${domain}/variants/${oldBuildName}` - return ( -
  • - {url} -
  • - ) - })} -
- -
- - -
    - {Object.keys(GREEK_ALPHABET) - .map((name) => name[0].toUpperCase() + name.slice(1)) - .map((name) => { - return ( -
  • - -
  • - ) - })} -
- -
-
- ) -} diff --git a/web/src/pages/debug.tsx b/web/src/pages/debug.tsx new file mode 100644 index 0000000000..7852536ac4 --- /dev/null +++ b/web/src/pages/debug.tsx @@ -0,0 +1,123 @@ +import React from 'react' +import styled from 'styled-components' +import { Var, WhoBadge } from 'src/components/Common/MutationBadge' +import { LinkSmart } from 'src/components/Link/LinkSmart' +import { useClusters } from 'src/io/getClusters' +import { GREEK_ALPHABET } from 'src/names' + +const domain = process.env.DOMAIN ?? '' + +const Container = styled.div` + flex: 1; + display: flex; + flex-direction: row; +` + +const Main = styled.div` + flex: 1; + display: flex; + flex-direction: column; +` + +const Heading = styled.h3` + flex: 0; + height: 40px; + text-align: center; +` + +const Content = styled.div` + flex: 1 1 100%; + display: flex; + overflow: auto; +` + +const Box = styled.div` + min-height: min-content; + display: flex; +` + +const JsonText = styled.pre` + flex: 1; + color: #222; + background-color: #ccc; + overflow: auto; + font-size: 0.8rem; + max-width: 700px; + margin: 0; +` + +const Ul = styled.ul` + flex: 1 1 100%; + list-style: none; + padding: 1rem; + margin: 0; + + & > li { + padding: 0.25rem; + } +` + +export default function DebugBadges() { + const clusters = useClusters() + + return ( + +
+ {'Display names'} + + +
    + {clusters.map(({ display_name }) => ( +
  • + +
  • + ))} +
+
+
+
+ +
+ {'Build names'} + + +
    + {clusters.map(({ build_name }) => { + const url = `${domain}/variants/${build_name}` + return ( +
  • + {build_name} +
  • + ) + })} +
+
+
+
+ +
+ {'Greek letters'} + + +
    + {Object.keys(GREEK_ALPHABET).map((letter) => ( +
  • + +
  • + ))} +
+
+
+
+ +
+ {'Clusters JSON'} + + + {JSON.stringify({ clusters }, null, 2)} + + +
+
+ ) +} diff --git a/web/src/pages/faq.tsx b/web/src/pages/faq.tsx deleted file mode 100644 index 1065edc268..0000000000 --- a/web/src/pages/faq.tsx +++ /dev/null @@ -1 +0,0 @@ -export { FaqPage as default } from 'src/components/Faq/FaqPage' diff --git a/web/src/pages/index.tsx b/web/src/pages/index.tsx index 7d729c7c93..60adfe5ced 100644 --- a/web/src/pages/index.tsx +++ b/web/src/pages/index.tsx @@ -1 +1,11 @@ -export { HomePage as default } from 'src/components/Home/HomePage' +import React, { Suspense } from 'react' +import { HomePage as Page } from 'src/components/Home/HomePage' +import { LOADING } from 'src/components/Loading/Loading' + +export default function HomePage() { + return ( + + + + ) +} diff --git a/web/src/pages/per-country.tsx b/web/src/pages/per-country.tsx deleted file mode 100644 index 2c34dd07f5..0000000000 --- a/web/src/pages/per-country.tsx +++ /dev/null @@ -1 +0,0 @@ -export { CountryDistributionPage as default } from 'src/components/CountryDistribution/CountryDistributionPage' diff --git a/web/src/pages/per-variant.tsx b/web/src/pages/per-variant.tsx deleted file mode 100644 index b812528324..0000000000 --- a/web/src/pages/per-variant.tsx +++ /dev/null @@ -1 +0,0 @@ -export { ClusterDistributionPage as default } from 'src/components/ClusterDistribution/ClusterDistributionPage' diff --git a/web/src/pages/shared-mutations.tsx b/web/src/pages/shared-mutations.tsx deleted file mode 100644 index bc8673b5f5..0000000000 --- a/web/src/pages/shared-mutations.tsx +++ /dev/null @@ -1 +0,0 @@ -export { SharedMutationsPage as default } from 'src/components/SharedMutations/SharedMutationsPage' diff --git a/web/src/pages/variants/[clusterName].tsx b/web/src/pages/variants/[clusterName].tsx deleted file mode 100644 index 66ebe0fef4..0000000000 --- a/web/src/pages/variants/[clusterName].tsx +++ /dev/null @@ -1,28 +0,0 @@ -import type { GetStaticPathsContext, GetStaticPropsContext, GetStaticPathsResult, GetStaticPropsResult } from 'next' -import { get } from 'lodash' - -import type { VariantsPageProps } from 'src/components/Variants/VariantsPage' -import { getClusterBuildNames, getClusterOldBuildNames } from 'src/io/getClusters' -import { takeFirstMaybe } from 'src/helpers/takeFirstMaybe' - -const clusterBuildNames = getClusterBuildNames() -const clusterOldBuildNames = getClusterOldBuildNames() - -export async function getStaticProps(context: GetStaticPropsContext): Promise> { - const clusterName = takeFirstMaybe(get(context?.params, 'clusterName')) - - return { - props: { - clusterName, - }, - } -} - -export async function getStaticPaths(_0: GetStaticPathsContext): Promise { - return { - paths: [...clusterBuildNames, ...clusterOldBuildNames].map((clusterName) => `/variants/${clusterName}`), - fallback: false, - } -} - -export { VariantsPage as default } from 'src/components/Variants/VariantsPage' diff --git a/web/src/pages/variants/index.tsx b/web/src/pages/variants/index.tsx deleted file mode 100644 index 496433fe15..0000000000 --- a/web/src/pages/variants/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { VariantsPageIndex as default } from 'src/components/Variants/VariantsPageIndex' diff --git a/web/src/state/Clusters.ts b/web/src/state/Clusters.ts index f9ceb8392e..b459ed5acb 100644 --- a/web/src/state/Clusters.ts +++ b/web/src/state/Clusters.ts @@ -1,101 +1,11 @@ -import { get } from 'lodash' -import { ParsedUrlQuery } from 'querystring' -import { atomFamily } from 'recoil' -import { convertToArrayMaybe, includesCaseInsensitive } from 'src/helpers/array' - -import { updateUrlQuery } from 'src/helpers/urlQuery' -import { getPerClusterData } from 'src/io/getPerClusterData' -import { getPerCountryData } from 'src/io/getPerCountryData' - -/** Tells which clusters data to load */ -export enum ClustersDataFlavor { - PerCountry = 'PerCountry', - PerCluster = 'PerCluster', -} - -export type ClustersDataParams = { - dataFlavor: ClustersDataFlavor - region: string -} +import type { ClusterDatum } from 'src/io/getClusters' +import { atom } from 'recoil' export interface Cluster { cluster: string enabled: boolean } -/** - * Converts values incoming from URL query into clusters. - * To be used during app startup. - */ -export function urlQueryToClusters(query: ParsedUrlQuery, { dataFlavor, region }: ClustersDataParams) { - const enabledCountries = convertToArrayMaybe(get(query, 'variant')) - - // Take all clusters and set only the clusters present in the query as `enabled` - let clusters = getAllClusters({ dataFlavor, region }) - if (enabledCountries) { - clusters = clusters.map((cluster) => ({ - ...cluster, - enabled: includesCaseInsensitive(enabledCountries, cluster.cluster), - })) - } - - return clusters -} - -export function getAllClusters({ dataFlavor, region }: ClustersDataParams): Cluster[] { - // Data is different depending on page (/par-cluster or /per-variant) - switch (dataFlavor) { - case ClustersDataFlavor.PerCountry: { - // NOTE: Per country page data also differs by region - const { clusters } = getPerCountryData(region) - return clusters - } - case ClustersDataFlavor.PerCluster: { - const { clusters } = getPerClusterData() - return clusters - } - default: - throw new RangeError('Unknown clusters data flavor. This is an internal error. Please report it to developers') - } -} - -/** - * Represents a list of currently enabled clusters (variants) - */ -export const clustersAtom = atomFamily({ - key: 'clusters', - default: (params) => getAllClusters(params), - effects: [ - ({ onSet }) => { - onSet((clusters) => { - // If all clusters are enabled, we will remove cluster url params - const hasAllEnabled = clusters.every((cluster) => cluster.enabled) - - // eslint-disable-next-line no-void - void updateUrlQuery({ - variant: hasAllEnabled ? [] : clusters.filter((cluster) => cluster.enabled).map((cluster) => cluster.cluster), - }) - }) - }, - ], +export const currentClusterAtom = atom({ + key: 'currentClusterAtom', }) - -/** Toggles a given cluster enabled/disabled */ -export function toggleCluster(clusters: Cluster[], clusterName: string): Cluster[] { - return clusters.map((cluster) => { - if (cluster.cluster === clusterName) { - return { ...cluster, enabled: !cluster.enabled } - } - return cluster - }) -} - -/** Toggles all clusters enabled */ -export function enableAllClusters(clusters: Cluster[]): Cluster[] { - return clusters.map((cluster) => ({ ...cluster, enabled: true })) -} - -/** Toggles all clusters disabled */ -export function disableAllClusters(clusters: Cluster[]): Cluster[] { - return clusters.map((cluster) => ({ ...cluster, enabled: false })) -} diff --git a/web/src/state/ClustersForCaseData.ts b/web/src/state/ClustersForCaseData.ts deleted file mode 100644 index 6e29c04cda..0000000000 --- a/web/src/state/ClustersForCaseData.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { get } from 'lodash' -import { ParsedUrlQuery } from 'querystring' -import { atom } from 'recoil' -import { convertToArrayMaybe, includesCaseInsensitive } from 'src/helpers/array' - -import { updateUrlQuery } from 'src/helpers/urlQuery' -import { getPerCountryCasesData } from 'src/io/getPerCountryCasesData' -import type { Cluster } from './Clusters' - -function getAllClusters(): Cluster[] { - return getPerCountryCasesData().clusters -} - -/** - * Converts values incoming from URL query into clusters. - * To be used during app startup. - */ -export function urlQueryToClustersCases(query: ParsedUrlQuery) { - const enabledClusters = convertToArrayMaybe(get(query, 'variant')) - - // Take all clusters and set only the clusters present in the query as `enabled` - let clusters = getAllClusters() - if (enabledClusters) { - clusters = clusters.map((cluster) => ({ - ...cluster, - enabled: includesCaseInsensitive(enabledClusters, cluster.cluster), - })) - } - - return clusters -} - -/** - * Represents a list of currently enabled clusters (variants) - */ -export const clustersCasesAtom = atom({ - key: 'clustersCases', - default: getAllClusters(), - effects: [ - ({ onSet }) => { - onSet((clusters) => { - // If all clusters are enabled, we will remove cluster url params - const hasAllEnabled = clusters.every((cluster) => cluster.enabled) - - // eslint-disable-next-line no-void - void updateUrlQuery({ - variant: hasAllEnabled ? [] : clusters.filter((cluster) => cluster.enabled).map((cluster) => cluster.cluster), - }) - }) - }, - ], -}) - -/** Toggles a given cluster enabled/disabled */ -export function toggleCluster(clusters: Cluster[], clusterName: string): Cluster[] { - return clusters.map((cluster) => { - if (cluster.cluster === clusterName) { - return { ...cluster, enabled: !cluster.enabled } - } - return cluster - }) -} - -/** Toggles all clusters enabled */ -export function enableAllClusters(clusters: Cluster[]): Cluster[] { - return clusters.map((cluster) => ({ ...cluster, enabled: true })) -} - -/** Toggles all clusters disabled */ -export function disableAllClusters(clusters: Cluster[]): Cluster[] { - return clusters.map((cluster) => ({ ...cluster, enabled: false })) -} diff --git a/web/src/state/Geography.ts b/web/src/state/Geography.ts new file mode 100644 index 0000000000..f54de6b403 --- /dev/null +++ b/web/src/state/Geography.ts @@ -0,0 +1,163 @@ +import copy from 'fast-copy' +import { atom, atomFamily, selector, selectorFamily } from 'recoil' +import { axiosFetch } from 'src/io/axiosFetch' +import { getDataRootUrl } from 'src/io/getDataRootUrl' +import urljoin from 'url-join' +import { isDefaultValue } from 'src/state/utils/isDefaultValue' +import { ErrorInternal } from 'src/helpers/ErrorInternal' + +export interface Geography { + regions: Record +} + +export interface Region { + continents: Record + countries: string[] +} + +const geographyAtom = atom({ + key: 'geographyAtom', + default: axiosFetch(urljoin(getDataRootUrl(), 'v2/geography.json')), +}) + +export const regionsAtom = selector({ + key: 'regionsAtom', + get({ get }) { + return Object.keys(get(geographyAtom).regions) + }, +}) + +export const regionAtom = atom({ + key: 'regionAtom', + default: 'World', +}) + +function getAllContinentNames(geography: Geography, region: string) { + return Object.keys(geography.regions[region].continents) +} + +const continentsAtom = atomFamily<{ continent: string; enabled: boolean }[], string>({ + key: 'continentsAtom', + default: (region) => + selector({ + key: `continentsAtom/default/${region}`, + get({ get }) { + return getAllContinentNames(get(geographyAtom), region).map((continent) => ({ continent, enabled: true })) + }, + }), +}) + +export const continentNamesAtom = atomFamily({ + key: 'continentNamesAtom', + default: (region) => + selector({ + key: `continentNamesAtom/default/${region}`, + get({ get }) { + return getAllContinentNames(get(geographyAtom), region) + }, + }), +}) + +export const continentAtom = selectorFamily({ + key: 'continentAtom', + get: + ({ region, continent }) => + ({ get }) => { + return get(continentsAtom(region)).find((candidate) => candidate.continent === continent)?.enabled ?? false + }, + set: + ({ region, continent }) => + ({ get, set, reset }, enabled) => { + if (isDefaultValue(enabled)) { + reset(continentsAtom(region)) + } else { + const continents = copy(get(continentsAtom(region))) + continents.forEach((item) => { + if (item.continent === continent) { + item.enabled = enabled + } + }) + set(continentsAtom(region), continents) + } + }, +}) + +function getAllCountryNames(geography: Geography, region: string) { + return Object.entries(geography.regions[region].countries).flatMap(([_, countries]) => countries) +} + +const countriesAtom = atomFamily<{ country: string; enabled: boolean }[], string>({ + key: 'countriesAtom', + default: (region) => + selector({ + key: `countriesAtom/default/${region}`, + get({ get }) { + return getAllCountryNames(get(geographyAtom), region).map((country) => ({ country, enabled: true })) + }, + }), +}) + +export const countryNamesAtom = atomFamily({ + key: 'countryNamesAtom', + default: (region) => + selector({ + key: `countryNamesAtom/default/${region}`, + get({ get }) { + return getAllCountryNames(get(geographyAtom), region) + }, + }), +}) + +export const countryAtom = selectorFamily({ + key: 'countryAtom', + get: + ({ region, country }) => + ({ get }) => { + return get(countriesAtom(region)).find((candidate) => candidate.country === country)?.enabled ?? false + }, + set: + ({ region, country }) => + ({ get, set, reset }, enabled) => { + if (isDefaultValue(enabled)) { + reset(countriesAtom(region)) + } else { + const countries = copy(get(countriesAtom(region))) + countries.forEach((item) => { + if (item.country === country) { + item.enabled = enabled + } + }) + set(countriesAtom(region), countries) + } + }, +}) + +function setEnabledAll(items: T[], enabled: boolean) { + return items.map((item) => ({ ...item, enabled })) +} + +export const geographyEnableAllAtom = selectorFamily({ + key: 'geographyEnableAllAtom', + get() { + throw new ErrorInternal("Attempt to read from write-only atom: 'geographyEnableAllAtom'") + }, + set: + (region) => + ({ get, set }) => { + set(countriesAtom(region), setEnabledAll(get(countriesAtom(region)), true)) + set(continentsAtom(region), setEnabledAll(get(continentsAtom(region)), true)) + }, +}) + +export const geographyDisableAllAtom = selectorFamily({ + key: 'geographyDisableAllAtom', + get() { + throw new ErrorInternal("Attempt to read from write-only atom: 'geographyDisableAllAtom'") + }, + set: + (region) => + ({ get, set }) => { + set(countriesAtom(region), setEnabledAll(get(countriesAtom(region)), false)) + set(continentsAtom(region), setEnabledAll(get(continentsAtom(region)), false)) + }, +}) diff --git a/web/src/state/Places.ts b/web/src/state/Places.ts deleted file mode 100644 index 2cdf9813ad..0000000000 --- a/web/src/state/Places.ts +++ /dev/null @@ -1,225 +0,0 @@ -import copy from 'fast-copy' -import { ParsedUrlQuery } from 'querystring' -import { atom, atomFamily, DefaultValue, selectorFamily } from 'recoil' -import { get } from 'lodash' - -import { convertToArrayMaybe, includesCaseInsensitive } from 'src/helpers/array' -import { takeFirstMaybe } from 'src/helpers/takeFirstMaybe' -import { setUrlQuery, updateUrlQuery } from 'src/helpers/urlQuery' -import { shouldPlotCountry } from 'src/io/getCountryColor' - -import { getPerClusterDataRaw } from 'src/io/getPerClusterData' -import { getPerCountryDataRaw } from 'src/io/getPerCountryData' -import regionCountryJson from 'src/../data/region_country.json' - -export const DEFAULT_REGION = 'World' - -export interface Country { - country: string - enabled: boolean -} - -export interface Continent { - continent: string - enabled: boolean -} - -/** - * Converts values incoming from URL query into region, countries and continents. - * To be used during app startup. - */ -export function urlQueryToPlaces(query: ParsedUrlQuery) { - const regionRaw = takeFirstMaybe(get(query, 'region')) - - const region = - getAllRegions().find((candidate) => candidate.toLowerCase() === regionRaw?.toLowerCase()) ?? DEFAULT_REGION - - const enabledCountries = convertToArrayMaybe(get(query, 'country')) - - // Take all countries and set only the countries present in the query as `enabled` - let countries = getAllCountries(region) - if (enabledCountries) { - countries = countries.map((country) => ({ - ...country, - enabled: includesCaseInsensitive(enabledCountries, country.country), - })) - } - - // Enable/disable continents depending on which countries are enabled - const continents = getContinentsFromCountries(region, countries) - - return { region, continents, countries } -} - -export function getAllRegions() { - const perCountryData = getPerCountryDataRaw() - return perCountryData.regions.map((region) => region.region) -} - -export function getAllCountries(region?: string): Country[] { - // Regions are only relevant for the country distribution (/per-country) page and the data is different for them - if (region) { - const perCountryData = getPerCountryDataRaw() - const data = perCountryData.regions.find((dataRegion) => dataRegion.region === region) - if (!data) { - throw new RangeError(`Country data not found for region ${region}`) - } - return data.distributions.map(({ country }) => ({ country, enabled: true })) - } - - // If there's no region, then it's the cluster distribution (/per-variant) page - const perClusterData = getPerClusterDataRaw() - const countryNames: string[] = copy(perClusterData.country_names).sort() - return countryNames.map((country) => ({ country, enabled: shouldPlotCountry(country) })) -} - -export function getAllContinents(region?: string): Continent[] { - if (region === 'World') { - return Object.keys(regionCountryJson).map((continent) => ({ continent, enabled: true })) - } - return [{ continent: region ?? '', enabled: true }] -} - -export function getCountryToContinentMap(): Map { - return Object.entries(regionCountryJson).reduce((result, [continent, countries]) => { - // eslint-disable-next-line no-loops/no-loops - for (const country of countries) { - result.set(country, continent) - } - return result - }, new Map()) -} - -/** - * Toggles `enable` field of each country, according to whether the corresponding continent is enabled - */ -export function toggleCountriesFromContinents( - region: string | undefined, - countries: Country[], - continents: Continent[], -): Country[] { - return countries.map((country) => { - const continentMap = getCountryToContinentMap() - const continent = continentMap.get(country.country) - const continentFound = continents.find((continentCandidate) => continentCandidate.continent === continent) - const enabled = continentFound?.enabled ?? false - return { ...country, enabled } - }) -} - -/** - * Deduces which continents are enabled, depending on which countries are enabled - */ -export function getContinentsFromCountries(region: string | undefined, countries: Country[]): Continent[] { - // Continents are only relevant for the 'World' region - if (region === 'World') { - return Object.entries(regionCountryJson).map(([continent, continentCountries]) => { - // A continent is enabled if every country of this continent is enabled - const enabled = continentCountries.every((continentCountry) => { - const countryFound = countries.find((country) => country.country === continentCountry) - return countryFound?.enabled ?? true - }) - return { continent, enabled } - }) - } - - // For other regions, there is only one fake continent and it's enabled if all countries are enabled - const enabled = countries.every((country) => country.enabled) - return [{ continent: region ?? DEFAULT_REGION, enabled }] -} - -/** Toggles a given country enabled/disabled */ -export function toggleCountry(countries: Country[], countryName: string): Country[] { - return countries.map((country) => { - if (country.country === countryName) { - return { ...country, enabled: !country.enabled } - } - return country - }) -} - -/** Toggles a given continent enabled/disabled */ -export function toggleContinent(continents: Continent[], continentName: string): Continent[] { - return continents.map((continent) => { - if (continent.continent === continentName) { - return { ...continent, enabled: !continent.enabled } - } - return continent - }) -} - -/** Toggles all countries enabled */ -export function enableAllCountries(countries: Country[]): Country[] { - return countries.map((country) => ({ ...country, enabled: true })) -} - -/** Toggles all countries disabled */ -export function disableAllCountries(countries: Country[]): Country[] { - return countries.map((country) => ({ ...country, enabled: false })) -} - -/** - * Represents current region - */ -export const regionAtom = atom({ - key: 'region', - default: DEFAULT_REGION, - effects: [ - ({ onSet }) => { - onSet((region) => { - // NOTE: This will overwrite the query entirely - // eslint-disable-next-line no-void - void setUrlQuery({ region }) - }) - }, - ], -}) - -/** - * Represents a list of currently enabled countries - * NOTE: this atom can be modified, when the selector for continents is modified. - */ -export const countriesAtom = atomFamily({ - key: 'countries', - default(region?: string) { - return getAllCountries(region) - }, - effects: [ - ({ onSet }) => { - onSet((countries) => { - // If all countries are enabled, we will remove country url params - const hasAllEnabled = countries.every((country) => country.enabled) - - // eslint-disable-next-line no-void - void updateUrlQuery({ - country: hasAllEnabled - ? [] - : countries.filter((country) => country.enabled).map((country) => country.country), - }) - }) - }, - ], -}) - -/** - * Represents a list of currently enabled continents. - * NOTE: this is a selector and it's value is tied to the countries atom. - * NOTE: this selector is mutable, i.e. it can be set(). When this happens, it also modifies the countries atom. - */ -export const continentsAtom = selectorFamily({ - key: 'continents', - get: - (region?: string) => - ({ get }) => { - const countries = get(countriesAtom(region)) - return getContinentsFromCountries(region, countries) - }, - set: - (region?: string) => - ({ set, get, reset }, continentsOrDefault) => { - const countriesOld = get(countriesAtom(region)) - const continents = continentsOrDefault instanceof DefaultValue ? getAllContinents(region) : continentsOrDefault - const countries = toggleCountriesFromContinents(region, countriesOld, continents) - set(countriesAtom(region), countries) - }, -}) diff --git a/web/src/state/PlacesForCaseData.ts b/web/src/state/PlacesForCaseData.ts deleted file mode 100644 index 208d00335a..0000000000 --- a/web/src/state/PlacesForCaseData.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { get } from 'lodash' -import { ParsedUrlQuery } from 'querystring' -import { atom, DefaultValue, selector } from 'recoil' - -import { convertToArrayMaybe, includesCaseInsensitive } from 'src/helpers/array' -import type { Continent, Country } from 'src/state/Places' -import { updateUrlQuery } from 'src/helpers/urlQuery' -import { getPerCountryCasesData } from 'src/io/getPerCountryCasesData' - -import regionCountryJson from '../../data/region_country.json' - -/** - * Converts values incoming from URL query into region, countries and continents. - * To be used during app startup. - */ -export function urlQueryToPlacesCases(query: ParsedUrlQuery) { - const enabledCountries = convertToArrayMaybe(get(query, 'country')) - - // Take all countries and set only the countries present in the query as `enabled` - let countries = getAllCountries() - if (enabledCountries) { - countries = countries.map((country) => ({ - ...country, - enabled: includesCaseInsensitive(enabledCountries, country.country), - })) - } - - // Enable/disable continents depending on which countries are enabled - const continents = getContinentsFromCountries(countries) - - return { continents, countries } -} - -function getAllCountries(): Country[] { - return getPerCountryCasesData().countries -} - -export function getAllContinents(): Continent[] { - return Object.keys(regionCountryJson).map((continent) => ({ continent, enabled: true })) -} - -export function getCountryToContinentMap(): Map { - return Object.entries(regionCountryJson).reduce((result, [continent, countries]) => { - // eslint-disable-next-line no-loops/no-loops - for (const country of countries) { - result.set(country, continent) - } - return result - }, new Map()) -} - -/** - * Toggles `enable` field of each country, according to whether the corresponding continent is enabled - */ -export function toggleCountriesFromContinents(countries: Country[], continents: Continent[]): Country[] { - return countries.map((country) => { - const continentMap = getCountryToContinentMap() - const continent = continentMap.get(country.country) - const continentFound = continents.find((continentCandidate) => continentCandidate.continent === continent) - const enabled = continentFound?.enabled ?? false - return { ...country, enabled } - }) -} - -/** - * Deduces which continents are enabled, depending on which countries are enabled - */ -function getContinentsFromCountries(countries: Country[]): Continent[] { - // Continents are only relevant for the 'World' region - return Object.entries(regionCountryJson).map(([continent, continentCountries]) => { - // A continent is enabled if every country of this continent is enabled - const enabled = continentCountries.every((continentCountry) => { - const countryFound = countries.find((country) => country.country === continentCountry) - return countryFound?.enabled ?? true - }) - return { continent, enabled } - }) -} - -/** Toggles a given country enabled/disabled */ -export function toggleCountry(countries: Country[], countryName: string): Country[] { - return countries.map((country) => { - if (country.country === countryName) { - return { ...country, enabled: !country.enabled } - } - return country - }) -} - -/** Toggles a given continent enabled/disabled */ -export function toggleContinent(continents: Continent[], continentName: string): Continent[] { - return continents.map((continent) => { - if (continent.continent === continentName) { - return { ...continent, enabled: !continent.enabled } - } - return continent - }) -} - -/** Toggles all countries enabled */ -export function enableAllCountries(countries: Country[]): Country[] { - return countries.map((country) => ({ ...country, enabled: true })) -} - -/** Toggles all countries disabled */ -export function disableAllCountries(countries: Country[]): Country[] { - return countries.map((country) => ({ ...country, enabled: false })) -} - -/** - * Represents a list of currently enabled countries - * NOTE: this atom can be modified, when the selector for continents is modified. - */ -export const countriesCasesAtom = atom({ - key: 'casesCountries', - default: getAllCountries(), - effects: [ - ({ onSet }) => { - onSet((countries) => { - // If all countries are enabled, we will remove country url params - const hasAllEnabled = countries.every((country) => country.enabled) - - // eslint-disable-next-line no-void - void updateUrlQuery({ - country: hasAllEnabled - ? [] - : countries.filter((country) => country.enabled).map((country) => country.country), - }) - }) - }, - ], -}) - -/** - * Represents a list of currently enabled continents. - * NOTE: this is a selector and it's value is tied to the countries atom. - * NOTE: this selector is mutable, i.e. it can be set(). When this happens, it also modifies the countries atom. - */ -export const continentsCasesAtom = selector({ - key: 'casesContinents', - get: ({ get }) => { - const countries = get(countriesCasesAtom) - return getContinentsFromCountries(countries) - }, - set: ({ set, get, reset }, continentsOrDefault) => { - const countriesOld = get(countriesCasesAtom) - const continents = continentsOrDefault instanceof DefaultValue ? getAllContinents() : continentsOrDefault - const countries = toggleCountriesFromContinents(countriesOld, continents) - set(countriesCasesAtom, countries) - }, -}) diff --git a/web/src/state/TooltipSort.ts b/web/src/state/TooltipSort.ts deleted file mode 100644 index a74fb95ceb..0000000000 --- a/web/src/state/TooltipSort.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { atom } from 'recoil' - -export enum TooltipSortCriterion { - country = 'country', - frequency = 'frequency', -} - -export const tooltipSortAtom = atom({ - key: 'TooltipSort', - default: { - criterion: TooltipSortCriterion.frequency, - reversed: false, - }, -}) diff --git a/web/src/state/utils/isDefaultValue.ts b/web/src/state/utils/isDefaultValue.ts new file mode 100644 index 0000000000..3d7d631744 --- /dev/null +++ b/web/src/state/utils/isDefaultValue.ts @@ -0,0 +1,5 @@ +import { DefaultValue } from 'recoil' + +export function isDefaultValue(candidate: unknown): candidate is DefaultValue { + return candidate instanceof DefaultValue +} diff --git a/web/src/styles/global.scss b/web/src/styles/global.scss index 7c1a4321f6..2be90d0634 100644 --- a/web/src/styles/global.scss +++ b/web/src/styles/global.scss @@ -23,34 +23,23 @@ } html, -body { +body, +#__next { height: 100%; + width: 100%; margin: 0; -} - -html { - overflow-y: auto; + padding: 0; } body { background-color: $body-bg; } -#__next { - height: 100%; -} - .container, .container-fluid { padding: 0; } -.main-container { - height: 100%; - background-color: $body-bg; - min-width: 320px; -} - .bi.bi-link-45deg.mdx-link-icon { color: $gray-600; } diff --git a/web/src/theme.ts b/web/src/theme.ts index 939130493c..4e6e6b978d 100644 --- a/web/src/theme.ts +++ b/web/src/theme.ts @@ -1,6 +1,6 @@ import { rgba } from 'polished' -const gridBreakpoints = { +const grid = { xs: '0', sm: '576px', md: '768px', @@ -9,7 +9,7 @@ const gridBreakpoints = { xxl: '2000px', } -const containerMaxWidths = { +const containerWidth = { sm: '540px', md: '720px', lg: '960px', @@ -105,6 +105,7 @@ export const shadows = { medium: `2px 2px 3px 3px ${rgba(gray700, 0.25)}`, normal: `2px 2px 3px 3px ${rgba(gray900, 0.25)}`, thick: `3px 3px 3px 5px ${rgba(gray900, 0.33)}`, + blurredMedium: `5px 5px 20px 5px ${rgba(gray700, 0.25)}`, filter: { slight: `1px 1px 1px ${rgba(gray700, 0.25)}`, medium: `2px 2px 3px ${rgba(gray900, 0.33)}`, @@ -172,11 +173,13 @@ export const clusters = { } export const theme = { + bodyColor: basicColors.gray700, + bodyBg: basicColors.white, ...basicColors, ...themeColors, - ...gridBreakpoints, + grid, + containerWidth, link, - containerMaxWidths, font, shadows, plot, diff --git a/web/src/types.ts b/web/src/types.ts index 38b1a0802b..b62e3a6d81 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -1,3 +1,5 @@ +export type SetterOrUpdater = (valOrUpdater: ((currVal: T) => T) | T) => void + export interface Mutation { parent?: string parentDelimiter?: string diff --git a/web/src/types/svg-module.d.ts b/web/src/types/svg-module.d.ts index 5b3be85acd..b201e607f1 100644 --- a/web/src/types/svg-module.d.ts +++ b/web/src/types/svg-module.d.ts @@ -1,6 +1,6 @@ declare module '*.svg' { - import type { FC, SVGProps } from 'react' + import type { ComponentType, SVGProps } from 'react' - declare const SVG: FC> + declare const SVG: ComponentType> export default SVG } diff --git a/web/tools/monkeyPatch.ts b/web/tools/monkeyPatch.ts index ddf85f213f..84c60ed0dd 100644 --- a/web/tools/monkeyPatch.ts +++ b/web/tools/monkeyPatch.ts @@ -1,19 +1,34 @@ -/* eslint-disable no-template-curly-in-string */ +/* eslint-disable no-template-curly-in-string,sonarjs/no-duplicate-string */ /** * - * This dangerously and unreliably patches some of the node_modules. Mostly cosmetic stuff. + * This dangerously and unreliably patches some node_modules. Mostly cosmetic stuff. * Do no use this to fix bugs or introduce features. Consider contributing to the upstream project instead. * */ +import { concurrent } from 'fasy' import fs from 'fs-extra' +import glob from 'glob' +import { promisify } from 'util' -export async function replace(filename: string, searchValue: string, replaceValue = '') { +export async function replace(filename: string, searchValue: string | RegExp, replaceValue = '') { const content = await fs.readFile(filename, 'utf8') const newContent = content.replace(searchValue, replaceValue) await fs.writeFile(filename, newContent, { encoding: 'utf8' }) } +/** Strips timerStart() and timerEnd() calls from Auspice */ +export async function removeAuspiceTimers() { + await fs.rm('node_modules/auspice/src/util/perf.js', { force: true }) + + const files = await promisify(glob)('node_modules/auspice/src/**/*.js') + + await concurrent.forEach(async (file) => { + await replace(file, /.*(timerStart|timerEnd)\(".+"\);.*\n/g, '') + await replace(file, /.*import { timerStart, timerEnd }.*\n/g, '') + }, files) +} + export async function main() { await Promise.all([ // Removes warning " should not be used in _document.js". @@ -26,25 +41,111 @@ export async function main() { // Removes warning about babel codegen skipping optimizations. We only use babel in form of babel-node, to transpile // dev scripts on the fly, so this is not at all worth any attention. // Reason: too noisy + concurrent.forEach( + async (file) => { + await replace( + file, + 'console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`);', + ) + await replace( + file, + 'console.error(\n' + + ' "[BABEL] Note: The code generator has deoptimised the styling of " +\n' + + ' `${opts.filename} as it exceeds the max of ${"500KB"}.`,\n' + + ' );', + ) + }, + ['node_modules/@babel/generator/lib/index.js', 'node_modules/next/dist/compiled/babel/bundle.js'], + ), + replace( - 'node_modules/@babel/generator/lib/index.js', - 'console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`);', + 'node_modules/next/dist/build/index.js', + "`${Log.prefixes.info} ${ignoreTypeScriptErrors ? 'Skipping validation of types' : 'Checking validity of types'}`", + '""', ), // Removes reminder about upgrading caniuse database. Nice, but not that important. Will be handled along with // routine package updates. // Reason: too noisy - replace( - 'node_modules/browserslist/node.js', - ` console.warn( + concurrent.forEach( + async (file) => + replace( + file, + ` console.warn( 'Browserslist: caniuse-lite is outdated. Please run:\\n' + - 'npx browserslist@latest --update-db\\n' + - '\\n' + - 'Why you should do it regularly:\\n' + - 'https://github.com/browserslist/browserslist#browsers-data-updating' + ' npx browserslist@latest --update-db\\n' + + ' Why you should do it regularly: ' + + 'https://github.com/browserslist/browserslist#browsers-data-updating' )`, + ), + ['node_modules/browserslist/node.js'], + ), + + concurrent.forEach( + async (file) => + replace( + file, + `console.warn("Browserslist: caniuse-lite is outdated. Please run:\\n"+" npx browserslist@latest --update-db\\n"+" Why you should do it regularly: "+"https://github.com/browserslist/browserslist#browsers-data-updating")`, + ), + [ + 'node_modules/next/dist/compiled/browserslist/index.js', + 'node_modules/next/dist/compiled/cssnano-simple/index.js', + ], + ), + + // Fast refresh messages in browser console + replace( + 'node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js', + "console.log('[Fast Refresh] rebuilding');", + ), + replace( + 'node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js', + 'console.log(`[Fast Refresh] done in ${latency}ms`);', + ), + + replace( + 'node_modules/next/dist/server/base-server.js', + 'Log.warn(`You have added a custom /_error page without a custom /404 page. This prevents the 404 page from being auto statically optimized.\\nSee here for info: https://nextjs.org/docs/messages/custom-error-no-custom-404`);', ), + + removeAuspiceTimers(), ]) + + // More useless messages from Next.js + await replace('node_modules/next/dist/server/config.js', 'console.warn();') + await replace( + 'node_modules/next/dist/server/config.js', + "Log.warn('SWC minify release candidate enabled. https://nextjs.org/docs/messages/swc-minify-enabled');", + ) + await replace( + 'node_modules/next/dist/server/config.js', + "Log.warn(_chalk.default.bold('You have enabled experimental feature(s).'));", + ) + await replace( + 'node_modules/next/dist/server/config.js', + 'Log.warn(`Experimental features are not covered by semver, and may cause unexpected or broken application behavior. ` + `Use them at your own risk.`);', + ) + await replace( + 'node_modules/next/dist/build/webpack-config.js', + "Log.info(`automatically enabled Fast Refresh for ${injections} custom loader${injections > 1 ? 's' : ''}`);", + ) + await replace('node_modules/@next/env/dist/index.js', 'n.info(`Loaded env from ${t.join(r||"",_.path)}`)') + await replace('node_modules/next/dist/build/output/store.js', "Log.wait('compiling...');") + await replace('node_modules/next/dist/build/output/store.js', 'Log.wait(`compiling ${state.trigger}...`);') + await replace( + 'node_modules/next/dist/build/output/store.js', + 'Log.info(`bundled${partialMessage} successfully${timeMessage}${modulesMessage}, waiting for typecheck results...`);', + ) + await replace( + 'node_modules/next/dist/build/output/store.js', + 'Log.event(`compiled${partialMessage} successfully${timeMessage}${modulesMessage}`);', + ) + + // From fork-ts-checker-webpack-plugin + await replace( + 'node_modules/fork-ts-checker-webpack-plugin/lib/hooks/tapDoneToAsyncGetIssues.js', + "configuration.logger.issues.log(chalk_1.default.cyan('Issues checking in progress...'));", + ) } main().catch(console.error) diff --git a/web/tools/server/dataServer.ts b/web/tools/server/dataServer.ts new file mode 100644 index 0000000000..00f61927e0 --- /dev/null +++ b/web/tools/server/dataServer.ts @@ -0,0 +1,85 @@ +/* eslint-disable unicorn/no-process-exit,unicorn/prefer-module */ +/** + * Serves production build artifacts. + * + * /!\ Only for development purposes, e.g. verifying that production build runs + * on developer's machine. + * + * This server is very naive, slow and insecure. Real-world deployments should + * use either a 3rd-party static hosting or a robust static server, such as + * Nginx, instead. + * + */ + +import type { ServerResponse } from 'http' +import path from 'path' +import express, { Request, Response } from 'express' +import allowMethods from 'allow-methods' +import compression from 'compression' +import morgan from 'morgan' +import expressStaticGzip from 'express-static-gzip' +import { modifyHeaders } from '../../../infra/data/lambda-at-edge/ViewerResponse.lambda' + +export interface NewHeaders { + [key: string]: { key: string; value: string }[] +} + +const expressStaticGzipOptions = { enableBrotli: true, serveStatic: { extensions: ['html'] } } + +const cacheNone = { + ...expressStaticGzipOptions, + serveStatic: { + ...expressStaticGzipOptions.serveStatic, + setHeaders: (res: ServerResponse) => res.setHeader('Cache-Control', 'no-cache'), + }, +} + +function notFound(req: Request, res: Response) { + res.status(404) + res.format({ + json() { + res.json({ error: 'Not found' }) + }, + default() { + res.type('txt').send('Not found') + }, + }) +} + +function setHeaders(req: express.Request, res: express.Response, next: express.NextFunction) { + const newHeaders = modifyHeaders({ response: res }) as NewHeaders + Object.entries(newHeaders).forEach(([header, arr]) => { + const [{ value }] = arr + if (header.toLowerCase() === 'strict-transport-security') { + return + } + res.set({ [header.toLowerCase()]: value }) + }) + next() +} + +function main() { + const app = express() + + if (process.argv.length < 3) { + console.error('Error: Positional argument is required: path to a data directory') + console.error(`Usage:\n ${process.argv[0]} ${path.basename(__filename)} <path_to_data_dir>`) + process.exit(0) + } + + const dataDir = process.argv[2] + + app.use(morgan('dev')) + app.use(compression()) + app.use(allowMethods(['GET', 'HEAD'])) + app.use(setHeaders) + app.use(expressStaticGzip(dataDir, cacheNone)) + app.use(notFound) + + const port = '27722' + app.listen(port, () => { + console.info(`Server is listening on port ${port}`) + }) +} + +main() diff --git a/web/tools/server/server.ts b/web/tools/server/server.ts index 431a44f593..607c067781 100644 --- a/web/tools/server/server.ts +++ b/web/tools/server/server.ts @@ -10,19 +10,16 @@ * */ -import { ServerResponse } from 'http' +import type { ServerResponse } from 'http' import path from 'path' - -import express from 'express' - +import express, { Request, Response } from 'express' import allowMethods from 'allow-methods' -// import history from 'connect-history-api-fallback' +import compression from 'compression' +import morgan from 'morgan' import expressStaticGzip from 'express-static-gzip' - import { getenv } from '../../lib/getenv' import { findModuleRoot } from '../../lib/findModuleRoot' - -import { modifyHeaders } from '../../infra/lambda-at-edge/modifyOutgoingHeaders.lambda' +import { modifyHeaders } from '../../../infra/web/lambda-at-edge/ViewerResponse.lambda' const { moduleRoot } = findModuleRoot() @@ -33,43 +30,58 @@ export interface NewHeaders { [key: string]: { key: string; value: string }[] } -function main() { - const app = express() +const expressStaticGzipOptions = { enableBrotli: true, serveStatic: { extensions: ['html'] } } - const expressStaticGzipOptions = { enableBrotli: true, serveStatic: { extensions: ['html'] } } +const cacheNone = { + ...expressStaticGzipOptions, + serveStatic: { + ...expressStaticGzipOptions.serveStatic, + setHeaders: (res: ServerResponse) => res.setHeader('Cache-Control', 'no-cache'), + }, +} +const cacheOneYear = { + ...expressStaticGzipOptions, + serveStatic: { + ...expressStaticGzipOptions.serveStatic, + maxAge: '31556952000', + immutable: true, + }, +} - const cacheNone = { - ...expressStaticGzipOptions, - serveStatic: { - ...expressStaticGzipOptions.serveStatic, - setHeaders: (res: ServerResponse) => res.setHeader('Cache-Control', 'no-cache'), +function notFound(req: Request, res: Response) { + res.status(404) + res.format({ + json() { + res.json({ error: 'Not found' }) }, - } - const cacheOneYear = { - ...expressStaticGzipOptions, - serveStatic: { - ...expressStaticGzipOptions.serveStatic, - maxAge: '31556952000', - immutable: true, + default() { + res.type('txt').send('Not found') }, - } + }) +} - app.use((req: express.Request, res: express.Response, next: express.NextFunction) => { - const newHeaders = modifyHeaders({ request: req, response: res }) as NewHeaders - Object.entries(newHeaders).forEach(([header, arr]) => { - const [{ value }] = arr - if (header.toLowerCase() === 'strict-transport-security') { - return - } - res.set({ [header.toLowerCase()]: value }) - }) - next() +function setHeaders(req: express.Request, res: express.Response, next: express.NextFunction) { + const newHeaders = modifyHeaders({ response: res }) as NewHeaders + Object.entries(newHeaders).forEach(([header, arr]) => { + const [{ value }] = arr + if (header.toLowerCase() === 'strict-transport-security') { + return + } + res.set({ [header.toLowerCase()]: value }) }) + next() +} + +function main() { + const app = express() + app.use(morgan('dev')) + app.use(compression()) app.use(allowMethods(['GET', 'HEAD'])) - // app.use(history()) + app.use(setHeaders) app.use('/_next', expressStaticGzip(nextDir, cacheOneYear)) app.get('*', expressStaticGzip(buildDir, cacheNone)) + app.use(notFound) const port = getenv('WEB_PORT_PROD') app.listen(port, () => { diff --git a/web/yarn.lock b/web/yarn.lock index 85be12ec09..b640693923 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -2,12 +2,18 @@ # yarn lockfile v1 +"@adobe/css-tools@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" + integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== + "@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@7.12.11": version "7.12.11" @@ -16,470 +22,313 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/highlight" "^7.16.7" + "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" - integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== - -"@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== - -"@babel/core@7.12.9": - version "7.12.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" - integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.5" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.7" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.9" - "@babel/types" "^7.12.7" - 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/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733" + integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g== -"@babel/core@7.17.9", "@babel/core@^7.11.6": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" - integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== +"@babel/core@7.12.9", "@babel/core@7.20.5", "@babel/core@7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.19.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" + integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ== dependencies: "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.9" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.5" + "@babel/parser" "^7.20.5" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/core@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - 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/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0": - version "7.17.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225" - integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.17.2" - "@babel/parser" "^7.17.3" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - "@babel/eslint-parser@^7.16.3": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6" - integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA== + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: - eslint-scope "^5.1.1" + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.17.3", "@babel/generator@^7.7.2", "@babel/generator@^7.9.0": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" - integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== +"@babel/generator@^7.20.5", "@babel/generator@^7.7.2": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.5.tgz#cb25abee3178adf58d6814b68517c62bdbfdda95" + integrity sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.20.5" + "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" - source-map "^0.5.0" -"@babel/generator@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" - integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" + "@babel/types" "^7.18.6" -"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: - "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/compat-data" "^7.20.0" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + semver "^6.3.0" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.2", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.8.3": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz#327154eedfb12e977baa4ecc72e5806720a85a06" + integrity sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww== dependencies: - "@babel/compat-data" "^7.16.4" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.19.1" + "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" + integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.2.1" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6", "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-class-features-plugin@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" - integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" - -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: - "@babel/types" "^7.16.7" + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.18.9" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.9.0": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0" - integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" "@babel/helper-plugin-utils@7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.2", "@babel/helpers@^7.9.0": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" - integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.0" - "@babel/types" "^7.17.0" - -"@babel/helpers@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" - integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" + integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" + +"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.15.7", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/helpers@^7.20.5": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.6.tgz#e64778046b70e04779dfbdf924e7ebb45992c763" + integrity sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/node@7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.16.8.tgz#57ba1dfa63dbcc72d477f05597ce07f1c4f8b558" - integrity sha512-V2dopEtPUL4LD+e8UtMIZB6BbsmMsS/7E1ZAvWNINzBfi7Cf3X9MLCpzHVZT4HeeF1lQl72IRtqqVt2RUImwyA== +"@babel/node@7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.20.5.tgz#5afdc32f4e195019b6c566f418ad630a9ee42695" + integrity sha512-ElSr40UtumWE4fYYF1xfLP2C6b9nfS/rswK7YYpLo9HDGEXGXEAWZaGCxIirxGIDyoV0rbl6jV1LyFMQ6ZOQSA== dependencies: - "@babel/register" "^7.16.8" + "@babel/register" "^7.18.9" commander "^4.0.1" - core-js "^3.20.2" + core-js "^3.26.0" node-environment-flags "^1.0.5" - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.11" v8flags "^3.1.1" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.9.0": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" - integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" + integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== -"@babel/parser@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" - integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9" + integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@7.8.3": @@ -490,65 +339,64 @@ "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== +"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@7.17.9", "@babel/plugin-proposal-decorators@7.8.3", "@babel/plugin-proposal-decorators@^7.16.4": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz#67a1653be9c77ce5b6c318aa90c8287b87831619" - integrity sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA== +"@babel/plugin-proposal-decorators@7.20.5", "@babel/plugin-proposal-decorators@7.8.3", "@babel/plugin-proposal-decorators@^7.16.4": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.5.tgz#28ba1a0e5044664a512967a19407d7fc26925394" + integrity sha512-Lac7PpRJXcC3s9cKsBfl+uc+DYXU5FD06BrTFunQO6QIQT+DwyzDPURAowI3bcvD1dZF/ank1Z5rstUJn3Hn4Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.9" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/plugin-syntax-decorators" "^7.17.0" - charcodes "^0.2.0" + "@babel/helper-create-class-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.19.1" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.19.0" -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": @@ -559,12 +407,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@7.8.3": @@ -575,12 +423,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== +"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@7.12.1": @@ -592,23 +440,23 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== +"@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d" + integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.20.1" -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-proposal-optional-chaining@7.9.0": @@ -619,40 +467,40 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" + integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -682,12 +530,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" - integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== +"@babel/plugin-syntax-decorators@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599" + integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -703,12 +551,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.16.7", "@babel/plugin-syntax-flow@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" - integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== +"@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -731,12 +586,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" - integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== +"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -794,93 +649,94 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== +"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== +"@babel/plugin-transform-block-scoping@^7.20.2": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz#401215f9dc13dc5262940e2e527c9536b3d7f237" + integrity sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-classes@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2" + integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.19.1" + "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.3.tgz#c445f75819641788a27a0a3a759d9df911df6abc" - integrity sha512-dDFzegDYKlPqa72xIlbmSkly5MluLoaC1JswABGktyt6NTXSBcUuse/kWE/wvKFWJHPETpi158qJZFS3JmykJg== +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" + integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-flow-strip-types@7.9.0": version "7.9.0" @@ -891,123 +747,121 @@ "@babel/plugin-syntax-flow" "^7.8.3" "@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" - integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f" + integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-flow" "^7.16.7" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-flow" "^7.18.6" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd" + integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== +"@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c" + integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-simple-access" "^7.19.4" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d" + integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-validator-identifier" "^7.19.1" -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz#f8f9186c681d10c3de7620c916156d893c8a019e" + integrity sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a" - integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw== +"@babel/plugin-transform-react-constant-elements@^7.18.12": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz#3f02c784e0b711970d7d8ccc96c4359d64e27ac7" + integrity sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-react-display-name@7.8.3": version "7.8.3" @@ -1016,66 +870,67 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.16.7", "@babel/plugin-transform-react-display-name@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" - integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-react-jsx-development@^7.16.7", "@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" - integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== +"@babel/plugin-transform-react-jsx-development@^7.18.6", "@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx-self@^7.9.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz#f432ad0cba14c4a1faf44f0076c69e42a4d4479e" - integrity sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" + integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz#1879c3f23629d287cc6186a6c683154509ec70c0" - integrity sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw== + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.9.1": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" - integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== +"@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.9.1": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" + integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.17.0" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.19.0" -"@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" - integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-runtime@7.9.0": version "7.9.0" @@ -1088,108 +943,109 @@ semver "^5.5.1" "@babel/plugin-transform-runtime@^7.16.4": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-typescript@^7.16.7": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" - integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-typescript" "^7.16.7" - -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/preset-env@7.16.11", "@babel/preset-env@7.9.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== - dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6" + integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz#91515527b376fc122ba83b13d70b01af8fe98f3f" + integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.20.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@7.20.2", "@babel/preset-env@7.9.0", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.19.4": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -1199,44 +1055,44 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" - "@babel/plugin-transform-new-target" "^7.16.7" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" - "@babel/plugin-transform-reserved-words" "^7.16.7" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -1262,31 +1118,31 @@ "@babel/plugin-transform-react-jsx-self" "^7.9.0" "@babel/plugin-transform-react-jsx-source" "^7.9.0" -"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" - integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== +"@babel/preset-react@^7.16.0", "@babel/preset-react@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.16.7" - "@babel/plugin-transform-react-jsx-development" "^7.16.7" - "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" -"@babel/preset-typescript@7.16.7", "@babel/preset-typescript@7.9.0", "@babel/preset-typescript@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" - integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== +"@babel/preset-typescript@7.18.6", "@babel/preset-typescript@7.9.0", "@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-typescript" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" -"@babel/register@^7.16.8": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.0.tgz#8051e0b7cb71385be4909324f072599723a1f084" - integrity sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg== +"@babel/register@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c" + integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -1295,81 +1151,52 @@ source-map-support "^0.5.16" "@babel/runtime-corejs3@^7.10.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz#fdca2cd05fba63388babe85d349b6801b008fd13" - integrity sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg== - dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" - -"@babel/runtime@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.0.tgz#337eda67401f5b066a6f205a3113d4ac18ba495b" - integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@^7.9.6": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" - integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.17.8": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" - integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.12.7", "@babel/template@^7.16.7", "@babel/template@^7.3.3", "@babel/template@^7.8.6": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2", "@babel/traverse@^7.9.0": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" - integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.9" - "@babel/types" "^7.17.0" + version "7.20.6" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.6.tgz#63dae945963539ab0ad578efbf3eff271e7067ae" + integrity sha512-tqeujPiuEfcH067mx+7otTQWROVMKHXEaOQcAeNV5dDdbPWvPcFA8/W9LXw2NfjNmOetqLl03dfnG2WALPlsRQ== + dependencies: + core-js-pure "^3.25.1" + regenerator-runtime "^0.13.11" + +"@babel/runtime@7.20.5", "@babel/runtime@7.9.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.5.tgz#6e1e187d7eaafdb9e0354f9a4815a8e10c8b4cfe" + integrity sha512-+4k537wJj1TFJnGfT3gHR5gz5os0XUVYebg4Utdq0KtIxJqiWHtHSSivHBIMFR5Bt0uojHXJKExtKbOywqDtFg== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.18.10", "@babel/template@^7.3.3": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.5.tgz#78eb244bea8270fdda1ef9af22a5d5e5b7e57133" + integrity sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.5" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.5" + "@babel/types" "^7.20.5" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.9.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84" + integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1377,54 +1204,70 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@csstools/postcss-color-function@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.0.tgz#229966327747f58fbe586de35daa139db3ce1e5d" - integrity sha512-5D5ND/mZWcQoSfYnSPsXtuiFxhzmhxt6pcjrFLJyldj+p0ZN2vvRpYNX+lahFTtMhAYOa2WmkdGINr0yP0CvGA== +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== + dependencies: + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" -"@csstools/postcss-font-format-keywords@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.0.tgz#7e7df948a83a0dfb7eb150a96e2390ac642356a1" - integrity sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q== +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-hwb-function@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.0.tgz#d6785c1c5ba8152d1d392c66f3a6a446c6034f6d" - integrity sha512-VSTd7hGjmde4rTj1rR30sokY3ONJph1reCBTUXqeW1fKwETPy1x4t/XIeaaqbMbC5Xg4SM/lyXZ2S8NELT2TaA== +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-ic-unit@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.0.tgz#f484db59fc94f35a21b6d680d23b0ec69b286b7f" - integrity sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA== +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" -"@csstools/postcss-is-pseudo-class@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.2.tgz#a834ca11a43d6ed9bc9e3ff53c80d490a4b1aaad" - integrity sha512-L9h1yxXMj7KpgNzlMrw3isvHJYkikZgZE4ASwssTnGEH8tm50L6QsM9QQT5wR4/eO5mU0rN5axH7UzNxEYg5CA== +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== dependencies: + "@csstools/selector-specificity" "^2.0.0" postcss-selector-parser "^6.0.10" -"@csstools/postcss-normalize-display-values@^1.0.0": +"@csstools/postcss-nested-calc@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.0.tgz#ce698f688c28517447aedf15a9037987e3d2dc97" - integrity sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ== + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-oklab-function@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.0.tgz#e9a269487a292e0930760948e923e1d46b638ee6" - integrity sha512-e/Q5HopQzmnQgqimG9v3w2IG4VRABsBq3itOcn4bnm+j4enTgQZ0nWsaH/m9GV2otWGQ0nwccYL5vmLKyvP1ww== +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" @@ -1436,140 +1279,188 @@ dependencies: postcss-value-parser "^4.2.0" +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36" + integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== + "@discoveryjs/json-ext@^0.5.0": - version "0.5.6" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz#d5e0706cf8c6acd8c6032f8d54070af261bbbb2f" - integrity sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA== - -"@emotion/babel-plugin@^11.7.1": - version "11.7.2" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz#fec75f38a6ab5b304b0601c74e2a5e77c95e5fa0" - integrity sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/runtime" "^7.13.10" - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.5" - "@emotion/serialize" "^1.0.2" - babel-plugin-macros "^2.6.1" + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@emotion/babel-plugin@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" + integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.1" + babel-plugin-macros "^3.1.0" convert-source-map "^1.5.0" escape-string-regexp "^4.0.0" find-root "^1.1.0" source-map "^0.5.7" - stylis "4.0.13" + stylis "4.1.3" -"@emotion/cache@^11.4.0", "@emotion/cache@^11.7.1": - version "11.7.1" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" - integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== +"@emotion/cache@^11.10.5", "@emotion/cache@^11.4.0": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" + integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== dependencies: - "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.1.0" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - stylis "4.0.13" + "@emotion/memoize" "^0.8.0" + "@emotion/sheet" "^1.2.1" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + stylis "4.1.3" -"@emotion/hash@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== +"@emotion/hash@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" + integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== "@emotion/is-prop-valid@^1.1.0": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95" - integrity sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ== + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== dependencies: - "@emotion/memoize" "^0.7.4" + "@emotion/memoize" "^0.8.0" -"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" - integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== "@emotion/react@^11.8.1": - version "11.9.0" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.9.0.tgz#b6d42b1db3bd7511e7a7c4151dc8bc82e14593b8" - integrity sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/babel-plugin" "^11.7.1" - "@emotion/cache" "^11.7.1" - "@emotion/serialize" "^1.0.3" - "@emotion/utils" "^1.1.0" - "@emotion/weak-memoize" "^0.2.5" + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" + integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" hoist-non-react-statics "^3.3.1" -"@emotion/serialize@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965" - integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A== - dependencies: - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.4" - "@emotion/unitless" "^0.7.5" - "@emotion/utils" "^1.0.0" - csstype "^3.0.2" - -"@emotion/serialize@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.3.tgz#99e2060c26c6292469fb30db41f4690e1c8fea63" - integrity sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA== +"@emotion/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" + integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== dependencies: - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.4" - "@emotion/unitless" "^0.7.5" - "@emotion/utils" "^1.0.0" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/unitless" "^0.8.0" + "@emotion/utils" "^1.2.0" csstype "^3.0.2" -"@emotion/sheet@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" - integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== +"@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== "@emotion/stylis@^0.8.4": version "0.8.5" resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@^0.7.4", "@emotion/unitless@^0.7.5": +"@emotion/unitless@^0.7.4": version "0.7.5" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== -"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" - integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== +"@emotion/unitless@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== -"@emotion/weak-memoize@^0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== -"@eslint/eslintrc@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.2.tgz#4989b9e8c0216747ee7cca314ae73791bb281aae" - integrity sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg== +"@emotion/utils@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" + integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== + +"@emotion/weak-memoize@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" + integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== + +"@eslint/eslintrc@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.1" - globals "^13.9.0" + espree "^9.4.0" + globals "^13.15.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" - minimatch "^3.0.4" + minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== +"@floating-ui/core@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.0.4.tgz#03066eaea8e9b2a2cd3f5aaa60f1e0f580ebe88e" + integrity sha512-FPFLbg2b06MIw1dqk2SOEMAMX3xlrreGjcui5OTxfBDtaKTmh0kioOVjT8gcfl58juawL/yF+S+gnq8aUYQx/Q== + +"@floating-ui/dom@^1.0.1": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.0.9.tgz#3ae1d3e776bc90b9d33b1922f9498fb6f80f3b12" + integrity sha512-nF9P6/BoARdt+h+CdUW3td4EUVngeDONCGuzRgnZveRZiJETx63cxhinE0JaPPC2tbcdTY9IGZocS5/7ag3xRg== + dependencies: + "@floating-ui/core" "^1.0.4" + +"@humanwhocodes/config-array@^0.11.6": + version "0.11.7" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" + integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" @@ -1600,110 +1491,110 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.0.2.tgz#d11e8b43ae431ae9b3112656848417ae4008fcad" - integrity sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA== +"@jest/console@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.3.1.tgz#3e3f876e4e47616ea3b1464b9fbda981872e9583" + integrity sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg== dependencies: - "@jest/types" "^28.0.2" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^28.0.2" - jest-util "^28.0.2" + jest-message-util "^29.3.1" + jest-util "^29.3.1" slash "^3.0.0" -"@jest/core@^28.0.3": - version "28.0.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.0.3.tgz#2b8223914ef6ae16ff740e65235ef8ef49c46d52" - integrity sha512-cCQW06vEZ+5r50SB06pOnSWsOBs7F+lswPYnKKfBz1ncLlj1sMqmvjgam8q40KhlZ8Ut4eNAL2Hvfx4BKIO2FA== +"@jest/core@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.3.1.tgz#bff00f413ff0128f4debec1099ba7dcd649774a1" + integrity sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw== dependencies: - "@jest/console" "^28.0.2" - "@jest/reporters" "^28.0.3" - "@jest/test-result" "^28.0.2" - "@jest/transform" "^28.0.3" - "@jest/types" "^28.0.2" + "@jest/console" "^29.3.1" + "@jest/reporters" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^28.0.2" - jest-config "^28.0.3" - jest-haste-map "^28.0.2" - jest-message-util "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.0.3" - jest-resolve-dependencies "^28.0.3" - jest-runner "^28.0.3" - jest-runtime "^28.0.3" - jest-snapshot "^28.0.3" - jest-util "^28.0.2" - jest-validate "^28.0.2" - jest-watcher "^28.0.2" + jest-changed-files "^29.2.0" + jest-config "^29.3.1" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-resolve-dependencies "^29.3.1" + jest-runner "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" + jest-watcher "^29.3.1" micromatch "^4.0.4" - pretty-format "^28.0.2" - rimraf "^3.0.0" + pretty-format "^29.3.1" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.0.2.tgz#a865949d876b2d364b979bbc0a46338ffd23de26" - integrity sha512-IvI7dEfqVEffDYlw9FQfVBt6kXt/OI38V7QUIur0ulOQgzpKYJDVvLzj4B1TVmHWTGW5tcnJdlZ3hqzV6/I9Qg== +"@jest/environment@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.3.1.tgz#eb039f726d5fcd14698acd072ac6576d41cfcaa6" + integrity sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag== dependencies: - "@jest/fake-timers" "^28.0.2" - "@jest/types" "^28.0.2" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" - jest-mock "^28.0.2" + jest-mock "^29.3.1" -"@jest/expect-utils@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.0.2.tgz#0a055868d225261eac82a12013e2e0735238774d" - integrity sha512-YryfH2zN5c7M8eLtn9oTBRj1sfD+X4cHNXJnTejqCveOS33wADEZUxJ7de5++lRvByNpRpfAnc8zTK7yrUJqgA== +"@jest/expect-utils@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" + integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g== dependencies: - jest-get-type "^28.0.2" + jest-get-type "^29.2.0" -"@jest/expect@^28.0.3": - version "28.0.3" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.0.3.tgz#80e0233bee62586e1112f904d28b904dd1143ef2" - integrity sha512-VEzZr85bqNomgayQkR7hWG5HnbZYWYWagQriZsixhLmOzU6PCpMP61aeVhkCoRrg7ri5f7JDpeTPzDAajIwFHw== +"@jest/expect@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.3.1.tgz#456385b62894349c1d196f2d183e3716d4c6a6cd" + integrity sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg== dependencies: - expect "^28.0.2" - jest-snapshot "^28.0.3" + expect "^29.3.1" + jest-snapshot "^29.3.1" -"@jest/fake-timers@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.0.2.tgz#d36e62bc58f39d65ea6adac1ff7749e63aff05f3" - integrity sha512-R75yUv+WeybPa4ZVhX9C+8XN0TKjUoceUX+/QEaDVQGxZZOK50eD74cs7iMDTtpodh00d8iLlc9197vgF6oZjA== +"@jest/fake-timers@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.3.1.tgz#b140625095b60a44de820876d4c14da1aa963f67" + integrity sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A== dependencies: - "@jest/types" "^28.0.2" - "@sinonjs/fake-timers" "^9.1.1" + "@jest/types" "^29.3.1" + "@sinonjs/fake-timers" "^9.1.2" "@types/node" "*" - jest-message-util "^28.0.2" - jest-mock "^28.0.2" - jest-util "^28.0.2" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-util "^29.3.1" -"@jest/globals@^28.0.3": - version "28.0.3" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.0.3.tgz#70f68a06c863d1c9d14aea151c69b9690e3efeb4" - integrity sha512-q/zXYI6CKtTSIt1WuTHBYizJhH7K8h+xG5PE3C0oawLlPIvUMDYmpj0JX0XsJwPRLCsz/fYXHZVG46AaEhSPmw== +"@jest/globals@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.3.1.tgz#92be078228e82d629df40c3656d45328f134a0c6" + integrity sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q== dependencies: - "@jest/environment" "^28.0.2" - "@jest/expect" "^28.0.3" - "@jest/types" "^28.0.2" + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/types" "^29.3.1" + jest-mock "^29.3.1" -"@jest/reporters@^28.0.3": - version "28.0.3" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.0.3.tgz#9996189e5552e37fcdffe0f41c07754f5d2ea854" - integrity sha512-xrbIc7J/xwo+D7AY3enAR9ZWYCmJ8XIkstTukTGpKDph0gLl/TJje9jl3dssvE4KJzYqMKiSrnE5Nt68I4fTEg== +"@jest/reporters@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.3.1.tgz#9a6d78c109608e677c25ddb34f907b90e07b4310" + integrity sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^28.0.2" - "@jest/test-result" "^28.0.2" - "@jest/transform" "^28.0.3" - "@jest/types" "^28.0.2" - "@jridgewell/trace-mapping" "^0.3.7" + "@jest/console" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1715,47 +1606,48 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-util "^28.0.2" - jest-worker "^28.0.2" + jest-message-util "^29.3.1" + jest-util "^29.3.1" + jest-worker "^29.3.1" slash "^3.0.0" string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^9.0.0" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" -"@jest/schemas@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" - integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== +"@jest/schemas@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" + integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== dependencies: - "@sinclair/typebox" "^0.23.3" + "@sinclair/typebox" "^0.24.1" -"@jest/source-map@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90" - integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw== +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.0.2.tgz#bc8e15a95347e3c2149572ae06a5a6fed939c522" - integrity sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA== +"@jest/test-result@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.3.1.tgz#92cd5099aa94be947560a24610aa76606de78f50" + integrity sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw== dependencies: - "@jest/console" "^28.0.2" - "@jest/types" "^28.0.2" + "@jest/console" "^29.3.1" + "@jest/types" "^29.3.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.0.2.tgz#7669b7d8ff2aa7a8221b11bb37cce552de81b1bb" - integrity sha512-zhnZ8ydkZQTPL7YucB86eOlD79zPy5EGSUKiR2Iv93RVEDU6OEP33kwDBg70ywOcxeJGDRhyo09q7TafNCBiIg== +"@jest/test-sequencer@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz#fa24b3b050f7a59d48f7ef9e0b782ab65123090d" + integrity sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA== dependencies: - "@jest/test-result" "^28.0.2" + "@jest/test-result" "^29.3.1" graceful-fs "^4.2.9" - jest-haste-map "^28.0.2" + jest-haste-map "^29.3.1" slash "^3.0.0" "@jest/transform@^27.5.1": @@ -1779,22 +1671,22 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/transform@^28.0.3": - version "28.0.3" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.0.3.tgz#591fb5ebc1d84db5c5f21e1225c7406c35f5eb1e" - integrity sha512-+Y0ikI7SwoW/YbK8t9oKwC70h4X2Gd0OVuz5tctRvSV/EDQU00AAkoqevXgPSSFimUmp/sp7Yl8s/1bExDqOIg== +"@jest/transform@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d" + integrity sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^28.0.2" - "@jridgewell/trace-mapping" "^0.3.7" + "@jest/types" "^29.3.1" + "@jridgewell/trace-mapping" "^0.3.15" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^28.0.2" - jest-regex-util "^28.0.2" - jest-util "^28.0.2" + jest-haste-map "^29.3.1" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1811,43 +1703,65 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.0.2.tgz#70b9538c1863fb060b2f438ca008b5563d00c5b4" - integrity sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A== +"@jest/types@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3" + integrity sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA== dependencies: - "@jest/schemas" "^28.0.2" + "@jest/schemas" "^29.0.0" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.7": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" "@mdx-js/loader@1.6.22": version "1.6.22" @@ -1898,78 +1812,155 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== -"@next/eslint-plugin-next@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.5.tgz#273885b35e6bbcd40ff1436d2a8d0ec03fb6f6ef" - integrity sha512-Cnb8ERC5bNKBFrnMH6203sp/b0Y78QRx1XsFu+86oBtDBmQmOFoHu7teQjHm69ER73XKK3aGaeoLiXacHoUFsg== +"@next/env@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.3.4.tgz#c787837d36fcad75d72ff8df6b57482027d64a47" + integrity sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A== + +"@next/eslint-plugin-next@13.0.6": + version "13.0.6" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.6.tgz#4d73774ede50183c5ae5bab01ec4a7dd2d11fed5" + integrity sha512-JUANdYNCddhmQBjQQPxEJYL7GMCqYtbfrdmtX7c013srig7waNCG69Aoql7CgAgjdy8jn1ovHVdcF/NB46XN3Q== dependencies: glob "7.1.7" -"@next/mdx@12.1.5": - version "12.1.5" - resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-12.1.5.tgz#302fbf195b406d32423f6a0317771d3b27f88e8e" - integrity sha512-3R8J/3jKz4bCAOWDKVhxXoUETy3eqC+zaNlgwLK7LAid3UZjioVZ+jxIJmopd1auqjpev7doKeRE2p8YG55QLg== +"@next/mdx@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-12.3.4.tgz#1bd3e4df37040ba20fceff33d25791a3199745d3" + integrity sha512-YTF/ph9NMKjmrNsr8O+y3IiZee9TaxSd6051qI0Fj/du75pKRRZ1DnOX6ZS7mMgswH7VMERVV7fBZxmJr9sN7Q== "@next/swc-android-arm-eabi@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== +"@next/swc-android-arm-eabi@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.4.tgz#fd1c2dafe92066c6120761c6a39d19e666dc5dd0" + integrity sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA== + "@next/swc-android-arm64@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== +"@next/swc-android-arm64@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.3.4.tgz#11a146dae7b8bca007239b21c616e83f77b19ed4" + integrity sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg== + "@next/swc-darwin-arm64@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== +"@next/swc-darwin-arm64@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.4.tgz#14ac8357010c95e67327f47082af9c9d75d5be79" + integrity sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA== + "@next/swc-darwin-x64@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== +"@next/swc-darwin-x64@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.4.tgz#e7dc63cd2ac26d15fb84d4d2997207fb9ba7da0f" + integrity sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ== + +"@next/swc-freebsd-x64@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.4.tgz#fe7ceec58746fdf03f1fcb37ec1331c28e76af93" + integrity sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ== + "@next/swc-linux-arm-gnueabihf@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== +"@next/swc-linux-arm-gnueabihf@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.4.tgz#d7016934d02bfc8bd69818ffb0ae364b77b17af7" + integrity sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw== + "@next/swc-linux-arm64-gnu@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== +"@next/swc-linux-arm64-gnu@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.4.tgz#43a7bc409b03487bff5beb99479cacdc7bd29af5" + integrity sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA== + "@next/swc-linux-arm64-musl@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== +"@next/swc-linux-arm64-musl@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.4.tgz#4d1db6de6dc982b974cd1c52937111e3e4a34bd3" + integrity sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ== + "@next/swc-linux-x64-gnu@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== +"@next/swc-linux-x64-gnu@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.4.tgz#c3b414d77bab08b35f7dd8943d5586f0adb15e38" + integrity sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag== + "@next/swc-linux-x64-musl@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== +"@next/swc-linux-x64-musl@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.4.tgz#187a883ec09eb2442a5ebf126826e19037313c61" + integrity sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg== + "@next/swc-win32-arm64-msvc@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== +"@next/swc-win32-arm64-msvc@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.4.tgz#89befa84e453ed2ef9a888f375eba565a0fde80b" + integrity sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ== + "@next/swc-win32-ia32-msvc@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== +"@next/swc-win32-ia32-msvc@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.4.tgz#cb50c08f0e40ead63642a7f269f0c8254261f17c" + integrity sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ== + "@next/swc-win32-x64-msvc@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== +"@next/swc-win32-x64-msvc@12.3.4": + version "12.3.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.4.tgz#d28ea15a72cdcf96201c60a43e9630cd7fda168f" + integrity sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1983,7 +1974,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -2001,190 +1992,181 @@ error-stack-parser "^2.0.0" string-width "^4.2.3" -"@popperjs/core@^2.6.0": - version "2.11.2" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.2.tgz#830beaec4b4091a9e9398ac50f865ddea52186b9" - integrity sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA== - -"@primer/css@19.8.2": - version "19.8.2" - resolved "https://registry.yarnpkg.com/@primer/css/-/css-19.8.2.tgz#4bdac86e9a11894a53e39c62ddfe0db0282fb367" - integrity sha512-Zjgk0asxDVj+QY8Ej3DLeJHEMzxlW4ejwmtUk3QzwUJG6R1FzCuGzrTuEN2hFugsvlPDVd1geeKfiskLEjkfOQ== - dependencies: - "@primer/primitives" "^7.7.0" - -"@primer/primitives@^7.7.0": - version "7.8.2" - resolved "https://registry.yarnpkg.com/@primer/primitives/-/primitives-7.8.2.tgz#b6e6d49b1ec6968293de092ede2b54de8d0e69cf" - integrity sha512-rM9rkG9J9B3xVU3sCiAE5LL6xj3Y6Bgg4jnZIkZ4yE506yXDb2lPnCqCH5aJ1k64oP4GZWOC9aDSksvX5CRwqA== - -"@rushstack/eslint-patch@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz#be3e914e84eacf16dbebd311c0d0b44aa1174c64" - integrity sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw== - -"@rushstack/eslint-patch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.0.tgz#7f698254aadf921e48dda8c0a6b304026b8a9323" - integrity sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A== +"@rushstack/eslint-patch@^1.1.0", "@rushstack/eslint-patch@^1.1.3": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== "@schemastore/package@0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@schemastore/package/-/package-0.0.6.tgz#9a76713da1c7551293b7e72e4f387f802bfd5d81" integrity sha512-uNloNHoyHttSSdeuEkkSC+mdxJXMKlcUPOMb//qhQbIQijXg8x54VmAw3jm6GJZQ5DBtIqGBd66zEQCDCChQVA== -"@sinclair/typebox@^0.23.3": - version "0.23.5" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" - integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== "@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^9.1.1": +"@sinonjs/fake-timers@^9.1.2": version "9.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== dependencies: "@sinonjs/commons" "^1.7.0" -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== +"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" + integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== +"@svgr/babel-plugin-remove-jsx-attribute@*": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz#652bfd4ed0a0699843585cda96faeb09d6e1306e" + integrity sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA== -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== +"@svgr/babel-plugin-remove-jsx-empty-expression@*": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz#4b78994ab7d39032c729903fc2dd5c0fa4565cb8" + integrity sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw== -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" + integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== +"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" + integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== +"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" + integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== +"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" + integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== +"@svgr/babel-plugin-transform-svg-component@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" + integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== +"@svgr/babel-preset@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" + integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute" "*" + "@svgr/babel-plugin-remove-jsx-empty-expression" "*" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" + "@svgr/babel-plugin-transform-svg-component" "^6.5.1" + +"@svgr/core@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" + integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== dependencies: - "@svgr/plugin-jsx" "^5.5.0" + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" camelcase "^6.2.0" - cosmiconfig "^7.0.0" + cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== +"@svgr/hast-util-to-babel-ast@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" + integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== dependencies: - "@babel/types" "^7.12.6" + "@babel/types" "^7.20.0" + entities "^4.4.0" -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== +"@svgr/plugin-jsx@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" + integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/hast-util-to-babel-ast" "^6.5.1" + svg-parser "^2.0.4" -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== +"@svgr/plugin-svgo@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" + integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== dependencies: - cosmiconfig "^7.0.0" + cosmiconfig "^7.0.1" deepmerge "^4.2.2" - svgo "^1.2.2" + svgo "^2.8.0" -"@svgr/webpack@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== +"@svgr/webpack@6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" + integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== + dependencies: + "@babel/core" "^7.19.6" + "@babel/plugin-transform-react-constant-elements" "^7.18.12" + "@babel/preset-env" "^7.19.4" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@svgr/core" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + "@svgr/plugin-svgo" "^6.5.1" + +"@swc/helpers@0.4.11": + version "0.4.11" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" + integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw== + dependencies: + tslib "^2.4.0" + +"@tanstack/match-sorter-utils@^8.7.0": + version "8.7.0" + resolved "https://registry.yarnpkg.com/@tanstack/match-sorter-utils/-/match-sorter-utils-8.7.0.tgz#60b09a6d3d7974d5f86f1318053c1bd5a85fb0be" + integrity sha512-OgfIPMHTfuw9JGcXCCoEHWFP/eSP2eyhCYwkrFnWBM3NbUPAgOlFP11DbM7cozDRVB0XbPr1tD4pLAtWKlVUVg== dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" + remove-accents "0.4.2" -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== +"@tanstack/query-core@4.19.1": + version "4.19.1" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.19.1.tgz#2e92d9e8a50884eb231c5beb4386e131ebe34306" + integrity sha512-Zp0aIose5C8skBzqbVFGk9HJsPtUhRVDVNWIqVzFbGQQgYSeLZMd3Sdb4+EnA5wl1J7X+bre2PJGnQg9x/zHOA== + +"@tanstack/react-query-devtools@4.19.1": + version "4.19.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-4.19.1.tgz#850058df8dba932362838c17f566bd717044449b" + integrity sha512-U63A+ly9JLPJj7ryR9omdXT3n+gS7jlExrHty4klsd/6xdUhC38CKZyZ0Gi3vctaVYRGTU8/vI+uKzBYdFqLaA== dependencies: - defer-to-connect "^1.0.1" + "@tanstack/match-sorter-utils" "^8.7.0" + superjson "^1.10.0" + use-sync-external-store "^1.2.0" -"@testing-library/dom@^8.11.1": - version "8.11.3" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.11.3.tgz#38fd63cbfe14557021e88982d931e33fb7c1a808" - integrity sha512-9LId28I+lx70wUiZjLvi1DB/WT2zGOxUh46glrSNMaWVx849kKAluezVzZrXJfTKKoQTmEOutLes/bHg4Bj3aA== +"@tanstack/react-query@4.19.1": + version "4.19.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.19.1.tgz#43356dd537127e76d75f5a2769eb23dafd9a3690" + integrity sha512-5dvHvmc0vrWI03AJugzvKfirxCyCLe+qawrWFCXdu8t7dklIhJ7D5ZhgTypv7mMtIpdHPcECtCiT/+V74wCn2A== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^5.0.0" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.4.4" - pretty-format "^27.0.2" + "@tanstack/query-core" "4.19.1" + use-sync-external-store "^1.2.0" -"@testing-library/dom@^8.5.0": - version "8.13.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5" - integrity sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ== +"@testing-library/dom@^8.11.1", "@testing-library/dom@^8.5.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.0.tgz#bd3f83c217ebac16694329e413d9ad5fdcfd785f" + integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -2195,34 +2177,39 @@ lz-string "^1.4.4" pretty-format "^27.0.2" -"@testing-library/jest-dom@5.16.4": - version "5.16.4" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" - integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== +"@testing-library/jest-dom@5.16.5": + version "5.16.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== dependencies: + "@adobe/css-tools" "^4.0.1" "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" aria-query "^5.0.0" chalk "^3.0.0" - css "^3.0.0" css.escape "^1.5.1" dom-accessibility-api "^0.5.6" lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@13.1.1": - version "13.1.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.1.1.tgz#6c1635e25acca8ca5be8ee3b19ad1391681c5846" - integrity sha512-8mirlAa0OKaUvnqnZF6MdAh2tReYA2KtWVw1PKvaF5EcCZqgK5pl8iF+3uW90JdG5Ua2c2c2E2wtLdaug3dsVg== +"@testing-library/react@13.4.0": + version "13.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" + integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/dom" "^8.5.0" "@types/react-dom" "^18.0.0" -"@testing-library/user-event@14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.1.1.tgz#e1ff6118896e4b22af31e5ea2f9da956adde23d8" - integrity sha512-XrjH/iEUqNl9lF2HX9YhPNV7Amntkcnpw0Bo1KkRzowNDcgSN9i0nm4Q8Oi5wupgdfPaJNMAWa61A+voD6Kmwg== +"@testing-library/user-event@14.4.3": + version "14.4.3" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.4.3.tgz#af975e367743fa91989cd666666aec31a8f50591" + integrity sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/aria-query@^4.2.0": version "4.2.2" @@ -2230,9 +2217,9 @@ integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.18" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" - integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== + version "7.1.20" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359" + integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2256,9 +2243,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== + version "7.18.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== dependencies: "@babel/types" "^7.3.0" @@ -2277,28 +2264,12 @@ dependencies: classnames "*" -"@types/compare-versions@3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@types/compare-versions/-/compare-versions-3.3.0.tgz#a4634771f61cfc9326923d518ab8a04089e99314" - integrity sha512-5nlNADyetxvaPz7aJ6CHiT9T3u+tyemJFXxBNoxTrKv+zhOvS6d36/7naGZ1iZXvlATpCyGh2EcREHDdM4A+gg== - dependencies: - compare-versions "*" - -"@types/compression-webpack-plugin@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@types/compression-webpack-plugin/-/compression-webpack-plugin-9.0.0.tgz#d7d504e2268e84e1413a99c072d6ff9aee31f213" - integrity sha512-3DdireWRs+SoAIKhbBIowoUMwMOXVKrDHeIO82e7D6/yJRw6kgzFhCnamJJNo10uHJ7YqP1h+g5itW+HlLw7Lg== - dependencies: - tapable "^2.2.0" - webpack "^5.51.0" - -"@types/connect-history-api-fallback@1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" - integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== +"@types/compression@1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@types/compression/-/compression-1.7.2.tgz#7cc1cdb01b4730eea284615a68fc70a2cdfd5e71" + integrity sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg== dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" + "@types/express" "*" "@types/connect@*": version "3.4.35" @@ -2307,12 +2278,14 @@ dependencies: "@types/node" "*" -"@types/copy-webpack-plugin@6.4.3": - version "6.4.3" - resolved "https://registry.yarnpkg.com/@types/copy-webpack-plugin/-/copy-webpack-plugin-6.4.3.tgz#6604f06a2c9ca4516a453d2e4f87bf844819bccd" - integrity sha512-yk7QO2/WrtkDLcsqQXfjU3EIYzggNHVl5y6gnxfMtCPB+bxVUIUzwb1BNxlk+78wENoh9ZgkVSNqn80T9rqO8w== +"@types/copy-webpack-plugin@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@types/copy-webpack-plugin/-/copy-webpack-plugin-8.0.1.tgz#dc0a8801eeaef3dca812df793d1afc84fb8d648f" + integrity sha512-TwEeGse0/wq+t3SFW0DEwroMS/cDkwVZT+vj7tMAYTp7llt/yz6NuW2n04X2M5P/kSfBQOORhrHAN2mqZdmybg== dependencies: - "@types/webpack" "^4" + "@types/node" "*" + tapable "^2.0.0" + webpack "^5.1.0" "@types/d3-color@^2": version "2.0.3" @@ -2327,9 +2300,9 @@ "@types/d3-color" "^2" "@types/d3-path@^2": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-2.0.1.tgz#ca03dfa8b94d8add97ad0cd97e96e2006b4763cb" - integrity sha512-6K8LaFlztlhZO7mwsZg7ClRsdLg3FJRzIIi6SZXDWmmSJc2x8dd2VkESbLXdk3p8cuvz71f36S0y8Zv2AxqvQw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-2.0.2.tgz#6052f38f6186319769dfabab61b5514b0e02c75c" + integrity sha512-3YHpvDw9LzONaJzejXLOwZ3LqwwkoXb9LI2YN7Hbd6pkGo5nIlJ09ul4bQhBN4hQZJKmUpX8HkVqbzgUKY48cg== "@types/d3-scale@^3.0.0": version "3.3.2" @@ -2351,39 +2324,44 @@ integrity sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg== "@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" - integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + version "8.4.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.51": +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - version "4.17.28" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" - integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== +"@types/express-serve-static-core@^4.17.18": + version "4.17.31" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" -"@types/express@4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" - integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== +"@types/express@*", "@types/express@4.17.14": + version "4.17.14" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" + integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.18" @@ -2412,9 +2390,9 @@ "@types/node" "*" "@types/glob@*": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + version "8.0.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.0.0.tgz#321607e9cbaec54f687a0792b2d1d370739455d2" + integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -2433,11 +2411,6 @@ dependencies: "@types/unist" "*" -"@types/history@4.7.11": - version "4.7.11" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" - integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== - "@types/hoist-non-react-statics@*": version "3.3.1" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" @@ -2465,36 +2438,31 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest-axe@3.5.3": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@types/jest-axe/-/jest-axe-3.5.3.tgz#5af918553388aa0a448af75603b44093985778c6" - integrity sha512-ad9qI9f+00N8IlOuGh6dnZ6o0BDdV9VhGfTUr1zCejsPvOfZd6eohffe4JYxUoUuRYEftyMcaJ6Ux4+MsOpGHg== +"@types/jest-axe@3.5.5": + version "3.5.5" + resolved "https://registry.yarnpkg.com/@types/jest-axe/-/jest-axe-3.5.5.tgz#21fd8152dc3963bf6e1f72f34a7ce4e827838b7b" + integrity sha512-b8WDIdoeKtr/JDJ2+QjFXMuS8UhfdMA6+15Z5KjjIie3jQrSXD9KZWMSQxc0nPtx7L9rIFKdiDpQk+m7s4a/8w== dependencies: "@types/jest" "*" axe-core "^3.5.5" -"@types/jest@*", "@types/jest@27.4.1": - version "27.4.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" - integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== +"@types/jest@*", "@types/jest@29.2.4": + version "29.2.4" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.4.tgz#9c155c4b81c9570dbd183eb8604aa0ae80ba5a5b" + integrity sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A== dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - -"@types/js-yaml@4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" - integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== + expect "^29.0.0" + pretty-format "^29.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@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= + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash-webpack-plugin@0.11.6": version "0.11.6" @@ -2503,15 +2471,15 @@ dependencies: "@types/webpack" "^4" -"@types/lodash@4.14.182": - version "4.14.182" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" - integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== +"@types/lodash@4.14.191": + version "4.14.191" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa" + integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ== -"@types/luxon@2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-2.3.1.tgz#e34763178b46232e4c5f079f1706e18692415519" - integrity sha512-nAPUltOT28fal2eDZz8yyzNhBjHw1NEymFBP7Q9iCShqpflWPybxHbD7pw/46jQmT+HXOy1QN5hNTms8MOTlOQ== +"@types/luxon@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-3.1.0.tgz#b9842d233a06b267fe4117f1c224f20b8a149825" + integrity sha512-gCd/HcCgjqSxfMrgtqxCgYk/22NBQfypwFUG7ZAyG/4pqs51WLTcUzVp1hqTbieDYeHS3WoVEh2Yv/2l+7B0Vg== "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.10" @@ -2527,35 +2495,37 @@ dependencies: "@types/react" "*" -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/node@*": - version "17.0.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" - integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== +"@types/morgan@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@types/morgan/-/morgan-1.9.3.tgz#ae04180dff02c437312bc0cfb1e2960086b2f540" + integrity sha512-BiLcfVqGBZCyNCnCH3F4o2GmDLrpy0HeBVnNlyZG4fo88ZiE9SoiBe3C+2ezuwbjlEyT+PDZ17//TAlRxAn75Q== + dependencies: + "@types/node" "*" -"@types/node@17.0.30": - version "17.0.30" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.30.tgz#2c6e8512acac70815e8176aa30c38025067880ef" - integrity sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw== +"@types/node@*", "@types/node@18.11.11": + version "18.11.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.11.tgz#1d455ac0211549a8409d3cdb371cd55cc971e8dc" + integrity sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g== "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== -"@types/papaparse@5.3.2": - version "5.3.2" - resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.3.2.tgz#6ccace6eac8ddb03a6fd06883b84dd6c6561f69f" - integrity sha512-BNbCHJkTE4RwmAFkCxEalET4mDvGr/1ld7ZtQ4i/laWI/iiVt+GL07stdvufle4KfywyvloqqpIiJscXNCrKxA== +"@types/papaparse@5.3.5": + version "5.3.5" + resolved "https://registry.yarnpkg.com/@types/papaparse/-/papaparse-5.3.5.tgz#e5ad94b1fe98e2a8ea0b03284b83d2cb252bbf39" + integrity sha512-R1icl/hrJPFRpuYj9PVG03WBAlghJj4JW9Py5QdR8FFSxaLmZRyu7xYDCCBZIJNfUv3MYaeBbhBoX958mUTAaw== dependencies: "@types/node" "*" @@ -2570,19 +2540,14 @@ integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prettier@^2.1.5": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" - integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== + version "2.7.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" + integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== "@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/qs@*": version "6.9.7" @@ -2594,24 +2559,17 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-copy-to-clipboard@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.2.tgz#c29690b472a54edff35916f0d1c6c797ad0fd34b" - integrity sha512-O29AThfxrkUFRsZXjfSWR2yaWo0ppB1yLEnHA+Oh24oNetjBAwTDu1PmolIqdJKzsZiO4J1jn6R6TmO96uBvGg== - dependencies: - "@types/react" "*" - -"@types/react-dom@18.0.3", "@types/react-dom@^18.0.0": - version "18.0.3" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.3.tgz#a022ea08c75a476fe5e96b675c3e673363853831" - integrity sha512-1RRW9kst+67gveJRYPxGmVy8eVJ05O43hg77G2j5m76/RFJtMbcfAs2viQ2UNsvvDg8F7OfQZx8qQcl6ymygaQ== +"@types/react-copy-to-clipboard@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.4.tgz#558f2c38a97f53693e537815f6024f1e41e36a7e" + integrity sha512-otTJsJpofYAeaIeOwV5xBUGpo6exXG2HX7X4nseToCB2VgPEBxGBHCm/FecZ676doNR7HCSTVtmohxfG2b3/yQ== dependencies: "@types/react" "*" -"@types/react-helmet@6.1.5": - version "6.1.5" - resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.5.tgz#35f89a6b1646ee2bc342a33a9a6c8777933f9083" - integrity sha512-/ICuy7OHZxR0YCAZLNg9r7I9aijWUWvxaPR6uTuyxe8tAj5RL4Sw1+R6NhXUtOsarkGYPmaHdBDvuXh2DIN/uA== +"@types/react-dom@18.0.9", "@types/react-dom@^18.0.0": + version "18.0.9" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.9.tgz#ffee5e4bfc2a2f8774b15496474f8e7fe8d0b504" + integrity sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg== dependencies: "@types/react" "*" @@ -2630,33 +2588,21 @@ "@types/react" "*" "@types/react-transition-group@^4.4.0": - version "4.4.4" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" - integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== + version "4.4.5" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@18.0.8": - version "18.0.8" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.8.tgz#a051eb380a9fbcaa404550543c58e1cf5ce4ab87" - integrity sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw== +"@types/react@*", "@types/react@18.0.26": + version "18.0.26" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.26.tgz#8ad59fc01fef8eaf5c74f4ea392621749f0b7917" + integrity sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" -"@types/reactstrap@8.7.1": - version "8.7.1" - resolved "https://registry.yarnpkg.com/@types/reactstrap/-/reactstrap-8.7.1.tgz#d97554f21c3aa4f55d40af4a791d442b6c57accf" - integrity sha512-IgJRzJUhkzCj/J714FSbLnGTfaSk7n7QPytaJeBgvlN6AEkIYJEPbEB0dPqCsQ4mChKySgUm0P3OWSuuK///+g== - dependencies: - reactstrap "*" - -"@types/resize-observer-browser@^0.1.6": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz#294aaadf24ac6580b8fbd1fe3ab7b59fe85f9ef3" - integrity sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg== - "@types/rimraf@3.0.2": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.2.tgz#a63d175b331748e5220ad48c901d7bbf1f44eef8" @@ -2665,15 +2611,20 @@ "@types/glob" "*" "@types/node" "*" +"@types/route-parser@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@types/route-parser/-/route-parser-0.1.4.tgz#155686e569d19ff97779bf6bcb513360587748dd" + integrity sha512-lwH3SeyKwCAwP7oUoJNryPDdbW3Bx5lrB6mhV5iebqzOJHIut6wlaSxpQR4Lsk6j7wC08pGenr/xE8I/A4J3Fg== + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== -"@types/semver@7.3.9": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" - integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== "@types/serialize-javascript@5.0.2": version "5.0.2" @@ -2681,11 +2632,11 @@ integrity sha512-BRLlwZzRoZukGaBtcUxkLsZsQfWZpvog6MZk3PWQO9Q6pXmXFzjU5iGzZ+943evp6tkkbN98N1Z31KT0UG1yRw== "@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: - "@types/mime" "^1" + "@types/mime" "*" "@types/node" "*" "@types/source-list-map@*": @@ -2698,10 +2649,10 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/styled-components@5.1.25": - version "5.1.25" - resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.25.tgz#0177c4ab5fa7c6ed0565d36f597393dae3f380ad" - integrity sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ== +"@types/styled-components@5.1.26": + version "5.1.26" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.26.tgz#5627e6812ee96d755028a98dae61d28e57c233af" + integrity sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw== dependencies: "@types/hoist-non-react-statics" "*" "@types/react" "*" @@ -2713,16 +2664,16 @@ integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/testing-library__jest-dom@^5.9.1": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz#ee6c7ffe9f8595882ee7bda8af33ae7b8789ef17" - integrity sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw== + version "5.14.5" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" + integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== dependencies: "@types/jest" "*" "@types/uglify-js@*": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" - integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== + version "3.17.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== dependencies: source-map "^0.6.1" @@ -2746,9 +2697,9 @@ source-map "^0.7.3" "@types/webpack@^4": - version "4.41.32" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" - integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== + version "4.41.33" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" + integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== dependencies: "@types/node" "*" "@types/tapable" "^1" @@ -2778,124 +2729,129 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.10" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" - integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + version "17.0.17" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.17.tgz#5672e5621f8e0fca13f433a8017aae4b7a2a03e7" + integrity sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@5.21.0", "@typescript-eslint/eslint-plugin@^5.5.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.21.0.tgz#bfc22e0191e6404ab1192973b3b4ea0461c1e878" - integrity sha512-fTU85q8v5ZLpoZEyn/u1S2qrFOhi33Edo2CZ0+q1gDaWWm0JuPh3bgOyU8lM0edIEYgKLDkPFiZX2MOupgjlyg== +"@typescript-eslint/eslint-plugin@5.45.1", "@typescript-eslint/eslint-plugin@^5.5.0": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.45.1.tgz#ee5b51405f6c9ee7e60e4006d68c69450d3b4536" + integrity sha512-cOizjPlKEh0bXdFrBLTrI/J6B/QMlhwE9auOov53tgB+qMukH6/h8YAK/qw+QJGct/PTbdh2lytGyipxCcEtAw== dependencies: - "@typescript-eslint/scope-manager" "5.21.0" - "@typescript-eslint/type-utils" "5.21.0" - "@typescript-eslint/utils" "5.21.0" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" + "@typescript-eslint/scope-manager" "5.45.1" + "@typescript-eslint/type-utils" "5.45.1" + "@typescript-eslint/utils" "5.45.1" + debug "^4.3.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" regexpp "^3.2.0" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@5.10.1", "@typescript-eslint/parser@5.21.0", "@typescript-eslint/parser@^5.5.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.21.0.tgz#6cb72673dbf3e1905b9c432175a3c86cdaf2071f" - integrity sha512-8RUwTO77hstXUr3pZoWZbRQUxXcSXafZ8/5gpnQCfXvgmP9gpNlRGlWzvfbEQ14TLjmtU8eGnONkff8U2ui2Eg== +"@typescript-eslint/parser@5.45.1", "@typescript-eslint/parser@^5.42.0", "@typescript-eslint/parser@^5.5.0": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.45.1.tgz#6440ec283fa1373a12652d4e2fef4cb6e7b7e8c6" + integrity sha512-JQ3Ep8bEOXu16q0ztsatp/iQfDCtvap7sp/DKo7DWltUquj5AfCOpX2zSzJ8YkAVnrQNqQ5R62PBz2UtrfmCkA== dependencies: - "@typescript-eslint/scope-manager" "5.21.0" - "@typescript-eslint/types" "5.21.0" - "@typescript-eslint/typescript-estree" "5.21.0" - debug "^4.3.2" + "@typescript-eslint/scope-manager" "5.45.1" + "@typescript-eslint/types" "5.45.1" + "@typescript-eslint/typescript-estree" "5.45.1" + debug "^4.3.4" -"@typescript-eslint/scope-manager@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.14.0.tgz#ea518962b42db8ed0a55152ea959c218cb53ca7b" - integrity sha512-LazdcMlGnv+xUc5R4qIlqH0OWARyl2kaP8pVCS39qSL3Pd1F7mI10DbdXeARcE62sVQE4fHNvEqMWsypWO+yEw== +"@typescript-eslint/scope-manager@5.45.1": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.45.1.tgz#5b87d025eec7035d879b99c260f03be5c247883c" + integrity sha512-D6fCileR6Iai7E35Eb4Kp+k0iW7F1wxXYrOhX/3dywsOJpJAQ20Fwgcf+P/TDtvQ7zcsWsrJaglaQWDhOMsspQ== dependencies: - "@typescript-eslint/types" "5.14.0" - "@typescript-eslint/visitor-keys" "5.14.0" + "@typescript-eslint/types" "5.45.1" + "@typescript-eslint/visitor-keys" "5.45.1" -"@typescript-eslint/scope-manager@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.21.0.tgz#a4b7ed1618f09f95e3d17d1c0ff7a341dac7862e" - integrity sha512-XTX0g0IhvzcH/e3393SvjRCfYQxgxtYzL3UREteUneo72EFlt7UNoiYnikUtmGVobTbhUDByhJ4xRBNe+34kOQ== +"@typescript-eslint/scope-manager@5.46.0": + version "5.46.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.46.0.tgz#60790b14d0c687dd633b22b8121374764f76ce0d" + integrity sha512-7wWBq9d/GbPiIM6SqPK9tfynNxVbfpihoY5cSFMer19OYUA3l4powA2uv0AV2eAZV6KoAh6lkzxv4PoxOLh1oA== dependencies: - "@typescript-eslint/types" "5.21.0" - "@typescript-eslint/visitor-keys" "5.21.0" + "@typescript-eslint/types" "5.46.0" + "@typescript-eslint/visitor-keys" "5.46.0" -"@typescript-eslint/type-utils@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.21.0.tgz#ff89668786ad596d904c21b215e5285da1b6262e" - integrity sha512-MxmLZj0tkGlkcZCSE17ORaHl8Th3JQwBzyXL/uvC6sNmu128LsgjTX0NIzy+wdH2J7Pd02GN8FaoudJntFvSOw== +"@typescript-eslint/type-utils@5.45.1": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.45.1.tgz#cb7d300c3c95802cea9f87c7f8be363cf8f8538c" + integrity sha512-aosxFa+0CoYgYEl3aptLe1svP910DJq68nwEJzyQcrtRhC4BN0tJAvZGAe+D0tzjJmFXe+h4leSsiZhwBa2vrA== dependencies: - "@typescript-eslint/utils" "5.21.0" - debug "^4.3.2" + "@typescript-eslint/typescript-estree" "5.45.1" + "@typescript-eslint/utils" "5.45.1" + debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11" - integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw== +"@typescript-eslint/types@5.45.1": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.45.1.tgz#8e1883041cee23f1bb7e1343b0139f97f6a17c14" + integrity sha512-HEW3U0E5dLjUT+nk7b4lLbOherS1U4ap+b9pfu2oGsW3oPu7genRaY9dDv3nMczC1rbnRY2W/D7SN05wYoGImg== -"@typescript-eslint/types@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.21.0.tgz#8cdb9253c0dfce3f2ab655b9d36c03f72e684017" - integrity sha512-XnOOo5Wc2cBlq8Lh5WNvAgHzpjnEzxn4CJBwGkcau7b/tZ556qrWXQz4DJyChYg8JZAD06kczrdgFPpEQZfDsA== +"@typescript-eslint/types@5.46.0": + version "5.46.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.46.0.tgz#f4d76622a996b88153bbd829ea9ccb9f7a5d28bc" + integrity sha512-wHWgQHFB+qh6bu0IAPAJCdeCdI0wwzZnnWThlmHNY01XJ9Z97oKqKOzWYpR2I83QmshhQJl6LDM9TqMiMwJBTw== -"@typescript-eslint/typescript-estree@5.14.0", "@typescript-eslint/typescript-estree@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.21.0.tgz#9f0c233e28be2540eaed3df050f0d54fb5aa52de" - integrity sha512-Y8Y2T2FNvm08qlcoSMoNchh9y2Uj3QmjtwNMdRQkcFG7Muz//wfJBGBxh8R7HAGQFpgYpdHqUpEoPQk+q9Kjfg== +"@typescript-eslint/typescript-estree@5.45.1", "@typescript-eslint/typescript-estree@5.46.0": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.45.1.tgz#b3dc37f0c4f0fe73e09917fc735e6f96eabf9ba4" + integrity sha512-76NZpmpCzWVrrb0XmYEpbwOz/FENBi+5W7ipVXAsG3OoFrQKJMiaqsBMbvGRyLtPotGqUfcY7Ur8j0dksDJDng== dependencies: - "@typescript-eslint/types" "5.21.0" - "@typescript-eslint/visitor-keys" "5.21.0" - debug "^4.3.2" - globby "^11.0.4" + "@typescript-eslint/types" "5.45.1" + "@typescript-eslint/visitor-keys" "5.45.1" + debug "^4.3.4" + globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.21.0.tgz#51d7886a6f0575e23706e5548c7e87bce42d7c18" - integrity sha512-q/emogbND9wry7zxy7VYri+7ydawo2HDZhRZ5k6yggIvXa7PvBbAAZ4PFH/oZLem72ezC4Pr63rJvDK/sTlL8Q== +"@typescript-eslint/utils@5.45.1": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.45.1.tgz#39610c98bde82c4792f2a858b29b7d0053448be2" + integrity sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.21.0" - "@typescript-eslint/types" "5.21.0" - "@typescript-eslint/typescript-estree" "5.21.0" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.45.1" + "@typescript-eslint/types" "5.45.1" + "@typescript-eslint/typescript-estree" "5.45.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" + semver "^7.3.7" "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.13.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.14.0.tgz#6c8bc4f384298cbbb32b3629ba7415f9f80dc8c4" - integrity sha512-EHwlII5mvUA0UsKYnVzySb/5EE/t03duUTweVy8Zqt3UQXBrpEVY144OTceFKaOe4xQXZJrkptCf7PjEBeGK4w== + version "5.46.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.46.0.tgz#600cd873ba471b7d8b0b9f35de34cf852c6fcb31" + integrity sha512-4O+Ps1CRDw+D+R40JYh5GlKLQERXRKW5yIQoNDpmXPJ+C7kaPF9R7GWl+PxGgXjB3PQCqsaaZUpZ9dG4U6DO7g== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.14.0" - "@typescript-eslint/types" "5.14.0" - "@typescript-eslint/typescript-estree" "5.14.0" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.46.0" + "@typescript-eslint/types" "5.46.0" + "@typescript-eslint/typescript-estree" "5.46.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" + semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.14.0": - version "5.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.14.0.tgz#1927005b3434ccd0d3ae1b2ecf60e65943c36986" - integrity sha512-yL0XxfzR94UEkjBqyymMLgCBdojzEuy/eim7N9/RIcTNxpJudAcqsU8eRyfzBbcEzGoPWfdM3AGak3cN08WOIw== +"@typescript-eslint/visitor-keys@5.45.1": + version "5.45.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.45.1.tgz#204428430ad6a830d24c5ac87c71366a1cfe1948" + integrity sha512-cy9ln+6rmthYWjH9fmx+5FU/JDpjQb586++x2FZlveq7GdGuLLW9a2Jcst2TGekH82bXpfmRNSwP9tyEs6RjvQ== dependencies: - "@typescript-eslint/types" "5.14.0" - eslint-visitor-keys "^3.0.0" + "@typescript-eslint/types" "5.45.1" + eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@5.21.0": - version "5.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.21.0.tgz#453fb3662409abaf2f8b1f65d515699c888dd8ae" - integrity sha512-SX8jNN+iHqAF0riZQMkm7e8+POXa/fXw5cxL+gjpyP+FI+JVNhii53EmQgDAfDcBpFekYSlO0fGytMQwRiMQCA== +"@typescript-eslint/visitor-keys@5.46.0": + version "5.46.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.0.tgz#36d87248ae20c61ef72404bcd61f14aa2563915f" + integrity sha512-E13gBoIXmaNhwjipuvQg1ByqSAu/GbEpP/qzFihugJ+MomtoJtFAJG/+2DRPByf57B863m0/q7Zt16V9ohhANw== dependencies: - "@typescript-eslint/types" "5.21.0" - eslint-visitor-keys "^3.0.0" + "@typescript-eslint/types" "5.46.0" + eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -3018,22 +2974,20 @@ "@webassemblyjs/ast" "1.11.1" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356" - integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg== +"@webpack-cli/configtest@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f" + integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== -"@webpack-cli/info@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea" - integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA== - dependencies: - envinfo "^7.7.3" +"@webpack-cli/info@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0" + integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== -"@webpack-cli/serve@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe" - integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw== +"@webpack-cli/serve@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.1.tgz#34bdc31727a1889198855913db2f270ace6d7bf8" + integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw== "@xtuc/ieee754@^1.2.0": version "1.2.0" @@ -3045,17 +2999,17 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.8: +accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -3068,15 +3022,15 @@ acorn-import-assertions@^1.7.6: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== +acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== ajv-formats@^2.1.1: version "2.1.1" @@ -3108,19 +3062,19 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" - integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== + version "8.11.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -allow-methods@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/allow-methods/-/allow-methods-3.0.0.tgz#e4fbb27916afb31abb8b137b0c247750a3e82526" - integrity sha512-y0IEfwadetRSy3XBTgmywYPyTAdgm3cWPxSTehYshVO5+Kw1kshKTTaibzFe+d7XfZ6AFyC/7oRfM0vexr+dlA== +allow-methods@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/allow-methods/-/allow-methods-4.1.2.tgz#6faddf0dfe7afc95285807debf2124118fe2bf11" + integrity sha512-yvRYCS1nZ3UIhPQHECmGfE4NdtPCqrd/iNWx4qLnvZu/I7Gp1DkpCnNmNlFXxlPUrxrLYkyobRsyNOZ5VvLQTQ== dependencies: http-errors "^2.0.0" @@ -3129,20 +3083,20 @@ animate.css@4.1.1: resolved "https://registry.yarnpkg.com/animate.css/-/animate.css-4.1.1.tgz#614ec5a81131d7e4dc362a58143f7406abd68075" integrity sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ== -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== - dependencies: - string-width "^4.1.0" - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: +ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" +ansi-escapes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.0.0.tgz#68c580e87a489f6df3d761028bb93093fde6bd8a" + integrity sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw== + dependencies: + type-fest "^3.0.0" + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -3173,9 +3127,9 @@ ansi-styles@^5.0.0: integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -3201,24 +3155,26 @@ aria-query@^4.2.2: "@babel/runtime-corejs3" "^7.10.2" aria-query@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" - integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.3, array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== +array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" is-string "^1.0.7" array-union@^2.1.0: @@ -3226,28 +3182,47 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-union@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-3.0.1.tgz#da52630d327f8b88cfbfb57728e2af5cd9b6b975" - integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== - array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.19.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" asn1@~0.2.3: version "0.2.6" @@ -3259,67 +3234,73 @@ asn1@~0.2.3: assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@10.4.5, autoprefixer@^10.4.5: - version "10.4.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.5.tgz#662193c744094b53d3637f39be477e07bd904998" - integrity sha512-Fvd8yCoA7lNX/OUllvS+aS1I7WRBclGXsepbvT8ZaPgrH24rgXpZzF0/6Hh3ZEkwg+0AES/Osd196VZmYoEFtw== +autoprefixer@10.4.13, autoprefixer@^10.4.13: + version "10.4.13" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" + integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== dependencies: - browserslist "^4.20.2" - caniuse-lite "^1.0.30001332" + browserslist "^4.21.4" + caniuse-lite "^1.0.30001426" fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.11.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@4.4.1, axe-core@^4.3.5: - version "4.4.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== +axe-core@4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.1.tgz#04d561c11b6d76d096d34e9d14ba2c294fb20cdc" + integrity sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ== axe-core@^3.5.5: version "3.5.6" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.6.tgz#e762a90d7f6dbd244ceacb4e72760ff8aad521b5" integrity sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ== -axios@0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" - integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== +axe-core@^4.4.3: + version "4.5.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.2.tgz#823fdf491ff717ac3c58a52631d4206930c1d9f7" + integrity sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA== + +axios@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.1.tgz#44cf04a3c9f0c2252ebd85975361c026cb9f864a" + integrity sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A== dependencies: - follow-redirects "^1.14.9" + follow-redirects "^1.15.0" form-data "^4.0.0" + proxy-from-env "^1.1.0" axobject-query@^2.2.0: version "2.2.0" @@ -3340,15 +3321,15 @@ babel-jest@^27.0.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-jest@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.0.3.tgz#843dc170da5b9671d4054ada9fdcd28f85f92a6e" - integrity sha512-S0ADyYdcrt5fp9YldRYWCUHdk1BKt9AkvBkLWBoNAEV9NoWZPIj5+MYhPcGgTS65mfv3a+Ymf2UqgWoAVd41cA== +babel-jest@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44" + integrity sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA== dependencies: - "@jest/transform" "^28.0.3" + "@jest/transform" "^29.3.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.0.2" + babel-preset-jest "^29.2.0" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -3361,13 +3342,6 @@ babel-plugin-apply-mdx-type-prop@1.6.22: "@babel/helper-plugin-utils" "7.10.4" "@mdx-js/util" "1.6.22" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-extract-import-names@1.6.22: version "1.6.22" resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" @@ -3396,17 +3370,17 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz#9307d03a633be6fc4b1a6bc5c3a87e22bd01dd3b" - integrity sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ== +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@2.8.0, babel-plugin-macros@^2.6.1: +babel-plugin-macros@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== @@ -3429,34 +3403,34 @@ babel-plugin-parameter-decorator@1.0.16: resolved "https://registry.yarnpkg.com/babel-plugin-parameter-decorator/-/babel-plugin-parameter-decorator-1.0.16.tgz#1c889c3a1f3bbf03801fcbc2e95b8bae7468df3f" integrity sha512-yUT2WPTUg1JaPmRGRSF557m1HJ9vdFQInRWOkiOyO5a9HhqlXffJu+fQ2xd5+qU/35ICMrrk9eWKsHCairKA9w== -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" + "@babel/helper-define-polyfill-provider" "^0.3.3" "babel-plugin-styled-components@>= 1.12.0": - version "2.0.6" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.6.tgz#6f76c7f7224b7af7edc24a4910351948c691fc90" - integrity sha512-Sk+7o/oa2HfHv3Eh8sxoz75/fFvEdHsXV4grdeHufX0nauCmymlnN0rGhIvfpMQSJMvGutJ85gvCGea4iqmDpg== + version "2.0.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== dependencies: "@babel/helper-annotate-as-pure" "^7.16.0" "@babel/helper-module-imports" "^7.16.0" @@ -3467,7 +3441,7 @@ babel-plugin-polyfill-regenerator@^0.3.0: babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== babel-plugin-transform-react-remove-prop-types@0.4.24, babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" @@ -3507,12 +3481,12 @@ babel-preset-jest@^27.5.1: babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" -babel-preset-jest@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz#d8210fe4e46c1017e9fa13d7794b166e93aa9f89" - integrity sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ== +babel-preset-jest@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" + integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== dependencies: - babel-plugin-jest-hoist "^28.0.2" + babel-plugin-jest-hoist "^29.2.0" babel-preset-current-node-syntax "^1.0.0" babel-preset-react-app@^10.0.1: @@ -3568,32 +3542,39 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +basic-auth@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" -big-integer@^1.6.16: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bignumber.js@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885" + integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -body-parser@1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" content-type "~1.0.4" @@ -3603,40 +3584,26 @@ body-parser@1.20.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.10.3" + qs "6.11.0" raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -bootstrap-icons@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/bootstrap-icons/-/bootstrap-icons-1.8.1.tgz#773c1625bcbf3e86090ea9da4386c2c6459c5582" - integrity sha512-IXUqislddPJfwq6H+2nTkHyr9epO9h6u1AG0OZCx616w+TgzeoCjfmI3qJMQqt1J586gN2IxzB4M99Ip4sTZ1w== +bootstrap-icons@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/bootstrap-icons/-/bootstrap-icons-1.10.2.tgz#6a5729e0475e007ed82d752225645e4e6fec48d7" + integrity sha512-PTPYadRn1AMGr+QTSxe4ZCc+Wzv9DGZxbi3lNse/dajqV31n2/wl/7NX78ZpkvFgRNmH4ogdIQPQmxAfhEV6nA== bootstrap@4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.2.tgz#a85c4eda59155f0d71186b6e6ad9b875813779ab" integrity sha512-vlGn0bcySYl/iV+BGA544JkkZP5LB3jsmkeKLFQakCOwCM3AOk7VkldBz4jrzSe+Z0Ezn99NVXa1o45cQY4R6A== -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3645,48 +3612,29 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@~3.0.2: +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -broadcast-channel@^3.4.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937" - integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg== +browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - "@babel/runtime" "^7.7.2" - detect-node "^2.1.0" - js-sha3 "0.8.0" - microseconds "0.2.0" - nano-time "1.0.0" - oblivious-set "1.0.0" - rimraf "3.0.2" - unload "2.2.0" - -browserslist@^4.14.5, browserslist@^4.17.5, browserslist@^4.19.1: - version "4.20.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.0.tgz#35951e3541078c125d36df76056e94738a52ebe9" - integrity sha512-bnpOoa+DownbciXj0jVGENf8VYQnE2LNWomhYuCsMmmx9Jd9lwq0WXODuwpSsp8AVdKM2/HorrzxAfbKvWTByQ== - dependencies: - caniuse-lite "^1.0.30001313" - electron-to-chromium "^1.4.76" - escalade "^3.1.1" - node-releases "^2.0.2" - picocolors "^1.0.0" - -browserslist@^4.20.2, browserslist@^4.20.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== - dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" - escalade "^3.1.1" - node-releases "^2.0.3" - picocolors "^1.0.0" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" bser@2.1.1: version "2.1.1" @@ -3700,29 +3648,21 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -builtin-modules@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - 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" @@ -3752,34 +3692,29 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== camelize@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" - integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= - -caniuse-lite@^1.0.30001313: - version "1.0.30001314" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz#65c7f9fb7e4594fca0a333bec1d8939662377596" - integrity sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== -caniuse-lite@^1.0.30001332: - version "1.0.30001334" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001334.tgz#892e9965b35285033fc2b8a8eff499fe02f13d8b" - integrity sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw== +caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001426: + version "1.0.30001436" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz#22d7cbdbbbb60cdc4ca1030ccd6dea9f5de4848b" + integrity sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -3801,14 +3736,6 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -3834,11 +3761,6 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -charcodes@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" - integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== - "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -3859,45 +3781,35 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -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== - ci-info@^3.2.0, ci-info@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + version "3.7.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.7.0.tgz#6d01b3696c59915b6ce057e4aa4adfc2fa25f5ef" + integrity sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog== cjs-module-lexer@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -classnames@*, classnames@2.3.1, classnames@^2.2.3, classnames@^2.2.5: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== +classnames@*, classnames@2.3.2, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== clean-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" - integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= + integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== dependencies: escape-string-regexp "^1.0.5" -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" wrap-ansi "^7.0.0" clone-deep@^4.0.1: @@ -3909,26 +3821,10 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collapse-white-space@^1.0.2: version "1.0.6" @@ -3957,7 +3853,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" @@ -3965,9 +3861,9 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.14: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" @@ -3991,56 +3887,51 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^7.0.0: +commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compare-versions@*: - version "4.1.3" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-4.1.3.tgz#8f7b8966aef7dc4282b45dfa6be98434fc18a1a4" - integrity sha512-WQfnbDcrYnGr55UwbxKiQKASnTtNnaAWVi8jZyy8NTpVAXWACSne8lMD1iaIo9AiU6mnuLvSVshCzewVuWxHUg== - -compression-webpack-plugin@9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz#57fd539d17c5907eebdeb4e83dcfe2d7eceb9ef6" - integrity sha512-R/Oi+2+UHotGfu72fJiRoVpuRifZT0tTC6UqFD/DUo+mv8dbOow9rVOuTvDv5nPPm3GZhHL/fKkwxwIHnJ8Nyw== +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + mime-db ">= 1.43.0 < 2" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== +compression@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== -connect-history-api-fallback@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - consola@^2.15.3, consola@^2.6.0: version "2.15.3" resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" @@ -4061,68 +3952,77 @@ content-type@~1.0.4: contentstream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/contentstream/-/contentstream-1.0.0.tgz#0bdcfa46da30464a86ce8fa7ece565410dc6f9a5" - integrity sha1-C9z6RtowRkqGzo+n7OVlQQ3G+aU= + integrity sha512-jqWbfFZFG9tZbdej7+TzXI4kanABh3BLtTWY6NxqTK5zo6iTIeo5aq4iRVfYsLQ0y8ccQqmJR/J4NeMmEdnR2w== dependencies: readable-stream "~1.0.33-1" convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +copy-anything@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.3.tgz#206767156f08da0e02efd392f71abcdf79643559" + integrity sha512-fpW2W/BqEzqPp29QS+MwwfisHCQZtiduTe/m8idFo0xbti9fIZ2WVhAsCv4ggFVH3AgCkVdpoOCtQC6gBrdhjw== + dependencies: + is-what "^4.1.8" + copy-to-clipboard@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== dependencies: toggle-selection "^1.0.6" -copy-webpack-plugin@10.2.4: - version "10.2.4" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" - integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== +copy-webpack-plugin@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== dependencies: - fast-glob "^3.2.7" + fast-glob "^3.2.11" glob-parent "^6.0.1" - globby "^12.0.2" + globby "^13.1.1" normalize-path "^3.0.0" schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== +core-js-compat@^3.25.1: + version "3.26.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.1.tgz#0e710b09ebf689d719545ac36e49041850f943df" + integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== dependencies: - browserslist "^4.19.1" - semver "7.0.0" + browserslist "^4.21.4" -core-js-pure@^3.20.2: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== +core-js-pure@^3.25.1: + version "3.26.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.1.tgz#653f4d7130c427820dcecd3168b594e8bb095a33" + integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ== -core-js@3.22.3, core-js@^3.20.2: - version "3.22.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.3.tgz#498c41d997654cb00e81c7a54b44f0ab21ab01d5" - integrity sha512-1t+2a/d2lppW1gkLXx3pKPVGbBdxXAkqztvWb1EJ8oF8O2gIGiytzflNiFEehYwVK/t2ryUsGBoOFFvNx95mbg== +core-js@3.26.1, core-js@^3.26.0: + version "3.26.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e" + integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA== core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" @@ -4140,10 +4040,10 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -4151,10 +4051,15 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -country-flag-icons@1.4.26: - version "1.4.26" - resolved "https://registry.yarnpkg.com/country-flag-icons/-/country-flag-icons-1.4.26.tgz#e324b2e79c00f180d4f44a8ce034a3e824097619" - integrity sha512-fUBQ58zfQsSL12ErkFSfBxnQZapzdC8+5ZKqhD1z0EHqPnOuiFl7nZTv8Gqpms+jvweP+pbCYGp7G4aiO9eiMw== +countries-list@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/countries-list/-/countries-list-2.6.1.tgz#d479757ac873b1e596ccea0a925962d20396c0cb" + integrity sha512-jXM1Nv3U56dPQ1DsUSsEaGmLHburo4fnB7m+1yhWDUVvx5gXCd1ok/y3gXCjXzhqyawG+igcPYcAl4qjkvopaQ== + +country-flag-icons@1.5.5: + version "1.5.5" + resolved "https://registry.yarnpkg.com/country-flag-icons/-/country-flag-icons-1.5.5.tgz#04a41c83e2ea38ea28054d4e3eff9d1ce16aec1c" + integrity sha512-k4WXZ/WvWOSiYXRG1n8EYHNr1m/IX0GffKqAidaet5DrJsDOmJ8Q/8JvvONhZNnKYg24s4lvsm+9og1HcuIU/g== create-jest-runner@^0.6.0: version "0.6.0" @@ -4192,11 +4097,6 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - css-blank-pseudo@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" @@ -4207,7 +4107,7 @@ css-blank-pseudo@^3.0.3: css-color-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== css-has-pseudo@^3.0.4: version "3.0.4" @@ -4216,39 +4116,46 @@ css-has-pseudo@^3.0.4: dependencies: postcss-selector-parser "^6.0.9" -css-loader@6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" - integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== +css-loader@6.7.2: + version "6.7.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.2.tgz#26bc22401b5921686a10fbeba75d124228302304" + integrity sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q== dependencies: icss-utils "^5.1.0" - postcss "^8.4.7" + postcss "^8.4.18" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" - semver "^7.3.5" + semver "^7.3.8" css-prefers-color-scheme@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== -css-select-base-adapter@^0.1.1: - version "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@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" css-to-react-native@^3.0.0: version "3.0.0" @@ -4259,15 +4166,7 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: +css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -4275,56 +4174,70 @@ css-tree@^1.1.2: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.0.tgz#a0122cbc85305576df92ac528fb079c8217a15b2" + integrity sha512-1rg0LiK2MFi4R3/lVvnRokEWTZb30ljSAe5x+0HHkZ+OqZaAeiP8g8Eh91VmkyCtQn9vMgQRiaTDYgLBt+2Qyw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + 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" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== css.escape@1.5.1, css.escape@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== -cssdb@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-6.5.0.tgz#61264b71f29c834f09b59cb3e5b43c8226590122" - integrity sha512-Rh7AAopF2ckPXe/VBcoUS9JrCZNSyc60+KpgE6X25vpVxA32TmiqvExjkfhwP4wGSb6Xe8Z/JIyGqwgx/zZYFA== +cssdb@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.2.0.tgz#f44bd4abc430f0ff7f4c64b8a1fb857a753f77a8" + integrity sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg== cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -csso@^4.0.2: +csso@^4.2.0: 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.1.2" +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + csstype@^3.0.2: - version "3.0.11" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" - integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== cwise-compiler@^1.0.0, cwise-compiler@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz#f4d667410e850d3a313a7d2db7b1e505bb034cc5" - integrity sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU= + integrity sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ== dependencies: uniq "^1.0.0" @@ -4389,7 +4302,7 @@ d3-shape@^2.0.0: dependencies: d3-array "2" -damerau-levenshtein@^1.0.7: +damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== @@ -4397,14 +4310,14 @@ damerau-levenshtein@^1.0.7: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" data-uri-to-buffer@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-0.0.3.tgz#18ae979a6a0ca994b0625853916d2662bbae0b1a" - integrity sha1-GK6XmmoMqZSwYlhTkW0mYruuCxo= + integrity sha512-Cp+jOa8QJef5nXS5hU7M1DWzXPEIoVR3kbV0dQuVGwROZg8bGf1DcCnkmajBTnvghTtSNMUdRrPjgaT6ZQucbw== debug@2.6.9, debug@^2.1.3, debug@^2.6.9: version "2.6.9" @@ -4420,14 +4333,7 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^4.3.4: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -4439,22 +4345,10 @@ decimal.js-light@^2.4.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" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-equal@^1.1.1: version "1.1.1" @@ -4468,10 +4362,26 @@ deep-equal@^1.1.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-equal@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.1.0.tgz#5ba60402cf44ab92c2c07f3f3312c3d857a0e1dd" + integrity sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.8" deep-is@^0.1.3: version "0.1.4" @@ -4483,43 +4393,29 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: +depd@2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - detab@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" @@ -4532,20 +4428,10 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -detect-node@^2.0.4, detect-node@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -diff-sequences@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.0.2.tgz#40f8d4ffa081acbd8902ba35c798458d0ff1af41" - integrity sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ== +diff-sequences@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" + integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== dir-glob@^3.0.1: version "3.0.1" @@ -4569,9 +4455,9 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.13" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b" - integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw== + version "0.5.14" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56" + integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== dom-helpers@^3.4.0: version "3.4.0" @@ -4588,53 +4474,77 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" + domhandler "^4.2.0" entities "^2.0.0" -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" -domelementtype@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domhandler@^5.0.1, domhandler@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== dependencies: - dom-serializer "0" - domelementtype "1" + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" -dot-prop@^5.2.0, dot-prop@^5.3.0: +dot-prop@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" -dotenv@16.0.0: - version "16.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" - integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +dotenv@16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -4642,22 +4552,17 @@ ecc-jsbn@~0.1.1: ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.118: - version "1.4.127" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.127.tgz#4ef19d5d920abe2676d938f4170729b44f7f423a" - integrity sha512-nhD6S8nKI0O2MueC6blNOEZio+/PWppE/pevnf3LOlQA/fKPCrDp2Ao4wx4LFwmIkJpVdFdn2763YWLy9ENIZg== +electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== -electron-to-chromium@^1.4.76: - version "1.4.77" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.77.tgz#c26e454cb8721d4ebdae3e276c57cd32e51c32ed" - integrity sha512-fiDxw8mO9Ph1Z0bjX2sFTPpi0J0QkOiwOJF+5Q0J0baNc/F9lLePAvDPlnoxvbUYYMizqrKPeotRRkJ9LtxAew== - -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: version "8.0.0" @@ -4677,19 +4582,12 @@ emojis-list@^3.0.0: encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.7.0, enhanced-resolve@^5.9.2: - version "5.9.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" - integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== +enhanced-resolve@^5.10.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -4699,6 +4597,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.2.0, entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + envinfo@^7.7.3: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -4712,43 +4615,74 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" error-stack-parser@^2.0.0: - version "2.0.7" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" - integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: - stackframe "^1.1.1" + stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.20.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.5.tgz#e6dc99177be37cacda5988e692c3fa8b218e95d2" + integrity sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" - get-intrinsic "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" get-symbol-description "^1.0.0" + gopd "^1.0.1" has "^1.0.3" - has-symbols "^1.0.2" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" + is-weakref "^1.0.2" + object-inspect "^1.12.2" object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + unbox-primitive "^1.0.2" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-get-iterator@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.0" + has-symbols "^1.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.5" + isarray "^2.0.5" es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -4763,20 +4697,15 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" @@ -4814,20 +4743,20 @@ eslint-config-airbnb@19.0.4: object.assign "^4.1.2" object.entries "^1.1.5" -eslint-config-next@12.1.5: - version "12.1.5" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.5.tgz#658cc61194a32dfd917a3db199351396ea5db1d1" - integrity sha512-P+DCt5ti63KhC0qNLzrAmPcwRGq8pYqgcf/NNr1E+WjCrMkWdCAXkIANTquo+kcO1adR2k1lTo5GCrNUtKy4hQ== - dependencies: - "@next/eslint-plugin-next" "12.1.5" - "@rushstack/eslint-patch" "1.0.8" - "@typescript-eslint/parser" "5.10.1" - eslint-import-resolver-node "0.3.4" - eslint-import-resolver-typescript "2.4.0" - eslint-plugin-import "2.25.2" - eslint-plugin-jsx-a11y "6.5.1" - eslint-plugin-react "7.29.1" - eslint-plugin-react-hooks "4.3.0" +eslint-config-next@13.0.6: + version "13.0.6" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.0.6.tgz#bbbcfd6e50eacca54552f962e43c9e2c4fb52ef6" + integrity sha512-Tfn/0lirhkEuoGxKMtDQNtQuC7P3eHcyUyhIJY/OHtjU9ExHFtcge/Fe8Ou/Jd7DIC71vN3CT72oszVwia71cg== + dependencies: + "@next/eslint-plugin-next" "13.0.6" + "@rushstack/eslint-patch" "^1.1.3" + "@typescript-eslint/parser" "^5.42.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.26.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.31.7" + eslint-plugin-react-hooks "^4.5.0" eslint-config-prettier@8.5.0: version "8.5.0" @@ -4862,14 +4791,6 @@ eslint-formatter-codeframe@7.32.1: "@babel/code-frame" "7.12.11" chalk "^4.0.0" -eslint-import-resolver-node@0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - eslint-import-resolver-node@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" @@ -4889,7 +4810,7 @@ eslint-import-resolver-ts@0.4.2: tiny-glob "^0.2.6" tsconfig-paths "^3.9.0" -eslint-import-resolver-typescript@2.4.0, eslint-import-resolver-typescript@2.7.1: +eslint-import-resolver-typescript@2.7.1, eslint-import-resolver-typescript@^3.5.2: version "2.7.1" resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== @@ -4901,12 +4822,11 @@ eslint-import-resolver-typescript@2.4.0, eslint-import-resolver-typescript@2.7.1 tsconfig-paths "^3.14.1" eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: debug "^3.2.7" - find-up "^2.1.0" eslint-plugin-array-func@3.1.7: version "3.1.7" @@ -4916,7 +4836,7 @@ eslint-plugin-array-func@3.1.7: eslint-plugin-cflint@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-cflint/-/eslint-plugin-cflint-1.0.0.tgz#84eb9b3c5a707793f83ea2c98f74b8684c0d76be" - integrity sha1-hOubPFpwd5P4PqLJj3S4aEwNdr4= + integrity sha512-vxSgrucRN7Cs8Qb1iGn1POpoTPlQ7HHhyPuQpe4jCL0jTPTrSePPMe3e+54XGWWA3/jsbUDjrhmol737ZkMWJg== eslint-plugin-cypress@2.12.1: version "2.12.1" @@ -4941,7 +4861,7 @@ eslint-plugin-flowtype@8.0.3, eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@2.25.2, eslint-plugin-import@2.26.0, eslint-plugin-import@^2.25.3: +eslint-plugin-import@2.26.0, eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.26.0: version "2.26.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== @@ -4960,19 +4880,19 @@ eslint-plugin-import@2.25.2, eslint-plugin-import@2.26.0, eslint-plugin-import@^ resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-jest-dom@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-4.0.1.tgz#d19b65e714a2689fd1f62393ce8553cf1f25e6cc" - integrity sha512-9aUaX4AtlFBziLqKSjc7DKHQ/y1T32qNapG3uSeLDMJYKswASoQLJWOfLIE+zEHKvCNzNIz8T7282tQkuu0TKQ== +eslint-plugin-jest-dom@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-4.0.3.tgz#ec17171385660e78465cce9f3e1ce90294ea1190" + integrity sha512-9j+n8uj0+V0tmsoS7bYC7fLhQmIvjRqRYEcbDSi+TKPsTThLLXCyj5swMSSf/hTleeMktACnn+HFqXBr5gbcbA== dependencies: "@babel/runtime" "^7.16.3" "@testing-library/dom" "^8.11.1" requireindex "^1.2.0" -eslint-plugin-jest@26.1.5, eslint-plugin-jest@^25.3.0: - version "26.1.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.1.5.tgz#6cfca264818d6d6aa120b019dab4d62b6aa8e775" - integrity sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw== +eslint-plugin-jest@27.1.6, eslint-plugin-jest@^25.3.0: + version "27.1.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.1.6.tgz#361d943f07d1978838e6b852c44a579f3879e332" + integrity sha512-XA7RFLSrlQF9IGtAmhddkUkBuICCTuryfOTfCSWcZHiHb69OilIH05oozH2XA6CEOtztnOd0vgXyvxZodkxGjg== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -4984,23 +4904,24 @@ eslint-plugin-json@3.1.0: lodash "^4.17.21" vscode-json-languageservice "^4.1.6" -eslint-plugin-jsx-a11y@6.5.1, eslint-plugin-jsx-a11y@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== +eslint-plugin-jsx-a11y@6.6.1, eslint-plugin-jsx-a11y@^6.5.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: - "@babel/runtime" "^7.16.3" + "@babel/runtime" "^7.18.9" aria-query "^4.2.2" - array-includes "^3.1.4" + array-includes "^3.1.5" ast-types-flow "^0.0.7" - axe-core "^4.3.5" + axe-core "^4.4.3" axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" + damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.2.1" + jsx-ast-utils "^3.3.2" language-tags "^1.0.5" - minimatch "^3.0.4" + minimatch "^3.1.2" + semver "^6.3.0" eslint-plugin-lodash@7.4.0: version "7.4.0" @@ -5012,7 +4933,7 @@ eslint-plugin-lodash@7.4.0: eslint-plugin-no-loops@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/eslint-plugin-no-loops/-/eslint-plugin-no-loops-0.3.0.tgz#e81fecb4eaaf494a926d9caba9a7cd84d1fede7d" - integrity sha1-6B/stOqvSUqSbZyrqafNhNH+3n0= + integrity sha512-qI0oMgD0mA2Kpad2P/WncEqeVzvJKpHs/6+PA1SW4E6gXSXRmeV2cPv6+fnEgFwC7i+QtFRay2jUQ8DCH02nZg== eslint-plugin-no-secrets@0.8.9: version "0.8.9" @@ -5034,56 +4955,57 @@ eslint-plugin-node@11.1.0: eslint-plugin-only-ascii@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-only-ascii/-/eslint-plugin-only-ascii-0.0.0.tgz#452dd8d79a086b385160735d895cb4ce4332ed65" - integrity sha1-RS3Y15oIazhRYHNdiVy0zkMy7WU= + integrity sha512-7sIt6sKt3PqZ/Hlc/twMTZhzlGb33GJ+ni8t3OyVuchvWUPKdrbuD6BfSfbd1CZpcG2+bH4cX1NGCQvsF5VCHA== dependencies: requireindex "~1.1.0" -eslint-plugin-only-warn@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-only-warn/-/eslint-plugin-only-warn-1.0.3.tgz#a75f3a9ded7f03e9808e75ec27f22b644084506e" - integrity sha512-XQOX/TfLoLw6h8ky51d29uUjXRTQHqBGXPylDEmy5fe/w7LIOnp8MA24b1OSMEn9BQoKow1q3g1kLe5/9uBTvw== +eslint-plugin-only-warn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-only-warn/-/eslint-plugin-only-warn-1.1.0.tgz#c6ddc37ddc4e72c121f07be565fcb7b6671fe78a" + integrity sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA== -eslint-plugin-prettier@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" - integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== +eslint-plugin-prettier@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-promise@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" - integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== +eslint-plugin-promise@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -eslint-plugin-react-hooks@4.3.0, eslint-plugin-react-hooks@4.5.0, eslint-plugin-react-hooks@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" - integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== +eslint-plugin-react-hooks@4.6.0, eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react-perf@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react-perf/-/eslint-plugin-react-perf-3.3.1.tgz#e52d64c1d6e9c4cb1240108cdbbe406837f1b887" integrity sha512-iOx2UtEOH50TmQhezTS4jbBAj/2gbrUdX+ZM28c2K9mwTvtRX6gdnd2P4WPQrejITDsAMNTCz95zu5HcjCD0xg== -eslint-plugin-react@7.29.1, eslint-plugin-react@7.29.4, eslint-plugin-react@^7.27.1: - version "7.29.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" - integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== +eslint-plugin-react@7.31.11, eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.31.7: + version "7.31.11" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" + integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.0" - object.values "^1.1.5" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" prop-types "^15.8.1" resolve "^2.0.0-next.3" semver "^6.3.0" - string.prototype.matchall "^4.0.6" + string.prototype.matchall "^4.0.8" eslint-plugin-security@1.5.0: version "1.5.0" @@ -5092,15 +5014,15 @@ eslint-plugin-security@1.5.0: dependencies: safe-regex "^2.1.1" -eslint-plugin-sonarjs@0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.13.0.tgz#c34d140cc90abaaed38f5a5201a2ccdebe398862" - integrity sha512-t3m7ta0EspzDxSOZh3cEOJIJVZgN/TlJYaBGnQlK6W/PZNbWep8q4RQskkJkA7/zwNpX0BaoEOSUUrqaADVoqA== +eslint-plugin-sonarjs@0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.17.0.tgz#e026065809e35d286f576ddea094727eeb9cdadd" + integrity sha512-jtGtxI49UbJJeJj7CVRLI3+LLH+y+hkR3GOOwM7vBbci9DEFIRGCWvEd2BJScrzltZ6D6iubukTAfc9cyG7sdw== eslint-plugin-testing-library@^5.0.1: - version "5.0.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.0.6.tgz#86b0aff2ed0c80f63966c2a4894c06bff382b6d5" - integrity sha512-mMU4+slZsWKHNxtxc5TE2+bs9S//e2uFPlcpTapPhVdnctgn0+G/DaUu6VbT0JLiVMcbBjy3IcfddK+abZawbw== + version "5.9.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz#12e4bd34c48683ee98af4df2e3318ec9f51dcf8a" + integrity sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ== dependencies: "@typescript-eslint/utils" "^5.13.0" @@ -5164,18 +5086,20 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: +eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@8.14.0: - version "8.14.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.14.0.tgz#62741f159d9eb4a79695b28ec4989fcdec623239" - integrity sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw== +eslint@8.29.0: + version "8.29.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.29.0.tgz#d74a88a20fb44d59c51851625bc4ee8d0ec43f87" + integrity sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg== dependencies: - "@eslint/eslintrc" "^1.2.2" - "@humanwhocodes/config-array" "^0.9.2" + "@eslint/eslintrc" "^1.3.3" + "@humanwhocodes/config-array" "^0.11.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -5185,38 +5109,40 @@ eslint@8.14.0: eslint-scope "^7.1.1" eslint-utils "^3.0.0" eslint-visitor-keys "^3.3.0" - espree "^9.3.1" + espree "^9.4.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.15.0" + grapheme-splitter "^1.0.4" ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" regexpp "^3.2.0" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" + acorn "^8.8.0" + acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" esprima@^4.0.0: @@ -5256,7 +5182,7 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eventemitter3@^4.0.1: version "4.0.7" @@ -5286,34 +5212,34 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.0.2.tgz#86f0d6fa971bc533faf68d4d103d00f343d6a4b3" - integrity sha512-X0qIuI/zKv98k34tM+uGeOgAC73lhs4vROF9MkPk94C1zujtwv4Cla8SxhWn0G1OwvG9gLLL7RjFBkwGVaZ83w== +expect@^29.0.0, expect@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" + integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA== dependencies: - "@jest/expect-utils" "^28.0.2" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.0.2" - jest-message-util "^28.0.2" - jest-util "^28.0.2" + "@jest/expect-utils" "^29.3.1" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" -express-static-gzip@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/express-static-gzip/-/express-static-gzip-2.1.5.tgz#e45b512ef5596a068c45f729d7e0cc0b429b08b4" - integrity sha512-bgiQ1fY7ltuUrSzg0WoN7ycoAd7r2VEw7durn/3k0jCMUC5wydF0K36ouIuJPE+MNDwK5uoSaVgIBVNemwxWgw== +express-static-gzip@2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/express-static-gzip/-/express-static-gzip-2.1.7.tgz#5904824a07950ba741ec3a23a21839dd04c63506" + integrity sha512-QOCZUC+lhPPCjIJKpQGu1Oa61Axg9Mq09Qvit8Of7kzpMuwDeMSqjjQteQS3OVw/GkENBoSBheuQDWPlngImvw== dependencies: serve-static "^1.14.1" -express@4.18.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.0.tgz#7a426773325d0dd5406395220614c0db10b6e8e2" - integrity sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg== +express@4.18.2: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -5332,7 +5258,7 @@ express@4.18.0: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -5346,7 +5272,7 @@ express@4.18.0: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" @@ -5368,7 +5294,7 @@ extra-watch-webpack-plugin@1.0.3: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" @@ -5395,10 +5321,10 @@ fast-equals@^2.0.0: resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927" integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w== -fast-glob@^3.2.7, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5406,7 +5332,7 @@ fast-glob@^3.2.7, fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -5414,29 +5340,34 @@ fast-json-stable-stringify@^2.0.0: fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-memoize@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" + integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.14.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.14.0.tgz#107f69d7295b11e0fccc264e1fc6389f623731ce" + integrity sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg== dependencies: reusify "^1.0.4" -fasy@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/fasy/-/fasy-9.0.0.tgz#fac6cca002919fe8348796bf0b4dcfaecbd53832" - integrity sha512-ghKi2vUHjrzYqp/Mp8OTlrYGthZqEVQfHK2aTG51GR6hk+1xS3xCNZUZaYdx5CQlgZ+tAXlpkuOr+jWbecGu/A== +fasy@9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/fasy/-/fasy-9.0.2.tgz#0b570a05d13060d9ed779df50a860aaa298d1429" + integrity sha512-BA+KyMlWuZHJcnNwu7u1qeEo59m16Z8ogvcxY1Ncv5xcwu6LMxEHkiXVr9AaPpd7S7v4yf/i+kmSYTFotZyDhg== fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" @@ -5489,13 +5420,6 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -5511,6 +5435,19 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flag-icon-css@4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/flag-icon-css/-/flag-icon-css-4.1.7.tgz#5471197f9ab965a3603b3e0face31dd513fec289" + integrity sha512-AFjSU+fv98XbU0vnTQ32vcLj89UEr1MhwDFcooQv14qWJCjg9fGZzfh9BVyDhAhIOZW/pGmJmq38RqpgPaeybQ== + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -5520,19 +5457,26 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.14.9: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== fork-ts-checker-webpack-plugin@6.5.0: version "6.5.0" @@ -5584,12 +5528,12 @@ fraction.js@^4.2.0: fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-extra@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== +fs-extra@11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" + integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -5605,7 +5549,7 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-monkey@1.0.3: +fs-monkey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== @@ -5613,7 +5557,7 @@ fs-monkey@1.0.3: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" @@ -5625,12 +5569,22 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: 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== @@ -5640,14 +5594,14 @@ get-caller-file@^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.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" @@ -5676,20 +5630,6 @@ get-pixels-frame-info-update@^3.3.2: request "^2.44.0" through "^2.3.4" -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.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.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -5706,14 +5646,14 @@ get-symbol-description@^1.0.0: getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" gif-encoder@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/gif-encoder/-/gif-encoder-0.4.3.tgz#8a2b4fe8ca895a48e3a0b6cbb340a0a6a3571899" - integrity sha1-iitP6MqJWkjjoLbLs0CgpqNXGJk= + integrity sha512-HMfSa+EIng62NbDhM63QGYoc49/m8DcZ9hhBtw+CXX9mKboSpeFVxjZ2WEWaMFZ14MUjfACK7jsrxrJffIVrCg== dependencies: readable-stream "~1.1.9" @@ -5727,9 +5667,9 @@ gif-frames@1.0.1: save-pixels-jpeg-js-upgrade "^2.3.4-jpeg-js-upgrade.0" github-slugger@^1.0.0, github-slugger@^1.1.1, github-slugger@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e" - integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ== + version "1.5.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" @@ -5738,7 +5678,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -5762,34 +5702,38 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== +glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: - ini "2.0.0" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" globals@^11.1.0, globals@^11.12.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: - version "13.12.1" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" - integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== +globals@^13.15.0: + version "13.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc" + integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A== dependencies: type-fest "^0.20.2" @@ -5798,7 +5742,7 @@ globalyzer@0.1.0: resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== -globby@^11.0.4: +globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -5810,15 +5754,14 @@ globby@^11.0.4: merge2 "^1.4.1" slash "^3.0.0" -globby@^12.0.2: - version "12.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" - integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== +globby@^13.1.1: + version "13.1.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.2.tgz#29047105582427ab6eca4f905200667b056da515" + integrity sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ== dependencies: - array-union "^3.0.1" dir-glob "^3.0.1" - fast-glob "^3.2.7" - ignore "^5.1.9" + fast-glob "^3.2.11" + ignore "^5.2.0" merge2 "^1.4.1" slash "^4.0.0" @@ -5827,27 +5770,22 @@ globrex@^0.1.2: resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== gray-matter@^4.0.2: version "4.0.3" @@ -5867,12 +5805,12 @@ gud@^1.0.0: hamt_plus@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hamt_plus/-/hamt_plus-1.0.2.tgz#e21c252968c7e33b20f6a1b094cd85787a265601" - integrity sha1-4hwlKWjH4zsg9qGwlM2FeHomVgE= + integrity sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA== har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" @@ -5887,22 +5825,29 @@ harmony-reflect@^1.4.6: resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1, has-symbols@^1.0.2: +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -5914,11 +5859,6 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -6009,13 +5949,6 @@ hastscript@^6.0.0: property-information "^5.0.0" space-separated-tokens "^1.0.0" -history@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" - integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== - dependencies: - "@babel/runtime" "^7.7.6" - hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -6040,27 +5973,18 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + html-void-elements@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - http-errors@2.0.0, http-errors@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -6075,7 +5999,7 @@ http-errors@2.0.0, http-errors@^2.0.0: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -6086,6 +6010,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +i18next@19.9.2: + version "19.9.2" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.9.2.tgz#ea5a124416e3c5ab85fddca2c8e3c3669a8da397" + integrity sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg== + dependencies: + "@babel/runtime" "^7.12.0" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -6108,24 +6039,24 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: identity-obj-proxy@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: harmony-reflect "^1.4.6" ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= + integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== -ignore@^5.1.1, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.1.1, ignore@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" + integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== -immutable@4.0.0, immutable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== +immutable@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" @@ -6135,11 +6066,6 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -6151,7 +6077,7 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" @@ -6161,26 +6087,16 @@ indent-string@^4.0.0: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.4, inherits@~2.0.1: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@~2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" @@ -6200,10 +6116,10 @@ internmap@^1.0.0: resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== intersection-observer@0.12.2: version "0.12.2" @@ -6213,7 +6129,7 @@ intersection-observer@0.12.2: iota-array@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" - integrity sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc= + integrity sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA== ipaddr.js@1.9.1: version "1.9.1" @@ -6238,7 +6154,7 @@ is-alphanumerical@^1.0.0: is-alphabetical "^1.0.0" is-decimal "^1.0.0" -is-arguments@^1.0.4: +is-arguments@^1.0.4, is-arguments@^1.1.0, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -6249,7 +6165,7 @@ is-arguments@^1.0.4: is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: version "1.0.4" @@ -6284,32 +6200,25 @@ is-buffer@^2.0.0: integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-builtin-module@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" - integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0" + integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw== dependencies: - builtin-modules "^3.0.0" + builtin-modules "^3.3.0" -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.2.0, is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== +is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -6324,12 +6233,12 @@ is-decimal@^1.0.0: is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -6353,33 +6262,25 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== - dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" - is-interactive@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -is-negative-zero@^2.0.1: +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" @@ -6391,14 +6292,14 @@ is-number@^7.0.0: is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.2: +is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -6426,12 +6327,19 @@ is-regex@^1.0.4, is-regex@^1.1.4: is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-stream@^2.0.0: version "2.0.1" @@ -6452,27 +6360,51 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-typed-array@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-url@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-weakref@^1.0.1: +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" -is-what@^4.1.6: - version "4.1.7" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.7.tgz#c41dc1d2d2d6a9285c624c2505f61849c8b1f9cc" - integrity sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ== +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-what@^4.1.8: + version "4.1.8" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.8.tgz#0e2a8807fda30980ddb2571c79db3d209b14cbe4" + integrity sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA== is-whitespace-character@^1.0.0: version "1.0.4" @@ -6484,37 +6416,37 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== iso-3166-1-alpha-2@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/iso-3166-1-alpha-2/-/iso-3166-1-alpha-2-1.0.0.tgz#bc9e0bb94e584df5468a932997a28552e26f97ac" - integrity sha1-vJ4LuU5YTfVGipMpl6KFUuJvl6w= + integrity sha512-ffnjHqGTL67bPVuOf7NNl7NhPABR1Dfoue+tXMCSzyBbfmwo2Y2Xve9nL3zZZ8YXhV9H7yL1u+HDeuJd8aft0Q== dependencies: mout "^0.11.0" isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" @@ -6522,9 +6454,9 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -6551,174 +6483,159 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-axe@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/jest-axe/-/jest-axe-6.0.0.tgz#e5ca8e9a0363c8c5f4e00760317bd7d7d29b90b4" - integrity sha512-gAh/2zoWii4Rbhe6IUIo5TTiseGJDCitFnDFwBNpIuaOciyQgVZue6jtd4W7oMoKHewKoRSuIol7t/MuGx+mqg== +jest-axe@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jest-axe/-/jest-axe-7.0.0.tgz#0658629bdff87d50d35cb9eca66a9b462fb0092b" + integrity sha512-y+TH+GGH7zOYABWv5IrtGx4ove1dYcVg9Nv9pJZcqKQ+2goJCkAYoHAqergPaV/y9hh1Q9vZykjSXC/2U0Mjyg== dependencies: - axe-core "4.4.1" - chalk "4.1.0" - jest-matcher-utils "27.0.2" + axe-core "4.5.1" + chalk "4.1.2" + jest-matcher-utils "29.2.2" lodash.merge "4.6.2" -jest-chain@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/jest-chain/-/jest-chain-1.1.5.tgz#57b804d7d23f7c8455b62051795cfe5c444fa262" - integrity sha512-bTx51vQP/6/XVDrMtz0WmT3wZoXvj5QAAnw1to+o6pvtjcwTIVuB6uR5URRXH/9rHf1WuM1UgsfVTWhTC/QAzw== +jest-chain@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/jest-chain/-/jest-chain-1.1.6.tgz#24637e9d5136b6c15aa3c2e05c3e55a816523108" + integrity sha512-eIkGzVBGQ1VuEErDceMYAET53pcwYVVTXtJEbY+x60Dwi+2M2uOt4rhKAej+wfVOAlE4G0plI9mstmv6GBtJjw== -jest-changed-files@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531" - integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA== +jest-changed-files@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" + integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== dependencies: execa "^5.0.0" - throat "^6.0.1" + p-limit "^3.1.0" -jest-circus@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.0.3.tgz#45f77090b4b9fe5c1b84f72816868c9d4c0f57b1" - integrity sha512-HJ3rUCm3A3faSy7KVH5MFCncqJLtrjEFkTPn9UIcs4Kq77+TXqHsOaI+/k73aHe6DJQigLUXq9rCYj3MYFlbIw== +jest-circus@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.3.1.tgz#177d07c5c0beae8ef2937a67de68f1e17bbf1b4a" + integrity sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg== dependencies: - "@jest/environment" "^28.0.2" - "@jest/expect" "^28.0.3" - "@jest/test-result" "^28.0.2" - "@jest/types" "^28.0.2" + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^28.0.2" - jest-matcher-utils "^28.0.2" - jest-message-util "^28.0.2" - jest-runtime "^28.0.3" - jest-snapshot "^28.0.3" - jest-util "^28.0.2" - pretty-format "^28.0.2" + jest-each "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + p-limit "^3.1.0" + pretty-format "^29.3.1" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.0.3.tgz#4a4e55078ec772e0ea2583dd4c4b38fb306dc556" - integrity sha512-NCPTEONCnhYGo1qzPP4OOcGF04YasM5GZSwQLI1HtEluxa3ct4U65IbZs6DSRt8XN1Rq0jhXwv02m5lHB28Uyg== +jest-cli@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.3.1.tgz#e89dff427db3b1df50cea9a393ebd8640790416d" + integrity sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ== dependencies: - "@jest/core" "^28.0.3" - "@jest/test-result" "^28.0.2" - "@jest/types" "^28.0.2" + "@jest/core" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^28.0.3" - jest-util "^28.0.2" - jest-validate "^28.0.2" + jest-config "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.0.3.tgz#9c0556d60d692153a6bc8652974182c22db9244f" - integrity sha512-3gWOEHwGpNhyYOk9vnUMv94x15QcdjACm7A3lERaluwnyD6d1WZWe9RFCShgIXVOHzRfG1hWxsI2U0gKKSGgDQ== +jest-config@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.3.1.tgz#0bc3dcb0959ff8662957f1259947aedaefb7f3c6" + integrity sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^28.0.2" - "@jest/types" "^28.0.2" - babel-jest "^28.0.3" + "@jest/test-sequencer" "^29.3.1" + "@jest/types" "^29.3.1" + babel-jest "^29.3.1" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^28.0.3" - jest-environment-node "^28.0.2" - jest-get-type "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.0.3" - jest-runner "^28.0.3" - jest-util "^28.0.2" - jest-validate "^28.0.2" + jest-circus "^29.3.1" + jest-environment-node "^29.3.1" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-runner "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^28.0.2" + pretty-format "^29.3.1" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^27.0.2, jest-diff@^27.2.5, jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-diff@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.0.2.tgz#a543c90082560cd6cb14c5f28c39e6d4618ad7a6" - integrity sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg== +jest-diff@^29.0.0, jest-diff@^29.2.1, jest-diff@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" + integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== dependencies: chalk "^4.0.0" - diff-sequences "^28.0.2" - jest-get-type "^28.0.2" - pretty-format "^28.0.2" + diff-sequences "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-docblock@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.0.2.tgz#3cab8abea53275c9d670cdca814fc89fba1298c2" - integrity sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg== +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== dependencies: detect-newline "^3.0.0" -jest-each@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.0.2.tgz#fcf6843e9afe5a3f2d0b1c02aab1f41889d92f1d" - integrity sha512-/W5Wc0b+ipR36kDaLngdVEJ/5UYPOITK7rW0djTlCCQdMuWpCFJweMW4TzAoJ6GiRrljPL8FwiyOSoSHKrda2w== +jest-each@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.3.1.tgz#bc375c8734f1bb96625d83d1ca03ef508379e132" + integrity sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA== dependencies: - "@jest/types" "^28.0.2" + "@jest/types" "^29.3.1" chalk "^4.0.0" - jest-get-type "^28.0.2" - jest-util "^28.0.2" - pretty-format "^28.0.2" - -jest-environment-node@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.0.2.tgz#bd58e192b8f36a37e52c52fac812bd24b360c0b9" - integrity sha512-o9u5UHZ+NCuIoa44KEF0Behhsz/p1wMm0WumsZfWR1k4IVoWSt3aN0BavSC5dd26VxSGQvkrCnJxxOzhhUEG3Q== - dependencies: - "@jest/environment" "^28.0.2" - "@jest/fake-timers" "^28.0.2" - "@jest/types" "^28.0.2" + jest-get-type "^29.2.0" + jest-util "^29.3.1" + pretty-format "^29.3.1" + +jest-environment-node@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.3.1.tgz#5023b32472b3fba91db5c799a0d5624ad4803e74" + integrity sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" - jest-mock "^28.0.2" - jest-util "^28.0.2" + jest-mock "^29.3.1" + jest-util "^29.3.1" -jest-extended@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-2.0.0.tgz#8a6cef7369c2ef774bd966279a30cd73abe408dd" - integrity sha512-6AgjJQVaBEKGSK3FH90kOiRUWJsbzn9NWtW0pjGkAFIdH0oPilfkV/gHPJdVvJeBiqT3jMHw8TUg9pUGC1azDg== +jest-extended@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-3.2.0.tgz#4333dbb47e40acef3abccb1d22b7769c5fa90a0b" + integrity sha512-jy+1nwlPLPPR6O8O9Mn+BWCBq/jL/9OgdKEG8ekOSQoLyVvAO5nND8ll3UxoajzBu4kYyn7zUKYWRdnTfQPcVw== dependencies: - jest-diff "^27.2.5" - jest-get-type "^27.0.6" - -jest-get-type@^27.0.1, jest-get-type@^27.0.6, jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + jest-diff "^29.0.0" + jest-get-type "^29.0.0" -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== +jest-get-type@^29.0.0, jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== jest-haste-map@^27.5.1: version "27.5.1" @@ -6740,191 +6657,182 @@ jest-haste-map@^27.5.1: optionalDependencies: fsevents "^2.3.2" -jest-haste-map@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.0.2.tgz#0c768f43680013cfd2a4471a3ec76c47bfb9e7c6" - integrity sha512-EokdL7l5uk4TqWGawwrIt8w3tZNcbeiRxmKGEURf42pl+/rWJy3sCJlon5HBhJXZTW978jk6600BLQOI7i25Ig== +jest-haste-map@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.3.1.tgz#af83b4347f1dae5ee8c2fb57368dc0bb3e5af843" + integrity sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A== dependencies: - "@jest/types" "^28.0.2" + "@jest/types" "^29.3.1" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^28.0.2" - jest-util "^28.0.2" - jest-worker "^28.0.2" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" + jest-worker "^29.3.1" micromatch "^4.0.4" - walker "^1.0.7" + walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.0.2.tgz#cbde3d22d09bd690ececdc2ed01c608435328456" - integrity sha512-UGaSPYtxKXl/YKacq6juRAKmMp1z2os8NaU8PSC+xvNikmu3wF6QFrXrihMM4hXeMr9HuNotBrQZHmzDY8KIBQ== - dependencies: - jest-get-type "^28.0.2" - pretty-format "^28.0.2" - -jest-matcher-utils@27.0.2: - version "27.0.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.2.tgz#f14c060605a95a466cdc759acc546c6f4cbfc4f0" - integrity sha512-Qczi5xnTNjkhcIB0Yy75Txt+Ez51xdhOxsukN7awzq2auZQGPHcQrJ623PZj0ECDEMOk2soxWx05EXdXGd1CbA== +jest-leak-detector@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz#95336d020170671db0ee166b75cd8ef647265518" + integrity sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA== dependencies: - chalk "^4.0.0" - jest-diff "^27.0.2" - jest-get-type "^27.0.1" - pretty-format "^27.0.2" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-matcher-utils@^27.0.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== +jest-matcher-utils@29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz#9202f8e8d3a54733266784ce7763e9a08688269c" + integrity sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw== dependencies: chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-diff "^29.2.1" + jest-get-type "^29.2.0" + pretty-format "^29.2.1" -jest-matcher-utils@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz#eb461af204b6d0f05281e9228094f0ab7e9e8537" - integrity sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA== +jest-matcher-utils@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" + integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== dependencies: chalk "^4.0.0" - jest-diff "^28.0.2" - jest-get-type "^28.0.2" - pretty-format "^28.0.2" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" -jest-message-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.0.2.tgz#f3cf36be72be4c4c4058cb34bd6673996d26dee3" - integrity sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA== +jest-message-util@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" + integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.0.2" + "@jest/types" "^29.3.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^28.0.2" + pretty-format "^29.3.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.0.2.tgz#059b500b34c1dd76474ebcdeccc249fe4dd0249f" - integrity sha512-vfnJ4zXRB0i24jOTGtQJyl26JKsgBKtqRlCnsrORZbG06FToSSn33h2x/bmE8XxqxkLWdZBRo+/65l8Vi3nD+g== +jest-mock@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e" + integrity sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA== dependencies: - "@jest/types" "^28.0.2" + "@jest/types" "^29.3.1" "@types/node" "*" + jest-util "^29.3.1" jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-raw-loader@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/jest-raw-loader/-/jest-raw-loader-1.0.1.tgz#ce9f56d54650f157c4a7d16d224ba5d613bcd626" - integrity sha1-zp9W1UZQ8VfEp9FtIkul1hO81iY= + integrity sha512-g9oaAjeC4/rIJk1Wd3RxVbOfMizowM7LSjEJqa4R9qDX0OjQNABXOhH+GaznUp+DjTGVPi2vPPbQXyX87DOnYg== jest-regex-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== -jest-regex-util@^28.0.0, jest-regex-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" - integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== +jest-regex-util@^29.0.0, jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-resolve-dependencies@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.3.tgz#76d8f59f7e76ba36d76a1677eeaaed24560da7e0" - integrity sha512-lCgHMm0/5p0qHemrOzm7kI6JDei28xJwIf7XOEcv1HeAVHnsON8B8jO/woqlU+/GcOXb58ymieYqhk3zjGWnvQ== +jest-resolve-dependencies@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz#a6a329708a128e68d67c49f38678a4a4a914c3bf" + integrity sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA== dependencies: - jest-regex-util "^28.0.2" - jest-snapshot "^28.0.3" + jest-regex-util "^29.2.0" + jest-snapshot "^29.3.1" -jest-resolve@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.0.3.tgz#63f8e6b53e40f265b3ca9116195221dd43e3d16d" - integrity sha512-lfgjd9JhEjpjIN3HLUfdysdK+A7ePQoYmd7WL9DUEWqdnngb1rF56eee6iDXJxl/3eSolpP43VD7VrhjL3NsoQ== +jest-resolve@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.3.1.tgz#9a4b6b65387a3141e4a40815535c7f196f1a68a7" + integrity sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^28.0.2" + jest-haste-map "^29.3.1" jest-pnp-resolver "^1.2.2" - jest-util "^28.0.2" - jest-validate "^28.0.2" + jest-util "^29.3.1" + jest-validate "^29.3.1" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner-eslint@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jest-runner-eslint/-/jest-runner-eslint-1.0.0.tgz#5cede321ed5ed57233462c5204a0fa8d90f993bd" - integrity sha512-LMlAaIQqIIySEThv651bfvzwX6J4nOu91RaEUYmXJgn4XXbM40rSMlBaC8ZrrFcFemu88MFlnrCLuYf7ZHE2sQ== +jest-runner-eslint@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jest-runner-eslint/-/jest-runner-eslint-1.1.0.tgz#9aa133cdc63a7dd813511870c709391eef3af89f" + integrity sha512-XAQnEIuaZ/wHU8YVR4AEka5FBg3P+fnKd/upk8D9lxhejsclgai5gle7Ay4eLQ1+mlh2y5Ya3/AmfYz8FFZKJQ== dependencies: chalk "^3.0.0" cosmiconfig "^6.0.0" create-jest-runner "^0.6.0" dot-prop "^5.3.0" -jest-runner@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.0.3.tgz#a8a409c685ad3081a44b149b2eb04bc4d47faaf9" - integrity sha512-4OsHMjBLtYUWCENucAQ4Za0jGfEbOFi/Fusv6dzUuaweqx8apb4+5p2LR2yvgF4StFulmxyC238tGLftfu+zBA== +jest-runner@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.3.1.tgz#a92a879a47dd096fea46bb1517b0a99418ee9e2d" + integrity sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA== dependencies: - "@jest/console" "^28.0.2" - "@jest/environment" "^28.0.2" - "@jest/test-result" "^28.0.2" - "@jest/transform" "^28.0.3" - "@jest/types" "^28.0.2" + "@jest/console" "^29.3.1" + "@jest/environment" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.10.2" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^28.0.2" - jest-environment-node "^28.0.2" - jest-haste-map "^28.0.2" - jest-leak-detector "^28.0.2" - jest-message-util "^28.0.2" - jest-resolve "^28.0.3" - jest-runtime "^28.0.3" - jest-util "^28.0.2" - jest-watcher "^28.0.2" - jest-worker "^28.0.2" + jest-docblock "^29.2.0" + jest-environment-node "^29.3.1" + jest-haste-map "^29.3.1" + jest-leak-detector "^29.3.1" + jest-message-util "^29.3.1" + jest-resolve "^29.3.1" + jest-runtime "^29.3.1" + jest-util "^29.3.1" + jest-watcher "^29.3.1" + jest-worker "^29.3.1" + p-limit "^3.1.0" source-map-support "0.5.13" - throat "^6.0.1" - -jest-runtime@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.0.3.tgz#02346a34de0ac61d23bdb0e8c035ad973d7bb087" - integrity sha512-7FtPUmvbZEHLOdjsF6dyHg5Pe4E0DU+f3Vvv8BPzVR7mQA6nFR4clQYLAPyJGnsUvN8WRWn+b5a5SVwnj1WaGg== - dependencies: - "@jest/environment" "^28.0.2" - "@jest/fake-timers" "^28.0.2" - "@jest/globals" "^28.0.3" - "@jest/source-map" "^28.0.2" - "@jest/test-result" "^28.0.2" - "@jest/transform" "^28.0.3" - "@jest/types" "^28.0.2" + +jest-runtime@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.3.1.tgz#21efccb1a66911d6d8591276a6182f520b86737a" + integrity sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/globals" "^29.3.1" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^28.0.2" - jest-message-util "^28.0.2" - jest-mock "^28.0.2" - jest-regex-util "^28.0.2" - jest-resolve "^28.0.3" - jest-snapshot "^28.0.3" - jest-util "^28.0.2" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" slash "^3.0.0" strip-bom "^4.0.0" @@ -6936,41 +6844,42 @@ jest-serializer@^27.5.1: "@types/node" "*" graceful-fs "^4.2.9" -jest-snapshot@^28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.0.3.tgz#9a768d0c617d070e87c1bd37240f22b344616154" - integrity sha512-nVzAAIlAbrMuvVUrS1YxmAeo1TfSsDDU+K5wv/Ow56MBp+L+Y71ksAbwRp3kGCgZAz4oOXcAMPAwtT9Yh1hlQQ== +jest-snapshot@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.3.1.tgz#17bcef71a453adc059a18a32ccbd594b8cc4e45e" + integrity sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^28.0.2" - "@jest/transform" "^28.0.3" - "@jest/types" "^28.0.2" + "@jest/expect-utils" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^28.0.2" + expect "^29.3.1" graceful-fs "^4.2.9" - jest-diff "^28.0.2" - jest-get-type "^28.0.2" - jest-haste-map "^28.0.2" - jest-matcher-utils "^28.0.2" - jest-message-util "^28.0.2" - jest-util "^28.0.2" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" natural-compare "^1.4.0" - pretty-format "^28.0.2" + pretty-format "^29.3.1" semver "^7.3.5" -jest-styled-components@7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/jest-styled-components/-/jest-styled-components-7.0.8.tgz#9ea3b43f002de060b4638fde3b422d14b3e3ec9f" - integrity sha512-0KE54d0yIzKcvtOv8eikyjG3rFRtKYUyQovaoha3nondtZzXYGB3bhsvYgEegU08Iry0ndWx2+g9f5ZzD4I+0Q== +jest-styled-components@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/jest-styled-components/-/jest-styled-components-7.1.1.tgz#faf19c733e0de4bbef1f9151955b99e839b7df48" + integrity sha512-OUq31R5CivBF8oy81dnegNQrRW13TugMol/Dz6ZnFfEyo03exLASod7YGwyHGuayYlKmCstPtz0RQ1+NrAbIIA== dependencies: - css "^3.0.0" + "@adobe/css-tools" "^4.0.1" jest-transformer-mdx@3.3.0: version "3.3.0" @@ -6998,55 +6907,55 @@ jest-util@^27.5.1: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.0.2.tgz#8e22cdd6e0549e0a393055f0e2da7eacc334b143" - integrity sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA== +jest-util@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" + integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ== dependencies: - "@jest/types" "^28.0.2" + "@jest/types" "^29.3.1" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.0.2.tgz#58bb7e826c054a8bb3b54c05f73758d96cf6dbef" - integrity sha512-nr0UOvCTtxP0YPdsk01Gk7e7c0xIiEe2nncAe3pj0wBfUvAykTVrMrdeASlAJnlEQCBuwN/GF4hKoCzbkGNCNw== +jest-validate@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.3.1.tgz#d56fefaa2e7d1fde3ecdc973c7f7f8f25eea704a" + integrity sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g== dependencies: - "@jest/types" "^28.0.2" + "@jest/types" "^29.3.1" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^28.0.2" + jest-get-type "^29.2.0" leven "^3.1.0" - pretty-format "^28.0.2" + pretty-format "^29.3.1" -jest-watch-typeahead@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" - integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== +jest-watch-typeahead@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz#36601520a2a30fd561788552dbda9c76bb44814a" + integrity sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA== dependencies: - ansi-escapes "^4.3.1" + ansi-escapes "^6.0.0" chalk "^4.0.0" - jest-regex-util "^28.0.0" - jest-watcher "^28.0.0" - slash "^4.0.0" + jest-regex-util "^29.0.0" + jest-watcher "^29.0.0" + slash "^5.0.0" string-length "^5.0.1" strip-ansi "^7.0.1" -jest-watcher@^28.0.0, jest-watcher@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.0.2.tgz#649fa24df531d4071be5784b6274d494d788c88b" - integrity sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q== +jest-watcher@^29.0.0, jest-watcher@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.3.1.tgz#3341547e14fe3c0f79f9c3a4c62dbc3fc977fd4a" + integrity sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg== dependencies: - "@jest/test-result" "^28.0.2" - "@jest/types" "^28.0.2" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.10.2" - jest-util "^28.0.2" + emittery "^0.13.1" + jest-util "^29.3.1" string-length "^4.0.1" jest-worker@^25.1.0: @@ -7066,46 +6975,41 @@ jest-worker@^27.4.5, jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.0.2.tgz#75f7e5126541289ba02e9c1a67e46349ddb8141d" - integrity sha512-pijNxfjxT0tGAx+8+OzZ+eayVPCwy/rsZFhebmC0F4YnXu1EHPEPxg7utL3m5uX3EaFH1/jwDxGa1EbjJCST2g== +jest-worker@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.3.1.tgz#e9462161017a9bb176380d721cab022661da3d6b" + integrity sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw== dependencies: "@types/node" "*" + jest-util "^29.3.1" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@28.0.3: - version "28.0.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-28.0.3.tgz#92a7d6ee097b61de4ba2db7f3ab723e81a99b32d" - integrity sha512-uS+T5J3w5xyzd1KSJCGKhCo8WTJXbNl86f5SW11wgssbandJOVLRKKUxmhdFfmKxhPeksl1hHZ0HaA8VBzp7xA== +jest@29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.3.1.tgz#c130c0d551ae6b5459b8963747fed392ddbde122" + integrity sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA== dependencies: - "@jest/core" "^28.0.3" + "@jest/core" "^29.3.1" + "@jest/types" "^29.3.1" import-local "^3.0.2" - jest-cli "^28.0.3" + jest-cli "^29.3.1" jpeg-js@^0.3.2: version "0.3.7" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d" integrity sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ== -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -7114,10 +7018,17 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsesc@^2.5.1: version "2.5.2" @@ -7127,24 +7038,19 @@ jsesc@^2.5.1: jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-loader@0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -7167,12 +7073,12 @@ json-schema@0.4.0: 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" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^1.0.1: version "1.0.1" @@ -7181,22 +7087,15 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.1: +json5@^2.1.2, json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonc-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" - integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== jsonfile@^6.0.1: version "6.1.0" @@ -7210,7 +7109,7 @@ jsonfile@^6.0.1: jsonp@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/jsonp/-/jsonp-0.2.1.tgz#a65b4fa0f10bda719a05441ea7b94c55f3e15bae" - integrity sha1-pltPoPEL2nGaBUQep7lMVfPhW64= + integrity sha512-pfog5gdDxPdV4eP7Kg87M8/bHgshlZ5pybl+yKxAnCZ5O7lCIn7Ixydj03wOlnDQesky2BPyA91SQ+5Y/mNwzw== dependencies: debug "^2.1.3" @@ -7224,20 +7123,13 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== - dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: - json-buffer "3.0.0" + array-includes "^3.1.5" + object.assign "^4.1.3" kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" @@ -7254,24 +7146,17 @@ klona@^2.0.5: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + version "1.0.6" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.6.tgz#c087cc42cd92eb71f0925e9e271d4f8be5a93430" + integrity sha512-HNkaCgM8wZgE/BZACeotAAgpL9FUjEnhgF0FVQMIgH//zqTPreLYMb3rWYkYAqPoF75Jwuycp1da7uz66cfFQg== dependencies: - package-json "^6.3.0" + language-subtag-registry "^0.3.20" leven@^3.1.0: version "3.1.0" @@ -7294,7 +7179,7 @@ lines-and-columns@^1.1.6: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -7302,9 +7187,9 @@ load-json-file@^4.0.0: strip-bom "^3.0.0" 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== + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@2.0.0: version "2.0.0" @@ -7316,22 +7201,14 @@ loader-utils@2.0.0: json5 "^2.1.2" loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^2.1.2" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -7347,6 +7224,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash-webpack-plugin@0.11.6: version "0.11.6" resolved "https://registry.yarnpkg.com/lodash-webpack-plugin/-/lodash-webpack-plugin-0.11.6.tgz#8204c6b78beb62ce5211217dfe783c21557ecd33" @@ -7357,7 +7241,7 @@ lodash-webpack-plugin@0.11.6: lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.merge@4.6.2, lodash.merge@^4.6.2: version "4.6.2" @@ -7367,9 +7251,9 @@ lodash.merge@4.6.2, lodash.merge@^4.6.2: lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7381,16 +7265,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -7398,15 +7272,15 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -luxon@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.3.2.tgz#5f2f3002b8c39b60a7b7ad24b2a85d90dc5db49c" - integrity sha512-MlAQQVMFhGk4WUA6gpfsy0QycnKP0+NlCBJRVRNPxxSIbjrCbQ65nrpJD3FVyJNZLuJ0uoqL57ye6BmDYgHaSw== +luxon@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.1.1.tgz#b492c645b2474fb86f3bd3283213846b99c32c1e" + integrity sha512-Ah6DloGmvseB/pX1cAmjbFvyU/pKuwQMQqz7d0yvuDlVYLTs2WeDHQMpC8tGjm1da+BriHROW/OEIT/KfYg6xw== lz-string@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" @@ -7430,28 +7304,15 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -map.prototype.tojson@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map.prototype.tojson/-/map.prototype.tojson-0.1.3.tgz#3b9edb44bc94d921ccb7b53e9f6c8e82e74519b5" - integrity sha1-O57bRLyU2SHMt7U+n2yOgudFGbU= - 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== -marked@4.0.14: - version "4.0.14" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.14.tgz#7a3a5fa5c80580bac78c1ed2e3b84d7bd6fc3870" - integrity sha512-HL5sSPE/LP6U9qKgngIIPTthuxC0jrfxpYMZ3LdGDD3vTnLs59m2Z7r6+LNDR3ToqEQdkKd6YaaEfJhodJmijQ== - -match-sorter@^6.0.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda" - integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== - dependencies: - "@babel/runtime" "^7.12.5" - remove-accents "0.4.2" +marked@4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.4.tgz#5a4ce6c7a1ae0c952601fce46376ee4cf1797e1c" + integrity sha512-Wcc9ikX7Q5E4BYDPvh1C6QNSxrjC9tBgz+A/vAhp59KXUgachw++uMvMKiSW8oA85nopmPZcEvBoex/YLMsiyA== mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" @@ -7509,50 +7370,59 @@ mdn-data@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.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.1.2: - version "3.4.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" - integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + version "3.4.12" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.12.tgz#d00f8ad8dab132dc277c659dc85bfd14b07d03bd" + integrity sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw== dependencies: - fs-monkey "1.0.3" + fs-monkey "^1.0.3" -memoize-one@^5.0.0, memoize-one@^5.1.1: +memoize-one@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== -merge-anything@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-5.0.2.tgz#b023af9b8f48e2fc71eb859d4ad834ba667f4150" - integrity sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA== +merge-anything@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/merge-anything/-/merge-anything-5.1.4.tgz#c63132bfa5a4eddeff6f8dfa0df9d930253c8dee" + integrity sha512-7PWKwGOs5WWcpw+/OvbiFiAvEP6bv/QHiicigpqMGKIqPPAtGhBLR8LFJW+Zu6m9TXiR/a8+AiPlGG0ko1ruoQ== dependencies: - is-what "^4.1.6" - ts-toolbelt "^9.6.0" + is-what "^4.1.8" merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" @@ -7567,32 +7437,27 @@ merge2@^1.3.0, merge2@^1.4.1: methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -microseconds@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" - integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== + braces "^3.0.2" + picomatch "^2.3.1" -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.0.1, mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.51.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" @@ -7604,54 +7469,50 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@^3.0.4, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimatch@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.1.tgz#6c9dffcf9927ff2a31e74b5af11adf8b9604b022" + integrity sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g== + dependencies: + brace-expansion "^2.0.1" -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== +morgan@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" + integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== dependencies: - minimist "^1.2.5" - -moment@2.29.3: - version "2.29.3" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" - integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== + basic-auth "~2.0.1" + debug "2.6.9" + depd "~2.0.0" + on-finished "~2.3.0" + on-headers "~1.0.2" mout@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/mout/-/mout-0.11.1.tgz#ba3611df5f0e5b1ffbfd01166b8f02d1f5fa2b99" - integrity sha1-ujYR318OWx/7/QEWa48C0fX6K5k= + integrity sha512-pK9VNiLE3QgGBrC/3ICAscwOLU7oTNeK2l32uqNAioBYtB2tQAfSsGDNChUlk7CP23126mc5lUt6+na9FlN8JA== ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" @@ -7666,36 +7527,34 @@ ms@2.1.3, ms@^2.1.1: multi-integer-range@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/multi-integer-range/-/multi-integer-range-3.0.0.tgz#d8ec2744d08758f2acf81653d2fe038a95cf7595" - integrity sha1-2OwnRNCHWPKs+BZT0v4DipXPdZU= + integrity sha512-uQzynjVJ8F7x5wjaK0g4Ybhy2TvO/pk96+YHyS5g1W4GuUEV6HMebZ8HcRwWgKIRCUT2MLbM5uCKwYcAqkS+8Q== -nano-time@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef" - integrity sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8= - dependencies: - big-integer "^1.6.16" +nanoid@^3.1.30, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== -nanoid@^3.1.30, nanoid@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== ndarray-ops@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/ndarray-ops/-/ndarray-ops-1.2.2.tgz#59e88d2c32a7eebcb1bc690fae141579557a614e" - integrity sha1-WeiNLDKn7ryxvGkPrhQVeVV6YU4= + integrity sha512-BppWAFRjMYF7N/r6Ie51q6D4fs0iiGmeXIACKY66fLpnwIui3Wc3CXiD/30mgLbDjPpSLrsqcp3Z62+IcHZsDw== dependencies: cwise-compiler "^1.0.0" ndarray-pack@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ndarray-pack/-/ndarray-pack-1.2.1.tgz#8caebeaaa24d5ecf70ff86020637977da8ee585a" - integrity sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo= + integrity sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g== dependencies: cwise-compiler "^1.1.2" ndarray "^1.0.13" @@ -7723,13 +7582,12 @@ next-compose-plugins@2.2.1: resolved "https://registry.yarnpkg.com/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz#020fc53f275a7e719d62521bef4300fbb6fde5ab" integrity sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg== -next-transpile-modules@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/next-transpile-modules/-/next-transpile-modules-9.0.0.tgz#133b1742af082e61cc76b02a0f12ffd40ce2bf90" - integrity sha512-VCNFOazIAnXn1hvgYYSTYMnoWgKgwlYh4lm1pKbSfiB3kj5ZYLcKVhfh3jkPOg1cnd9DP+pte9yCUocdPEUBTQ== +next-transpile-modules@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/next-transpile-modules/-/next-transpile-modules-10.0.0.tgz#7152880048835acb64d05fc7aa34910cbe7994da" + integrity sha512-FyeJ++Lm2Fq31gbThiRCrJlYpIY9QaI7A3TjuhQLzOix8ChQrvn5ny4MhfIthS5cy6+uK1AhDRvxVdW17y3Xdw== dependencies: - enhanced-resolve "^5.7.0" - escalade "^3.1.1" + enhanced-resolve "^5.10.0" next@12.1.6: version "12.1.6" @@ -7754,6 +7612,32 @@ next@12.1.6: "@next/swc-win32-ia32-msvc" "12.1.6" "@next/swc-win32-x64-msvc" "12.1.6" +next@12.3.4: + version "12.3.4" + resolved "https://registry.yarnpkg.com/next/-/next-12.3.4.tgz#f2780a6ebbf367e071ce67e24bd8a6e05de2fcb1" + integrity sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ== + dependencies: + "@next/env" "12.3.4" + "@swc/helpers" "0.4.11" + caniuse-lite "^1.0.30001406" + postcss "8.4.14" + styled-jsx "5.0.7" + use-sync-external-store "1.2.0" + optionalDependencies: + "@next/swc-android-arm-eabi" "12.3.4" + "@next/swc-android-arm64" "12.3.4" + "@next/swc-darwin-arm64" "12.3.4" + "@next/swc-darwin-x64" "12.3.4" + "@next/swc-freebsd-x64" "12.3.4" + "@next/swc-linux-arm-gnueabihf" "12.3.4" + "@next/swc-linux-arm64-gnu" "12.3.4" + "@next/swc-linux-arm64-musl" "12.3.4" + "@next/swc-linux-x64-gnu" "12.3.4" + "@next/swc-linux-x64-musl" "12.3.4" + "@next/swc-win32-arm64-msvc" "12.3.4" + "@next/swc-win32-ia32-msvc" "12.3.4" + "@next/swc-win32-x64-msvc" "12.3.4" + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -7762,7 +7646,7 @@ nice-try@^1.0.4: node-bitmap@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/node-bitmap/-/node-bitmap-0.0.1.tgz#180eac7003e0c707618ef31368f62f84b2a69091" - integrity sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE= + integrity sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA== node-environment-flags@^1.0.5: version "1.0.6" @@ -7775,38 +7659,33 @@ node-environment-flags@^1.0.5: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== - -node-releases@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" - integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== -nodemon@2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.16.tgz#d71b31bfdb226c25de34afea53486c8ef225fdef" - integrity sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w== +nodemon@2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.20.tgz#e3537de768a492e8d74da5c5813cb0c7486fc701" + integrity sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw== dependencies: chokidar "^3.5.2" debug "^3.2.7" ignore-by-default "^1.0.1" - minimatch "^3.0.4" + minimatch "^3.1.2" pstree.remy "^1.1.8" semver "^5.7.1" + simple-update-notifier "^1.0.7" supports-color "^5.5.0" touch "^3.1.0" undefsafe "^2.0.5" - update-notifier "^5.1.0" nopt@~1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= + integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== dependencies: abbrev "1" @@ -7828,12 +7707,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== npm-run-all@4.1.5: version "4.1.5" @@ -7857,12 +7731,19 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -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== +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +numbro@2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.3.6.tgz#4bd622ebe59ccbc49dad365c5b9eed200781fa21" + integrity sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg== dependencies: - boolbase "~1.0.0" + bignumber.js "^8.1.1" oauth-sign@~0.9.0: version "0.9.0" @@ -7872,14 +7753,14 @@ oauth-sign@~0.9.0: 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= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -object-is@^1.0.1: +object-is@^1.0.1, object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -7887,69 +7768,65 @@ object-is@^1.0.1: call-bind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, 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== +object.assign@^4.1.2, object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== +object.entries@^1.1.5, object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== +object.getownpropertydescriptors@^2.0.3: + version "2.1.5" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== dependencies: + array.prototype.reduce "^1.0.5" call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -object.values@^1.1.0, object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== +object.values@^1.1.5, object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -oblivious-set@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566" - integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== + define-properties "^1.1.4" + es-abstract "^1.20.4" omggif@^1.0.5: version "1.0.10" @@ -7966,14 +7843,19 @@ on-finished@2.4.1: on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -7996,18 +7878,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.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" @@ -8015,12 +7885,12 @@ p-limit@^2.0.0, p-limit@^2.2.0: 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" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +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-limit "^1.1.0" + yocto-queue "^0.1.0" p-locate@^3.0.0: version "3.0.0" @@ -8036,31 +7906,18 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -papaparse@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.2.0.tgz#97976a1b135c46612773029153dc64995caa3b7b" - integrity sha512-ylq1wgUSnagU+MKQtNeVqrPhZuMYBvOSL00DHycFTCxownF95gpLAk1HiHdUW77N8yxRq1qHXLdlIPyBSG9NSA== - papaparse@5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.2.tgz#d1abed498a0ee299f103130a6109720404fbd467" @@ -8076,7 +7933,7 @@ parent-module@^1.0.0: parse-data-uri@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/parse-data-uri/-/parse-data-uri-0.2.0.tgz#bf04d851dd5c87b0ab238e5d01ace494b604b4c9" - integrity sha1-vwTYUd1ch7CrI45dAazklLYEtMk= + integrity sha512-uOtts8NqDcaCt1rIsO3VFDRsAfgE4c6osG4d9z3l4dCBlxYFzni6Di/oNU270SDrjkfZuUvLZx1rxMyqh46Y9w== dependencies: data-uri-to-buffer "0.0.3" @@ -8095,7 +7952,7 @@ parse-entities@^2.0.0: parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -8113,7 +7970,7 @@ parse-json@^5.0.0, parse-json@^5.2.0: parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q== parse5@^6.0.0: version "6.0.1" @@ -8128,7 +7985,7 @@ parseurl@~1.3.3: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -8138,19 +7995,19 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -8158,7 +8015,7 @@ path-parse@^1.0.6, path-parse@^1.0.7: path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^3.0.0: version "3.0.0" @@ -8175,14 +8032,14 @@ path-type@^4.0.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -8195,7 +8052,7 @@ pidtree@^0.3.0: pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" @@ -8229,7 +8086,7 @@ pluralize@^8.0.0: pngjs-nozlib@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pngjs-nozlib/-/pngjs-nozlib-1.0.0.tgz#9e64d602cfe9cce4d9d5997d0687429a73f0b7d7" - integrity sha1-nmTWAs/pzOTZ1Zl9BodCmnPwt9c= + integrity sha512-N1PggqLp9xDqwAoKvGohmZ3m4/N9xpY0nDZivFqQLcpLHmliHnCp9BuNCsOeqHWMuEEgFjpEaq9dZq6RZyy0fA== pngjs@^3.3.3: version "3.4.0" @@ -8248,12 +8105,12 @@ popper.js@^1.14.4: resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== -postcss-attribute-case-insensitive@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz#39cbf6babf3ded1e4abf37d09d6eda21c644105c" - integrity sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ== +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== dependencies: - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^6.0.10" postcss-clamp@^4.1.0: version "4.1.0" @@ -8262,57 +8119,59 @@ postcss-clamp@^4.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-color-functional-notation@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz#f59ccaeb4ee78f1b32987d43df146109cc743073" - integrity sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ== +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== dependencies: postcss-value-parser "^4.2.0" -postcss-color-hex-alpha@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.3.tgz#61a0fd151d28b128aa6a8a21a2dad24eebb34d52" - integrity sha512-fESawWJCrBV035DcbKRPAVmy21LpoyiXdPTuHUfWJ14ZRjY7Y7PA6P4g8z6LQGYhU1WAxkTxjIjurXzoe68Glw== +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== dependencies: postcss-value-parser "^4.2.0" -postcss-color-rebeccapurple@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz#5d397039424a58a9ca628762eb0b88a61a66e079" - integrity sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw== +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== dependencies: postcss-value-parser "^4.2.0" -postcss-custom-media@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz#1be6aff8be7dc9bf1fe014bde3b71b92bb4552f1" - integrity sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g== +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" -postcss-custom-properties@^12.1.7: - version "12.1.7" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.7.tgz#ca470fd4bbac5a87fd868636dafc084bc2a78b41" - integrity sha512-N/hYP5gSoFhaqxi2DPCmvto/ZcRDVjE3T1LiAMzc/bg53hvhcHOLpXOHb526LzBBp5ZlAUhkuot/bfpmpgStJg== +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== dependencies: postcss-value-parser "^4.2.0" -postcss-custom-selectors@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz#022839e41fbf71c47ae6e316cb0e6213012df5ef" - integrity sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q== +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== dependencies: postcss-selector-parser "^6.0.4" -postcss-dir-pseudo-class@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz#9afe49ea631f0cb36fa0076e7c2feb4e7e3f049c" - integrity sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw== +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== dependencies: - postcss-selector-parser "^6.0.9" + postcss-selector-parser "^6.0.10" -postcss-double-position-gradients@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz#a12cfdb7d11fa1a99ccecc747f0c19718fb37152" - integrity sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ== +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" @@ -8348,15 +8207,15 @@ postcss-font-variant@^5.0.0: resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== -postcss-gap-properties@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz#6401bb2f67d9cf255d677042928a70a915e6ba60" - integrity sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ== +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== -postcss-image-set-function@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz#bcff2794efae778c09441498f40e0c77374870a9" - integrity sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A== +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== dependencies: postcss-value-parser "^4.2.0" @@ -8365,22 +8224,22 @@ postcss-initial@^4.0.1: resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== -postcss-lab-function@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz#e054e662c6480202f5760887ec1ae0d153357123" - integrity sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w== +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" -postcss-loader@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" - integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== +postcss-loader@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.0.2.tgz#b53ff44a26fba3688eee92a048c7f2d4802e23bb" + integrity sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg== dependencies: cosmiconfig "^7.0.0" klona "^2.0.5" - semver "^7.3.5" + semver "^7.3.8" postcss-logical@^5.0.4: version "5.0.4" @@ -8420,11 +8279,12 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-nesting@^10.1.4: - version "10.1.4" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.4.tgz#80de9d1c2717bc44df918dd7f118929300192a7a" - integrity sha512-2ixdQ59ik/Gt1+oPHiI1kHdwEI8lLKEmui9B1nl6163ANLC+GewQn7fXMxJF2JSb4i2MKL96GU8fIiQztK4TTA== +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== dependencies: + "@csstools/selector-specificity" "^2.0.0" postcss-selector-parser "^6.0.10" postcss-opacity-percentage@^1.1.2: @@ -8432,76 +8292,84 @@ postcss-opacity-percentage@^1.1.2: resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz#bd698bb3670a0a27f6d657cc16744b3ebf3b1145" integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== -postcss-overflow-shorthand@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz#ebcfc0483a15bbf1b27fdd9b3c10125372f4cbc2" - integrity sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg== +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" postcss-page-break@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== -postcss-place@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.4.tgz#eb026650b7f769ae57ca4f938c1addd6be2f62c9" - integrity sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg== +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== dependencies: postcss-value-parser "^4.2.0" -postcss-preset-env@7.4.4: - version "7.4.4" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.4.4.tgz#069e34e31e2a7345154da7936b9fc1fcbdbd6d43" - integrity sha512-MqzSEx/QsvOk562iV9mLTgIvLFEOq1os9QBQfkgnq8TW6yKhVFPGh0gdXSK5ZlmjuNQEga6/x833e86XZF/lug== - dependencies: - "@csstools/postcss-color-function" "^1.1.0" - "@csstools/postcss-font-format-keywords" "^1.0.0" - "@csstools/postcss-hwb-function" "^1.0.0" - "@csstools/postcss-ic-unit" "^1.0.0" - "@csstools/postcss-is-pseudo-class" "^2.0.2" - "@csstools/postcss-normalize-display-values" "^1.0.0" - "@csstools/postcss-oklab-function" "^1.1.0" +postcss-preset-env@7.8.3: + version "7.8.3" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== + dependencies: + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" "@csstools/postcss-progressive-custom-properties" "^1.3.0" - autoprefixer "^10.4.5" - browserslist "^4.20.3" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" css-blank-pseudo "^3.0.3" css-has-pseudo "^3.0.4" css-prefers-color-scheme "^6.0.3" - cssdb "^6.5.0" - postcss-attribute-case-insensitive "^5.0.0" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" postcss-clamp "^4.1.0" - postcss-color-functional-notation "^4.2.2" - postcss-color-hex-alpha "^8.0.3" - postcss-color-rebeccapurple "^7.0.2" - postcss-custom-media "^8.0.0" - postcss-custom-properties "^12.1.7" - postcss-custom-selectors "^6.0.0" - postcss-dir-pseudo-class "^6.0.4" - postcss-double-position-gradients "^3.1.1" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" postcss-env-function "^4.0.6" postcss-focus-visible "^6.0.4" postcss-focus-within "^5.0.4" postcss-font-variant "^5.0.0" - postcss-gap-properties "^3.0.3" - postcss-image-set-function "^4.0.6" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" postcss-initial "^4.0.1" - postcss-lab-function "^4.2.0" + postcss-lab-function "^4.2.1" postcss-logical "^5.0.4" postcss-media-minmax "^5.0.0" - postcss-nesting "^10.1.4" + postcss-nesting "^10.2.0" postcss-opacity-percentage "^1.1.2" - postcss-overflow-shorthand "^3.0.3" + postcss-overflow-shorthand "^3.0.4" postcss-page-break "^3.0.4" - postcss-place "^7.0.4" - postcss-pseudo-class-any-link "^7.1.2" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" postcss-replace-overflow-wrap "^4.0.0" - postcss-selector-not "^5.0.0" + postcss-selector-not "^6.0.1" postcss-value-parser "^4.2.0" -postcss-pseudo-class-any-link@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.2.tgz#81ec491aa43f97f9015e998b7a14263b4630bdf0" - integrity sha512-76XzEQv3g+Vgnz3tmqh3pqQyRojkcJ+pjaePsyhcyf164p9aZsu3t+NWxkZYbcHLK1ju5Qmalti2jPI5IWCe5w== +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== dependencies: postcss-selector-parser "^6.0.10" @@ -8510,25 +8378,17 @@ postcss-replace-overflow-wrap@^4.0.0: resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== -postcss-selector-not@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-5.0.0.tgz#ac5fc506f7565dd872f82f5314c0f81a05630dc7" - integrity sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ== - dependencies: - balanced-match "^1.0.0" - -postcss-selector-parser@^6.0.10: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" + postcss-selector-parser "^6.0.10" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.9: + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -8543,6 +8403,15 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@8.4.5: version "8.4.5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" @@ -8552,12 +8421,12 @@ postcss@8.4.5: picocolors "^1.0.0" source-map-js "^1.0.1" -postcss@^8.4.7: - version "8.4.8" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.8.tgz#dad963a76e82c081a0657d3a2f3602ce10c2e032" - integrity sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ== +postcss@^8.4.18: + version "8.4.19" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" + integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== dependencies: - nanoid "^3.3.1" + nanoid "^3.3.4" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -8566,11 +8435,6 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -8578,12 +8442,17 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== +prettier@2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" + integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== + +pretty-bytes@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: +pretty-format@^27.0.2: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== @@ -8592,13 +8461,12 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.0.2.tgz#6a24d71cbb61a5e5794ba7513fe22101675481bc" - integrity sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw== +pretty-format@^29.0.0, pretty-format@^29.2.1, pretty-format@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" + integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== dependencies: - "@jest/schemas" "^28.0.2" - ansi-regex "^5.0.1" + "@jest/schemas" "^29.0.0" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -8639,45 +8507,30 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pstree.remy@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" @@ -8689,14 +8542,7 @@ qs@~6.5.2: queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -raf@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== randombytes@^2.1.0: version "2.1.0" @@ -8728,16 +8574,6 @@ raw-loader@4.0.2: loader-utils "^2.0.0" schema-utils "^3.0.0" -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-aspect-ratio@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/react-aspect-ratio/-/react-aspect-ratio-1.1.2.tgz#a65c7ba9862dc31fcd7b6ac33f1c70beb53b8bad" @@ -8751,20 +8587,13 @@ react-copy-to-clipboard@5.1.0: copy-to-clipboard "^3.3.1" prop-types "^15.8.1" -react-dom@18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.1.0.tgz#7f6dd84b706408adde05e1df575b3a024d7e8a2f" - integrity sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w== +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" - scheduler "^0.22.0" - -react-error-boundary@2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-2.2.3.tgz#34c8238012d3b4148cec47a1b3cec669d5206578" - integrity sha512-Jiaiu6CJ4ho3sMCVI7gg+O/JB5vlFFZGwlnpFBTCOSyheYRTzz+FhBMo7tfnCTB/ZR0LaMzAPGbZGrEzAOd0eg== - dependencies: - "@babel/runtime" "^7.9.6" + scheduler "^0.23.0" react-error-boundary@3.1.4: version "3.1.4" @@ -8773,11 +8602,6 @@ react-error-boundary@3.1.4: dependencies: "@babel/runtime" "^7.12.5" -react-fast-compare@^3.0.1, react-fast-compare@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - react-gif-player@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/react-gif-player/-/react-gif-player-0.4.2.tgz#7f7675625bb264a3cfac8956edd5a18b8c196af3" @@ -8785,25 +8609,23 @@ react-gif-player@0.4.2: dependencies: prop-types "^15.6.0" -react-helmet@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" - integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== +react-i18next@11.18.6: + version "11.18.6" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.18.6.tgz#e159c2960c718c1314f1e8fcaa282d1c8b167887" + integrity sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA== dependencies: - object-assign "^4.1.1" - prop-types "^15.7.2" - react-fast-compare "^3.1.1" - react-side-effect "^2.1.0" + "@babel/runtime" "^7.14.5" + html-parse-stringify "^3.0.1" -react-icons@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.3.1.tgz#2fa92aebbbc71f43d2db2ed1aed07361124e91ca" - integrity sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ== +react-icons@4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.7.1.tgz#0f4b25a5694e6972677cb189d2a72eabea7a8345" + integrity sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw== -react-intersection-observer@9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.4.0.tgz#f6b6e616e625f9bf255857c5cba9dbf7b1825ec7" - integrity sha512-v0403CmomOVlzhqFXlzOxg0ziLcVq8mfbP0AwAcEQWgZmR2OulOT79Ikznw4UlB3N+jlUYqLMe4SDHUOyp0t2A== +react-intersection-observer@9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.4.1.tgz#4ccb21e16acd0b9cf5b28d275af7055bef878f6b" + integrity sha512-IXpIsPe6BleFOEHKzKh5UjwRUaz/JYS0lT/HPsupWEQou2hDqjhLMStc5zyE3eQVT4Fk3FufM8Fw33qW1uyeiw== react-is@^16.10.2, react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" @@ -8815,20 +8637,24 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^18.0.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67" - integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== +react-is@^18.0.0, react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== react-lifecycles-compat@^3.0.4: version "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-loader-spinner@5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/react-loader-spinner/-/react-loader-spinner-5.1.4.tgz#1f08e21aa6b721b6c303658a294f4afbf8ad8d05" - integrity sha512-qjS/5/+tWX4gPJXdA1LB2HzTHv/CX/2ic+DBLLbacM+S7gVTfS7L7gJ7IOZMzVXETaiItdCUh3f8Y2GoYG5o8Q== +react-loader-spinner@5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/react-loader-spinner/-/react-loader-spinner-5.3.4.tgz#43c22a41944e2bf3c84a249192450f1166592f30" + integrity sha512-G2vw4ssX+RDZ/vfaeva06yfNqyFViv/u+tVZ3kFLy5TKNlNx2DbuwreBSpRtPespQA+VxinxUJsigwLwG9erOg== + dependencies: + react-is "^18.2.0" + styled-components "^5.3.5" + styled-tools "^1.7.2" react-popper@^1.3.6: version "1.3.11" @@ -8843,23 +8669,6 @@ react-popper@^1.3.6: typed-styles "^0.0.7" warning "^4.0.2" -react-popper@^2.2.4: - version "2.2.5" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.2.5.tgz#1214ef3cec86330a171671a4fbcbeeb65ee58e96" - integrity sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw== - dependencies: - react-fast-compare "^3.0.1" - warning "^4.0.2" - -react-query@3.38.0: - version "3.38.0" - resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.38.0.tgz#e7f4081e45ba47a4119e548ddcfd0fab18f0580e" - integrity sha512-VRbCTRrDfC5FsB70+JfZuxFRv9SAvkZ1h36MsN8+QaDN+NWB6s1vJndqpoLQnJqN0COTG2zsInMq0KFdYze6TA== - dependencies: - "@babel/runtime" "^7.5.5" - broadcast-channel "^3.4.1" - match-sorter "^6.0.2" - react-reactstrap-pagination@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/react-reactstrap-pagination/-/react-reactstrap-pagination-2.0.3.tgz#19797317f8d1ebcc66aec655f8b1a554c3e606a1" @@ -8868,67 +8677,53 @@ react-reactstrap-pagination@2.0.3: memoize-one "^5.1.1" prop-types "^15.7.2" -react-resize-detector@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-7.0.0.tgz#fbd46917ee905b7796c797aa6b301b454a6b9229" - integrity sha512-Xd1POfpVzH9O3F/xB/0xYy2ijtKjE/z7y4c/aJP593YSzhPy2vDhsNPjes+uQbgL1RezxJajQ679qPs8K5LAFw== - dependencies: - "@types/resize-observer-browser" "^0.1.6" - lodash "^4.17.21" - -react-resize-detector@^6.6.3: - version "6.7.8" - resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-6.7.8.tgz#318c85d1335e50f99d4fb8eb9ec34e066db597d0" - integrity sha512-0FaEcUBAbn+pq3PT5a9hHRebUfuS1SRLGLpIw8LydU7zX429I6XJgKerKAMPsJH0qWAl6o5bVKNqFJqr6tGPYw== +react-resize-detector@7.1.2, react-resize-detector@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/react-resize-detector/-/react-resize-detector-7.1.2.tgz#8ef975dd8c3d56f9a5160ac382ef7136dcd2d86c" + integrity sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw== dependencies: - "@types/resize-observer-browser" "^0.1.6" lodash "^4.17.21" - resize-observer-polyfill "^1.5.1" -react-select@5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.3.1.tgz#2cb651b71493e494c56f6b4ce40011669b34bd95" - integrity sha512-Y195MmhDoDAj/8gTDyYZU1Raf7tmZd81wxM6RkFko4pqJ4Xv0/ilqUMtSn+GYkwmSlTWeMlzh+e+t7PJgtuXPw== +react-select@5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.0.tgz#82921b38f1fcf1471a0b62304da01f2896cd8ce6" + integrity sha512-lJGiMxCa3cqnUr2Jjtg9YHsaytiZqeNOKeibv6WF5zbK/fPegZ1hg3y/9P1RZVLhqBTs0PfqQLKuAACednYGhQ== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" "@emotion/react" "^11.8.1" + "@floating-ui/dom" "^1.0.1" "@types/react-transition-group" "^4.4.0" - memoize-one "^5.0.0" + memoize-one "^6.0.0" prop-types "^15.6.0" react-transition-group "^4.3.0" + use-isomorphic-layout-effect "^1.1.2" -react-share@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/react-share/-/react-share-4.4.0.tgz#cabbf2111d7a907a888ab4d89d08410329efd5ee" - integrity sha512-POe8Ge/JT9Ew9iyW7CiYsCCWCb8uMJWqFl9S7W0fJ/oH5gBJNzukH0bL5vSr17KKG5h15d3GfKaoviI22BKeYA== +react-share@4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-share/-/react-share-4.4.1.tgz#4bfb0b512e26afedfea2fb66eb13c95c28fb216a" + integrity sha512-AJ9m9RiJssqvYg7MoJUc9J0D7b/liWrsfQ99ndKc5vJ4oVHHd4Fy87jBlKEQPibT40oYA3AQ/a9/oQY6/yaigw== dependencies: - classnames "^2.2.5" + classnames "^2.3.2" jsonp "^0.2.1" -react-side-effect@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" - integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== - -react-smooth@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-2.0.0.tgz#561647b33e498b2e25f449b3c6689b2e9111bf91" - integrity sha512-wK4dBBR6P21otowgMT9toZk+GngMplGS1O5gk+2WSiHEXIrQgDvhR5IIlT74Vtu//qpTcipkgo21dD7a7AUNxw== +react-smooth@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-2.0.1.tgz#74c7309916d6ccca182c4b30c8992f179e6c5a05" + integrity sha512-Own9TA0GPPf3as4vSwFhDouVfXP15ie/wIHklhyKBH5AN6NFtdk0UpHBnonV11BtqDkAWlt40MOUc+5srmW7NA== dependencies: fast-equals "^2.0.0" - raf "^3.4.0" react-transition-group "2.9.0" -react-super-responsive-table@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/react-super-responsive-table/-/react-super-responsive-table-5.2.0.tgz#5357c928f7bca7851b3ae3f2e8e7550f7acf5c7d" - integrity sha512-gC6QX/+HNt7d5QDvhp83Q8AV8/44mbeRo4Z4UQ9KfBbY9dyHkQZUXRbaWPFp6CHmfSyVlJaRseTHzwMKmJjRKA== +react-super-responsive-table@5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-super-responsive-table/-/react-super-responsive-table-5.2.1.tgz#e9c3113d7676e74db9110f8385a3dddce45ee00f" + integrity sha512-93DAJbI4FjR0Yops+0v1MZIUhIMRQOm/N//o35mk/g4NCZ99HIOB+gdZPorZwKX3mfr3h3H3ATcU4jLMfpuC9Q== -react-toggle@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.1.2.tgz#b00500832f925ad524356d909821821ae39f6c52" - integrity sha512-4Ohw31TuYQdhWfA6qlKafeXx3IOH7t4ZHhmRdwsm1fQREwOBGxJT+I22sgHqR/w8JRdk+AeMCJXPImEFSrNXow== +react-toggle@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/react-toggle/-/react-toggle-4.1.3.tgz#99193392cca8e495710860c49f55e74c4e6cf452" + integrity sha512-WoPrvbwfQSvoagbrDnXPrlsxwzuhQIrs+V0I162j/s+4XPgY/YDAUmHSeWiroznfI73wj+MBydvW95zX8ABbSg== dependencies: classnames "^2.2.5" @@ -8952,35 +8747,23 @@ react-transition-group@^3.0.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react-transition-group@^4.3.0, react-transition-group@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" - integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== +react-transition-group@^4.3.0: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" loose-envify "^1.4.0" prop-types "^15.6.2" -react@18.1.0, react@^16.8.6: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" - integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== +react@18.2.0, react@^16.8.6: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" -reactstrap@*: - version "9.0.1" - resolved "https://registry.yarnpkg.com/reactstrap/-/reactstrap-9.0.1.tgz#a6b205861f3e83da55063bc04ba1a069e969f21d" - integrity sha512-89VOv7SRlAlpS7RwXhzOQkSWkuhBR8LBsPGfNHifNL3WhtNP9y1sBdTcTYyH1ee2QtI8zRdwD0T5I/blHiwemg== - dependencies: - "@babel/runtime" "^7.12.5" - "@popperjs/core" "^2.6.0" - classnames "^2.2.3" - prop-types "^15.5.8" - react-popper "^2.2.4" - react-transition-group "^4.4.2" - reactstrap@8.10.1: version "8.10.1" resolved "https://registry.yarnpkg.com/reactstrap/-/reactstrap-8.10.1.tgz#43ea596c7f82f88997a9c8aae203417910262d3f" @@ -9004,7 +8787,7 @@ read-pkg-up@^7.0.1: read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" @@ -9023,7 +8806,7 @@ read-pkg@^5.2.0: readable-stream@~1.0.33-1: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -9033,7 +8816,7 @@ readable-stream@~1.0.33-1: readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -9054,10 +8837,10 @@ recharts-scale@^0.4.4: dependencies: decimal.js-light "^2.4.1" -recharts@2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.1.9.tgz#a52d411a7d822d118f7754cfc9c50db8fab46fb9" - integrity sha512-VozH5uznUvGqD7n224FGj7cmMAenlS0HPCs+7r2HeeHiQK6un6z0CTZfWVAB860xbcr4m+BN/EGMPZmYWd34Rg== +recharts@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/recharts/-/recharts-2.2.0.tgz#1b8ba0799ff0feb96c87f009cd2ddd8cf5108817" + integrity sha512-/uRJ0oaESGyz//PgAzvrwXEhrKaNha1ELLysEMRklbnsddiVQsSNicP7DWiz8qFcyYXy3BrDqrUjiLiVRTSMtA== dependencies: "@types/d3-interpolate" "^2.0.0" "@types/d3-scale" "^3.0.0" @@ -9069,22 +8852,22 @@ recharts@2.1.9: eventemitter3 "^4.0.1" lodash "^4.17.19" react-is "^16.10.2" - react-resize-detector "^6.6.3" - react-smooth "^2.0.0" + react-resize-detector "^7.1.2" + react-smooth "^2.0.1" recharts-scale "^0.4.4" reduce-css-calc "^2.1.8" -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== dependencies: - resolve "^1.9.0" + resolve "^1.20.0" -recoil@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/recoil/-/recoil-0.7.2.tgz#37aafc9e0674abae639263354a11c910e71bf78a" - integrity sha512-OT4pI7FOUHcIoRtjsL5Lqq+lFFzQfir4MIbUkqyJ3nqv3WfBP1pHepyurqTsK5gw+T+I2R8+uOD28yH+Lg5o4g== +recoil@0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/recoil/-/recoil-0.7.6.tgz#75297ecd70bbfeeb72e861aa6141a86bb6dfcd5e" + integrity sha512-hsBEw7jFdpBCY/tu2GweiyaqHKxVj6EqF2/SfrglbKvJHhpN57SANWvPW+gE90i3Awi+A5gssOd3u+vWlT+g7g== dependencies: hamt_plus "1.0.2" @@ -9109,10 +8892,10 @@ reflect-metadata@0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: regenerate "^1.4.2" @@ -9121,15 +8904,15 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@0.13.9, regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@0.13.11, regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" @@ -9138,54 +8921,41 @@ regexp-tree@^0.1.24, regexp-tree@~0.1.1: resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.24.tgz#3d6fa238450a4d66e5bc9c4c14bb720e2196829d" integrity sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^3.0.0, regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.2.tgz#3e4e5d12103b64748711c3aad69934d7718e75fc" + integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== dependencies: regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" + regenerate-unicode-properties "^10.1.0" + regjsgen "^0.7.1" + regjsparser "^0.9.1" unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" + unicode-match-property-value-ecmascript "^2.1.0" -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== +regjsgen@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6" + integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" @@ -9295,12 +9065,12 @@ remark-toc@7.0.0: remove-accents@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" - integrity sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U= + integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== repeat-string@^1.5.4: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== request@^2.44.0: version "2.88.2" @@ -9331,7 +9101,7 @@ request@^2.44.0: 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= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" @@ -9346,9 +9116,9 @@ requireindex@^1.2.0: requireindex@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" - integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI= + integrity sha512-LBnkqsDE7BZKvqylbmn7lTIVdpx4K/QCduRATpO5R+wtPmky/a8pN1bO2D6wXppn1497AJF9mNjqAXr6bdl9jg== -resize-observer-polyfill@1.5.1, resize-observer-polyfill@^1.5.1: +resize-observer-polyfill@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== @@ -9375,42 +9145,41 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2, resolve@^1.8.1, resolve@^1.9.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.8.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.9.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - lowercase-keys "^1.0.0" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@3.0.2, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +route-parser@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/route-parser/-/route-parser-0.0.5.tgz#7d1d09d335e49094031ea16991a4a79b01bbe1f4" + integrity sha512-nsii+MXoNb7NyF05LP9kaktx6AoBVT/7zUgDnzIb5IoYAvYkbZOAuoLJjVdsyEVxWv0swCxWkKDK4cMva+WDBA== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -9418,15 +9187,24 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" safe-regex@^2.1.1: version "2.1.1" @@ -9440,10 +9218,10 @@ safe-regex@^2.1.1: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" - integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== +sass@1.56.1: + version "1.56.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.56.1.tgz#94d3910cd468fd075fa87f5bb17437a0b617d8a7" + integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9462,15 +9240,10 @@ save-pixels-jpeg-js-upgrade@^2.3.4-jpeg-js-upgrade.0: pngjs-nozlib "^1.0.0" through "^2.3.4" -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -scheduler@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" - integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" @@ -9518,53 +9291,27 @@ section-matter@^1.0.0: extend-shallow "^2.0.1" kind-of "^6.0.0" -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "1.8.1" - mime "1.6.0" - ms "2.1.3" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" +semver@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== send@0.18.0: version "0.18.0" @@ -9592,7 +9339,7 @@ serialize-javascript@6.0.0, serialize-javascript@^6.0.0: dependencies: randombytes "^2.1.0" -serve-static@1.15.0: +serve-static@1.15.0, serve-static@^1.14.1: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== @@ -9602,21 +9349,6 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -serve-static@^1.14.1: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.2" - -set.prototype.tojson@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/set.prototype.tojson/-/set.prototype.tojson-0.1.1.tgz#1047f13af119739c9a6a7a9e53395a5da311cd6c" - integrity sha1-EEfxOvEZc5yaanqeUzlaXaMRzWw= - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -9637,7 +9369,7 @@ shallowequal@^1.1.0: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -9651,7 +9383,7 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -9659,9 +9391,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + version "1.7.4" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== side-channel@^1.0.4: version "1.0.4" @@ -9677,6 +9409,13 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-update-notifier@^1.0.7: + version "1.1.0" + resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82" + integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== + dependencies: + semver "~7.0.0" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -9692,27 +9431,24 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slash@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.0.0.tgz#8c18a871096b71ee0e002976a4fe3374991c3074" + integrity sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ== + "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-loader@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d" - integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA== +source-map-loader@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2" + integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA== dependencies: - abab "^2.0.5" + abab "^2.0.6" iconv-lite "^0.6.3" - source-map-js "^1.0.1" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" + source-map-js "^1.0.2" source-map-support@0.5.13: version "0.5.13" @@ -9730,20 +9466,20 @@ source-map-support@^0.5.16, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.5.0, source-map@^0.5.7: +source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== space-separated-tokens@^1.0.0: version "1.1.5" @@ -9772,14 +9508,14 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + version "3.0.12" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.7.0: version "1.17.0" @@ -9802,16 +9538,16 @@ stable@^0.1.8: integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" -stackframe@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" - integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== state-toggle@^1.0.0: version "1.0.3" @@ -9823,15 +9559,10 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - std-env@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" - integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.3.1.tgz#93a81835815e618c8aa75e7c8a4dc04f7c314e29" + integrity sha512-3H20QlwQsSm2OvAxWIYhs+j01MzzqwMwGiiO1NQaJYZgJZFPuAbf95/DiKRBSTYIJ2FeGUc+B/6mPGcWP9dO3Q== string-length@^4.0.1: version "4.0.2" @@ -9854,7 +9585,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9863,49 +9594,51 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2 is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.matchall@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== +string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" + regexp.prototype.flags "^1.4.3" side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" - integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.20.4" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.20.4" string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== stringify-object@^3.3.0: version "3.3.0" @@ -9933,12 +9666,12 @@ strip-ansi@^7.0.1: strip-bom-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" - integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" @@ -9962,11 +9695,6 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - style-loader@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" @@ -9979,10 +9707,10 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -styled-components@5.3.5: - version "5.3.5" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4" - integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg== +styled-components@5.3.6, styled-components@^5.3.5: + version "5.3.6" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1" + integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/traverse" "^7.4.5" @@ -10000,10 +9728,27 @@ styled-jsx@5.0.2: resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== -stylis@4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== +styled-jsx@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.7.tgz#be44afc53771b983769ac654d355ca8d019dff48" + integrity sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA== + +styled-tools@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/styled-tools/-/styled-tools-1.7.2.tgz#a8f71198535cf785d7db0927cc1c1b88337c4440" + integrity sha512-IjLxzM20RMwAsx8M1QoRlCG/Kmq8lKzCGyospjtSXt/BTIIcvgTonaxQAsKnBrsZNwhpHzO9ADx5te0h76ILVg== + +stylis@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" + integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== + +superjson@^1.10.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.12.0.tgz#7b314b982bfebc5b8e56054b8528813fdda8fc7a" + integrity sha512-B4tefmFqj8KDShHi2br2rz0kBlUJuQHtxMCydEuHvooL+6EscROTNWRfOLMDxW1dS/daK2zZr3C3N9DU+jXATQ== + dependencies: + copy-anything "^3.0.2" supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" @@ -10026,80 +9771,70 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.2: +svg-parser@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@1.3.2, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" +svgo@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" + integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + csso "^5.0.5" + picocolors "^1.0.0" + +svgo@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.1.1, tapable@^2.2.0: +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - terser-webpack-plugin@^5.1.3: - version "5.3.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" - integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + version "5.3.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" + integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== dependencies: + "@jridgewell/trace-mapping" "^0.3.14" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" - source-map "^0.6.1" - terser "^5.7.2" + terser "^5.14.1" -terser@^5.7.2: - version "5.12.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.0.tgz#728c6bff05f7d1dcb687d8eace0644802a9dae8a" - integrity sha512-R3AUhNBGWiFc77HXag+1fXpAxTAFRQTJemlJKjAgD9r8xXTpjNKqIXwHM/o7Rh+O0kUJtS3WQVdBeMKFk5sw9A== +terser@^5.14.1: + version "5.16.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.1.tgz#5af3bc3d0f24241c7fb2024199d5c461a1075880" + integrity sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw== dependencies: + "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" source-map-support "~0.5.20" test-exclude@^6.0.0: @@ -10114,22 +9849,17 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - through@^2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tiny-glob@^0.2.6: version "0.2.9" @@ -10147,12 +9877,7 @@ tmpl@1.0.5: 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" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" @@ -10164,7 +9889,7 @@ to-regex-range@^5.0.1: toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== toidentifier@1.0.1: version "1.0.1" @@ -10194,24 +9919,24 @@ trim-trailing-lines@^1.0.0: trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + integrity sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ== 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-essentials@9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.1.2.tgz#46db6944b73b4cd603f3d959ef1123c16ba56f59" - integrity sha512-EaSmXsAhEiirrTY1Oaa7TSpei9dzuCuFPmjKRJRPamERYtfaGS8/KpOSbjergLz/Y76/aZlV9i/krgzsuWEBbg== +ts-essentials@9.3.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-9.3.0.tgz#7e639c1a76b1805c3c60d6e1b5178da2e70aea02" + integrity sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw== -ts-toolbelt@9.6.0, ts-toolbelt@^9.6.0: +ts-toolbelt@9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz#50a25426cfed500d4a09bd1b3afb6f28879edfd5" integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== -tsconfig-paths@^3.14.1: +tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== @@ -10221,21 +9946,16 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^3.9.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.13.0.tgz#f3e9b8f6876698581d94470c03c95b3a48c0e3d7" - integrity sha512-nWuffZppoaYK0vQ1SQmkSsQzJoHA4s6uzdb2waRpD806x9yfq153AdVsWz4je2qZcW+pENrMQXbGQ3sMCkXuhw== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" - strip-bom "^3.0.0" - tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -10246,14 +9966,14 @@ tsutils@^3.21.0: tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -10287,6 +10007,11 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.3.0.tgz#3378c9664eecfd1eb4f0522b13cb0630bc1ec044" + integrity sha512-gezeeOIZyQLGW5uuCeEnXF1aXmtt2afKspXz3YqoOcZ3l/YMJq1pujvgT+cz/Nw1O/7q/kSav5fihJHsC/AOUg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10317,19 +10042,19 @@ typeface-open-sans@0.0.75: resolved "https://registry.yarnpkg.com/typeface-open-sans/-/typeface-open-sans-0.0.75.tgz#20d0c330f14c0c40463c334adbedd6005389abe4" integrity sha512-0lLmB7pfj113OP4T78SbpSmC4OCdFQ0vUxdSXQccsSb6qF76F92iEuC/DghFgmPswTyidk8+Hwf+PS/htiJoRQ== -typescript@4.6.4: - version "4.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" - integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== +typescript@4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" undefsafe@^2.0.5: @@ -10358,15 +10083,15 @@ unicode-match-property-ecmascript@^2.0.0: unicode-canonical-property-names-ecmascript "^2.0.0" unicode-property-aliases-ecmascript "^2.0.0" -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== unified@9.2.0: version "9.2.0" @@ -10383,14 +10108,7 @@ unified@9.2.0: uniq@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== unist-builder@2.0.3, unist-builder@^2.0.0: version "2.0.3" @@ -10455,43 +10173,18 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unload@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7" - integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA== - dependencies: - "@babel/runtime" "^7.6.2" - detect-node "^2.0.4" - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" + escalade "^3.1.1" + picocolors "^1.0.0" uri-js@^4.2.2: version "4.4.1" @@ -10514,27 +10207,20 @@ url-loader@4.1.1: mime-types "^2.1.27" schema-utils "^3.0.0" -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" +use-isomorphic-layout-effect@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== utility-types@3.10.0: version "3.10.0" @@ -10544,24 +10230,19 @@ utility-types@3.10.0: utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@^3.3.2: version "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: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511" - integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw== +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: - "@jridgewell/trace-mapping" "^0.3.7" + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -10583,12 +10264,12 @@ validate-npm-package-license@^3.0.1: vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -10617,10 +10298,15 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + vscode-json-languageservice@^4.1.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-4.2.0.tgz#df0693b69ba2fbf0a6add896087b6f1c9c38f06a" - integrity sha512-XNawv0Vdy/sUK0S+hGf7cq/qsVAbIniGJr89TvZOqMCNJmpgKTy1e8PL1aWW0uy6BfWMG7vxa5lZb3ypuFtuGQ== + version "4.2.1" + resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-4.2.1.tgz#94b6f471ece193bf4a1ef37f6ab5cce86d50a8b4" + integrity sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA== dependencies: jsonc-parser "^3.0.0" vscode-languageserver-textdocument "^1.0.3" @@ -10629,26 +10315,26 @@ vscode-json-languageservice@^4.1.6: vscode-uri "^3.0.3" vscode-languageserver-textdocument@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.4.tgz#3cd56dd14cec1d09e86c4bb04b09a246cb3df157" - integrity sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ== + version "1.0.7" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz#16df468d5c2606103c90554ae05f9f3d335b771b" + integrity sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg== vscode-languageserver-types@^3.16.0: - version "3.16.0" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247" - integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA== + version "3.17.2" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2" + integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA== vscode-nls@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840" - integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA== + version "5.2.0" + resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.2.0.tgz#3cb6893dd9bd695244d8a024bdf746eea665cc3f" + integrity sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng== vscode-uri@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.3.tgz#a95c1ce2e6f41b7549f86279d19f47951e4f4d84" - integrity sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA== + version "3.0.6" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.6.tgz#5e6e2e1a4170543af30151b561a41f71db1d6f91" + integrity sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ== -walker@^1.0.7: +walker@^1.0.7, walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -10662,10 +10348,10 @@ warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" - integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -10675,22 +10361,23 @@ web-namespaces@^1.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -webpack-cli@4.9.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d" - integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ== +webpack-cli@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.1.tgz#95fc0495ac4065e9423a722dec9175560b6f2d9a" + integrity sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.1.1" - "@webpack-cli/info" "^1.4.1" - "@webpack-cli/serve" "^1.6.1" + "@webpack-cli/configtest" "^2.0.1" + "@webpack-cli/info" "^2.0.1" + "@webpack-cli/serve" "^2.0.1" colorette "^2.0.14" - commander "^7.0.0" - execa "^5.0.0" + commander "^9.4.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" fastest-levenshtein "^1.0.12" import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" + interpret "^3.1.1" + rechoir "^0.8.0" webpack-merge "^5.7.3" webpack-merge@^5.7.3: @@ -10706,34 +10393,34 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@5.72.0, webpack@^5.51.0: - version "5.72.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" - integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== +webpack@5.75.0, webpack@^5.1.0: + version "5.75.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" + integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" + acorn "^8.7.1" acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.2" + enhanced-resolve "^5.10.0" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.9" - json-parse-better-errors "^1.0.2" + json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" schema-utils "^3.1.0" tapable "^2.1.1" terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" + watchpack "^2.4.0" webpack-sources "^3.2.3" webpackbar@5.0.2: @@ -10757,6 +10444,28 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.8: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -10771,13 +10480,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - wildcard@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" @@ -10800,7 +10502,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.0: version "3.0.3" @@ -10813,18 +10515,13 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" write-file-atomic@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" - integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7" -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -10845,23 +10542,28 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.3.1: - version "17.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" - integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== dependencies: - cliui "^7.0.2" + cliui "^8.0.1" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^21.0.0" + yargs-parser "^21.1.1" + +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"