From 6dc22f73f7e5f4934bc3b5ac2330dd48753ca8e0 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sat, 28 Mar 2020 12:18:52 +0800 Subject: [PATCH] upgrade deps --- package.json | 17 +- .../views/admin/PluginsManagement.test.tsx | 140 +- .../assets/tests/views/auth/Forgot.test.tsx | 26 +- .../assets/tests/views/auth/Login.test.tsx | 102 +- .../assets/tests/views/skinlib/Show.test.tsx | 240 +- .../tests/views/skinlib/SkinLibrary.test.tsx | 254 +- .../tests/views/skinlib/Upload.test.tsx | 20 +- .../tests/views/user/BindPlayers.test.tsx | 32 +- .../assets/tests/views/user/Closet.test.tsx | 182 +- .../tests/views/user/Dashboard.test.tsx | 30 +- .../assets/tests/views/user/OAuth.test.tsx | 117 +- .../assets/tests/views/user/Players.test.tsx | 184 +- .../views/widgets/EmailVerification.test.tsx | 13 +- .../views/widgets/NotificationsList.test.tsx | 4 +- yarn.lock | 2057 ++++++++++------- 15 files changed, 1884 insertions(+), 1534 deletions(-) diff --git a/package.json b/package.json index 23438425..e20742e1 100644 --- a/package.json +++ b/package.json @@ -47,11 +47,11 @@ "@babel/plugin-transform-runtime": "^7.8.3", "@babel/preset-env": "^7.8.7", "@gplane/tsconfig": "^1.0.0", - "@testing-library/jest-dom": "^5.0.2", - "@testing-library/react": "^9.4.0", + "@testing-library/jest-dom": "^5.3.0", + "@testing-library/react": "^10.0.1", "@types/bootstrap": "^4.3.1", "@types/echarts": "^4.4.2", - "@types/jest": "^24.0.25", + "@types/jest": "^25.1.4", "@types/jquery": "^3.3.29", "@types/js-yaml": "^3.12.2", "@types/lodash.debounce": "^4.0.6", @@ -64,7 +64,7 @@ "@typescript-eslint/parser": "^2.8.0", "@vue/test-utils": "^1.0.0-beta.29", "autoprefixer": "^9.7.3", - "babel-jest": "^24.9.0", + "babel-jest": "^25.2.3", "babel-loader": "^8.0.6", "babel-plugin-dynamic-import-node": "^2.3.0", "cache-loader": "^4.1.0", @@ -74,8 +74,8 @@ "eslint-formatter-beauty": "^3.0.0", "eslint-plugin-vue": "^6.1.2", "file-loader": "^5.0.2", - "jest": "^24.9.0", - "jest-extended": "^0.11.2", + "jest": "^25.2.3", + "jest-extended": "^0.11.5", "js-yaml": "^3.13.1", "mini-css-extract-plugin": "^0.9.0", "optimize-css-assets-webpack-plugin": "^5.0.3", @@ -86,7 +86,7 @@ "style-loader": "^1.1.2", "stylus": "^0.54.7", "stylus-loader": "^3.0.2", - "ts-jest": "^24.3.0", + "ts-jest": "^25.2.1", "ts-loader": "^6.2.1", "typescript": "^3.8.3", "url-loader": "^3.0.0", @@ -99,7 +99,8 @@ "webpack-manifest-plugin": "^2.2.0" }, "resolutions": { - "caniuse-lite": "*" + "caniuse-lite": "*", + "@types/testing-library__dom": "^7.0.0" }, "browserslist": [ "> 1%", diff --git a/resources/assets/tests/views/admin/PluginsManagement.test.tsx b/resources/assets/tests/views/admin/PluginsManagement.test.tsx index 95bd6c4c..182b7307 100644 --- a/resources/assets/tests/views/admin/PluginsManagement.test.tsx +++ b/resources/assets/tests/views/admin/PluginsManagement.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, wait, fireEvent } from '@testing-library/react' +import { render, waitFor, fireEvent } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import PluginsManagement from '@/views/admin/PluginsManagement' @@ -37,7 +37,7 @@ test('plugin info box', async () => { ]) const { queryByTitle, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByTitle(t('admin.configurePlugin'))).not.toBeNull() expect(queryByTitle(t('admin.pluginReadme'))).not.toBeNull() @@ -68,15 +68,15 @@ describe('enable plugin', () => { fetch.post.mockResolvedValue({ code: 0, message: 'success' }) const { getByTitle, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('admin.enablePlugin'))) - await wait() - - expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { - action: 'enable', - name: 'a', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { + action: 'enable', + name: 'a', + }), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(getByTitle(t('admin.disablePlugin'))).toBeChecked() @@ -90,11 +90,15 @@ describe('enable plugin', () => { }) const { getByTitle, getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('admin.enablePlugin'))) - await wait() - + await waitFor(() => + expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { + action: 'enable', + name: 'a', + }), + ) expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { action: 'enable', name: 'a', @@ -121,15 +125,15 @@ describe('disable plugin', () => { fetch.post.mockResolvedValue({ code: 0, message: 'success' }) const { getByTitle, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('admin.disablePlugin'))) - await wait() - - expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { - action: 'disable', - name: 'a', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { + action: 'disable', + name: 'a', + }), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(getByTitle(t('admin.enablePlugin'))).not.toBeChecked() @@ -139,11 +143,15 @@ describe('disable plugin', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByTitle, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('admin.disablePlugin'))) - await wait() - + await waitFor(() => + expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { + action: 'disable', + name: 'a', + }), + ) expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { action: 'disable', name: 'a', @@ -167,13 +175,11 @@ describe('delete plugin', () => { it('rejected by user', async () => { const { getByTitle, getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('admin.deletePlugin'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) }) it('succeeded', async () => { @@ -182,16 +188,16 @@ describe('delete plugin', () => { const { getByTitle, getByText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('admin.deletePlugin'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { - action: 'delete', - name: 'a', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { + action: 'delete', + name: 'a', + }), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText('My Plugin')).toBeNull() @@ -203,12 +209,16 @@ describe('delete plugin', () => { const { getByTitle, getByText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('admin.deletePlugin'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - + await waitFor(() => + expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { + action: 'delete', + name: 'a', + }), + ) expect(fetch.post).toBeCalledWith('/admin/plugins/manage', { action: 'delete', name: 'a', @@ -224,7 +234,7 @@ describe('upload plugin archive', () => { fetch.get.mockResolvedValue([]) const { getAllByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getAllByText(t('general.submit'))[0]) expect(fetch.post).not.toBeCalled() @@ -237,20 +247,20 @@ describe('upload plugin archive', () => { const { getByTitle, getAllByText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) const file = new File([], 'plugin.zip') fireEvent.change(getByTitle(t('skinlib.upload.select-file')), { target: { files: [file] }, }) fireEvent.click(getAllByText(t('general.submit'))[0]) - await wait() - - expect(fetch.get).toBeCalledTimes(2) - expect(fetch.post).toBeCalledWith( - '/admin/plugins/upload', - expect.any(FormData), - ) + await waitFor(() => { + expect(fetch.get).toBeCalledTimes(2) + expect(fetch.post).toBeCalledWith( + '/admin/plugins/upload', + expect.any(FormData), + ) + }) const formData: FormData = fetch.post.mock.calls[0][1] expect(formData.get('file')).toStrictEqual(file) expect(queryByText('plugin.zip')).not.toBeInTheDocument() @@ -265,20 +275,20 @@ describe('upload plugin archive', () => { const { getByTitle, getAllByText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) const file = new File([], 'plugin.zip') fireEvent.change(getByTitle(t('skinlib.upload.select-file')), { target: { files: [file] }, }) fireEvent.click(getAllByText(t('general.submit'))[0]) - await wait() - - expect(fetch.get).toBeCalledTimes(1) - expect(fetch.post).toBeCalledWith( - '/admin/plugins/upload', - expect.any(FormData), - ) + await waitFor(() => { + expect(fetch.get).toBeCalledTimes(1) + expect(fetch.post).toBeCalledWith( + '/admin/plugins/upload', + expect.any(FormData), + ) + }) expect(queryByText('plugin.zip')).toBeInTheDocument() expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') @@ -297,17 +307,17 @@ describe('submit remote URL', () => { queryByText, queryByDisplayValue, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.input(getByLabelText('URL'), { target: { value: 'https://example.com/a.zip' }, }) fireEvent.click(getAllByText(t('general.submit'))[1]) - await wait() - - expect(fetch.get).toBeCalledTimes(2) - expect(fetch.post).toBeCalledWith('/admin/plugins/wget', { - url: 'https://example.com/a.zip', + await waitFor(() => { + expect(fetch.get).toBeCalledTimes(2) + expect(fetch.post).toBeCalledWith('/admin/plugins/wget', { + url: 'https://example.com/a.zip', + }) }) expect( queryByDisplayValue('https://example.com/a.zip'), @@ -327,17 +337,17 @@ describe('submit remote URL', () => { queryByText, queryByDisplayValue, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.input(getByLabelText('URL'), { target: { value: 'https://example.com/a.zip' }, }) fireEvent.click(getAllByText(t('general.submit'))[1]) - await wait() - - expect(fetch.get).toBeCalledTimes(1) - expect(fetch.post).toBeCalledWith('/admin/plugins/wget', { - url: 'https://example.com/a.zip', + await waitFor(() => { + expect(fetch.get).toBeCalledTimes(1) + expect(fetch.post).toBeCalledWith('/admin/plugins/wget', { + url: 'https://example.com/a.zip', + }) }) expect(queryByDisplayValue('https://example.com/a.zip')).toBeInTheDocument() expect(queryByText('failed')).toBeInTheDocument() diff --git a/resources/assets/tests/views/auth/Forgot.test.tsx b/resources/assets/tests/views/auth/Forgot.test.tsx index d50832a6..1bf9a3d3 100644 --- a/resources/assets/tests/views/auth/Forgot.test.tsx +++ b/resources/assets/tests/views/auth/Forgot.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, wait, fireEvent } from '@testing-library/react' +import { render, waitFor, fireEvent } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import Forgot from '@/views/auth/Forgot' @@ -19,12 +19,12 @@ describe('submit', () => { target: { value: 'abc' }, }) fireEvent.click(getByText(t('auth.forgot.button'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/forgot', { - email: 'a@b.c', - captcha: 'abc', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/forgot', { + email: 'a@b.c', + captcha: 'abc', + }), + ) expect(queryByText('ok')).toBeInTheDocument() }) @@ -40,12 +40,12 @@ describe('submit', () => { target: { value: 'abc' }, }) fireEvent.click(getByText(t('auth.forgot.button'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/forgot', { - email: 'a@b.c', - captcha: 'abc', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/forgot', { + email: 'a@b.c', + captcha: 'abc', + }), + ) expect(queryByText('failed')).toBeInTheDocument() }) }) diff --git a/resources/assets/tests/views/auth/Login.test.tsx b/resources/assets/tests/views/auth/Login.test.tsx index a1db267a..b3e9bf3f 100644 --- a/resources/assets/tests/views/auth/Login.test.tsx +++ b/resources/assets/tests/views/auth/Login.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, wait, fireEvent } from '@testing-library/react' +import { render, waitFor, fireEvent } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import Login from '@/views/auth/Login' @@ -32,13 +32,13 @@ describe('submit form', () => { target: { value: 'password' }, }) fireEvent.click(getByText(t('auth.login'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/login', { - identification: 'a@b.c', - password: 'password', - keep: false, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/login', { + identification: 'a@b.c', + password: 'password', + keep: false, + }), + ) }) it('remember me', async () => { @@ -59,13 +59,13 @@ describe('submit form', () => { }) fireEvent.click(getByLabelText(t('auth.keep'))) fireEvent.click(getByText(t('auth.login'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/login', { - identification: 'a@b.c', - password: 'password', - keep: true, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/login', { + identification: 'a@b.c', + password: 'password', + keep: true, + }), + ) }) it('failed', async () => { @@ -83,13 +83,13 @@ describe('submit form', () => { target: { value: 'password' }, }) fireEvent.click(getByText(t('auth.login'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/login', { - identification: 'a@b.c', - password: 'password', - keep: false, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/login', { + identification: 'a@b.c', + password: 'password', + keep: false, + }), + ) expect(queryByText('failed')).toBeInTheDocument() }) @@ -113,13 +113,13 @@ describe('submit form', () => { target: { value: 'password' }, }) fireEvent.click(getByText(t('auth.login'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/login', { - identification: 'a@b.c', - password: 'password', - keep: false, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/login', { + identification: 'a@b.c', + password: 'password', + keep: false, + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(queryByText(t('auth.tooManyFails.captcha'))).toBeInTheDocument() expect(queryByAltText(t('auth.captcha'))).toBeInTheDocument() @@ -129,14 +129,14 @@ describe('submit form', () => { target: { value: 'captcha' }, }) fireEvent.click(getByText(t('auth.login'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/login', { - identification: 'a@b.c', - password: 'password', - keep: false, - captcha: 'captcha', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/login', { + identification: 'a@b.c', + password: 'password', + keep: false, + captcha: 'captcha', + }), + ) }) it('too many fails with normal recaptcha', async () => { @@ -155,13 +155,13 @@ describe('submit form', () => { target: { value: 'password' }, }) fireEvent.click(getByText(t('auth.login'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/login', { - identification: 'a@b.c', - password: 'password', - keep: false, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/login', { + identification: 'a@b.c', + password: 'password', + keep: false, + }), + ) expect(queryByText('failed')).toBeInTheDocument() }) @@ -182,13 +182,13 @@ describe('submit form', () => { target: { value: 'password' }, }) fireEvent.click(getByText(t('auth.login'))) - await wait() - - expect(fetch.post).toBeCalledWith('/auth/login', { - identification: 'a@b.c', - password: 'password', - keep: false, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/auth/login', { + identification: 'a@b.c', + password: 'password', + keep: false, + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(queryByText(t('auth.tooManyFails.recaptcha'))).toBeInTheDocument() diff --git a/resources/assets/tests/views/skinlib/Show.test.tsx b/resources/assets/tests/views/skinlib/Show.test.tsx index cb6f05a4..1b28bbea 100644 --- a/resources/assets/tests/views/skinlib/Show.test.tsx +++ b/resources/assets/tests/views/skinlib/Show.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import { Texture } from '@/scripts/types' @@ -55,7 +55,7 @@ test('without authenticated', async () => { fetch.get.mockResolvedValue({ data: fixtureSkin }) const { queryByText, queryByTitle } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText(fixtureSkin.name)).toBeInTheDocument() expect(queryByText('steve')).toBeInTheDocument() @@ -73,7 +73,7 @@ test('authenticated but not uploader', async () => { fetch.get.mockResolvedValue({ data: fixtureCape }) const { queryByText, queryByTitle } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText(fixtureCape.name)).toBeInTheDocument() expect(queryByText(t('general.cape'))).toBeInTheDocument() @@ -92,8 +92,7 @@ test('uploader is not existed', async () => { fetch.get.mockResolvedValue({ data: fixtureSkin }) const { queryByText } = render() - await wait() - + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText(t('general.unexistent-user'))).toBeInTheDocument() }) @@ -104,8 +103,7 @@ test('badges', async () => { fetch.get.mockResolvedValue({ data: fixtureSkin }) const { queryByText } = render() - await wait() - + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText('STAFF')).toBeInTheDocument() }) @@ -117,7 +115,7 @@ test('apply to player', async () => { .mockResolvedValueOnce({ data: [] }) const { getByText, getByLabelText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.apply'))) fireEvent.click(getByLabelText('Close')) @@ -131,11 +129,11 @@ test('set as avatar', async () => { fetch.post.mockResolvedValue({ code: 0, message: 'ok' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.setAsAvatar'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() + await waitFor(() => expect(fetch.post).toBeCalledTimes(1)) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') @@ -149,7 +147,7 @@ describe('download texture', () => { it('allowed', async () => { const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.show.download'))) }) @@ -157,7 +155,7 @@ describe('download texture', () => { it('not allowed', async () => { window.blessing.extra.download = false const { queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText(t('skinlib.show.download'))).not.toBeInTheDocument() }) @@ -172,7 +170,7 @@ describe('operation panel', () => { window.blessing.extra.currentUid = fixtureSkin.uploader const { queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText(t('skinlib.show.manage-notice'))).toBeInTheDocument() }) @@ -182,7 +180,7 @@ describe('operation panel', () => { window.blessing.extra.admin = true const { queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText(t('skinlib.show.manage-notice'))).toBeInTheDocument() }) @@ -198,7 +196,7 @@ describe('edit texture name', () => { const { getByText, getAllByTitle, getByDisplayValue, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getAllByTitle(t('skinlib.show.edit'))[0]) fireEvent.input(getByDisplayValue(fixtureSkin.name), { @@ -208,9 +206,7 @@ describe('edit texture name', () => { expect(queryByText(t('skinlib.emptyNewTextureName'))).toBeInTheDocument() fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(fixtureSkin.name)).toBeInTheDocument() }) @@ -224,19 +220,19 @@ describe('edit texture name', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getAllByTitle(t('skinlib.show.edit'))[0]) fireEvent.input(getByDisplayValue(fixtureSkin.name), { target: { value: 't' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/rename', { - tid: fixtureSkin.tid, - new_name: 't', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/rename', { + tid: fixtureSkin.tid, + new_name: 't', + }), + ) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText('t')).toBeInTheDocument() @@ -252,19 +248,19 @@ describe('edit texture name', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getAllByTitle(t('skinlib.show.edit'))[0]) fireEvent.input(getByDisplayValue(fixtureSkin.name), { target: { value: 't' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/rename', { - tid: fixtureSkin.tid, - new_name: 't', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/rename', { + tid: fixtureSkin.tid, + new_name: 't', + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText(fixtureSkin.name)).toBeInTheDocument() @@ -281,14 +277,12 @@ describe('edit texture type', () => { const { getByText, getAllByTitle, getByLabelText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getAllByTitle(t('skinlib.show.edit'))[1]) fireEvent.click(getByLabelText('Alex')) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText('steve')).toBeInTheDocument() }) @@ -302,17 +296,17 @@ describe('edit texture type', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getAllByTitle(t('skinlib.show.edit'))[1]) fireEvent.click(getByLabelText('Alex')) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/model', { - tid: fixtureSkin.tid, - model: 'alex', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/model', { + tid: fixtureSkin.tid, + model: 'alex', + }), + ) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText('alex')).toBeInTheDocument() @@ -328,17 +322,17 @@ describe('edit texture type', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getAllByTitle(t('skinlib.show.edit'))[1]) fireEvent.click(getByLabelText('Alex')) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/model', { - tid: fixtureSkin.tid, - model: 'alex', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/model', { + tid: fixtureSkin.tid, + model: 'alex', + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText('steve')).toBeInTheDocument() @@ -353,7 +347,7 @@ describe('add to closet', () => { it('cancelled', async () => { const { getByText, getByDisplayValue, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.addToCloset'))) fireEvent.input(getByDisplayValue(fixtureSkin.name), { @@ -363,9 +357,7 @@ describe('add to closet', () => { expect(queryByText(t('skinlib.emptyItemName'))).toBeInTheDocument() fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) }) it('succeeded', async () => { @@ -374,19 +366,19 @@ describe('add to closet', () => { const { getByText, getByDisplayValue, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.addToCloset'))) fireEvent.input(getByDisplayValue(fixtureSkin.name), { target: { value: 't' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/closet/add', { - tid: fixtureSkin.tid, - name: 't', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/closet/add', { + tid: fixtureSkin.tid, + name: 't', + }), + ) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText('2')).toBeInTheDocument() @@ -398,19 +390,19 @@ describe('add to closet', () => { const { getByText, getByDisplayValue, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.addToCloset'))) fireEvent.input(getByDisplayValue(fixtureSkin.name), { target: { value: 't' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/closet/add', { - tid: fixtureSkin.tid, - name: 't', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/closet/add', { + tid: fixtureSkin.tid, + name: 't', + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText('1')).toBeInTheDocument() @@ -428,13 +420,15 @@ describe('remove from closet', () => { fetch.post.mockResolvedValue({ code: 0, message: 'ok' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.removeFromCloset'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/closet/remove/${fixtureSkin.tid}`) + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/closet/remove/${fixtureSkin.tid}`, + ), + ) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText('0')).toBeInTheDocument() @@ -444,13 +438,15 @@ describe('remove from closet', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.removeFromCloset'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/closet/remove/${fixtureSkin.tid}`) + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/closet/remove/${fixtureSkin.tid}`, + ), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText('1')).toBeInTheDocument() @@ -467,7 +463,7 @@ describe('report texture', () => { window.blessing.extra.report = 5 const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.report.title'))) expect(queryByText(t('skinlib.report.positive', { score: 5 }))) @@ -480,7 +476,7 @@ describe('report texture', () => { window.blessing.extra.report = -5 const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.report.title'))) expect(queryByText(t('skinlib.report.negative', { score: 5 }))) @@ -495,19 +491,19 @@ describe('report texture', () => { const { getByText, getByPlaceholderText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.report.title'))) fireEvent.input(getByPlaceholderText(t('skinlib.report.reason')), { target: { value: 'illegal' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/report', { - tid: fixtureSkin.tid, - reason: 'illegal', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/report', { + tid: fixtureSkin.tid, + reason: 'illegal', + }), + ) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') }) @@ -518,19 +514,19 @@ describe('report texture', () => { const { getByText, getByPlaceholderText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.report.title'))) fireEvent.input(getByPlaceholderText(t('skinlib.report.reason')), { target: { value: 'illegal' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/report', { - tid: fixtureSkin.tid, - reason: 'illegal', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/report', { + tid: fixtureSkin.tid, + reason: 'illegal', + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') }) @@ -545,13 +541,11 @@ describe('change privacy', () => { fetch.get.mockResolvedValue({ data: fixtureSkin }) const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.setAsPrivate'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(t('skinlib.setAsPrivate'))).toBeInTheDocument() }) @@ -560,15 +554,15 @@ describe('change privacy', () => { fetch.post.mockResolvedValue({ code: 0, message: 'ok' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.setAsPrivate'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/privacy', { - tid: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/privacy', { + tid: fixtureSkin.tid, + }), + ) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText(t('skinlib.setAsPublic'))).toBeInTheDocument() @@ -579,15 +573,15 @@ describe('change privacy', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.setAsPublic'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/privacy', { - tid: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/privacy', { + tid: fixtureSkin.tid, + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText(t('skinlib.setAsPublic'))).toBeInTheDocument() @@ -602,28 +596,26 @@ describe('delete texture', () => { it('cancelled', async () => { const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.show.delete-texture'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) }) it('succeeded', async () => { fetch.post.mockResolvedValue({ code: 0, message: 'ok' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.show.delete-texture'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/delete', { - tid: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/delete', { + tid: fixtureSkin.tid, + }), + ) expect(queryByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') @@ -634,15 +626,15 @@ describe('delete texture', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('skinlib.show.delete-texture'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/skinlib/delete', { - tid: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/skinlib/delete', { + tid: fixtureSkin.tid, + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') }) diff --git a/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx b/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx index 2d6dd6c7..437475a0 100644 --- a/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx +++ b/resources/assets/tests/views/skinlib/SkinLibrary.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import { Paginator } from '@/scripts/types' @@ -37,7 +37,7 @@ test('without authenticated', async () => { fetch.get.mockResolvedValue(createPaginator([])) const { queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) expect(fetch.get).toBeCalledWith( '/skinlib/list', @@ -56,20 +56,20 @@ test('search by keyword', async () => { fetch.get.mockResolvedValue(createPaginator([])) const { getByText, getByPlaceholderText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.input(getByPlaceholderText(t('vendor.datatable.search')), { target: { value: 'k' }, }) fireEvent.click(getByText(t('general.submit'))) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('keyword')).toBe('k') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('keyword')).toBe('k') + return true + }), + ), ) }) @@ -78,17 +78,17 @@ test('select uploaded by self', async () => { fetch.get.mockResolvedValue(createPaginator([])) const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('skinlib.seeMyUpload'))) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('uploader')).toBe('1') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('uploader')).toBe('1') + return true + }), + ), ) expect(queryByText(t('skinlib.filter.uploader', { uid: 1 }))) }) @@ -100,32 +100,32 @@ test('reset query', async () => { const { getByText, getByPlaceholderText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText('Steve')) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.input(getByPlaceholderText(t('vendor.datatable.search')), { target: { value: 'k' }, }) fireEvent.click(getByText(t('general.submit'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('skinlib.seeMyUpload'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('skinlib.sort.likes'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('skinlib.reset'))) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('filter')).toBe('skin') - expect(search.get('keyword')).toBeNull() - expect(search.get('uploader')).toBeNull() - expect(search.get('sort')).toBe('time') - expect(search.get('page')).toBe('1') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('filter')).toBe('skin') + expect(search.get('keyword')).toBeNull() + expect(search.get('uploader')).toBeNull() + expect(search.get('sort')).toBe('time') + expect(search.get('page')).toBe('1') + return true + }), + ), ) expect(queryByText(t('skinlib.filter.uploader', { uid: 1 }))) }) @@ -134,24 +134,24 @@ test('browser goes back', async () => { fetch.get.mockResolvedValue(createPaginator([])) const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText('Steve')) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) const state: string = window.history.state const event = new PopStateEvent('popstate', { state: state.replace('steve', 'skin'), }) window.dispatchEvent(event) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('filter')).toBe('skin') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('filter')).toBe('skin') + return true + }), + ), ) }) @@ -160,7 +160,7 @@ test('pagination', async () => { fetch.get.mockResolvedValue(response) const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText('2')) @@ -179,7 +179,7 @@ test('library item', async () => { const { getByText, queryByText, queryAllByText, queryByAltText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) expect(queryAllByText('Steve')).toHaveLength(2) expect(queryByText(fixtureItem.name)).toBeInTheDocument() @@ -190,14 +190,14 @@ test('library item', async () => { expect(queryByText(fixtureItem.nickname)).toBeInTheDocument() fireEvent.click(getByText(fixtureItem.nickname)) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('uploader')).toBe(fixtureItem.uploader.toString()) - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('uploader')).toBe(fixtureItem.uploader.toString()) + return true + }), + ), ) const search = new URLSearchParams(location.search) expect(search.get('uploader')).toBe(fixtureItem.uploader.toString()) @@ -208,7 +208,7 @@ test('private texture', async () => { fetch.get.mockResolvedValue(createPaginator([item])) const { queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) expect(queryByText(t('skinlib.private'))).toBeInTheDocument() }) @@ -220,19 +220,19 @@ describe('by filter', () => { it('skin', async () => { const { getByText, queryAllByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText('Steve')) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('general.skin'))) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('filter')).toBe('skin') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('filter')).toBe('skin') + return true + }), + ), ) expect(queryAllByText(t('general.skin'))).toHaveLength(2) const search = new URLSearchParams(location.search) @@ -241,17 +241,17 @@ describe('by filter', () => { it('steve', async () => { const { getByText, queryAllByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText('Steve')) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('filter')).toBe('steve') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('filter')).toBe('steve') + return true + }), + ), ) expect(queryAllByText('Steve')).toHaveLength(2) const search = new URLSearchParams(location.search) @@ -260,17 +260,17 @@ describe('by filter', () => { it('alex', async () => { const { getByText, queryAllByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText('Alex')) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('filter')).toBe('alex') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('filter')).toBe('alex') + return true + }), + ), ) expect(queryAllByText('Alex')).toHaveLength(2) const search = new URLSearchParams(location.search) @@ -279,17 +279,17 @@ describe('by filter', () => { it('cape', async () => { const { getByText, queryAllByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('general.cape'))) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('filter')).toBe('cape') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('filter')).toBe('cape') + return true + }), + ), ) expect(queryAllByText(t('general.cape'))).toHaveLength(2) const search = new URLSearchParams(location.search) @@ -304,19 +304,19 @@ describe('sorting', () => { it('by time', async () => { const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('skinlib.sort.likes'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('skinlib.sort.time'))) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('sort')).toBe('time') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('sort')).toBe('time') + return true + }), + ), ) const search = new URLSearchParams(location.search) expect(search.get('sort')).toBe('time') @@ -324,17 +324,17 @@ describe('sorting', () => { it('by likes', async () => { const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('skinlib.sort.likes'))) - await wait() - - expect(fetch.get).toHaveBeenLastCalledWith( - '/skinlib/list', - expect.toSatisfy((search: URLSearchParams) => { - expect(search.get('sort')).toBe('likes') - return true - }), + await waitFor(() => + expect(fetch.get).toHaveBeenLastCalledWith( + '/skinlib/list', + expect.toSatisfy((search: URLSearchParams) => { + expect(search.get('sort')).toBe('likes') + return true + }), + ), ) const search = new URLSearchParams(location.search) expect(search.get('sort')).toBe('likes') @@ -354,7 +354,7 @@ describe('add to closet', () => { it('without authenticated', async () => { const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(fixtureItem.likes.toString())) expect(queryByText(t('skinlib.anonymous'))).toBeInTheDocument() @@ -366,13 +366,11 @@ describe('add to closet', () => { fetch.post.mockResolvedValue({ code: 0, message: 'ok' }) const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(fixtureItem.likes.toString())) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalled() + await waitFor(() => expect(fetch.post).toBeCalled()) expect(queryByText((fixtureItem.likes + 1).toString())).toBeInTheDocument() }) @@ -381,13 +379,11 @@ describe('add to closet', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(fixtureItem.likes.toString())) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalled() + await waitFor(() => expect(fetch.post).toBeCalled()) expect(queryByText(fixtureItem.likes.toString())).toBeInTheDocument() }) }) @@ -408,13 +404,11 @@ describe('remove from closet', () => { fetch.post.mockResolvedValue({ code: 0, message: 'ok' }) const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(fixtureItem.likes.toString())) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalled() + await waitFor(() => expect(fetch.post).toBeCalled()) expect(queryByText((fixtureItem.likes - 1).toString())).toBeInTheDocument() }) @@ -422,13 +416,11 @@ describe('remove from closet', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(fixtureItem.likes.toString())) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalled() + await waitFor(() => expect(fetch.post).toBeCalled()) expect(queryByText(fixtureItem.likes.toString())).toBeInTheDocument() }) }) diff --git a/resources/assets/tests/views/skinlib/Upload.test.tsx b/resources/assets/tests/views/skinlib/Upload.test.tsx index 07a9c4d5..90f8c27d 100644 --- a/resources/assets/tests/views/skinlib/Upload.test.tsx +++ b/resources/assets/tests/views/skinlib/Upload.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import { isAlex } from '@/scripts/textureUtils' @@ -103,30 +103,28 @@ describe('input file', () => { it('select skin type automatically', async () => { isAlex.mockResolvedValue(true) - const { getByTitle, getByLabelText } = render() + const { getByTitle, findByLabelText } = render() const file = new File([], 't.png') fireEvent.change(getByTitle(t('skinlib.upload.select-file')), { target: { files: [file] }, }) - await wait() - expect(getByLabelText('Alex')).toBeChecked() + expect(await findByLabelText('Alex')).toBeChecked() }) it('do not overwrite "cape" type', async () => { - const { getByTitle, getByLabelText } = render() + const { getByTitle, getByLabelText, findByLabelText } = render() fireEvent.click(getByLabelText(t('general.cape'))) - await wait() + await waitFor(() => {}) const file = new File([], 't.png') fireEvent.change(getByTitle(t('skinlib.upload.select-file')), { target: { files: [file] }, }) - await wait() - expect(getByLabelText(t('general.cape'))).toBeChecked() + expect(await findByLabelText(t('general.cape'))).toBeChecked() }) }) @@ -234,7 +232,7 @@ describe('upload texture', () => { }) fireEvent.click(getByText(t('skinlib.upload.button'))) - await wait() + await waitFor(() => expect(fetch.post).toBeCalled()) }) it('duplicated texture detected', async () => { @@ -248,7 +246,7 @@ describe('upload texture', () => { }) fireEvent.click(getByText(t('skinlib.upload.button'))) - await wait() + await waitFor(() => expect(fetch.post).toBeCalled()) expect(queryByText('dup')).toBeInTheDocument() fireEvent.click(getByText(t('user.viewInSkinlib'))) @@ -265,7 +263,7 @@ describe('upload texture', () => { }) fireEvent.click(getByText(t('skinlib.upload.button'))) - await wait() + await waitFor(() => expect(fetch.post).toBeCalled()) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') }) diff --git a/resources/assets/tests/views/user/BindPlayers.test.tsx b/resources/assets/tests/views/user/BindPlayers.test.tsx index e2184a3f..6897a06c 100644 --- a/resources/assets/tests/views/user/BindPlayers.test.tsx +++ b/resources/assets/tests/views/user/BindPlayers.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import BindPlayers from '@/views/user/BindPlayers' @@ -20,13 +20,15 @@ describe('submit', () => { fetch.post.mockResolvedValue({ code: 0, message: 'success' }) const { getByText, getByLabelText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByLabelText('reina')) fireEvent.click(getByText(t('general.submit'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/player/bind', { player: 'reina' }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/player/bind', { + player: 'reina', + }), + ) expect(queryByText('success')).toBeInTheDocument() fireEvent.click(getByText(t('general.confirm'))) @@ -39,15 +41,17 @@ describe('submit', () => { const { getByText, getByPlaceholderText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.input(getByPlaceholderText(t('general.player.player-name')), { target: { value: 'kumiko' }, }) fireEvent.click(getByText(t('general.submit'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/player/bind', { player: 'kumiko' }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/player/bind', { + player: 'kumiko', + }), + ) expect(queryByText('success')).toBeInTheDocument() fireEvent.click(getByText(t('general.confirm'))) @@ -60,15 +64,17 @@ describe('submit', () => { const { getByText, getByPlaceholderText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.input(getByPlaceholderText(t('general.player.player-name')), { target: { value: 'kumiko' }, }) fireEvent.click(getByText(t('general.submit'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/player/bind', { player: 'kumiko' }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/player/bind', { + player: 'kumiko', + }), + ) expect(queryByText('failed')).toBeInTheDocument() fireEvent.click(getByText(t('general.confirm'))) diff --git a/resources/assets/tests/views/user/Closet.test.tsx b/resources/assets/tests/views/user/Closet.test.tsx index cd3b27e6..30942421 100644 --- a/resources/assets/tests/views/user/Closet.test.tsx +++ b/resources/assets/tests/views/user/Closet.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import $ from 'jquery' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' @@ -80,7 +80,7 @@ test('empty closet', async () => { fetch.get.mockResolvedValue(createPaginator([])) const { queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(queryByText(/skin library/i)).toBeInTheDocument() }) @@ -91,17 +91,17 @@ test('categories', async () => { .mockResolvedValueOnce(createPaginator([fixtureSkin])) const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) expect(queryByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() expect(queryByText(fixtureCape.pivot.item_name)).not.toBeInTheDocument() fireEvent.click(getByText(t('general.cape'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) expect(queryByText(fixtureSkin.pivot.item_name)).not.toBeInTheDocument() expect(queryByText(fixtureCape.pivot.item_name)).toBeInTheDocument() fireEvent.click(getByText(t('general.skin'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) expect(queryByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() expect(queryByText(fixtureCape.pivot.item_name)).not.toBeInTheDocument() }) @@ -111,15 +111,13 @@ test('search textures', async () => { .mockResolvedValueOnce(createPaginator([fixtureSkin])) .mockResolvedValueOnce(createPaginator([])) - const { getByPlaceholderText, queryByText } = render() - await wait() + const { getByPlaceholderText, findByText } = render() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.input(getByPlaceholderText(t('user.typeToSearch')), { target: { value: 'abc' }, }) - await wait() - - expect(queryByText(/no result/i)).toBeInTheDocument() + expect(await findByText(/no result/i)).toBeInTheDocument() }) test('switch page', async () => { @@ -127,12 +125,10 @@ test('switch page', async () => { .mockResolvedValueOnce({ ...createPaginator([]), last_page: 2 }) .mockResolvedValueOnce({ ...createPaginator([fixtureSkin]), last_page: 2 }) - const { getByText, queryByText } = render() - await wait() + const { getByText, findByText } = render() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText('2')) - await wait() - - expect(queryByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() + expect(await findByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() }) describe('rename item', () => { @@ -146,18 +142,20 @@ describe('rename item', () => { const { getByText, getByDisplayValue, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.renameItem'))) fireEvent.input(getByDisplayValue(fixtureSkin.pivot.item_name), { target: { value: 'my skin' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith( - `/user/closet/rename/${fixtureSkin.tid}`, - { name: 'my skin' }, + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/closet/rename/${fixtureSkin.tid}`, + { + name: 'my skin', + }, + ), ) expect(queryByText('my skin')).toBeInTheDocument() expect(queryByText('success')).toBeInTheDocument() @@ -168,16 +166,14 @@ describe('rename item', () => { fetch.post.mockResolvedValue({ code: 0, message: 'success' }) const { getByText, getByDisplayValue, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.renameItem'))) fireEvent.input(getByDisplayValue(fixtureSkin.pivot.item_name), { target: { value: '' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(t('skinlib.emptyNewTextureName'))).toBeInTheDocument() fireEvent.click(getByText(t('general.cancel'))) @@ -189,18 +185,20 @@ describe('rename item', () => { const { getByText, getByDisplayValue, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.renameItem'))) fireEvent.input(getByDisplayValue(fixtureSkin.pivot.item_name), { target: { value: 'my skin' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith( - `/user/closet/rename/${fixtureSkin.tid}`, - { name: 'my skin' }, + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/closet/rename/${fixtureSkin.tid}`, + { + name: 'my skin', + }, + ), ) expect(queryByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() expect(queryByText('failed')).toBeInTheDocument() @@ -209,16 +207,14 @@ describe('rename item', () => { it('cancelled', async () => { const { getByText, getByDisplayValue, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.renameItem'))) fireEvent.input(getByDisplayValue(fixtureSkin.pivot.item_name), { target: { value: 'my skin' }, }) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() }) }) @@ -232,13 +228,15 @@ describe('remove item', () => { fetch.post.mockResolvedValue({ code: 0, message: 'success' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.removeItem'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/closet/remove/${fixtureSkin.tid}`) + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/closet/remove/${fixtureSkin.tid}`, + ), + ) expect(queryByText(/skin library/i)).toBeInTheDocument() expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') @@ -248,13 +246,15 @@ describe('remove item', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.removeItem'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/closet/remove/${fixtureSkin.tid}`) + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/closet/remove/${fixtureSkin.tid}`, + ), + ) expect(queryByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') @@ -262,13 +262,11 @@ describe('remove item', () => { it('cancelled', async () => { const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.removeItem'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(fixtureSkin.pivot.item_name)).toBeInTheDocument() }) }) @@ -282,7 +280,7 @@ describe('select textures', () => { it('select skin', async () => { const { getByAltText, queryAllByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByAltText(fixtureSkin.pivot.item_name)) expect(queryAllByText(t('general.skin'))).toHaveLength(2) @@ -290,10 +288,10 @@ describe('select textures', () => { it('select cape', async () => { const { getByText, getByAltText, queryAllByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByText(t('general.cape'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByAltText(fixtureCape.pivot.item_name)) expect(queryAllByText(t('general.cape'))).toHaveLength(2) @@ -301,11 +299,11 @@ describe('select textures', () => { it('reset selected', async () => { const { getByText, getByAltText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByAltText(fixtureSkin.pivot.item_name)) fireEvent.click(getByText(t('general.cape'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByAltText(fixtureCape.pivot.item_name)) expect( @@ -336,15 +334,15 @@ describe('set avatar', () => { fetch.post.mockResolvedValue({ code: 0, message: 'success' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.setAsAvatar'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/profile/avatar', { - tid: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/profile/avatar', { + tid: fixtureSkin.tid, + }), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(document.querySelector('[alt="User Image"]')).toHaveAttribute('src') @@ -354,28 +352,26 @@ describe('set avatar', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.setAsAvatar'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/profile/avatar', { - tid: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/profile/avatar', { + tid: fixtureSkin.tid, + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') }) it('cancelled', async () => { const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.setAsAvatar'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) }) }) @@ -384,7 +380,7 @@ describe('apply textures to player', () => { fetch.get.mockResolvedValue(createPaginator([])) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.useAs'))) @@ -402,14 +398,14 @@ describe('apply textures to player', () => { getByAltText, getAllByPlaceholderText, queryByText, + findByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByAltText(fixtureSkin.pivot.item_name)) fireEvent.click(getByText(t('user.useAs'))) - await wait() - expect(queryByText(fixturePlayer.name)).toBeInTheDocument() + expect(await findByText(fixturePlayer.name)).toBeInTheDocument() fireEvent.input(getAllByPlaceholderText(t('user.typeToSearch'))[1], { target: { value: 'reina' }, @@ -430,17 +426,20 @@ describe('apply textures to player', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByAltText(fixtureSkin.pivot.item_name)) fireEvent.click(getByText(t('user.useAs'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByTitle(fixturePlayer.name)) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/player/set/${fixturePlayer.pid}`, { - skin: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/player/set/${fixturePlayer.pid}`, + { + skin: fixtureSkin.tid, + }, + ), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') }) @@ -458,17 +457,20 @@ describe('apply textures to player', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByAltText(fixtureSkin.pivot.item_name)) fireEvent.click(getByText(t('user.useAs'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByTitle(fixturePlayer.name)) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/player/set/${fixturePlayer.pid}`, { - skin: fixtureSkin.tid, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/player/set/${fixturePlayer.pid}`, + { + skin: fixtureSkin.tid, + }, + ), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') }) @@ -479,15 +481,13 @@ describe('apply textures to player', () => { .mockResolvedValueOnce({ data: [fixturePlayer] }) const { getByText, getByAltText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) fireEvent.click(getByAltText(fixtureSkin.pivot.item_name)) fireEvent.click(getByText(t('user.useAs'))) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) - $('#modal-apply') - .modal('hide') - .trigger('hidden.bs.modal') + $('#modal-apply').modal('hide').trigger('hidden.bs.modal') expect(fetch.post).not.toBeCalled() }) diff --git a/resources/assets/tests/views/user/Dashboard.test.tsx b/resources/assets/tests/views/user/Dashboard.test.tsx index a39824db..bc92c6a2 100644 --- a/resources/assets/tests/views/user/Dashboard.test.tsx +++ b/resources/assets/tests/views/user/Dashboard.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import * as fetch from '@/scripts/net' import { trans } from '@/scripts/i18n' import Dashboard from '@/views/user/Dashboard' @@ -29,7 +29,7 @@ describe('info box', () => { ) const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(getByText('13')).toBeInTheDocument() expect(getByText(/21/)).toBeInTheDocument() }) @@ -41,7 +41,7 @@ describe('info box', () => { ) const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(getByText('700')).toBeInTheDocument() expect(getByText(/800/)).toBeInTheDocument() expect(getByText(/KB/)).toBeInTheDocument() @@ -53,7 +53,7 @@ describe('info box', () => { ) const { getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(getByText('7')).toBeInTheDocument() expect(getByText(/10/)).toBeInTheDocument() expect(getByText(/MB/)).toBeInTheDocument() @@ -74,13 +74,11 @@ describe('sign', () => { }) const { getByRole, getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) const button = getByRole('button') fireEvent.click(button) - await wait() - - expect(fetch.post).toBeCalledWith('/user/sign') + await waitFor(() => expect(fetch.post).toBeCalledWith('/user/sign')) expect(getByText('ok')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(button).toBeDisabled() @@ -91,12 +89,10 @@ describe('sign', () => { fetch.post.mockResolvedValue({ code: 1, message: 'f', data: {} }) const { getByRole, getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByRole('button')) - await wait() - - expect(fetch.post).toBeCalledWith('/user/sign') + await waitFor(() => expect(fetch.post).toBeCalledWith('/user/sign')) expect(getByText('f')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-warning') }) @@ -112,7 +108,7 @@ describe('sign button', () => { it('sign is allowed', async () => { fetch.get.mockResolvedValue(scoreInfo()) const { getByRole } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) const button = getByRole('button') expect(button).toBeEnabled() @@ -122,7 +118,7 @@ describe('sign button', () => { it('sign is allowed if last sign is yesterday', async () => { fetch.get.mockResolvedValue(scoreInfo({ signAfterZero: true })) const { getByRole } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(getByRole('button')).toBeEnabled() }) @@ -131,7 +127,7 @@ describe('sign button', () => { scoreInfo({ signAfterZero: true }, { lastSignAt: Date.now() }), ) const { getByRole } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(getByRole('button')).toBeDisabled() }) @@ -139,7 +135,7 @@ describe('sign button', () => { fetch.get.mockResolvedValue(scoreInfo({}, { lastSignAt: Date.now() })) const { getByRole } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) const button = getByRole('button') expect(button).toBeDisabled() @@ -152,7 +148,7 @@ describe('sign button', () => { ) const { getByRole } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) const button = getByRole('button') expect(button).toBeDisabled() diff --git a/resources/assets/tests/views/user/OAuth.test.tsx b/resources/assets/tests/views/user/OAuth.test.tsx index 055c7ad0..6bda0e72 100644 --- a/resources/assets/tests/views/user/OAuth.test.tsx +++ b/resources/assets/tests/views/user/OAuth.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import * as fetch from '@/scripts/net' import { t } from '@/scripts/i18n' import OAuth from '@/views/user/OAuth' @@ -28,7 +28,7 @@ describe('create app', () => { it('succeeded', async () => { fetch.post.mockResolvedValue(fixture) const { getByLabelText, getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.oauth.create'))) fireEvent.input(getByLabelText(t('user.oauth.name')), { @@ -38,12 +38,12 @@ describe('create app', () => { target: { value: 'http://url.test/' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/oauth/clients', { - name: 'My App', - redirect: 'http://url.test/', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/oauth/clients', { + name: 'My App', + redirect: 'http://url.test/', + }), + ) expect(queryByText(fixture.id.toString())).toBeInTheDocument() expect(queryByText(fixture.name)).toBeInTheDocument() expect(queryByText(fixture.redirect)).toBeInTheDocument() @@ -55,7 +55,7 @@ describe('create app', () => { const { getByLabelText, getByText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.oauth.create'))) fireEvent.input(getByLabelText(t('user.oauth.name')), { @@ -65,12 +65,12 @@ describe('create app', () => { target: { value: 'http://url.test/' }, }) fireEvent.click(getByText(t('general.confirm'))) - - await wait() - expect(fetch.post).toBeCalledWith('/oauth/clients', { - name: 'My App', - redirect: 'http://url.test/', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/oauth/clients', { + name: 'My App', + redirect: 'http://url.test/', + }), + ) expect(queryByText(fixture.name)).not.toBeInTheDocument() expect(queryByText(fixture.redirect)).not.toBeInTheDocument() expect(queryByText('exception')).toBeInTheDocument() @@ -79,7 +79,7 @@ describe('create app', () => { it('cancel dialog', async () => { const { getByLabelText, getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.oauth.create'))) fireEvent.input(getByLabelText(t('user.oauth.name')), { @@ -90,8 +90,7 @@ describe('create app', () => { }) fireEvent.click(getByText(t('general.cancel'))) - await wait() - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) fireEvent.click(getByText(t('user.oauth.create'))) expect(getByLabelText(t('user.oauth.name'))).toHaveValue('') @@ -111,19 +110,19 @@ describe('edit app', () => { const { getByTitle, getByText, getByDisplayValue, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.oauth.modifyName'))) fireEvent.input(getByDisplayValue(fixture.name), { target: { value: 'new name' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { - ...fixture, - name: 'new name', - }) + await waitFor(() => + expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { + ...fixture, + name: 'new name', + }), + ) expect(queryByText('new name')).toBeInTheDocument() }) @@ -137,19 +136,19 @@ describe('edit app', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.oauth.modifyName'))) fireEvent.input(getByDisplayValue(fixture.name), { target: { value: 'new name' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { - ...fixture, - name: 'new name', - }) + await waitFor(() => + expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { + ...fixture, + name: 'new name', + }), + ) expect(queryByText(fixture.name)).toBeInTheDocument() expect(queryByText('exception')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') @@ -157,13 +156,11 @@ describe('edit app', () => { it('cancel dialog', async () => { const { getByTitle, getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.oauth.modifyName'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.put).not.toBeCalled() + await waitFor(() => expect(fetch.put).not.toBeCalled()) expect(queryByText(fixture.name)).toBeInTheDocument() }) }) @@ -175,19 +172,19 @@ describe('edit app', () => { const { getByTitle, getByDisplayValue, getByText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.oauth.modifyUrl'))) fireEvent.input(getByDisplayValue(fixture.redirect), { target: { value: 'http://new.test/' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { - ...fixture, - redirect: 'http://new.test/', - }) + await waitFor(() => + expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { + ...fixture, + redirect: 'http://new.test/', + }), + ) expect(queryByText('http://new.test/')).toBeInTheDocument() }) @@ -201,19 +198,19 @@ describe('edit app', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.oauth.modifyUrl'))) fireEvent.input(getByDisplayValue(fixture.redirect), { target: { value: 'http://new.test/' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { - ...fixture, - redirect: 'http://new.test/', - }) + await waitFor(() => + expect(fetch.put).toBeCalledWith(`/oauth/clients/${fixture.id}`, { + ...fixture, + redirect: 'http://new.test/', + }), + ) expect(queryByText(fixture.redirect)).toBeInTheDocument() expect(queryByText('exception')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') @@ -221,13 +218,11 @@ describe('edit app', () => { it('cancel dialog', async () => { const { getByTitle, getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.oauth.modifyUrl'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.put).not.toBeCalled() + await waitFor(() => expect(fetch.put).not.toBeCalled()) expect(queryByText(fixture.redirect)).toBeInTheDocument() }) }) @@ -240,26 +235,24 @@ describe('delete app', () => { it('succeeded', async () => { const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('report.delete'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.del).toBeCalledWith(`/oauth/clients/${fixture.id}`) + await waitFor(() => + expect(fetch.del).toBeCalledWith(`/oauth/clients/${fixture.id}`), + ) expect(queryByText(fixture.name)).not.toBeInTheDocument() expect(queryByText(fixture.redirect)).not.toBeInTheDocument() }) it('cancel dialog', async () => { const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('report.delete'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.del).not.toBeCalled()) expect(queryByText(fixture.name)).toBeInTheDocument() expect(queryByText(fixture.redirect)).toBeInTheDocument() }) diff --git a/resources/assets/tests/views/user/Players.test.tsx b/resources/assets/tests/views/user/Players.test.tsx index e7f0627d..a4811a16 100644 --- a/resources/assets/tests/views/user/Players.test.tsx +++ b/resources/assets/tests/views/user/Players.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import { Player } from '@/scripts/types' @@ -42,7 +42,7 @@ test('search players', async () => { fetch.get.mockResolvedValue({ data: [fixture, fixture2] }) const { getByPlaceholderText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.input(getByPlaceholderText(t('user.typeToSearch')), { target: { value: 'k' }, @@ -56,7 +56,7 @@ describe('select player automatically', () => { it('only one player', async () => { fetch.get.mockResolvedValue({ data: [fixture] }) render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(fetch.get).toBeCalledWith(`/skinlib/info/${fixture.tid_skin}`) expect(fetch.get).toBeCalledWith(`/skinlib/info/${fixture.tid_cape}`) @@ -66,7 +66,7 @@ describe('select player automatically', () => { const fixture2: Player = { pid: 2, name: 'reina', tid_skin: 3, tid_cape: 4 } fetch.get.mockResolvedValue({ data: [fixture, fixture2] }) render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) expect(fetch.get).not.toBeCalledWith(`/skinlib/info/${fixture.tid_skin}`) expect(fetch.get).not.toBeCalledWith(`/skinlib/info/${fixture.tid_cape}`) @@ -81,7 +81,7 @@ describe('2d preview', () => { .mockResolvedValueOnce({ data: { hash: 'b', type: 'cape' } }) const { getByAltText, getByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.switch2dPreview'))) @@ -103,7 +103,7 @@ describe('2d preview', () => { const { getByAltText, queryByAltText, getByText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.switch2dPreview'))) @@ -123,7 +123,7 @@ describe('2d preview', () => { const { getByAltText, queryByAltText, getByText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.switch2dPreview'))) @@ -143,7 +143,7 @@ describe('create player', () => { it('alert if score is enough', async () => { const { getByRole, getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.add-player'))) @@ -156,7 +156,7 @@ describe('create player', () => { it('alert if lack of score', async () => { blessing.extra.score = 0 const { getByRole, getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.add-player'))) @@ -172,18 +172,18 @@ describe('create player', () => { const { getByText, getByLabelText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.add-player'))) fireEvent.input(getByLabelText(t('general.player.player-name')), { target: { value: fixture.name }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/player/add', { - name: fixture.name, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/player/add', { + name: fixture.name, + }), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText(fixture.pid.toString())).toBeInTheDocument() @@ -196,18 +196,18 @@ describe('create player', () => { const { getByText, getByLabelText, getByRole, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.add-player'))) fireEvent.input(getByLabelText(t('general.player.player-name')), { target: { value: fixture.name }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/player/add', { - name: fixture.name, - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/player/add', { + name: fixture.name, + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText(fixture.name)).not.toBeInTheDocument() @@ -215,22 +215,20 @@ describe('create player', () => { it('cancelled', async () => { const { getByText, getByLabelText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.add-player'))) fireEvent.input(getByLabelText(t('general.player.player-name')), { target: { value: fixture.name }, }) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(fixture.name)).not.toBeInTheDocument() }) it('clear form on close', async () => { const { getByText, getByLabelText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.add-player'))) fireEvent.input(getByLabelText(t('general.player.player-name')), { @@ -258,18 +256,18 @@ describe('edit player name', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.player.edit-pname'))) fireEvent.input(getByDisplayValue(fixture.name), { target: { value: 'reina' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/player/rename/${fixture.pid}`, { - name: 'reina', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith(`/user/player/rename/${fixture.pid}`, { + name: 'reina', + }), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText('reina')).toBeInTheDocument() @@ -279,16 +277,14 @@ describe('edit player name', () => { const { getByText, getByTitle, getByDisplayValue, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.player.edit-pname'))) fireEvent.input(getByDisplayValue(fixture.name), { target: { value: '' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(t('user.emptyPlayerName'))).toBeInTheDocument() fireEvent.click(getByText(t('general.cancel'))) @@ -304,18 +300,18 @@ describe('edit player name', () => { getByRole, queryByText, } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.player.edit-pname'))) fireEvent.input(getByDisplayValue(fixture.name), { target: { value: 'reina' }, }) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/player/rename/${fixture.pid}`, { - name: 'reina', - }) + await waitFor(() => + expect(fetch.post).toBeCalledWith(`/user/player/rename/${fixture.pid}`, { + name: 'reina', + }), + ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText(fixture.name)).toBeInTheDocument() @@ -325,16 +321,14 @@ describe('edit player name', () => { const { getByText, getByTitle, getByDisplayValue, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByTitle(t('user.player.edit-pname'))) fireEvent.input(getByDisplayValue(fixture.name), { target: { value: 'reina' }, }) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(fixture.name)).toBeInTheDocument() }) }) @@ -350,19 +344,19 @@ describe('reset texture', () => { const { getByText, getByRole, getByLabelText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-texture'))) fireEvent.click(getByLabelText(t('general.skin'))) fireEvent.click(getByLabelText(t('general.cape'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith( - `/user/player/texture/clear/${fixture.pid}`, - { - type: ['skin', 'cape'], - }, + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/player/texture/clear/${fixture.pid}`, + { + type: ['skin', 'cape'], + }, + ), ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') @@ -374,18 +368,18 @@ describe('reset texture', () => { const { getByText, getByRole, getByLabelText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-texture'))) fireEvent.click(getByLabelText(t('general.skin'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith( - `/user/player/texture/clear/${fixture.pid}`, - { - type: ['skin'], - }, + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/player/texture/clear/${fixture.pid}`, + { + type: ['skin'], + }, + ), ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') @@ -397,18 +391,18 @@ describe('reset texture', () => { const { getByText, getByRole, getByLabelText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-texture'))) fireEvent.click(getByLabelText(t('general.cape'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith( - `/user/player/texture/clear/${fixture.pid}`, - { - type: ['cape'], - }, + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/player/texture/clear/${fixture.pid}`, + { + type: ['cape'], + }, + ), ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') @@ -416,13 +410,11 @@ describe('reset texture', () => { it('select nothing', async () => { const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-texture'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(t('user.noClearChoice'))).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-warning') }) @@ -433,18 +425,18 @@ describe('reset texture', () => { const { getByText, getByRole, getByLabelText, queryByText } = render( , ) - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-texture'))) fireEvent.click(getByLabelText(t('general.skin'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith( - `/user/player/texture/clear/${fixture.pid}`, - { - type: ['skin'], - }, + await waitFor(() => + expect(fetch.post).toBeCalledWith( + `/user/player/texture/clear/${fixture.pid}`, + { + type: ['skin'], + }, + ), ) expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') @@ -452,14 +444,12 @@ describe('reset texture', () => { it('cancelled', async () => { const { getByText, getByLabelText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-texture'))) fireEvent.click(getByLabelText(t('general.skin'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) }) }) @@ -472,13 +462,13 @@ describe('delete player', () => { fetch.post.mockResolvedValue({ code: 0, message: 'success' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-player'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/player/delete/${fixture.pid}`) + await waitFor(() => + expect(fetch.post).toBeCalledWith(`/user/player/delete/${fixture.pid}`), + ) expect(getByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') expect(queryByText(fixture.name)).not.toBeInTheDocument() @@ -488,13 +478,13 @@ describe('delete player', () => { fetch.post.mockResolvedValue({ code: 1, message: 'failed' }) const { getByText, getByRole, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-player'))) fireEvent.click(getByText(t('general.confirm'))) - await wait() - - expect(fetch.post).toBeCalledWith(`/user/player/delete/${fixture.pid}`) + await waitFor(() => + expect(fetch.post).toBeCalledWith(`/user/player/delete/${fixture.pid}`), + ) expect(getByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') expect(queryByText(fixture.name)).toBeInTheDocument() @@ -502,13 +492,11 @@ describe('delete player', () => { it('cancelled', async () => { const { getByText, queryByText } = render() - await wait() + await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) fireEvent.click(getByText(t('user.player.delete-player'))) fireEvent.click(getByText(t('general.cancel'))) - await wait() - - expect(fetch.post).not.toBeCalled() + await waitFor(() => expect(fetch.post).not.toBeCalled()) expect(queryByText(fixture.name)).toBeInTheDocument() }) }) diff --git a/resources/assets/tests/views/widgets/EmailVerification.test.tsx b/resources/assets/tests/views/widgets/EmailVerification.test.tsx index cf8273c8..5e9eacc9 100644 --- a/resources/assets/tests/views/widgets/EmailVerification.test.tsx +++ b/resources/assets/tests/views/widgets/EmailVerification.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import EmailVerification from '@/views/widgets/EmailVerification' @@ -13,9 +13,9 @@ describe('send email', () => { const { getByText, getByRole, queryByText } = render() fireEvent.click(getByText(t('user.verification.resend'))) - await wait() - - expect(fetch.post).toBeCalledWith('/user/email-verification') + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/email-verification'), + ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') }) @@ -26,8 +26,9 @@ describe('send email', () => { const { getByText, getByRole, queryByText } = render() fireEvent.click(getByText(t('user.verification.resend'))) - await wait() - + await waitFor(() => + expect(fetch.post).toBeCalledWith('/user/email-verification'), + ) expect(fetch.post).toBeCalledWith('/user/email-verification') expect(queryByText('failed')).toBeInTheDocument() expect(getByRole('alert')).toHaveClass('alert-danger') diff --git a/resources/assets/tests/views/widgets/NotificationsList.test.tsx b/resources/assets/tests/views/widgets/NotificationsList.test.tsx index 62c50afd..9523abe1 100644 --- a/resources/assets/tests/views/widgets/NotificationsList.test.tsx +++ b/resources/assets/tests/views/widgets/NotificationsList.test.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { render, fireEvent, wait } from '@testing-library/react' +import { render, fireEvent, waitFor } from '@testing-library/react' import { t } from '@/scripts/i18n' import * as fetch from '@/scripts/net' import NotificationsList, { @@ -54,7 +54,7 @@ test('read notification', async () => { const { getByText, queryByText } = render() fireEvent.click(getByText('hi')) - await wait() + await waitFor(() => expect(fetch.get).toBeCalled()) expect(queryByText(fixture.title)).toBeInTheDocument() expect(queryByText(fixture.content)).toBeInTheDocument() diff --git a/yarn.lock b/yarn.lock index 834261a3..01d68710 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,6 +45,28 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.7.5": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" @@ -66,7 +88,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.4.4": +"@babel/generator@^7.4.4": version "7.4.4" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== @@ -87,6 +109,16 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" + integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== + dependencies: + "@babel/types" "^7.9.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" @@ -233,6 +265,19 @@ "@babel/types" "^7.8.6" lodash "^4.17.13" +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + "@babel/helper-optimise-call-expression@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" @@ -313,6 +358,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -341,6 +391,15 @@ "@babel/traverse" "^7.8.4" "@babel/types" "^7.8.3" +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + "@babel/highlight@^7.0.0", "@babel/highlight@^7.0.0-beta.44": version "7.0.0" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -359,11 +418,16 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": version "7.4.5" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== +"@babel/parser@^7.7.5", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": version "7.8.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" @@ -441,6 +505,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-bigint@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.0.tgz#3a6c1cd36af923db602df83c5aa72e08bb14353a" @@ -823,12 +894,20 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/runtime@^7.5.1", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.6": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" - integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== +"@babel/runtime-corejs3@^7.7.4": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz#26fe4aa77e9f1ecef9b776559bbb8e84d34284b7" + integrity sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA== dependencies: - regenerator-runtime "^0.13.2" + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.7.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + dependencies: + regenerator-runtime "^0.13.4" "@babel/runtime@^7.8.0": version "7.8.0" @@ -844,7 +923,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": +"@babel/template@^7.1.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== @@ -853,7 +932,7 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/template@^7.8.3", "@babel/template@^7.8.6": +"@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== @@ -862,7 +941,7 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": version "7.4.5" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== @@ -877,6 +956,21 @@ globals "^11.1.0" lodash "^4.17.11" +"@babel/traverse@^7.7.4", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" @@ -892,7 +986,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": version "7.4.4" resolved "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== @@ -919,6 +1013,20 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -979,14 +1087,20 @@ prop-types "^15.6.2" scheduler "^0.17.0" -"@jest/console@^24.7.1": - version "24.7.1" - resolved "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" - integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== dependencies: - "@jest/source-map" "^24.3.0" - chalk "^2.0.1" - slash "^2.0.0" + camelcase "^5.3.1" + find-up "^4.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== "@jest/console@^24.9.0": version "24.9.0" @@ -997,94 +1111,100 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/core@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" - integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== +"@jest/console@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.2.3.tgz#38ac19b916ff61457173799239472659e1a67c39" + integrity sha512-k+37B1aSvOt9tKHWbZZSOy1jdgzesB0bj96igCVUG1nAH1W5EoUfgc5EXbBVU08KSLvkVdWopLXaO3xfVGlxtQ== dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" + "@jest/source-map" "^25.2.1" + chalk "^3.0.0" + jest-util "^25.2.3" + slash "^3.0.0" + +"@jest/core@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.2.3.tgz#2fd37ce0e6ad845e058dcd8245f2745490df1bc0" + integrity sha512-Ifz3aEkGvZhwijLMmWa7sloZVEMdxpzjFv3CKHv3eRYRShTN8no6DmyvvxaZBjLalOlRalJ7HDgc733J48tSuw== + dependencies: + "@jest/console" "^25.2.3" + "@jest/reporters" "^25.2.3" + "@jest/test-result" "^25.2.3" + "@jest/transform" "^25.2.3" + "@jest/types" "^25.2.3" + ansi-escapes "^4.2.1" + chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.9.0" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-resolve-dependencies "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - jest-watcher "^24.9.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - realpath-native "^1.1.0" - rimraf "^2.5.4" - slash "^2.0.0" - strip-ansi "^5.0.0" + graceful-fs "^4.2.3" + jest-changed-files "^25.2.3" + jest-config "^25.2.3" + jest-haste-map "^25.2.3" + jest-message-util "^25.2.3" + jest-regex-util "^25.2.1" + jest-resolve "^25.2.3" + jest-resolve-dependencies "^25.2.3" + jest-runner "^25.2.3" + jest-runtime "^25.2.3" + jest-snapshot "^25.2.3" + jest-util "^25.2.3" + jest-validate "^25.2.3" + jest-watcher "^25.2.3" + micromatch "^4.0.2" + p-each-series "^2.1.0" + realpath-native "^2.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" -"@jest/environment@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== +"@jest/environment@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.2.3.tgz#32b3f216355b03e9449b93b62584c18934a2cc4a" + integrity sha512-zRypAMQnNo8rD0rCbI9+5xf+Lu+uvunKZNBcIWjb3lTATSomKbgYO+GYewGDYn7pf+30XCNBc6SH1rnBUN1ioA== dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" + "@jest/fake-timers" "^25.2.3" + "@jest/types" "^25.2.3" + jest-mock "^25.2.3" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== +"@jest/fake-timers@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.2.3.tgz#808a8a761be3baac719311f8bde1362bd1861e65" + integrity sha512-B6Qxm86fl613MV8egfvh1mRTMu23hMNdOUjzPhKl/4Nm5cceHz6nwLn0nP0sJXI/ue1vu71aLbtkgVBCgc2hYA== dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" + "@jest/types" "^25.2.3" + jest-message-util "^25.2.3" + jest-mock "^25.2.3" + jest-util "^25.2.3" + lolex "^5.0.0" -"@jest/reporters@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" - integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== +"@jest/reporters@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.2.3.tgz#824e922ea56686d0243c910559c36adacdd2081c" + integrity sha512-S0Zca5e7tTfGgxGRvBh6hktNdOBzqc6HthPzYHPRFYVW81SyzCqHTaNZydtDIVehb9s6NlyYZpcF/I2vco+lNw== dependencies: - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^25.2.3" + "@jest/test-result" "^25.2.3" + "@jest/transform" "^25.2.3" + "@jest/types" "^25.2.3" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.2.6" - jest-haste-map "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" - node-notifier "^5.4.2" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" - -"@jest/source-map@^24.3.0": - version "24.3.0" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" - integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.0" + jest-haste-map "^25.2.3" + jest-resolve "^25.2.3" + jest-util "^25.2.3" + jest-worker "^25.2.1" + slash "^3.0.0" source-map "^0.6.0" + string-length "^3.1.0" + terminal-link "^2.0.0" + v8-to-istanbul "^4.0.1" + optionalDependencies: + node-notifier "^6.0.0" "@jest/source-map@^24.9.0": version "24.9.0" @@ -1095,6 +1215,15 @@ graceful-fs "^4.1.15" source-map "^0.6.0" +"@jest/source-map@^25.2.1": + version "25.2.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.1.tgz#b62ecf8ae76170b08eff8859b56eb7576df34ab8" + integrity sha512-PgScGJm1U27+9Te/cxP4oUFqJ2PX6NhBL2a6unQ7yafCgs8k02c0LSyjSIx/ao0AwcAdCczfAPDf5lJ7zoB/7A== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.3" + source-map "^0.6.0" + "@jest/test-result@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" @@ -1104,37 +1233,48 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-sequencer@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" - integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== +"@jest/test-result@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.2.3.tgz#db6028427514702c739dda66528dfbcc7fb8cdf4" + integrity sha512-cNYidqERTcT+xqZZ5FPSvji7Bd2YYq9M/VJCEUmgTVRFZRPOPSu65crEzQJ4czcDChEJ9ovzZ65r3UBlajnh3w== dependencies: - "@jest/test-result" "^24.9.0" - jest-haste-map "^24.9.0" - jest-runner "^24.9.0" - jest-runtime "^24.9.0" + "@jest/console" "^25.2.3" + "@jest/transform" "^25.2.3" + "@jest/types" "^25.2.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== +"@jest/test-sequencer@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.2.3.tgz#1400e0e994904844567e6e33c87062cbdf1f3e99" + integrity sha512-trHwV/wCrxWyZyNyNBUQExsaHyBVQxJwH3butpEcR+KBJPfaTUxtpXaxfs38IXXAhH68J4kPZgAaRRfkFTLunA== + dependencies: + "@jest/test-result" "^25.2.3" + jest-haste-map "^25.2.3" + jest-runner "^25.2.3" + jest-runtime "^25.2.3" + +"@jest/transform@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.2.3.tgz#f090bdd91f54b867631a76959f2b2fc566534ffe" + integrity sha512-w1nfAuYP4OAiEDprFkE/2iwU86jL/hK3j1ylMcYOA3my5VOHqX0oeBcBxS2fUKWse2V4izuO2jqes0yNTDMlzw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" + "@jest/types" "^25.2.3" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.3" + jest-haste-map "^25.2.3" + jest-regex-util "^25.2.1" + jest-util "^25.2.3" + micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" + realpath-native "^2.0.0" + slash "^3.0.0" source-map "^0.6.1" - write-file-atomic "2.4.1" + write-file-atomic "^3.0.0" "@jest/types@^24.9.0": version "24.9.0" @@ -1145,57 +1285,67 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" +"@jest/types@^25.2.3": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.2.3.tgz#035c4fb94e2da472f359ff9a211915d59987f6b6" + integrity sha512-6oLQwO9mKif3Uph3RX5J1i3S7X7xtDHWBaaaoeKw8hOzV6YUd0qDcYcHZ6QXMHDIzSr7zzrEa51o2Ovlj6AtKQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + "@lgaitan/pace-progress@^1.0.7": version "1.0.7" resolved "https://registry.yarnpkg.com/@lgaitan/pace-progress/-/pace-progress-1.0.7.tgz#c96fbbd9fd4cf528feed34ea0c8f9d8b3e98f0dd" integrity sha1-yW+72f1M9Sj+7TTqDI+diz6Y8N0= -"@sheerun/mutationobserver-shim@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b" - integrity sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q== +"@sinonjs/commons@^1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" + integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== + dependencies: + type-detect "4.0.8" "@sweetalert2/theme-bootstrap-4@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@sweetalert2/theme-bootstrap-4/-/theme-bootstrap-4-2.2.1.tgz#a0e3496f2d5aa2993f8fe1c59dcec0673941cddb" integrity sha512-EzAc/HFO16wuZCmawdv0mxRknXtQ5XYmms8gHCcRBqVJsolwl0xKanH8wC2tf4O6dFLou6ZndNqii8ArQO66pA== -"@testing-library/dom@^6.11.0": - version "6.11.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.11.0.tgz#962a38f1a721fdb7c9e35e7579e33ff13a00eda4" - integrity sha512-Pkx9LMIGshyNbfmecjt18rrAp/ayMqGH674jYER0SXj0iG9xZc+zWRjk2Pg9JgPBDvwI//xGrI/oOQkAi4YEew== +"@testing-library/dom@^7.0.2": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.1.3.tgz#422073afb5ae9bdb910651ac4d51c9ed4382a2f9" + integrity sha512-wFMQdKrTwTTlTe6n0KN+KjOtgOV0viIyfr+f+7Csq+1pD0o+ho7FrjCjkNpx6NEsx8jHDtZ4WU3cGOuLc9LvQg== dependencies: - "@babel/runtime" "^7.6.2" - "@sheerun/mutationobserver-shim" "^0.3.2" - "@types/testing-library__dom" "^6.0.0" - aria-query "3.0.0" - pretty-format "^24.9.0" - wait-for-expect "^3.0.0" + "@babel/runtime" "^7.9.2" + "@types/testing-library__dom" "^7.0.0" + aria-query "^4.0.2" + dom-accessibility-api "^0.4.2" + pretty-format "^25.1.0" -"@testing-library/jest-dom@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.0.2.tgz#dbd06cc9a392347327597dfd633b9d7623da5c80" - integrity sha512-Pl3si4eH88+5wlVz6NjecLfeO7PjTbbgWKwVZXUtBfrGuJLjGdUUo+O92XRu/59wft8HAmwvXHeMWpqWTg2Uwg== +"@testing-library/jest-dom@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.3.0.tgz#2ae813b8b0eb69e8808f75d3af8efa3f0dc4d7ec" + integrity sha512-Cdhpc3BHL888X55qBNyra9eM0UG63LCm/FqCWTa1Ou/0MpsUbQTM9vW1NU6/jBQFoSLgkFfDG5XVpm2V0dOm/A== dependencies: - "@babel/runtime" "^7.5.1" - "@types/testing-library__jest-dom" "^5.0.0" - chalk "^2.4.1" - css "^2.2.3" + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.0.2" + chalk "^3.0.0" + css "^2.2.4" css.escape "^1.5.1" - jest-diff "^24.0.0" - jest-matcher-utils "^24.0.0" - lodash "^4.17.11" - pretty-format "^24.0.0" + jest-diff "^25.1.0" + jest-matcher-utils "^25.1.0" + lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react@^9.4.0": - version "9.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.4.0.tgz#b021ac8cb987c8dc54c6841875f745bf9b2e88e5" - integrity sha512-XdhDWkI4GktUPsz0AYyeQ8M9qS/JFie06kcSnUVcpgOwFjAu9vhwR83qBl+lw9yZWkbECjL8Hd+n5hH6C0oWqg== +"@testing-library/react@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.1.tgz#4f5e2a8836257c5bd3df640b21d7bea5a0d83ead" + integrity sha512-sMHWud2dcymOzq2AhEniICSijEwKeTiBX+K0y36FYNY7wH2t0SIP1o732Bf5dDY0jYoMC2hj2UJSVpZC/rDsWg== dependencies: - "@babel/runtime" "^7.7.6" - "@testing-library/dom" "^6.11.0" - "@types/testing-library__react" "^9.1.2" + "@babel/runtime" "^7.8.7" + "@testing-library/dom" "^7.0.2" + "@types/testing-library__react" "^9.1.3" "@ttskch/select2-bootstrap4-theme@^1.3.2": version "1.3.2" @@ -1253,6 +1403,11 @@ "@types/jquery" "*" popper.js "^1.14.1" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/echarts@^4.4.2": version "4.4.2" resolved "https://registry.yarnpkg.com/@types/echarts/-/echarts-4.4.2.tgz#88be60b9b87bc65414f22d4150834538d62ac602" @@ -1279,7 +1434,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.1" resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== @@ -1306,12 +1461,13 @@ dependencies: jest-diff "^24.3.0" -"@types/jest@^24.0.25": - version "24.0.25" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.25.tgz#2aba377824ce040114aa906ad2cac2c85351360f" - integrity sha512-hnP1WpjN4KbGEK4dLayul6lgtys6FPz0UfxMeMQCv0M+sTnzN3ConfiO72jHgLxl119guHgI8gLqDOrRLsyp2g== +"@types/jest@^25.1.4": + version "25.1.4" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760" + integrity sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw== dependencies: - jest-diff "^24.3.0" + jest-diff "^25.1.0" + pretty-format "^25.1.0" "@types/jquery@*": version "3.3.31" @@ -1366,6 +1522,11 @@ resolved "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz#e19436e7f8e9b4601005d73673b6dc4784ffcc2f" integrity sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w== +"@types/prettier@^1.19.0": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -1411,27 +1572,28 @@ resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.4.tgz#b4ffc7dc97b498c969b360a41eee247f82616370" integrity sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ== -"@types/testing-library__dom@*", "@types/testing-library__dom@^6.0.0": - version "6.11.1" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.11.1.tgz#6058a6ac391db679f7c60dbb27b81f0620de2dd9" - integrity sha512-ImChHtQqmjwraRLqBC2sgSQFtczeFvBmBcfhTYZn/3KwXbyD07LQykEQ0xJo7QHc1GbVvf7pRyGaIe6PkCdxEw== +"@types/testing-library__dom@*", "@types/testing-library__dom@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.0.0.tgz#c0fb7d1c2495a3d26f19342102142d47500f0319" + integrity sha512-1TEPWyqQ6IQ7R1hCegZmFSA3KrBQjdzJW7yC9ybpRcFst5XuPOqBGNr0mTAKbxwI/TrTyc1skeyLJrpcvAf93w== dependencies: - pretty-format "^24.3.0" + pretty-format "^25.1.0" -"@types/testing-library__jest-dom@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.0.tgz#db048883864126ae73ec043587238a06c3aaf837" - integrity sha512-Pm+2mvqs9sND247oMVJbu3QmPUqMzBuJbY5uHHYQdl9MXq5hwWkTbesw1sPIky52Y0sHksWAZnVvGLbdyFSyrA== +"@types/testing-library__jest-dom@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.2.tgz#89b782e0f187fe1e80d6375133da74182ba02065" + integrity sha512-dZP+/WHndgCSmdaImITy0KhjGAa9c0hlGGkzefbtrPFpnGEPZECDA0zyvfSp8RKhHECJJSKHFExjOwzo0rHyIA== dependencies: "@types/jest" "*" -"@types/testing-library__react@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.2.tgz#e33af9124c60a010fc03a34eff8f8a34a75c4351" - integrity sha512-CYaMqrswQ+cJACy268jsLAw355DZtPZGt3Jwmmotlcu8O/tkoXBI6AeZ84oZBJsIsesozPKzWzmv/0TIU+1E9Q== +"@types/testing-library__react@^9.1.3": + version "9.1.3" + resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.3.tgz#35eca61cc6ea923543796f16034882a1603d7302" + integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== dependencies: "@types/react-dom" "*" "@types/testing-library__dom" "*" + pretty-format "^25.1.0" "@types/tween.js@^17.2.0": version "17.2.0" @@ -1478,6 +1640,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^15.0.0": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" + integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + dependencies: + "@types/yargs-parser" "*" + "@types/zrender@*": version "4.0.0" resolved "https://registry.npmjs.org/@types/zrender/-/zrender-4.0.0.tgz#a6806f12ec4eccaaebd9b0d816f049aca6188fbd" @@ -1742,10 +1911,10 @@ acorn-dynamic-import@^4.0.0: resolved "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== -acorn-globals@^4.1.0: - version "4.3.2" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" - integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== +acorn-globals@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" @@ -1770,7 +1939,7 @@ acorn-walk@^6.0.1, acorn-walk@^6.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== -acorn@^5.0.0, acorn@^5.5.3: +acorn@^5.0.0: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== @@ -1908,10 +2077,6 @@ ansi-colors@^3.0.0: resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - ansi-escapes@^4.2.1: version "4.2.1" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228" @@ -1939,6 +2104,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1946,6 +2116,14 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1954,7 +2132,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: +anymatch@^3.0.3, anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== @@ -1982,13 +2160,13 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -aria-query@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= +aria-query@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.0.2.tgz#250687b4ccde1ab86d127da0432ae3552fc7b145" + integrity sha512-S1G1V790fTaigUSM/Gd0NngzEfiMy9uTUfMyHhKhVyy4cH5O/eTuR01ydhGL0z4Za1PXFTRGH3qL8VhUQuEO5w== dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" + "@babel/runtime" "^7.7.4" + "@babel/runtime-corejs3" "^7.7.4" arr-diff@^4.0.0: version "4.0.0" @@ -2085,11 +2263,6 @@ ast-transform@0.0.0: esprima "~1.0.4" through "~2.3.4" -ast-types-flow@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - ast-types@^0.7.0: version "0.7.8" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.7.8.tgz#902d2e0d60d071bdcd46dc115e1809ed11c138a9" @@ -2150,18 +2323,18 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== +babel-jest@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.2.3.tgz#8f1c088b1954963e8a5384be2e219dae00d053f4" + integrity sha512-03JjvEwuDrEz/A45K8oggAv+Vqay0xcOdNTJxYFxiuZvB5vlHKo1iZg9Pi5vQTHhNCKpGLb7L/jvUUafyh9j7g== dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" + "@jest/transform" "^25.2.3" + "@jest/types" "^25.2.3" "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.2.1" + chalk "^3.0.0" + slash "^3.0.0" babel-loader@^8.0.6: version "8.0.6" @@ -2180,29 +2353,32 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^5.1.0: - version "5.1.4" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" - integrity sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ== +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== +babel-plugin-jest-hoist@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.1.tgz#d0003a1f3d5caa281e1107fe03bbf16b799f9955" + integrity sha512-HysbCQfJhxLlyxDbKcB2ucGYV0LjqK4h6dBoI3RtFuOxTiTWK6XGZMsHb0tGh8iJdV4hC6Z2GCHzVvDeh9i0lQ== dependencies: "@types/babel__traverse" "^7.0.6" -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== +babel-preset-jest@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.2.1.tgz#4ccd0e577f69aa11b71806edfe8b25a5c3ac93a2" + integrity sha512-zXHJBM5iR8oEO4cvdF83AQqqJf3tJrXy3x8nfu2Nlqvn4cneg4Ca8M7cQvC5S9BzDDy1O0tZ9iXru9J6E3ym+A== dependencies: + "@babel/plugin-syntax-bigint" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" + babel-plugin-jest-hoist "^25.2.1" babel-runtime@^6.11.6: version "6.26.0" @@ -2707,6 +2883,14 @@ chalk@^2.1.0, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2837,6 +3021,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -2876,6 +3069,11 @@ code-point-at@^1.0.0: resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collect-v8-coverage@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" + integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2891,12 +3089,19 @@ color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -2924,12 +3129,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^2.20.0, commander@~2.20.0: +commander@^2.20.0: version "2.20.0" resolved "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== @@ -3032,7 +3232,7 @@ convert-source-map@^1.1.0, convert-source-map@^1.4.0: dependencies: safe-buffer "~5.1.1" -convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -3078,6 +3278,11 @@ core-js-compat@^3.6.2: browserslist "^4.8.3" semver "7.0.0" +core-js-pure@^3.0.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" + integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== + core-js@^2.4.0: version "2.6.9" resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" @@ -3149,6 +3354,15 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -3255,7 +3469,7 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -css@^2.0.0, css@^2.2.3: +css@^2.0.0, css@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== @@ -3359,17 +3573,22 @@ csso@^3.5.1: dependencies: css-tree "1.0.0-alpha.29" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.6" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" - integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== +cssom@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -cssstyle@^1.0.0: - version "1.2.2" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077" - integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow== +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.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" + integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== dependencies: - cssom "0.3.x" + cssom "~0.3.6" csstype@^2.2.0: version "2.6.8" @@ -3396,9 +3615,9 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0: +data-urls@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: abab "^2.0.0" @@ -3701,6 +3920,11 @@ deep-is@~0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -3789,10 +4013,10 @@ detect-libc@^1.0.2: resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: version "2.0.4" @@ -3814,6 +4038,11 @@ diff-sequences@^24.9.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== +diff-sequences@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.1.tgz#fcfe8aa07dd9b0c648396a478dabca8e76c6ab27" + integrity sha512-foe7dXnGlSh3jR1ovJmdv+77VQj98eKCHHwJPbZ2eEf0fHwKbkZicpPxEch9smZ+n2dnF6QFwkOQdLq9hpeJUg== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3849,6 +4078,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-accessibility-api@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.3.tgz#93ca9002eb222fd5a343b6e5e6b9cf5929411c4c" + integrity sha512-JZ8iPuEHDQzq6q0k7PKMGbrIdsgBB7TRrtVOUm4nSMCExlg5qQG4KXWTH2k90yggjM4tTumRGwTKJSldMzKyLA== + dom-event-types@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae" @@ -4154,18 +4388,6 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" -escodegen@^1.9.1: - version "1.11.1" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" - integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - escodegen@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.2.0.tgz#09de7967791cc958b7f89a2ddb6d23451af327e1" @@ -4415,6 +4637,22 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -4440,7 +4678,7 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^24.1.0, expect@^24.9.0: +expect@^24.1.0: version "24.9.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== @@ -4452,6 +4690,18 @@ expect@^24.1.0, expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" +expect@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.2.3.tgz#ee714f82bf33c43466fcef139ace0a57b3d0aa48" + integrity sha512-kil4jFRFAK2ySyCyXPqYrphc3EiiKKFd9BthrkKAyHcqr1B84xFTuj5kO8zL+eHRRjT2jQsOPExO0+1Q/fuUXg== + dependencies: + "@jest/types" "^25.2.3" + ansi-styles "^4.0.0" + jest-get-type "^25.2.1" + jest-matcher-utils "^25.2.3" + jest-message-util "^25.2.3" + jest-regex-util "^25.2.1" + express@^4.17.1: version "4.17.1" resolved "https://registry.npmjs.org/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -4698,9 +4948,9 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -4869,7 +5119,7 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -fsevents@~2.1.2: +fsevents@^2.1.2, fsevents@~2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== @@ -4923,6 +5173,13 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -5057,6 +5314,11 @@ graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" +graceful-fs@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + growly@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -5067,25 +5329,14 @@ handle-thing@^2.0.0: resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: +har-validator@~5.1.3: version "5.1.3" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: ajv "^6.5.5" @@ -5096,6 +5347,11 @@ has-flag@^3.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" @@ -5196,11 +5452,6 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== - hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -5238,6 +5489,11 @@ html-entities@^1.2.1: resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -5313,6 +5569,11 @@ https-browserify@^1.0.0: resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + icheck-bootstrap@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/icheck-bootstrap/-/icheck-bootstrap-3.0.1.tgz#60c9c9a71524e1d9dd5bd05167a62fef05cc3a1b" @@ -5407,6 +5668,14 @@ import-local@2.0.0, import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -5775,6 +6044,11 @@ is-stream@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-svg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" @@ -5789,9 +6063,9 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.0" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-windows@^1.0.1, is-windows@^1.0.2: @@ -5804,6 +6078,11 @@ is-wsl@^1.1.0: resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" + integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -5836,103 +6115,103 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== +istanbul-lib-instrument@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" + integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" + "@babel/core" "^7.7.5" + "@babel/parser" "^7.7.5" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== +istanbul-reports@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.1.tgz#1343217244ad637e0c3b18e7f6b746941a9b5e9a" + integrity sha512-Vm9xwCiQ8t2cNNnckyeAV0UdxKpcQUz4nMxsBvIu8n2kmPSiyb5uaF/8LpmKr+yqL/MdOXaX2Nmdo4Qyxium9Q== dependencies: - handlebars "^4.1.2" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -jest-changed-files@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" - integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== +jest-changed-files@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.2.3.tgz#ad19deef9e47ba37efb432d2c9a67dfd97cc78af" + integrity sha512-EFxy94dvvbqRB36ezIPLKJ4fDIC+jAdNs8i8uTwFpaXd6H3LVc3ova1lNS4ZPWk09OCR2vq5kSdSQgar7zMORg== dependencies: - "@jest/types" "^24.9.0" - execa "^1.0.0" - throat "^4.0.0" + "@jest/types" "^25.2.3" + execa "^3.2.0" + throat "^5.0.0" -jest-cli@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" - integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== +jest-cli@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.2.3.tgz#47e17240ce6d8ce824ca1a01468ea8824ec6b139" + integrity sha512-T7G0TOkFj0wr33ki5xoq3bxkKC+liwJfjV9SmYIKBozwh91W4YjL1o1dgVCUTB1+sKJa/DiAY0p+eXYE6v2RGw== dependencies: - "@jest/core" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/core" "^25.2.3" + "@jest/test-result" "^25.2.3" + "@jest/types" "^25.2.3" + chalk "^3.0.0" exit "^0.1.2" - import-local "^2.0.0" + import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" + jest-config "^25.2.3" + jest-util "^25.2.3" + jest-validate "^25.2.3" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^13.3.0" + realpath-native "^2.0.0" + yargs "^15.3.1" -jest-config@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" - integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== +jest-config@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.2.3.tgz#c304e91e2ba3763c04b38eafc26d30e5c41b48e8" + integrity sha512-UpTNxN8DgmLLCXFizGuvwIw+ZAPB0T3jbKaFEkzJdGqhSsQrVrk1lxhZNamaVIpWirM2ptYmqwUzvoobGCEkiQ== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.9.0" - "@jest/types" "^24.9.0" - babel-jest "^24.9.0" - chalk "^2.0.1" + "@jest/test-sequencer" "^25.2.3" + "@jest/types" "^25.2.3" + babel-jest "^25.2.3" + chalk "^3.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^24.9.0" - jest-environment-node "^24.9.0" - jest-get-type "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - micromatch "^3.1.10" - pretty-format "^24.9.0" - realpath-native "^1.1.0" + jest-environment-jsdom "^25.2.3" + jest-environment-node "^25.2.3" + jest-get-type "^25.2.1" + jest-jasmine2 "^25.2.3" + jest-regex-util "^25.2.1" + jest-resolve "^25.2.3" + jest-util "^25.2.3" + jest-validate "^25.2.3" + micromatch "^4.0.2" + pretty-format "^25.2.3" + realpath-native "^2.0.0" -jest-diff@^24.0.0, jest-diff@^24.3.0, jest-diff@^24.9.0: +jest-diff@^24.3.0, jest-diff@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== @@ -5942,51 +6221,62 @@ jest-diff@^24.0.0, jest-diff@^24.3.0, jest-diff@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-docblock@^24.3.0: - version "24.3.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" - integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== +jest-diff@^25.1.0, jest-diff@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.2.3.tgz#54d601a0a754ef26e808a8c8dbadd278c215aa3f" + integrity sha512-VtZ6LAQtaQpFsmEzps15dQc5ELbJxy4L2DOSo2Ev411TUEtnJPkAMD7JneVypeMJQ1y3hgxN9Ao13n15FAnavg== dependencies: - detect-newline "^2.1.0" + chalk "^3.0.0" + diff-sequences "^25.2.1" + jest-get-type "^25.2.1" + pretty-format "^25.2.3" -jest-each@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" - integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== +jest-docblock@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.2.3.tgz#ac45280c43d59e7139f9fbe5896c6e0320c01ebb" + integrity sha512-d3/tmjLLrH5fpRGmIm3oFa3vOaD/IjPxtXVOrfujpfJ9y1tCDB1x/tvunmdOVAyF03/xeMwburl6ITbiQT1mVA== dependencies: - "@jest/types" "^24.9.0" - chalk "^2.0.1" - jest-get-type "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" + detect-newline "^3.0.0" -jest-environment-jsdom@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" - integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== +jest-each@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.2.3.tgz#64067ba1508ebbd07e9b126c173ab371e8e6309d" + integrity sha512-RTlmCjsBDK2c9T5oO4MqccA3/5Y8BUtiEy7OOQik1iyCgdnNdHbI0pNEpyapZPBG0nlvZ4mIu7aY6zNUvLraAQ== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" - jsdom "^11.5.1" + "@jest/types" "^25.2.3" + chalk "^3.0.0" + jest-get-type "^25.2.1" + jest-util "^25.2.3" + pretty-format "^25.2.3" -jest-environment-node@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" - integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== +jest-environment-jsdom@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.2.3.tgz#f790f87c24878b219d1745f68343380c2d79ab01" + integrity sha512-TLg7nizxIYJafz6tOBAVSmO5Ekswf6Cf3Soseov+mgonXfdYi1I0OZlHlZMJb2fGyXem2ndYFCLrMkwcWPKAnQ== dependencies: - "@jest/environment" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - jest-util "^24.9.0" + "@jest/environment" "^25.2.3" + "@jest/fake-timers" "^25.2.3" + "@jest/types" "^25.2.3" + jest-mock "^25.2.3" + jest-util "^25.2.3" + jsdom "^15.2.1" -jest-extended@^0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-0.11.2.tgz#924f4a6b4c946133faf9ec8fba865de9790f4116" - integrity sha512-gwNMXrAPN0IY5L7VXWfSlC2aGo0KHIsGGcW+lTHYpedt5SJksEvBgMxs29iNikiNOz+cqAZY1s/+kYK0jlj4Jw== +jest-environment-node@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.2.3.tgz#e50a7e84bf7c7555216aa41aea1e48f53773318f" + integrity sha512-Tu/wlGXfoLtBR4Ym+isz58z3TJkMYX4VnFTkrsxaTGYAxNLN7ArCwL51Ki0WrMd89v+pbCLDj/hDjrb4a2sOrw== + dependencies: + "@jest/environment" "^25.2.3" + "@jest/fake-timers" "^25.2.3" + "@jest/types" "^25.2.3" + jest-mock "^25.2.3" + jest-util "^25.2.3" + semver "^6.3.0" + +jest-extended@^0.11.5: + version "0.11.5" + resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-0.11.5.tgz#f063b3f1eaadad8d7c13a01f0dfe0f538d498ccf" + integrity sha512-3RsdFpLWKScpsLD6hJuyr/tV5iFOrw7v6YjA3tPdda9sJwoHwcMROws5gwiIZfcwhHlJRwFJB2OUvGmF3evV/Q== dependencies: expect "^24.1.0" jest-get-type "^22.4.3" @@ -6001,54 +6291,60 @@ jest-get-type@^24.9.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== +jest-get-type@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.1.tgz#6c83de603c41b1627e6964da2f5454e6aa3c13a6" + integrity sha512-EYjTiqcDTCRJDcSNKbLTwn/LcDPEE7ITk8yRMNAOjEsN6yp+Uu+V1gx4djwnuj/DvWg0YGmqaBqPVGsPxlvE7w== + +jest-haste-map@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.2.3.tgz#2649392b5af191f0167a27bfb62e5d96d7eaaade" + integrity sha512-pAP22OHtPr4qgZlJJFks2LLgoQUr4XtM1a+F5UaPIZNiCRnePA0hM3L7aiJ0gzwiNIYwMTfKRwG/S1L28J3A3A== dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" + "@jest/types" "^25.2.3" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" + graceful-fs "^4.2.3" + jest-serializer "^25.2.1" + jest-util "^25.2.3" + jest-worker "^25.2.1" + micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" + which "^2.0.2" optionalDependencies: - fsevents "^1.2.7" + fsevents "^2.1.2" -jest-jasmine2@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" - integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== +jest-jasmine2@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.2.3.tgz#a824c5dbe383c63d243aab5e64cc85ab65f87598" + integrity sha512-x9PEGPFdnkSwJj1UG4QxG9JxFdyP8fuJ/UfKXd/eSpK8w9x7MP3VaQDuPQF0UQhCT0YeOITEPkQyqS+ptt0suA== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" + "@jest/environment" "^25.2.3" + "@jest/source-map" "^25.2.1" + "@jest/test-result" "^25.2.3" + "@jest/types" "^25.2.3" + chalk "^3.0.0" co "^4.6.0" - expect "^24.9.0" + expect "^25.2.3" is-generator-fn "^2.0.0" - jest-each "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-runtime "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - pretty-format "^24.9.0" - throat "^4.0.0" + jest-each "^25.2.3" + jest-matcher-utils "^25.2.3" + jest-message-util "^25.2.3" + jest-runtime "^25.2.3" + jest-snapshot "^25.2.3" + jest-util "^25.2.3" + pretty-format "^25.2.3" + throat "^5.0.0" -jest-leak-detector@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" - integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== +jest-leak-detector@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.2.3.tgz#4cf39f137925e0061c04c24ca65cae36465f0238" + integrity sha512-yblCMPE7NJKl7778Cf/73yyFWAas5St0iiEBwq7RDyaz6Xd4WPFnPz2j7yDb/Qce71A1IbDoLADlcwD8zT74Aw== dependencies: - jest-get-type "^24.9.0" - pretty-format "^24.9.0" + jest-get-type "^25.2.1" + pretty-format "^25.2.3" jest-matcher-utils@^22.0.0: version "22.4.3" @@ -6058,7 +6354,7 @@ jest-matcher-utils@^22.0.0: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: +jest-matcher-utils@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== @@ -6068,6 +6364,16 @@ jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" +jest-matcher-utils@^25.1.0, jest-matcher-utils@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.2.3.tgz#59285bd6d6c810debc9caa585ed985e46a3f28fd" + integrity sha512-ZmiXiwQRVM9MoKjGMP5YsGGk2Th5ncyRxfXKz5AKsmU8m43kgNZirckVzaP61MlSa9LKmXbevdYqVp1ZKAw2Rw== + dependencies: + chalk "^3.0.0" + jest-diff "^25.2.3" + jest-get-type "^25.2.1" + pretty-format "^25.2.3" + jest-message-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" @@ -6082,192 +6388,194 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== +jest-message-util@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.2.3.tgz#a911c4e3af06df851cc6065d9a3119fd2a3aa240" + integrity sha512-DcyDmdO5LVIeS0ngRvd7rk701XL60dAakUeQJ1tQRby27fyLYXD+V0nqVaC194W7fIlohjVQOZPHmKXIjn+Byw== dependencies: - "@jest/types" "^24.9.0" + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^25.2.3" + "@jest/types" "^25.2.3" + "@types/stack-utils" "^1.0.1" + chalk "^3.0.0" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^1.0.1" + +jest-mock@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.2.3.tgz#b37a581f59d61bd91db27a99bf7eb8b3e5e993d5" + integrity sha512-xlf+pyY0j47zoCs8zGGOGfWyxxLximE8YFOfEK8s4FruR8DtM/UjNj61um+iDuMAFEBDe1bhCXkqiKoCmWjJzg== + dependencies: + "@jest/types" "^25.2.3" jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-regex-util@^24.3.0: - version "24.3.0" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" - integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== - jest-regex-util@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== -jest-resolve-dependencies@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" - integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== - dependencies: - "@jest/types" "^24.9.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.9.0" +jest-regex-util@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.1.tgz#db64b0d15cd3642c93b7b9627801d7c518600584" + integrity sha512-wroFVJw62LdqTdkL508ZLV82FrJJWVJMIuYG7q4Uunl1WAPTf4ftPKrqqfec4SvOIlvRZUdEX2TFpWR356YG/w== -jest-resolve@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" - integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== +jest-resolve-dependencies@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.2.3.tgz#cd4d9d068d5238dfbdfa45690f6e902b6413c2da" + integrity sha512-mcWlvjXLlNzgdE9EQxHuaeWICNxozanim87EfyvPwTY0ryWusFZbgF6F8u3E0syJ4FFSooEm0lQ6fgYcnPGAFw== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^25.2.3" + jest-regex-util "^25.2.1" + jest-snapshot "^25.2.3" + +jest-resolve@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.2.3.tgz#ababeaf2bb948cb6d2dea8453759116da0fb7842" + integrity sha512-1vZMsvM/DBH258PnpUNSXIgtzpYz+vCVCj9+fcy4akZl4oKbD+9hZSlfe9RIDpU0Fc28ozHQrmwX3EqFRRIHGg== + dependencies: + "@jest/types" "^25.2.3" browser-resolve "^1.11.3" - chalk "^2.0.1" + chalk "^3.0.0" jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + realpath-native "^2.0.0" + resolve "^1.15.1" -jest-runner@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" - integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== +jest-runner@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.2.3.tgz#88fb448a46cf4ee9194a3e3cf0adbc122e195adb" + integrity sha512-E+u2Zm2TmtTOFEbKs5jllLiV2fwiX77cYc08RdyYZNe/s06wQT3P47aV6a8Rv61L7E2Is7OmozLd0KI/DITRpg== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - chalk "^2.4.2" + "@jest/console" "^25.2.3" + "@jest/environment" "^25.2.3" + "@jest/test-result" "^25.2.3" + "@jest/types" "^25.2.3" + chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.9.0" - jest-jasmine2 "^24.9.0" - jest-leak-detector "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - jest-runtime "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.6.0" + graceful-fs "^4.2.3" + jest-config "^25.2.3" + jest-docblock "^25.2.3" + jest-haste-map "^25.2.3" + jest-jasmine2 "^25.2.3" + jest-leak-detector "^25.2.3" + jest-message-util "^25.2.3" + jest-resolve "^25.2.3" + jest-runtime "^25.2.3" + jest-util "^25.2.3" + jest-worker "^25.2.1" source-map-support "^0.5.6" - throat "^4.0.0" + throat "^5.0.0" -jest-runtime@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" - integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== +jest-runtime@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.2.3.tgz#1f0e9ba878a66538c3e9d58be97a6a12c877ed13" + integrity sha512-PZRFeUVF08N24v2G73SDF0b0VpLG7cRNOJ3ggj5TnArBVHkkrWzM3z7txB9OupWu7OO8bH/jFogk6sSjnHLFXQ== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.9.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - chalk "^2.0.1" + "@jest/console" "^25.2.3" + "@jest/environment" "^25.2.3" + "@jest/source-map" "^25.2.1" + "@jest/test-result" "^25.2.3" + "@jest/transform" "^25.2.3" + "@jest/types" "^25.2.3" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.9.0" - jest-haste-map "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.9.0" - jest-snapshot "^24.9.0" - jest-util "^24.9.0" - jest-validate "^24.9.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^13.3.0" + graceful-fs "^4.2.3" + jest-config "^25.2.3" + jest-haste-map "^25.2.3" + jest-message-util "^25.2.3" + jest-mock "^25.2.3" + jest-regex-util "^25.2.1" + jest-resolve "^25.2.3" + jest-snapshot "^25.2.3" + jest-util "^25.2.3" + jest-validate "^25.2.3" + realpath-native "^2.0.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.3.1" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== +jest-serializer@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.1.tgz#51727a5fc04256f461abe0fa024a022ba165877a" + integrity sha512-fibDi7M5ffx6c/P66IkvR4FKkjG5ldePAK1WlbNoaU4GZmIAkS9Le/frAwRUFEX0KdnisSPWf+b1RC5jU7EYJQ== -jest-snapshot@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" - integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== +jest-snapshot@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.2.3.tgz#2d432fcf9e7f1f7eb3e5012ffcce8035794b76ae" + integrity sha512-HlFVbE6vOZ541mtkwjuAe0rfx9EWhB+QXXneLNOP/s3LlHxGQtX7WFXY5OiH4CkAnCc6BpzLNYS9nfINNRb4Zg== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.9.0" - chalk "^2.0.1" - expect "^24.9.0" - jest-diff "^24.9.0" - jest-get-type "^24.9.0" - jest-matcher-utils "^24.9.0" - jest-message-util "^24.9.0" - jest-resolve "^24.9.0" - mkdirp "^0.5.1" + "@jest/types" "^25.2.3" + "@types/prettier" "^1.19.0" + chalk "^3.0.0" + expect "^25.2.3" + jest-diff "^25.2.3" + jest-get-type "^25.2.1" + jest-matcher-utils "^25.2.3" + jest-message-util "^25.2.3" + jest-resolve "^25.2.3" + make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^24.9.0" - semver "^6.2.0" + pretty-format "^25.2.3" + semver "^6.3.0" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== +jest-util@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.2.3.tgz#0abf95a1d6b96f2de5a3ecd61b36c40a182dc256" + integrity sha512-7tWiMICVSo9lNoObFtqLt9Ezt5exdFlWs5fLe1G4XLY2lEbZc814cw9t4YHScqBkWMfzth8ASHKlYBxiX2rdCw== dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" + "@jest/types" "^25.2.3" + chalk "^3.0.0" is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + make-dir "^3.0.0" -jest-validate@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== +jest-validate@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.2.3.tgz#ecb0f093cf8ae71d15075fb48439b6f78f1fcb5a" + integrity sha512-GObn91jzU0B0Bv4cusAwjP6vnWy78hJUM8MOSz7keRfnac/ZhQWIsUjvk01IfeXNTemCwgR57EtdjQMzFZGREg== dependencies: - "@jest/types" "^24.9.0" + "@jest/types" "^25.2.3" camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" + chalk "^3.0.0" + jest-get-type "^25.2.1" leven "^3.1.0" - pretty-format "^24.9.0" + pretty-format "^25.2.3" -jest-watcher@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" - integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== +jest-watcher@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.2.3.tgz#a494fe3ddb62da62b0e697abfea457de8f388f1f" + integrity sha512-F6ERbdvJk8nbaRon9lLQVl4kp+vToCCHmy+uWW5QQ8/8/g2jkrZKJQnlQINrYQp0ewg31Bztkhs4nxsZMx6wDg== dependencies: - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/yargs" "^13.0.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.9.0" - string-length "^2.0.0" + "@jest/test-result" "^25.2.3" + "@jest/types" "^25.2.3" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + jest-util "^25.2.3" + string-length "^3.1.0" -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== - dependencies: - merge-stream "^1.0.1" - supports-color "^6.1.0" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-worker@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.2.1.tgz#209617015c768652646aa33a7828cc2ab472a18a" + integrity sha512-IHnpekk8H/hCUbBlfeaPZzU6v75bqwJp3n4dUrQuQOAgOneI4tx3jV2o8pvlXnDfcRsfkFIUD//HWXpCmR+evQ== dependencies: merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" -jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" - integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== +jest@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.2.3.tgz#0cc9b35192f236fe1d5e76ed8eb3a54e7e0ee2e0" + integrity sha512-UbUmyGeZt0/sCIj/zsWOY0qFfQsx2qEFIZp0iEj8yVH6qASfR22fJOf12gFuSPsdSufam+llZBB0MdXWCg6EEQ== dependencies: - import-local "^2.0.0" - jest-cli "^24.9.0" + "@jest/core" "^25.2.3" + import-local "^3.0.2" + jest-cli "^25.2.3" jquery-knob-chif@^1.2.13: version "1.2.13" @@ -6329,36 +6637,36 @@ jsbn@~0.1.0: resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== +jsdom@^15.2.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== dependencies: abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" + cssom "^0.4.1" + cssstyle "^2.0.0" + data-urls "^1.1.0" domexception "^1.0.1" - escodegen "^1.9.1" + escodegen "^1.11.1" html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" + nwsapi "^2.2.0" + parse5 "5.1.0" pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" + request "^2.88.0" + request-promise-native "^1.0.7" + saxes "^3.1.9" symbol-tree "^3.2.2" - tough-cookie "^2.3.4" + tough-cookie "^3.0.1" w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^7.0.0" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -6418,6 +6726,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + dependencies: + minimist "^1.2.5" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -6494,11 +6809,6 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -6543,16 +6853,6 @@ linebreak@^1.0.2: brfs "^2.0.2" unicode-trie "^1.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -6653,6 +6953,13 @@ loglevel@^1.6.6: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== +lolex@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + dependencies: + "@sinonjs/commons" "^1.7.0" + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -6682,7 +6989,7 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" -make-dir@^2.0.0, make-dir@^2.1.0: +make-dir@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -6801,13 +7108,6 @@ merge-source-map@^1.1.0: dependencies: source-map "^0.6.1" -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -6837,7 +7137,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0: +micromatch@^4.0.0, micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== @@ -6934,10 +7234,10 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== minipass@^2.2.1, minipass@^2.6.0, minipass@^2.6.4: version "2.6.5" @@ -7093,10 +7393,6 @@ neo-async@^2.5.0, neo-async@^2.6.1: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -neo-async@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" - next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -7151,16 +7447,16 @@ node-modules-regexp@^1.0.0: resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== +node-notifier@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" + integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== dependencies: growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" + is-wsl "^2.1.1" + semver "^6.3.0" shellwords "^0.1.1" - which "^1.3.0" + which "^1.3.1" node-pre-gyp@^0.12.0: version "0.12.0" @@ -7207,16 +7503,6 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -7268,6 +7554,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -7295,10 +7588,10 @@ number-is-nan@^1.0.0: resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7: - version "2.1.4" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" - integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" @@ -7437,14 +7730,6 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optimize-css-assets-webpack-plugin@^5.0.3: version "5.0.3" resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" @@ -7525,17 +7810,20 @@ p-defer@^1.0.0: resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" +p-each-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" @@ -7574,11 +7862,6 @@ p-map@^2.0.0: resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - p-retry@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -7641,10 +7924,10 @@ parse-passwd@^1.0.0: resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" @@ -7691,6 +7974,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -7701,13 +7989,6 @@ path-to-regexp@0.1.7: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -7754,11 +8035,6 @@ pify@^2.0.0: resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - pify@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -7790,7 +8066,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -8233,7 +8509,7 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: +pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== @@ -8243,6 +8519,16 @@ pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: ansi-styles "^3.2.0" react-is "^16.8.4" +pretty-format@^25.1.0, pretty-format@^25.2.3: + version "25.2.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.2.3.tgz#ba6e9603a0d80fa2e470b1fed55de1f9bfd81421" + integrity sha512-IP4+5UOAVGoyqC/DiomOeHBUKN6q00gfyT2qpAsRH64tgOKB2yF7FHJXC18OCiU0/YFierACup/zdCOWw0F/0w== + dependencies: + "@jest/types" "^25.2.3" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -8302,7 +8588,7 @@ pseudomap@^1.0.2: resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.28: version "1.1.32" resolved "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz#3f132717cf2f9c169724b2b6caf373cf694198db" integrity sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g== @@ -8349,7 +8635,7 @@ punycode@1.3.2: resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -8485,6 +8771,11 @@ react-hot-loader@^4.12.18: shallowequal "^1.1.0" source-map "^0.7.3" +react-is@^16.12.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-is@^16.7.0, react-is@^16.8.1: version "16.12.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" @@ -8509,23 +8800,6 @@ react@^16.12.0: object-assign "^4.1.1" prop-types "^15.6.2" -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -8564,12 +8838,10 @@ readdirp@~3.3.0: dependencies: picomatch "^2.0.7" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" +realpath-native@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" + integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== reaptcha@^1.7.2: version "1.7.2" @@ -8683,25 +8955,26 @@ repeat-string@^1.6.1: resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== dependencies: - lodash "^4.17.11" + lodash "^4.17.15" -request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== +request-promise-native@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== dependencies: - request-promise-core "1.1.2" + request-promise-core "1.1.3" stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0: - version "2.88.0" - resolved "https://registry.npmjs.org/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -8710,7 +8983,7 @@ request@^2.87.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -8720,7 +8993,7 @@ request@^2.87.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" @@ -8755,6 +9028,13 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -8772,6 +9052,11 @@ resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8782,7 +9067,7 @@ resolve@1.1.7: resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.10.0: +resolve@1.x: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== @@ -8796,6 +9081,13 @@ resolve@^1.1.5: dependencies: path-parse "^1.0.6" +resolve@^1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + resolve@^1.3.2: version "1.11.0" resolved "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" @@ -8859,6 +9151,13 @@ rimraf@^2.5.4, rimraf@^2.6.1: dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -8958,6 +9257,13 @@ sax@^1.2.4, sax@~1.2.4: resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + scheduler@^0.17.0: version "0.17.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.17.0.tgz#7c9c673e4ec781fac853927916d1c426b6f3ddfe" @@ -9036,11 +9342,6 @@ selfsigned@^1.10.7: dependencies: node-forge "0.9.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: - version "5.7.0" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -9051,6 +9352,11 @@ semver@^5.3.0, semver@^5.5.1, semver@^5.6.0: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^5.4.1, semver@^5.5.0: + version "5.7.0" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + semver@^5.5: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" @@ -9061,7 +9367,7 @@ semver@^6.0.0: resolved "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== -semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -9180,11 +9486,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -9224,6 +9542,11 @@ slash@^2.0.0: resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -9364,32 +9687,6 @@ sparklines@^1.2.0: resolved "https://registry.yarnpkg.com/sparklines/-/sparklines-1.2.0.tgz#bbbf2dede9bc337749e430baf67c2b37f88f6fa0" integrity sha512-6OFlZzdFXyfFGJ8R5wrc9GdjoeQpjFuwkMKF1yVehLATHVrf4dSyZ4veGOFQ0mQ3xdJ0bCQSbd0idsm1gd2qWg== -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.4" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" - integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== - spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -9564,13 +9861,13 @@ strict-uri-encode@^1.0.0: resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== dependencies: astral-regex "^1.0.0" - strip-ansi "^4.0.0" + strip-ansi "^5.2.0" string-width@^1.0.1: version "1.0.2" @@ -9607,6 +9904,15 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^5.2.0" +string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string.prototype.trimleft@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -9658,15 +9964,27 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -9742,6 +10060,21 @@ supports-color@^5.3.0, supports-color@^5.4.0: dependencies: has-flag "^3.0.0" +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + svg-to-pdfkit@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/svg-to-pdfkit/-/svg-to-pdfkit-0.1.7.tgz#7db6d47e47b3888dce18060751a8de2417f85775" @@ -9816,6 +10149,14 @@ tempusdominus-bootstrap-4@^5.1.2: moment-timezone "^0.5.11" popper.js "^1.14.3" +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + terser-webpack-plugin@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" @@ -9840,15 +10181,14 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: - glob "^7.1.3" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" text-table@^0.2.0: version "0.2.0" @@ -9860,10 +10200,10 @@ three@^0.112.1: resolved "https://registry.yarnpkg.com/three/-/three-0.112.1.tgz#f8d8f4d0f8e5f753dac6260491b8209457fdc131" integrity sha512-8I0O74hiYtKl3LgDNcPJbBGOlpekbcJ6fJnImmW3mFdeUFJ2H9Y3/UuUSW2sBdjrIlCM0gvOkaTEFlofO900TQ== -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== through2@^2.0.0, through2@~2.0.3: version "2.0.5" @@ -9965,7 +10305,7 @@ toidentifier@1.0.0: resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -tough-cookie@^2.3.3, tough-cookie@^2.3.4: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -9973,13 +10313,14 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== dependencies: - psl "^1.1.24" - punycode "^1.4.1" + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" tr46@^1.0.1: version "1.0.1" @@ -10008,10 +10349,10 @@ ts-jest@^23.10.5: semver "^5.5" yargs-parser "10.x" -ts-jest@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" - integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ== +ts-jest@^25.2.1: + version "25.2.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.2.1.tgz#49bf05da26a8b7fbfbc36b4ae2fcdc2fef35c85d" + integrity sha512-TnntkEEjuXq/Gxpw7xToarmHbAafgCaAzOpnajnFC6jI7oo1trMzAHA04eWpc3MhV6+yvhE8uUBAmN+teRJh0A== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -10022,7 +10363,7 @@ ts-jest@^24.3.0: mkdirp "0.x" resolve "1.x" semver "^5.5" - yargs-parser "10.x" + yargs-parser "^16.1.0" ts-loader@^6.2.1: version "6.2.1" @@ -10071,6 +10412,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" @@ -10099,6 +10445,13 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -10109,14 +10462,6 @@ typescript@^3.8.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== -uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== - dependencies: - commander "~2.20.0" - source-map "~0.6.1" - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -10281,7 +10626,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" dependencies: @@ -10322,13 +10667,14 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== +v8-to-istanbul@^4.0.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20" + integrity sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng== dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" vary@~1.1.2: version "1.1.2" @@ -10450,10 +10796,14 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -wait-for-expect@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wait-for-expect/-/wait-for-expect-3.0.1.tgz#ec204a76b0038f17711e575720aaf28505ac7185" - integrity sha512-3Ha7lu+zshEG/CeHdcpmQsZnnZpPj/UsG3DuKO8FskjuDbkx3jE3845H+CuwZjA2YWYDfKMU2KhnCaXMLd3wVw== +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: version "1.0.7" @@ -10627,27 +10977,18 @@ websocket-extensions@>=0.1.1: resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" @@ -10666,13 +11007,20 @@ which-module@^2.0.0: resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -10685,11 +11033,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -10719,19 +11062,29 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" + is-typedarray "^1.0.0" signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" write@1.0.3: version "1.0.3" @@ -10739,13 +11092,6 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - ws@^6.2.1: version "6.2.1" resolved "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -10753,11 +11099,21 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" +ws@^7.0.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xmlchars@^2.1.1: + 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, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -10807,7 +11163,7 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.0, yargs-parser@^13.1.1: +yargs-parser@^13.1.0: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== @@ -10815,6 +11171,22 @@ yargs-parser@^13.1.0, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.1: + version "18.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" + integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs@12.0.5: version "12.0.5" resolved "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" @@ -10850,21 +11222,22 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" get-caller-file "^2.0.1" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^18.1.1" zrender@4.2.0: version "4.2.0"