From 44d2f210d0b0f079dad994ff9db282642f49ace6 Mon Sep 17 00:00:00 2001 From: Zbyszek Tenerowicz Date: Sun, 28 Aug 2022 19:26:35 +0200 Subject: [PATCH 01/13] Set lavamoat codeowners to allow supply chain reviews (#15624) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d2dddc92faab..dfeecb511a09 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,3 +4,4 @@ * @MetaMask/extension-devs .circleci/ @MetaMask/extension-devs @kumavis development/ @MetaMask/extension-devs @kumavis +lavamoat/ @MetaMask/supply-chain From ece5901b40da31b08ab4267aa26b96fffe84f83f Mon Sep 17 00:00:00 2001 From: Thomas Huang Date: Tue, 30 Aug 2022 16:53:24 -0700 Subject: [PATCH 02/13] Unit tests for first time flow/new account and onboarding flow. (#15625) --- .../experimental-area/experimental-area.js | 2 +- .../__snapshots__/new-account.test.js.snap | 106 ++++++++ .../new-account/new-account.component.js | 4 +- .../new-account/new-account.test.js | 108 ++++++++ .../create-password/create-password.js | 2 +- .../creation-successful.js | 2 +- .../onboarding-flow/import-srp/import-srp.js | 2 +- .../metametrics/metametrics.js | 5 +- .../onboarding-flow/onboarding-flow.test.js | 236 ++++++++++++++++++ .../pin-extension/pin-extension.js | 5 +- .../privacy-settings/privacy-settings.js | 2 +- .../confirm-recovery-phrase.js | 5 +- .../recovery-phrase/review-recovery-phrase.js | 2 +- .../secure-your-wallet/secure-your-wallet.js | 2 +- ui/pages/onboarding-flow/welcome/welcome.js | 2 +- ui/pages/unlock-page/unlock-page.component.js | 2 +- 16 files changed, 474 insertions(+), 13 deletions(-) create mode 100644 ui/pages/first-time-flow/create-password/new-account/__snapshots__/new-account.test.js.snap create mode 100644 ui/pages/first-time-flow/create-password/new-account/new-account.test.js create mode 100644 ui/pages/onboarding-flow/onboarding-flow.test.js diff --git a/ui/components/app/flask/experimental-area/experimental-area.js b/ui/components/app/flask/experimental-area/experimental-area.js index b6b05f5da30c..078a14ff6e29 100644 --- a/ui/components/app/flask/experimental-area/experimental-area.js +++ b/ui/components/app/flask/experimental-area/experimental-area.js @@ -75,7 +75,7 @@ export default function ExperimentalArea({ redirectTo }) { }; return ( -
+
{METAMASK_LOGO}
{EXPERIMENTAL_AREA}
diff --git a/ui/pages/first-time-flow/create-password/new-account/__snapshots__/new-account.test.js.snap b/ui/pages/first-time-flow/create-password/new-account/__snapshots__/new-account.test.js.snap new file mode 100644 index 000000000000..1a94dd37490f --- /dev/null +++ b/ui/pages/first-time-flow/create-password/new-account/__snapshots__/new-account.test.js.snap @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Name of the group should match snapshot 1`] = ` +
+
+ +
+ [createPassword] +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + + +
+
+`; diff --git a/ui/pages/first-time-flow/create-password/new-account/new-account.component.js b/ui/pages/first-time-flow/create-password/new-account/new-account.component.js index 7c7154430266..cd35c03662b4 100644 --- a/ui/pages/first-time-flow/create-password/new-account/new-account.component.js +++ b/ui/pages/first-time-flow/create-password/new-account/new-account.component.js @@ -105,7 +105,6 @@ export default class NewAccount extends PureComponent { event: EVENT_NAMES.ACCOUNT_PASSWORD_CREATED, properties: {}, }); - history.push(INITIALIZE_SEED_PHRASE_INTRO_ROUTE); } catch (error) { this.setState({ passwordError: error.message }); @@ -138,6 +137,7 @@ export default class NewAccount extends PureComponent {
{ e.preventDefault(); this.props.history.push(INITIALIZE_SELECT_ACTION_ROUTE); @@ -150,6 +150,7 @@ export default class NewAccount extends PureComponent {
{t('createPassword')}
{ + const props = { + onSubmit: jest.fn(), + history: { + push: jest.fn(), + }, + }; + + it('should match snapshot', () => { + const { container } = renderWithProvider(); + expect(container).toMatchSnapshot(); + }); + + it('should back button', () => { + const { queryByTestId } = renderWithProvider(); + const onboardingBackButton = queryByTestId('onboarding-back-button'); + + fireEvent.click(onboardingBackButton); + + expect(props.history.push).toHaveBeenCalledWith( + INITIALIZE_SELECT_ACTION_ROUTE, + ); + }); + + it('should initialize with a disabled create button', () => { + const { queryByRole } = renderWithProvider(); + const createButton = queryByRole('button', { type: 'primary' }); + + expect(createButton).toBeInTheDocument(); + expect(createButton).toHaveAttribute('disabled'); + }); + + it('should', async () => { + const { queryByRole, queryByTestId } = renderWithProvider( + , + ); + + const password = 'a-new-password'; + + const checkTerms = queryByRole('checkbox'); + + const createPassword = queryByTestId('create-password'); + const confirmPassword = queryByTestId('confirm-password'); + + const createButton = queryByRole('button', { type: 'primary' }); + fireEvent.click(checkTerms); + fireEvent.change(createPassword, { target: { value: password } }); + fireEvent.change(confirmPassword, { target: { value: password } }); + + expect(createButton).not.toHaveAttribute('disabled'); + + fireEvent.click(createButton); + + await waitFor(() => { + expect(props.history.push).toHaveBeenCalledWith( + INITIALIZE_SEED_PHRASE_INTRO_ROUTE, + ); + }); + }); + + it('should error when the password and the confirm password are not the same', () => { + const { queryByRole, queryByTestId, queryByText } = renderWithProvider( + , + ); + + const password = 'a-new-password'; + const wrongPassword = 'wrong-password'; + + const createPassword = queryByTestId('create-password'); + const confirmPassword = queryByTestId('confirm-password'); + + fireEvent.change(createPassword, { target: { value: password } }); + fireEvent.change(confirmPassword, { target: { value: wrongPassword } }); + + const errorMessage = queryByText(/passwordsDontMatch/u); + expect(errorMessage).toBeInTheDocument(); + + // Create button is disabled. + const createButton = queryByRole('button', { type: 'primary' }); + expect(createButton).toHaveAttribute('disabled'); + }); + + it('should disable the create button if the terms are not checked but passwords are correct', () => { + const { queryByRole, queryByTestId } = renderWithProvider( + , + ); + + const password = 'a-new-password'; + + const createPassword = queryByTestId('create-password'); + const confirmPassword = queryByTestId('confirm-password'); + + fireEvent.change(createPassword, { target: { value: password } }); + fireEvent.change(confirmPassword, { target: { value: password } }); + + const createButton = queryByRole('button', { type: 'primary' }); + expect(createButton).toHaveAttribute('disabled'); + }); +}); diff --git a/ui/pages/onboarding-flow/create-password/create-password.js b/ui/pages/onboarding-flow/create-password/create-password.js index dd2ce19891a5..c742c7d8a09e 100644 --- a/ui/pages/onboarding-flow/create-password/create-password.js +++ b/ui/pages/onboarding-flow/create-password/create-password.js @@ -151,7 +151,7 @@ export default function CreatePassword({ }; return ( -
+
{secretRecoveryPhrase && firstTimeFlowType === FIRST_TIME_FLOW_TYPES.IMPORT ? ( +
+
+
({ + createNewVaultAndGetSeedPhrase: jest.fn().mockResolvedValue(null), + unlockAndGetSeedPhrase: jest.fn().mockResolvedValue(null), + createNewVaultAndRestore: jest.fn(), +})); + +describe('Onboarding Flow', () => { + const mockState = { + metamask: {}, + }; + + const store = configureMockStore()(mockState); + + it('should route to the default route when completedOnboarding and seedPhraseBackedUp is true', () => { + const completedOnboardingState = { + metamask: { + completedOnboarding: true, + seedPhraseBackedUp: true, + }, + }; + + const completedOnboardingStore = configureMockStore()( + completedOnboardingState, + ); + + const { history } = renderWithProvider( + , + completedOnboardingStore, + '/other', + ); + + expect(history.location.pathname).toStrictEqual(DEFAULT_ROUTE); + }); + + describe('Create Password', () => { + it('should render create password', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_CREATE_PASSWORD_ROUTE, + ); + + const createPassword = queryByTestId('create-password'); + expect(createPassword).toBeInTheDocument(); + }); + + it('should call createNewVaultAndGetSeedPhrase when creating a new wallet password', async () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_CREATE_PASSWORD_ROUTE, + ); + + const password = 'a-new-password'; + const checkTerms = queryByTestId('create-password-terms'); + const createPassword = queryByTestId('create-password-new'); + const confirmPassword = queryByTestId('create-password-confirm'); + const createPasswordWallet = queryByTestId('create-password-wallet'); + + fireEvent.click(checkTerms); + fireEvent.change(createPassword, { target: { value: password } }); + fireEvent.change(confirmPassword, { target: { value: password } }); + fireEvent.click(createPasswordWallet); + + await waitFor(() => + expect(createNewVaultAndGetSeedPhrase).toHaveBeenCalled(), + ); + }); + }); + + it('should render secure your wallet component', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_SECURE_YOUR_WALLET_ROUTE, + ); + + const secureYourWallet = queryByTestId('secure-your-wallet'); + expect(secureYourWallet).toBeInTheDocument(); + }); + + it('should render review recovery phrase', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_REVIEW_SRP_ROUTE, + ); + + const recoveryPhrase = queryByTestId('recovery-phrase'); + expect(recoveryPhrase).toBeInTheDocument(); + }); + + it('should render confirm recovery phrase', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_CONFIRM_SRP_ROUTE, + ); + + const confirmRecoveryPhrase = queryByTestId('confirm-recovery-phrase'); + expect(confirmRecoveryPhrase).toBeInTheDocument(); + }); + + it('should render import seed phrase', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_IMPORT_WITH_SRP_ROUTE, + ); + + const importSrp = queryByTestId('import-srp'); + expect(importSrp).toBeInTheDocument(); + }); + + describe('Unlock Screen', () => { + it('should render unlock page', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_UNLOCK_ROUTE, + ); + + const unlockPage = queryByTestId('unlock-page'); + expect(unlockPage).toBeInTheDocument(); + }); + + it('should', async () => { + const { getByLabelText, getByText } = renderWithProvider( + , + store, + ONBOARDING_UNLOCK_ROUTE, + ); + + const password = 'a-new-password'; + const inputPassword = getByLabelText('Password'); + const unlockButton = getByText('Unlock'); + + fireEvent.change(inputPassword, { target: { value: password } }); + fireEvent.click(unlockButton); + await waitFor(() => expect(unlockAndGetSeedPhrase).toHaveBeenCalled()); + }); + }); + + it('should render privacy settings', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_PRIVACY_SETTINGS_ROUTE, + ); + + const privacySettings = queryByTestId('privacy-settings'); + expect(privacySettings).toBeInTheDocument(); + }); + + it('should render onboarding creation/completion successful', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_COMPLETION_ROUTE, + ); + + const creationSuccessful = queryByTestId('creation-successful'); + expect(creationSuccessful).toBeInTheDocument(); + }); + + it('should render onboarding welcome screen', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_WELCOME_ROUTE, + ); + + const onboardingWelcome = queryByTestId('onboarding-welcome'); + expect(onboardingWelcome).toBeInTheDocument(); + }); + + it('should render onboarding pin extension screen', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_PIN_EXTENSION_ROUTE, + ); + + const pinExtension = queryByTestId('onboarding-pin-extension'); + expect(pinExtension).toBeInTheDocument(); + }); + + it('should render onboarding metametrics screen', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_METAMETRICS, + ); + + const onboardingMetametrics = queryByTestId('onboarding-metametrics'); + expect(onboardingMetametrics).toBeInTheDocument(); + }); + + it('should render onboarding experimental screen', () => { + const { queryByTestId } = renderWithProvider( + , + store, + ONBOARDING_EXPERIMENTAL_AREA, + ); + + const onboardingMetametrics = queryByTestId('experimental-area'); + expect(onboardingMetametrics).toBeInTheDocument(); + }); +}); diff --git a/ui/pages/onboarding-flow/pin-extension/pin-extension.js b/ui/pages/onboarding-flow/pin-extension/pin-extension.js index 6888fc197c2a..006a1036e04b 100644 --- a/ui/pages/onboarding-flow/pin-extension/pin-extension.js +++ b/ui/pages/onboarding-flow/pin-extension/pin-extension.js @@ -19,7 +19,10 @@ export default function OnboardingPinExtension() { const history = useHistory(); return ( -
+
-
+
{t('setAdvancedPrivacySettings')} diff --git a/ui/pages/onboarding-flow/recovery-phrase/confirm-recovery-phrase.js b/ui/pages/onboarding-flow/recovery-phrase/confirm-recovery-phrase.js index 32e6888c8129..ccd4ca2e40b5 100644 --- a/ui/pages/onboarding-flow/recovery-phrase/confirm-recovery-phrase.js +++ b/ui/pages/onboarding-flow/recovery-phrase/confirm-recovery-phrase.js @@ -54,7 +54,10 @@ export default function ConfirmRecoveryPhrase({ secretRecoveryPhrase = '' }) { }; return ( -
+
+
+
{showSkipSRPBackupPopover && ( setShowSkipSRPBackupPopover(false)} /> )} diff --git a/ui/pages/onboarding-flow/welcome/welcome.js b/ui/pages/onboarding-flow/welcome/welcome.js index f1290cc04b72..1ee113dcb3b7 100644 --- a/ui/pages/onboarding-flow/welcome/welcome.js +++ b/ui/pages/onboarding-flow/welcome/welcome.js @@ -32,7 +32,7 @@ export default function OnboardingWelcome() { }; return ( -
+
-
+
Date: Mon, 5 Sep 2022 20:25:34 +0530 Subject: [PATCH 03/13] MV3: add retry logic to actions (#15337) --- .storybook/preview.js | 2 +- app/scripts/ui.js | 2 + test/jest/background.js | 4 +- ui/index.js | 3 +- ui/store/action-queue/index.js | 200 +++++ ui/store/action-queue/index.test.js | 358 ++++++++ .../action-queue/queue.integration.test.js | 66 ++ ui/store/actions.js | 838 ++++++++++-------- ui/store/actions.test.js | 133 +-- 9 files changed, 1162 insertions(+), 444 deletions(-) create mode 100644 ui/store/action-queue/index.js create mode 100644 ui/store/action-queue/index.test.js create mode 100644 ui/store/action-queue/queue.integration.test.js diff --git a/.storybook/preview.js b/.storybook/preview.js index d068ba34d1ae..4a74eb33db6f 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -11,7 +11,7 @@ import MetaMetricsProviderStorybook from './metametrics'; import testData from './test-data.js'; import { Router } from 'react-router-dom'; import { createBrowserHistory } from 'history'; -import { _setBackgroundConnection } from '../ui/store/actions'; +import { _setBackgroundConnection } from '../ui/store/action-queue'; import MetaMaskStorybookTheme from './metamask-storybook-theme'; import addons from '@storybook/addons'; diff --git a/app/scripts/ui.js b/app/scripts/ui.js index 5d7a0c1816d8..de074300e579 100644 --- a/app/scripts/ui.js +++ b/app/scripts/ui.js @@ -71,6 +71,8 @@ async function start() { const messageListener = (message) => { if (message?.name === 'CONNECTION_READY') { if (isUIInitialised) { + // Currently when service worker is revived we create new streams + // in later version we might try to improve it by reviving same streams. updateUiStreams(); } else { initializeUiWithTab(activeTab); diff --git a/test/jest/background.js b/test/jest/background.js index 99d181308433..566a0d397b19 100644 --- a/test/jest/background.js +++ b/test/jest/background.js @@ -1,5 +1,5 @@ -import * as actions from '../../ui/store/actions'; +import { _setBackgroundConnection } from '../../ui/store/action-queue'; export const setBackgroundConnection = (backgroundConnection = {}) => { - actions._setBackgroundConnection(backgroundConnection); + _setBackgroundConnection(backgroundConnection); }; diff --git a/ui/index.js b/ui/index.js index 9510772ab0f8..1f258a817cb1 100644 --- a/ui/index.js +++ b/ui/index.js @@ -28,6 +28,7 @@ import { } from './ducks/metamask/metamask'; import Root from './pages'; import txHelper from './helpers/utils/tx-helper'; +import { _setBackgroundConnection } from './store/action-queue'; log.setLevel(global.METAMASK_DEBUG ? 'debug' : 'warn'); @@ -39,7 +40,7 @@ let reduxStore; * @param backgroundConnection - connection object to background */ export const updateBackgroundConnection = (backgroundConnection) => { - actions._setBackgroundConnection(backgroundConnection); + _setBackgroundConnection(backgroundConnection); backgroundConnection.onNotification((data) => { if (data.method === 'sendUpdate') { reduxStore.dispatch(actions.updateMetamaskState(data.params[0])); diff --git a/ui/store/action-queue/index.js b/ui/store/action-queue/index.js new file mode 100644 index 000000000000..a90c54df95dd --- /dev/null +++ b/ui/store/action-queue/index.js @@ -0,0 +1,200 @@ +import pify from 'pify'; +import { isManifestV3 } from '../../../shared/modules/mv3.utils'; + +// // A simplified pify maybe? +// function pify(apiObject) { +// return Object.keys(apiObject).reduce((promisifiedAPI, key) => { +// if (apiObject[key].apply) { // depending on our browser support we might use a nicer check for functions here +// promisifiedAPI[key] = function (...args) { +// return new Promise((resolve, reject) => { +// return apiObject[key]( +// ...args, +// (err, result) => { +// if (err) { +// reject(err); +// } else { +// resolve(result); +// } +// }, +// ); +// }); +// }; +// } +// return promisifiedAPI; +// }, {}); +// } + +let background = null; +let promisifiedBackground = null; + +const actionRetryQueue = []; + +function failQueue() { + actionRetryQueue.forEach(({ reject }) => + reject( + Error('Background operation cancelled while waiting for connection.'), + ), + ); +} + +/** + * Drops the entire actions queue. Rejects all actions in the queue unless silently==true + * Does not affect the single action that is currently being processed. + * + * @param {boolean} [silently] + */ +export function dropQueue(silently) { + if (!silently) { + failQueue(); + } + actionRetryQueue.length = 0; +} + +// add action to queue +const executeActionOrAddToRetryQueue = (item) => { + if (actionRetryQueue.some((act) => act.actionId === item.actionId)) { + return; + } + + if (background.connectionStream.readable) { + executeAction({ + action: item, + disconnectSideeffect: () => actionRetryQueue.push(item), + }); + } else { + actionRetryQueue.push(item); + } +}; + +/** + * Promise-style call to background method + * In MV2: invokes promisifiedBackground method directly. + * In MV3: action is added to retry queue, along with resolve handler to be executed on completion, + * the queue is then immediately processed if background connection is available. + * On completion (successful or error) the action is removed from the retry queue. + * + * @param {string} method - name of the background method + * @param {Array} [args] - arguments to that method, if any + * @param {any} [actionId] - if an action with the === same id is submitted, it'll be ignored if already in queue waiting for a retry. + * @returns {Promise} + */ +export function submitRequestToBackground( + method, + args = [], + actionId = Date.now() + Math.random(), // current date is not guaranteed to be unique +) { + if (isManifestV3) { + return new Promise((resolve, reject) => { + executeActionOrAddToRetryQueue({ + actionId, + request: { method, args }, + resolve, + reject, + }); + }); + } + return promisifiedBackground[method](...args); +} + +/** + * Callback-style call to background method + * In MV2: invokes promisifiedBackground method directly. + * In MV3: action is added to retry queue, along with resolve handler to be executed on completion, + * the queue is then immediately processed if background connection is available. + * On completion (successful or error) the action is removed from the retry queue. + * + * @param {string} method - name of the background method + * @param {Array} [args] - arguments to that method, if any + * @param callback - Node style (error, result) callback for finishing the operation + * @param {any} [actionId] - if an action with the === same id is submitted, it'll be ignored if already in queue. + */ +export const callBackgroundMethod = ( + method, + args = [], + callback, + actionId = Date.now() + Math.random(), // current date is not guaranteed to be unique +) => { + if (isManifestV3) { + const resolve = (value) => callback(null, value); + const reject = (err) => callback(err); + executeActionOrAddToRetryQueue({ + actionId, + request: { method, args }, + resolve, + reject, + }); + } else { + background[method](...args, callback); + } +}; + +async function executeAction({ action, disconnectSideeffect }) { + const { + request: { method, args }, + resolve, + reject, + } = action; + try { + resolve(await promisifiedBackground[method](...args)); + } catch (err) { + if ( + background.DisconnectError && // necessary to not break compatibility with background stubs or non-default implementations + err instanceof background.DisconnectError + ) { + disconnectSideeffect(action); + } else { + reject(err); + } + } +} + +let processingQueue = false; + +// Clears list of pending action in actionRetryQueue +// The results of background calls are wired up to the original promises that's been returned +// The first method on the queue gets called synchronously to make testing and reasoning about +// a single request to an open connection easier. +async function processActionRetryQueue() { + if (processingQueue) { + return; + } + processingQueue = true; + try { + while ( + background.connectionStream.readable && + actionRetryQueue.length > 0 + ) { + // If background disconnects and fails the action, the next one will not be taken off the queue. + // Retrying an action that failed because of connection loss while it was processing is not supported. + const item = actionRetryQueue.shift(); + await executeAction({ + action: item, + disconnectSideeffect: () => actionRetryQueue.unshift(item), + }); + } + } catch (e) { + // error in the queue mechanism itself, the action was malformed + console.error(e); + } + processingQueue = false; +} + +/** + * Sets/replaces the background connection reference + * Under MV3 it also triggers queue processing if the new background is connected + * + * @param {*} backgroundConnection + */ +export async function _setBackgroundConnection(backgroundConnection) { + background = backgroundConnection; + promisifiedBackground = pify(background); + if (isManifestV3) { + if (processingQueue) { + console.warn( + '_setBackgroundConnection called while a queue was processing and not disconnected yet', + ); + } + // Process all actions collected while connection stream was not available. + processActionRetryQueue(); + } +} diff --git a/ui/store/action-queue/index.test.js b/ui/store/action-queue/index.test.js new file mode 100644 index 000000000000..157ac3cb5b46 --- /dev/null +++ b/ui/store/action-queue/index.test.js @@ -0,0 +1,358 @@ +import sinon from 'sinon'; + +import { + dropQueue, + callBackgroundMethod, + submitRequestToBackground, + _setBackgroundConnection, +} from '.'; + +// This file tests only MV3 queue scenario +// MV2 tests are already covered by '../actions.test.js' + +jest.mock('../../../shared/modules/mv3.utils', () => { + return { + isManifestV3: () => true, + }; +}); + +describe('ActionQueue', () => { + afterEach(() => { + sinon.restore(); + dropQueue(true); + }); + + describe('dropQueue', () => { + it('rejects all pending actions by default', async () => { + const background = { + connectionStream: { + readable: false, + }, + backgroundFunction: sinon.stub().yields(), + }; + + _setBackgroundConnection(background); + const result = submitRequestToBackground('backgroundFunction'); + dropQueue(); + + await expect(result).rejects.toThrow( + 'Background operation cancelled while waiting for connection.', + ); + expect(background.backgroundFunction.called).toStrictEqual(false); + }); + }); + describe('submitRequestToBackground', () => { + it('calls promisified background method if the stream is connected', async () => { + const background = { + connectionStream: { + readable: true, + }, + backgroundFunction1: sinon.stub().yields(), + }; + + _setBackgroundConnection(background); + submitRequestToBackground('backgroundFunction1'); + expect(background.backgroundFunction1.called).toStrictEqual(true); + }); + + it('does not calls promisified background method if the stream is not connected', async () => { + const background = { + connectionStream: { + readable: false, + }, + backgroundFunction2: sinon.stub().yields(), + }; + + _setBackgroundConnection(background); + submitRequestToBackground('backgroundFunction2'); + expect(background.backgroundFunction2.called).toStrictEqual(false); + }); + + it('calls promisified background method on stream reconnection', async () => { + const background = { + connectionStream: { + readable: false, + }, + backgroundFunction3: sinon.stub().yields(), + }; + _setBackgroundConnection(background); + const requestPromise = submitRequestToBackground('backgroundFunction3'); + + background.connectionStream = { + readable: true, + }; + _setBackgroundConnection(background); + await requestPromise; + expect(background.backgroundFunction3.calledOnce).toStrictEqual(true); + }); + + it('resolves if backgroundFunction resolves', async () => { + const background = { + connectionStream: { + readable: true, + }, + backgroundFunction4: (cb) => { + return cb(null, 'test'); + }, + }; + _setBackgroundConnection(background); + await expect( + submitRequestToBackground('backgroundFunction4'), + ).resolves.toStrictEqual('test'); + }); + + it('rejects if backgroundFunction throws exception', async () => { + expect.assertions(1); + const background = { + connectionStream: { + readable: true, + }, + backgroundFunction: () => { + throw Error('test'); + }, + }; + _setBackgroundConnection(background); + await expect( + submitRequestToBackground('backgroundFunction'), + ).rejects.toThrow('test'); + }); + + it('calls methods in parallel when connection available', async () => { + const trace = {}; + const background = { + connectionStream: { + readable: true, + }, + first: (cb) => { + setTimeout(() => { + trace.firstDone = Date.now(); + cb(null, 'first'); + }, 5); + }, + second: (cb) => { + trace.secondStarted = Date.now(); + setTimeout(() => cb(null, 'second'), 10); + }, + }; + _setBackgroundConnection(background); + const scheduled = Promise.all([ + submitRequestToBackground('first'), + submitRequestToBackground('second'), + ]); + await scheduled; + expect(trace.firstDone).toBeGreaterThan(trace.secondStarted); + }); + + it('processes the queue sequentially when connection is restored', async () => { + const trace = {}; + const background = { + connectionStream: { + readable: false, + }, + first: (cb) => { + setTimeout(() => { + trace.firstDone = Date.now(); + cb(null, 'first'); + }, 5); + }, + second: (cb) => { + trace.secondStarted = Date.now(); + setTimeout(() => cb(null, 'second'), 10); + }, + }; + _setBackgroundConnection(background); + const scheduled = Promise.all([ + submitRequestToBackground('first'), + submitRequestToBackground('second'), + ]); + background.connectionStream.readable = true; + _setBackgroundConnection(background); + await scheduled; + expect(trace.firstDone).toBeLessThanOrEqual(trace.secondStarted); + }); + + it('ensures actions in queue will not repeat once finished', async () => { + const trace = { calls: 0 }; + const background = { + connectionStream: { + readable: false, + }, + first: (cb) => { + trace.calls += 1; + setTimeout(() => { + trace.firstDone = Date.now(); + cb(null, 'first'); + }, 5); + }, + second: (cb) => { + trace.calls += 1; + trace.secondStarted = Date.now(); + setTimeout(() => cb(null, 'second'), 10); + }, + }; + _setBackgroundConnection(background); + const scheduled = Promise.all([ + submitRequestToBackground('first'), + submitRequestToBackground('second'), + ]); + background.connectionStream.readable = true; + _setBackgroundConnection(background); + await scheduled; + _setBackgroundConnection(background); // once all actions finished, this triggers draining the queue again + expect(trace.firstDone).toBeLessThanOrEqual(trace.secondStarted); + expect(trace.calls).toStrictEqual(2); + }); + + it('stops processng the queue if connection is lost', async () => { + const trace = {}; + const background = { + connectionStream: { + readable: false, + }, + first: (cb) => { + setTimeout(() => { + trace.firstDone = true; + background.connectionStream.readable = false; + cb(Error('lost connection')); + }, 5); + }, + second: sinon.stub().yields(), + }; + _setBackgroundConnection(background); + const scheduled = Promise.race([ + submitRequestToBackground('first').catch(() => ({})), + submitRequestToBackground('second'), + ]); + background.connectionStream.readable = true; + _setBackgroundConnection(background); + await scheduled; + await Promise.resolve('one more tick'); // One asynchronous tick to avoid depending on implementation details + expect(trace.firstDone).toStrictEqual(true); + expect(background.second.called).toStrictEqual(false); + }); + + // Failing test for a race condition related to how items are removed from queue + it('avoids race conditions', async () => { + const trace = { first: 0, second: 0 }; + const flowControl = {}; + const background = { + connectionStream: { + readable: false, + }, + first: (cb) => { + trace.first += 1; + setTimeout(() => { + flowControl.triggerRaceCondition(); + cb(null, 'first'); + }, 5); + }, + second: (cb) => { + trace.second += 1; + setTimeout(() => cb(null, 'second'), 10); + }, + third: sinon.stub().yields(), + }; + flowControl.triggerRaceCondition = () => { + flowControl.waitFor = submitRequestToBackground('third'); + }; + _setBackgroundConnection(background); + const scheduled = Promise.all([ + submitRequestToBackground('first'), + submitRequestToBackground('second'), + ]); + background.connectionStream.readable = true; + _setBackgroundConnection(background); + await scheduled; + await flowControl.waitFor; + expect(trace.first).toStrictEqual(1); + expect(trace.second).toStrictEqual(1); + expect(background.third.calledOnce).toStrictEqual(true); + }); + }); + + describe('callBackgroundMethod', () => { + afterEach(() => { + sinon.restore(); + }); + + it('calls background method if the stream is connected', async () => { + const background = { + connectionStream: { + readable: true, + }, + backgroundFunction: sinon.stub().yields(), + }; + + _setBackgroundConnection(background); + callBackgroundMethod('backgroundFunction', [], () => ({})); + expect(background.backgroundFunction.called).toStrictEqual(true); + }); + + it('does not call background method if the stream is not connected', async () => { + const background = { + connectionStream: { + readable: false, + }, + backgroundFunction: sinon.stub(), + }; + + _setBackgroundConnection(background); + callBackgroundMethod('backgroundFunction', [], () => ({})); + expect(background.backgroundFunction.called).toStrictEqual(false); + }); + + it('calls background method on stream reconnection', async () => { + const background = { + connectionStream: { + readable: false, + }, + backgroundFunction: sinon.stub().yields(), + }; + _setBackgroundConnection(background); + callBackgroundMethod('backgroundFunction', [], () => ({})); + expect(background.backgroundFunction.called).toStrictEqual(false); + + background.connectionStream = { + readable: true, + }; + _setBackgroundConnection(background); + expect(background.backgroundFunction.calledOnce).toStrictEqual(true); + }); + + it('resolves if backgroundFunction called resolves', async () => { + const background = { + connectionStream: { + readable: true, + }, + backgroundFunction: (cb) => { + return cb(null, 'successViaCallback'); + }, + }; + _setBackgroundConnection(background); + const value = await new Promise((resolve) => { + callBackgroundMethod('backgroundFunction', [], (_err, result) => { + resolve(result); + }); + }); + expect(value).toStrictEqual('successViaCallback'); + }); + it('rejects if backgroundFunction called rejects', async () => { + const errorViaCallback = Error('errorViaCallback'); + const background = { + connectionStream: { + readable: true, + }, + backgroundFunction: (cb) => { + return cb(errorViaCallback); + }, + }; + _setBackgroundConnection(background); + const value = await new Promise((resolve) => { + callBackgroundMethod('backgroundFunction', [], (err) => { + resolve(err); + }); + }); + expect(value).toStrictEqual(errorViaCallback); + }); + }); +}); diff --git a/ui/store/action-queue/queue.integration.test.js b/ui/store/action-queue/queue.integration.test.js new file mode 100644 index 000000000000..a90c0233059a --- /dev/null +++ b/ui/store/action-queue/queue.integration.test.js @@ -0,0 +1,66 @@ +import sinon from 'sinon'; +import PortStream from 'extension-port-stream'; +import { setupMultiplex } from '../../../app/scripts/lib/stream-utils'; +import metaRPCClientFactory from '../../../app/scripts/lib/metaRPCClientFactory'; + +import { + dropQueue, + submitRequestToBackground, + _setBackgroundConnection, +} from '.'; + +jest.mock('../../../shared/modules/mv3.utils', () => { + return { + isManifestV3: () => true, + }; +}); + +const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + +describe('queue integration test', () => { + afterEach(() => { + dropQueue(true); + }); + it('schedules a retry if background method failed because of a disconnect', async () => { + let disconnectListener; + const extensionPort = { + onMessage: { + addListener: sinon.stub(), + }, + onDisconnect: { + addListener(cb) { + disconnectListener = cb; + }, + }, + postMessage: sinon.stub().callsFake(() => { + disconnectListener(); + }), + }; + + const connectionStream = new PortStream(extensionPort); + const mx = setupMultiplex(connectionStream); + const multiplexStream1 = mx.createStream('controller'); + const background = metaRPCClientFactory(multiplexStream1); + + _setBackgroundConnection(background); + + // disconnect will happen on the attempt to send the message + const finished = submitRequestToBackground('backgroundFunction').catch( + (error) => { + // disconnect error should not get propagated, we retry. + // eslint-disable-next-line jest/no-conditional-expect + expect(error).not.toBeInstanceOf(background.DisconnectError); + // eslint-disable-next-line jest/no-conditional-expect + expect(error.message).toContain('cancelled'); + }, + ); + // We want to make sure we disconnect in the middle of processing, so we have to wait for the control flow to reach postMessage + // undetermined number of asynchronous jumps withing the stream implementation leaves no other option + await wait(3); + // we drop the queue because we're expecting the action to have been returned to the queue and this is the simplest way to check that + dropQueue(); + + expect(extensionPort.postMessage.calledOnce).toStrictEqual(true); + await finished; + }); +}); diff --git a/ui/store/actions.js b/ui/store/actions.js index a0b7ceb31ca6..4a235fe31a27 100644 --- a/ui/store/actions.js +++ b/ui/store/actions.js @@ -1,4 +1,3 @@ -import pify from 'pify'; import log from 'loglevel'; import { captureException } from '@sentry/browser'; import { capitalize, isEqual } from 'lodash'; @@ -48,13 +47,10 @@ import { NOTIFICATIONS_EXPIRATION_DELAY } from '../helpers/constants/notificatio ///: END:ONLY_INCLUDE_IN import { setNewCustomNetworkAdded } from '../ducks/app/app'; import * as actionConstants from './actionConstants'; - -let background = null; -let promisifiedBackground = null; -export function _setBackgroundConnection(backgroundConnection) { - background = backgroundConnection; - promisifiedBackground = pify(background); -} +import { + callBackgroundMethod, + submitRequestToBackground, +} from './action-queue'; export function goHome() { return { @@ -70,7 +66,7 @@ export function tryUnlockMetamask(password) { log.debug(`background.submitPassword`); return new Promise((resolve, reject) => { - background.submitPassword(password, (error) => { + callBackgroundMethod('submitPassword', [password], (error) => { if (error) { reject(error); return; @@ -115,9 +111,9 @@ export function createNewVaultAndRestore(password, seedPhrase) { let vault; return new Promise((resolve, reject) => { - background.createNewVaultAndRestore( - password, - encodedSeedPhrase, + callBackgroundMethod( + 'createNewVaultAndRestore', + [password, encodedSeedPhrase], (err, _vault) => { if (err) { reject(err); @@ -179,7 +175,7 @@ export function unlockAndGetSeedPhrase(password) { export function submitPassword(password) { return new Promise((resolve, reject) => { - background.submitPassword(password, (error) => { + callBackgroundMethod('submitPassword', [password], (error) => { if (error) { reject(error); return; @@ -192,7 +188,7 @@ export function submitPassword(password) { export function createNewVault(password) { return new Promise((resolve, reject) => { - background.createNewVaultAndKeychain(password, (error) => { + callBackgroundMethod('createNewVaultAndKeychain', [password], (error) => { if (error) { reject(error); return; @@ -205,7 +201,7 @@ export function createNewVault(password) { export function verifyPassword(password) { return new Promise((resolve, reject) => { - background.verifyPassword(password, (error) => { + callBackgroundMethod('verifyPassword', [password], (error) => { if (error) { reject(error); return; @@ -217,7 +213,7 @@ export function verifyPassword(password) { } export async function verifySeedPhrase() { - const encodedSeedPhrase = await promisifiedBackground.verifySeedPhrase(); + const encodedSeedPhrase = await submitRequestToBackground('verifySeedPhrase'); return Buffer.from(encodedSeedPhrase).toString('utf8'); } @@ -242,7 +238,7 @@ export function requestRevealSeedWords(password) { export function tryReverseResolveAddress(address) { return () => { return new Promise((resolve) => { - background.tryReverseResolveAddress(address, (err) => { + callBackgroundMethod('tryReverseResolveAddress', [address], (err) => { if (err) { log.error(err); } @@ -256,7 +252,7 @@ export function fetchInfoToSync() { return (dispatch) => { log.debug(`background.fetchInfoToSync`); return new Promise((resolve, reject) => { - background.fetchInfoToSync((err, result) => { + callBackgroundMethod('fetchInfoToSync', [], (err, result) => { if (err) { dispatch(displayWarning(err.message)); reject(err); @@ -273,7 +269,7 @@ export function resetAccount() { dispatch(showLoadingIndication()); return new Promise((resolve, reject) => { - background.resetAccount((err, account) => { + callBackgroundMethod('resetAccount', [], (err, account) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -295,7 +291,7 @@ export function removeAccount(address) { try { await new Promise((resolve, reject) => { - background.removeAccount(address, (error, account) => { + callBackgroundMethod('removeAccount', [address], (error, account) => { if (error) { reject(error); return; @@ -324,9 +320,12 @@ export function importNewAccount(strategy, args) { ); try { log.debug(`background.importAccountWithStrategy`); - await promisifiedBackground.importAccountWithStrategy(strategy, args); + await submitRequestToBackground('importAccountWithStrategy', [ + strategy, + args, + ]); log.debug(`background.getState`); - newState = await promisifiedBackground.getState(); + newState = await submitRequestToBackground('getState'); } catch (err) { dispatch(displayWarning(err.message)); throw err; @@ -353,9 +352,9 @@ export function addNewAccount() { let newIdentities; try { - const { identities } = await promisifiedBackground.addNewAccount( + const { identities } = await submitRequestToBackground('addNewAccount', [ Object.keys(oldIdentities).length, - ); + ]); newIdentities = identities; } catch (error) { dispatch(displayWarning(error.message)); @@ -379,10 +378,10 @@ export function checkHardwareStatus(deviceName, hdPath) { let unlocked; try { - unlocked = await promisifiedBackground.checkHardwareStatus( + unlocked = await submitRequestToBackground('checkHardwareStatus', [ deviceName, hdPath, - ); + ]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -401,7 +400,7 @@ export function forgetDevice(deviceName) { return async (dispatch) => { dispatch(showLoadingIndication()); try { - await promisifiedBackground.forgetDevice(deviceName); + await submitRequestToBackground('forgetDevice', [deviceName]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -426,7 +425,7 @@ export function connectHardware(deviceName, page, hdPath, t) { let accounts; try { if (deviceName === DEVICE_NAMES.LEDGER) { - await promisifiedBackground.establishLedgerTransportPreference(); + await submitRequestToBackground('establishLedgerTransportPreference'); } if ( deviceName === DEVICE_NAMES.LEDGER && @@ -443,11 +442,11 @@ export function connectHardware(deviceName, page, hdPath, t) { } } - accounts = await promisifiedBackground.connectHardware( + accounts = await submitRequestToBackground('connectHardware', [ deviceName, page, hdPath, - ); + ]); } catch (error) { log.error(error); if ( @@ -490,12 +489,12 @@ export function unlockHardwareWalletAccounts( for (const index of indexes) { try { - await promisifiedBackground.unlockHardwareWalletAccount( + await submitRequestToBackground('unlockHardwareWalletAccount', [ index, deviceName, hdPath, hdPathDescription, - ); + ]); } catch (e) { log.error(e); dispatch(displayWarning(e.message)); @@ -524,7 +523,7 @@ export function setCurrentCurrency(currencyCode) { dispatch(showLoadingIndication()); log.debug(`background.setCurrentCurrency`); try { - await promisifiedBackground.setCurrentCurrency(currencyCode); + await submitRequestToBackground('setCurrentCurrency', [currencyCode]); await forceUpdateMetamaskState(dispatch); } catch (error) { log.error(error); @@ -543,7 +542,7 @@ export function signMsg(msgData) { log.debug(`actions calling background.signMessage`); let newState; try { - newState = await promisifiedBackground.signMessage(msgData); + newState = await submitRequestToBackground('signMessage', [msgData]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -567,7 +566,9 @@ export function signPersonalMsg(msgData) { let newState; try { - newState = await promisifiedBackground.signPersonalMessage(msgData); + newState = await submitRequestToBackground('signPersonalMessage', [ + msgData, + ]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -590,9 +591,9 @@ export function decryptMsgInline(decryptedMsgData) { let newState; try { - newState = await promisifiedBackground.decryptMessageInline( + newState = await submitRequestToBackground('decryptMessageInline', [ decryptedMsgData, - ); + ]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -612,7 +613,9 @@ export function decryptMsg(decryptedMsgData) { let newState; try { - newState = await promisifiedBackground.decryptMessage(decryptedMsgData); + newState = await submitRequestToBackground('decryptMessage', [ + decryptedMsgData, + ]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -636,7 +639,9 @@ export function encryptionPublicKeyMsg(msgData) { let newState; try { - newState = await promisifiedBackground.encryptionPublicKey(msgData); + newState = await submitRequestToBackground('encryptionPublicKey', [ + msgData, + ]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -660,7 +665,7 @@ export function signTypedMsg(msgData) { let newState; try { - newState = await promisifiedBackground.signTypedMessage(msgData); + newState = await submitRequestToBackground('signTypedMessage', [msgData]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -687,7 +692,7 @@ const updateMetamaskStateFromBackground = () => { log.debug(`background.getState`); return new Promise((resolve, reject) => { - background.getState((error, newState) => { + callBackgroundMethod('getState', [], (error, newState) => { if (error) { reject(error); return; @@ -702,9 +707,9 @@ export function updatePreviousGasParams(txId, previousGasParams) { return async (dispatch) => { let updatedTransaction; try { - updatedTransaction = await promisifiedBackground.updatePreviousGasParams( - txId, - previousGasParams, + updatedTransaction = await submitRequestToBackground( + 'updatePreviousGasParams', + [txId, previousGasParams], ); } catch (error) { dispatch(txError(error)); @@ -720,11 +725,10 @@ export function updateSwapApprovalTransaction(txId, txSwapApproval) { return async (dispatch) => { let updatedTransaction; try { - updatedTransaction = - await promisifiedBackground.updateSwapApprovalTransaction( - txId, - txSwapApproval, - ); + updatedTransaction = await submitRequestToBackground( + 'updateSwapApprovalTransaction', + [txId, txSwapApproval], + ); } catch (error) { dispatch(txError(error)); log.error(error.message); @@ -739,9 +743,9 @@ export function updateEditableParams(txId, editableParams) { return async (dispatch) => { let updatedTransaction; try { - updatedTransaction = await promisifiedBackground.updateEditableParams( - txId, - editableParams, + updatedTransaction = await submitRequestToBackground( + 'updateEditableParams', + [txId, editableParams], ); } catch (error) { dispatch(txError(error)); @@ -765,11 +769,10 @@ export function updateTransactionSendFlowHistory(txId, sendFlowHistory) { return async (dispatch) => { let updatedTransaction; try { - updatedTransaction = - await promisifiedBackground.updateTransactionSendFlowHistory( - txId, - sendFlowHistory, - ); + updatedTransaction = await submitRequestToBackground( + 'updateTransactionSendFlowHistory', + [txId, sendFlowHistory], + ); } catch (error) { dispatch(txError(error)); log.error(error.message); @@ -783,7 +786,7 @@ export function updateTransactionSendFlowHistory(txId, sendFlowHistory) { export async function backupUserData() { let backedupData; try { - backedupData = await promisifiedBackground.backupUserData(); + backedupData = await submitRequestToBackground('backupUserData'); } catch (error) { log.error(error.message); throw error; @@ -794,7 +797,7 @@ export async function backupUserData() { export async function restoreUserData(jsonString) { try { - await promisifiedBackground.restoreUserData(jsonString); + await submitRequestToBackground('restoreUserData', [jsonString]); } catch (error) { log.error(error.message); throw error; @@ -807,9 +810,9 @@ export function updateTransactionGasFees(txId, txGasFees) { return async (dispatch) => { let updatedTransaction; try { - updatedTransaction = await promisifiedBackground.updateTransactionGasFees( - txId, - txGasFees, + updatedTransaction = await submitRequestToBackground( + 'updateTransactionGasFees', + [txId, txGasFees], ); } catch (error) { dispatch(txError(error)); @@ -825,9 +828,9 @@ export function updateSwapTransaction(txId, txSwap) { return async (dispatch) => { let updatedTransaction; try { - updatedTransaction = await promisifiedBackground.updateSwapTransaction( - txId, - txSwap, + updatedTransaction = await submitRequestToBackground( + 'updateSwapTransaction', + [txId, txSwap], ); } catch (error) { dispatch(txError(error)); @@ -844,7 +847,7 @@ export function updateTransaction(txData, dontShowLoadingIndicator) { !dontShowLoadingIndicator && dispatch(showLoadingIndication()); try { - await promisifiedBackground.updateTransaction(txData); + await submitRequestToBackground('updateTransaction', [txData]); } catch (error) { dispatch(updateTransactionParams(txData.id, txData.txParams)); dispatch(hideLoadingIndication()); @@ -888,11 +891,9 @@ export function addUnapprovedTransactionAndRouteToConfirmationPage( return async (dispatch) => { try { log.debug('background.addUnapprovedTransaction'); - const txMeta = await promisifiedBackground.addUnapprovedTransaction( - txParams, - ORIGIN_METAMASK, - type, - sendFlowHistory, + const txMeta = await submitRequestToBackground( + 'addUnapprovedTransaction', + [txParams, ORIGIN_METAMASK, type, sendFlowHistory], ); dispatch(showConfTxPage()); return txMeta; @@ -919,11 +920,11 @@ export function addUnapprovedTransactionAndRouteToConfirmationPage( */ export async function addUnapprovedTransaction(txParams, type) { log.debug('background.addUnapprovedTransaction'); - const txMeta = await promisifiedBackground.addUnapprovedTransaction( + const txMeta = await submitRequestToBackground('addUnapprovedTransaction', [ txParams, ORIGIN_METAMASK, type, - ); + ]); return txMeta; } @@ -931,7 +932,7 @@ export function updateAndApproveTx(txData, dontShowLoadingIndicator) { return (dispatch) => { !dontShowLoadingIndicator && dispatch(showLoadingIndication()); return new Promise((resolve, reject) => { - background.updateAndApproveTransaction(txData, (err) => { + callBackgroundMethod('updateAndApproveTransaction', [txData], (err) => { dispatch(updateTransactionParams(txData.id, txData.txParams)); dispatch(resetSendState()); @@ -965,7 +966,7 @@ export function updateAndApproveTx(txData, dontShowLoadingIndicator) { } export async function getTransactions(filters = {}) { - return await promisifiedBackground.getTransactions(filters); + return await submitRequestToBackground('getTransactions', [filters]); } export function completedTx(id) { @@ -1018,32 +1019,32 @@ export function txError(err) { ///: BEGIN:ONLY_INCLUDE_IN(flask) export function disableSnap(snapId) { return async (dispatch) => { - await promisifiedBackground.disableSnap(snapId); + await submitRequestToBackground('disableSnap', [snapId]); await forceUpdateMetamaskState(dispatch); }; } export function enableSnap(snapId) { return async (dispatch) => { - await promisifiedBackground.enableSnap(snapId); + await submitRequestToBackground('enableSnap', [snapId]); await forceUpdateMetamaskState(dispatch); }; } export function removeSnap(snapId) { return async (dispatch) => { - await promisifiedBackground.removeSnap(snapId); + await submitRequestToBackground('removeSnap', [snapId]); await forceUpdateMetamaskState(dispatch); }; } export async function removeSnapError(msgData) { - return promisifiedBackground.removeSnapError(msgData); + return submitRequestToBackground('removeSnapError', [msgData]); } export function dismissNotifications(ids) { return async (dispatch) => { - await promisifiedBackground.dismissNotifications(ids); + await submitRequestToBackground('dismissNotifications', [ids]); await forceUpdateMetamaskState(dispatch); }; } @@ -1066,7 +1067,9 @@ export function deleteExpiredNotifications() { }) .map(({ id }) => id); if (notificationIdsToDelete.length) { - await promisifiedBackground.dismissNotifications(notificationIdsToDelete); + await submitRequestToBackground('dismissNotifications', [ + notificationIdsToDelete, + ]); await forceUpdateMetamaskState(dispatch); } }; @@ -1074,7 +1077,7 @@ export function deleteExpiredNotifications() { export function markNotificationsAsRead(ids) { return async (dispatch) => { - await promisifiedBackground.markNotificationsAsRead(ids); + await submitRequestToBackground('markNotificationsAsRead', [ids]); await forceUpdateMetamaskState(dispatch); }; } @@ -1086,7 +1089,7 @@ export function cancelMsg(msgData) { let newState; try { - newState = await promisifiedBackground.cancelMessage(msgData.id); + newState = await submitRequestToBackground('cancelMessage', [msgData.id]); } finally { dispatch(hideLoadingIndication()); } @@ -1115,7 +1118,7 @@ export function cancelMsgs(msgDataList) { new Promise((resolve, reject) => { switch (type) { case MESSAGE_TYPE.ETH_SIGN_TYPED_DATA: - background.cancelTypedMessage(id, (err) => { + callBackgroundMethod('cancelTypedMessage', [id], (err) => { if (err) { reject(err); return; @@ -1124,7 +1127,7 @@ export function cancelMsgs(msgDataList) { }); return; case MESSAGE_TYPE.PERSONAL_SIGN: - background.cancelPersonalMessage(id, (err) => { + callBackgroundMethod('cancelPersonalMessage', [id], (err) => { if (err) { reject(err); return; @@ -1133,7 +1136,7 @@ export function cancelMsgs(msgDataList) { }); return; case MESSAGE_TYPE.ETH_DECRYPT: - background.cancelDecryptMessage(id, (err) => { + callBackgroundMethod('cancelDecryptMessage', [id], (err) => { if (err) { reject(err); return; @@ -1142,16 +1145,20 @@ export function cancelMsgs(msgDataList) { }); return; case MESSAGE_TYPE.ETH_GET_ENCRYPTION_PUBLIC_KEY: - background.cancelEncryptionPublicKeyMsg(id, (err) => { - if (err) { - reject(err); - return; - } - resolve(); - }); + callBackgroundMethod( + 'cancelEncryptionPublicKey', + [id], + (err) => { + if (err) { + reject(err); + return; + } + resolve(); + }, + ); return; case MESSAGE_TYPE.ETH_SIGN: - background.cancelMessage(id, (err) => { + callBackgroundMethod('cancelMessage', [id], (err) => { if (err) { reject(err); return; @@ -1194,7 +1201,9 @@ export function cancelPersonalMsg(msgData) { let newState; try { - newState = await promisifiedBackground.cancelPersonalMessage(msgData.id); + newState = await submitRequestToBackground('cancelPersonalMessage', [ + msgData.id, + ]); } finally { dispatch(hideLoadingIndication()); } @@ -1212,7 +1221,9 @@ export function cancelDecryptMsg(msgData) { let newState; try { - newState = await promisifiedBackground.cancelDecryptMessage(msgData.id); + newState = await submitRequestToBackground('cancelDecryptMessage', [ + msgData.id, + ]); } finally { dispatch(hideLoadingIndication()); } @@ -1230,9 +1241,9 @@ export function cancelEncryptionPublicKeyMsg(msgData) { let newState; try { - newState = await promisifiedBackground.cancelEncryptionPublicKey( + newState = await submitRequestToBackground('cancelEncryptionPublicKey', [ msgData.id, - ); + ]); } finally { dispatch(hideLoadingIndication()); } @@ -1250,7 +1261,9 @@ export function cancelTypedMsg(msgData) { let newState; try { - newState = await promisifiedBackground.cancelTypedMessage(msgData.id); + newState = await submitRequestToBackground('cancelTypedMessage', [ + msgData.id, + ]); } finally { dispatch(hideLoadingIndication()); } @@ -1266,7 +1279,7 @@ export function cancelTx(txData, _showLoadingIndication = true) { return (dispatch) => { _showLoadingIndication && dispatch(showLoadingIndication()); return new Promise((resolve, reject) => { - background.cancelTransaction(txData.id, (error) => { + callBackgroundMethod('cancelTransaction', [txData.id], (error) => { if (error) { reject(error); return; @@ -1307,7 +1320,7 @@ export function cancelTxs(txDataList) { const cancellations = txIds.map( (id) => new Promise((resolve, reject) => { - background.cancelTransaction(id, (err) => { + callBackgroundMethod('cancelTransaction', [id], (err) => { if (err) { reject(err); return; @@ -1341,7 +1354,7 @@ export function markPasswordForgotten() { return async (dispatch) => { try { await new Promise((resolve, reject) => { - return background.markPasswordForgotten((error) => { + callBackgroundMethod('markPasswordForgotten', [], (error) => { if (error) { reject(error); return; @@ -1361,7 +1374,7 @@ export function markPasswordForgotten() { export function unMarkPasswordForgotten() { return (dispatch) => { return new Promise((resolve) => { - background.unMarkPasswordForgotten(() => { + callBackgroundMethod('unMarkPasswordForgotten', [], () => { dispatch(forgotPassword(false)); resolve(); }); @@ -1489,7 +1502,7 @@ export function updateMetamaskState(newState) { const backgroundSetLocked = () => { return new Promise((resolve, reject) => { - background.setLocked((error) => { + callBackgroundMethod('setLocked', [], (error) => { if (error) { reject(error); return; @@ -1525,7 +1538,7 @@ export function lockMetamask() { async function _setSelectedAddress(address) { log.debug(`background.setSelectedAddress`); - await promisifiedBackground.setSelectedAddress(address); + await submitRequestToBackground('setSelectedAddress', [address]); } export function setSelectedAddress(address) { @@ -1592,13 +1605,17 @@ export function showAccountDetail(address) { export function addPermittedAccount(origin, address) { return async (dispatch) => { await new Promise((resolve, reject) => { - background.addPermittedAccount(origin, address, (error) => { - if (error) { - reject(error); - return; - } - resolve(); - }); + callBackgroundMethod( + 'addPermittedAccount', + [origin, address], + (error) => { + if (error) { + reject(error); + return; + } + resolve(); + }, + ); }); await forceUpdateMetamaskState(dispatch); }; @@ -1607,13 +1624,17 @@ export function addPermittedAccount(origin, address) { export function removePermittedAccount(origin, address) { return async (dispatch) => { await new Promise((resolve, reject) => { - background.removePermittedAccount(origin, address, (error) => { - if (error) { - reject(error); - return; - } - resolve(); - }); + callBackgroundMethod( + 'removePermittedAccount', + [origin, address], + (error) => { + if (error) { + reject(error); + return; + } + resolve(); + }, + ); }); await forceUpdateMetamaskState(dispatch); }; @@ -1647,7 +1668,12 @@ export function addToken( dispatch(showLoadingIndication()); } try { - await promisifiedBackground.addToken(address, symbol, decimals, image); + await submitRequestToBackground('addToken', [ + address, + symbol, + decimals, + image, + ]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -1665,7 +1691,7 @@ export function addToken( export function addDetectedTokens(newDetectedTokens) { return async (dispatch) => { try { - await promisifiedBackground.addDetectedTokens(newDetectedTokens); + await submitRequestToBackground('addDetectedTokens', [newDetectedTokens]); } catch (error) { log.error(error); } finally { @@ -1682,7 +1708,7 @@ export function addDetectedTokens(newDetectedTokens) { export function addImportedTokens(tokensToImport) { return async (dispatch) => { try { - await promisifiedBackground.addImportedTokens(tokensToImport); + await submitRequestToBackground('addImportedTokens', [tokensToImport]); } catch (error) { log.error(error); } finally { @@ -1711,7 +1737,7 @@ export function ignoreTokens({ dispatch(showLoadingIndication()); } try { - await promisifiedBackground.ignoreTokens(_tokensToIgnore); + await submitRequestToBackground('ignoreTokens', [_tokensToIgnore]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -1728,7 +1754,7 @@ export function ignoreTokens({ * @param tokens */ export async function getBalancesInSingleCall(tokens) { - return await promisifiedBackground.getBalancesInSingleCall(tokens); + return await submitRequestToBackground('getBalancesInSingleCall', [tokens]); } export function addCollectible(address, tokenID, dontShowLoadingIndicator) { @@ -1743,7 +1769,7 @@ export function addCollectible(address, tokenID, dontShowLoadingIndicator) { dispatch(showLoadingIndication()); } try { - await promisifiedBackground.addCollectible(address, tokenID); + await submitRequestToBackground('addCollectible', [address, tokenID]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -1770,10 +1796,10 @@ export function addCollectibleVerifyOwnership( dispatch(showLoadingIndication()); } try { - await promisifiedBackground.addCollectibleVerifyOwnership( + await submitRequestToBackground('addCollectibleVerifyOwnership', [ address, tokenID, - ); + ]); } catch (error) { if ( error.message.includes('This collectible is not owned by the user') || @@ -1807,7 +1833,10 @@ export function removeAndIgnoreCollectible( dispatch(showLoadingIndication()); } try { - await promisifiedBackground.removeAndIgnoreCollectible(address, tokenID); + await submitRequestToBackground('removeAndIgnoreCollectible', [ + address, + tokenID, + ]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -1830,7 +1859,7 @@ export function removeCollectible(address, tokenID, dontShowLoadingIndicator) { dispatch(showLoadingIndication()); } try { - await promisifiedBackground.removeCollectible(address, tokenID); + await submitRequestToBackground('removeCollectible', [address, tokenID]); } catch (error) { log.error(error); dispatch(displayWarning(error.message)); @@ -1842,7 +1871,9 @@ export function removeCollectible(address, tokenID, dontShowLoadingIndicator) { } export async function checkAndUpdateAllCollectiblesOwnershipStatus() { - await promisifiedBackground.checkAndUpdateAllCollectiblesOwnershipStatus(); + await submitRequestToBackground( + 'checkAndUpdateAllCollectiblesOwnershipStatus', + ); } export async function isCollectibleOwner( @@ -1850,19 +1881,19 @@ export async function isCollectibleOwner( collectibleAddress, collectibleId, ) { - return await promisifiedBackground.isCollectibleOwner( + return await submitRequestToBackground('isCollectibleOwner', [ ownerAddress, collectibleAddress, collectibleId, - ); + ]); } export async function checkAndUpdateSingleCollectibleOwnershipStatus( collectible, ) { - await promisifiedBackground.checkAndUpdateSingleCollectibleOwnershipStatus( - collectible, - false, + await submitRequestToBackground( + 'checkAndUpdateSingleCollectibleOwnershipStatus', + [collectible, false], ); } @@ -1871,11 +1902,11 @@ export async function getTokenStandardAndDetails( userAddress, tokenId, ) { - return await promisifiedBackground.getTokenStandardAndDetails( + return await submitRequestToBackground('getTokenStandardAndDetails', [ address, userAddress, tokenId, - ); + ]); } export function addTokens(tokens) { @@ -1899,7 +1930,7 @@ export function rejectWatchAsset(suggestedAssetID) { return async (dispatch) => { dispatch(showLoadingIndication()); try { - await promisifiedBackground.rejectWatchAsset(suggestedAssetID); + await submitRequestToBackground('rejectWatchAsset', [suggestedAssetID]); await forceUpdateMetamaskState(dispatch); } catch (error) { log.error(error); @@ -1916,7 +1947,7 @@ export function acceptWatchAsset(suggestedAssetID) { return async (dispatch) => { dispatch(showLoadingIndication()); try { - await promisifiedBackground.acceptWatchAsset(suggestedAssetID); + await submitRequestToBackground('acceptWatchAsset', [suggestedAssetID]); await forceUpdateMetamaskState(dispatch); } catch (error) { log.error(error); @@ -1945,10 +1976,9 @@ export function createCancelTransaction( return (dispatch) => { return new Promise((resolve, reject) => { - background.createCancelTransaction( - txId, - customGasSettings, - newTxMetaProps, + callBackgroundMethod( + 'createCancelTransaction', + [txId, customGasSettings, newTxMetaProps], (err, newState) => { if (err) { dispatch(displayWarning(err.message)); @@ -1978,10 +2008,9 @@ export function createSpeedUpTransaction( return (dispatch) => { return new Promise((resolve, reject) => { - background.createSpeedUpTransaction( - txId, - customGasSettings, - newTxMetaProps, + callBackgroundMethod( + 'createSpeedUpTransaction', + [txId, customGasSettings, newTxMetaProps], (err, newState) => { if (err) { dispatch(displayWarning(err.message)); @@ -2005,9 +2034,9 @@ export function createRetryTransaction(txId, customGasSettings) { return (dispatch) => { return new Promise((resolve, reject) => { - background.createSpeedUpTransaction( - txId, - customGasSettings, + callBackgroundMethod( + 'createSpeedUpTransaction', + [txId, customGasSettings], (err, newState) => { if (err) { dispatch(displayWarning(err.message)); @@ -2035,7 +2064,7 @@ export function setProviderType(type) { log.debug(`background.setProviderType`, type); try { - await promisifiedBackground.setProviderType(type); + await submitRequestToBackground('setProviderType', [type]); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem changing networks!')); @@ -2065,13 +2094,13 @@ export function updateAndSetCustomRpc( ); try { - await promisifiedBackground.updateAndSetCustomRpc( + await submitRequestToBackground('updateAndSetCustomRpc', [ newRpc, chainId, ticker, nickname || newRpc, rpcPrefs, - ); + ]); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem changing networks!')); @@ -2096,7 +2125,7 @@ export function editRpc( return async (dispatch) => { log.debug(`background.delRpcTarget: ${oldRpc}`); try { - promisifiedBackground.delCustomRpc(oldRpc); + submitRequestToBackground('delCustomRpc', [oldRpc]); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem removing network!')); @@ -2104,13 +2133,13 @@ export function editRpc( } try { - await promisifiedBackground.updateAndSetCustomRpc( + await submitRequestToBackground('updateAndSetCustomRpc', [ newRpc, chainId, ticker, nickname || newRpc, rpcPrefs, - ); + ]); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem changing networks!')); @@ -2131,12 +2160,12 @@ export function setRpcTarget(newRpc, chainId, ticker = 'ETH', nickname) { ); try { - await promisifiedBackground.setCustomRpc( + await submitRequestToBackground('setCustomRpc', [ newRpc, chainId, ticker, nickname || newRpc, - ); + ]); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem changing networks!')); @@ -2147,7 +2176,7 @@ export function setRpcTarget(newRpc, chainId, ticker = 'ETH', nickname) { export function rollbackToPreviousProvider() { return async (dispatch) => { try { - await promisifiedBackground.rollbackToPreviousProvider(); + await submitRequestToBackground('rollbackToPreviousProvider'); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem changing networks!')); @@ -2159,7 +2188,7 @@ export function delRpcTarget(oldRpc) { return (dispatch) => { log.debug(`background.delRpcTarget: ${oldRpc}`); return new Promise((resolve, reject) => { - background.delCustomRpc(oldRpc, (err) => { + callBackgroundMethod('delCustomRpc', [oldRpc], (err) => { if (err) { log.error(err); dispatch(displayWarning('Had a problem removing network!')); @@ -2181,12 +2210,12 @@ export function addToAddressBook(recipient, nickname = '', memo = '') { let set; try { - set = await promisifiedBackground.setAddressBook( + set = await submitRequestToBackground('setAddressBook', [ toChecksumHexAddress(recipient), nickname, chainId, memo, - ); + ]); } catch (error) { log.error(error); dispatch(displayWarning('Address book failed to update')); @@ -2207,10 +2236,10 @@ export function removeFromAddressBook(chainId, addressToRemove) { log.debug(`background.removeFromAddressBook`); return async () => { - await promisifiedBackground.removeFromAddressBook( + await submitRequestToBackground('removeFromAddressBook', [ chainId, toChecksumHexAddress(addressToRemove), - ); + ]); }; } @@ -2266,7 +2295,7 @@ export function hideAlert() { export function updateCollectibleDropDownState(value) { return async (dispatch) => { - await promisifiedBackground.updateCollectibleDropDownState(value); + await submitRequestToBackground('updateCollectibleDropDownState', [value]); await forceUpdateMetamaskState(dispatch); }; } @@ -2331,7 +2360,7 @@ export function exportAccount(password, address) { log.debug(`background.verifyPassword`); return new Promise((resolve, reject) => { - background.verifyPassword(password, function (err) { + callBackgroundMethod('verifyPassword', [password], function (err) { if (err) { log.error('Error in verifying password.'); dispatch(hideLoadingIndication()); @@ -2340,19 +2369,23 @@ export function exportAccount(password, address) { return; } log.debug(`background.exportAccount`); - background.exportAccount(address, function (err2, result) { - dispatch(hideLoadingIndication()); - - if (err2) { - log.error(err2); - dispatch(displayWarning('Had a problem exporting the account.')); - reject(err2); - return; - } + callBackgroundMethod( + 'exportAccount', + [address], + function (err2, result) { + dispatch(hideLoadingIndication()); + + if (err2) { + log.error(err2); + dispatch(displayWarning('Had a problem exporting the account.')); + reject(err2); + return; + } - dispatch(showPrivateKey(result)); - resolve(result); - }); + dispatch(showPrivateKey(result)); + resolve(result); + }, + ); }); }); }; @@ -2362,7 +2395,7 @@ export function exportAccounts(password, addresses) { return function (dispatch) { log.debug(`background.verifyPassword`); return new Promise((resolve, reject) => { - background.verifyPassword(password, function (err) { + callBackgroundMethod('verifyPassword', [password], function (err) { if (err) { log.error('Error in submitting password.'); reject(err); @@ -2372,17 +2405,21 @@ export function exportAccounts(password, addresses) { const accountPromises = addresses.map( (address) => new Promise((resolve2, reject2) => - background.exportAccount(address, function (err2, result) { - if (err2) { - log.error(err2); - dispatch( - displayWarning('Had a problem exporting the account.'), - ); - reject2(err2); - return; - } - resolve2(result); - }), + callBackgroundMethod( + 'exportAccount', + [address], + function (err2, result) { + if (err2) { + log.error(err2); + dispatch( + displayWarning('Had a problem exporting the account.'), + ); + reject2(err2); + return; + } + resolve2(result); + }, + ), ), ); resolve(Promise.all(accountPromises)); @@ -2404,7 +2441,7 @@ export function setAccountLabel(account, label) { log.debug(`background.setAccountLabel`); return new Promise((resolve, reject) => { - background.setAccountLabel(account, label, (err) => { + callBackgroundMethod('setAccountLabel', [account, label], (err) => { dispatch(hideLoadingIndication()); if (err) { @@ -2451,9 +2488,9 @@ export function setFeatureFlag(feature, activated, notificationType) { return (dispatch) => { dispatch(showLoadingIndication()); return new Promise((resolve, reject) => { - background.setFeatureFlag( - feature, - activated, + callBackgroundMethod( + 'setFeatureFlag', + [feature, activated], (err, updatedFeatureFlags) => { dispatch(hideLoadingIndication()); if (err) { @@ -2481,18 +2518,22 @@ export function setPreference(preference, value) { return (dispatch) => { dispatch(showLoadingIndication()); return new Promise((resolve, reject) => { - background.setPreference(preference, value, (err, updatedPreferences) => { - dispatch(hideLoadingIndication()); + callBackgroundMethod( + 'setPreference', + [preference, value], + (err, updatedPreferences) => { + dispatch(hideLoadingIndication()); - if (err) { - dispatch(displayWarning(err.message)); - reject(err); - return; - } + if (err) { + dispatch(displayWarning(err.message)); + reject(err); + return; + } - dispatch(updatePreferences(updatedPreferences)); - resolve(updatedPreferences); - }); + dispatch(updatePreferences(updatedPreferences)); + resolve(updatedPreferences); + }, + ); }); }; } @@ -2506,7 +2547,7 @@ export function updatePreferences(value) { export function setDefaultHomeActiveTabName(value) { return async (dispatch) => { - await promisifiedBackground.setDefaultHomeActiveTabName(value); + await submitRequestToBackground('setDefaultHomeActiveTabName', [value]); await forceUpdateMetamaskState(dispatch); }; } @@ -2536,7 +2577,7 @@ export function setCompletedOnboarding() { dispatch(showLoadingIndication()); try { - await promisifiedBackground.completeOnboarding(); + await submitRequestToBackground('completeOnboarding'); dispatch(completeOnboarding()); } catch (err) { dispatch(displayWarning(err.message)); @@ -2565,7 +2606,7 @@ export async function forceUpdateMetamaskState(dispatch) { let newState; try { - newState = await promisifiedBackground.getState(); + newState = await submitRequestToBackground('getState'); } catch (error) { dispatch(displayWarning(error.message)); throw error; @@ -2585,20 +2626,24 @@ export function setParticipateInMetaMetrics(val) { return (dispatch) => { log.debug(`background.setParticipateInMetaMetrics`); return new Promise((resolve, reject) => { - background.setParticipateInMetaMetrics(val, (err, metaMetricsId) => { - log.debug(err); - if (err) { - dispatch(displayWarning(err.message)); - reject(err); - return; - } + callBackgroundMethod( + 'setParticipateInMetaMetrics', + [val], + (err, metaMetricsId) => { + log.debug(err); + if (err) { + dispatch(displayWarning(err.message)); + reject(err); + return; + } - dispatch({ - type: actionConstants.SET_PARTICIPATE_IN_METAMETRICS, - value: val, - }); - resolve([val, metaMetricsId]); - }); + dispatch({ + type: actionConstants.SET_PARTICIPATE_IN_METAMETRICS, + value: val, + }); + resolve([val, metaMetricsId]); + }, + ); }); }; } @@ -2607,7 +2652,7 @@ export function setUseBlockie(val) { return (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.setUseBlockie`); - background.setUseBlockie(val, (err) => { + callBackgroundMethod('setUseBlockie', [val], (err) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -2625,7 +2670,7 @@ export function setUseNonceField(val) { dispatch(showLoadingIndication()); log.debug(`background.setUseNonceField`); try { - await promisifiedBackground.setUseNonceField(val); + await submitRequestToBackground('setUseNonceField', [val]); } catch (error) { dispatch(displayWarning(error.message)); } @@ -2641,7 +2686,7 @@ export function setUsePhishDetect(val) { return (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.setUsePhishDetect`); - background.setUsePhishDetect(val, (err) => { + callBackgroundMethod('setUsePhishDetect', [val], (err) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -2654,7 +2699,7 @@ export function setUseTokenDetection(val) { return (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.setUseTokenDetection`); - background.setUseTokenDetection(val, (err) => { + callBackgroundMethod('setUseTokenDetection', [val], (err) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -2667,7 +2712,7 @@ export function setUseCollectibleDetection(val) { return (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.setUseCollectibleDetection`); - background.setUseCollectibleDetection(val, (err) => { + callBackgroundMethod('setUseCollectibleDetection', [val], (err) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -2680,7 +2725,7 @@ export function setOpenSeaEnabled(val) { return (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.setOpenSeaEnabled`); - background.setOpenSeaEnabled(val, (err) => { + callBackgroundMethod('setOpenSeaEnabled', [val], (err) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -2693,7 +2738,7 @@ export function detectCollectibles() { return async (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.detectCollectibles`); - await promisifiedBackground.detectCollectibles(); + await submitRequestToBackground('detectCollectibles'); dispatch(hideLoadingIndication()); await forceUpdateMetamaskState(dispatch); }; @@ -2703,7 +2748,7 @@ export function setAdvancedGasFee(val) { return (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.setAdvancedGasFee`); - background.setAdvancedGasFee(val, (err) => { + callBackgroundMethod('setAdvancedGasFee', [val], (err) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -2717,7 +2762,7 @@ export function setEIP1559V2Enabled(val) { dispatch(showLoadingIndication()); log.debug(`background.setEIP1559V2Enabled`); try { - await promisifiedBackground.setEIP1559V2Enabled(val); + await submitRequestToBackground('setEIP1559V2Enabled', [val]); } finally { dispatch(hideLoadingIndication()); } @@ -2729,7 +2774,7 @@ export function setTheme(val) { dispatch(showLoadingIndication()); log.debug(`background.setTheme`); try { - await promisifiedBackground.setTheme(val); + await submitRequestToBackground('setTheme', [val]); } finally { dispatch(hideLoadingIndication()); } @@ -2740,7 +2785,7 @@ export function setIpfsGateway(val) { return (dispatch) => { dispatch(showLoadingIndication()); log.debug(`background.setIpfsGateway`); - background.setIpfsGateway(val, (err) => { + callBackgroundMethod('setIpfsGateway', [val], (err) => { dispatch(hideLoadingIndication()); if (err) { dispatch(displayWarning(err.message)); @@ -2761,7 +2806,10 @@ export function updateCurrentLocale(key) { try { await loadRelativeTimeFormatLocaleData(key); const localeMessages = await fetchLocale(key); - const textDirection = await promisifiedBackground.setCurrentLocale(key); + const textDirection = await submitRequestToBackground( + 'setCurrentLocale', + [key], + ); await switchDirection(textDirection); dispatch(setCurrentLocale(key, localeMessages)); } catch (error) { @@ -2817,25 +2865,24 @@ export function setPendingTokens(pendingTokens) { export function setSwapsLiveness(swapsLiveness) { return async (dispatch) => { - await promisifiedBackground.setSwapsLiveness(swapsLiveness); + await submitRequestToBackground('setSwapsLiveness', [swapsLiveness]); await forceUpdateMetamaskState(dispatch); }; } export function setSwapsFeatureFlags(featureFlags) { return async (dispatch) => { - await promisifiedBackground.setSwapsFeatureFlags(featureFlags); + await submitRequestToBackground('setSwapsFeatureFlags', [featureFlags]); await forceUpdateMetamaskState(dispatch); }; } export function fetchAndSetQuotes(fetchParams, fetchParamsMetaData) { return async (dispatch) => { - const [quotes, selectedAggId] = - await promisifiedBackground.fetchAndSetQuotes( - fetchParams, - fetchParamsMetaData, - ); + const [quotes, selectedAggId] = await submitRequestToBackground( + 'fetchAndSetQuotes', + [fetchParams, fetchParamsMetaData], + ); await forceUpdateMetamaskState(dispatch); return [quotes, selectedAggId]; }; @@ -2843,28 +2890,28 @@ export function fetchAndSetQuotes(fetchParams, fetchParamsMetaData) { export function setSelectedQuoteAggId(aggId) { return async (dispatch) => { - await promisifiedBackground.setSelectedQuoteAggId(aggId); + await submitRequestToBackground('setSelectedQuoteAggId', [aggId]); await forceUpdateMetamaskState(dispatch); }; } export function setSwapsTokens(tokens) { return async (dispatch) => { - await promisifiedBackground.setSwapsTokens(tokens); + await submitRequestToBackground('setSwapsTokens', [tokens]); await forceUpdateMetamaskState(dispatch); }; } export function clearSwapsQuotes() { return async (dispatch) => { - await promisifiedBackground.clearSwapsQuotes(); + await submitRequestToBackground('clearSwapsQuotes'); await forceUpdateMetamaskState(dispatch); }; } export function resetBackgroundSwapsState() { return async (dispatch) => { - const id = await promisifiedBackground.resetSwapsState(); + const id = await submitRequestToBackground('resetSwapsState'); await forceUpdateMetamaskState(dispatch); return id; }; @@ -2872,21 +2919,21 @@ export function resetBackgroundSwapsState() { export function setCustomApproveTxData(data) { return async (dispatch) => { - await promisifiedBackground.setCustomApproveTxData(data); + await submitRequestToBackground('setCustomApproveTxData', [data]); await forceUpdateMetamaskState(dispatch); }; } export function setSwapsTxGasPrice(gasPrice) { return async (dispatch) => { - await promisifiedBackground.setSwapsTxGasPrice(gasPrice); + await submitRequestToBackground('setSwapsTxGasPrice', [gasPrice]); await forceUpdateMetamaskState(dispatch); }; } export function setSwapsTxGasLimit(gasLimit) { return async (dispatch) => { - await promisifiedBackground.setSwapsTxGasLimit(gasLimit, true); + await submitRequestToBackground('setSwapsTxGasLimit', [gasLimit, true]); await forceUpdateMetamaskState(dispatch); }; } @@ -2898,11 +2945,11 @@ export function updateCustomSwapsEIP1559GasParams({ }) { return async (dispatch) => { await Promise.all([ - promisifiedBackground.setSwapsTxGasLimit(gasLimit), - promisifiedBackground.setSwapsTxMaxFeePerGas(maxFeePerGas), - promisifiedBackground.setSwapsTxMaxFeePriorityPerGas( + submitRequestToBackground('setSwapsTxGasLimit', [gasLimit]), + submitRequestToBackground('setSwapsTxMaxFeePerGas', [maxFeePerGas]), + submitRequestToBackground('setSwapsTxMaxFeePriorityPerGas', [ maxPriorityFeePerGas, - ), + ]), ]); await forceUpdateMetamaskState(dispatch); }; @@ -2910,80 +2957,84 @@ export function updateCustomSwapsEIP1559GasParams({ export function updateSwapsUserFeeLevel(swapsCustomUserFeeLevel) { return async (dispatch) => { - await promisifiedBackground.setSwapsUserFeeLevel(swapsCustomUserFeeLevel); + await submitRequestToBackground('setSwapsUserFeeLevel', [ + swapsCustomUserFeeLevel, + ]); await forceUpdateMetamaskState(dispatch); }; } export function setSwapsQuotesPollingLimitEnabled(quotesPollingLimitEnabled) { return async (dispatch) => { - await promisifiedBackground.setSwapsQuotesPollingLimitEnabled( + await submitRequestToBackground('setSwapsQuotesPollingLimitEnabled', [ quotesPollingLimitEnabled, - ); + ]); await forceUpdateMetamaskState(dispatch); }; } export function customSwapsGasParamsUpdated(gasLimit, gasPrice) { return async (dispatch) => { - await promisifiedBackground.setSwapsTxGasPrice(gasPrice); - await promisifiedBackground.setSwapsTxGasLimit(gasLimit, true); + await submitRequestToBackground('setSwapsTxGasPrice', [gasPrice]); + await submitRequestToBackground('setSwapsTxGasLimit', [gasLimit, true]); await forceUpdateMetamaskState(dispatch); }; } export function setTradeTxId(tradeTxId) { return async (dispatch) => { - await promisifiedBackground.setTradeTxId(tradeTxId); + await submitRequestToBackground('setTradeTxId', [tradeTxId]); await forceUpdateMetamaskState(dispatch); }; } export function setApproveTxId(approveTxId) { return async (dispatch) => { - await promisifiedBackground.setApproveTxId(approveTxId); + await submitRequestToBackground('setApproveTxId', [approveTxId]); await forceUpdateMetamaskState(dispatch); }; } export function safeRefetchQuotes() { return async (dispatch) => { - await promisifiedBackground.safeRefetchQuotes(); + await submitRequestToBackground('safeRefetchQuotes'); await forceUpdateMetamaskState(dispatch); }; } export function stopPollingForQuotes() { return async (dispatch) => { - await promisifiedBackground.stopPollingForQuotes(); + await submitRequestToBackground('stopPollingForQuotes'); await forceUpdateMetamaskState(dispatch); }; } export function setBackgroundSwapRouteState(routeState) { return async (dispatch) => { - await promisifiedBackground.setBackgroundSwapRouteState(routeState); + await submitRequestToBackground('setBackgroundSwapRouteState', [ + routeState, + ]); await forceUpdateMetamaskState(dispatch); }; } export function resetSwapsPostFetchState() { return async (dispatch) => { - await promisifiedBackground.resetPostFetchState(); + await submitRequestToBackground('resetPostFetchState'); await forceUpdateMetamaskState(dispatch); }; } export function setSwapsErrorKey(errorKey) { return async (dispatch) => { - await promisifiedBackground.setSwapsErrorKey(errorKey); + await submitRequestToBackground('setSwapsErrorKey', [errorKey]); await forceUpdateMetamaskState(dispatch); }; } export function setInitialGasEstimate(initialAggId) { return async (dispatch) => { - await promisifiedBackground.setInitialGasEstimate(initialAggId); + await submitRequestToBackground('setInitialGasEstimate', [initialAggId]); await forceUpdateMetamaskState(dispatch); }; } @@ -2992,8 +3043,9 @@ export function setInitialGasEstimate(initialAggId) { export function requestAccountsPermissionWithId(origin) { return async (dispatch) => { - const id = await promisifiedBackground.requestAccountsPermissionWithId( - origin, + const id = await submitRequestToBackground( + 'requestAccountsPermissionWithId', + [origin], ); await forceUpdateMetamaskState(dispatch); return id; @@ -3007,7 +3059,7 @@ export function requestAccountsPermissionWithId(origin) { */ export function approvePermissionsRequest(request) { return (dispatch) => { - background.approvePermissionsRequest(request, (err) => { + callBackgroundMethod('approvePermissionsRequest', [request], (err) => { if (err) { dispatch(displayWarning(err.message)); } @@ -3023,7 +3075,7 @@ export function approvePermissionsRequest(request) { export function rejectPermissionsRequest(requestId) { return (dispatch) => { return new Promise((resolve, reject) => { - background.rejectPermissionsRequest(requestId, (err) => { + callBackgroundMethod('rejectPermissionsRequest', [requestId], (err) => { if (err) { dispatch(displayWarning(err.message)); reject(err); @@ -3042,7 +3094,7 @@ export function rejectPermissionsRequest(requestId) { */ export function removePermissionsFor(subjects) { return (dispatch) => { - background.removePermissionsFor(subjects, (err) => { + callBackgroundMethod('removePermissionsFor', [subjects], (err) => { if (err) { dispatch(displayWarning(err.message)); } @@ -3061,7 +3113,7 @@ export function removePermissionsFor(subjects) { */ export function resolvePendingApproval(id, value) { return async (dispatch) => { - await promisifiedBackground.resolvePendingApproval(id, value); + await submitRequestToBackground('resolvePendingApproval', [id, value]); // Before closing the current window, check if any additional confirmations // are added as a result of this confirmation being accepted const { pendingApprovals } = await forceUpdateMetamaskState(dispatch); @@ -3080,7 +3132,7 @@ export function resolvePendingApproval(id, value) { */ export function rejectPendingApproval(id, error) { return async (dispatch) => { - await promisifiedBackground.rejectPendingApproval(id, error); + await submitRequestToBackground('rejectPendingApproval', [id, error]); // Before closing the current window, check if any additional confirmations // are added as a result of this confirmation being rejected const { pendingApprovals } = await forceUpdateMetamaskState(dispatch); @@ -3093,7 +3145,7 @@ export function rejectPendingApproval(id, error) { export function setFirstTimeFlowType(type) { return (dispatch) => { log.debug(`background.setFirstTimeFlowType`); - background.setFirstTimeFlowType(type, (err) => { + callBackgroundMethod('setFirstTimeFlowType', [type], (err) => { if (err) { dispatch(displayWarning(err.message)); } @@ -3135,7 +3187,7 @@ export function setNewTokensImported(newTokensImported) { export function setLastActiveTime() { return (dispatch) => { - background.setLastActiveTime((err) => { + callBackgroundMethod('setLastActiveTime', [], (err) => { if (err) { dispatch(displayWarning(err.message)); } @@ -3146,14 +3198,14 @@ export function setLastActiveTime() { export function setDismissSeedBackUpReminder(value) { return async (dispatch) => { dispatch(showLoadingIndication()); - await promisifiedBackground.setDismissSeedBackUpReminder(value); + await submitRequestToBackground('setDismissSeedBackUpReminder', [value]); dispatch(hideLoadingIndication()); }; } export function setConnectedStatusPopoverHasBeenShown() { return () => { - background.setConnectedStatusPopoverHasBeenShown((err) => { + callBackgroundMethod('setConnectedStatusPopoverHasBeenShown', [], (err) => { if (err) { throw new Error(err.message); } @@ -3163,7 +3215,7 @@ export function setConnectedStatusPopoverHasBeenShown() { export function setRecoveryPhraseReminderHasBeenShown() { return () => { - background.setRecoveryPhraseReminderHasBeenShown((err) => { + callBackgroundMethod('setRecoveryPhraseReminderHasBeenShown', [], (err) => { if (err) { throw new Error(err.message); } @@ -3173,11 +3225,15 @@ export function setRecoveryPhraseReminderHasBeenShown() { export function setRecoveryPhraseReminderLastShown(lastShown) { return () => { - background.setRecoveryPhraseReminderLastShown(lastShown, (err) => { - if (err) { - throw new Error(err.message); - } - }); + callBackgroundMethod( + 'setRecoveryPhraseReminderLastShown', + [lastShown], + (err) => { + if (err) { + throw new Error(err.message); + } + }, + ); }; } @@ -3213,11 +3269,15 @@ export function getContractMethodData(data = '') { return getMethodDataAsync(fourBytePrefix).then(({ name, params }) => { dispatch(loadingMethodDataFinished()); - background.addKnownMethodData(fourBytePrefix, { name, params }, (err) => { - if (err) { - dispatch(displayWarning(err.message)); - } - }); + callBackgroundMethod( + 'addKnownMethodData', + [fourBytePrefix, { name, params }], + (err) => { + if (err) { + dispatch(displayWarning(err.message)); + } + }, + ); return { name, params }; }); }; @@ -3239,14 +3299,18 @@ export function setSeedPhraseBackedUp(seedPhraseBackupState) { return (dispatch) => { log.debug(`background.setSeedPhraseBackedUp`); return new Promise((resolve, reject) => { - background.setSeedPhraseBackedUp(seedPhraseBackupState, (err) => { - if (err) { - dispatch(displayWarning(err.message)); - reject(err); - return; - } - forceUpdateMetamaskState(dispatch).then(resolve).catch(reject); - }); + callBackgroundMethod( + 'setSeedPhraseBackedUp', + [seedPhraseBackupState], + (err) => { + if (err) { + dispatch(displayWarning(err.message)); + reject(err); + return; + } + forceUpdateMetamaskState(dispatch).then(resolve).catch(reject); + }, + ); }); }; } @@ -3254,7 +3318,7 @@ export function setSeedPhraseBackedUp(seedPhraseBackupState) { export function initializeThreeBox() { return (dispatch) => { return new Promise((resolve, reject) => { - background.initializeThreeBox((err) => { + callBackgroundMethod('initializeThreeBox', [], (err) => { if (err) { dispatch(displayWarning(err.message)); reject(err); @@ -3269,7 +3333,7 @@ export function initializeThreeBox() { export function setShowRestorePromptToFalse() { return (dispatch) => { return new Promise((resolve, reject) => { - background.setShowRestorePromptToFalse((err) => { + callBackgroundMethod('setShowRestorePromptToFalse', [], (err) => { if (err) { dispatch(displayWarning(err.message)); reject(err); @@ -3284,7 +3348,7 @@ export function setShowRestorePromptToFalse() { export function turnThreeBoxSyncingOn() { return (dispatch) => { return new Promise((resolve, reject) => { - background.turnThreeBoxSyncingOn((err) => { + callBackgroundMethod('turnThreeBoxSyncingOn', [], (err) => { if (err) { dispatch(displayWarning(err.message)); reject(err); @@ -3299,7 +3363,7 @@ export function turnThreeBoxSyncingOn() { export function restoreFromThreeBox(accountAddress) { return (dispatch) => { return new Promise((resolve, reject) => { - background.restoreFromThreeBox(accountAddress, (err) => { + callBackgroundMethod('restoreFromThreeBox', [accountAddress], (err) => { if (err) { dispatch(displayWarning(err.message)); reject(err); @@ -3314,7 +3378,7 @@ export function restoreFromThreeBox(accountAddress) { export function getThreeBoxLastUpdated() { return (dispatch) => { return new Promise((resolve, reject) => { - background.getThreeBoxLastUpdated((err, lastUpdated) => { + callBackgroundMethod('getThreeBoxLastUpdated', [], (err, lastUpdated) => { if (err) { dispatch(displayWarning(err.message)); reject(err); @@ -3329,14 +3393,18 @@ export function getThreeBoxLastUpdated() { export function setThreeBoxSyncingPermission(threeBoxSyncingAllowed) { return (dispatch) => { return new Promise((resolve, reject) => { - background.setThreeBoxSyncingPermission(threeBoxSyncingAllowed, (err) => { - if (err) { - dispatch(displayWarning(err.message)); - reject(err); - return; - } - resolve(); - }); + callBackgroundMethod( + 'setThreeBoxSyncingPermission', + [threeBoxSyncingAllowed], + (err) => { + if (err) { + dispatch(displayWarning(err.message)); + reject(err); + return; + } + resolve(); + }, + ); }); }; } @@ -3361,7 +3429,7 @@ export function getNextNonce() { const address = getState().metamask.selectedAddress; let nextNonce; try { - nextNonce = await promisifiedBackground.getNextNonce(address); + nextNonce = await submitRequestToBackground('getNextNonce', [address]); } catch (error) { dispatch(displayWarning(error.message)); throw error; @@ -3380,8 +3448,9 @@ export function setRequestAccountTabIds(requestAccountTabIds) { export function getRequestAccountTabIds() { return async (dispatch) => { - const requestAccountTabIds = - await promisifiedBackground.getRequestAccountTabIds(); + const requestAccountTabIds = await submitRequestToBackground( + 'getRequestAccountTabIds', + ); dispatch(setRequestAccountTabIds(requestAccountTabIds)); }; } @@ -3395,8 +3464,9 @@ export function setOpenMetamaskTabsIDs(openMetaMaskTabIDs) { export function getOpenMetamaskTabsIds() { return async (dispatch) => { - const openMetaMaskTabIDs = - await promisifiedBackground.getOpenMetamaskTabsIds(); + const openMetaMaskTabIDs = await submitRequestToBackground( + 'getOpenMetamaskTabsIds', + ); dispatch(setOpenMetamaskTabsIDs(openMetaMaskTabIDs)); }; } @@ -3418,13 +3488,13 @@ export function getCurrentWindowTab() { export function setLedgerTransportPreference(value) { return async (dispatch) => { dispatch(showLoadingIndication()); - await promisifiedBackground.setLedgerTransportPreference(value); + await submitRequestToBackground('setLedgerTransportPreference', [value]); dispatch(hideLoadingIndication()); }; } export async function attemptLedgerTransportCreation() { - return await promisifiedBackground.attemptLedgerTransportCreation(); + return await submitRequestToBackground('attemptLedgerTransportCreation'); } export function captureSingleException(error) { @@ -3449,13 +3519,13 @@ export function captureSingleException(error) { */ export function estimateGas(params) { - return promisifiedBackground.estimateGas(params); + return submitRequestToBackground('estimateGas', [params]); } export async function updateTokenType(tokenAddress) { let token = {}; try { - token = await promisifiedBackground.updateTokenType(tokenAddress); + token = await submitRequestToBackground('updateTokenType', [tokenAddress]); } catch (error) { log.error(error); } @@ -3470,7 +3540,7 @@ export async function updateTokenType(tokenAddress) { * continue. */ export function getGasFeeEstimatesAndStartPolling() { - return promisifiedBackground.getGasFeeEstimatesAndStartPolling(); + return submitRequestToBackground('getGasFeeEstimatesAndStartPolling'); } /** @@ -3481,32 +3551,34 @@ export function getGasFeeEstimatesAndStartPolling() { * `getGasFeeEstimatesAndStartPolling`. */ export function disconnectGasFeeEstimatePoller(pollToken) { - return promisifiedBackground.disconnectGasFeeEstimatePoller(pollToken); + return submitRequestToBackground('disconnectGasFeeEstimatePoller', [ + pollToken, + ]); } export async function addPollingTokenToAppState(pollingToken) { - return promisifiedBackground.addPollingTokenToAppState( + return submitRequestToBackground('addPollingTokenToAppState', [ pollingToken, POLLING_TOKEN_ENVIRONMENT_TYPES[getEnvironmentType()], - ); + ]); } export async function removePollingTokenFromAppState(pollingToken) { - return promisifiedBackground.removePollingTokenFromAppState( + return submitRequestToBackground('removePollingTokenFromAppState', [ pollingToken, POLLING_TOKEN_ENVIRONMENT_TYPES[getEnvironmentType()], - ); + ]); } export function getGasFeeTimeEstimate(maxPriorityFeePerGas, maxFeePerGas) { - return promisifiedBackground.getGasFeeTimeEstimate( + return submitRequestToBackground('getGasFeeTimeEstimate', [ maxPriorityFeePerGas, maxFeePerGas, - ); + ]); } export async function closeNotificationPopup() { - await promisifiedBackground.markNotificationPopupAsAutomaticallyClosed(); + await submitRequestToBackground('markNotificationPopupAsAutomaticallyClosed'); global.platform.closeCurrentWindow(); } @@ -3524,26 +3596,26 @@ export async function closeNotificationPopup() { * @returns {Promise} */ export function trackMetaMetricsEvent(payload, options) { - return promisifiedBackground.trackMetaMetricsEvent(payload, options); + return submitRequestToBackground('trackMetaMetricsEvent', [payload, options]); } export function createEventFragment(options) { - return promisifiedBackground.createEventFragment(options); + return submitRequestToBackground('createEventFragment', [options]); } export function createTransactionEventFragment(transactionId, event) { - return promisifiedBackground.createTransactionEventFragment( + return submitRequestToBackground('createTransactionEventFragment', [ transactionId, event, - ); + ]); } export function updateEventFragment(id, payload) { - return promisifiedBackground.updateEventFragment(id, payload); + return submitRequestToBackground('updateEventFragment', [id, payload]); } export function finalizeEventFragment(id, options) { - return promisifiedBackground.finalizeEventFragment(id, options); + return submitRequestToBackground('finalizeEventFragment', [id, options]); } /** @@ -3551,25 +3623,28 @@ export function finalizeEventFragment(id, options) { * @param {MetaMetricsPageOptions} options - options for handling the page view */ export function trackMetaMetricsPage(payload, options) { - return promisifiedBackground.trackMetaMetricsPage(payload, options); + return submitRequestToBackground('trackMetaMetricsPage', [payload, options]); } export function updateViewedNotifications(notificationIdViewedStatusMap) { - return promisifiedBackground.updateViewedNotifications( + return submitRequestToBackground('updateViewedNotifications', [ notificationIdViewedStatusMap, - ); + ]); } export async function setAlertEnabledness(alertId, enabledness) { - await promisifiedBackground.setAlertEnabledness(alertId, enabledness); + await submitRequestToBackground('setAlertEnabledness', [ + alertId, + enabledness, + ]); } export async function setUnconnectedAccountAlertShown(origin) { - await promisifiedBackground.setUnconnectedAccountAlertShown(origin); + await submitRequestToBackground('setUnconnectedAccountAlertShown', [origin]); } export async function setWeb3ShimUsageAlertDismissed(origin) { - await promisifiedBackground.setWeb3ShimUsageAlertDismissed(origin); + await submitRequestToBackground('setWeb3ShimUsageAlertDismissed', [origin]); } // Smart Transactions Controller @@ -3587,11 +3662,13 @@ export async function setSmartTransactionsOptInStatus( stx_prev_user_opt_in: prevOptInState, }, }); - await promisifiedBackground.setSmartTransactionsOptInStatus(optInState); + await submitRequestToBackground('setSmartTransactionsOptInStatus', [ + optInState, + ]); } export function clearSmartTransactionFees() { - promisifiedBackground.clearSmartTransactionFees(); + submitRequestToBackground('clearSmartTransactionFees'); } export function fetchSmartTransactionFees( @@ -3603,11 +3680,10 @@ export function fetchSmartTransactionFees( approveTxParams.value = '0x0'; } try { - const smartTransactionFees = - await promisifiedBackground.fetchSmartTransactionFees( - unsignedTransaction, - approveTxParams, - ); + const smartTransactionFees = await await submitRequestToBackground( + 'fetchSmartTransactionFees', + [unsignedTransaction, approveTxParams], + ); dispatch({ type: actionConstants.SET_SMART_TRANSACTIONS_ERROR, payload: null, @@ -3648,10 +3724,10 @@ const createSignedTransactions = async ( } return unsignedTransactionWithFees; }); - const signedTransactions = - await promisifiedBackground.approveTransactionsWithSameNonce( - unsignedTransactionsWithFees, - ); + const signedTransactions = await submitRequestToBackground( + 'approveTransactionsWithSameNonce', + [unsignedTransactionsWithFees], + ); return signedTransactions; }; @@ -3670,11 +3746,16 @@ export function signAndSendSmartTransaction({ true, ); try { - const response = await promisifiedBackground.submitSignedTransactions({ - signedTransactions, - signedCanceledTransactions, - txParams: unsignedTransaction, - }); // Returns e.g.: { uuid: 'dP23W7c2kt4FK9TmXOkz1UM2F20' } + const response = await submitRequestToBackground( + 'submitSignedTransactions', + [ + { + signedTransactions, + signedCanceledTransactions, + txParams: unsignedTransaction, + }, + ], + ); // Returns e.g.: { uuid: 'dP23W7c2kt4FK9TmXOkz1UM2F20' } return response.uuid; } catch (e) { log.error(e); @@ -3693,10 +3774,12 @@ export function signAndSendSmartTransaction({ export function updateSmartTransaction(uuid, txData) { return async (dispatch) => { try { - await promisifiedBackground.updateSmartTransaction({ - uuid, - ...txData, - }); + await submitRequestToBackground('updateSmartTransaction', [ + { + uuid, + ...txData, + }, + ]); } catch (e) { log.error(e); if (e.message.startsWith('Fetch error:')) { @@ -3714,7 +3797,9 @@ export function updateSmartTransaction(uuid, txData) { export function setSmartTransactionsRefreshInterval(refreshInterval) { return async () => { try { - await promisifiedBackground.setStatusRefreshInterval(refreshInterval); + await submitRequestToBackground('setStatusRefreshInterval', [ + refreshInterval, + ]); } catch (e) { log.error(e); } @@ -3724,7 +3809,7 @@ export function setSmartTransactionsRefreshInterval(refreshInterval) { export function cancelSmartTransaction(uuid) { return async (dispatch) => { try { - await promisifiedBackground.cancelSmartTransaction(uuid); + await submitRequestToBackground('cancelSmartTransaction', [uuid]); } catch (e) { log.error(e); if (e.message.startsWith('Fetch error:')) { @@ -3742,7 +3827,7 @@ export function cancelSmartTransaction(uuid) { export function fetchSmartTransactionsLiveness() { return async () => { try { - await promisifiedBackground.fetchSmartTransactionsLiveness(); + await submitRequestToBackground('fetchSmartTransactionsLiveness'); } catch (e) { log.error(e); } @@ -3757,28 +3842,30 @@ export function dismissSmartTransactionsErrorMessage() { // DetectTokenController export async function detectNewTokens() { - return promisifiedBackground.detectNewTokens(); + return submitRequestToBackground('detectNewTokens'); } // App state export function hideTestNetMessage() { - return promisifiedBackground.setShowTestnetMessageInDropdown(false); + return submitRequestToBackground('setShowTestnetMessageInDropdown', [false]); } export function setCollectiblesDetectionNoticeDismissed() { - return promisifiedBackground.setCollectiblesDetectionNoticeDismissed(true); + return submitRequestToBackground('setCollectiblesDetectionNoticeDismissed', [ + true, + ]); } export function setEnableEIP1559V2NoticeDismissed() { - return promisifiedBackground.setEnableEIP1559V2NoticeDismissed(true); + return submitRequestToBackground('setEnableEIP1559V2NoticeDismissed', [true]); } export function setCustomNetworkListEnabled(customNetworkListEnabled) { return async () => { try { - await promisifiedBackground.setCustomNetworkListEnabled( + await submitRequestToBackground('setCustomNetworkListEnabled', [ customNetworkListEnabled, - ); + ]); } catch (error) { log.error(error); } @@ -3786,33 +3873,36 @@ export function setCustomNetworkListEnabled(customNetworkListEnabled) { } export function setFirstTimeUsedNetwork(chainId) { - return promisifiedBackground.setFirstTimeUsedNetwork(chainId); + return submitRequestToBackground('setFirstTimeUsedNetwork', [chainId]); } // QR Hardware Wallets export async function submitQRHardwareCryptoHDKey(cbor) { - await promisifiedBackground.submitQRHardwareCryptoHDKey(cbor); + await submitRequestToBackground('submitQRHardwareCryptoHDKey', [cbor]); } export async function submitQRHardwareCryptoAccount(cbor) { - await promisifiedBackground.submitQRHardwareCryptoAccount(cbor); + await submitRequestToBackground('submitQRHardwareCryptoAccount', [cbor]); } export function cancelSyncQRHardware() { return async (dispatch) => { dispatch(hideLoadingIndication()); - await promisifiedBackground.cancelSyncQRHardware(); + await submitRequestToBackground('cancelSyncQRHardware'); }; } export async function submitQRHardwareSignature(requestId, cbor) { - await promisifiedBackground.submitQRHardwareSignature(requestId, cbor); + await submitRequestToBackground('submitQRHardwareSignature', [ + requestId, + cbor, + ]); } export function cancelQRHardwareSignRequest() { return async (dispatch) => { dispatch(hideLoadingIndication()); - await promisifiedBackground.cancelQRHardwareSignRequest(); + await submitRequestToBackground('cancelQRHardwareSignRequest'); }; } @@ -3820,7 +3910,7 @@ export function addCustomNetwork(customRpc) { return async (dispatch) => { try { dispatch(setNewCustomNetworkAdded(customRpc)); - await promisifiedBackground.addCustomNetwork(customRpc); + await submitRequestToBackground('addCustomNetwork', [customRpc]); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem changing networks!')); @@ -3831,10 +3921,10 @@ export function addCustomNetwork(customRpc) { export function requestAddNetworkApproval(customRpc, originIsMetaMask) { return async (dispatch) => { try { - await promisifiedBackground.requestAddNetworkApproval( + await submitRequestToBackground('requestAddNetworkApproval', [ customRpc, originIsMetaMask, - ); + ]); } catch (error) { log.error(error); dispatch(displayWarning('Had a problem changing networks!')); diff --git a/ui/store/actions.test.js b/ui/store/actions.test.js index 4fed90e1f949..49a426396d49 100644 --- a/ui/store/actions.test.js +++ b/ui/store/actions.test.js @@ -7,6 +7,7 @@ import { TRANSACTION_STATUSES } from '../../shared/constants/transaction'; import { DEVICE_NAMES } from '../../shared/constants/hardware-wallets'; import { GAS_LIMITS } from '../../shared/constants/gas'; import * as actions from './actions'; +import { _setBackgroundConnection } from './action-queue'; const middleware = [thunk]; const defaultState = { @@ -56,7 +57,7 @@ describe('Actions', () => { cb(), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -81,7 +82,7 @@ describe('Actions', () => { background.submitPassword.callsFake((_, cb) => cb(new Error('error'))); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -111,7 +112,7 @@ describe('Actions', () => { background.unMarkPasswordForgotten.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch( actions.createNewVaultAndRestore('password', 'test'), @@ -125,7 +126,7 @@ describe('Actions', () => { background.createNewVaultAndRestore.callsFake((_, __, cb) => cb()); background.unMarkPasswordForgotten.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -152,7 +153,7 @@ describe('Actions', () => { cb(new Error('error')), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -183,7 +184,7 @@ describe('Actions', () => { cb(null, Array.from(Buffer.from('test').values())), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.requestRevealSeedWords()); expect(verifyPassword.callCount).toStrictEqual(1); @@ -198,7 +199,7 @@ describe('Actions', () => { cb(new Error('error')); }); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -244,7 +245,7 @@ describe('Actions', () => { const removeAccount = background.removeAccount.callsFake((_, cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ 'SHOW_LOADING_INDICATION', @@ -271,7 +272,7 @@ describe('Actions', () => { cb(new Error('error')); }); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -299,7 +300,7 @@ describe('Actions', () => { const resetAccount = background.resetAccount.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -319,7 +320,7 @@ describe('Actions', () => { cb(new Error('error')); }); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -348,7 +349,7 @@ describe('Actions', () => { cb(); }); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch( actions.importNewAccount('Private Key', [ @@ -365,7 +366,7 @@ describe('Actions', () => { cb(new Error('error')), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { @@ -396,7 +397,7 @@ describe('Actions', () => { }), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.addNewAccount(1)); expect(addNewAccount.callCount).toStrictEqual(1); @@ -409,7 +410,7 @@ describe('Actions', () => { cb(new Error('error')); }); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -439,7 +440,7 @@ describe('Actions', () => { }, ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch( actions.checkHardwareStatus(DEVICE_NAMES.LEDGER, `m/44'/60'/0'/0`), @@ -454,7 +455,7 @@ describe('Actions', () => { cb(new Error('error')), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -480,7 +481,7 @@ describe('Actions', () => { const forgetDevice = background.forgetDevice.callsFake((_, cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.forgetDevice(DEVICE_NAMES.LEDGER)); expect(forgetDevice.callCount).toStrictEqual(1); @@ -491,7 +492,7 @@ describe('Actions', () => { background.forgetDevice.callsFake((_, cb) => cb(new Error('error'))); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -521,7 +522,7 @@ describe('Actions', () => { background.establishLedgerTransportPreference.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch( actions.connectHardware(DEVICE_NAMES.LEDGER, 0, `m/44'/60'/0'/0`), @@ -538,7 +539,7 @@ describe('Actions', () => { background.establishLedgerTransportPreference.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { @@ -569,7 +570,7 @@ describe('Actions', () => { (_, __, ___, ____, cb) => cb(), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch( actions.unlockHardwareWalletAccounts( @@ -589,7 +590,7 @@ describe('Actions', () => { cb(new Error('error')), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -613,7 +614,7 @@ describe('Actions', () => { it('calls setCurrentCurrency', async () => { const store = mockStore(); background.setCurrentCurrency = sinon.stub().callsFake((_, cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.setCurrentCurrency('jpy')); expect(background.setCurrentCurrency.callCount).toStrictEqual(1); @@ -624,7 +625,7 @@ describe('Actions', () => { background.setCurrentCurrency = sinon .stub() .callsFake((_, cb) => cb(new Error('error'))); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -655,7 +656,7 @@ describe('Actions', () => { cb(null, defaultState.metamask), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.signMsg(msgParams)); expect(signMessage.callCount).toStrictEqual(1); @@ -666,7 +667,7 @@ describe('Actions', () => { background.signMessage.callsFake((_, cb) => cb(new Error('error'))); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -699,7 +700,7 @@ describe('Actions', () => { (_, cb) => cb(null, defaultState.metamask), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.signPersonalMsg(msgParams)); expect(signPersonalMessage.callCount).toStrictEqual(1); @@ -712,7 +713,7 @@ describe('Actions', () => { cb(new Error('error')); }); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -780,7 +781,7 @@ describe('Actions', () => { cb(null, defaultState.metamask), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.signTypedMsg(msgParamsV3)); expect(signTypedMsg.callCount).toStrictEqual(1); @@ -791,7 +792,7 @@ describe('Actions', () => { background.signTypedMessage.callsFake((_, cb) => cb(new Error('error'))); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -837,7 +838,7 @@ describe('Actions', () => { getState: sinon.stub().callsFake((cb) => cb(null, baseMockState)), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch(actions.updateTransaction(txData)); @@ -865,7 +866,7 @@ describe('Actions', () => { ), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -903,7 +904,7 @@ describe('Actions', () => { const backgroundSetLocked = background.setLocked.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.lockMetamask()); expect(backgroundSetLocked.callCount).toStrictEqual(1); @@ -916,7 +917,7 @@ describe('Actions', () => { cb(new Error('error')); }); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -945,7 +946,7 @@ describe('Actions', () => { setSelectedAddress: setSelectedAddressSpy, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch( actions.setSelectedAddress( @@ -966,7 +967,7 @@ describe('Actions', () => { setSelectedAddress: setSelectedAddressSpy, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -996,7 +997,7 @@ describe('Actions', () => { setSelectedAddress: setSelectedAddressSpy, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch(actions.showAccountDetail()); expect(setSelectedAddressSpy.callCount).toStrictEqual(1); @@ -1016,7 +1017,7 @@ describe('Actions', () => { setSelectedAddress: setSelectedAddressSpy, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1046,7 +1047,7 @@ describe('Actions', () => { getState: sinon.stub().callsFake((cb) => cb(null, baseMockState)), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch( actions.addToken({ @@ -1076,7 +1077,7 @@ describe('Actions', () => { getState: sinon.stub().callsFake((cb) => cb(null, baseMockState)), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1114,7 +1115,7 @@ describe('Actions', () => { getState: sinon.stub().callsFake((cb) => cb(null, baseMockState)), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch( actions.ignoreTokens({ tokensToIgnore: '0x0000001' }), @@ -1130,7 +1131,7 @@ describe('Actions', () => { getState: sinon.stub().callsFake((cb) => cb(null, baseMockState)), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1164,7 +1165,7 @@ describe('Actions', () => { setProviderType: setProviderTypeStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch(actions.setProviderType()); expect(setProviderTypeStub.callCount).toStrictEqual(1); @@ -1179,7 +1180,7 @@ describe('Actions', () => { .callsFake((_, cb) => cb(new Error('error'))), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'DISPLAY_WARNING', value: 'Had a problem changing networks!' }, @@ -1200,7 +1201,7 @@ describe('Actions', () => { background.setCustomRpc.callsFake((_, __, ___, ____, cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.setRpcTarget('http://localhost:8545')); expect(background.setCustomRpc.callCount).toStrictEqual(1); @@ -1213,7 +1214,7 @@ describe('Actions', () => { cb(new Error('error')), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'DISPLAY_WARNING', value: 'Had a problem changing networks!' }, @@ -1236,7 +1237,7 @@ describe('Actions', () => { setAddressBook: setAddressBookStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch(actions.addToAddressBook('0x0000')); expect(setAddressBookStub.callCount).toStrictEqual(1); @@ -1265,7 +1266,7 @@ describe('Actions', () => { exportAccount: exportAccountStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1295,7 +1296,7 @@ describe('Actions', () => { verifyPassword: verifyPasswordStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1324,7 +1325,7 @@ describe('Actions', () => { exportAccount: exportAccountStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1357,7 +1358,7 @@ describe('Actions', () => { setAccountLabel: setAccountLabelStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch( actions.setAccountLabel( @@ -1377,7 +1378,7 @@ describe('Actions', () => { .callsFake((_, __, cb) => cb(new Error('error'))), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1412,7 +1413,7 @@ describe('Actions', () => { setFeatureFlag: setFeatureFlagStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch(actions.setFeatureFlag()); expect(setFeatureFlagStub.callCount).toStrictEqual(1); @@ -1427,7 +1428,7 @@ describe('Actions', () => { .callsFake((_, __, cb) => cb(new Error('error'))), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1456,7 +1457,7 @@ describe('Actions', () => { completeOnboarding: completeOnboardingStub, }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch(actions.setCompletedOnboarding()); expect(completeOnboardingStub.callCount).toStrictEqual(1); @@ -1471,7 +1472,7 @@ describe('Actions', () => { .callsFake((cb) => cb(new Error('error'))), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1495,7 +1496,7 @@ describe('Actions', () => { it('calls setUseBlockie in background', async () => { const store = mockStore(); const setUseBlockieStub = sinon.stub().callsFake((_, cb) => cb()); - actions._setBackgroundConnection({ setUseBlockie: setUseBlockieStub }); + _setBackgroundConnection({ setUseBlockie: setUseBlockieStub }); await store.dispatch(actions.setUseBlockie()); expect(setUseBlockieStub.callCount).toStrictEqual(1); @@ -1507,7 +1508,7 @@ describe('Actions', () => { cb(new Error('error')); }); - actions._setBackgroundConnection({ setUseBlockie: setUseBlockieStub }); + _setBackgroundConnection({ setUseBlockie: setUseBlockieStub }); const expectedActions = [ { type: 'SHOW_LOADING_INDICATION', value: undefined }, @@ -1535,7 +1536,7 @@ describe('Actions', () => { it('calls expected actions', async () => { const store = mockStore(); const setCurrentLocaleStub = sinon.stub().callsFake((_, cb) => cb()); - actions._setBackgroundConnection({ + _setBackgroundConnection({ setCurrentLocale: setCurrentLocaleStub, }); @@ -1558,7 +1559,7 @@ describe('Actions', () => { const setCurrentLocaleStub = sinon .stub() .callsFake((_, cb) => cb(new Error('error'))); - actions._setBackgroundConnection({ + _setBackgroundConnection({ setCurrentLocale: setCurrentLocaleStub, }); @@ -1584,7 +1585,7 @@ describe('Actions', () => { background.markPasswordForgotten.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); await store.dispatch(actions.markPasswordForgotten()); @@ -1603,7 +1604,7 @@ describe('Actions', () => { cb(new Error('error')), ); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); const expectedActions = [ { type: 'HIDE_LOADING_INDICATION' }, @@ -1628,7 +1629,7 @@ describe('Actions', () => { background.unMarkPasswordForgotten.callsFake((cb) => cb()); - actions._setBackgroundConnection(background); + _setBackgroundConnection(background); store.dispatch(actions.unMarkPasswordForgotten()); @@ -1687,7 +1688,7 @@ describe('Actions', () => { ), }); - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); const txId = 1457634084250832; @@ -1742,7 +1743,7 @@ describe('Actions', () => { }, ]; - actions._setBackgroundConnection(background.getApi()); + _setBackgroundConnection(background.getApi()); await store.dispatch(actions.cancelMsgs(msgsList)); const resultantActions = store.getActions(); From e817ff8a775aba18cf996cb1273827a32777fc86 Mon Sep 17 00:00:00 2001 From: Lorenz <34058834+lonasozo@users.noreply.github.com> Date: Mon, 5 Sep 2022 18:53:51 +0200 Subject: [PATCH 04/13] improvement it translation (#15477) Co-authored-by: Nidhi Kumari --- app/_locales/it/messages.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/_locales/it/messages.json b/app/_locales/it/messages.json index 9f6f93e56e23..c352034da896 100644 --- a/app/_locales/it/messages.json +++ b/app/_locales/it/messages.json @@ -591,6 +591,9 @@ "forgetDevice": { "message": "Dimentica questo dispositivo" }, + "forgotPassword": { + "message": "Hai dimenticato la password?" + }, "from": { "message": "Da" }, From 3fb7de576846e901e5ecaae24af977caa396d59f Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Tue, 6 Sep 2022 14:38:32 +0530 Subject: [PATCH 05/13] Make addUnapprovedTransaction action idempotent (#15667) --- app/scripts/controllers/transactions/index.js | 82 +++++++++++++------ .../controllers/transactions/index.test.js | 62 +++++++++++++- .../transactions/tx-state-manager.js | 17 +++- shared/modules/transaction.utils.js | 13 +++ ui/ducks/send/send.test.js | 2 +- ui/store/actions.js | 15 ++-- 6 files changed, 159 insertions(+), 32 deletions(-) diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 8103b0767e81..2982e65a00ef 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -52,6 +52,7 @@ import { } from '../../../../shared/constants/network'; import { determineTransactionAssetType, + determineTransactionContractCode, determineTransactionType, isEIP1559Transaction, } from '../../../../shared/modules/transaction.utils'; @@ -696,16 +697,54 @@ export default class TransactionController extends EventEmitter { return this._getTransaction(txId); } + async addTransactionGasDefaults(txMeta) { + const contractCode = await determineTransactionContractCode( + txMeta.txParams, + this.query, + ); + + let updateTxMeta = txMeta; + try { + updateTxMeta = await this.addTxGasDefaults(txMeta, contractCode); + } catch (error) { + log.warn(error); + updateTxMeta = this.txStateManager.getTransaction(txMeta.id); + updateTxMeta.loadingDefaults = false; + this.txStateManager.updateTransaction( + txMeta, + 'Failed to calculate gas defaults.', + ); + throw error; + } + + updateTxMeta.loadingDefaults = false; + + // The history note used here 'Added new unapproved transaction.' is confusing update call only updated the gas defaults. + // We need to improve `this.addTransaction` to accept history note and change note here. + this.txStateManager.updateTransaction( + updateTxMeta, + 'Added new unapproved transaction.', + ); + + return updateTxMeta; + } + // ==================================================================================================================================================== /** * Validates and generates a txMeta with defaults and puts it in txStateManager * store. * + * actionId is used to uniquely identify a request to create a transaction. + * Only 1 transaction will be created for multiple requests with same actionId. + * actionId is fix used for making this action idempotent to deal with scenario when + * action is invoked multiple times with same parameters in MV3 due to service worker re-activation. + * * @param txParams * @param origin * @param transactionType * @param sendFlowHistory + * @param actionId * @returns {txMeta} */ async addUnapprovedTransaction( @@ -713,6 +752,7 @@ export default class TransactionController extends EventEmitter { origin, transactionType, sendFlowHistory = [], + actionId, ) { if ( transactionType !== undefined && @@ -723,6 +763,17 @@ export default class TransactionController extends EventEmitter { ); } + // In transaction is found for same action id, do not create a new transaction. + if (actionId) { + let existingTxMeta = + this.txStateManager.getTransactionWithActionId(actionId); + if (existingTxMeta) { + this.emit('newUnapprovedTx', existingTxMeta); + existingTxMeta = await this.addTransactionGasDefaults(existingTxMeta); + return existingTxMeta; + } + } + // validate const normalizedTxParams = txUtils.normalizeTxParams(txParams); const eip1559Compatibility = await this.getEIP1559Compatibility(); @@ -741,6 +792,12 @@ export default class TransactionController extends EventEmitter { sendFlowHistory, }); + // Add actionId to txMeta to check if same actionId is seen again + // IF request to create transaction with same actionId is submitted again, new transaction will not be added for it. + if (actionId) { + txMeta.actionId = actionId; + } + if (origin === ORIGIN_METAMASK) { // Assert the from address is the selected address if (normalizedTxParams.from !== this.getSelectedAddress()) { @@ -762,10 +819,7 @@ export default class TransactionController extends EventEmitter { } } - const { type, getCodeResponse } = await determineTransactionType( - txParams, - this.query, - ); + const { type } = await determineTransactionType(txParams, this.query); txMeta.type = transactionType || type; // ensure value @@ -776,25 +830,7 @@ export default class TransactionController extends EventEmitter { this.addTransaction(txMeta); this.emit('newUnapprovedTx', txMeta); - try { - txMeta = await this.addTxGasDefaults(txMeta, getCodeResponse); - } catch (error) { - log.warn(error); - txMeta = this.txStateManager.getTransaction(txMeta.id); - txMeta.loadingDefaults = false; - this.txStateManager.updateTransaction( - txMeta, - 'Failed to calculate gas defaults.', - ); - throw error; - } - - txMeta.loadingDefaults = false; - // save txMeta - this.txStateManager.updateTransaction( - txMeta, - 'Added new unapproved transaction.', - ); + txMeta = await this.addTransactionGasDefaults(txMeta); return txMeta; } diff --git a/app/scripts/controllers/transactions/index.test.js b/app/scripts/controllers/transactions/index.test.js index eb386706ed23..4bbb3046d2c6 100644 --- a/app/scripts/controllers/transactions/index.test.js +++ b/app/scripts/controllers/transactions/index.test.js @@ -334,11 +334,14 @@ describe('Transaction Controller', function () { const selectedAddress = '0x1678a085c290ebd122dc42cba69373b5953b831d'; const recipientAddress = '0xc42edfcc21ed14dda456aa0756c153f7985d8813'; - let getSelectedAddress, getPermittedAccounts; + let getSelectedAddress, getPermittedAccounts, getDefaultGasFees; beforeEach(function () { getSelectedAddress = sinon .stub(txController, 'getSelectedAddress') .returns(selectedAddress); + getDefaultGasFees = sinon + .stub(txController, '_getDefaultGasFees') + .returns({}); getPermittedAccounts = sinon .stub(txController, 'getPermittedAccounts') .returns([selectedAddress]); @@ -347,6 +350,7 @@ describe('Transaction Controller', function () { afterEach(function () { getSelectedAddress.restore(); getPermittedAccounts.restore(); + getDefaultGasFees.restore(); }); it('should add an unapproved transaction and return a valid txMeta', async function () { @@ -372,6 +376,62 @@ describe('Transaction Controller', function () { assert.deepEqual(txMeta, memTxMeta); }); + it('should add only 1 unapproved transaction when called twice with same actionId', async function () { + await txController.addUnapprovedTransaction( + { + from: selectedAddress, + to: recipientAddress, + }, + undefined, + undefined, + undefined, + '12345', + ); + const transactionCount1 = + txController.txStateManager.getTransactions().length; + await txController.addUnapprovedTransaction( + { + from: selectedAddress, + to: recipientAddress, + }, + undefined, + undefined, + undefined, + '12345', + ); + const transactionCount2 = + txController.txStateManager.getTransactions().length; + assert.equal(transactionCount1, transactionCount2); + }); + + it('should add multiple transactions when called with different actionId', async function () { + await txController.addUnapprovedTransaction( + { + from: selectedAddress, + to: recipientAddress, + }, + undefined, + undefined, + undefined, + '12345', + ); + const transactionCount1 = + txController.txStateManager.getTransactions().length; + await txController.addUnapprovedTransaction( + { + from: selectedAddress, + to: recipientAddress, + }, + undefined, + undefined, + undefined, + '00000', + ); + const transactionCount2 = + txController.txStateManager.getTransactions().length; + assert.equal(transactionCount1 + 1, transactionCount2); + }); + it('should emit newUnapprovedTx event and pass txMeta as the first argument', function (done) { providerResultStub.eth_gasPrice = '4a817c800'; txController.once('newUnapprovedTx', (txMetaFromEmit) => { diff --git a/app/scripts/controllers/transactions/tx-state-manager.js b/app/scripts/controllers/transactions/tx-state-manager.js index dc1c66e011cf..d426cfe618d2 100644 --- a/app/scripts/controllers/transactions/tx-state-manager.js +++ b/app/scripts/controllers/transactions/tx-state-manager.js @@ -1,7 +1,7 @@ import EventEmitter from 'safe-event-emitter'; import { ObservableStore } from '@metamask/obs-store'; import log from 'loglevel'; -import { keyBy, mapValues, omitBy, pickBy, sortBy } from 'lodash'; +import { values, keyBy, mapValues, omitBy, pickBy, sortBy } from 'lodash'; import createId from '../../../../shared/modules/random-id'; import { TRANSACTION_STATUSES } from '../../../../shared/constants/transaction'; import { METAMASK_CONTROLLER_EVENTS } from '../../metamask-controller'; @@ -201,6 +201,21 @@ export default class TransactionStateManager extends EventEmitter { return this.getTransactions({ searchCriteria }); } + /** + * Get transaction with provided. + * + * @param {string} [actionId] + * @returns {TransactionMeta} the filtered transaction + */ + getTransactionWithActionId(actionId) { + return values( + pickBy( + this.store.getState().transactions, + (transaction) => transaction.actionId === actionId, + ), + )[0]; + } + /** * Adds the txMeta to the list of transactions in the store. * if the list is over txHistoryLimit it will remove a transaction that diff --git a/shared/modules/transaction.utils.js b/shared/modules/transaction.utils.js index 001b8beb86bb..1cf471ed7556 100644 --- a/shared/modules/transaction.utils.js +++ b/shared/modules/transaction.utils.js @@ -131,6 +131,19 @@ export function parseStandardTokenTransactionData(data) { return undefined; } +/** + * Determines the contractCode of the transaction by analyzing the txParams. + * + * @param {object} txParams - Parameters for the transaction + * @param {EthQuery} query - EthQuery instance + * @returns {InferTransactionTypeResult} + */ +export async function determineTransactionContractCode(txParams, query) { + const { to } = txParams; + const { contractCode } = await readAddressAsContract(query, to); + return contractCode; +} + /** * Determines the type of the transaction by analyzing the txParams. * This method will return one of the types defined in shared/constants/transactions diff --git a/ui/ducks/send/send.test.js b/ui/ducks/send/send.test.js index 4d21316e6463..599954e55344 100644 --- a/ui/ducks/send/send.test.js +++ b/ui/ducks/send/send.test.js @@ -94,7 +94,7 @@ jest.mock('lodash', () => ({ setBackgroundConnection({ addPollingTokenToAppState: jest.fn(), - addUnapprovedTransaction: jest.fn((_w, _x, _y, _z, cb) => { + addUnapprovedTransaction: jest.fn((_v, _w, _x, _y, _z, cb) => { cb(null); }), updateTransactionSendFlowHistory: jest.fn((_x, _y, cb) => cb(null)), diff --git a/ui/store/actions.js b/ui/store/actions.js index 4a235fe31a27..a20facdda77c 100644 --- a/ui/store/actions.js +++ b/ui/store/actions.js @@ -889,11 +889,13 @@ export function addUnapprovedTransactionAndRouteToConfirmationPage( sendFlowHistory, ) { return async (dispatch) => { + const actionId = Date.now() + Math.random(); try { log.debug('background.addUnapprovedTransaction'); const txMeta = await submitRequestToBackground( 'addUnapprovedTransaction', - [txParams, ORIGIN_METAMASK, type, sendFlowHistory], + [txParams, ORIGIN_METAMASK, type, sendFlowHistory, actionId], + actionId, ); dispatch(showConfTxPage()); return txMeta; @@ -920,11 +922,12 @@ export function addUnapprovedTransactionAndRouteToConfirmationPage( */ export async function addUnapprovedTransaction(txParams, type) { log.debug('background.addUnapprovedTransaction'); - const txMeta = await submitRequestToBackground('addUnapprovedTransaction', [ - txParams, - ORIGIN_METAMASK, - type, - ]); + const actionId = Date.now() + Math.random(); + const txMeta = await submitRequestToBackground( + 'addUnapprovedTransaction', + [txParams, ORIGIN_METAMASK, type, undefined, actionId], + actionId, + ); return txMeta; } From 3154e5e19cb68b13c79efbfd91dacb9e453be3e9 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Tue, 6 Sep 2022 14:39:12 +0530 Subject: [PATCH 06/13] Make updateTransactionSendFlowHistory background method idempotent (#15585) --- app/scripts/controllers/transactions/index.js | 35 ++++++++++++------- .../metamask-controller.actions.test.js | 29 +++++++++++++++ ui/ducks/send/send.js | 1 + ui/ducks/send/send.test.js | 2 +- ui/store/actions.js | 9 +++-- 5 files changed, 60 insertions(+), 16 deletions(-) diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 2982e65a00ef..5e78309ef40d 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -673,27 +673,36 @@ export default class TransactionController extends EventEmitter { * state is unapproved. Returns the updated transaction. * * @param {string} txId - transaction id + * @param {number} currentSendFlowHistoryLength - sendFlowHistory entries currently * @param {Array<{ entry: string, timestamp: number }>} sendFlowHistory - * history to add to the sendFlowHistory property of txMeta. * @returns {TransactionMeta} the txMeta of the updated transaction */ - updateTransactionSendFlowHistory(txId, sendFlowHistory) { + updateTransactionSendFlowHistory( + txId, + currentSendFlowHistoryLength, + sendFlowHistory, + ) { this._throwErrorIfNotUnapprovedTx(txId, 'updateTransactionSendFlowHistory'); const txMeta = this._getTransaction(txId); - // only update what is defined - const note = `Update sendFlowHistory for ${txId}`; + if ( + currentSendFlowHistoryLength === (txMeta?.sendFlowHistory?.length || 0) + ) { + // only update what is defined + const note = `Update sendFlowHistory for ${txId}`; - this.txStateManager.updateTransaction( - { - ...txMeta, - sendFlowHistory: [ - ...(txMeta?.sendFlowHistory ?? []), - ...sendFlowHistory, - ], - }, - note, - ); + this.txStateManager.updateTransaction( + { + ...txMeta, + sendFlowHistory: [ + ...(txMeta?.sendFlowHistory ?? []), + ...sendFlowHistory, + ], + }, + note, + ); + } return this._getTransaction(txId); } diff --git a/app/scripts/metamask-controller.actions.test.js b/app/scripts/metamask-controller.actions.test.js index 62902e5cbd57..c0e438c666d3 100644 --- a/app/scripts/metamask-controller.actions.test.js +++ b/app/scripts/metamask-controller.actions.test.js @@ -1,6 +1,7 @@ import { strict as assert } from 'assert'; import sinon from 'sinon'; import proxyquire from 'proxyquire'; +import { ORIGIN_METAMASK } from '../../shared/constants/app'; const Ganache = require('../../test/e2e/ganache'); @@ -209,4 +210,32 @@ describe('MetaMaskController', function () { assert.equal(rpcList1Length, rpcList2Length); }); }); + + describe('#updateTransactionSendFlowHistory', function () { + it('two sequential calls with same history give same result', async function () { + const recipientAddress = '0xc42edfcc21ed14dda456aa0756c153f7985d8813'; + + await metamaskController.createNewVaultAndKeychain('test@123'); + const accounts = await metamaskController.keyringController.getAccounts(); + const txMeta = await metamaskController.getApi().addUnapprovedTransaction( + { + from: accounts[0], + to: recipientAddress, + }, + ORIGIN_METAMASK, + ); + + const [transaction1, transaction2] = await Promise.all([ + metamaskController + .getApi() + .updateTransactionSendFlowHistory(txMeta.id, 2, ['foo1', 'foo2']), + Promise.resolve(1).then(() => + metamaskController + .getApi() + .updateTransactionSendFlowHistory(txMeta.id, 2, ['foo1', 'foo2']), + ), + ]); + assert.deepEqual(transaction1, transaction2); + }); + }); }); diff --git a/ui/ducks/send/send.js b/ui/ducks/send/send.js index 7363dcdca0c1..e224b18016ad 100644 --- a/ui/ducks/send/send.js +++ b/ui/ducks/send/send.js @@ -2269,6 +2269,7 @@ export function signTransaction() { await dispatch( updateTransactionSendFlowHistory( draftTransaction.id, + unapprovedTx.sendFlowHistory?.length || 0, draftTransaction.history, ), ); diff --git a/ui/ducks/send/send.test.js b/ui/ducks/send/send.test.js index 599954e55344..d6c1b428a9a5 100644 --- a/ui/ducks/send/send.test.js +++ b/ui/ducks/send/send.test.js @@ -97,7 +97,7 @@ setBackgroundConnection({ addUnapprovedTransaction: jest.fn((_v, _w, _x, _y, _z, cb) => { cb(null); }), - updateTransactionSendFlowHistory: jest.fn((_x, _y, cb) => cb(null)), + updateTransactionSendFlowHistory: jest.fn((_x, _y, _z, cb) => cb(null)), }); const getTestUUIDTx = (state) => state.draftTransactions['test-uuid']; diff --git a/ui/store/actions.js b/ui/store/actions.js index a20facdda77c..a05abf7257a4 100644 --- a/ui/store/actions.js +++ b/ui/store/actions.js @@ -761,17 +761,22 @@ export function updateEditableParams(txId, editableParams) { * Appends new send flow history to a transaction * * @param {string} txId - the id of the transaction to update + * @param {number} currentSendFlowHistoryLength - sendFlowHistory entries currently * @param {Array<{event: string, timestamp: number}>} sendFlowHistory - the new send flow history to append to the * transaction * @returns {import('../../shared/constants/transaction').TransactionMeta} */ -export function updateTransactionSendFlowHistory(txId, sendFlowHistory) { +export function updateTransactionSendFlowHistory( + txId, + currentSendFlowHistoryLength, + sendFlowHistory, +) { return async (dispatch) => { let updatedTransaction; try { updatedTransaction = await submitRequestToBackground( 'updateTransactionSendFlowHistory', - [txId, sendFlowHistory], + [txId, currentSendFlowHistoryLength, sendFlowHistory], ); } catch (error) { dispatch(txError(error)); From 0b92b13defb8a54fcd2a3cfed0b78d3370c21307 Mon Sep 17 00:00:00 2001 From: VSaric <92527393+VSaric@users.noreply.github.com> Date: Tue, 6 Sep 2022 15:36:02 +0200 Subject: [PATCH 07/13] Set view full transaction details by default (#15726) --- test/e2e/metamask-ui.spec.js | 8 ++++++++ test/e2e/tests/collectibles.spec.js | 8 ++++++++ .../confirm-approve-content.component.js | 2 +- .../confirm-approve-content.component.test.js | 14 +++++++------- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/test/e2e/metamask-ui.spec.js b/test/e2e/metamask-ui.spec.js index 88423ab4154f..2a2f16dfb658 100644 --- a/test/e2e/metamask-ui.spec.js +++ b/test/e2e/metamask-ui.spec.js @@ -552,6 +552,10 @@ describe('MetaMask', function () { }); it('displays the token approval data', async function () { + await driver.clickElement({ + text: 'View full transaction details', + css: '.confirm-approve-content__small-blue-text', + }); const functionType = await driver.findElement( '.confirm-approve-content__data .confirm-approve-content__small-text', ); @@ -738,6 +742,10 @@ describe('MetaMask', function () { }); it('shows the correct recipient', async function () { + await driver.clickElement({ + text: 'View full transaction details', + css: '.confirm-approve-content__small-blue-text', + }); const permissionInfo = await driver.findElements( '.confirm-approve-content__medium-text', ); diff --git a/test/e2e/tests/collectibles.spec.js b/test/e2e/tests/collectibles.spec.js index 53882d0a3aad..0c0c6ad3a3e8 100644 --- a/test/e2e/tests/collectibles.spec.js +++ b/test/e2e/tests/collectibles.spec.js @@ -108,6 +108,10 @@ describe('Collectibles', function () { const title = await driver.findElement( '[data-testid="confirm-approve-title"]', ); + await driver.clickElement({ + text: 'View full transaction details', + css: '.confirm-approve-content__small-blue-text', + }); const data = await driver.findElements( '.confirm-approve-content__data .confirm-approve-content__small-text', ); @@ -170,6 +174,10 @@ describe('Collectibles', function () { const title = await driver.findElement( '[data-testid="confirm-approve-title"]', ); + await driver.clickElement({ + text: 'View full transaction details', + css: '.confirm-approve-content__small-blue-text', + }); const data = await driver.findElements( '.confirm-approve-content__data .confirm-approve-content__small-text', ); diff --git a/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js b/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js index 06bf389b09ad..e7c2eb896176 100644 --- a/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js +++ b/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.js @@ -83,7 +83,7 @@ export default class ConfirmApproveContent extends Component { }; state = { - showFullTxDetails: true, + showFullTxDetails: false, copied: false, }; diff --git a/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.test.js b/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.test.js index 9cda58fd78a3..612cd4cd9f2c 100644 --- a/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.test.js +++ b/ui/pages/confirm-approve/confirm-approve-content/confirm-approve-content.component.test.js @@ -55,7 +55,7 @@ describe('ConfirmApproveContent Component', () => { ), ).toBeInTheDocument(); expect(queryByText('0x9bc5...fef4')).toBeInTheDocument(); - expect(queryByText('Hide full transaction details')).toBeInTheDocument(); + expect(queryByText('View full transaction details')).toBeInTheDocument(); expect(queryByText('Edit permission')).toBeInTheDocument(); const editPermission = getByText('Edit permission'); @@ -77,15 +77,15 @@ describe('ConfirmApproveContent Component', () => { fireEvent.click(editButtons[1]); expect(props.showCustomizeNonceModal).toHaveBeenCalledTimes(1); - const showHideTxDetails = getByText('Hide full transaction details'); - expect(getByText('Permission request')).toBeInTheDocument(); - expect(getByText('Approved amount:')).toBeInTheDocument(); - expect(getByText('Granted to:')).toBeInTheDocument(); - fireEvent.click(showHideTxDetails); - expect(getByText('View full transaction details')).toBeInTheDocument(); + const showViewTxDetails = getByText('View full transaction details'); expect(queryByText('Permission request')).not.toBeInTheDocument(); expect(queryByText('Approved amount:')).not.toBeInTheDocument(); expect(queryByText('Granted to:')).not.toBeInTheDocument(); + fireEvent.click(showViewTxDetails); + expect(getByText('Hide full transaction details')).toBeInTheDocument(); + expect(getByText('Permission request')).toBeInTheDocument(); + expect(getByText('Approved amount:')).toBeInTheDocument(); + expect(getByText('Granted to:')).toBeInTheDocument(); expect(getByText('0x9bc5...fef4')).toBeInTheDocument(); }); }); From 4f8c22accb708ba3d791259c5eb7150526798b96 Mon Sep 17 00:00:00 2001 From: VSaric <92527393+VSaric@users.noreply.github.com> Date: Tue, 6 Sep 2022 16:11:13 +0200 Subject: [PATCH 08/13] Updated the main copy on SetApprovalForAll confirmation screen (#15724) --- app/_locales/en/messages.json | 2 +- test/e2e/tests/collectibles.spec.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 89123a67caa6..be17b6130e72 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -328,7 +328,7 @@ "message": "Approve spend limit" }, "approveAllTokensTitle": { - "message": "Give permission to access all of your $1?", + "message": "Allow access to and transfer of all your $1?", "description": "$1 is the symbol of the token for which the user is granting approval" }, "approveAndInstall": { diff --git a/test/e2e/tests/collectibles.spec.js b/test/e2e/tests/collectibles.spec.js index 0c0c6ad3a3e8..8687d0ffc942 100644 --- a/test/e2e/tests/collectibles.spec.js +++ b/test/e2e/tests/collectibles.spec.js @@ -183,7 +183,7 @@ describe('Collectibles', function () { ); assert.equal( await title.getText(), - 'Give permission to access all of your TestDappCollectibles?', + 'Allow access to and transfer of all your TestDappCollectibles?', ); assert.equal(await data[0].getText(), 'Function: SetApprovalForAll'); assert.equal(await data[1].getText(), 'Parameters: true'); From 8fa96ac1a2b70cb695ac461b5e7c193baea6bada Mon Sep 17 00:00:00 2001 From: VSaric <92527393+VSaric@users.noreply.github.com> Date: Tue, 6 Sep 2022 16:12:05 +0200 Subject: [PATCH 09/13] Updated Avalanche rpcUrl endpoint (#15720) --- shared/constants/network.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/constants/network.js b/shared/constants/network.js index 6891017d992b..cf653327cab4 100644 --- a/shared/constants/network.js +++ b/shared/constants/network.js @@ -356,7 +356,7 @@ export const FEATURED_RPCS = [ { chainId: AVALANCHE_CHAIN_ID, nickname: AVALANCHE_DISPLAY_NAME, - rpcUrl: 'https://api.avax.network/ext/bc/C/rpc', + rpcUrl: `https://avalanche-mainnet.infura.io/v3/${infuraProjectId}`, ticker: AVALANCHE_SYMBOL, rpcPrefs: { blockExplorerUrl: 'https://snowtrace.io/', From cd5398b2b245a6102f35f0bbe885ea28e3ef2bd6 Mon Sep 17 00:00:00 2001 From: VSaric <92527393+VSaric@users.noreply.github.com> Date: Tue, 6 Sep 2022 16:13:04 +0200 Subject: [PATCH 10/13] Replaced use of pubnub for uuid method in app/ directory (#15712) --- app/scripts/controllers/metametrics.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/scripts/controllers/metametrics.js b/app/scripts/controllers/metametrics.js index 56d757a7c31f..744cc714c606 100644 --- a/app/scripts/controllers/metametrics.js +++ b/app/scripts/controllers/metametrics.js @@ -10,7 +10,7 @@ import { } from 'lodash'; import { ObservableStore } from '@metamask/obs-store'; import { bufferToHex, keccak } from 'ethereumjs-util'; -import { generateUUID } from 'pubnub'; +import { v4 as uuidv4 } from 'uuid'; import { ENVIRONMENT_TYPE_BACKGROUND } from '../../../shared/constants/app'; import { METAMETRICS_ANONYMOUS_ID, @@ -190,7 +190,7 @@ export default class MetaMetricsController { } const { fragments } = this.store.getState(); - const id = options.uniqueIdentifier ?? generateUUID(); + const id = options.uniqueIdentifier ?? uuidv4(); const fragment = { id, ...options, From 8c8539d1f53c568605ef2770b21dfba95d04e9c6 Mon Sep 17 00:00:00 2001 From: Jyoti Puri Date: Wed, 7 Sep 2022 01:17:48 +0530 Subject: [PATCH 11/13] Making addPermittedAccount and removePermittedAccount methods idempotent (#15709) --- .../controllers/permissions/background-api.js | 8 ++---- .../permissions/background-api.test.js | 26 ++++++------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/app/scripts/controllers/permissions/background-api.js b/app/scripts/controllers/permissions/background-api.js index 0ed2354d1e8c..1d1b19c67049 100644 --- a/app/scripts/controllers/permissions/background-api.js +++ b/app/scripts/controllers/permissions/background-api.js @@ -14,9 +14,7 @@ export function getPermissionBackgroundApiMethods(permissionController) { ); if (existing.value.includes(account)) { - throw new Error( - `eth_accounts permission for origin "${origin}" already permits account "${account}".`, - ); + return; } permissionController.updateCaveat( @@ -35,9 +33,7 @@ export function getPermissionBackgroundApiMethods(permissionController) { ); if (!existing.value.includes(account)) { - throw new Error( - `eth_accounts permission for origin "${origin}" already does not permit account "${account}".`, - ); + return; } const remainingAccounts = existing.value.filter( diff --git a/app/scripts/controllers/permissions/background-api.test.js b/app/scripts/controllers/permissions/background-api.test.js index 8857835b4cdf..a7f433eb1d25 100644 --- a/app/scripts/controllers/permissions/background-api.test.js +++ b/app/scripts/controllers/permissions/background-api.test.js @@ -34,7 +34,7 @@ describe('permission background API methods', () => { ); }); - it('throws if the specified account is already permitted', () => { + it('does not add a permitted account', () => { const permissionController = { getCaveat: jest.fn().mockImplementationOnce(() => { return { type: CaveatTypes.restrictReturnedAccounts, value: ['0x1'] }; @@ -42,14 +42,9 @@ describe('permission background API methods', () => { updateCaveat: jest.fn(), }; - expect(() => - getPermissionBackgroundApiMethods( - permissionController, - ).addPermittedAccount('foo.com', '0x1'), - ).toThrow( - `eth_accounts permission for origin "foo.com" already permits account "0x1".`, - ); - + getPermissionBackgroundApiMethods( + permissionController, + ).addPermittedAccount('foo.com', '0x1'); expect(permissionController.getCaveat).toHaveBeenCalledTimes(1); expect(permissionController.getCaveat).toHaveBeenCalledWith( 'foo.com', @@ -128,7 +123,7 @@ describe('permission background API methods', () => { expect(permissionController.updateCaveat).not.toHaveBeenCalled(); }); - it('throws if the specified account is not permitted', () => { + it('does not call permissionController.updateCaveat if the specified account is not permitted', () => { const permissionController = { getCaveat: jest.fn().mockImplementationOnce(() => { return { type: CaveatTypes.restrictReturnedAccounts, value: ['0x1'] }; @@ -137,14 +132,9 @@ describe('permission background API methods', () => { updateCaveat: jest.fn(), }; - expect(() => - getPermissionBackgroundApiMethods( - permissionController, - ).removePermittedAccount('foo.com', '0x2'), - ).toThrow( - `eth_accounts permission for origin "foo.com" already does not permit account "0x2".`, - ); - + getPermissionBackgroundApiMethods( + permissionController, + ).removePermittedAccount('foo.com', '0x2'); expect(permissionController.getCaveat).toHaveBeenCalledTimes(1); expect(permissionController.getCaveat).toHaveBeenCalledWith( 'foo.com', From 4de0f86a15a97d152489c142f314e25372ffe57f Mon Sep 17 00:00:00 2001 From: David Walsh Date: Tue, 6 Sep 2022 15:56:08 -0500 Subject: [PATCH 12/13] Fix storybook by shimming MV3 method (#15749) --- .storybook/__mocks__/webextension-polyfill.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.storybook/__mocks__/webextension-polyfill.js b/.storybook/__mocks__/webextension-polyfill.js index c8e3dea1765a..011bdd867381 100644 --- a/.storybook/__mocks__/webextension-polyfill.js +++ b/.storybook/__mocks__/webextension-polyfill.js @@ -1,4 +1,8 @@ module.exports = { - runtime: {}, - }; + runtime: { + getManifest: () => { + return { manifest_version: 2 }; + } + }, +}; \ No newline at end of file From 100fbbfaca55ad6735432a897a38c9889a5f3d1d Mon Sep 17 00:00:00 2001 From: George Marshall Date: Tue, 6 Sep 2022 15:58:22 -0700 Subject: [PATCH 13/13] Upgrading storybook from 6.3 to 6.5 fixing shell-quote vulnerability (#15684) * Updating storybook from 6.3 to 6.5 * Some lavamoat policy overrides for eslint --- .eslintrc.js | 41 +- .storybook/main.js | 5 +- lavamoat/browserify/beta/policy.json | 6 +- lavamoat/browserify/flask/policy.json | 92 +- lavamoat/browserify/main/policy.json | 6 +- lavamoat/build-system/policy-override.json | 34 + lavamoat/build-system/policy.json | 260 +- package.json | 38 +- yarn.lock | 2481 +++++++++++--------- 9 files changed, 1632 insertions(+), 1331 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 31c60bd51337..1ef7f4f52306 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,8 +1,11 @@ const path = require('path'); + const { version: reactVersion } = require('react/package.json'); module.exports = { root: true, + // Suggested addition from the storybook 6.5 update + extends: ['plugin:storybook/recommended'], // Ignore files which are also in .prettierignore ignorePatterns: [ 'app/vendor/**', @@ -22,7 +25,6 @@ module.exports = { * because we do not allow a file to use two different styles for specifying * imports and exports (however theoretically possible it may be). */ - { /** * Modules (CommonJS module syntax) @@ -128,11 +130,9 @@ module.exports = { 'import/namespace': 'off', 'import/default': 'off', 'import/no-named-as-default-member': 'off', - // Disabled due to incompatibility with Record. // See: '@typescript-eslint/consistent-type-definitions': 'off', - // Modified to include the 'ignoreRestSiblings' option. // TODO: Migrate this rule change back into `@metamask/eslint-config` '@typescript-eslint/no-unused-vars': [ @@ -165,7 +165,6 @@ module.exports = { sourceType: 'script', }, }, - /** * == Everything else == * @@ -198,7 +197,10 @@ module.exports = { 'react/jsx-boolean-value': 'error', 'react/jsx-curly-brace-presence': [ 'error', - { props: 'never', children: 'never' }, + { + props: 'never', + children: 'never', + }, ], 'react/no-deprecated': 'error', 'react/default-props-match-prop-types': 'error', @@ -276,15 +278,20 @@ module.exports = { 'import/named': 'off', 'jest/no-large-snapshots': [ 'error', - { maxSize: 50, inlineMaxSize: 50 }, + { + maxSize: 50, + inlineMaxSize: 50, + }, ], 'jest/no-restricted-matchers': 'off', + /** * jest/prefer-to-be is a new rule that was disabled to reduce churn * when upgrading eslint. It should be considered for use and enabled * in a future PR if agreeable. */ 'jest/prefer-to-be': 'off', + /** * jest/lowercase-name was renamed to jest/prefer-lowercase-title this * change was made to essentially retain the same state as the original @@ -292,7 +299,12 @@ module.exports = { * two lines can be deleted. */ 'jest/lowercase-name': 'off', - 'jest/prefer-lowercase-title': ['error', { ignore: ['describe'] }], + 'jest/prefer-lowercase-title': [ + 'error', + { + ignore: ['describe'], + }, + ], }, }, /** @@ -301,7 +313,12 @@ module.exports = { { files: ['app/scripts/migrations/*.js', '**/*.stories.js'], rules: { - 'import/no-anonymous-default-export': ['error', { allowObject: true }], + 'import/no-anonymous-default-export': [ + 'error', + { + allowObject: true, + }, + ], }, }, /** @@ -347,7 +364,13 @@ module.exports = { { files: ['ui/pages/settings/*.js'], rules: { - 'sort-keys': ['error', 'asc', { natural: true }], + 'sort-keys': [ + 'error', + 'asc', + { + natural: true, + }, + ], }, }, ], diff --git a/.storybook/main.js b/.storybook/main.js index e7b859b8439b..d9527f6d86e7 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -16,6 +16,7 @@ module.exports = { './i18n-party-addon/register.js', 'storybook-dark-mode', ], + staticDirs: ['../app', './images'], // Uses babel.config.js settings and prevents "Missing class properties transform" error babel: async (options) => ({ overrides: options.overrides }), webpackFinal: async (config) => { @@ -23,7 +24,9 @@ module.exports = { config.node = { __filename: true, }; - config.resolve.alias['webextension-polyfill'] = require.resolve('./__mocks__/webextension-polyfill.js') + config.resolve.alias['webextension-polyfill'] = require.resolve( + './__mocks__/webextension-polyfill.js', + ); config.module.strictExportPresence = true; config.module.rules.push({ test: /\.scss$/, diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 033fd9e342d1..3dc28b6cfe4b 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -764,7 +764,7 @@ "3box>ipfs>ipld-raw>multihashing-async": true, "3box>ipfs>multicodec": true, "3box>ipfs>protons": true, - "@storybook/client-api>stable": true, + "@storybook/react>@storybook/store>stable": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true @@ -3366,7 +3366,7 @@ "localStorage": true } }, - "@storybook/client-api>stable": { + "@storybook/react>@storybook/store>stable": { "globals": { "define": true } @@ -6064,9 +6064,9 @@ "react-router-dom>react-router>mini-create-react-context": { "packages": { "@babel/runtime": true, - "@storybook/api>@reach/router>create-react-context>gud": true, "prop-types": true, "react": true, + "react-router-dom>react-router>mini-create-react-context>gud": true, "react-router-dom>tiny-warning": true } }, diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index ef9075582b32..161988fc3aab 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -764,7 +764,7 @@ "3box>ipfs>ipld-raw>multihashing-async": true, "3box>ipfs>multicodec": true, "3box>ipfs>protons": true, - "@storybook/client-api>stable": true, + "@storybook/react>@storybook/store>stable": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true @@ -2228,7 +2228,7 @@ }, "packages": { "@babel/core>@ampproject/remapping>@jridgewell/gen-mapping": true, - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping": true + "terser>@jridgewell/source-map>@jridgewell/trace-mapping": true } }, "@babel/core>@ampproject/remapping>@jridgewell/gen-mapping": { @@ -2236,22 +2236,8 @@ "define": true }, "packages": { - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/set-array": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true - } - }, - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping": { - "globals": { - "define": true - }, - "packages": { - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping>@jridgewell/resolve-uri": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true - } - }, - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping>@jridgewell/resolve-uri": { - "globals": { - "define": true + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/set-array": true, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true } }, "@babel/core>@babel/generator": { @@ -2259,34 +2245,10 @@ "console.error": true }, "packages": { - "@babel/core>@babel/generator>@jridgewell/gen-mapping": true, "@babel/core>@babel/generator>jsesc": true, "@babel/core>@babel/types": true, - "browserify>buffer": true - } - }, - "@babel/core>@babel/generator>@jridgewell/gen-mapping": { - "globals": { - "define": true - }, - "packages": { - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/set-array": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true - } - }, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/set-array": { - "globals": { - "define": true - } - }, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": { - "globals": { - "TextDecoder": true, - "define": true - }, - "packages": { - "browserify>buffer": true + "browserify>buffer": true, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping": true } }, "@babel/core>@babel/generator>jsesc": { @@ -3912,7 +3874,7 @@ "localStorage": true } }, - "@storybook/client-api>stable": { + "@storybook/react>@storybook/store>stable": { "globals": { "define": true } @@ -6676,9 +6638,9 @@ "react-router-dom>react-router>mini-create-react-context": { "packages": { "@babel/runtime": true, - "@storybook/api>@reach/router>create-react-context>gud": true, "prop-types": true, "react": true, + "react-router-dom>react-router>mini-create-react-context>gud": true, "react-router-dom>tiny-warning": true } }, @@ -6905,6 +6867,44 @@ "jsdom>request>is-typedarray": true } }, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping": { + "globals": { + "define": true + }, + "packages": { + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/set-array": true, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/set-array": { + "globals": { + "define": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": { + "globals": { + "TextDecoder": true, + "define": true + }, + "packages": { + "browserify>buffer": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping": { + "globals": { + "define": true + }, + "packages": { + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": { + "globals": { + "define": true + } + }, "terser>source-map-support>buffer-from": { "packages": { "browserify>buffer": true diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 033fd9e342d1..3dc28b6cfe4b 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -764,7 +764,7 @@ "3box>ipfs>ipld-raw>multihashing-async": true, "3box>ipfs>multicodec": true, "3box>ipfs>protons": true, - "@storybook/client-api>stable": true, + "@storybook/react>@storybook/store>stable": true, "browserify>assert": true, "browserify>buffer": true, "browserify>insert-module-globals>is-buffer": true @@ -3366,7 +3366,7 @@ "localStorage": true } }, - "@storybook/client-api>stable": { + "@storybook/react>@storybook/store>stable": { "globals": { "define": true } @@ -6064,9 +6064,9 @@ "react-router-dom>react-router>mini-create-react-context": { "packages": { "@babel/runtime": true, - "@storybook/api>@reach/router>create-react-context>gud": true, "prop-types": true, "react": true, + "react-router-dom>react-router>mini-create-react-context>gud": true, "react-router-dom>tiny-warning": true } }, diff --git a/lavamoat/build-system/policy-override.json b/lavamoat/build-system/policy-override.json index 84098a0b461c..499e683e2df1 100644 --- a/lavamoat/build-system/policy-override.json +++ b/lavamoat/build-system/policy-override.json @@ -91,6 +91,8 @@ "packages": { "eslint-plugin-jest>@typescript-eslint/experimental-utils>@typescript-eslint/types": true, "eslint-plugin-jest>@typescript-eslint/utils>eslint-utils": true, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/types": true, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager": true, "@typescript-eslint/parser>@typescript-eslint/types": true, "eslint": true, "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, @@ -99,6 +101,36 @@ "eslint>eslint-utils": true } }, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys": { + "builtin": { + "path": true + }, + "packages": { + "eslint>eslint-visitor-keys": true + } + }, + "@typescript-eslint/eslint-plugin>@typescript-eslint/utils": { + "builtin": { + "path": true + }, + "packages": { + "eslint>eslint-utils": true, + "@typescript-eslint/parser>@typescript-eslint/types": true, + "eslint": true, + "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, + "@babel/eslint-parser>eslint-scope": true, + "@typescript-eslint/utils": true + } + }, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager": { + "builtin": { + "path": true + }, + "packages": { + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys": true, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/types": true + } + }, "eslint-plugin-jest>@typescript-eslint/experimental-utils": { "builtin": { "path": true @@ -121,6 +153,7 @@ "@typescript-eslint/eslint-plugin>@typescript-eslint/type-utils": { "packages": { "@typescript-eslint/eslint-plugin>@typescript-eslint/type-utils>debug": true, + "@typescript-eslint/eslint-plugin>@typescript-eslint/utils": true, "@typescript-eslint/eslint-plugin>tsutils": true, "eslint-plugin-jest>@typescript-eslint/utils": true, "eslint>debug": true, @@ -142,6 +175,7 @@ "typescript": true, "eslint-plugin-jest>@typescript-eslint/utils": true, "@typescript-eslint/eslint-plugin>@typescript-eslint/type-utils": true, + "@typescript-eslint/eslint-plugin>@typescript-eslint/utils": true, "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, "@typescript-eslint/eslint-plugin>tsutils": true, "eslint>debug": true, diff --git a/lavamoat/build-system/policy.json b/lavamoat/build-system/policy.json index 8916e1184a2c..6bee6dcf246b 100644 --- a/lavamoat/build-system/policy.json +++ b/lavamoat/build-system/policy.json @@ -62,7 +62,7 @@ }, "packages": { "@babel/core>@ampproject/remapping>@jridgewell/gen-mapping": true, - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping": true + "terser>@jridgewell/source-map>@jridgewell/trace-mapping": true } }, "@babel/core>@ampproject/remapping>@jridgewell/gen-mapping": { @@ -70,22 +70,8 @@ "define": true }, "packages": { - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/set-array": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true - } - }, - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping": { - "globals": { - "define": true - }, - "packages": { - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping>@jridgewell/resolve-uri": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true - } - }, - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping>@jridgewell/resolve-uri": { - "globals": { - "define": true + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/set-array": true, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true } }, "@babel/core>@babel/generator": { @@ -93,31 +79,9 @@ "console.error": true }, "packages": { - "@babel/core>@babel/generator>@jridgewell/gen-mapping": true, "@babel/core>@babel/generator>jsesc": true, - "@babel/core>@babel/types": true - } - }, - "@babel/core>@babel/generator>@jridgewell/gen-mapping": { - "globals": { - "define": true - }, - "packages": { - "@babel/core>@ampproject/remapping>@jridgewell/trace-mapping": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/set-array": true, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true - } - }, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/set-array": { - "globals": { - "define": true - } - }, - "@babel/core>@babel/generator>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": { - "globals": { - "Buffer": true, - "TextDecoder": true, - "define": true + "@babel/core>@babel/types": true, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping": true } }, "@babel/core>@babel/generator>jsesc": { @@ -1092,11 +1056,6 @@ "define": true } }, - "@storybook/addon-essentials>@storybook/addon-docs>acorn-walk": { - "globals": { - "define": true - } - }, "@storybook/addon-essentials>@storybook/addon-docs>remark-slug>unist-util-visit": { "packages": { "@storybook/addon-essentials>@storybook/addon-docs>remark-slug>unist-util-visit>unist-util-visit-parents": true @@ -1117,47 +1076,20 @@ "util.deprecate": true } }, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities": { - "packages": { - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-entities": true, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-entities-legacy": true, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-reference-invalid": true, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-alphanumerical": true, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-hexadecimal": true, - "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true - } - }, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-alphanumerical": { - "packages": { - "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-alphabetical": true, - "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true - } - }, - "@storybook/react>@storybook/core-common>glob-base": { - "builtin": { - "path.dirname": true - }, - "packages": { - "@storybook/react>@storybook/core-common>glob-base>glob-parent": true, - "@storybook/react>@storybook/core-common>glob-base>is-glob": true - } - }, - "@storybook/react>@storybook/core-common>glob-base>glob-parent": { - "builtin": { - "path.dirname": true - }, - "packages": { - "@storybook/react>@storybook/core-common>glob-base>is-glob": true + "@storybook/react>acorn-walk": { + "globals": { + "define": true } }, - "@storybook/react>@storybook/core-common>glob-base>is-glob": { - "packages": { - "gulp-watch>anymatch>micromatch>is-extglob": true + "@storybook/react>webpack>json-parse-even-better-errors": { + "globals": { + "Buffer.isBuffer": true } }, "@typescript-eslint/eslint-plugin": { "packages": { "@typescript-eslint/eslint-plugin>@typescript-eslint/type-utils": true, + "@typescript-eslint/eslint-plugin>@typescript-eslint/utils": true, "@typescript-eslint/eslint-plugin>tsutils": true, "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, "eslint": true, @@ -1172,6 +1104,7 @@ "@typescript-eslint/eslint-plugin>@typescript-eslint/type-utils": { "packages": { "@typescript-eslint/eslint-plugin>@typescript-eslint/type-utils>debug": true, + "@typescript-eslint/eslint-plugin>@typescript-eslint/utils": true, "@typescript-eslint/eslint-plugin>tsutils": true, "eslint-plugin-jest>@typescript-eslint/utils": true, "eslint>debug": true, @@ -1188,6 +1121,19 @@ "@typescript-eslint/eslint-plugin>@typescript-eslint/type-utils>debug>ms": true } }, + "@typescript-eslint/eslint-plugin>@typescript-eslint/utils": { + "builtin": { + "path": true + }, + "packages": { + "@babel/eslint-parser>eslint-scope": true, + "@typescript-eslint/parser>@typescript-eslint/scope-manager": true, + "@typescript-eslint/parser>@typescript-eslint/types": true, + "@typescript-eslint/utils": true, + "eslint": true, + "eslint>eslint-utils": true + } + }, "@typescript-eslint/eslint-plugin>tsutils": { "packages": { "@sentry/utils>tslib": true, @@ -1386,7 +1332,7 @@ }, "brfs>static-module>acorn-node": { "packages": { - "@storybook/addon-essentials>@storybook/addon-docs>acorn-walk": true, + "@storybook/react>acorn-walk": true, "brfs>static-module>acorn-node>acorn": true, "watchify>xtend": true } @@ -2080,8 +2026,8 @@ "depcheck>cosmiconfig>parse-json": { "packages": { "@babel/code-frame": true, + "@storybook/react>webpack>json-parse-even-better-errors": true, "depcheck>cosmiconfig>parse-json>error-ex": true, - "depcheck>cosmiconfig>parse-json>json-parse-even-better-errors": true, "depcheck>cosmiconfig>parse-json>lines-and-columns": true } }, @@ -2093,11 +2039,6 @@ "depcheck>cosmiconfig>parse-json>error-ex>is-arrayish": true } }, - "depcheck>cosmiconfig>parse-json>json-parse-even-better-errors": { - "globals": { - "Buffer.isBuffer": true - } - }, "depcheck>cosmiconfig>yaml": { "globals": { "Buffer": true, @@ -2564,11 +2505,30 @@ "@typescript-eslint/parser>@typescript-eslint/types": true, "eslint": true, "eslint-plugin-jest>@typescript-eslint/experimental-utils>@typescript-eslint/types": true, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager": true, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/types": true, "eslint-plugin-jest>@typescript-eslint/utils>eslint-utils": true, "eslint>eslint-scope": true, "eslint>eslint-utils": true } }, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager": { + "builtin": { + "path": true + }, + "packages": { + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys": true, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/types": true + } + }, + "eslint-plugin-jest>@typescript-eslint/utils>@typescript-eslint/scope-manager>@typescript-eslint/visitor-keys": { + "builtin": { + "path": true + }, + "packages": { + "eslint>eslint-visitor-keys": true + } + }, "eslint-plugin-jest>@typescript-eslint/utils>eslint-utils": { "packages": { "eslint-plugin-jest>@typescript-eslint/utils>eslint-utils>eslint-visitor-keys": true @@ -2632,10 +2592,15 @@ }, "eslint-plugin-node>eslint-plugin-es": { "packages": { - "eslint-plugin-node>eslint-utils": true, + "eslint-plugin-node>eslint-plugin-es>eslint-utils": true, "eslint>regexpp": true } }, + "eslint-plugin-node>eslint-plugin-es>eslint-utils": { + "packages": { + "eslint-plugin-node>eslint-plugin-es>eslint-utils>eslint-visitor-keys": true + } + }, "eslint-plugin-node>eslint-utils": { "packages": { "eslint-plugin-node>eslint-utils>eslint-visitor-keys": true @@ -2864,7 +2829,7 @@ "packages": { "eslint>eslint-visitor-keys": true, "eslint>espree>acorn-jsx": true, - "ts-node>acorn": true + "terser>acorn": true } }, "eslint>espree>acorn-jsx": { @@ -4189,12 +4154,34 @@ }, "gulp-watch>anymatch>micromatch>parse-glob": { "packages": { - "@storybook/react>@storybook/core-common>glob-base": true, "gulp-watch>anymatch>micromatch>is-extglob": true, + "gulp-watch>anymatch>micromatch>parse-glob>glob-base": true, "gulp-watch>anymatch>micromatch>parse-glob>is-dotfile": true, "gulp-watch>anymatch>micromatch>parse-glob>is-glob": true } }, + "gulp-watch>anymatch>micromatch>parse-glob>glob-base": { + "builtin": { + "path.dirname": true + }, + "packages": { + "gulp-watch>anymatch>micromatch>parse-glob>glob-base>glob-parent": true, + "gulp-watch>anymatch>micromatch>parse-glob>glob-base>is-glob": true + } + }, + "gulp-watch>anymatch>micromatch>parse-glob>glob-base>glob-parent": { + "builtin": { + "path.dirname": true + }, + "packages": { + "gulp-watch>anymatch>micromatch>parse-glob>glob-base>is-glob": true + } + }, + "gulp-watch>anymatch>micromatch>parse-glob>glob-base>is-glob": { + "packages": { + "gulp-watch>anymatch>micromatch>is-extglob": true + } + }, "gulp-watch>anymatch>micromatch>parse-glob>is-glob": { "packages": { "gulp-watch>anymatch>micromatch>is-extglob": true @@ -7110,7 +7097,6 @@ }, "stylelint>@stylelint/postcss-markdown>remark>remark-parse": { "packages": { - "@storybook/components>react-syntax-highlighter>refractor>parse-entities": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>ccount": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>collapse-white-space": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-alphabetical": true, @@ -7118,6 +7104,7 @@ "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-whitespace-character": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-word-character": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>markdown-escapes": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>state-toggle": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>trim": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>trim-trailing-lines": true, @@ -7128,6 +7115,22 @@ "webpack>micromatch>braces>fill-range>repeat-string": true } }, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities": { + "packages": { + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>character-entities": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>character-entities-legacy": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>character-reference-invalid": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>is-alphanumerical": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>is-hexadecimal": true + } + }, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>is-alphanumerical": { + "packages": { + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-alphabetical": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true + } + }, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>unherit": { "packages": { "pumpify>inherits": true, @@ -7141,11 +7144,11 @@ }, "stylelint>@stylelint/postcss-markdown>remark>remark-stringify": { "packages": { - "@storybook/components>react-syntax-highlighter>refractor>parse-entities": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>ccount": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-whitespace-character": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>markdown-escapes": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>state-toggle": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>unherit": true, "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>is-alphanumeric": true, @@ -7169,10 +7172,10 @@ }, "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>stringify-entities": { "packages": { - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>character-entities-legacy": true, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-alphanumerical": true, - "@storybook/components>react-syntax-highlighter>refractor>parse-entities>is-hexadecimal": true, "stylelint>@stylelint/postcss-markdown>remark>remark-parse>is-decimal": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>character-entities-legacy": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>is-alphanumerical": true, + "stylelint>@stylelint/postcss-markdown>remark>remark-parse>parse-entities>is-hexadecimal": true, "stylelint>@stylelint/postcss-markdown>remark>remark-stringify>stringify-entities>character-entities-html4": true } }, @@ -7642,17 +7645,60 @@ "console.log": true, "console.warn": true, "define": true, - "process.argv": true, - "process.exit": true, - "process.platform": true, - "process.stderr.write": true, - "process.stdin.on": true, - "process.stdin.resume": true, - "process.stdin.setEncoding": true + "process": true }, "packages": { - "source-map": true, - "ts-node>acorn": true + "terser>@jridgewell/source-map": true, + "terser>acorn": true + } + }, + "terser>@jridgewell/source-map": { + "globals": { + "Buffer": true, + "TextDecoder": true, + "define": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping": { + "globals": { + "define": true + }, + "packages": { + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/set-array": true, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/set-array": { + "globals": { + "define": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": { + "globals": { + "Buffer": true, + "TextDecoder": true, + "define": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping": { + "globals": { + "define": true + }, + "packages": { + "terser>@jridgewell/source-map>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": true + } + }, + "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": { + "globals": { + "define": true + } + }, + "terser>acorn": { + "globals": { + "console": true, + "define": true } }, "terser>source-map-support": { @@ -7700,12 +7746,6 @@ "pumpify>inherits": true } }, - "ts-node>acorn": { - "globals": { - "console": true, - "define": true - } - }, "tsutils": { "packages": { "tslib": true, diff --git a/package.json b/package.json index 8eb19a2d7772..04e4923937e6 100644 --- a/package.json +++ b/package.json @@ -64,9 +64,9 @@ "devtools:redux": "remotedev --hostname=localhost --port=8000", "start:dev": "concurrently -k -n build,react,redux yarn:start yarn:devtools:react yarn:devtools:redux", "announce": "node development/announcer.js", - "storybook": "start-storybook -p 6006 -c .storybook -s ./app,./.storybook/images", + "storybook": "start-storybook -p 6006 -c .storybook", "storybook:test": "jest --config=./jest.stories.config.js", - "storybook:build": "build-storybook -c .storybook -o storybook-build -s ./app,./.storybook/images", + "storybook:build": "build-storybook -c .storybook -o storybook-build", "storybook:deploy": "storybook-to-ghpages --existing-output-dir storybook-build --remote storybook --branch master", "update-changelog": "auto-changelog update", "generate:migration": "./development/generate-migration.sh", @@ -104,7 +104,6 @@ "netmask": "^2.0.1", "pubnub/superagent-proxy": "^3.0.0", "pull-ws": "^3.3.2", - "ws": "^7.4.6", "json-schema": "^0.4.0", "simple-get": "^4.0.1" }, @@ -258,19 +257,19 @@ "@metamask/phishing-warning": "^1.2.1", "@metamask/test-dapp": "^5.2.0", "@sentry/cli": "^1.58.0", - "@storybook/addon-a11y": "^6.3.12", - "@storybook/addon-actions": "^6.3.12", - "@storybook/addon-essentials": "^6.3.12", - "@storybook/addon-knobs": "^6.3.1", - "@storybook/addons": "^6.3.12", - "@storybook/api": "^6.3.12", - "@storybook/client-api": "^6.3.12", - "@storybook/components": "^6.3.12", - "@storybook/core": "^6.3.12", - "@storybook/core-events": "^6.3.0", - "@storybook/react": "^6.3.12", - "@storybook/storybook-deployer": "^2.8.10", - "@storybook/theming": "^6.3.0", + "@storybook/addon-a11y": "^6.5.10", + "@storybook/addon-actions": "^6.5.10", + "@storybook/addon-essentials": "^6.5.10", + "@storybook/addon-knobs": "^6.4.0", + "@storybook/addons": "^6.5.10", + "@storybook/api": "^6.5.10", + "@storybook/client-api": "^6.5.10", + "@storybook/components": "^6.5.10", + "@storybook/core": "^6.5.10", + "@storybook/core-events": "^6.5.10", + "@storybook/react": "^6.5.10", + "@storybook/storybook-deployer": "^2.8.12", + "@storybook/theming": "^6.5.10", "@testing-library/jest-dom": "^5.11.10", "@testing-library/react": "^10.4.8", "@testing-library/react-hooks": "^3.2.1", @@ -327,6 +326,7 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.23.1", "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-storybook": "^0.6.4", "fancy-log": "^1.3.3", "fast-glob": "^3.2.2", "fs-extra": "^8.1.0", @@ -386,7 +386,7 @@ "source-map": "^0.7.2", "source-map-explorer": "^2.4.2", "squirrelly": "^8.0.8", - "storybook-dark-mode": "^1.0.9", + "storybook-dark-mode": "^1.1.0", "string.prototype.matchall": "^4.0.2", "style-loader": "^0.21.0", "stylelint": "^13.6.1", @@ -471,7 +471,9 @@ "@keystonehq/bc-ur-registry-eth>hdkey>secp256k1": false, "@metamask/rpc-methods>@metamask/key-tree>secp256k1": false, "eth-lattice-keyring>gridplus-sdk>secp256k1": false, - "eth-lattice-keyring>secp256k1": false + "eth-lattice-keyring>secp256k1": false, + "@storybook/react>@pmmmwh/react-refresh-webpack-plugin>core-js-pure": false, + "@testing-library/jest-dom>aria-query>@babel/runtime-corejs3>core-js-pure": false } } } diff --git a/yarn.lock b/yarn.lock index 75836b0eb6cd..e06fc6145f55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -82,13 +82,6 @@ dependencies: tslib "~2.0.1" -"@babel/code-frame@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" @@ -561,7 +554,7 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.18.6": +"@babel/plugin-proposal-private-property-in-object@^7.12.1", "@babel/plugin-proposal-private-property-in-object@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== @@ -1194,7 +1187,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== @@ -1235,10 +1228,10 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" -"@base2/pretty-print-object@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" - integrity sha512-4Th98KlMHr5+JkxfcoDT//6vY8vM+iSPrLNpHhRyLx2CFYi8e2RfqPLdpbnpo0Q5lQC5hNB79yes07zb02fvCw== +"@base2/pretty-print-object@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" + integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -1260,6 +1253,11 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -1309,7 +1307,7 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/core@^10.0.9", "@emotion/core@^10.1.1": +"@emotion/core@^10.0.9": version "10.1.1" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3" integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA== @@ -1340,20 +1338,6 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/is-prop-valid@0.8.6": - version "0.8.6" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.6.tgz#4757646f0a58e9dec614c47c838e7147d88c263c" - integrity sha512-mnZMho3Sq8BfzkYYRVc8ilQTnc8U02Ytp6J1AwM6taQStZ3AhsEJBX2LzhA/LJirNCwM2VtHL3VFIZ+sNJUgUQ== - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/is-prop-valid@^0.8.6": - version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" - "@emotion/memoize@0.7.4": version "0.7.4" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" @@ -1375,24 +1359,6 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== -"@emotion/styled-base@^10.0.27": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/styled-base/-/styled-base-10.0.27.tgz#d9efa307ae4e938fcc4d0596b40b7e8bc10f7c7c" - integrity sha512-ufHM/HhE3nr309hJG9jxuFt71r6aHn7p+bwXduFxcwPFEfBIqvmZUMtZ9YxIsY61PVwK3bp4G1XhaCzy9smVvw== - dependencies: - "@babel/runtime" "^7.5.5" - "@emotion/is-prop-valid" "0.8.6" - "@emotion/serialize" "^0.11.15" - "@emotion/utils" "0.11.3" - -"@emotion/styled@^10.0.27": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" - integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== - dependencies: - "@emotion/styled-base" "^10.0.27" - babel-plugin-emotion "^10.0.27" - "@emotion/stylis@0.8.5": version "0.8.5" resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" @@ -2537,7 +2503,7 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -2556,6 +2522,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" @@ -2853,16 +2827,7 @@ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-4.1.19.tgz#33f8c6c63a14a3acc50062df93eaa92f33a10a0a" integrity sha512-zDrdjvX2dwunW4HOGwpibLHvfnDRQOJ89bGnkQ7TXZ7H7JSehbg2Gf0zNbML+R/03QItZ7EI6QHloOJ2znFSdA== -"@mdx-js/loader@^1.6.22": - version "1.6.22" - resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4" - integrity sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q== - dependencies: - "@mdx-js/mdx" "1.6.22" - "@mdx-js/react" "1.6.22" - loader-utils "2.0.0" - -"@mdx-js/mdx@1.6.22", "@mdx-js/mdx@^1.6.22": +"@mdx-js/mdx@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== @@ -2887,7 +2852,7 @@ unist-builder "2.0.3" unist-util-visit "2.0.3" -"@mdx-js/react@1.6.22", "@mdx-js/react@^1.6.22": +"@mdx-js/react@^1.6.22": version "1.6.22" resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== @@ -3378,19 +3343,22 @@ puka "^1.0.1" read-package-json-fast "^1.1.3" -"@pmmmwh/react-refresh-webpack-plugin@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" - integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.7.tgz#58f8217ba70069cc6a73f5d7e05e85b458c150e2" + integrity sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q== dependencies: - ansi-html "^0.0.7" + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.8.1" error-stack-parser "^2.0.6" - html-entities "^1.2.1" - native-url "^0.2.6" - schema-utils "^2.6.5" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" source-map "^0.7.3" -"@popperjs/core@^2.4.0", "@popperjs/core@^2.5.4", "@popperjs/core@^2.6.0": +"@popperjs/core@^2.4.0": version "2.9.2" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== @@ -3448,16 +3416,6 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@reach/router@^1.3.4": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" - integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== - dependencies: - create-react-context "0.3.0" - invariant "^2.2.3" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - "@reduxjs/toolkit@^1.6.2": version "1.6.2" resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.6.2.tgz#2f2b5365df77dd6697da28fdf44f33501ed9ba37" @@ -3633,62 +3591,65 @@ resolved "https://registry.yarnpkg.com/@stablelib/utf8/-/utf8-0.10.1.tgz#eecf54884da7b2bee235e3c70efb8cd5c07ba5bd" integrity sha512-+uM1YZ4MhBC82vt99prF7DXNGqhYmJ9cQ3p5qNowMNkkzn9OWEkqBvguBW3ChAt7JvqZ3SD5HJOfc6YgnfMTHw== -"@storybook/addon-a11y@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-6.3.12.tgz#2f930fc84fc275a4ed43a716fc09cc12caf4e110" - integrity sha512-q1NdRHFJV6sLEEJw0hatCc5ZIthELqM/AWdrEWDyhcJNyiq7Tq4nKqQBMTQSYwHiUAmxVgw7i4oa1vM2M51/3g== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/channels" "6.3.12" - "@storybook/client-api" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/theming" "6.3.12" +"@storybook/addon-a11y@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-6.5.10.tgz#a907cbd3f1889ba367828435a58ecc9dac42f6ba" + integrity sha512-BnDbLg7YEAX1aEyiB+gDFYMXIbiSFH/M0CdwPCq7T7o8cqULKOHtQkndMja1soMxsqHAVH8AGvVVZ8VlaxaJ3Q== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/channels" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/theming" "6.5.10" axe-core "^4.2.0" core-js "^3.8.2" global "^4.4.0" - lodash "^4.17.20" + lodash "^4.17.21" react-sizeme "^3.0.1" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-actions@6.3.12", "@storybook/addon-actions@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.3.12.tgz#69eb5f8f780f1b00456051da6290d4b959ba24a0" - integrity sha512-mzuN4Ano4eyicwycM2PueGzzUCAEzt9/6vyptWEIVJu0sjK0J9KtBRlqFi1xGQxmCfimDR/n/vWBBkc7fp2uJA== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/client-api" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/theming" "6.3.12" +"@storybook/addon-actions@6.5.10", "@storybook/addon-actions@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.5.10.tgz#83ec807a899e0412cf98037647f256c45cc32bf5" + integrity sha512-vpCnEu81fmtYzOf0QsRYoDuf9wXgVVl2VysE1dWRebRhIUDU0JurrthTnw322e38D4FzaoNGqZE7wnBYBohzZA== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/theming" "6.5.10" core-js "^3.8.2" fast-deep-equal "^3.1.3" global "^4.4.0" - lodash "^4.17.20" - polished "^4.0.5" + lodash "^4.17.21" + polished "^4.2.2" prop-types "^15.7.2" react-inspector "^5.1.0" regenerator-runtime "^0.13.7" + telejson "^6.0.8" ts-dedent "^2.0.0" util-deprecate "^1.0.2" uuid-browser "^3.1.0" -"@storybook/addon-backgrounds@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.3.12.tgz#5feecd461f48178aa976ba2694418e9ea1d621b3" - integrity sha512-51cHBx0HV7K/oRofJ/1pE05qti6sciIo8m4iPred1OezXIrJ/ckzP+gApdaUdzgcLAr6/MXQWLk0sJuImClQ6w== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/theming" "6.3.12" +"@storybook/addon-backgrounds@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.10.tgz#9ab2d2165fe35d265d9d6013fc174fa8528a272f" + integrity sha512-5uzQda3dh891h7BL8e9Ymk7BI+QgkkzDJXuA4mHjOXfIiD3S3efhJI8amXuBC2ZpIr6zmVit0MqZVyoVve46cQ== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/theming" "6.5.10" core-js "^3.8.2" global "^4.4.0" memoizerific "^1.11.3" @@ -3696,94 +3657,83 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-controls@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.3.12.tgz#dbb732c62cf06fb7ccaf87d6ab11c876d14456fc" - integrity sha512-WO/PbygE4sDg3BbstJ49q0uM3Xu5Nw4lnHR5N4hXSvRAulZt1d1nhphRTHjfX+CW+uBcfzkq9bksm6nKuwmOyw== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/client-api" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/node-logger" "6.3.12" - "@storybook/theming" "6.3.12" +"@storybook/addon-controls@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.5.10.tgz#275ddcd0f4dc1a107777b425417a8f252f52a91e" + integrity sha512-lC2y3XcolmQAJwFurIyGrynAHPWmfNtTCdu3rQBTVGwyxCoNwdOOeC2jV0BRqX2+CW6OHzJr9frNWXPSaZ8c4w== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-common" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/node-logger" "6.5.10" + "@storybook/store" "6.5.10" + "@storybook/theming" "6.5.10" core-js "^3.8.2" + lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.3.12.tgz#2ec73b4f231d9f190d5c89295bc47bea6a95c6d1" - integrity sha512-iUrqJBMTOn2PgN8AWNQkfxfIPkh8pEg27t8UndMgfOpeGK/VWGw2UEifnA82flvntcilT4McxmVbRHkeBY9K5A== +"@storybook/addon-docs@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.5.10.tgz#dde18b5659e8033651e139a231a7f69306433b92" + integrity sha512-1kgjo3f0vL6GN8fTwLL05M/q/kDdzvuqwhxPY/v5hubFb3aQZGr2yk9pRBaLAbs4bez0yG0ASXcwhYnrEZUppg== dependencies: - "@babel/core" "^7.12.10" - "@babel/generator" "^7.12.11" - "@babel/parser" "^7.12.11" "@babel/plugin-transform-react-jsx" "^7.12.12" "@babel/preset-env" "^7.12.11" "@jest/transform" "^26.6.2" - "@mdx-js/loader" "^1.6.22" - "@mdx-js/mdx" "^1.6.22" "@mdx-js/react" "^1.6.22" - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/builder-webpack4" "6.3.12" - "@storybook/client-api" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/core" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/csf" "0.0.1" - "@storybook/csf-tools" "6.3.12" - "@storybook/node-logger" "6.3.12" - "@storybook/postinstall" "6.3.12" - "@storybook/source-loader" "6.3.12" - "@storybook/theming" "6.3.12" - acorn "^7.4.1" - acorn-jsx "^5.3.1" - acorn-walk "^7.2.0" + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-common" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/docs-tools" "6.5.10" + "@storybook/mdx1-csf" "^0.0.1" + "@storybook/node-logger" "6.5.10" + "@storybook/postinstall" "6.5.10" + "@storybook/preview-web" "6.5.10" + "@storybook/source-loader" "6.5.10" + "@storybook/store" "6.5.10" + "@storybook/theming" "6.5.10" + babel-loader "^8.0.0" core-js "^3.8.2" - doctrine "^3.0.0" - escodegen "^2.0.0" fast-deep-equal "^3.1.3" global "^4.4.0" - html-tags "^3.1.0" - js-string-escape "^1.0.1" - loader-utils "^2.0.0" - lodash "^4.17.20" - p-limit "^3.1.0" - prettier "~2.2.1" - prop-types "^15.7.2" - react-element-to-jsx-string "^14.3.2" + lodash "^4.17.21" regenerator-runtime "^0.13.7" remark-external-links "^8.0.0" remark-slug "^6.0.0" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-essentials@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.3.12.tgz#445cc4bc2eb9168a9e5de1fdfb5ef3b92974e74b" - integrity sha512-PK0pPE0xkq00kcbBcFwu/5JGHQTu4GvLIHfwwlEGx6GWNQ05l6Q+1Z4nE7xJGv2PSseSx3CKcjn8qykNLe6O6g== - dependencies: - "@storybook/addon-actions" "6.3.12" - "@storybook/addon-backgrounds" "6.3.12" - "@storybook/addon-controls" "6.3.12" - "@storybook/addon-docs" "6.3.12" - "@storybook/addon-measure" "^2.0.0" - "@storybook/addon-toolbars" "6.3.12" - "@storybook/addon-viewport" "6.3.12" - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/node-logger" "6.3.12" +"@storybook/addon-essentials@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.5.10.tgz#d56f0f972e3bd5eae6c79b2126f510c5c020b62d" + integrity sha512-PT2aiR4vgAyB0pl3HNBUa4/a7NDRxASxAazz7zt9ZDirkipDKfxwdcLeRoJzwSngVDWEhuz5/paN5x4eNp4Hww== + dependencies: + "@storybook/addon-actions" "6.5.10" + "@storybook/addon-backgrounds" "6.5.10" + "@storybook/addon-controls" "6.5.10" + "@storybook/addon-docs" "6.5.10" + "@storybook/addon-measure" "6.5.10" + "@storybook/addon-outline" "6.5.10" + "@storybook/addon-toolbars" "6.5.10" + "@storybook/addon-viewport" "6.5.10" + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/core-common" "6.5.10" + "@storybook/node-logger" "6.5.10" core-js "^3.8.2" regenerator-runtime "^0.13.7" - storybook-addon-outline "^1.4.1" ts-dedent "^2.0.0" -"@storybook/addon-knobs@^6.3.1": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-6.3.1.tgz#2115c6f0d5759e4fe73d5f25710f4a94ebd6f0db" - integrity sha512-2GGGnQSPXXUhHHYv4IW6pkyQlCPYXKYiyGzfhV7Zhs95M2Ban08OA6KLmliMptWCt7U9tqTO8dB5u0C2cWmCTw== +"@storybook/addon-knobs@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-6.4.0.tgz#fa5943ef21826cdc2e20ded74edfdf5a6dc71dcf" + integrity sha512-DiH1/5e2AFHoHrncl1qLu18ZHPHzRMMPvOLFz8AWvvmc+VCqTdIaE+tdxKr3e8rYylKllibgvDOzrLjfTNjF+Q== dependencies: copy-to-clipboard "^3.3.1" core-js "^3.8.2" @@ -3797,136 +3747,138 @@ react-lifecycles-compat "^3.0.4" react-select "^3.2.0" -"@storybook/addon-measure@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-2.0.0.tgz#c40bbe91bacd3f795963dc1ee6ff86be87deeda9" - integrity sha512-ZhdT++cX+L9LwjhGYggvYUUVQH/MGn2rwbrAwCMzA/f2QTFvkjxzX8nDgMxIhaLCDC+gHIxfJG2wrWN0jkBr3g== - -"@storybook/addon-toolbars@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.3.12.tgz#bc0d420b3476c891c42f7b0ab3b457e9e5ef7ca5" - integrity sha512-8GvP6zmAfLPRnYRARSaIwLkQClLIRbflRh4HZoFk6IMjQLXZb4NL3JS5OLFKG+HRMMU2UQzfoSDqjI7k7ptyRw== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/client-api" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/theming" "6.3.12" +"@storybook/addon-measure@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-6.5.10.tgz#afac72a15d927f9f2119e2218017d757a8c8c6a4" + integrity sha512-ss7L1H5K5hXygDIoVwj+QyVXbve5V67x7CofLiLCgQYuJzfO16+sPGjiTGWMpTb4ijox2uKWnTkpilt5bCjXgw== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + core-js "^3.8.2" + global "^4.4.0" + +"@storybook/addon-outline@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-6.5.10.tgz#a49164697344de1bd11d35a5ce21e59afc0dd19c" + integrity sha512-AjdaeQ+/iBKmGrAqRW4niwMB6AkgGnYmSzVs5Cf6F/Sb4Dp+vzgLNOwLABD9qs8Ri8dvHl5J4QpVwQKUhYZaOQ== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + +"@storybook/addon-toolbars@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.5.10.tgz#750e6c7fa50a54dac7fe5df7b7c239fb02a4456c" + integrity sha512-S0Ljc6Wv+bPbx2e0iTveJ6bBDqjsemu+FZD4qDLsHreoI7DAcqyrF5Def1l8xNohixIVpx8dQpYXRtyzNlXekg== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/theming" "6.5.10" core-js "^3.8.2" regenerator-runtime "^0.13.7" -"@storybook/addon-viewport@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.3.12.tgz#2fd61e60644fb07185a662f75b3e9dad8ad14f01" - integrity sha512-TRjyfm85xouOPmXxeLdEIzXLfJZZ1ePQ7p/5yphDGBHdxMU4m4qiZr8wYpUaxHsRu/UB3dKfaOyGT+ivogbnbw== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/theming" "6.3.12" +"@storybook/addon-viewport@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.5.10.tgz#4c6151d7e8177b07df8dcb4c61e842dac949215b" + integrity sha512-RFMd+4kZljyuJjR9OJ2bFXHrSG7VTi5FDZYWEU+4W1sBxzC+JhnVnUP+HJH3gUxEFIRQC5neRzwWRE9RUUoALQ== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/theming" "6.5.10" core-js "^3.8.2" global "^4.4.0" memoizerific "^1.11.3" prop-types "^15.7.2" regenerator-runtime "^0.13.7" -"@storybook/addons@6.3.12", "@storybook/addons@^6.3.0", "@storybook/addons@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.3.12.tgz#8773dcc113c5086dfff722388b7b65580e43b65b" - integrity sha512-UgoMyr7Qr0FS3ezt8u6hMEcHgyynQS9ucr5mAwZky3wpXRPFyUTmMto9r4BBUdqyUvTUj/LRKIcmLBfj+/l0Fg== - dependencies: - "@storybook/api" "6.3.12" - "@storybook/channels" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/router" "6.3.12" - "@storybook/theming" "6.3.12" +"@storybook/addons@6.5.10", "@storybook/addons@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.5.10.tgz#bff2f8fb8453e9df04fa6dbc41341fd05f4cdeba" + integrity sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g== + dependencies: + "@storybook/api" "6.5.10" + "@storybook/channels" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/router" "6.5.10" + "@storybook/theming" "6.5.10" + "@types/webpack-env" "^1.16.0" core-js "^3.8.2" global "^4.4.0" regenerator-runtime "^0.13.7" -"@storybook/api@6.3.12", "@storybook/api@^6.3.0", "@storybook/api@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.3.12.tgz#2845c20464d5348d676d09665e8ab527825ed7b5" - integrity sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA== - dependencies: - "@reach/router" "^1.3.4" - "@storybook/channels" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/csf" "0.0.1" - "@storybook/router" "6.3.12" +"@storybook/api@6.5.10", "@storybook/api@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.5.10.tgz#215623844648f0da2ac646fdcdd1345c2e1a8490" + integrity sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A== + dependencies: + "@storybook/channels" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/router" "6.5.10" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.3.12" - "@types/reach__router" "^1.3.7" + "@storybook/theming" "6.5.10" core-js "^3.8.2" fast-deep-equal "^3.1.3" global "^4.4.0" - lodash "^4.17.20" + lodash "^4.17.21" memoizerific "^1.11.3" - qs "^6.10.0" regenerator-runtime "^0.13.7" store2 "^2.12.0" - telejson "^5.3.2" + telejson "^6.0.8" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/builder-webpack4@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack4/-/builder-webpack4-6.3.12.tgz#288d541e2801892721c975259476022da695dbfe" - integrity sha512-Dlm5Fc1svqpFDnVPZdAaEBiM/IDZHMV3RfEGbUTY/ZC0q8b/Ug1czzp/w0aTIjOFRuBDcG6IcplikaqHL8CJLg== +"@storybook/builder-webpack4@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack4/-/builder-webpack4-6.5.10.tgz#79e95323577a37349ab3c81193fa249ac5c50173" + integrity sha512-AoKjsCNoQQoZXYwBDxO8s+yVEd5FjBJAaysEuUTHq2fb81jwLrGcEOo6hjw4jqfugZQIzYUEjPazlvubS78zpw== dependencies: "@babel/core" "^7.12.10" - "@babel/plugin-proposal-class-properties" "^7.12.1" - "@babel/plugin-proposal-decorators" "^7.12.12" - "@babel/plugin-proposal-export-default-from" "^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" - "@babel/plugin-proposal-object-rest-spread" "^7.12.1" - "@babel/plugin-proposal-optional-chaining" "^7.12.7" - "@babel/plugin-proposal-private-methods" "^7.12.1" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.12.1" - "@babel/plugin-transform-block-scoping" "^7.12.12" - "@babel/plugin-transform-classes" "^7.12.1" - "@babel/plugin-transform-destructuring" "^7.12.1" - "@babel/plugin-transform-for-of" "^7.12.1" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-transform-shorthand-properties" "^7.12.1" - "@babel/plugin-transform-spread" "^7.12.1" - "@babel/plugin-transform-template-literals" "^7.12.1" - "@babel/preset-env" "^7.12.11" - "@babel/preset-react" "^7.12.10" - "@babel/preset-typescript" "^7.12.7" - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/channel-postmessage" "6.3.12" - "@storybook/channels" "6.3.12" - "@storybook/client-api" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/core-common" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/node-logger" "6.3.12" - "@storybook/router" "6.3.12" + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/channel-postmessage" "6.5.10" + "@storybook/channels" "6.5.10" + "@storybook/client-api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-common" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/node-logger" "6.5.10" + "@storybook/preview-web" "6.5.10" + "@storybook/router" "6.5.10" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.3.12" - "@storybook/ui" "6.3.12" - "@types/node" "^14.0.10" + "@storybook/store" "6.5.10" + "@storybook/theming" "6.5.10" + "@storybook/ui" "6.5.10" + "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" autoprefixer "^9.8.6" - babel-loader "^8.2.2" - babel-plugin-macros "^2.8.0" - babel-plugin-polyfill-corejs3 "^0.1.0" + babel-loader "^8.0.0" case-sensitive-paths-webpack-plugin "^2.3.0" core-js "^3.8.2" css-loader "^3.6.0" - dotenv-webpack "^1.8.0" file-loader "^6.2.0" find-up "^5.0.0" fork-ts-checker-webpack-plugin "^4.1.6" - fs-extra "^9.0.1" glob "^7.1.6" glob-promise "^3.4.0" global "^4.4.0" @@ -3936,7 +3888,6 @@ postcss-flexbugs-fixes "^4.2.1" postcss-loader "^4.2.0" raw-loader "^4.0.2" - react-dev-utils "^11.0.3" stable "^0.1.8" style-loader "^1.3.0" terser-webpack-plugin "^4.2.3" @@ -3946,120 +3897,120 @@ webpack "4" webpack-dev-middleware "^3.7.3" webpack-filter-warnings-plugin "^1.2.1" - webpack-hot-middleware "^2.25.0" + webpack-hot-middleware "^2.25.1" webpack-virtual-modules "^0.2.2" -"@storybook/channel-postmessage@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.3.12.tgz#3ff9412ac0f445e3b8b44dd414e783a5a47ff7c1" - integrity sha512-Ou/2Ga3JRTZ/4sSv7ikMgUgLTeZMsXXWLXuscz4oaYhmOqAU9CrJw0G1NitwBgK/+qC83lEFSLujHkWcoQDOKg== +"@storybook/channel-postmessage@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.5.10.tgz#be8971b4b7f91b664bb2c6965fdfb073d541a03e" + integrity sha512-t9PTA0UzFvYa3IlOfpBOolfrRMPTjUMIeCQ6FNyM0aj5GqLKSvoQzP8NeoRpIrvyf6ljFKKdaMaZ3fiCvh45ag== dependencies: - "@storybook/channels" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/core-events" "6.3.12" + "@storybook/channels" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" core-js "^3.8.2" global "^4.4.0" qs "^6.10.0" - telejson "^5.3.2" + telejson "^6.0.8" -"@storybook/channels@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.3.12.tgz#aa0d793895a8b211f0ad3459c61c1bcafd0093c7" - integrity sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw== +"@storybook/channel-websocket@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/channel-websocket/-/channel-websocket-6.5.10.tgz#bd1316a9b555229b215e5054a76b57c503dd8adc" + integrity sha512-RTXMZbMWCS3xU+4GVIdfnUXsKcwg/WTozy88/5OxaKjGw6KgRedqLAQJKJ6Y5XlnwIcWelirkHj/COwTTXhbPg== + dependencies: + "@storybook/channels" "6.5.10" + "@storybook/client-logger" "6.5.10" + core-js "^3.8.2" + global "^4.4.0" + telejson "^6.0.8" + +"@storybook/channels@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.5.10.tgz#fca5b0d1ea8d30b022e805301ed436407c867ac4" + integrity sha512-lo26YZ6kWpHXLhuHJF4P/bICY7jD/rXEZqReKtGOSk1Lv99/xvG6pqmcy3hWLf3v3Dy/8otjRPSR7izFVIIZgQ== dependencies: core-js "^3.8.2" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-api@6.3.12", "@storybook/client-api@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.3.12.tgz#a0c6d72a871d1cb02b4b98675472839061e39b5b" - integrity sha512-xnW+lKKK2T774z+rOr9Wopt1aYTStfb86PSs9p3Fpnc2Btcftln+C3NtiHZl8Ccqft8Mz/chLGgewRui6tNI8g== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/channel-postmessage" "6.3.12" - "@storybook/channels" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/csf" "0.0.1" +"@storybook/client-api@6.5.10", "@storybook/client-api@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.5.10.tgz#0bc3f68ce014ce1ffd560472a893ba04be370f09" + integrity sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/channel-postmessage" "6.5.10" + "@storybook/channels" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/store" "6.5.10" "@types/qs" "^6.9.5" "@types/webpack-env" "^1.16.0" core-js "^3.8.2" + fast-deep-equal "^3.1.3" global "^4.4.0" - lodash "^4.17.20" + lodash "^4.17.21" memoizerific "^1.11.3" qs "^6.10.0" regenerator-runtime "^0.13.7" - stable "^0.1.8" store2 "^2.12.0" + synchronous-promise "^2.0.15" ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-logger@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.3.12.tgz#6585c98923b49fcb25dbceeeb96ef2a83e28e0f4" - integrity sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ== +"@storybook/client-logger@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.5.10.tgz#cfea823a5b8444409daa74f854c5d05367986b34" + integrity sha512-/xA0MHOevXev68hyLMQw8Qo8KczSIdXOxliAgrycMTkDmw5eKeA8TP7B8zP3wGuq/e3MrdD9/8MWhb/IQBNC3w== dependencies: core-js "^3.8.2" global "^4.4.0" -"@storybook/components@6.3.12", "@storybook/components@^6.3.0", "@storybook/components@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.3.12.tgz#0c7967c60354c84afa20dfab4753105e49b1927d" - integrity sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ== - dependencies: - "@popperjs/core" "^2.6.0" - "@storybook/client-logger" "6.3.12" - "@storybook/csf" "0.0.1" - "@storybook/theming" "6.3.12" - "@types/color-convert" "^2.0.0" - "@types/overlayscrollbars" "^1.12.0" - "@types/react-syntax-highlighter" "11.0.5" - color-convert "^2.0.1" +"@storybook/components@6.5.10", "@storybook/components@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.5.10.tgz#268e1269bc3d262f7dcec13f96c3b844919687b8" + integrity sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw== + dependencies: + "@storybook/client-logger" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/theming" "6.5.10" core-js "^3.8.2" - fast-deep-equal "^3.1.3" - global "^4.4.0" - lodash "^4.17.20" - markdown-to-jsx "^7.1.3" memoizerific "^1.11.3" - overlayscrollbars "^1.13.1" - polished "^4.0.5" - prop-types "^15.7.2" - react-colorful "^5.1.2" - react-popper-tooltip "^3.1.1" - react-syntax-highlighter "^13.5.3" - react-textarea-autosize "^8.3.0" + qs "^6.10.0" regenerator-runtime "^0.13.7" - ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/core-client@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.3.12.tgz#fd01bfbc69c331f4451973a4e7597624dc3737e5" - integrity sha512-8Smd9BgZHJpAdevLKQYinwtjSyCZAuBMoetP4P5hnn53mWl0NFbrHFaAdT+yNchDLZQUbf7Y18VmIqEH+RCR5w== - dependencies: - "@storybook/addons" "6.3.12" - "@storybook/channel-postmessage" "6.3.12" - "@storybook/client-api" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/csf" "0.0.1" - "@storybook/ui" "6.3.12" +"@storybook/core-client@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.5.10.tgz#90c86923236c8efff33d454a0dc552f6df4346b1" + integrity sha512-THsIjNrOrampTl0Lgfjvfjk1JnktKb4CQLOM80KpQb4cjDqorBjJmErzUkUQ2y3fXvrDmQ/kUREkShET4XEdtA== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/channel-postmessage" "6.5.10" + "@storybook/channel-websocket" "6.5.10" + "@storybook/client-api" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/preview-web" "6.5.10" + "@storybook/store" "6.5.10" + "@storybook/ui" "6.5.10" airbnb-js-shims "^2.2.1" ansi-to-html "^0.6.11" core-js "^3.8.2" global "^4.4.0" - lodash "^4.17.20" + lodash "^4.17.21" qs "^6.10.0" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" unfetch "^4.2.0" util-deprecate "^1.0.2" -"@storybook/core-common@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.3.12.tgz#95ce953d7efda44394b159322d6a2280c202f21c" - integrity sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA== +"@storybook/core-common@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.5.10.tgz#6b93449548b0890f5c68d89f0ca78e092026182c" + integrity sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-proposal-class-properties" "^7.12.1" @@ -4069,6 +4020,7 @@ "@babel/plugin-proposal-object-rest-spread" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.12.7" "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-private-property-in-object" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-transform-arrow-functions" "^7.12.1" "@babel/plugin-transform-block-scoping" "^7.12.12" @@ -4082,13 +4034,11 @@ "@babel/preset-react" "^7.12.10" "@babel/preset-typescript" "^7.12.7" "@babel/register" "^7.12.1" - "@storybook/node-logger" "6.3.12" + "@storybook/node-logger" "6.5.10" "@storybook/semver" "^7.3.2" - "@types/glob-base" "^0.3.0" - "@types/micromatch" "^4.0.1" - "@types/node" "^14.0.10" + "@types/node" "^14.0.10 || ^16.0.0" "@types/pretty-hrtime" "^1.0.0" - babel-loader "^8.2.2" + babel-loader "^8.0.0" babel-plugin-macros "^3.0.1" babel-plugin-polyfill-corejs3 "^0.1.0" chalk "^4.1.0" @@ -4097,136 +4047,168 @@ file-system-cache "^1.0.5" find-up "^5.0.0" fork-ts-checker-webpack-plugin "^6.0.4" + fs-extra "^9.0.1" glob "^7.1.6" - glob-base "^0.3.0" + handlebars "^4.7.7" interpret "^2.2.0" json5 "^2.1.3" lazy-universal-dotenv "^3.0.1" - micromatch "^4.0.2" + picomatch "^2.3.0" pkg-dir "^5.0.0" pretty-hrtime "^1.0.3" resolve-from "^5.0.0" + slash "^3.0.0" + telejson "^6.0.8" ts-dedent "^2.0.0" util-deprecate "^1.0.2" webpack "4" -"@storybook/core-events@6.3.12", "@storybook/core-events@^6.3.0": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.3.12.tgz#73f6271d485ef2576234e578bb07705b92805290" - integrity sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw== +"@storybook/core-events@6.5.10", "@storybook/core-events@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.5.10.tgz#66d87c8ea18db8e448018a16a3d0198ddbcbc683" + integrity sha512-EVb1gO1172klVIAABLOoigFMx0V88uctY0K/qVCO8n6v+wd2+0Ccn63kl+gTxsAC3WZ8XhXh9q2w5ImHklVECw== dependencies: core-js "^3.8.2" -"@storybook/core-server@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-6.3.12.tgz#d906f823b263d78a4b087be98810b74191d263cd" - integrity sha512-T/Mdyi1FVkUycdyOnhXvoo3d9nYXLQFkmaJkltxBFLzAePAJUSgAsPL9odNC3+p8Nr2/UDsDzvu/Ow0IF0mzLQ== +"@storybook/core-server@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-6.5.10.tgz#ada3d647833c02cb8c742281c1f314ff866f96f8" + integrity sha512-jqwpA0ccA8X5ck4esWBid04+cEIVqirdAcqJeNb9IZAD+bRreO4Im8ilzr7jc5AmQ9fkqHs2NByFKh9TITp8NQ== dependencies: "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-webpack4" "6.3.12" - "@storybook/core-client" "6.3.12" - "@storybook/core-common" "6.3.12" - "@storybook/csf-tools" "6.3.12" - "@storybook/manager-webpack4" "6.3.12" - "@storybook/node-logger" "6.3.12" + "@storybook/builder-webpack4" "6.5.10" + "@storybook/core-client" "6.5.10" + "@storybook/core-common" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/csf-tools" "6.5.10" + "@storybook/manager-webpack4" "6.5.10" + "@storybook/node-logger" "6.5.10" "@storybook/semver" "^7.3.2" - "@types/node" "^14.0.10" + "@storybook/store" "6.5.10" + "@storybook/telemetry" "6.5.10" + "@types/node" "^14.0.10 || ^16.0.0" "@types/node-fetch" "^2.5.7" "@types/pretty-hrtime" "^1.0.0" "@types/webpack" "^4.41.26" better-opn "^2.1.1" - boxen "^4.2.0" + boxen "^5.1.2" chalk "^4.1.0" - cli-table3 "0.6.0" + cli-table3 "^0.6.1" commander "^6.2.1" compression "^1.7.4" core-js "^3.8.2" - cpy "^8.1.1" + cpy "^8.1.2" detect-port "^1.3.0" express "^4.17.1" - file-system-cache "^1.0.5" fs-extra "^9.0.1" + global "^4.4.0" globby "^11.0.2" - ip "^1.1.5" - node-fetch "^2.6.1" + ip "^2.0.0" + lodash "^4.17.21" + node-fetch "^2.6.7" + open "^8.4.0" pretty-hrtime "^1.0.3" prompts "^2.4.0" regenerator-runtime "^0.13.7" serve-favicon "^2.5.0" + slash "^3.0.0" + telejson "^6.0.8" ts-dedent "^2.0.0" util-deprecate "^1.0.2" + watchpack "^2.2.0" webpack "4" + ws "^8.2.3" + x-default-browser "^0.4.0" -"@storybook/core@6.3.12", "@storybook/core@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.3.12.tgz#eb945f7ed5c9039493318bcd2bb5a3a897b91cfd" - integrity sha512-FJm2ns8wk85hXWKslLWiUWRWwS9KWRq7jlkN6M9p57ghFseSGr4W71Orcoab4P3M7jI97l5yqBfppbscinE74g== +"@storybook/core@6.5.10", "@storybook/core@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.5.10.tgz#15ec8be85943251e25c2c24e80e20dcacc4fed65" + integrity sha512-K86yYa0tYlMxADlwQTculYvPROokQau09SCVqpsLg3wJCTvYFL4+SIqcYoyBSbFmHOdnYbJgPydjN33MYLiOZQ== dependencies: - "@storybook/core-client" "6.3.12" - "@storybook/core-server" "6.3.12" + "@storybook/core-client" "6.5.10" + "@storybook/core-server" "6.5.10" -"@storybook/csf-tools@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-6.3.12.tgz#d979c6a79d1e9d6c8b5a5e8834d07fcf5b793844" - integrity sha512-wNrX+99ajAXxLo0iRwrqw65MLvCV6SFC0XoPLYrtBvyKr+hXOOnzIhO2f5BNEii8velpC2gl2gcLKeacpVYLqA== +"@storybook/csf-tools@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-6.5.10.tgz#ae6f1ebd4951e8978c8fe3e08ddd2bd269bf922b" + integrity sha512-H77kZQEisu7+skzeIbNZwmE09OqLjwJTeFhLN1pcjxKVa30LEI3pBHcNBxVKqgxl+Yg3KkB7W/ArLO2N+i2ohw== dependencies: + "@babel/core" "^7.12.10" "@babel/generator" "^7.12.11" "@babel/parser" "^7.12.11" "@babel/plugin-transform-react-jsx" "^7.12.12" "@babel/preset-env" "^7.12.11" "@babel/traverse" "^7.12.11" "@babel/types" "^7.12.11" - "@mdx-js/mdx" "^1.6.22" - "@storybook/csf" "^0.0.1" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/mdx1-csf" "^0.0.1" core-js "^3.8.2" fs-extra "^9.0.1" - js-string-escape "^1.0.1" - lodash "^4.17.20" - prettier "~2.2.1" + global "^4.4.0" regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" -"@storybook/csf@0.0.1", "@storybook/csf@^0.0.1": +"@storybook/csf@0.0.2--canary.4566f4d.1": + version "0.0.2--canary.4566f4d.1" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz#dac52a21c40ef198554e71fe4d20d61e17f65327" + integrity sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ== + dependencies: + lodash "^4.17.15" + +"@storybook/csf@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.0.1.tgz#95901507dc02f0bc6f9ac8ee1983e2fc5bb98ce6" integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== dependencies: lodash "^4.17.15" -"@storybook/manager-webpack4@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/manager-webpack4/-/manager-webpack4-6.3.12.tgz#1c10a60b0acec3f9136dd8b7f22a25469d8b91e5" - integrity sha512-OkPYNrHXg2yZfKmEfTokP6iKx4OLTr0gdI5yehi/bLEuQCSHeruxBc70Dxm1GBk1Mrf821wD9WqMXNDjY5Qtug== +"@storybook/docs-tools@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-6.5.10.tgz#30baa62c1ca3a18b13625b6b305e23e39f404416" + integrity sha512-/bvYgOO+CxMEcHifkjJg0A60OTGOhcjGxnsB1h0gJuxMrqA/7Qwc108bFmPiX0eiD1BovFkZLJV4O6OY7zP5Vw== + dependencies: + "@babel/core" "^7.12.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/store" "6.5.10" + core-js "^3.8.2" + doctrine "^3.0.0" + lodash "^4.17.21" + regenerator-runtime "^0.13.7" + +"@storybook/manager-webpack4@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/manager-webpack4/-/manager-webpack4-6.5.10.tgz#41bae252b863484f293954ef2d2dc80bf3e028f1" + integrity sha512-N/TlNDhuhARuFipR/ZJ/xEVESz23iIbCsZ4VNehLHm8PpiGlQUehk+jMjWmz5XV0bJItwjRclY+CU3GjZKblfQ== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-transform-template-literals" "^7.12.1" "@babel/preset-react" "^7.12.10" - "@storybook/addons" "6.3.12" - "@storybook/core-client" "6.3.12" - "@storybook/core-common" "6.3.12" - "@storybook/node-logger" "6.3.12" - "@storybook/theming" "6.3.12" - "@storybook/ui" "6.3.12" - "@types/node" "^14.0.10" + "@storybook/addons" "6.5.10" + "@storybook/core-client" "6.5.10" + "@storybook/core-common" "6.5.10" + "@storybook/node-logger" "6.5.10" + "@storybook/theming" "6.5.10" + "@storybook/ui" "6.5.10" + "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" - babel-loader "^8.2.2" + babel-loader "^8.0.0" case-sensitive-paths-webpack-plugin "^2.3.0" chalk "^4.1.0" core-js "^3.8.2" css-loader "^3.6.0" - dotenv-webpack "^1.8.0" express "^4.17.1" file-loader "^6.2.0" - file-system-cache "^1.0.5" find-up "^5.0.0" fs-extra "^9.0.1" html-webpack-plugin "^4.0.0" - node-fetch "^2.6.1" + node-fetch "^2.6.7" pnp-webpack-plugin "1.6.4" read-pkg-up "^7.0.1" regenerator-runtime "^0.13.7" resolve-from "^5.0.0" style-loader "^1.3.0" - telejson "^5.3.2" + telejson "^6.0.8" terser-webpack-plugin "^4.2.3" ts-dedent "^2.0.0" url-loader "^4.1.1" @@ -4235,81 +4217,127 @@ webpack-dev-middleware "^3.7.3" webpack-virtual-modules "^0.2.2" -"@storybook/node-logger@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.3.12.tgz#a67cfbe266d2692f317914ef583721627498df19" - integrity sha512-iktOem/Ls2+dsZY9PhPeC6T1QhX/y7OInP88neLsqEPEbB2UXca3Ydv7OZBhBVbvN25W45b05MRzbtNUxYLNRw== +"@storybook/mdx1-csf@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz#d4184e3f6486fade9f7a6bfaf934d9bc07718d5b" + integrity sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg== + dependencies: + "@babel/generator" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/preset-env" "^7.12.11" + "@babel/types" "^7.12.11" + "@mdx-js/mdx" "^1.6.22" + "@types/lodash" "^4.14.167" + js-string-escape "^1.0.1" + loader-utils "^2.0.0" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + ts-dedent "^2.0.0" + +"@storybook/node-logger@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.5.10.tgz#bce4c04009c4b62d6d2fb617176d7ef0084e9e89" + integrity sha512-bYswXIKV7Stru8vYfkjUMNN8UhF7Qg7NRsUvG5Djt5lLIae1XmUIgnH40mU/nW4X4BSfcR9MKxsSsngvn2WmQg== dependencies: "@types/npmlog" "^4.1.2" chalk "^4.1.0" core-js "^3.8.2" - npmlog "^4.1.2" + npmlog "^5.0.1" pretty-hrtime "^1.0.3" -"@storybook/postinstall@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.3.12.tgz#ed98caff76d8c1a1733ec630565ef4162b274614" - integrity sha512-HkZ+abtZ3W6JbGPS6K7OSnNXbwaTwNNd5R02kRs4gV9B29XsBPDtFT6vIwzM3tmVQC7ihL5a8ceWp2OvzaNOuw== +"@storybook/postinstall@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.5.10.tgz#b25378da036bce7b318c6732733aa5ad43449f37" + integrity sha512-xqUdpnFHYkn8MgtV+QztvIsRWa6jQUk7QT1Mu17Y0S7PbslNGsuskRPHenHhACXBJF+TM86R+4BaAhnVYTmElw== dependencies: core-js "^3.8.2" -"@storybook/react-docgen-typescript-plugin@1.0.2-canary.253f8c1.0": - version "1.0.2-canary.253f8c1.0" - resolved "https://registry.yarnpkg.com/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.253f8c1.0.tgz#f2da40e6aae4aa586c2fb284a4a1744602c3c7fa" - integrity sha512-mmoRG/rNzAiTbh+vGP8d57dfcR2aP+5/Ll03KKFyfy5FqWFm/Gh7u27ikx1I3LmVMI8n6jh5SdWMkMKon7/tDw== +"@storybook/preview-web@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/preview-web/-/preview-web-6.5.10.tgz#81bf5d3f5fca9e26099c057206bd8e684225989b" + integrity sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/channel-postmessage" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/store" "6.5.10" + ansi-to-html "^0.6.11" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" + +"@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": + version "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" + resolved "https://registry.yarnpkg.com/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz#3103532ff494fb7dc3cf835f10740ecf6a26c0f9" + integrity sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w== dependencies: debug "^4.1.1" endent "^2.0.1" find-cache-dir "^3.3.1" flat-cache "^3.0.4" micromatch "^4.0.2" - react-docgen-typescript "^2.0.0" + react-docgen-typescript "^2.1.1" tslib "^2.0.0" -"@storybook/react@^6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.3.12.tgz#2e172cbfc06f656d2890743dcf49741a10fa1629" - integrity sha512-c1Y/3/eNzye+ZRwQ3BXJux6pUMVt3lhv1/M9Qagl9JItP3jDSj5Ed3JHCgwEqpprP8mvNNXwEJ8+M7vEQyDuHg== +"@storybook/react@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.5.10.tgz#6e9f5cf5e4c81d966774c08c87fb2414052db454" + integrity sha512-m8S1qQrwA7pDGwdKEvL6LV3YKvSzVUY297Fq+xcTU3irnAy4sHDuFoLqV6Mi1510mErK1r8+rf+0R5rEXB219g== dependencies: "@babel/preset-flow" "^7.12.1" "@babel/preset-react" "^7.12.10" - "@pmmmwh/react-refresh-webpack-plugin" "^0.4.3" - "@storybook/addons" "6.3.12" - "@storybook/core" "6.3.12" - "@storybook/core-common" "6.3.12" - "@storybook/node-logger" "6.3.12" - "@storybook/react-docgen-typescript-plugin" "1.0.2-canary.253f8c1.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@storybook/addons" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core" "6.5.10" + "@storybook/core-common" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + "@storybook/docs-tools" "6.5.10" + "@storybook/node-logger" "6.5.10" + "@storybook/react-docgen-typescript-plugin" "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" "@storybook/semver" "^7.3.2" + "@storybook/store" "6.5.10" + "@types/estree" "^0.0.51" + "@types/node" "^14.14.20 || ^16.0.0" "@types/webpack-env" "^1.16.0" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" babel-plugin-add-react-displayname "^0.0.5" - babel-plugin-named-asset-import "^0.3.1" babel-plugin-react-docgen "^4.2.1" core-js "^3.8.2" + escodegen "^2.0.0" + fs-extra "^9.0.1" global "^4.4.0" - lodash "^4.17.20" + html-tags "^3.1.0" + lodash "^4.17.21" prop-types "^15.7.2" - react-dev-utils "^11.0.3" - react-refresh "^0.8.3" + react-element-to-jsx-string "^14.3.4" + react-refresh "^0.11.0" read-pkg-up "^7.0.1" regenerator-runtime "^0.13.7" ts-dedent "^2.0.0" - webpack "4" + util-deprecate "^1.0.2" + webpack ">=4.43.0 <6.0.0" -"@storybook/router@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.3.12.tgz#0d572ec795f588ca886f39cb9b27b94ff3683f84" - integrity sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA== +"@storybook/router@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.5.10.tgz#b0c342e080c1d2b5344603bc43a6c75734a4a879" + integrity sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg== dependencies: - "@reach/router" "^1.3.4" - "@storybook/client-logger" "6.3.12" - "@types/reach__router" "^1.3.7" + "@storybook/client-logger" "6.5.10" core-js "^3.8.2" - fast-deep-equal "^3.1.3" - global "^4.4.0" - lodash "^4.17.20" memoizerific "^1.11.3" qs "^6.10.0" - ts-dedent "^2.0.0" + regenerator-runtime "^0.13.7" "@storybook/semver@^7.3.2": version "7.3.2" @@ -4319,26 +4347,47 @@ core-js "^3.6.5" find-up "^4.1.0" -"@storybook/source-loader@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.3.12.tgz#86e72824c04ad0eaa89b807857bd845db97e57bd" - integrity sha512-Lfe0LOJGqAJYkZsCL8fhuQOeFSCgv8xwQCt4dkcBd0Rw5zT2xv0IXDOiIOXGaWBMDtrJUZt/qOXPEPlL81Oaqg== +"@storybook/source-loader@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.5.10.tgz#f62b4c7b1933976a20913ddc149d55026ef4c872" + integrity sha512-1RxxRumpjs8VUUwES9LId+cuNQnixhZAcwCxd6jaKkTZbjiQCtAhXX6DBTjJGV1u/JnCsqEp5b1wB8j/EioNHw== dependencies: - "@storybook/addons" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/csf" "0.0.1" + "@storybook/addons" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" core-js "^3.8.2" estraverse "^5.2.0" global "^4.4.0" loader-utils "^2.0.0" - lodash "^4.17.20" - prettier "~2.2.1" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" regenerator-runtime "^0.13.7" -"@storybook/storybook-deployer@^2.8.10": - version "2.8.10" - resolved "https://registry.yarnpkg.com/@storybook/storybook-deployer/-/storybook-deployer-2.8.10.tgz#3cf96aea823d424fbfce98e76fca108d07470ec2" - integrity sha512-2uleH0AFuI98sdTkbyHt1BgPa0kmLxhC3zwfwtacE8FB+2ffdRdqBlp6GYDZ7CZ+R4B4XuPYhsgUKWkB+zngyQ== +"@storybook/store@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/store/-/store-6.5.10.tgz#85df17a8d57af0cba3934b3c6046537e2bca9abd" + integrity sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/csf" "0.0.2--canary.4566f4d.1" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + slash "^3.0.0" + stable "^0.1.8" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + +"@storybook/storybook-deployer@^2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@storybook/storybook-deployer/-/storybook-deployer-2.8.12.tgz#c068939509f470185b787d836f894341837c7327" + integrity sha512-1mPVG+kYLoKSTg2/cCCaY0CwS55+t7pcLEbIDx3KY+16gyFIW01UvlHdIJWRIm4d6GIGuEL1a4ChDgIJ464Ihw== dependencies: git-url-parse "^11.1.2" glob "^7.1.3" @@ -4346,58 +4395,53 @@ shelljs "^0.8.1" yargs "^15.0.0" -"@storybook/theming@6.3.12", "@storybook/theming@^6.3.0": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.3.12.tgz#5bddf9bd90a60709b5ab238ecdb7d9055dd7862e" - integrity sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA== +"@storybook/telemetry@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-6.5.10.tgz#742b05a55dfe8470ce4cb371f3f3f2c02f96e816" + integrity sha512-+M5HILDFS8nDumLxeSeAwi1MTzIuV6UWzV4yB2wcsEXOBTdplcl9oYqFKtlst78oOIdGtpPYxYfivDlqxC2K4g== dependencies: - "@emotion/core" "^10.1.1" - "@emotion/is-prop-valid" "^0.8.6" - "@emotion/styled" "^10.0.27" - "@storybook/client-logger" "6.3.12" + "@storybook/client-logger" "6.5.10" + "@storybook/core-common" "6.5.10" + chalk "^4.1.0" core-js "^3.8.2" - deep-object-diff "^1.1.0" - emotion-theming "^10.0.27" + detect-package-manager "^2.0.1" + fetch-retry "^5.0.2" + fs-extra "^9.0.1" global "^4.4.0" + isomorphic-unfetch "^3.1.0" + nanoid "^3.3.1" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + +"@storybook/theming@6.5.10", "@storybook/theming@^6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.5.10.tgz#052100979c1270fc8f60653c1a13a6f047318109" + integrity sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA== + dependencies: + "@storybook/client-logger" "6.5.10" + core-js "^3.8.2" memoizerific "^1.11.3" - polished "^4.0.5" - resolve-from "^5.0.0" - ts-dedent "^2.0.0" + regenerator-runtime "^0.13.7" -"@storybook/ui@6.3.12": - version "6.3.12" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.3.12.tgz#349e1a4c58c4fd18ea65b2ab56269a7c3a164ee7" - integrity sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw== - dependencies: - "@emotion/core" "^10.1.1" - "@storybook/addons" "6.3.12" - "@storybook/api" "6.3.12" - "@storybook/channels" "6.3.12" - "@storybook/client-logger" "6.3.12" - "@storybook/components" "6.3.12" - "@storybook/core-events" "6.3.12" - "@storybook/router" "6.3.12" +"@storybook/ui@6.5.10": + version "6.5.10" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.5.10.tgz#f56095a1a39ae5a203f2ac7f3dba86341a5927d5" + integrity sha512-6iaoaRAiTqB1inTw35vao+5hjcDE0Qa0A3a9ZIeNa6yHvpB1k0lO/N/0PMrRdVvySYpXVD1iry4z4QYdo1rU+w== + dependencies: + "@storybook/addons" "6.5.10" + "@storybook/api" "6.5.10" + "@storybook/channels" "6.5.10" + "@storybook/client-logger" "6.5.10" + "@storybook/components" "6.5.10" + "@storybook/core-events" "6.5.10" + "@storybook/router" "6.5.10" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.3.12" - "@types/markdown-to-jsx" "^6.11.3" - copy-to-clipboard "^3.3.1" + "@storybook/theming" "6.5.10" core-js "^3.8.2" - core-js-pure "^3.8.2" - downshift "^6.0.15" - emotion-theming "^10.0.27" - fuse.js "^3.6.1" - global "^4.4.0" - lodash "^4.17.20" - markdown-to-jsx "^6.11.4" memoizerific "^1.11.3" - polished "^4.0.5" qs "^6.10.0" - react-draggable "^4.4.3" - react-helmet-async "^1.0.7" - react-sizeme "^3.0.1" regenerator-runtime "^0.13.7" resolve-from "^5.0.0" - store2 "^2.12.0" "@stylelint/postcss-css-in-js@^0.37.1": version "0.37.2" @@ -4744,11 +4788,6 @@ dependencies: "@types/node" "*" -"@types/braces@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb" - integrity sha512-TbH79tcyi9FHwbyboOKeRachRq63mSuWYXOflsNO9ZyE5ClQ/JaozNKl+aWUq87qPNsXasXxi2AbgfwIJ+8GQw== - "@types/browserify@*", "@types/browserify@^12.0.37": version "12.0.37" resolved "https://registry.yarnpkg.com/@types/browserify/-/browserify-12.0.37.tgz#f08312f17b4a7411441cce3a45434a0ce81c4da3" @@ -4765,14 +4804,7 @@ "@types/filesystem" "*" "@types/har-format" "*" -"@types/color-convert@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22" - integrity sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ== - dependencies: - "@types/color-name" "*" - -"@types/color-name@*", "@types/color-name@^1.1.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== @@ -4789,11 +4821,37 @@ dependencies: "@types/node" "*" +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.6.tgz#7976f054c1bccfcf514bff0564c0c41df5c08207" + integrity sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + "@types/estree@^0.0.48": version "0.0.48" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.48.tgz#18dc8091b285df90db2f25aa7d906cfc394b7f74" integrity sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew== +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + "@types/expect@^1.20.4": version "1.20.4" resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5" @@ -4818,11 +4876,6 @@ dependencies: "@types/node" "*" -"@types/glob-base@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@types/glob-base/-/glob-base-0.3.0.tgz#a581d688347e10e50dd7c17d6f2880a10354319d" - integrity sha1-pYHWiDR+EOUN18F9byiAoQNUMZ0= - "@types/glob-stream@*": version "6.1.1" resolved "https://registry.yarnpkg.com/@types/glob-stream/-/glob-stream-6.1.1.tgz#c792d8d1514278ff03cad5689aba4c4ab4fbc805" @@ -4955,7 +5008,7 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -4965,10 +5018,10 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/lodash@^4.14.107", "@types/lodash@^4.14.136", "@types/lodash@^4.14.176": - version "4.14.178" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.178.tgz#341f6d2247db528d4a13ddbb374bcdc80406f4f8" - integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== +"@types/lodash@^4.14.107", "@types/lodash@^4.14.136", "@types/lodash@^4.14.167", "@types/lodash@^4.14.176": + version "4.14.184" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.184.tgz#23f96cd2a21a28e106dc24d825d4aa966de7a9fe" + integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== "@types/long@^4.0.1": version "4.0.1" @@ -4982,13 +5035,6 @@ dependencies: "@types/node" "*" -"@types/markdown-to-jsx@^6.11.3": - version "6.11.3" - resolved "https://registry.yarnpkg.com/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz#cdd1619308fecbc8be7e6a26f3751260249b020e" - integrity sha512-30nFYpceM/ZEvhGiqWjm5quLUxNeld0HCzJEXMZZDpq53FPkS85mTwkWtCXzCqq8s5JYLgM5W392a02xn8Bdaw== - dependencies: - "@types/react" "*" - "@types/mdast@^3.0.0": version "3.0.10" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" @@ -4996,13 +5042,6 @@ dependencies: "@types/unist" "*" -"@types/micromatch@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/micromatch/-/micromatch-4.0.1.tgz#9381449dd659fc3823fd2a4190ceacc985083bc7" - integrity sha512-my6fLBvpY70KattTNzYOK6KU1oR1+UCz9ug/JbcF5UrEmeCt9P7DV2t7L8+t18mMPINqGQCE4O8PLOPbI84gxw== - dependencies: - "@types/braces" "*" - "@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -5041,15 +5080,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.15.tgz#0de7e978fb43db62da369db18ea088a63673c182" integrity sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw== -"@types/node@^14.0.10": - version "14.17.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.27.tgz#5054610d37bb5f6e21342d0e6d24c494231f3b85" - integrity sha512-94+Ahf9IcaDuJTle/2b+wzvjmutxXAEXU6O81JHblYXUg2BDG+dnBy7VxIPHKAyEEDHzCMQydTJuWvrE+Aanzw== - -"@types/node@^16.7.10": - version "16.11.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.19.tgz#1afa165146997b8286b6eabcb1c2d50729055169" - integrity sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng== +"@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^16.7.10": + version "16.11.56" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.56.tgz#dcbb617669481e158e0f1c6204d1c768cd675901" + integrity sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A== "@types/node@^8.10.11": version "8.10.48" @@ -5066,11 +5100,6 @@ resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.2.tgz#d070fe6a6b78755d1092a3dc492d34c3d8f871c4" integrity sha512-4QQmOF5KlwfxJ5IGXFIudkeLCdMABz03RcUXu+LCb24zmln8QW6aDjuGl4d4XPVLf2j+FnjelHTP7dvceAFbhA== -"@types/overlayscrollbars@^1.12.0": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@types/overlayscrollbars/-/overlayscrollbars-1.12.1.tgz#fb637071b545834fb12aea94ee309a2ff4cdc0a8" - integrity sha512-V25YHbSoKQN35UasHf0EKD9U2vcmexRSp78qa8UglxFH8H3D+adEa9zGZwrqpH4TdvqeMrgMqVqsLB4woAryrQ== - "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -5120,13 +5149,6 @@ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== -"@types/reach__router@^1.3.7": - version "1.3.7" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.7.tgz#de8ab374259ae7f7499fc1373b9697a5f3cd6428" - integrity sha512-cyBEb8Ef3SJNH5NYEIDGPoMMmYUxROatuxbICusVRQIqZUB85UCt6R2Ok60tKS/TABJsJYaHyNTW3kqbpxlMjg== - dependencies: - "@types/react" "*" - "@types/react-dom@^17.0.11": version "17.0.11" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" @@ -5134,13 +5156,6 @@ dependencies: "@types/react" "*" -"@types/react-syntax-highlighter@11.0.5": - version "11.0.5" - resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz#0d546261b4021e1f9d85b50401c0a42acb106087" - integrity sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg== - dependencies: - "@types/react" "*" - "@types/react-test-renderer@*": version "16.9.2" resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-16.9.2.tgz#e1c408831e8183e5ad748fdece02214a7c2ab6c5" @@ -5355,6 +5370,13 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/experimental-utils@^5.3.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.34.0.tgz#f24200ee4d55ecf30a24e335d551fc6819f0c84b" + integrity sha512-bXDmphFgoQI4eY7r8Vp0mwrvU9Pic+KxuQPG8uoC33FlZLgsFhv8brhUUyniHEeDhApdg4/5a3qYEZbNGnRQYQ== + dependencies: + "@typescript-eslint/utils" "5.34.0" + "@typescript-eslint/parser@^5.30.7": version "5.30.7" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.7.tgz#99d09729392aec9e64b1de45cd63cb81a4ddd980" @@ -5373,6 +5395,14 @@ "@typescript-eslint/types" "5.30.7" "@typescript-eslint/visitor-keys" "5.30.7" +"@typescript-eslint/scope-manager@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.34.0.tgz#14efd13dc57602937e25f188fd911f118781e527" + integrity sha512-HNvASMQlah5RsBW6L6c7IJ0vsm+8Sope/wu5sEAf7joJYWNb1LDbJipzmdhdUOnfrDFE6LR1j57x1EYVxrY4ow== + dependencies: + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/visitor-keys" "5.34.0" + "@typescript-eslint/type-utils@5.30.7": version "5.30.7" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz#5693dc3db6f313f302764282d614cfdbc8a9fcfd" @@ -5392,6 +5422,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.7.tgz#18331487cc92d0f1fb1a6f580c8ec832528079d0" integrity sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg== +"@typescript-eslint/types@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.34.0.tgz#217bf08049e9e7b86694d982e88a2c1566330c78" + integrity sha512-49fm3xbbUPuzBIOcy2CDpYWqy/X7VBkxVN+DC21e0zIm3+61Z0NZi6J9mqPmSW1BDVk9FIOvuCFyUPjXz93sjA== + "@typescript-eslint/typescript-estree@5.30.7": version "5.30.7" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz#05da9f1b281985bfedcf62349847f8d168eecc07" @@ -5405,6 +5440,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.34.0.tgz#ba7b83f4bf8ccbabf074bbf1baca7a58de3ccb9a" + integrity sha512-mXHAqapJJDVzxauEkfJI96j3D10sd567LlqroyCeJaHnu42sDbjxotGb3XFtGPYKPD9IyLjhsoULML1oI3M86A== + dependencies: + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/visitor-keys" "5.34.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/typescript-estree@^4.8.2": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" @@ -5418,7 +5466,7 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/utils@5.30.7", "@typescript-eslint/utils@^5.10.0": +"@typescript-eslint/utils@5.30.7": version "5.30.7" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.7.tgz#7135be070349e9f7caa262b0ca59dc96123351bb" integrity sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ== @@ -5430,6 +5478,18 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" +"@typescript-eslint/utils@5.34.0", "@typescript-eslint/utils@^5.10.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.34.0.tgz#0cae98f48d8f9e292e5caa9343611b6faf49e743" + integrity sha512-kWRYybU4Rn++7lm9yu8pbuydRyQsHRoBDIo11k7eqBWTldN4xUdVUMCsHBiE7aoEkFzrUEaZy3iH477vr4xHAQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.34.0" + "@typescript-eslint/types" "5.34.0" + "@typescript-eslint/typescript-estree" "5.34.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/visitor-keys@4.33.0": version "4.33.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" @@ -5446,6 +5506,14 @@ "@typescript-eslint/types" "5.30.7" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.34.0.tgz#d0fb3e31033e82ddd5de048371ad39eb342b2d40" + integrity sha512-O1moYjOSrab0a2fUvFpsJe0QHtvTC+cR+ovYpgKrAVXzqQyc74mv76TgY6z+aEtjQE2vgZux3CQVtGryqdcOAw== + dependencies: + "@typescript-eslint/types" "5.34.0" + eslint-visitor-keys "^3.3.0" + "@vue/compiler-core@3.1.4": version "3.1.4" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.4.tgz#a3a74cf52e8f01af386d364ac8a099cbeb260424" @@ -5501,6 +5569,14 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.4.tgz#c14c461ec42ea2c1556e86f60b0354341d91adc3" integrity sha512-6O45kZAmkLvzGLToBxEz4lR2W6kXohCtebV2UxjH9GXjd8X9AhEn68FN9eNanFtWNzvgw1hqd6HkPRVQalqf7Q== +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -5510,16 +5586,31 @@ "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + "@webassemblyjs/floating-point-hex-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + "@webassemblyjs/helper-api-error@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + "@webassemblyjs/helper-buffer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" @@ -5544,11 +5635,35 @@ dependencies: "@webassemblyjs/ast" "1.9.0" +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + "@webassemblyjs/helper-wasm-bytecode@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/helper-wasm-section@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" @@ -5559,6 +5674,13 @@ "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wasm-gen" "1.9.0" +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/ieee754@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" @@ -5566,6 +5688,13 @@ dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + "@webassemblyjs/leb128@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" @@ -5573,11 +5702,30 @@ dependencies: "@xtuc/long" "4.2.2" +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + "@webassemblyjs/utf8@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + "@webassemblyjs/wasm-edit@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" @@ -5592,6 +5740,17 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@webassemblyjs/wast-printer" "1.9.0" +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + "@webassemblyjs/wasm-gen@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" @@ -5603,6 +5762,16 @@ "@webassemblyjs/leb128" "1.9.0" "@webassemblyjs/utf8" "1.9.0" +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wasm-opt@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" @@ -5613,6 +5782,18 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + "@webassemblyjs/wasm-parser@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" @@ -5637,6 +5818,14 @@ "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + "@webassemblyjs/wast-printer@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" @@ -5817,6 +6006,11 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -5861,7 +6055,7 @@ acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.4.1, acorn@^8.7.0, acorn@^8.7.1: +acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== @@ -5920,7 +6114,7 @@ addons-scanner-utils@7.0.0: upath "2.0.1" yauzl "2.10.0" -address@1.1.2, address@^1.0.1: +address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== @@ -6121,10 +6315,10 @@ ansi-gray@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-html@0.0.7, ansi-html@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= +ansi-html-community@0.0.8, ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== ansi-regex@^2.0.0: version "2.1.1" @@ -6241,11 +6435,24 @@ aproba@^1.0.3, aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + are-we-there-yet@~1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" @@ -6355,6 +6562,11 @@ array-filter@^1.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -6643,6 +6855,11 @@ async-iterator-to-stream@^1.1.0: dependencies: readable-stream "^3.0.5" +async-limiter@^1.0.0, async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + async-mutex@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" @@ -6779,13 +6996,13 @@ babel-jest@^29.0.0-alpha.5: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" - integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== +babel-loader@^8.0.0: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -6853,7 +7070,7 @@ babel-plugin-jest-hoist@^29.0.0-alpha.3: "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" -babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.8.0: +babel-plugin-macros@^2.0.0: version "2.8.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== @@ -6871,11 +7088,6 @@ babel-plugin-macros@^3.0.1: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-named-asset-import@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.2.tgz#20978ed446b8e1bf4a2f42d0a94c0ece85f75f4f" - integrity sha512-CxwvxrZ9OirpXQ201Ec57OmGhmI8/ui/GwTDy0hSp6CmRvgRC0pSair6Z04Ck+JStA0sMPZzSJ3uE4n17EXpPQ== - babel-plugin-polyfill-corejs2@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" @@ -7126,7 +7338,7 @@ big-integer@1.6.36: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== -big-integer@^1.6.48: +big-integer@^1.6.48, big-integer@^1.6.7: version "1.6.51" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== @@ -7426,19 +7638,26 @@ boxen@^3.0.0: type-fest "^0.3.0" widest-line "^2.0.0" -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +bplist-parser@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.1.1.tgz#d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6" + integrity sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q== + dependencies: + big-integer "^1.6.7" brace-expansion@^1.1.7: version "1.1.11" @@ -7738,16 +7957,6 @@ browserify@^17.0.0: vm-browserify "^1.0.0" xtend "^4.0.0" -browserslist@4.14.2: - version "4.14.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" - integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== - dependencies: - caniuse-lite "^1.0.30001125" - electron-to-chromium "^1.3.564" - escalade "^3.0.2" - node-releases "^1.1.61" - browserslist@^3.1.1: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" @@ -7756,7 +7965,7 @@ browserslist@^3.1.1: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.12.0, browserslist@^4.20.2, browserslist@^4.21.3: +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^4.21.3: version "4.21.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== @@ -8102,6 +8311,14 @@ camelcase-css@2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -8121,6 +8338,11 @@ camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.2.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== + camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -8136,7 +8358,7 @@ camelcase@^6.0.0, camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30000810, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001312, caniuse-lite@^1.0.30001370: +caniuse-lite@^1.0.30000810, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001312, caniuse-lite@^1.0.30001370: version "1.0.30001312" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== @@ -8534,10 +8756,10 @@ cli-boxes@^1.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= -cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== +cli-boxes@^2.2.0, cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cli-cursor@^3.1.0: version "3.1.0" @@ -8551,30 +8773,20 @@ cli-spinners@^2.5.0, cli-spinners@^2.6.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-table3@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== +cli-table3@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== dependencies: - object-assign "^4.1.0" string-width "^4.2.0" optionalDependencies: - colors "^1.1.2" + "@colors/colors" "1.5.0" cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -clipboard@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.4.tgz#836dafd66cf0fea5d71ce5d5b0bf6e958009112d" - integrity sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ== - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -8694,7 +8906,7 @@ cloneable-readable@^1.0.0: process-nextick-args "^1.0.6" through2 "^2.0.1" -clsx@^1.0.4, clsx@^1.1.1: +clsx@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== @@ -8775,7 +8987,7 @@ color-string@^0.3.0: dependencies: color-name "^1.0.0" -color-support@^1.1.3: +color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -8794,7 +9006,7 @@ colors@0.5.x: resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" integrity sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q= -colors@^1.1.2, colors@^1.4.0: +colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -8859,6 +9071,11 @@ comment-parser@1.3.1: resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + common-tags@1.8.2, common-tags@^1.8.0: version "1.8.2" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" @@ -8921,11 +9138,6 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" -compute-scroll-into-view@^1.0.17: - version "1.0.17" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" - integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -9012,7 +9224,7 @@ console-browserify@^1.1.0: dependencies: date-now "^0.1.4" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -9173,10 +9385,10 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.8.1: browserslist "^4.21.3" semver "7.0.0" -core-js-pure@^3.0.0, core-js-pure@^3.8.2: - version "3.18.3" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.3.tgz#7eed77dcce1445ab68fd68715856633e2fb3b90c" - integrity sha512-qfskyO/KjtbYn09bn1IPkuhHl5PlJ6IzJ9s9sraJ1EqcuGyLGKzhSM1cY0zgyL9hx42eulQLZ6WaeK5ycJCkqw== +core-js-pure@^3.0.0, core-js-pure@^3.8.1: + version "3.24.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.1.tgz#8839dde5da545521bf282feb7dc6d0b425f39fd3" + integrity sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg== core-js@^2.4.0: version "2.6.11" @@ -9238,10 +9450,10 @@ cp-file@^7.0.0: nested-error-stacks "^2.0.0" p-event "^4.1.0" -cpy@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.1.tgz#066ed4c6eaeed9577df96dae4db9438c1a90df62" - integrity sha512-vqHT+9o67sMwJ5hUd/BAOYeemkU+MuFRsK2c36Xc3eefQpAsp1kAsyDxEDcc5JS1+y9l/XHPrIsVTcyGGmkUUQ== +cpy@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935" + integrity sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg== dependencies: arrify "^2.0.1" cp-file "^7.0.0" @@ -9311,14 +9523,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.3, create-hmac@^1.1.4, safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-context@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" - integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== - dependencies: - gud "^1.0.0" - warning "^4.0.3" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -9331,15 +9535,6 @@ cross-fetch@2.2.2, cross-fetch@^2.1.0, cross-fetch@^3.1.4, cross-fetch@^3.1.5: dependencies: node-fetch "2.6.7" -cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -9360,6 +9555,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypt@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" @@ -9552,6 +9756,13 @@ currency-formatter@^1.4.2: locale-currency "0.0.1" object-assign "^4.1.1" +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== + dependencies: + array-find-index "^1.0.1" + cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -9748,7 +9959,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -9828,16 +10039,20 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deep-object-diff@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a" - integrity sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw== - deepmerge@4.2.2, 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-browser-id@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-1.0.4.tgz#e59d09a5d157b828b876c26816e61c3d2a2c203a" + integrity sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw== + dependencies: + bplist-parser "^0.1.0" + meow "^3.1.0" + untildify "^2.0.0" + default-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" @@ -9892,6 +10107,11 @@ deferred-leveldown@~5.1.0: abstract-leveldown "~6.0.0" inherits "^2.0.3" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" @@ -9968,11 +10188,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== - delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -10098,13 +10313,12 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== +detect-package-manager@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" + integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== dependencies: - address "^1.0.1" - debug "^2.6.0" + execa "^5.1.1" detect-port@^1.3.0: version "1.3.0" @@ -10511,46 +10725,16 @@ dot-prop@^4.1.0, dot-prop@^5.1.1: dependencies: is-obj "^2.0.0" -dotenv-defaults@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.0.2.tgz#441cf5f067653fca4bbdce9dd3b803f6f84c585d" - integrity sha512-iXFvHtXl/hZPiFj++1hBg4lbKwGM+t/GlvELDnRtOFdjXyWP7mubkVr+eZGWG62kdsbulXAef6v/j6kiWc/xGA== - dependencies: - dotenv "^6.2.0" - dotenv-expand@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv-webpack@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz#7ca79cef2497dd4079d43e81e0796bc9d0f68a5e" - integrity sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg== - dependencies: - dotenv-defaults "^1.0.2" - -dotenv@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== - dotenv@^8.0.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -downshift@^6.0.15: - version "6.1.7" - resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.7.tgz#fdb4c4e4f1d11587985cd76e21e8b4b3fa72e44c" - integrity sha512-cVprZg/9Lvj/uhYRxELzlu1aezRcgPWBjTvspiGTVEU64gF5pRdSRKFVLcxqsZC637cLAGMbL40JavEfWnqgNg== - dependencies: - "@babel/runtime" "^7.14.8" - compute-scroll-into-view "^1.0.17" - prop-types "^15.7.2" - react-is "^17.0.2" - tslib "^2.3.0" - drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -10625,7 +10809,7 @@ ejs@^3.0.2: dependencies: jake "^10.6.1" -electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.202: +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.202: version "1.4.206" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz#580ff85b54d7ec0c05f20b1e37ea0becdd7b0ee4" integrity sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA== @@ -10694,15 +10878,6 @@ emojis-list@^3.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -emotion-theming@^10.0.27: - version "10.0.27" - resolved "https://registry.yarnpkg.com/emotion-theming/-/emotion-theming-10.0.27.tgz#1887baaec15199862c89b1b984b79806f2b9ab10" - integrity sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw== - dependencies: - "@babel/runtime" "^7.5.5" - "@emotion/weak-memoize" "0.2.5" - hoist-non-react-statics "^3.3.0" - encodeurl@^1.0.2, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -10802,10 +10977,10 @@ enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.8.3: - version "5.9.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.0.tgz#49ac24953ac8452ed8fed2ef1340fc8e043667ee" - integrity sha512-weDYmzbBygL7HzGGS26M3hGQx68vehdEg6VUmqSOaFzXExFqlnKuSvsEJCVGQHScS8CQMbrAqftT+AzzHNt/YA== +enhanced-resolve@^5.10.0, enhanced-resolve@^5.8.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -10967,6 +11142,11 @@ es-abstract@^1.13.0, es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es- string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -11067,7 +11247,7 @@ es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -escalade@^3.0.2, escalade@^3.1.1: +escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== @@ -11082,7 +11262,7 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: +escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== @@ -11252,11 +11432,29 @@ eslint-plugin-react@^7.23.1: semver "^6.3.0" string.prototype.matchall "^4.0.7" +eslint-plugin-storybook@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.4.tgz#4b4f077fcc0cf3b3f4ebc730426497e814e38e49" + integrity sha512-wxwbAZqlgjj6MbS/llY7wnXCCUsuFcLB1XnahbgBtjmsFUggpiECt01Dt8huaKvriVXg2w4d7Ye+GzA00rdcKg== + dependencies: + "@storybook/csf" "^0.0.1" + "@typescript-eslint/experimental-utils" "^5.3.0" + requireindex "^1.1.0" + ts-dedent "^2.2.0" + eslint-rule-composer@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -11265,14 +11463,6 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" @@ -12459,7 +12649,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.1.1, fast-glob@^3.2.2, fast-glob@^3.2.4, fast-glob@^3.2.9: +fast-glob@^3.2.2, fast-glob@^3.2.4, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -12531,13 +12721,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.0" -fault@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" - integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== - dependencies: - format "^0.2.0" - faye-websocket@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -12566,6 +12749,11 @@ fetch-ponyfill@^7.1.0: dependencies: node-fetch "~2.6.1" +fetch-retry@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.3.tgz#edfa3641892995f9afee94f25b168827aa97fe3d" + integrity sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw== + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -12648,11 +12836,6 @@ filenamify@^4.1.0, filenamify@^4.3.0: strip-outer "^1.0.1" trim-repeated "^1.0.0" -filesize@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== - filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" @@ -12755,14 +12938,6 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - 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" - path-exists "^4.0.0" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -12778,6 +12953,14 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + 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" + path-exists "^4.0.0" + find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -12962,7 +13145,7 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@4.1.6, fork-ts-checker-webpack-plugin@^4.1.6: +fork-ts-checker-webpack-plugin@^4.1.6: version "4.1.6" resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== @@ -13021,11 +13204,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -format@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" - integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= - formidable@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" @@ -13227,7 +13405,7 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -fuse.js@^3.2.0, fuse.js@^3.6.1: +fuse.js@^3.2.0: version "3.6.1" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.6.1.tgz#7de85fdd6e1b3377c23ce010892656385fd9b10c" integrity sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw== @@ -13251,6 +13429,21 @@ gar@^1.0.4: resolved "https://registry.yarnpkg.com/gar/-/gar-1.0.4.tgz#f777bc7db425c0572fdeb52676172ca1ae9888b8" integrity sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w== +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -13361,6 +13554,11 @@ get-params@^0.1.2: resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe" integrity sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4= +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== + get-stdin@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" @@ -13535,6 +13733,11 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob-watcher@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" @@ -13603,13 +13806,6 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" -global-modules@2.0.0, global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -13619,6 +13815,13 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -13684,18 +13887,6 @@ globalthis@1.0.1, globalthis@^1.0.0, globalthis@^1.0.1: dependencies: define-properties "^1.1.3" -globby@11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" @@ -13752,13 +13943,6 @@ gonzales-pe@^4.2.3, gonzales-pe@^4.3.0: dependencies: minimist "^1.2.5" -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= - dependencies: - delegate "^3.1.2" - got@5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/got/-/got-5.6.0.tgz#bb1d7ee163b78082bbc8eb836f3f395004ea6fbf" @@ -14051,7 +14235,7 @@ gunzip-maybe@^1.4.2: pumpify "^1.3.3" through2 "^2.0.3" -gzip-size@5.1.1, gzip-size@^5.1.1: +gzip-size@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== @@ -14066,6 +14250,18 @@ hamt-sharding@~0.0.2: dependencies: sparse-array "^1.3.1" +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + hapi-pino@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/hapi-pino/-/hapi-pino-6.0.1.tgz#f6e851099f2f68df43817f165240f8b36a969114" @@ -14152,7 +14348,7 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0: +has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -14357,11 +14553,6 @@ hi-base32@~0.5.0: resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.0.tgz#61329f76a31f31008533f1c36f2473e259d64571" integrity sha512-DDRmxSyoYuvjUb9EnXdoiMChBZ7ZcUVJsK5Frd3kqMhuBxvmZdnBeynAVfj7/ECbn++CekcoprvC/rprHPAtow== -highlight.js@^10.1.1, highlight.js@~10.4.0: - version "10.4.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" - integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg== - history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -14440,10 +14631,10 @@ html-encoding-sniffer@^3.0.0: dependencies: whatwg-encoding "^2.0.0" -html-entities@^1.2.0, html-entities@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== +html-entities@^2.1.0: + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-escaper@^2.0.0: version "2.0.0" @@ -14763,7 +14954,7 @@ ignore@^4.0.3: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -14785,11 +14976,6 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= -immer@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" - integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== - immer@^9.0.6: version "9.0.6" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73" @@ -14831,6 +15017,13 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== + dependencies: + repeating "^2.0.0" + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -14955,7 +15148,7 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -invariant@2, invariant@2.2.4, invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.3, invariant@^2.2.4: +invariant@2, invariant@2.2.4, invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -14991,6 +15184,11 @@ ip@^1.1.4, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== + ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" @@ -15702,10 +15900,10 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== is-dom@^1.0.0, is-dom@^1.0.9: version "1.1.0" @@ -15754,6 +15952,11 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + is-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" @@ -16006,10 +16209,10 @@ is-plain-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -is-plain-object@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" - integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== +is-plain-object@5.0.0, is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -16018,11 +16221,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -16093,11 +16291,6 @@ is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -16228,7 +16421,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -16313,6 +16506,14 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" @@ -16855,6 +17056,15 @@ jest-worker@^26.5.0, jest-worker@^26.6.2: merge-stream "^2.0.0" supports-color "^7.0.0" +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest-worker@^29.0.0-alpha.5: version "29.0.0-alpha.5" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.0.0-alpha.5.tgz#72ac6c2c0f157008a11b58ac31d02c951e0fa285" @@ -17067,7 +17277,7 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -18396,6 +18606,11 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + loader-utils@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" @@ -18405,16 +18620,7 @@ loader-utils@1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" -loader-utils@2.0.0, loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -18423,6 +18629,15 @@ loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locale-currency@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/locale-currency/-/locale-currency-0.0.1.tgz#c9e15a22ff575b4b4bb947a4bf92ac236bd1fe9b" @@ -18695,6 +18910,14 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + lower-case-first@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" @@ -18724,14 +18947,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lowlight@^1.14.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.17.0.tgz#a1143b2fba8239df8cd5893f9fe97aaf8465af4a" - integrity sha512-vmtBgYKD+QVNy7tIa7ulz5d//Il9R4MooOVh4nkOf9R9Cb/Dk5TXMSTieg/vDulkBkIWj59/BIlyFQxT9X1oAQ== - dependencies: - fault "^1.0.0" - highlight.js "~10.4.0" - lru-cache@4.1.x, lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" @@ -18880,7 +19095,7 @@ map-cache@^0.2.0, map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0: +map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= @@ -18919,19 +19134,6 @@ markdown-table@^2.0.0: dependencies: repeat-string "^1.0.0" -markdown-to-jsx@^6.11.4: - version "6.11.4" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz#b4528b1ab668aef7fe61c1535c27e837819392c5" - integrity sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw== - dependencies: - prop-types "^15.6.2" - unquote "^1.1.0" - -markdown-to-jsx@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz#f00bae66c0abe7dd2d274123f84cb6bd2a2c7c6a" - integrity sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w== - matchdep@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" @@ -19109,6 +19311,22 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" +meow@^3.1.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + meow@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc" @@ -19921,7 +20139,7 @@ nanoid@^2.0.0, nanoid@^2.1.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== -nanoid@^3.1.31, nanoid@^3.3.3: +nanoid@^3.1.31, nanoid@^3.3.1, nanoid@^3.3.3: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== @@ -19964,13 +20182,6 @@ native-duplexpair@^1.0.0: resolved "https://registry.yarnpkg.com/native-duplexpair/-/native-duplexpair-1.0.0.tgz#7899078e64bf3c8a3d732601b3d40ff05db58fa0" integrity sha1-eJkHjmS/PIo9cyYBs9QP8F21j6A= -native-url@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" - integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== - dependencies: - querystring "^0.2.0" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -20015,7 +20226,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -20266,11 +20477,6 @@ node-preload@^0.2.0: dependencies: process-on-spawn "^1.0.0" -node-releases@^1.1.61: - version "1.1.77" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" - integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== - node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -20338,7 +20544,7 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -20437,6 +20643,16 @@ npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + nth-check@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -20738,7 +20954,7 @@ only@~0.0.2: resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= -open@^7.0.2, open@^7.0.3, open@^7.4.2: +open@^7.0.3, open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== @@ -20746,6 +20962,15 @@ open@^7.0.2, open@^7.0.3, open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" +open@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + opencollective-postinstall@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" @@ -20787,6 +21012,11 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + integrity sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg== + ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -20992,11 +21222,6 @@ outpipe@^1.1.0: dependencies: shell-quote "^1.4.2" -overlayscrollbars@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.1.tgz#0b840a88737f43a946b9d87875a2f9e421d0338a" - integrity sha512-gIQfzgGgu1wy80EB4/6DaJGHMEGmizq27xHIESrzXq0Y/J0Ay1P3DWk6tuVmEPIZH15zaBlxeEJOqdJKmowHCQ== - p-all@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" @@ -21739,7 +21964,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -21864,13 +22089,6 @@ pkg-dir@^5.0.0: dependencies: find-up "^5.0.0" -pkg-up@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -21905,12 +22123,12 @@ pnp-webpack-plugin@1.6.4: dependencies: ts-pnp "^1.1.6" -polished@^4.0.5: - version "4.1.3" - resolved "https://registry.yarnpkg.com/polished/-/polished-4.1.3.tgz#7a3abf2972364e7d97770b827eec9a9e64002cfc" - integrity sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA== +polished@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.2.2.tgz#2529bb7c3198945373c52e34618c8fe7b1aa84d1" + integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== dependencies: - "@babel/runtime" "^7.14.0" + "@babel/runtime" "^7.17.8" polyfill-crypto.getrandomvalues@^1.0.0: version "1.0.0" @@ -22302,16 +22520,16 @@ prettier-plugin-sort-json@^0.0.1: "@types/prettier" "^2.1.0" prettier "^2.1.1" +"prettier@>=2.2.1 <=2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" + integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== + prettier@^2.1.1, prettier@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -prettier@~2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" - integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== - pretty-error@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -22371,13 +22589,6 @@ priorityqueue@~0.2.1: resolved "https://registry.yarnpkg.com/priorityqueue/-/priorityqueue-0.2.1.tgz#f57e623f20237f30c142d4cb45fafed9e7d51403" integrity sha512-Dr6ZkRFGZHoAri6iNp5KvspOrFPfhxJ5AExXqLy5ChgdwALd3nC+q5/QG+gmjmf9W63joDXc+Zp0h05Ug/RtYg== -prismjs@^1.21.0, prismjs@~1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.22.0.tgz#73c3400afc58a823dd7eed023f8e1ce9fd8977fa" - integrity sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w== - optionalDependencies: - clipboard "^2.0.0" - process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -22486,14 +22697,6 @@ promisify-es6@^1.0.3: resolved "https://registry.yarnpkg.com/promisify-es6/-/promisify-es6-1.0.3.tgz#b012668c4df3c965ce13daac2b3a4d1726a96346" integrity sha512-N9iVG+CGJsI4b4ZGazjwLnxErD2d9Pe4DPvvXSxYA9tFNu8ymXME4Qs5HIQ0LMJpNM7zj+m0NlNnNeqFpKzqnA== -prompts@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - prompts@^2.0.1, prompts@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -23155,36 +23358,6 @@ react-colorful@^5.1.2: resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.3.0.tgz#bcbae49c1affa9ab9a3c8063398c5948419296bd" integrity sha512-zWE5E88zmjPXFhv6mGnRZqKin9s5vip1O3IIGynY9EhZxN8MATUxZkT3e/9OwTEm4DjQBXc6PFWP6AetY+Px+A== -react-dev-utils@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" - integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== - dependencies: - "@babel/code-frame" "7.10.4" - address "1.1.2" - browserslist "4.14.2" - chalk "2.4.2" - cross-spawn "7.0.3" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.1.0" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "4.1.6" - global-modules "2.0.0" - globby "11.0.1" - gzip-size "5.1.1" - immer "8.0.1" - is-root "2.1.0" - loader-utils "2.0.0" - open "^7.0.2" - pkg-up "3.1.0" - prompts "2.4.0" - react-error-overlay "^6.0.9" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - react-devtools-core@4.16.0: version "4.16.0" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.16.0.tgz#c640ab15b98d077bc47f10f84fc8ed3633f537bd" @@ -23225,10 +23398,10 @@ react-dnd@^3.0.2: prop-types "^15.5.10" shallowequal "^1.0.2" -react-docgen-typescript@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.1.1.tgz#c9f9ccb1fa67e0f4caf3b12f2a07512a201c2dcf" - integrity sha512-XWe8bsYqVjxciKdpNoufaHiB7FgUHIOnVQgxUolRL3Zlof2zkdTzuQH6SU2n3Ek9kfy3O1c63ojMtNfpiuNeZQ== +react-docgen-typescript@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz#4611055e569edc071204aadb20e1c93e1ab1659c" + integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== react-docgen@^5.0.0: version "5.1.0" @@ -23254,14 +23427,6 @@ react-dom@^16.12.0: prop-types "^15.6.2" scheduler "^0.18.0" -react-draggable@^4.4.3: - version "4.4.4" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.4.tgz#5b26d9996be63d32d285a426f41055de87e59b2f" - integrity sha512-6e0WdcNLwpBx/YIDpoyd2Xb04PB0elrDrulKUgdrIlwuYvxh5Ok9M+F8cljm8kPXXs43PmMzek9RrB1b7mLMqA== - dependencies: - clsx "^1.1.1" - prop-types "^15.6.0" - react-easy-swipe@^0.0.21: version "0.0.21" resolved "https://registry.yarnpkg.com/react-easy-swipe/-/react-easy-swipe-0.0.21.tgz#ce9384d576f7a8529dc2ca377c1bf03920bac8eb" @@ -23269,35 +23434,20 @@ react-easy-swipe@^0.0.21: dependencies: prop-types "^15.5.8" -react-element-to-jsx-string@^14.3.2: - version "14.3.2" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.2.tgz#c0000ed54d1f8b4371731b669613f2d4e0f63d5c" - integrity sha512-WZbvG72cjLXAxV7VOuSzuHEaI3RHj10DZu8EcKQpkKcAj7+qAkG5XUeSdX5FXrA0vPrlx0QsnAzZEBJwzV0e+w== +react-element-to-jsx-string@^14.3.4: + version "14.3.4" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz#709125bc72f06800b68f9f4db485f2c7d31218a8" + integrity sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg== dependencies: - "@base2/pretty-print-object" "1.0.0" - is-plain-object "3.0.1" - -react-error-overlay@^6.0.9: - version "6.0.9" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" - integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + "@base2/pretty-print-object" "1.0.1" + is-plain-object "5.0.0" + react-is "17.0.2" -react-fast-compare@^3.0.1, react-fast-compare@^3.2.0: +react-fast-compare@^3.0.1: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -react-helmet-async@^1.0.7: - version "1.1.2" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.1.2.tgz#653b7e6bbfdd239c5dcd6b8df2811c7a363b8334" - integrity sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg== - dependencies: - "@babel/runtime" "^7.12.5" - invariant "^2.2.4" - prop-types "^15.7.2" - react-fast-compare "^3.2.0" - shallowequal "^1.1.0" - react-idle-timer@^4.2.5: version "4.2.5" resolved "https://registry.yarnpkg.com/react-idle-timer/-/react-idle-timer-4.2.5.tgz#eb7d6e1b318f7755b5e0ee810254a8e95a2271b7" @@ -23327,16 +23477,16 @@ react-inspector@^5.1.0: is-dom "^1.0.0" prop-types "^15.0.0" +react-is@17.0.2, react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-is@^16.10.2, react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.6, react-is@^16.9.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@^17.0.1, react-is@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -23356,16 +23506,7 @@ react-motion@^0.5.2: prop-types "^15.5.8" raf "^3.1.0" -react-popper-tooltip@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz#329569eb7b287008f04fcbddb6370452ad3f9eac" - integrity sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ== - dependencies: - "@babel/runtime" "^7.12.5" - "@popperjs/core" "^2.5.4" - react-popper "^2.2.4" - -react-popper@^2.2.3, react-popper@^2.2.4: +react-popper@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.2.4.tgz#d2ad3d2474ac9f1abf93df3099d408e5aa6a2e22" integrity sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew== @@ -23384,10 +23525,10 @@ react-redux@^7.2.0: prop-types "^15.7.2" react-is "^16.9.0" -react-refresh@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" - integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-responsive-carousel@^3.2.21: version "3.2.21" @@ -23458,17 +23599,6 @@ react-sizeme@^3.0.1: shallowequal "^1.1.0" throttle-debounce "^3.0.1" -react-syntax-highlighter@^13.5.3: - version "13.5.3" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz#9712850f883a3e19eb858cf93fad7bb357eea9c6" - integrity sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg== - dependencies: - "@babel/runtime" "^7.3.1" - highlight.js "^10.1.1" - lowlight "^1.14.0" - prismjs "^1.21.0" - refractor "^3.1.0" - react-test-renderer@^16.0.0-0: version "16.12.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.12.0.tgz#11417ffda579306d4e841a794d32140f3da1b43f" @@ -23479,15 +23609,6 @@ react-test-renderer@^16.0.0-0: react-is "^16.8.6" scheduler "^0.18.0" -react-textarea-autosize@^8.3.0: - version "8.3.3" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8" - integrity sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ== - dependencies: - "@babel/runtime" "^7.10.2" - use-composed-ref "^1.0.0" - use-latest "^1.0.0" - react-tippy@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/react-tippy/-/react-tippy-1.2.2.tgz#061467d34d29e7a5a9421822d125c451d6bb5153" @@ -23741,12 +23862,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== dependencies: - minimatch "3.0.4" + indent-string "^2.1.0" + strip-indent "^1.0.1" redent@^3.0.0: version "3.0.0" @@ -23799,15 +23921,6 @@ reflect.ownkeys@^0.2.0: resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= -refractor@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.2.0.tgz#bc46f7cfbb6adbf45cd304e8e299b7fa854804e0" - integrity sha512-hSo+EyMIZTLBvNNgIU5lW4yjCzNYMZ4dcEhBq/3nReGfqzd2JfVhdlPDfU9rEsgcAyWx+OimIIUoL4ZU7NtYHQ== - dependencies: - hastscript "^6.0.0" - parse-entities "^2.0.0" - prismjs "~1.22.0" - regenerate-unicode-properties@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" @@ -24109,6 +24222,13 @@ repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" @@ -24195,6 +24315,11 @@ require-package-name@^2.0.1: resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk= +requireindex@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + requirejs-config-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" @@ -24717,12 +24842,12 @@ schema-utils@^2.6.5, schema-utils@^2.7.0: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: - "@types/json-schema" "^7.0.6" + "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" @@ -24795,11 +24920,6 @@ secp256k1@^4.0.0, secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -select@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= - selenium-webdriver@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.3.1.tgz#5e9c6c4adee65e57776b5bd4c07c59b65b8f056d" @@ -24908,6 +25028,13 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + serve-favicon@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" @@ -25080,7 +25207,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@1.7.2, shell-quote@^1.4.2, shell-quote@^1.6.1: +shell-quote@^1.4.2, shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== @@ -25442,7 +25569,7 @@ source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7, sour resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.7.2, source-map@^0.7.3, source-map@~0.7.2: +source-map@^0.7.2, source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -25667,21 +25794,10 @@ store@^2.0.12: resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593" integrity sha1-jFNOKguDH3K3X8XxEZhXxE711ZM= -storybook-addon-outline@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/storybook-addon-outline/-/storybook-addon-outline-1.4.1.tgz#0a1b262b9c65df43fc63308a1fdbd4283c3d9458" - integrity sha512-Qvv9X86CoONbi+kYY78zQcTGmCgFaewYnOVR6WL7aOFJoW7TrLiIc/O4hH5X9PsEPZFqjfXEPUPENWVUQim6yw== - dependencies: - "@storybook/addons" "^6.3.0" - "@storybook/api" "^6.3.0" - "@storybook/components" "^6.3.0" - "@storybook/core-events" "^6.3.0" - ts-dedent "^2.1.1" - -storybook-dark-mode@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/storybook-dark-mode/-/storybook-dark-mode-1.0.9.tgz#40c15aa340bc700df2fb4f1345250e6fdace0b3a" - integrity sha512-ITPXM2OSaga1zM5blpZy5HxMWAhrAqYi9aJtLgRtSdgoRrxVNAInDRD14TjmObdgLHNWxINoNbnEB+sKETa+iw== +storybook-dark-mode@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/storybook-dark-mode/-/storybook-dark-mode-1.1.0.tgz#4aca307a9c09f1b95743da2db6b07c8eea99ed24" + integrity sha512-F+hG02zYGBzxGTUonA1XDV/CtMYm3OjF38Tu1CIUN+w+8hwUrwLcOtgtLLw6VjSrZdJ/ECK+tjXdKTV4oZqAXw== dependencies: fast-deep-equal "^3.0.0" memoizerific "^1.11.3" @@ -25829,6 +25945,15 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -25838,15 +25963,6 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - "string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.2, string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" @@ -25952,13 +26068,6 @@ stringify-object@^3.2.1: is-obj "^1.0.1" is-regexp "^1.0.0" -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-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -26049,6 +26158,13 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== + dependencies: + get-stdin "^4.0.1" + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -26334,6 +26450,11 @@ symbol.prototype.description@^1.0.0: dependencies: has-symbols "^1.0.0" +synchronous-promise@^2.0.15: + version "2.0.15" + resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e" + integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg== + syntax-error@^1.1.1: version "1.4.0" resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" @@ -26356,7 +26477,7 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.2.0: +tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== @@ -26434,10 +26555,10 @@ tdigest@^0.1.1: dependencies: bintrees "1.0.1" -telejson@^5.3.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.3.3.tgz#fa8ca84543e336576d8734123876a9f02bf41d2e" - integrity sha512-PjqkJZpzEggA9TBpVtJi1LVptP7tYtXB6rEubwlHap76AMjzvOdKX41CxyaW7ahhzDU1aftXnMCx5kAPDZTQBA== +telejson@^6.0.8: + version "6.0.8" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-6.0.8.tgz#1c432db7e7a9212c1fbd941c3e5174ec385148f7" + integrity sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg== dependencies: "@types/is-function" "^1.0.0" global "^4.4.0" @@ -26467,11 +26588,6 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -term-size@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.1.1.tgz#f81ec25854af91a480d2f9d0c77ffcb26594ed1a" - integrity sha512-UqvQSch04R+69g4RDhrslmGvGL3ucDRX/U+snYW0Mab4uCAyKSndUksaoqlJ81QKSpRnIsuOYQCbC2ZWx2896A== - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -26510,6 +26626,17 @@ terser-webpack-plugin@^4.2.3: terser "^5.3.4" webpack-sources "^1.4.3" +terser-webpack-plugin@^5.1.3: + version "5.3.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.5.tgz#f7d82286031f915a4f8fb81af4bd35d2e3c011bc" + integrity sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.14" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.14.1" + terser@^4.1.2, terser@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" @@ -26519,13 +26646,14 @@ terser@^4.1.2, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.3.4, terser@^5.7.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351" - integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ== +terser@^5.14.1, terser@^5.3.4, terser@^5.7.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425" + integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" source-map-support "~0.5.20" test-exclude@^6.0.0: @@ -26542,7 +26670,7 @@ text-encoding@^0.6.4: resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" integrity sha1-45mpgiV6J22uQou5KEXLcb3CbRk= -text-table@0.2.0, text-table@^0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -26658,11 +26786,6 @@ tiny-each-async@2.0.3: resolved "https://registry.yarnpkg.com/tiny-each-async/-/tiny-each-async-2.0.3.tgz#8ebbbfd6d6295f1370003fbb37162afe5a0a51d1" integrity sha1-jru/1tYpXxNwAD+7NxYq/loKUdE= -tiny-emitter@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" - integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== - tiny-invariant@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" @@ -26887,6 +27010,11 @@ trezor-connect@8.2.6-extended: parse-uri "^1.0.3" tiny-worker "^2.3.0" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== + trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -26926,16 +27054,11 @@ ts-custom-error@^2.2.1: resolved "https://registry.yarnpkg.com/ts-custom-error/-/ts-custom-error-2.2.2.tgz#ee769cd6a9cf35dc2e9fedefbb3842f3a2fbceae" integrity sha512-I0FEdfdatDjeigRqh1JFj67bcIKyRNm12UVGheBjs2pXgyELg2xeiQLVaWu1pVmNGXZVnz/fvycSU41moBIpOg== -ts-dedent@^2.0.0, ts-dedent@^2.1.1: +ts-dedent@^2.0.0, ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== -ts-essentials@^2.0.3: - version "2.0.12" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" - integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== - ts-node@^10.5.0: version "10.5.0" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.5.0.tgz#618bef5854c1fbbedf5e31465cbb224a1d524ef9" @@ -27151,6 +27274,11 @@ u2f-api@0.2.7: resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== +uglify-js@^3.1.4: + version "3.17.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.0.tgz#55bd6e9d19ce5eef0d5ad17cd1f587d85b180a85" + integrity sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg== + uint8arrays@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-1.1.0.tgz#d034aa65399a9fd213a1579e323f0b29f67d0ed2" @@ -27166,6 +27294,11 @@ uint8arrays@^2.1.3, uint8arrays@^2.1.5: dependencies: multibase "^4.0.1" +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + integrity sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow== + umd@^3.0.0, umd@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" @@ -27403,11 +27536,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -27416,6 +27544,13 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +untildify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" + integrity sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig== + dependencies: + os-homedir "^1.0.0" + unzip-response@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" @@ -27569,25 +27704,6 @@ usb@^1.6.3: node-addon-api "^4.2.0" node-gyp-build "^4.3.0" -use-composed-ref@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc" - integrity sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg== - dependencies: - ts-essentials "^2.0.3" - -use-isomorphic-layout-effect@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.0.tgz#4db2111e0d53ca694187ea5fd5cb2ba610286fe0" - integrity sha512-kady5Z1O1qx5RitodCCKbpJSVEtECXYcnBnb5Q48Bz5V6gBmTu85ZcGdVwVFs8+DaOurNb/L5VdGHoQRMknghw== - -use-latest@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" - integrity sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw== - dependencies: - use-isomorphic-layout-effect "^1.0.0" - use@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" @@ -27957,7 +28073,7 @@ warning@^3.0.0: dependencies: loose-envify "^1.0.0" -warning@^4.0.2, warning@^4.0.3: +warning@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== @@ -27995,6 +28111,14 @@ watchpack@^1.7.4: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1" +watchpack@^2.2.0, watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -28135,15 +28259,14 @@ webpack-filter-warnings-plugin@^1.2.1: resolved "https://registry.yarnpkg.com/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz#dc61521cf4f9b4a336fbc89108a75ae1da951cdb" integrity sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg== -webpack-hot-middleware@^2.25.0: - version "2.25.0" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" - integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== +webpack-hot-middleware@^2.25.1: + version "2.25.2" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.2.tgz#f7f936f3871d8c4eb95ecdf23a34e9cefe9806e8" + integrity sha512-CVgm3NAQyfdIonRvXisRwPTUYuSbyZ6BY7782tMeUzWOO7RmVI2NaBYuCp41qyD4gYCkJyTneAJdK69A13B0+A== dependencies: - ansi-html "0.0.7" - html-entities "^1.2.0" - querystring "^0.2.0" - strip-ansi "^3.0.0" + ansi-html-community "0.0.8" + html-entities "^2.1.0" + strip-ansi "^6.0.0" webpack-log@^2.0.0: version "2.0.0" @@ -28161,6 +28284,11 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + webpack-virtual-modules@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" @@ -28197,6 +28325,36 @@ webpack@4, webpack@^4.41.6: watchpack "^1.7.4" webpack-sources "^1.4.1" +"webpack@>=4.43.0 <6.0.0": + version "5.74.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" + integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + "webrtcsupport@github:ipfs/webrtcsupport": version "2.2.0" resolved "https://codeload.github.com/ipfs/webrtcsupport/tar.gz/0669f576582c53a3a42aa5ac014fcc5966809615" @@ -28316,13 +28474,20 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@1.1.3, wide-align@^1.1.0: +wide-align@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" +wide-align@^1.1.0, wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + widest-line@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" @@ -28349,16 +28514,16 @@ 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@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -28447,11 +28612,45 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@*, ws@7.1.0, ws@7.4.6, ws@>=8.7.0, ws@^1.1.0, ws@^5.1.1, ws@^7, ws@^7.2.0, ws@^7.3.1, ws@^7.4.0, ws@^7.4.6, ws@^8.8.0, ws@~7.4.2: +ws@*, ws@>=8.7.0, ws@^8.2.3, ws@^8.8.0: + version "8.8.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" + integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== + +ws@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.0.tgz#0395646c6fcc3ac56abf61ce1a42039637a6bd98" + integrity sha512-Swie2C4fs7CkwlHu1glMePLYJJsWjzhl1vm3ZaLplD0h7OMkZyZ6kLTB/OagiU923bZrPFXuDTeEqaEN4NWG4g== + dependencies: + async-limiter "^1.0.0" + +ws@7.4.6, ws@^7, ws@^7.2.0, ws@^7.3.1, ws@^7.4.0, ws@^7.4.6, ws@~7.4.2: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" + integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^5.1.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== + dependencies: + async-limiter "~1.0.0" + +x-default-browser@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/x-default-browser/-/x-default-browser-0.4.0.tgz#70cf0da85da7c0ab5cb0f15a897f2322a6bdd481" + integrity sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw== + optionalDependencies: + default-browser-id "^1.0.4" + xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"