diff --git a/packages_rs/nextclade-web/package.json b/packages_rs/nextclade-web/package.json
index 5adc69e4c..8b5c6cbfe 100644
--- a/packages_rs/nextclade-web/package.json
+++ b/packages_rs/nextclade-web/package.json
@@ -297,9 +297,10 @@
"i18next-parser": "6.3.0",
"identity-obj-proxy": "3.0.0",
"is-interactive": "1.0.0",
- "jest": "28.0.1",
+ "jest": "27.5.1",
"jest-axe": "6.0.0",
- "jest-chain": "1.1.5",
+ "jest-chain": "1.1.6",
+ "jest-environment-jsdom": "27.5.1",
"jest-extended": "2.0.0",
"jest-raw-loader": "1.0.1",
"jest-runner-eslint": "1.0.0",
diff --git a/packages_rs/nextclade-web/src/components/Error/ErrorContent.tsx b/packages_rs/nextclade-web/src/components/Error/ErrorContent.tsx
index 322ed311d..0ab256631 100644
--- a/packages_rs/nextclade-web/src/components/Error/ErrorContent.tsx
+++ b/packages_rs/nextclade-web/src/components/Error/ErrorContent.tsx
@@ -43,7 +43,7 @@ export function ErrorContentMessage({ error }: { error: Error }) {
const url = error.url ?? 'Unknown URL'
const { status, statusText, message } = error
- if (!status) {
+ if (!status || status === 'ERR_BAD_REQUEST') {
return
}
const text = message ?? statusText ?? 'Unknown status'
diff --git a/packages_rs/nextclade-web/src/constants.ts b/packages_rs/nextclade-web/src/constants.ts
index 7dfb427de..f1dedd6bd 100644
--- a/packages_rs/nextclade-web/src/constants.ts
+++ b/packages_rs/nextclade-web/src/constants.ts
@@ -33,6 +33,9 @@ export const URL_CLADE_SCHEMA_REPO = 'https://github.com/nextstrain/ncov-clades-
export const URL_CLADE_SCHEMA_SVG = 'https://raw.githubusercontent.com/nextstrain/ncov-clades-schema/master/clades.svg'
export const URL_GITHUB_DATA_RAW = 'https://raw.githubusercontent.com/nextstrain/nextclade_data' as const
+export const DEFAULT_DATA_OWNER = 'nextstrain' as const
+export const DEFAULT_DATA_REPO = 'nextclade_data' as const
+export const DEFAULT_DATA_REPO_PATH = 'data_output' as const
export const SUPPORT_EMAIL = 'hello@nextstrain.org'
diff --git a/packages_rs/nextclade-web/src/helpers/ErrorFatal.ts b/packages_rs/nextclade-web/src/helpers/ErrorFatal.ts
new file mode 100644
index 000000000..28b42f501
--- /dev/null
+++ b/packages_rs/nextclade-web/src/helpers/ErrorFatal.ts
@@ -0,0 +1,5 @@
+export class ErrorFatal extends Error {
+ public constructor(message: string) {
+ super(message)
+ }
+}
diff --git a/packages_rs/nextclade-web/src/helpers/jestUtils.ts b/packages_rs/nextclade-web/src/helpers/jestUtils.ts
new file mode 100644
index 000000000..5b4df582b
--- /dev/null
+++ b/packages_rs/nextclade-web/src/helpers/jestUtils.ts
@@ -0,0 +1,3 @@
+export function getTestName(): string {
+ return expect.getState().currentTestName.split(' ')[1]
+}
diff --git a/packages_rs/nextclade-web/src/io/__tests__/getDatasetServerUrl.test.ts b/packages_rs/nextclade-web/src/io/__tests__/getDatasetServerUrl.test.ts
new file mode 100644
index 000000000..37e881790
--- /dev/null
+++ b/packages_rs/nextclade-web/src/io/__tests__/getDatasetServerUrl.test.ts
@@ -0,0 +1,78 @@
+import { getDatasetServerUrl } from 'src/io/fetchDatasets'
+
+describe('parseGitHubRepoShortcut', () => {
+ const OLD_ENV = process.env
+
+ beforeEach(() => {
+ jest.resetModules()
+ process.env = { ...OLD_ENV, BRANCH_NAME: 'default-branch' }
+ })
+
+ afterAll(() => {
+ process.env = OLD_ENV
+ })
+
+ it.each([
+ ['gh', 'https://raw.githubusercontent.com/nextstrain/nextclade_data/default-branch/data_output'],
+ ['gh:', 'https://raw.githubusercontent.com/nextstrain/nextclade_data/default-branch/data_output'],
+ ['gh', 'https://raw.githubusercontent.com/nextstrain/nextclade_data/default-branch/data_output'],
+ ['gh:', 'https://raw.githubusercontent.com/nextstrain/nextclade_data/default-branch/data_output'],
+ ['gh:@test-branch@', 'https://raw.githubusercontent.com/nextstrain/nextclade_data/test-branch/data_output'],
+ ['gh:aaa/bbb', 'https://raw.githubusercontent.com/aaa/bbb/master/'],
+ ['gh:aaa/bbb/', 'https://raw.githubusercontent.com/aaa/bbb/master/'],
+ ['gh:aaa/bbb@test-branch@', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/'],
+ ['gh:aaa/bbb@test-branch@my/path/dir', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/my/path/dir'],
+ ['gh:aaa/bbb@test-branch@/my/path/dir', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/my/path/dir'],
+ ['gh:aaa/bbb@test-branch@my/path/dir/', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/my/path/dir'],
+ ['gh:aaa/bbb@test-branch@/my/path/dir/', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/my/path/dir'],
+ ['gh:aaa/bbb@branch/slashes@/my/path/dir', 'https://raw.githubusercontent.com/aaa/bbb/branch/slashes/my/path/dir'],
+ ['https://github.com/aaa/bbb', 'https://raw.githubusercontent.com/aaa/bbb/master/'],
+ ['https://github.com/aaa/bbb/', 'https://raw.githubusercontent.com/aaa/bbb/master/'],
+ ['https://github.com/aaa/bbb/tree/test-branch', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/'],
+ ['https://github.com/aaa/bbb/tree/test-branch/', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/'],
+ [
+ 'https://github.com/aaa/bbb/tree/test-branch/dirname',
+ 'https://raw.githubusercontent.com/aaa/bbb/test-branch/dirname',
+ ],
+ [
+ 'https://github.com/aaa/bbb/tree/test-branch/dirname/',
+ 'https://raw.githubusercontent.com/aaa/bbb/test-branch/dirname',
+ ],
+ [
+ 'https://github.com/aaa/bbb/tree/test-branch/dirname//',
+ 'https://raw.githubusercontent.com/aaa/bbb/test-branch/dirname',
+ ],
+ ['https://github.com/aaa/bbb/blob/test-branch', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/'],
+ ['https://github.com/aaa/bbb/blob/test-branch/', 'https://raw.githubusercontent.com/aaa/bbb/test-branch/'],
+ [
+ 'https://github.com/aaa/bbb/blob/test-branch/dirname',
+ 'https://raw.githubusercontent.com/aaa/bbb/test-branch/dirname',
+ ],
+ [
+ 'https://github.com/aaa/bbb/blob/test-branch/my/path/dir/',
+ 'https://raw.githubusercontent.com/aaa/bbb/test-branch/my/path/dir',
+ ],
+ [
+ 'https://github.com/aaa/bbb/blob/test-branch/dirname/filename.json',
+ 'https://raw.githubusercontent.com/aaa/bbb/test-branch/dirname/filename.json',
+ ],
+ [
+ 'https://github.com/aaa/bbb/blob/branch/slashes/dirname/filename.json',
+ 'https://raw.githubusercontent.com/aaa/bbb/branch/slashes/dirname/filename.json',
+ ],
+ [
+ 'https://github.com/aaa/bbb/blob/test-branch/dirname//',
+ 'https://raw.githubusercontent.com/aaa/bbb/test-branch/dirname',
+ ],
+ [
+ 'https://github.com/nextstrain/nextclade_data/tree/master/data_output/nextstrain/rsv/a/EPI_ISL_412866/unreleased',
+ 'https://raw.githubusercontent.com/nextstrain/nextclade_data/master/data_output/nextstrain/rsv/a/EPI_ISL_412866/unreleased',
+ ],
+ [
+ 'https://github.com/nextstrain/nextclade_data/tree/release/data_output/nextstrain/rsv/a/EPI_ISL_412866/unreleased',
+ 'https://raw.githubusercontent.com/nextstrain/nextclade_data/release/data_output/nextstrain/rsv/a/EPI_ISL_412866/unreleased',
+ ],
+ ])('%p', async (input: string, result: string) => {
+ expect(await getDatasetServerUrl({ 'dataset-server': input })).toBe(result)
+ })
+})
diff --git a/packages_rs/nextclade-web/src/io/__tests__/parseGitHubRepoShortcut.test.ts b/packages_rs/nextclade-web/src/io/__tests__/parseGitHubRepoShortcut.test.ts
new file mode 100644
index 000000000..250aa0e76
--- /dev/null
+++ b/packages_rs/nextclade-web/src/io/__tests__/parseGitHubRepoShortcut.test.ts
@@ -0,0 +1,106 @@
+import { DEFAULT_DATA_OWNER, DEFAULT_DATA_REPO, DEFAULT_DATA_REPO_PATH } from 'src/constants'
+import { getTestName } from 'src/helpers/jestUtils'
+import { parseGitHubRepoShortcut } from 'src/io/fetchSingleDatasetFromGithub'
+
+describe('parseGitHubRepoShortcut', () => {
+ const OLD_ENV = process.env
+
+ beforeEach(() => {
+ jest.resetModules()
+ process.env = { ...OLD_ENV, BRANCH_NAME: 'default-branch' }
+ })
+
+ afterAll(() => {
+ process.env = OLD_ENV
+ })
+
+ it('gh', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: DEFAULT_DATA_OWNER,
+ repo: DEFAULT_DATA_REPO,
+ branch: 'default-branch',
+ path: DEFAULT_DATA_REPO_PATH,
+ })
+ })
+
+ it('gh:', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: DEFAULT_DATA_OWNER,
+ repo: DEFAULT_DATA_REPO,
+ branch: 'default-branch',
+ path: DEFAULT_DATA_REPO_PATH,
+ })
+ })
+
+ it('gh:@test-branch@', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: DEFAULT_DATA_OWNER,
+ repo: DEFAULT_DATA_REPO,
+ branch: 'test-branch',
+ path: DEFAULT_DATA_REPO_PATH,
+ })
+ })
+
+ it('gh:aaa/bbb', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'default-branch',
+ path: '/',
+ })
+ })
+
+ it('gh:aaa/bbb/', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'default-branch',
+ path: '/',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: '/',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@my/path/dir', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@/my/path/dir', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@my/path/dir/', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@/my/path/dir/', async () => {
+ expect(await parseGitHubRepoShortcut(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+})
diff --git a/packages_rs/nextclade-web/src/io/__tests__/parseGitHubRepoShortcutComponents.test.ts b/packages_rs/nextclade-web/src/io/__tests__/parseGitHubRepoShortcutComponents.test.ts
new file mode 100644
index 000000000..1cd0e5ef4
--- /dev/null
+++ b/packages_rs/nextclade-web/src/io/__tests__/parseGitHubRepoShortcutComponents.test.ts
@@ -0,0 +1,148 @@
+import { getTestName } from 'src/helpers/jestUtils'
+import { parseGitHubRepoShortcutComponents } from 'src/io/fetchSingleDatasetFromGithub'
+
+describe('parseGitHubRepoShortcutComponents', () => {
+ it('gh', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: undefined,
+ repo: undefined,
+ branch: undefined,
+ path: undefined,
+ })
+ })
+
+ it('gh:', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: undefined,
+ repo: undefined,
+ branch: undefined,
+ path: undefined,
+ })
+ })
+
+ it('gh:@test-branch@', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: undefined,
+ repo: undefined,
+ branch: 'test-branch',
+ path: undefined,
+ })
+ })
+
+ it('gh:aaa/bbb', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: undefined,
+ path: undefined,
+ })
+ })
+
+ it('gh:aaa/bbb/', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: undefined,
+ path: '/',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: undefined,
+ })
+ })
+
+ it('gh:aaa/bbb@branch/slashes@', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'branch/slashes',
+ path: undefined,
+ })
+ })
+
+ it('gh:aaa/bbb@branch/more/slashes@', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'branch/more/slashes',
+ path: undefined,
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@my/path/dir', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@/my/path/dir', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@branch/slashes@/my/path/dir', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'branch/slashes',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@branch/more/slashes@/my/path/dir', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'branch/more/slashes',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@my/path/dir/', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb@test-branch@/my/path/dir/', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb/my/path/dir', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: undefined,
+ path: 'my/path/dir',
+ })
+ })
+
+ it('gh:aaa/bbb/my/path/dir/', async () => {
+ expect(parseGitHubRepoShortcutComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: undefined,
+ path: 'my/path/dir',
+ })
+ })
+})
diff --git a/packages_rs/nextclade-web/src/io/__tests__/parseGithubRepoUrl.test.ts b/packages_rs/nextclade-web/src/io/__tests__/parseGithubRepoUrl.test.ts
new file mode 100644
index 000000000..6b48ac1ec
--- /dev/null
+++ b/packages_rs/nextclade-web/src/io/__tests__/parseGithubRepoUrl.test.ts
@@ -0,0 +1,145 @@
+import { getTestName } from 'src/helpers/jestUtils'
+import { parseGithubRepoUrl } from 'src/io/fetchSingleDatasetFromGithub'
+
+describe('parseGithubRepoUrl', () => {
+ const OLD_ENV = process.env
+
+ beforeEach(() => {
+ jest.resetModules()
+ process.env = { ...OLD_ENV, BRANCH_NAME: 'default-branch' }
+ })
+
+ afterAll(() => {
+ process.env = OLD_ENV
+ })
+
+ it('https://github.com/aaa/bbb', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'master',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'master',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/dirname', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/dirname/', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/dirname//', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname/', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname/filename.json', async () => {
+ // NOTE: for URLs in this format there is no way to tell where branch name ends and where path starts.
+ // So we assume first component is the branch and the remainder are the path.
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname/filename.json',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/branch/slashes/dirname/filename.json', async () => {
+ // NOTE: for URLs in this format there is no way to tell where branch name ends and where path starts.
+ // So we assume first component is the branch and the remainder are the path.
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'branch',
+ path: 'slashes/dirname/filename.json',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname//', async () => {
+ expect(await parseGithubRepoUrl(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+})
diff --git a/packages_rs/nextclade-web/src/io/__tests__/parseGithubRepoUrlComponents.test.ts b/packages_rs/nextclade-web/src/io/__tests__/parseGithubRepoUrlComponents.test.ts
new file mode 100644
index 000000000..ff5e42dc6
--- /dev/null
+++ b/packages_rs/nextclade-web/src/io/__tests__/parseGithubRepoUrlComponents.test.ts
@@ -0,0 +1,134 @@
+import { getTestName } from 'src/helpers/jestUtils'
+import { parseGithubRepoUrlComponents } from 'src/io/fetchSingleDatasetFromGithub'
+
+describe('parseGithubRepoUrlComponents', () => {
+ it('https://github.com/aaa/bbb', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: undefined,
+ path: undefined,
+ })
+ })
+
+ it('https://github.com/aaa/bbb/', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: undefined,
+ path: undefined,
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: undefined,
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/dirname', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/dirname/', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/tree/test-branch/dirname//', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname//',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: undefined,
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: '/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname/filename.json', async () => {
+ // NOTE: for URLs in this format there is no way to tell where branch name ends and where path starts.
+ // So we assume first component is the branch and the remainder are the path.
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname/filename.json',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/branch/slashes/dirname/filename.json', async () => {
+ // NOTE: for URLs in this format there is no way to tell where branch name ends and where path starts.
+ // So we assume first component is the branch and the remainder are the path.
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'branch',
+ path: 'slashes/dirname/filename.json',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname/', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname/',
+ })
+ })
+
+ it('https://github.com/aaa/bbb/blob/test-branch/dirname//', async () => {
+ expect(parseGithubRepoUrlComponents(getTestName())).toStrictEqual({
+ owner: 'aaa',
+ repo: 'bbb',
+ branch: 'test-branch',
+ path: 'dirname//',
+ })
+ })
+})
diff --git a/packages_rs/nextclade-web/src/io/axiosFetch.ts b/packages_rs/nextclade-web/src/io/axiosFetch.ts
index 0af824ec5..11376e3f4 100644
--- a/packages_rs/nextclade-web/src/io/axiosFetch.ts
+++ b/packages_rs/nextclade-web/src/io/axiosFetch.ts
@@ -1,6 +1,6 @@
import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'
import { isNil } from 'lodash'
-import { ErrorInternal } from 'src/helpers/ErrorInternal'
+import { ErrorFatal } from 'src/helpers/ErrorFatal'
import { sanitizeError } from 'src/helpers/sanitizeError'
export class HttpRequestError extends Error {
@@ -16,13 +16,31 @@ export class HttpRequestError extends Error {
}
}
+export function isValidHttpUrl(s: string) {
+ let url
+ try {
+ url = new URL(s)
+ } catch {
+ return false
+ }
+ return url.protocol === 'http:' || url.protocol === 'https:'
+}
+
+export function validateUrl(url?: string): string {
+ if (isNil(url)) {
+ throw new ErrorFatal(`Attempted to fetch from an empty URL`)
+ }
+ if (!isValidHttpUrl(url)) {
+ throw new ErrorFatal(`Attempted to fetch from an invalid URL: '${url}'`)
+ }
+ return url
+}
+
export async function axiosFetch(
- url: string | undefined,
+ url_: string | undefined,
options?: AxiosRequestConfig,
): Promise {
- if (isNil(url)) {
- throw new ErrorInternal(`Attempted to fetch from an invalid URL: '${url}'`)
- }
+ const url = validateUrl(url_)
let res
try {
@@ -72,7 +90,7 @@ export async function axiosFetchRawMaybe(url?: string): Promise {
if (isNil(url)) {
- throw new ErrorInternal(`Attempted to fetch from an invalid URL: '${url}'`)
+ throw new ErrorFatal(`Attempted to fetch from an invalid URL: '${url}'`)
}
try {
diff --git a/packages_rs/nextclade-web/src/io/createInputFromUrlParamMaybe.ts b/packages_rs/nextclade-web/src/io/createInputFromUrlParamMaybe.ts
index 3344ec5d4..da77d9fc7 100644
--- a/packages_rs/nextclade-web/src/io/createInputFromUrlParamMaybe.ts
+++ b/packages_rs/nextclade-web/src/io/createInputFromUrlParamMaybe.ts
@@ -1,34 +1,40 @@
+import { concurrent } from 'fasy'
import type { ParsedUrlQuery } from 'querystring'
import { AlgorithmInputDefault, AlgorithmInputUrl } from 'src/io/AlgorithmInput'
+import { isGithubUrlOrShortcut, parseGitHubRepoUrlOrShortcut } from 'src/io/fetchSingleDatasetFromGithub'
import { getQueryParamMaybe } from 'src/io/getQueryParamMaybe'
import { takeArray } from 'src/helpers/takeFirstMaybe'
import { AlgorithmInput, Dataset } from 'src/types'
import { isString } from 'lodash'
import { notUndefinedOrNull } from 'src/helpers/notUndefined'
-export function createInputFromUrlParamMaybe(urlQuery: ParsedUrlQuery, paramName: string) {
+export async function createInputFromUrlParamMaybe(urlQuery: ParsedUrlQuery, paramName: string) {
const url = getQueryParamMaybe(urlQuery, paramName)
if (!url) {
return undefined
}
+ if (isGithubUrlOrShortcut(url)) {
+ const { directUrl } = await parseGitHubRepoUrlOrShortcut(url)
+ return new AlgorithmInputUrl(directUrl)
+ }
return new AlgorithmInputUrl(url)
}
-export function createInputFastasFromUrlParam(
+export async function createInputFastasFromUrlParam(
urlQuery: ParsedUrlQuery,
dataset: Dataset | undefined,
-): AlgorithmInput[] {
+): Promise {
const urls = takeArray(urlQuery?.['input-fasta'])
- return urls
- .map((url) => {
- if (url === 'example') {
- return dataset ? new AlgorithmInputDefault(dataset) : undefined
- }
- if (isString(url)) {
- return new AlgorithmInputUrl(url)
- }
- return undefined
- })
- .filter(notUndefinedOrNull)
+ const inputs = await concurrent.map(async (url) => {
+ if (url === 'example') {
+ return dataset ? new AlgorithmInputDefault(dataset) : undefined
+ }
+ if (isString(url) && isGithubUrlOrShortcut(url)) {
+ const { directUrl } = await parseGitHubRepoUrlOrShortcut(url)
+ return new AlgorithmInputUrl(directUrl)
+ }
+ return undefined
+ }, urls)
+ return inputs.filter(notUndefinedOrNull)
}
diff --git a/packages_rs/nextclade-web/src/io/fetchDatasets.ts b/packages_rs/nextclade-web/src/io/fetchDatasets.ts
index de8da1bb3..5aacc77f8 100644
--- a/packages_rs/nextclade-web/src/io/fetchDatasets.ts
+++ b/packages_rs/nextclade-web/src/io/fetchDatasets.ts
@@ -2,7 +2,12 @@
import type { ParsedUrlQuery } from 'querystring'
import { findSimilarStrings } from 'src/helpers/string'
import { axiosHeadOrUndefined } from 'src/io/axiosFetch'
-import { isGithubUrlOrShortcut, parseGitHubRepoUrlOrShortcut } from 'src/io/fetchSingleDatasetFromGithub'
+import {
+ isGithubShortcut,
+ isGithubUrl,
+ parseGitHubRepoShortcut,
+ parseGithubRepoUrl,
+} from 'src/io/fetchSingleDatasetFromGithub'
import { Dataset } from 'src/types'
import {
@@ -83,14 +88,21 @@ export async function getDatasetServerUrl(urlQuery: ParsedUrlQuery) {
let datasetServerUrl = getQueryParamMaybe(urlQuery, 'dataset-server')
// If the URL is formatted as a GitHub URL or as a GitHub URL shortcut, use it without any checking
- if (datasetServerUrl && isGithubUrlOrShortcut(datasetServerUrl)) {
- const { owner, repo, branch, path } = await parseGitHubRepoUrlOrShortcut(datasetServerUrl)
- return urljoin('https://raw.githubusercontent.com', owner, repo, branch, path)
+ if (datasetServerUrl) {
+ if (isGithubShortcut(datasetServerUrl)) {
+ const { owner, repo, branch, path } = await parseGitHubRepoShortcut(datasetServerUrl)
+ return urljoin('https://raw.githubusercontent.com', owner, repo, branch, path)
+ }
+
+ if (isGithubUrl(datasetServerUrl)) {
+ const { owner, repo, branch, path } = await parseGithubRepoUrl(datasetServerUrl)
+ return urljoin('https://raw.githubusercontent.com', owner, repo, branch, path)
+ }
}
// If requested to try GitHub-hosted datasets either using `DATA_TRY_GITHUB_BRANCH` env var (e.g. from
// `.env` file), or using `&dataset-server=gh` or `&dataset-server=github` URL parameters, then check if the
- // corresponding branch in the default data repo on GitHub contains an `index.json` file. And and if yes, use it.
+ // corresponding branch in the default data repo on GitHub contains an `index.json` file. And if yes, use it.
const datasetServerTryGithubBranch =
(isNil(datasetServerUrl) && process.env.DATA_TRY_GITHUB_BRANCH === '1') ||
(datasetServerUrl && ['gh', 'github'].includes(datasetServerUrl))
diff --git a/packages_rs/nextclade-web/src/io/fetchSingleDataset.ts b/packages_rs/nextclade-web/src/io/fetchSingleDataset.ts
index 1453fc364..c6258dedd 100644
--- a/packages_rs/nextclade-web/src/io/fetchSingleDataset.ts
+++ b/packages_rs/nextclade-web/src/io/fetchSingleDataset.ts
@@ -1,21 +1,16 @@
import type { ParsedUrlQuery } from 'querystring'
-
import { getQueryParamMaybe } from 'src/io/getQueryParamMaybe'
import { fetchSingleDatasetFromUrl } from 'src/io/fetchSingleDatasetFromUrl'
import { isGithubUrlOrShortcut, parseGitHubRepoUrlOrShortcut } from 'src/io/fetchSingleDatasetFromGithub'
export async function fetchSingleDataset(urlQuery: ParsedUrlQuery) {
const datasetUrl = getQueryParamMaybe(urlQuery, 'dataset-url')
-
if (!datasetUrl) {
return undefined
}
-
if (isGithubUrlOrShortcut(datasetUrl)) {
- const { owner, repo, branch, path } = await parseGitHubRepoUrlOrShortcut(datasetUrl)
- const datasetGithubRawUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${path}`
- return fetchSingleDatasetFromUrl(datasetGithubRawUrl, { datasetOriginalUrl: datasetUrl })
+ const { directUrl } = await parseGitHubRepoUrlOrShortcut(datasetUrl)
+ return fetchSingleDatasetFromUrl(directUrl, { datasetOriginalUrl: datasetUrl })
}
-
return fetchSingleDatasetFromUrl(datasetUrl)
}
diff --git a/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromGithub.ts b/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromGithub.ts
index 050ad9b45..79319eb97 100644
--- a/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromGithub.ts
+++ b/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromGithub.ts
@@ -1,7 +1,9 @@
-import { isNil } from 'lodash'
+/* eslint-disable security/detect-unsafe-regex,prefer-const */
+import type { Optional } from 'utility-types'
+import { isEmpty, isNil, trim } from 'lodash'
import pMemoize from 'p-memoize'
-
-import { removeLeadingAndTrailing, removeTrailingSlash } from 'src/io/url'
+import { DEFAULT_DATA_OWNER, DEFAULT_DATA_REPO, DEFAULT_DATA_REPO_PATH } from 'src/constants'
+import { removeTrailingSlash } from 'src/io/url'
import { axiosFetch } from 'src/io/axiosFetch'
import { sanitizeError } from 'src/helpers/sanitizeError'
@@ -24,77 +26,124 @@ export async function githubRepoGetDefaultBranch_(owner: string, repo: string):
export const githubRepoGetDefaultBranch = pMemoize(githubRepoGetDefaultBranch_)
export interface GitHubRepoUrlComponents {
+ originalUrl: string
owner: string
repo: string
branch: string
path: string
}
-export async function parseGitHubRepoUrl(datasetGithubUrl_: string): Promise {
- const datasetGithubUrl = removeTrailingSlash(datasetGithubUrl_)
+export interface GitHubRepoUrlResult extends GitHubRepoUrlComponents {
+ directUrl: string
+}
+
+export function parseGithubRepoUrlComponents(url: string): Optional {
+ // NOTE: for URLs in format
+ // / /
+ // there is no way to tell where branch name ends and where path starts.
+ // So we assume first component is the branch and the remainder are the path, but this is not universal.
const GITHUB_URL_REGEX =
- // eslint-disable-next-line security/detect-unsafe-regex
- /^https?:\/\/github.com\/(?.*?)\/(?.*?)\/(?tree|branch?)\/(?.*?)(\/?.*?)?\/?$/
+ /^(?:https?:\/\/)?github\.com\/+(?[^/]+)\/+(?[^/]+)(?:\/+(tree|blob)\/+(?[^/]+)(?:\/*(?.+))?)?\/*?$/
+ const match = GITHUB_URL_REGEX.exec(url)
+ const { owner, repo, branch, path } = match?.groups ?? {}
+ return { owner, repo, branch, path, originalUrl: url }
+}
+
+export async function parseGithubRepoUrl(url_: string): Promise {
+ const url = removeTrailingSlash(url_)
+ let { owner, repo, path, branch } = parseGithubRepoUrlComponents(url)
- const match = GITHUB_URL_REGEX.exec(datasetGithubUrl)
- if (!match?.groups) {
- return undefined
+ // If owner and repo are omitted, use official data repo
+ if (!owner || !repo) {
+ throw new ErrorDatasetGithubUrlComponentsInvalid(url, { owner, repo, branch, path })
+ } else if (!branch) {
+ try {
+ branch = await githubRepoGetDefaultBranch(owner, repo)
+ } catch {
+ branch = 'master'
+ }
}
- const { owner, repo, branch } = match.groups
- if (!owner || !repo || !branch) {
- throw new ErrorDatasetGithubUrlComponentsInvalid(datasetGithubUrl, { owner, repo, branch })
+ path = trim(path, '/')
+ if (isNil(path) || isEmpty(path)) {
+ path = '/'
}
- const path = match.groups.path ?? '/'
- return { owner, repo, branch, path }
+ const directUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${path}`
+ return { owner, repo, branch, path, directUrl, originalUrl: url_ }
}
-export async function parseGitHubRepoShortcut(datasetGithubUrl_: string): Promise {
- const datasetGithubUrl = removeTrailingSlash(datasetGithubUrl_)
-
+export function parseGitHubRepoShortcutComponents(shortcut: string): Optional {
const GITHUB_URL_REGEX =
- // eslint-disable-next-line security/detect-unsafe-regex
- /^(github|gh):(?[^/@]+)\/(?[^/@]+)(?@.+?@)?(?\/.*)?$/
+ /^(gh|github):((?[^/@]+)\/(?[^/@]+))?(@(?[^@]+)@?)?(\/*(?[^@]+?)\/*)?$/
+ const match = GITHUB_URL_REGEX.exec(shortcut)
+ const { owner, repo, branch, path } = match?.groups ?? {}
+ return { owner, repo, branch, path, originalUrl: shortcut }
+}
- const match = GITHUB_URL_REGEX.exec(datasetGithubUrl)
- if (!match?.groups) {
- return undefined
- }
+export async function parseGitHubRepoShortcut(shortcut: string): Promise {
+ const datasetGithubUrl = removeTrailingSlash(shortcut)
+ let { owner, repo, branch, path } = parseGitHubRepoShortcutComponents(datasetGithubUrl)
- const { owner, repo } = match.groups
+ // If owner and repo are omitted, use official data repo
if (!owner || !repo) {
- throw new ErrorDatasetGithubUrlComponentsInvalid(datasetGithubUrl, { owner, repo })
+ owner = DEFAULT_DATA_OWNER
+ repo = DEFAULT_DATA_REPO
+ } else if (!branch) {
+ try {
+ branch = await githubRepoGetDefaultBranch(owner, repo)
+ } catch {
+ branch = 'master'
+ }
}
- let path = match.groups.path ?? '//'
- path = removeTrailingSlash(path)
+ if (!branch) {
+ if (owner === DEFAULT_DATA_OWNER && repo === DEFAULT_DATA_REPO) {
+ branch = process.env.BRANCH_NAME ?? 'master'
+ } else {
+ try {
+ branch = await githubRepoGetDefaultBranch(owner, repo)
+ } catch {
+ branch = 'master'
+ }
+ }
+ }
- let branch = match.groups.branch ?? (await githubRepoGetDefaultBranch(owner, repo))
- branch = removeLeadingAndTrailing(branch, '@')
+ // If path is omitted and owner and repo point to the official data repo, then use the default data repo path
+ if (!path && owner === DEFAULT_DATA_OWNER && repo === DEFAULT_DATA_REPO) {
+ path = DEFAULT_DATA_REPO_PATH
+ }
- return { owner, repo, branch, path }
+ path = !isNil(path) && path !== '/' && path !== '' ? trim(path, '/') : '/'
+ const directUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${path}`
+ return { owner, repo, branch, path, originalUrl: shortcut, directUrl }
}
-export async function parseGitHubRepoUrlOrShortcut(datasetGithubUrl_: string): Promise {
- const datasetGithubUrl = removeTrailingSlash(datasetGithubUrl_)
-
- const urlComponents =
- (await parseGitHubRepoShortcut(datasetGithubUrl_)) ?? (await parseGitHubRepoUrl(datasetGithubUrl_))
-
- if (!urlComponents) {
- throw new ErrorDatasetGithubUrlPatternInvalid(datasetGithubUrl)
+export async function parseGitHubRepoUrlOrShortcut(url_: string): Promise {
+ const url = removeTrailingSlash(url_)
+ if (isGithubShortcut(url)) {
+ return parseGitHubRepoShortcut(url)
}
+ if (isGithubUrl(url)) {
+ return parseGithubRepoUrl(url)
+ }
+ throw new ErrorDatasetGithubUrlPatternInvalid(url)
+}
+
+export function isGithubUrl(url: string): boolean {
+ return !isNil(/^https?:\/\/github.com\/.*/.exec(url))
+}
- return urlComponents
+export function isGithubShortcut(url: string): boolean {
+ return !isNil(/^(github|gh).*/.exec(url))
}
export function isGithubUrlOrShortcut(url: string): boolean {
- return !isNil(/^(github:|gh:|https?:\/\/github.com).*/.exec(url))
+ return isGithubUrl(url) || isGithubShortcut(url)
}
-const GITHUB_URL_ERROR_HINTS = ` Check the correctness of the URL. If it's a full GitHub URL, please try to navigate to it - you should see a GitHub repo branch with your files listed. If it's a GitHub URL shortcut, please double check the syntax. See documentation for the correct syntax and examples. If you don't intend to use custom datasets, remove the parameter from the address or restart the application.`
+const GITHUB_URL_ERROR_HINTS = ` Check the correctness of the URL. If it's a full GitHub URL, please try to navigate to it - you should see a GitHub repo branch with your files listed. If it's a GitHub URL shortcut, please double-check the syntax. See documentation for the correct syntax and examples. If you don't intend to use custom datasets, remove the parameter from the address or restart the application.`
export class ErrorDatasetGithubUrlPatternInvalid extends Error {
public readonly datasetGithubUrl: string
@@ -112,7 +161,7 @@ export class ErrorDatasetGithubUrlComponentsInvalid extends Error {
constructor(datasetGithubUrl: string, parsedRepoUrlComponents: Partial) {
const componentsListStr = Object.entries(parsedRepoUrlComponents)
.map(([key, val]) => `${key}='${val}'`)
- .join(',')
+ .join(', ')
super(
`Dataset GitHub URL is invalid: '${datasetGithubUrl}'. Detected the following components ${componentsListStr}.${GITHUB_URL_ERROR_HINTS}`,
diff --git a/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromUrl.ts b/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromUrl.ts
index 55ef22b40..a2045ce81 100644
--- a/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromUrl.ts
+++ b/packages_rs/nextclade-web/src/io/fetchSingleDatasetFromUrl.ts
@@ -1,3 +1,4 @@
+import axios from 'axios'
import urljoin from 'url-join'
import { mapValues } from 'lodash'
import { concurrent } from 'fasy'
@@ -28,7 +29,7 @@ async function fetchPathogenJson(datasetRootUrl: string) {
try {
pathogen = await axiosFetch(urljoin(datasetRootUrl, 'pathogen.json'))
} catch (error: unknown) {
- if (await checkDatasetV2FilesExist(datasetRootUrl)) {
+ if (axios.isAxiosError(error) && error.status === '404' && (await checkDatasetV2FilesExist(datasetRootUrl))) {
throw new NextcladeV2Error(datasetRootUrl)
}
throw error
diff --git a/packages_rs/nextclade-web/src/pages/_app.tsx b/packages_rs/nextclade-web/src/pages/_app.tsx
index 42690a671..7ca35a9fb 100644
--- a/packages_rs/nextclade-web/src/pages/_app.tsx
+++ b/packages_rs/nextclade-web/src/pages/_app.tsx
@@ -96,17 +96,15 @@ export function RecoilStateInitializer() {
set(localeAtom, locale.key)
})
.then(async () => {
- const datasetInfo = await fetchSingleDataset(urlQuery)
+ const datasetServerUrl = await getDatasetServerUrl(urlQuery)
+ set(datasetServerUrlAtom, datasetServerUrl)
+ const { datasets, currentDataset, minimizerIndexVersion } = await initializeDatasets(datasetServerUrl, urlQuery)
+ const datasetInfo = await fetchSingleDataset(urlQuery)
if (!isNil(datasetInfo)) {
const { datasets, currentDataset } = datasetInfo
return { datasets, currentDataset, minimizerIndexVersion: undefined }
}
-
- const datasetServerUrl = await getDatasetServerUrl(urlQuery)
- set(datasetServerUrlAtom, datasetServerUrl)
-
- const { datasets, currentDataset, minimizerIndexVersion } = await initializeDatasets(datasetServerUrl, urlQuery)
return { datasets, currentDataset, minimizerIndexVersion }
})
.catch((error) => {
@@ -123,19 +121,19 @@ export function RecoilStateInitializer() {
set(minimizerIndexVersionAtom, minimizerIndexVersion)
return dataset
})
- .then((dataset) => {
- const inputFastas = createInputFastasFromUrlParam(urlQuery, dataset)
+ .then(async (dataset) => {
+ const inputFastas = await createInputFastasFromUrlParam(urlQuery, dataset)
if (!isEmpty(inputFastas)) {
set(qrySeqInputsStorageAtom, inputFastas)
}
- set(refSeqInputAtom, createInputFromUrlParamMaybe(urlQuery, 'input-ref'))
- set(geneMapInputAtom, createInputFromUrlParamMaybe(urlQuery, 'input-annotation'))
- set(refTreeInputAtom, createInputFromUrlParamMaybe(urlQuery, 'input-tree'))
- set(virusPropertiesInputAtom, createInputFromUrlParamMaybe(urlQuery, 'input-pathogen-json'))
+ set(refSeqInputAtom, await createInputFromUrlParamMaybe(urlQuery, 'input-ref'))
+ set(geneMapInputAtom, await createInputFromUrlParamMaybe(urlQuery, 'input-annotation'))
+ set(refTreeInputAtom, await createInputFromUrlParamMaybe(urlQuery, 'input-tree'))
+ set(virusPropertiesInputAtom, await createInputFromUrlParamMaybe(urlQuery, 'input-pathogen-json'))
- if (!isEmpty(inputFastas)) {
+ if (!isEmpty(inputFastas) && !isEmpty(dataset)) {
run()
}
diff --git a/packages_rs/nextclade-web/yarn.lock b/packages_rs/nextclade-web/yarn.lock
index a3c29efe9..07851d9b1 100644
--- a/packages_rs/nextclade-web/yarn.lock
+++ b/packages_rs/nextclade-web/yarn.lock
@@ -10,6 +10,14 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
+"@ampproject/remapping@^2.2.0":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
+ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
"@aws-crypto/ie11-detection@^2.0.0":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz#9c39f4a5558196636031a933ec1b4792de959d6a"
@@ -655,11 +663,24 @@
dependencies:
"@babel/highlight" "^7.16.7"
+"@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244"
+ integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==
+ dependencies:
+ "@babel/highlight" "^7.23.4"
+ chalk "^2.4.2"
+
"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@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/compat-data@^7.22.9":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98"
+ integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==
+
"@babel/core@7.12.9":
version "7.12.9"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
@@ -682,7 +703,7 @@
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/core@7.17.9", "@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.16.0", "@babel/core@^7.3.4":
+"@babel/core@7.17.9", "@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.16.0", "@babel/core@^7.3.4":
version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe"
integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==
@@ -725,6 +746,27 @@
semver "^5.4.1"
source-map "^0.5.0"
+"@babel/core@^7.7.2", "@babel/core@^7.8.0":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.5.tgz#6e23f2acbcb77ad283c5ed141f824fd9f70101c7"
+ integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.23.5"
+ "@babel/generator" "^7.23.5"
+ "@babel/helper-compilation-targets" "^7.22.15"
+ "@babel/helper-module-transforms" "^7.23.3"
+ "@babel/helpers" "^7.23.5"
+ "@babel/parser" "^7.23.5"
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.5"
+ "@babel/types" "^7.23.5"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
"@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"
@@ -743,6 +785,16 @@
jsesc "^2.5.1"
source-map "^0.5.0"
+"@babel/generator@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.5.tgz#17d0a1ea6b62f351d281350a5f80b87a810c4755"
+ integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==
+ dependencies:
+ "@babel/types" "^7.23.5"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
+ jsesc "^2.5.1"
+
"@babel/helper-annotate-as-pure@^7.15.4", "@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"
@@ -768,6 +820,17 @@
browserslist "^4.17.5"
semver "^6.3.0"
+"@babel/helper-compilation-targets@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52"
+ integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==
+ dependencies:
+ "@babel/compat-data" "^7.22.9"
+ "@babel/helper-validator-option" "^7.22.15"
+ browserslist "^4.21.9"
+ lru-cache "^5.1.1"
+ semver "^6.3.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.17.9", "@babel/helper-create-class-features-plugin@^7.8.3":
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"
@@ -810,6 +873,11 @@
dependencies:
"@babel/types" "^7.16.7"
+"@babel/helper-environment-visitor@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
+ integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+
"@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"
@@ -825,6 +893,14 @@
"@babel/template" "^7.16.7"
"@babel/types" "^7.17.0"
+"@babel/helper-function-name@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
+ integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/types" "^7.23.0"
+
"@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"
@@ -832,6 +908,13 @@
dependencies:
"@babel/types" "^7.16.7"
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-member-expression-to-functions@^7.16.7", "@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"
@@ -846,6 +929,13 @@
dependencies:
"@babel/types" "^7.16.7"
+"@babel/helper-module-imports@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0"
+ integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==
+ dependencies:
+ "@babel/types" "^7.22.15"
+
"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7", "@babel/helper-module-transforms@^7.9.0":
version "7.17.7"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd"
@@ -860,6 +950,17 @@
"@babel/traverse" "^7.17.3"
"@babel/types" "^7.17.0"
+"@babel/helper-module-transforms@^7.23.3":
+ version "7.23.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1"
+ integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-module-imports" "^7.22.15"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-validator-identifier" "^7.22.20"
+
"@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"
@@ -904,6 +1005,13 @@
dependencies:
"@babel/types" "^7.17.0"
+"@babel/helper-simple-access@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
+ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@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"
@@ -918,16 +1026,38 @@
dependencies:
"@babel/types" "^7.16.7"
+"@babel/helper-split-export-declaration@^7.22.6":
+ version "7.22.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
+ integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-string-parser@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83"
+ integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==
+
"@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-identifier@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
+ integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+
"@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-validator-option@^7.22.15":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
+ integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
+
"@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"
@@ -947,6 +1077,15 @@
"@babel/traverse" "^7.17.9"
"@babel/types" "^7.17.0"
+"@babel/helpers@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.5.tgz#52f522840df8f1a848d06ea6a79b79eefa72401e"
+ integrity sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/traverse" "^7.23.5"
+ "@babel/types" "^7.23.5"
+
"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7":
version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
@@ -956,6 +1095,15 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
+"@babel/highlight@^7.23.4":
+ version "7.23.4"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b"
+ integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.20"
+ chalk "^2.4.2"
+ 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"
@@ -978,6 +1126,11 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef"
integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==
+"@babel/parser@^7.22.15", "@babel/parser@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563"
+ integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==
+
"@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"
@@ -1853,6 +2006,15 @@
"@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7"
+"@babel/template@^7.22.15":
+ version "7.22.15"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
+ integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==
+ dependencies:
+ "@babel/code-frame" "^7.22.13"
+ "@babel/parser" "^7.22.15"
+ "@babel/types" "^7.22.15"
+
"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0":
version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d"
@@ -1869,6 +2031,22 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.5.tgz#f546bf9aba9ef2b042c0e00d245990c15508e7ec"
+ integrity sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==
+ dependencies:
+ "@babel/code-frame" "^7.23.5"
+ "@babel/generator" "^7.23.5"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/parser" "^7.23.5"
+ "@babel/types" "^7.23.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/types@7.16.0":
version "7.16.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
@@ -1885,6 +2063,15 @@
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
+"@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602"
+ integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==
+ dependencies:
+ "@babel/helper-string-parser" "^7.23.4"
+ "@babel/helper-validator-identifier" "^7.22.20"
+ to-fast-properties "^2.0.0"
+
"@bcherny/json-schema-ref-parser@10.0.5-fork":
version "10.0.5-fork"
resolved "https://registry.yarnpkg.com/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-10.0.5-fork.tgz#9b5e1e7e07964ea61840174098e634edbe8197bc"
@@ -2231,6 +2418,18 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
+"@jest/console@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba"
+ integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^27.5.1"
+ jest-util "^27.5.1"
+ slash "^3.0.0"
+
"@jest/console@^28.0.1":
version "28.0.1"
resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.0.1.tgz#4869cecbc5ffddbd03feaaeddcc73110d9e23f49"
@@ -2243,115 +2442,101 @@
jest-util "^28.0.1"
slash "^3.0.0"
-"@jest/core@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.0.1.tgz#9d3cd1f157f3e53c0e61e242ae39a1872befc374"
- integrity sha512-hTxTpwJPOwHpCFwo4s6QVHq423RtZNaBsb/JQdicLzGvQuxnAzvaA7H3NFiv+TB6ExSOdW5aG2Q5nz/IwYCHIQ==
+"@jest/core@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626"
+ integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==
dependencies:
- "@jest/console" "^28.0.1"
- "@jest/reporters" "^28.0.1"
- "@jest/test-result" "^28.0.1"
- "@jest/transform" "^28.0.1"
- "@jest/types" "^28.0.1"
+ "@jest/console" "^27.5.1"
+ "@jest/reporters" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
- ci-info "^3.2.0"
+ emittery "^0.8.1"
exit "^0.1.2"
graceful-fs "^4.2.9"
- jest-changed-files "^28.0.0"
- jest-config "^28.0.1"
- jest-haste-map "^28.0.1"
- jest-message-util "^28.0.1"
- jest-regex-util "^28.0.0"
- jest-resolve "^28.0.1"
- jest-resolve-dependencies "^28.0.1"
- jest-runner "^28.0.1"
- jest-runtime "^28.0.1"
- jest-snapshot "^28.0.1"
- jest-util "^28.0.1"
- jest-validate "^28.0.1"
- jest-watcher "^28.0.1"
+ jest-changed-files "^27.5.1"
+ jest-config "^27.5.1"
+ jest-haste-map "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-resolve-dependencies "^27.5.1"
+ jest-runner "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
+ jest-watcher "^27.5.1"
micromatch "^4.0.4"
- pretty-format "^28.0.1"
rimraf "^3.0.0"
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/environment@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.0.1.tgz#a50cefc75329b7f499b65694fc405509bd3a8ec9"
- integrity sha512-PuN3TBNFSUKNgEgFgJxb15/GOyhXc46wbyCobUcf8ijUgteEmVXD4FfUZpe5QXg/bpmydufzx/02BRlUfkM44Q==
+"@jest/environment@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74"
+ integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==
dependencies:
- "@jest/fake-timers" "^28.0.1"
- "@jest/types" "^28.0.1"
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
- jest-mock "^28.0.1"
-
-"@jest/expect-utils@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.0.1.tgz#c6aa0fb629e3d205384406c2e6cb00b7916c597a"
- integrity sha512-ctuvt7SeoVlG3P2eemtq3/TF5a7ncnpC18Ctv1BjCfBjkjVKtAkDblw6qhx24tZlYdhm0lrihwK80pkzmkUctw==
- dependencies:
- jest-get-type "^28.0.0"
-
-"@jest/expect@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.0.1.tgz#eb836dc95686e724de3419bf08e43f12466a9fb2"
- integrity sha512-qRAiC7/gJ/1z2O+TnGCVUTJ/HkqXhDCSm4R7ydfY/rOMryvFzccpALmHdI8joovGRQvkHStM/wwHRHRQTc8+zQ==
- dependencies:
- expect "^28.0.1"
- jest-snapshot "^28.0.1"
+ jest-mock "^27.5.1"
-"@jest/fake-timers@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.0.1.tgz#e0a95401a06b28224475fe0a124835d6e689869b"
- integrity sha512-w7JleyVymoVWMvsnRRpM/ySM+K6qq+cLwK33VbFAghKTHp14oBiOio1Hh1egUyFdNybmKZxQvBBwB0M/48LgGQ==
+"@jest/fake-timers@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74"
+ integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==
dependencies:
- "@jest/types" "^28.0.1"
- "@sinonjs/fake-timers" "^9.1.1"
+ "@jest/types" "^27.5.1"
+ "@sinonjs/fake-timers" "^8.0.1"
"@types/node" "*"
- jest-message-util "^28.0.1"
- jest-mock "^28.0.1"
- jest-util "^28.0.1"
+ jest-message-util "^27.5.1"
+ jest-mock "^27.5.1"
+ jest-util "^27.5.1"
-"@jest/globals@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.0.1.tgz#165eced7e768c595c2eba5ae8e6d9784224328e9"
- integrity sha512-KBWuQ1PQjm8IKUObSSQAGlGguJZHKaVCHWY99FSGwjyf58hT9yCYH2wFfLhWocy4Y5otK2gZbsCwWVX6WXft2Q==
+"@jest/globals@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b"
+ integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==
dependencies:
- "@jest/environment" "^28.0.1"
- "@jest/expect" "^28.0.1"
- "@jest/types" "^28.0.1"
+ "@jest/environment" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ expect "^27.5.1"
-"@jest/reporters@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.0.1.tgz#711145ea5e6c29c9f8050cb65d3ef98fe68a8290"
- integrity sha512-XMjv+E0fi2QA1qbV1q/NiODueljjfM9i2SpOFqGLc8pHeAcfYfFAZIWI6DXe+2dL4RylDiAlV6Ll5KU4GyUuvA==
+"@jest/reporters@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04"
+ integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^28.0.1"
- "@jest/test-result" "^28.0.1"
- "@jest/transform" "^28.0.1"
- "@jest/types" "^28.0.1"
- "@jridgewell/trace-mapping" "^0.3.7"
+ "@jest/console" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
chalk "^4.0.0"
collect-v8-coverage "^1.0.0"
exit "^0.1.2"
- glob "^7.1.3"
+ glob "^7.1.2"
graceful-fs "^4.2.9"
istanbul-lib-coverage "^3.0.0"
istanbul-lib-instrument "^5.1.0"
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^4.0.0"
istanbul-reports "^3.1.3"
- jest-util "^28.0.1"
- jest-worker "^28.0.1"
+ jest-haste-map "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-util "^27.5.1"
+ jest-worker "^27.5.1"
slash "^3.0.0"
+ source-map "^0.6.0"
string-length "^4.0.1"
terminal-link "^2.0.0"
- v8-to-istanbul "^9.0.0"
+ v8-to-istanbul "^8.1.0"
"@jest/schemas@^28.0.0":
version "28.0.0"
@@ -2360,14 +2545,24 @@
dependencies:
"@sinclair/typebox" "^0.23.3"
-"@jest/source-map@^28.0.0":
- version "28.0.0"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.0.tgz#d026fc1cd7e95fd7ce788d0b27838d9796da0a74"
- integrity sha512-yeD/Y94j6UJPiaZTG5Sdww7pbHvEc7RlTucoVAdXaBaSuNcyrAkLlJonAb/xX/efCugDOEbFJdATsSnDEh45Nw==
+"@jest/source-map@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf"
+ integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==
dependencies:
- "@jridgewell/trace-mapping" "^0.3.7"
callsites "^3.0.0"
graceful-fs "^4.2.9"
+ source-map "^0.6.0"
+
+"@jest/test-result@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb"
+ integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==
+ dependencies:
+ "@jest/console" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
"@jest/test-result@^28.0.1":
version "28.0.1"
@@ -2379,15 +2574,15 @@
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
-"@jest/test-sequencer@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.0.1.tgz#7260db16c12f055f80809348740c2fd2d903f6e0"
- integrity sha512-PbXoEP9aovOC+KunEy65vuSAB/ZMLNcBVdMUIH2hsfFDWhQx/8OnHsz3dr3g1U6qNuCpXzD1fyM8/1TrUU0uFw==
+"@jest/test-sequencer@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b"
+ integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==
dependencies:
- "@jest/test-result" "^28.0.1"
+ "@jest/test-result" "^27.5.1"
graceful-fs "^4.2.9"
- jest-haste-map "^28.0.1"
- slash "^3.0.0"
+ jest-haste-map "^27.5.1"
+ jest-runtime "^27.5.1"
"@jest/transform@^27.5.1":
version "27.5.1"
@@ -2410,27 +2605,6 @@
source-map "^0.6.1"
write-file-atomic "^3.0.0"
-"@jest/transform@^28.0.1":
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.0.1.tgz#44fced5a366af7cc5f69745c92014bf45c408d90"
- integrity sha512-45fxjycts6CTPMeusSICYhMkMgFAs1opvgEBYcMmukucJw/AgVEMsGFqheWyDzlU6GJ+h9cpft/zkTGPJtzRGQ==
- dependencies:
- "@babel/core" "^7.11.6"
- "@jest/types" "^28.0.1"
- "@jridgewell/trace-mapping" "^0.3.7"
- babel-plugin-istanbul "^6.1.1"
- chalk "^4.0.0"
- convert-source-map "^1.4.0"
- fast-json-stable-stringify "^2.0.0"
- graceful-fs "^4.2.9"
- jest-haste-map "^28.0.1"
- jest-regex-util "^28.0.0"
- jest-util "^28.0.1"
- micromatch "^4.0.4"
- pirates "^4.0.4"
- slash "^3.0.0"
- write-file-atomic "^4.0.1"
-
"@jest/types@^27.5.1":
version "27.5.1"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80"
@@ -2462,22 +2636,54 @@
"@jridgewell/set-array" "1.0.0"
"@jridgewell/sourcemap-codec" "^1.4.10"
+"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
+ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
"@jridgewell/resolve-uri@^3.0.3":
version "3.0.6"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352"
integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
+ integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+
"@jridgewell/set-array@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.0.0.tgz#6a8e62049ab198c5f7daf8047e71947ef46c11c8"
integrity sha512-LcqVnHCjOAj8BTCtjpwYZCMTn4yArusbdObCVRUYvBHhrR5fVLVyENG+UVWM4T4H/ufv7NiBLdprllxWs/5PaQ==
+"@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/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.7", "@jridgewell/trace-mapping@^0.3.9":
+"@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.4.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.17":
+ version "0.3.20"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
+ integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@jridgewell/trace-mapping@^0.3.9":
version "0.3.9"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
@@ -2811,10 +3017,10 @@
dependencies:
type-detect "4.0.8"
-"@sinonjs/fake-timers@^9.1.1":
- 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==
+"@sinonjs/fake-timers@^8.0.1":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7"
+ integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==
dependencies:
"@sinonjs/commons" "^1.7.0"
@@ -2987,6 +3193,11 @@
resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.1.1.tgz#e1ff6118896e4b22af31e5ea2f9da956adde23d8"
integrity sha512-XrjH/iEUqNl9lF2HX9YhPNV7Amntkcnpw0Bo1KkRzowNDcgSN9i0nm4Q8Oi5wupgdfPaJNMAWa61A+voD6Kmwg==
+"@tootallnate/once@1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
+ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+
"@tootallnate/once@2":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
@@ -3035,6 +3246,13 @@
dependencies:
"@babel/types" "^7.3.0"
+"@types/babel__traverse@^7.0.4":
+ version "7.20.4"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.4.tgz#ec2c06fed6549df8bc0eb4615b683749a4a92e1b"
+ integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==
+ dependencies:
+ "@babel/types" "^7.20.7"
+
"@types/body-parser@*":
version "1.19.2"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
@@ -3209,7 +3427,7 @@
"@types/minimatch" "*"
"@types/node" "*"
-"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3":
+"@types/graceful-fs@^4.1.2":
version "4.1.5"
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==
@@ -3937,7 +4155,7 @@ JSONStream@^1.0.4:
jsonparse "^1.2.0"
through ">=2.2.7 <3"
-abab@^2.0.5:
+abab@^2.0.3, abab@^2.0.5:
version "2.0.6"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
@@ -3962,6 +4180,14 @@ accepts@~1.3.5, accepts@~1.3.8:
mime-types "~2.1.34"
negotiator "0.6.3"
+acorn-globals@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
+ integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-walk "^7.1.1"
+
acorn-import-assertions@^1.7.6:
version "1.8.0"
resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
@@ -3982,6 +4208,11 @@ acorn@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+acorn@^8.2.4:
+ version "8.11.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
+ integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
+
acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0:
version "8.7.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
@@ -4483,7 +4714,7 @@ axobject-query@^2.2.0:
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
-babel-jest@^27.0.1:
+babel-jest@^27.0.1, babel-jest@^27.5.1:
version "27.5.1"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444"
integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==
@@ -4497,19 +4728,6 @@ babel-jest@^27.0.1:
graceful-fs "^4.2.9"
slash "^3.0.0"
-babel-jest@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.0.1.tgz#effa686f25551d930bf3b645d7513091094f8968"
- integrity sha512-UbL+4xVftxnIcPKzCqmwZHwaPG8DyKOCXoWPeuKrvUFtyeUpePy6VtRiMN1Dv001NbEMNP4FVjfKwv1xe2PWZQ==
- dependencies:
- "@jest/transform" "^28.0.1"
- "@types/babel__core" "^7.1.14"
- babel-plugin-istanbul "^6.1.1"
- babel-preset-jest "^28.0.0"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- slash "^3.0.0"
-
babel-loader@^8.0.4:
version "8.2.5"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e"
@@ -4563,16 +4781,6 @@ 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.0:
- version "28.0.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.0.tgz#7429bb64b97170822dce58ee763555ebc983cbdc"
- integrity sha512-Eu+TDlmKd2SsnvmlooVeHFryVHHom6ffCLSZuqrN8WpIHE0H6qiIPW5h5rFlzIZQmVqnZR2qHnbm2eQWIP7hZg==
- 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-lodash@^3.3.4:
version "3.3.4"
resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196"
@@ -4700,14 +4908,6 @@ 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.0:
- version "28.0.0"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.0.tgz#9e7c5f4097b63a3e9edb8f59b8030eca6901771c"
- integrity sha512-JLyjfCmqCWS3tXUw86ei5fQwuwn34slNBPTluNbhoqHVI1Cbw6MsmvgEl54jPjbyzkmA6XAHJTg3EGNY7rnr4A==
- dependencies:
- babel-plugin-jest-hoist "^28.0.0"
- babel-preset-current-node-syntax "^1.0.0"
-
babel-preset-react-app@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584"
@@ -4970,6 +5170,11 @@ broccoli-plugin@^4.0.7:
rimraf "^3.0.2"
symlink-or-copy "^1.3.1"
+browser-process-hrtime@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
+ integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+
browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.20.2, browserslist@^4.20.3:
version "4.20.3"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf"
@@ -4981,6 +5186,16 @@ browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1, browserslist@^
node-releases "^2.0.3"
picocolors "^1.0.0"
+browserslist@^4.21.9:
+ version "4.22.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b"
+ integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==
+ dependencies:
+ caniuse-lite "^1.0.30001565"
+ electron-to-chromium "^1.4.601"
+ node-releases "^2.0.14"
+ update-browserslist-db "^1.0.13"
+
bs-logger@0.x:
version "0.2.6"
resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
@@ -5129,6 +5344,11 @@ caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001179, caniuse-lite@^1.0.300013
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd"
integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==
+caniuse-lite@^1.0.30001565:
+ version "1.0.30001568"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz#53fa9297273c9a977a560663f48cbea1767518b7"
+ integrity sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==
+
ccount@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
@@ -5166,7 +5386,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1:
+chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -5850,6 +6070,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0,
dependencies:
safe-buffer "~5.1.1"
+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"
@@ -6156,6 +6381,23 @@ csso@^4.0.2, csso@^4.2.0:
dependencies:
css-tree "^1.1.2"
+cssom@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
+cssom@~0.3.6:
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
csstype@^3.0.2:
version "3.0.11"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
@@ -6371,6 +6613,15 @@ dargs@^7.0.0:
resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc"
integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==
+data-urls@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
+ integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
+ dependencies:
+ abab "^2.0.3"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.0.0"
+
dateformat@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
@@ -6406,6 +6657,11 @@ 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==
+decimal.js@^10.2.1:
+ version "10.4.3"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
+ integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
+
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"
@@ -6567,11 +6823,6 @@ diff-sequences@^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.0:
- version "28.0.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.0.0.tgz#06d253f0005463bf203d96fdbd6296c5f1d1888c"
- integrity sha512-GTIQPn2pPa1DMoEH70P9yQgYLcGW8bjPR5EOL2JO9/7DQHX+9tTFJee3UmlGWuyUvIqMgpXXssrckLubiEUZTg==
-
dir-glob@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
@@ -6680,6 +6931,13 @@ domelementtype@^2.0.1, domelementtype@^2.2.0:
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+domexception@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
+ integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
+ dependencies:
+ webidl-conversions "^5.0.0"
+
domhandler@^2.3.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
@@ -6800,11 +7058,21 @@ electron-to-chromium@^1.4.118:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz#de88ea7fd29d7c868e63c88f129e91494bcf3266"
integrity sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==
+electron-to-chromium@^1.4.601:
+ version "1.4.609"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.609.tgz#5790a70aaa96de232501b56e14b64d17aff93988"
+ integrity sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==
+
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.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860"
+ integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -7612,16 +7880,15 @@ expand-template@^2.0.3:
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
-expect@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/expect/-/expect-28.0.1.tgz#7bfac95d375d4310d5061f7e9b7f2afa55a1c1c0"
- integrity sha512-sJjuHVbveEUczNITHKgHUepbEyj+UzjACMNuEln5tZI6b9L/y8jTXAN8VnOCnMoK7vuQPSttO/5HlKB+G3Enpw==
+expect@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74"
+ integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==
dependencies:
- "@jest/expect-utils" "^28.0.1"
- jest-get-type "^28.0.0"
- jest-matcher-utils "^28.0.1"
- jest-message-util "^28.0.1"
- jest-util "^28.0.1"
+ "@jest/types" "^27.5.1"
+ jest-get-type "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
express-naked-redirect@^0.1.9:
version "0.1.9"
@@ -8010,6 +8277,15 @@ fork-ts-checker-webpack-plugin@6.5.1:
semver "^7.3.2"
tapable "^1.0.0"
+form-data@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
+ integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -8901,6 +9177,13 @@ hosted-git-info@^4.0.0, hosted-git-info@^4.0.1:
dependencies:
lru-cache "^6.0.0"
+html-encoding-sniffer@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
+ integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
+ dependencies:
+ whatwg-encoding "^1.0.5"
+
html-entities@^2.1.0, html-entities@^2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46"
@@ -8994,6 +9277,15 @@ http-errors@2.0.0, http-errors@^2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
+http-proxy-agent@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
+ integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+ dependencies:
+ "@tootallnate/once" "1"
+ agent-base "6"
+ debug "4"
+
http-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
@@ -9575,6 +9867,11 @@ is-plain-object@^5.0.0:
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+is-potential-custom-element-name@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
+ integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
+
is-promise@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
@@ -9786,87 +10083,90 @@ jest-axe@6.0.0:
jest-matcher-utils "27.0.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.0:
- version "28.0.0"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.0.tgz#f06ad666ef6ec766a77e13cb3f55bd5c0dec0461"
- integrity sha512-9hFz/LuADUTv7zN+t0Ig+J/as2mtILTmgoT2XQdG/ezGbA1tfqoSwEKCXFcDaldzkskZddbh+QI2sACQGaxg6Q==
+jest-changed-files@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5"
+ integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==
dependencies:
+ "@jest/types" "^27.5.1"
execa "^5.0.0"
throat "^6.0.1"
-jest-circus@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.0.1.tgz#5bad5888e4965735e765188fc21e6c73ffe8d984"
- integrity sha512-33Ulac556FQcgQkDEXVVDag4PGQd+lWP9bxsuVg4q+b4x1cMiWNMCUjN5Dv1q/n90PvGzWxqXuN5X3gF93msew==
+jest-circus@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc"
+ integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==
dependencies:
- "@jest/environment" "^28.0.1"
- "@jest/expect" "^28.0.1"
- "@jest/test-result" "^28.0.1"
- "@jest/types" "^28.0.1"
+ "@jest/environment" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
dedent "^0.7.0"
+ expect "^27.5.1"
is-generator-fn "^2.0.0"
- jest-each "^28.0.1"
- jest-matcher-utils "^28.0.1"
- jest-message-util "^28.0.1"
- jest-runtime "^28.0.1"
- jest-snapshot "^28.0.1"
- jest-util "^28.0.1"
- pretty-format "^28.0.1"
+ jest-each "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
+ pretty-format "^27.5.1"
slash "^3.0.0"
stack-utils "^2.0.3"
throat "^6.0.1"
-jest-cli@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.0.1.tgz#0d1b90e6726dab104cb5f5e7e8fcdef20ba75644"
- integrity sha512-N6m5FwG0E0sFuhT6eRhskvfPrm+e5UXoErdR1cw2csIlpZpzvnl+bP60JH/UAG9KW1wYNDo2N3tVYn/zoMbhOA==
+jest-cli@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145"
+ integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==
dependencies:
- "@jest/core" "^28.0.1"
- "@jest/test-result" "^28.0.1"
- "@jest/types" "^28.0.1"
+ "@jest/core" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
chalk "^4.0.0"
exit "^0.1.2"
graceful-fs "^4.2.9"
import-local "^3.0.2"
- jest-config "^28.0.1"
- jest-util "^28.0.1"
- jest-validate "^28.0.1"
+ jest-config "^27.5.1"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
prompts "^2.0.1"
- yargs "^17.3.1"
+ yargs "^16.2.0"
-jest-config@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.0.1.tgz#69bc6304edd7f44746d59393acb9ce6e55c00ef4"
- integrity sha512-Zp7hsNMxhBrMYx9R+OXWXElX4TDRotgilwGwkRT7YZ4wE8d0w5LKS0mKrd9sExoIWc+cFii/WAeDXlt8/AtfCA==
+jest-config@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41"
+ integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==
dependencies:
- "@babel/core" "^7.11.6"
- "@jest/test-sequencer" "^28.0.1"
- "@jest/types" "^28.0.1"
- babel-jest "^28.0.1"
+ "@babel/core" "^7.8.0"
+ "@jest/test-sequencer" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ babel-jest "^27.5.1"
chalk "^4.0.0"
ci-info "^3.2.0"
deepmerge "^4.2.2"
- glob "^7.1.3"
+ glob "^7.1.1"
graceful-fs "^4.2.9"
- jest-circus "^28.0.1"
- jest-environment-node "^28.0.1"
- jest-get-type "^28.0.0"
- jest-regex-util "^28.0.0"
- jest-resolve "^28.0.1"
- jest-runner "^28.0.1"
- jest-util "^28.0.1"
- jest-validate "^28.0.1"
+ jest-circus "^27.5.1"
+ jest-environment-jsdom "^27.5.1"
+ jest-environment-node "^27.5.1"
+ jest-get-type "^27.5.1"
+ jest-jasmine2 "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-runner "^27.5.1"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
micromatch "^4.0.4"
parse-json "^5.2.0"
- pretty-format "^28.0.1"
+ pretty-format "^27.5.1"
slash "^3.0.0"
strip-json-comments "^3.1.1"
@@ -9880,45 +10180,48 @@ jest-diff@^27.0.2, jest-diff@^27.2.5, jest-diff@^27.5.1:
jest-get-type "^27.5.1"
pretty-format "^27.5.1"
-jest-diff@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.0.1.tgz#fe29002a53c0a663c6cb395cad91ea0b82b0c826"
- integrity sha512-XtUUND9AlP6y+O5gnxm54rcFxs65isB1NahScgBU+NqiUYdKK9qXMXAotkTJHui6GUdjApXq0zvSXB6zQh9CNg==
- dependencies:
- chalk "^4.0.0"
- diff-sequences "^28.0.0"
- jest-get-type "^28.0.0"
- pretty-format "^28.0.1"
-
-jest-docblock@^28.0.0:
- version "28.0.0"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.0.0.tgz#7f39dc998da47dac243157fbe7fbc1e993ab0eb8"
- integrity sha512-88od+z1QkHyvtpj1gRA6QGysopOzImocHNNlvvM7OydDe9ER6z1siLtHJXbKEfi5FoxMpYqDtszYIS50JVs0WA==
+jest-docblock@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0"
+ integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==
dependencies:
detect-newline "^3.0.0"
-jest-each@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.0.1.tgz#bd8d78f066df0366cfd351a5f9ba5acfa119ef89"
- integrity sha512-C7ftacESgAPcs2CydQYJKBFi0T0jkuxZWds2f901coi0SJ4M9ONhFHR2WmfJpHiPWGhAl3N9E8qn8QCZhCk9fA==
+jest-each@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e"
+ integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==
dependencies:
- "@jest/types" "^28.0.1"
+ "@jest/types" "^27.5.1"
chalk "^4.0.0"
- jest-get-type "^28.0.0"
- jest-util "^28.0.1"
- pretty-format "^28.0.1"
+ jest-get-type "^27.5.1"
+ jest-util "^27.5.1"
+ pretty-format "^27.5.1"
-jest-environment-node@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.0.1.tgz#d2eacc122481438102a324b3f83216b873773a18"
- integrity sha512-oGlrqMpLyHgpUThI/8hdDQfcWXKtXuWcFVTKYAeVWvD14btGUn90RlIeCqTbGv197t7NwV51PHDZBFbp1RWceQ==
+jest-environment-jsdom@27.5.1, jest-environment-jsdom@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546"
+ integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==
dependencies:
- "@jest/environment" "^28.0.1"
- "@jest/fake-timers" "^28.0.1"
- "@jest/types" "^28.0.1"
+ "@jest/environment" "^27.5.1"
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
- jest-mock "^28.0.1"
- jest-util "^28.0.1"
+ jest-mock "^27.5.1"
+ jest-util "^27.5.1"
+ jsdom "^16.6.0"
+
+jest-environment-node@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e"
+ integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ jest-mock "^27.5.1"
+ jest-util "^27.5.1"
jest-extended@2.0.0:
version "2.0.0"
@@ -9933,11 +10236,6 @@ jest-get-type@^27.0.1, jest-get-type@^27.0.6, jest-get-type@^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-get-type@^28.0.0:
- version "28.0.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.0.tgz#8d36b49c151bc3a9e078a2e92d502e778ed49164"
- integrity sha512-754LtawzW+Qk4o5rC+eDqfcQ9dV8z9uvbaVenmK8pju11PBGfuMDvQwRxoPews0LCaumNmYHjcAwmkYINTlhIA==
-
jest-haste-map@^27.5.1:
version "27.5.1"
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f"
@@ -9958,32 +10256,36 @@ jest-haste-map@^27.5.1:
optionalDependencies:
fsevents "^2.3.2"
-jest-haste-map@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.0.1.tgz#48fa7e2c9f205118a713b04bd80c07de2795d281"
- integrity sha512-qjpK9NDBiwlSHbKS0rDUDOTTDSHT4tNnJbUewfMsSiWFAOAqgcBDG3o5f1N9Srx5Hz14QsdnDuK9oy6oyQqJ9g==
+jest-jasmine2@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4"
+ integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==
dependencies:
- "@jest/types" "^28.0.1"
- "@types/graceful-fs" "^4.1.3"
+ "@jest/environment" "^27.5.1"
+ "@jest/source-map" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
- anymatch "^3.0.3"
- fb-watchman "^2.0.0"
- graceful-fs "^4.2.9"
- jest-regex-util "^28.0.0"
- jest-util "^28.0.1"
- jest-worker "^28.0.1"
- micromatch "^4.0.4"
- walker "^1.0.7"
- optionalDependencies:
- fsevents "^2.3.2"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ expect "^27.5.1"
+ is-generator-fn "^2.0.0"
+ jest-each "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
+ pretty-format "^27.5.1"
+ throat "^6.0.1"
-jest-leak-detector@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.0.1.tgz#26e4737145ee6b2aef871eda2f9606bd63fb33ca"
- integrity sha512-g+0cRjOeNy0Wy/9LfgzyyVjKNnkFddEXisac+5arM3JwdW4hjZJR+5lwiIuMxuPtacldLWhu0pN63KV+Z33smQ==
+jest-leak-detector@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8"
+ integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==
dependencies:
- jest-get-type "^28.0.0"
- pretty-format "^28.0.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
jest-matcher-utils@27.0.2:
version "27.0.2"
@@ -9995,7 +10297,7 @@ jest-matcher-utils@27.0.2:
jest-get-type "^27.0.1"
pretty-format "^27.0.2"
-jest-matcher-utils@^27.0.0:
+jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1:
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==
@@ -10005,15 +10307,20 @@ jest-matcher-utils@^27.0.0:
jest-get-type "^27.5.1"
pretty-format "^27.5.1"
-jest-matcher-utils@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.0.1.tgz#9a19300603dac3fbeadc95a6e7f6285466735e22"
- integrity sha512-AE1oD7mFC/rcdKYa3Nebd+zo9HOUq+x5l3ol9EHgVanxffPcDxuQELvDGDUG6jq4w/x8IDmvPHjZ42ZD5iGwCg==
+jest-message-util@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf"
+ integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==
dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^27.5.1"
+ "@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
- jest-diff "^28.0.1"
- jest-get-type "^28.0.0"
- pretty-format "^28.0.1"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^27.5.1"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
jest-message-util@^28.0.1:
version "28.0.1"
@@ -10030,12 +10337,12 @@ jest-message-util@^28.0.1:
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.0.1.tgz#74d1e303e0825a83c54dceaf0f5095100667eeaa"
- integrity sha512-pEi1eywUvu7Ko8T5QX6l4X4694cd9NqzyeFFnH7QYDEm4INKxNbgBKLnaNmp025SlH9WHHDkHTeY4zRHPicMHw==
+jest-mock@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6"
+ integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==
dependencies:
- "@jest/types" "^28.0.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
jest-pnp-resolver@^1.2.2:
@@ -10058,25 +10365,27 @@ jest-regex-util@^28.0.0:
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.0.tgz#b8d0bf9761328ae21900ab3f3b0ce8c4d392a73a"
integrity sha512-VqrjkteNiucN3ctI/AtBzO7iitfk5YGArPwU2cJ3WyT5Z6kGFHw/HQp0fSTkOUHdwVdJkFzbI5nh0yC82f9Kfg==
-jest-resolve-dependencies@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.1.tgz#4448647423f16d7e27438d0704b091858741838e"
- integrity sha512-ypEOCjf1OoDOmfotDWeMuMxOgT1WipFmFfS2pHnM4WMNaHBPpQtTRYSRyJN3tqSt4g1+1iP4Ldx2UgLyr3qZWQ==
+jest-resolve-dependencies@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8"
+ integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==
dependencies:
- jest-regex-util "^28.0.0"
- jest-snapshot "^28.0.1"
+ "@jest/types" "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-snapshot "^27.5.1"
-jest-resolve@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.0.1.tgz#8d51581b52028df3d10746605e13b4a46ba7a37d"
- integrity sha512-nQahkVO8flCRsXtlq3JZb+pElJ+9s2L9TQ0xs6x1DLXgZ3FvB3XRfQGnsqtxyMKEAbbEfypGQv1rUVpIrWfssg==
+jest-resolve@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384"
+ integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==
dependencies:
+ "@jest/types" "^27.5.1"
chalk "^4.0.0"
graceful-fs "^4.2.9"
- jest-haste-map "^28.0.1"
+ jest-haste-map "^27.5.1"
jest-pnp-resolver "^1.2.2"
- jest-util "^28.0.1"
- jest-validate "^28.0.1"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
resolve "^1.20.0"
resolve.exports "^1.1.0"
slash "^3.0.0"
@@ -10091,58 +10400,58 @@ jest-runner-eslint@1.0.0:
create-jest-runner "^0.6.0"
dot-prop "^5.3.0"
-jest-runner@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.0.1.tgz#006e2b483e67a7bbba46d82bdcb1e84d9d9ec6b4"
- integrity sha512-aVRI4Ngaa9hxDg60tAm4ebqJcaI2vUyR04TuNSArI6MZh8Rfio4mP0tjqVI28TzK8RKH3JMg3ARf66nlAwOl7g==
+jest-runner@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5"
+ integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==
dependencies:
- "@jest/console" "^28.0.1"
- "@jest/environment" "^28.0.1"
- "@jest/test-result" "^28.0.1"
- "@jest/transform" "^28.0.1"
- "@jest/types" "^28.0.1"
+ "@jest/console" "^27.5.1"
+ "@jest/environment" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
chalk "^4.0.0"
- emittery "^0.10.2"
+ emittery "^0.8.1"
graceful-fs "^4.2.9"
- jest-docblock "^28.0.0"
- jest-environment-node "^28.0.1"
- jest-haste-map "^28.0.1"
- jest-leak-detector "^28.0.1"
- jest-message-util "^28.0.1"
- jest-resolve "^28.0.1"
- jest-runtime "^28.0.1"
- jest-util "^28.0.1"
- jest-watcher "^28.0.1"
- jest-worker "^28.0.1"
- source-map-support "0.5.13"
+ jest-docblock "^27.5.1"
+ jest-environment-jsdom "^27.5.1"
+ jest-environment-node "^27.5.1"
+ jest-haste-map "^27.5.1"
+ jest-leak-detector "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-util "^27.5.1"
+ jest-worker "^27.5.1"
+ source-map-support "^0.5.6"
throat "^6.0.1"
-jest-runtime@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.0.1.tgz#2b33b86c26a14bcba9d3be0ded50010e559ba2be"
- integrity sha512-bC22PNBaMK/tX6rMIUf7Usn9V1DallrRyA5QzTqRjz0E2E1UZMUZzKWzhbV6opCI1QSgr5srn0qNUl0MpgWm1g==
- dependencies:
- "@jest/environment" "^28.0.1"
- "@jest/fake-timers" "^28.0.1"
- "@jest/globals" "^28.0.1"
- "@jest/source-map" "^28.0.0"
- "@jest/test-result" "^28.0.1"
- "@jest/transform" "^28.0.1"
- "@jest/types" "^28.0.1"
+jest-runtime@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af"
+ integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/globals" "^27.5.1"
+ "@jest/source-map" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
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.1"
- jest-message-util "^28.0.1"
- jest-mock "^28.0.1"
- jest-regex-util "^28.0.0"
- jest-resolve "^28.0.1"
- jest-snapshot "^28.0.1"
- jest-util "^28.0.1"
+ jest-haste-map "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-mock "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
slash "^3.0.0"
strip-bom "^4.0.0"
@@ -10154,34 +10463,33 @@ jest-serializer@^27.5.1:
"@types/node" "*"
graceful-fs "^4.2.9"
-jest-snapshot@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.0.1.tgz#864d5445323c3a8c4124941394825c7f3b1874b0"
- integrity sha512-xaNY3ZZtOBYIpYSAqLpClZJs66wWVpKgsQiFvu8xxjjQBRmwYwu2CAmdaiL5wmd9KxrGX+viLm2vI964hIiIcw==
+jest-snapshot@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1"
+ integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==
dependencies:
- "@babel/core" "^7.11.6"
+ "@babel/core" "^7.7.2"
"@babel/generator" "^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.1"
- "@jest/transform" "^28.0.1"
- "@jest/types" "^28.0.1"
- "@types/babel__traverse" "^7.0.6"
+ "@babel/types" "^7.0.0"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/babel__traverse" "^7.0.4"
"@types/prettier" "^2.1.5"
babel-preset-current-node-syntax "^1.0.0"
chalk "^4.0.0"
- expect "^28.0.1"
+ expect "^27.5.1"
graceful-fs "^4.2.9"
- jest-diff "^28.0.1"
- jest-get-type "^28.0.0"
- jest-haste-map "^28.0.1"
- jest-matcher-utils "^28.0.1"
- jest-message-util "^28.0.1"
- jest-util "^28.0.1"
+ jest-diff "^27.5.1"
+ jest-get-type "^27.5.1"
+ jest-haste-map "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-util "^27.5.1"
natural-compare "^1.4.0"
- pretty-format "^28.0.1"
- semver "^7.3.5"
+ pretty-format "^27.5.1"
+ semver "^7.3.2"
jest-styled-components@7.0.8:
version "7.0.8"
@@ -10228,17 +10536,17 @@ jest-util@^28.0.1:
graceful-fs "^4.2.9"
picomatch "^2.2.3"
-jest-validate@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.0.1.tgz#7f360030a2c8eeb91b62de92ab00829119a0ad73"
- integrity sha512-1mWGDluyjCSGc5u/gw0JKo6SlVfALiho5bLTfqmStOsdy3k69k7/dp18dq49WctHwQ9C+i4SkqpbQG7l63nxiw==
+jest-validate@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067"
+ integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==
dependencies:
- "@jest/types" "^28.0.1"
+ "@jest/types" "^27.5.1"
camelcase "^6.2.0"
chalk "^4.0.0"
- jest-get-type "^28.0.0"
+ jest-get-type "^27.5.1"
leven "^3.1.0"
- pretty-format "^28.0.1"
+ pretty-format "^27.5.1"
jest-watch-typeahead@1.1.0:
version "1.1.0"
@@ -10253,7 +10561,20 @@ jest-watch-typeahead@1.1.0:
string-length "^5.0.1"
strip-ansi "^7.0.1"
-jest-watcher@^28.0.0, jest-watcher@^28.0.1:
+jest-watcher@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2"
+ integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==
+ dependencies:
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ jest-util "^27.5.1"
+ string-length "^4.0.1"
+
+jest-watcher@^28.0.0:
version "28.0.1"
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.0.1.tgz#1460553913120ddfe3045fda7e80144819cc576e"
integrity sha512-tKyjsQal10vBomcyn79ZTutv0N0/dSfYJ+WRFJ3nlaMejiDlLKjMGQ/QrcwcXIXMXQyt0tJG1ycmqLbJg5AK6A==
@@ -10284,23 +10605,14 @@ jest-worker@^27.4.5, jest-worker@^27.5.1:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest-worker@^28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.0.1.tgz#7abc005335a5937e6a4f8d24c980c7630a849012"
- integrity sha512-Z3j1jfZwtt2ruKwU391a4/kKdYEId7Vy9+6Jeeq5Xl0glJDnOAvO5ixNmgMokMmbpet41jc4MpUx71ciyeTB/A==
- dependencies:
- "@types/node" "*"
- merge-stream "^2.0.0"
- supports-color "^8.0.0"
-
-jest@28.0.1:
- version "28.0.1"
- resolved "https://registry.yarnpkg.com/jest/-/jest-28.0.1.tgz#064ab082ba3af4c09fc0b227c14b17858083eda7"
- integrity sha512-rqP6qSiZ00LUpajUBJIBKjCSE2tOy4x0Y/HI4EJntg51tND02VEiKjKkzgebFyMsFs85H+HGxLgezwOwa1bfwA==
+jest@27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc"
+ integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==
dependencies:
- "@jest/core" "^28.0.1"
+ "@jest/core" "^27.5.1"
import-local "^3.0.2"
- jest-cli "^28.0.1"
+ jest-cli "^27.5.1"
js-base64@^2.1.9:
version "2.6.4"
@@ -10337,6 +10649,39 @@ jschardet@3.0.0:
resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-3.0.0.tgz#898d2332e45ebabbdb6bf2feece9feea9a99e882"
integrity sha512-lJH6tJ77V8Nzd5QWRkFYCLc13a3vADkh3r/Fi8HupZGWk2OVVDfnZP8V/VgQgZ+lzW0kG2UGb5hFgt3V3ndotQ==
+jsdom@^16.6.0:
+ version "16.7.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710"
+ integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==
+ dependencies:
+ abab "^2.0.5"
+ acorn "^8.2.4"
+ acorn-globals "^6.0.0"
+ cssom "^0.4.4"
+ cssstyle "^2.3.0"
+ data-urls "^2.0.0"
+ decimal.js "^10.2.1"
+ domexception "^2.0.1"
+ escodegen "^2.0.0"
+ form-data "^3.0.0"
+ html-encoding-sniffer "^2.0.1"
+ http-proxy-agent "^4.0.1"
+ https-proxy-agent "^5.0.0"
+ is-potential-custom-element-name "^1.0.1"
+ nwsapi "^2.2.0"
+ parse5 "6.0.1"
+ saxes "^5.0.1"
+ symbol-tree "^3.2.4"
+ tough-cookie "^4.0.0"
+ w3c-hr-time "^1.0.2"
+ w3c-xmlserializer "^2.0.0"
+ webidl-conversions "^6.1.0"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.5.0"
+ ws "^7.4.6"
+ xml-name-validator "^3.0.0"
+
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
@@ -10454,6 +10799,11 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
jsonc-parser@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
@@ -10839,7 +11189,7 @@ lodash.uniqueid@^4.0.1:
resolved "https://registry.yarnpkg.com/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz#3268f26a7c88e4f4b1758d679271814e31fa5b26"
integrity sha1-MmjyanyI5PSxdY1nknGBTjH6WyY=
-lodash@4.17.21, lodash@^4.1.0, lodash@^4.11.2, lodash@^4.17.10, 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.4:
+lodash@4.17.21, lodash@^4.1.0, lodash@^4.11.2, lodash@^4.17.10, 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.4, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -10898,6 +11248,13 @@ lowercase-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -11703,6 +12060,11 @@ node-int64@^0.4.0:
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
+node-releases@^2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
+ integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+
node-releases@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96"
@@ -11856,6 +12218,11 @@ numbro@2.3.6:
dependencies:
bignumber.js "^8.1.1"
+nwsapi@^2.2.0:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30"
+ integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
+
object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -12231,7 +12598,7 @@ parse5-htmlparser2-tree-adapter@^6.0.1:
dependencies:
parse5 "^6.0.1"
-parse5@^6.0.0, parse5@^6.0.1:
+parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
@@ -13079,6 +13446,11 @@ prr@~1.0.1:
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+psl@^1.1.33:
+ 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"
@@ -13141,6 +13513,11 @@ query-string@^4.2.3:
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
+querystringify@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
+ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -14161,6 +14538,11 @@ requireindex@~1.1.0:
resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162"
integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI=
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+
reselect@4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6"
@@ -14346,6 +14728,13 @@ sax@~1.2.4:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+saxes@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
+ integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
+ dependencies:
+ xmlchars "^2.2.0"
+
scheduler@^0.19.1:
version "0.19.1"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
@@ -14443,6 +14832,11 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
send@0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
@@ -14677,15 +15071,7 @@ source-map-resolve@^0.6.0:
atob "^2.1.2"
decode-uri-component "^0.2.0"
-source-map-support@0.5.13:
- version "0.5.13"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
- integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
-source-map-support@^0.5.16, source-map-support@~0.5.12, source-map-support@~0.5.20:
+source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@@ -15449,6 +15835,11 @@ svgo@2.8.0, svgo@^2.5.0:
picocolors "^1.0.0"
stable "^0.1.8"
+symbol-tree@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
symlink-or-copy@^1.1.8, symlink-or-copy@^1.2.0, symlink-or-copy@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz#9506dd64d8e98fa21dcbf4018d1eab23e77f71fe"
@@ -15792,6 +16183,16 @@ touch@^3.1.0:
dependencies:
nopt "~1.0.10"
+tough-cookie@^4.0.0:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
+ integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
+ dependencies:
+ psl "^1.1.33"
+ punycode "^2.1.1"
+ universalify "^0.2.0"
+ url-parse "^1.5.3"
+
tr46@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
@@ -15799,6 +16200,13 @@ tr46@^1.0.1:
dependencies:
punycode "^2.1.0"
+tr46@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240"
+ integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==
+ dependencies:
+ punycode "^2.1.1"
+
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
@@ -16196,6 +16604,11 @@ universalify@^0.1.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+universalify@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
+ integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
+
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
@@ -16227,6 +16640,14 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
+update-browserslist-db@^1.0.13:
+ version "1.0.13"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
+ integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
update-notifier@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
@@ -16280,6 +16701,14 @@ url-parse-lax@^3.0.0:
dependencies:
prepend-http "^2.0.0"
+url-parse@^1.5.3:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
+ integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
use-debounce@7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-7.0.1.tgz#380e6191cc13ad29f8e2149a12b5c37cc2891190"
@@ -16348,14 +16777,14 @@ v8-compile-cache@^2.0.3, v8-compile-cache@^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@^8.1.0:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed"
+ integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==
dependencies:
- "@jridgewell/trace-mapping" "^0.3.7"
"@types/istanbul-lib-coverage" "^2.0.1"
convert-source-map "^1.6.0"
+ source-map "^0.7.3"
v8flags@^3.1.1:
version "3.2.0"
@@ -16497,6 +16926,20 @@ vue-template-compiler@^2.6.11:
de-indent "^1.0.2"
he "^1.1.0"
+w3c-hr-time@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
+ integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+ dependencies:
+ browser-process-hrtime "^1.0.0"
+
+w3c-xmlserializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
+ integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
+ dependencies:
+ xml-name-validator "^3.0.0"
+
walk-sync@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-2.2.0.tgz#80786b0657fcc8c0e1c0b1a042a09eae2966387a"
@@ -16551,6 +16994,16 @@ webidl-conversions@^4.0.2:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+webidl-conversions@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
+ integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
+
+webidl-conversions@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
+ integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+
webpack-bundle-analyzer@^3.9.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c"
@@ -16669,11 +17122,23 @@ webpackbar@5.0.2:
pretty-time "^1.1.0"
std-env "^3.0.1"
+whatwg-encoding@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
whatwg-fetch@^0.10.1:
version "0.10.1"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.10.1.tgz#365125d40b36823feac8ab41b71c4d56e84a531f"
integrity sha1-NlEl1As2gj/qyKtBtxxNVuhKUx8=
+whatwg-mimetype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
@@ -16691,6 +17156,15 @@ whatwg-url@^7.0.0:
tr46 "^1.0.1"
webidl-conversions "^4.0.2"
+whatwg-url@^8.0.0, whatwg-url@^8.5.0:
+ version "8.7.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77"
+ integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==
+ dependencies:
+ lodash "^4.7.0"
+ tr46 "^2.1.0"
+ webidl-conversions "^6.1.0"
+
which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
@@ -16808,6 +17282,11 @@ ws@^6.0.0:
dependencies:
async-limiter "~1.0.0"
+ws@^7.4.6:
+ version "7.5.9"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
+ integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
+
xdg-basedir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
@@ -16826,6 +17305,16 @@ xlsx@^0.17.1:
wmf "~1.0.1"
word "~0.3.0"
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
+xmlchars@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
@@ -16841,6 +17330,11 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
@@ -16891,7 +17385,7 @@ yargs-parser@^21.0.0:
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35"
integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==
-yargs@17.4.1, yargs@^17.3.1:
+yargs@17.4.1:
version "17.4.1"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284"
integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==